1#ifndef RecMdcKalHelixSegCnv_CXX
2#define RecMdcKalHelixSegCnv_CXX 1
4#include "GaudiKernel/DataObject.h"
5#include "GaudiKernel/MsgStream.h"
6#include "GaudiKernel/ObjectVector.h"
8#include "TClonesArray.h"
10#include "EventModel/EventModel.h"
12#include "Identifier/Identifier.h"
13#include "MdcRecEvent/RecMdcKalHelixSeg.h"
14#include "ReconEvent/ReconEvent.h"
16#include "RootEventData/TRecMdcKalHelixSeg.h"
17#include "RootEventData/TRecTrackEvent.h"
19#include "RootCnvSvc/Rec/RecMdcKalHelixSegCnv.h"
20#include "RootCnvSvc/Rec/RecTrackCnv.h"
21#include "RootCnvSvc/RootAddress.h"
31 MsgStream log(
msgSvc(),
"RecMdcKalHelixSegCnv" );
37 m_adresses.push_back( &m_recMdcKalHelixSegCol );
38 m_recMdcKalHelixSegCol = 0;
43 MsgStream log(
msgSvc(),
"RecMdcKalHelixSegCnv" );
44 log << MSG::DEBUG <<
"RecMdcKalHelixSegCnv::TObjectToDataObject" << endmsg;
48 refpObject = recMdcKalHelixSegCol;
51 if ( !m_recMdcKalHelixSegCol )
return StatusCode::SUCCESS;
52 TIter mdcHitIter( m_recMdcKalHelixSegCol );
57 int trackId = recMdcKalHelixSegRoot->
getTrackId();
58 int flagLR = recMdcKalHelixSegRoot->
getFlagLR();
60 double tdc = recMdcKalHelixSegRoot->
getTdc();
61 double adc = recMdcKalHelixSegRoot->
getAdc();
62 double zhit = recMdcKalHelixSegRoot->
getZhit();
63 double tof = recMdcKalHelixSegRoot->
getTof();
64 double docaIncl = recMdcKalHelixSegRoot->
getDocaIncl();
65 double docaExcl = recMdcKalHelixSegRoot->
getDocaExcl();
66 double driftDist = recMdcKalHelixSegRoot->
getDD();
67 double entra = recMdcKalHelixSegRoot->
getEntra();
68 double driftT = recMdcKalHelixSegRoot->
getDT();
82 for (
int i = 0, k = 0; i < 5; i++ )
93 m_common.m_rootRecMdcKalHelixSegMap[recMdcKalHelixSegRoot] = recMdcKalHelixSeg;
98 recMdcKalHelixSeg->
setTdc( tdc );
99 recMdcKalHelixSeg->
setAdc( adc );
100 recMdcKalHelixSeg->
setZhit( zhit );
101 recMdcKalHelixSeg->
setTof( tof );
104 recMdcKalHelixSeg->
setDD( driftDist );
105 recMdcKalHelixSeg->
setEntra( entra );
106 recMdcKalHelixSeg->
setDT( driftT );
123 recMdcKalHelixSegCol->push_back( recMdcKalHelixSeg );
128 return StatusCode::SUCCESS;
134 MsgStream log(
msgSvc(),
"RecMdcKalHelixSegCnv" );
135 log << MSG::DEBUG <<
"RecMdcKalHelixSegCnv::DataObjectToTObject" << endmsg;
140 log << MSG::ERROR <<
"Could not downcast to RecMdcKalHelixSegCol" << endmsg;
141 return StatusCode::FAILURE;
148 log << MSG::ERROR <<
"Could not get ReconEvent in TDS " << endmsg;
149 return StatusCode::FAILURE;
155 log << MSG::ERROR <<
"RecMdcKalHelixSegCnv:Could not downcast to TDS ReconEvent" << endmsg;
158 IOpaqueAddress* addr;
160 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
164 if ( !m_recMdcKalHelixSegCol )
return StatusCode::SUCCESS;
168 RecMdcKalHelixSegCol::const_iterator recMdcKalHelixSeg;
170 for ( recMdcKalHelixSeg = mdcHitColTds->begin(); recMdcKalHelixSeg != mdcHitColTds->end();
171 recMdcKalHelixSeg++ )
173 Int_t trackId = ( *recMdcKalHelixSeg )->getTrackId();
174 Int_t flagLR = ( *recMdcKalHelixSeg )->getFlagLR();
175 UInt_t mdcId = ( *recMdcKalHelixSeg )->getMdcId().get_value();
176 Double_t tdc = ( *recMdcKalHelixSeg )->getTdc();
177 Double_t adc = ( *recMdcKalHelixSeg )->getAdc();
178 Double_t zhit = ( *recMdcKalHelixSeg )->getZhit();
179 Double_t tof = ( *recMdcKalHelixSeg )->getTof();
180 Double_t docaIncl = ( *recMdcKalHelixSeg )->getDocaIncl();
181 Double_t docaExcl = ( *recMdcKalHelixSeg )->getDocaExcl();
182 Double_t driftDist = ( *recMdcKalHelixSeg )->getDD();
183 Double_t entra = ( *recMdcKalHelixSeg )->getEntra();
184 Double_t driftT = ( *recMdcKalHelixSeg )->getDT();
196 HepVector helixIncl_vct = ( *recMdcKalHelixSeg )->getHelixIncl();
197 HepVector helixExcl_vct = ( *recMdcKalHelixSeg )->getHelixExcl();
201 Double_t helixIncl[5], helixExcl[5];
202 for ( Int_t i = 0; i < 5; i++ )
204 helixIncl[i] = helixIncl_vct[i];
205 helixExcl[i] = helixExcl_vct[i];
218 recMdcKalHelixSegRoot->
setFlagLR( flagLR );
220 recMdcKalHelixSegRoot->
setTdc( tdc );
221 recMdcKalHelixSegRoot->
setAdc( adc );
222 recMdcKalHelixSegRoot->
setZhit( zhit );
223 recMdcKalHelixSegRoot->
setTof( tof );
226 recMdcKalHelixSegRoot->
setDD( driftDist );
227 recMdcKalHelixSegRoot->
setEntra( entra );
228 recMdcKalHelixSegRoot->
setDT( driftT );
245 log << MSG::INFO <<
" recMdcKalHelixSegRoot.dd: " << recMdcKalHelixSegRoot->
getDD()
246 <<
" recMdcKalHelixSegRoot.entra: " << recMdcKalHelixSegRoot->
getEntra() << endmsg;
252 return StatusCode::SUCCESS;
ObjectVector< RecMdcKalHelixSeg > RecMdcKalHelixSegCol
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
static const CLID & classID()
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
RecMdcKalHelixSegCnv(ISvcLocator *svc)
void setTrackId(int trackid)
void setDocaExcl(double doca)
void setHelixIncl(const HepVector &helix)
void setEntra(double entra)
void setFlagLR(int flagLR)
void setHelixExcl(const HepVector &helix)
void setZhit(double zhit)
void setMdcId(Identifier mdcid)
void setDocaIncl(double doca)
Definition of a Root address, derived from IOpaqueAddress.
IDataProviderSvc * m_eds
pointer to eventdataservice
std::vector< void * > m_adresses
each converter knows the corresponding adresses
std::string m_rootBranchname
root branchname (may be concatenated of severals)
RootEventBaseCnv(const CLID &clid, ISvcLocator *svc)
Double_t getAdc(void) const
Double_t getDD(void) const
void setEntra(Double_t entra)
void setAdc(Double_t adc)
void setTof(Double_t tof)
void setHelixIncl(const Double_t helix[5])
void setDocaExcl(Double_t docaexcl)
void setZhit(Double_t zhit)
Double_t getZhit(void) const
Double_t getTof(void) const
void setDocaIncl(Double_t docaincl)
void setMdcId(UInt_t mdcid)
Double_t getHelixExcl(Int_t i) const
Int_t getTrackId(void) const
void setTrackId(Int_t trkid)
void setDT(Double_t driftT)
Double_t getEntra(void) const
Double_t getDT(void) const
void setHelixExcl(const Double_t helix[5])
Double_t getDocaExcl(void) const
Double_t getDocaIncl(void) const
Double_t getHelixIncl(Int_t i) const
Double_t getTdc(void) const
Int_t getFlagLR(void) const
void setTdc(Double_t tdc)
void addRecMdcKalHelixSeg(TRecMdcKalHelixSeg *Track)
void clearRecMdcKalHelixSegCol()
const TObjArray * getRecMdcKalHelixSegCol() const
_EXTERN_ std::string Event