1#ifndef RecMdcHitCnv_CXX
2#define RecMdcHitCnv_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/RecMdcHit.h"
14#include "ReconEvent/ReconEvent.h"
16#include "RootEventData/TRecMdcHit.h"
17#include "RootEventData/TRecTrackEvent.h"
19#include "RootCnvSvc/Rec/RecMdcHitCnv.h"
20#include "RootCnvSvc/Rec/RecTrackCnv.h"
21#include "RootCnvSvc/RootAddress.h"
30 MsgStream log(
msgSvc(),
"RecMdcHitCnv" );
42 MsgStream log(
msgSvc(),
"RecMdcHitCnv" );
43 log << MSG::DEBUG <<
"RecMdcHitCnv::TObjectToDataObject" << endmsg;
47 refpObject = recMdcHitCol;
50 if ( !m_recMdcHitCol )
return StatusCode::SUCCESS;
51 TIter mdcHitIter( m_recMdcHitCol );
53 while ( ( recMdcHitRoot = (
TRecMdcHit*)mdcHitIter.Next() ) )
55 int id = recMdcHitRoot->
getId();
56 int trackId = recMdcHitRoot->
getTrkId();
63 int stat = recMdcHitRoot->
getStat();
64 long int mdcId( recMdcHitRoot->
getMdcId() );
65 double tdc = recMdcHitRoot->
getTdc();
66 double adc = recMdcHitRoot->
getAdc();
67 double driftT = recMdcHitRoot->
getDriftT();
68 double doca = recMdcHitRoot->
getDoca();
69 double entra = recMdcHitRoot->
getEntra();
70 double zhit = recMdcHitRoot->
getZhit();
71 double fltLen = recMdcHitRoot->
getFltLen();
74 m_common.m_rootRecMdcHitMap[recMdcHitRoot] = recMdcHit;
76 recMdcHit->
setId(
id );
94 recMdcHitCol->push_back( recMdcHit );
96 return StatusCode::SUCCESS;
101 MsgStream log(
msgSvc(),
"RecMdcHitCnv" );
102 log << MSG::DEBUG <<
"RecMdcHitCnv::DataObjectToTObject" << endmsg;
107 log << MSG::ERROR <<
"Could not downcast to RecMdcHitCol" << endmsg;
108 return StatusCode::FAILURE;
115 log << MSG::ERROR <<
"Could not get ReconEvent in TDS " << endmsg;
116 return StatusCode::FAILURE;
121 { log << MSG::ERROR <<
"RecMdcHitCnv:Could not downcast to TDS ReconEvent" << endmsg; }
123 IOpaqueAddress* addr;
125 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
129 if ( !m_recMdcHitCol )
return StatusCode::SUCCESS;
133 RecMdcHitCol::const_iterator recMdcHit;
134 for ( recMdcHit = mdcHitColTds->begin(); recMdcHit != mdcHitColTds->end(); recMdcHit++ )
136 Bool_t isGrouped = ( *recMdcHit )->isGrouped();
137 Int_t
id = ( *recMdcHit )->getId();
138 Int_t trackId = ( *recMdcHit )->getTrkId();
139 Double_t driftDistLeft = ( *recMdcHit )->getDriftDistLeft();
140 Double_t driftDistRight = ( *recMdcHit )->getDriftDistRight();
141 Double_t errDriftDistLeft = ( *recMdcHit )->getErrDriftDistLeft();
142 Double_t errDriftDistRight = ( *recMdcHit )->getErrDriftDistRight();
143 Double_t chisqAdd = ( *recMdcHit )->getChisqAdd();
144 Int_t flagLR = ( *recMdcHit )->getFlagLR();
145 Int_t stat = ( *recMdcHit )->getStat();
146 UInt_t mdcId = ( *recMdcHit )->getMdcId().get_value();
147 Double_t tdc = ( *recMdcHit )->getTdc();
148 Double_t adc = ( *recMdcHit )->getAdc();
149 Double_t driftT = ( *recMdcHit )->getDriftT();
150 Double_t doca = ( *recMdcHit )->getDoca();
151 Double_t entra = ( *recMdcHit )->getEntra();
152 Double_t zhit = ( *recMdcHit )->getZhit();
153 Double_t fltLen = ( *recMdcHit )->getFltLen();
159 recMdcHitRoot->
setId(
id );
165 log << MSG::INFO <<
" recMdcHitRoot.ddl: " << recMdcHitRoot->
getDriftDistLeft()
169 recMdcHitRoot->
setStat( stat );
171 recMdcHitRoot->
setTdc( tdc );
172 recMdcHitRoot->
setAdc( adc );
174 recMdcHitRoot->
setDoca( doca );
176 recMdcHitRoot->
setZhit( zhit );
181 return StatusCode::SUCCESS;
ObjectVector< RecMdcHit > RecMdcHitCol
RecMdcHitCnv(ISvcLocator *svc)
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
static const CLID & classID()
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
void setMdcId(Identifier mdcid)
void setErrDriftDistRight(double erddr)
void setFltLen(double fltLen)
void setErrDriftDistLeft(double erddl)
void setDriftDistLeft(double ddl)
void setDoca(double doca)
void setChisqAdd(double pChisq)
void setZhit(double zhit)
void setDriftT(double driftT)
void setDriftDistRight(double ddr)
void setEntra(double entra)
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 getDriftDistRight(void) const
Int_t getFlagLR(void) const
void setFltLen(Double_t fltLen)
void setIsGrouped(Bool_t isGrouped)
Double_t getEntra(void) const
void setErrDriftDistLeft(Double_t erddl)
void setDriftDistLeft(Double_t ddl)
Double_t getZhit(void) const
void setDriftDistRight(Double_t ddr)
Double_t getChisqAdd(void) const
Int_t getStat(void) const
Double_t getErrDriftDistRight(void) const
Int_t getTrkId(void) const
void setTdc(Double_t tdc)
void setAdc(Double_t adc)
void setTrkId(Int_t trkid)
Double_t getTdc(void) const
Double_t getFltLen(void) const
Double_t getDoca(void) const
void setDriftT(Double_t driftT)
Double_t getErrDriftDistLeft(void) const
Double_t getDriftT(void) const
void setErrDriftDistRight(Double_t erddr)
void setZhit(Double_t zhit)
void setDoca(Double_t doca)
void setEntra(Double_t entra)
void setChisqAdd(Double_t pChisq)
void setMdcId(UInt_t mdcid)
Double_t getAdc(void) const
Double_t getDriftDistLeft(void) const
void addRecMdcHit(TRecMdcHit *Hit)
Add a Rec Mdc Hit into the Mdc data collection.
void clearRecMdcHitCol()
clear the whole array (necessary because of the consts-s)
const TObjArray * getRecMdcHitCol() const
retrieve the whole TObjArray of RecMdcHit Data
_EXTERN_ std::string Event