2#define MdcMcHitCnv_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"
11#include "McTruth/McEvent.h"
12#include "McTruth/MdcMcHit.h"
13#include "RootCnvSvc/Mc/McCnv.h"
14#include "RootCnvSvc/Mc/MdcMcHitCnv.h"
15#include "RootCnvSvc/RootAddress.h"
16#include "RootEventData/TMcEvent.h"
17#include "RootEventData/TMdcMc.h"
26 MsgStream log(
msgSvc(),
"MdcMcHitCnv" );
37 MsgStream log(
msgSvc(),
"MdcMcHitCnv" );
38 log << MSG::DEBUG <<
"MdcMcHitCnv::TObjectToDataObject" << endmsg;
39 StatusCode sc = StatusCode::SUCCESS;
43 refpObject = mdcMcTdsCol;
46 if ( !m_mdcMcHitCol )
return sc;
47 TIter mdcMcIter( m_mdcMcHitCol );
49 while ( ( mdcMcRoot = (
TMdcMc*)mdcMcIter.Next() ) )
51 unsigned int id = mdcMcRoot->
getId();
61 m_common.m_rootMdcMcHitMap[mdcMcRoot] = mdcMcTds;
80 mdcMcTdsCol->push_back( mdcMcTds );
85 return StatusCode::SUCCESS;
90 MsgStream log(
msgSvc(),
"MdcMcHitCnv" );
91 log << MSG::DEBUG <<
"MdcMcHitCnv::DataObjectToTObject" << endmsg;
92 StatusCode sc = StatusCode::SUCCESS;
95 if ( !mdcMcHitCnvTds )
97 log << MSG::ERROR <<
"Could not downcast to MdcMcHitCol" << endmsg;
98 return StatusCode::FAILURE;
105 log << MSG::ERROR <<
"Could not get McEvent in TDS " << endmsg;
106 return StatusCode::FAILURE;
110 { log << MSG::ERROR <<
"MdcMcHitCnv:Could not downcast to TDS McEvent" << endmsg; }
111 IOpaqueAddress* addr;
113 m_cnvSvc->getMcCnv()->createRep( evt, addr );
117 if ( !m_mdcMcHitCol )
return sc;
120 MdcMcHitCol::const_iterator mdcMcTds;
122 for ( mdcMcTds = mdcMcHitCnvTds->begin(); mdcMcTds != mdcMcHitCnvTds->end(); mdcMcTds++ )
124 UInt_t
id = ( ( *mdcMcTds )->identify() ).get_value();
125 UInt_t trackIndex = ( *mdcMcTds )->getTrackIndex();
126 Double_t xPosition = ( *mdcMcTds )->getPositionX();
127 Double_t yPosition = ( *mdcMcTds )->getPositionY();
128 Double_t zPosition = ( *mdcMcTds )->getPositionZ();
129 Double_t driftDistance = ( *mdcMcTds )->getDriftDistance();
130 Double_t depositEnergy = ( *mdcMcTds )->getDepositEnergy();
131 Int_t positionFlag = ( *mdcMcTds )->getPositionFlag();
136 mdcMcRoot->
setId(
id );
143 mdcMcRoot->
setMomentumX( ( *mdcMcTds )->getMomentumX() );
144 mdcMcRoot->
setMomentumY( ( *mdcMcTds )->getMomentumY() );
145 mdcMcRoot->
setMomentumZ( ( *mdcMcTds )->getMomentumZ() );
151 mdcMcRoot->
setDigiIdx( ( *mdcMcTds )->getDigiIdx() );
156 return StatusCode::SUCCESS;
ObjectVector< MdcMcHit > MdcMcHitCol
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
MdcMcHitCnv(ISvcLocator *svc)
static const CLID & classID()
void setMomentumZ(double momentumZ)
void setMomentumY(double momentumY)
void setPositionFlag(int posFlag)
void setPositionZ(double positionZ)
void setFlightLength(double flightLength)
void setDepositEnergy(double depositEnergy)
void setMomentumX(double momentumX)
void setIdentifier(unsigned int id)
void setPositionY(double positionY)
void setIsSecondary(int isSec)
void setTrackIndex(unsigned int trackIndex)
void setCurrentTrackPID(int currentTrackPID)
void setCreatorProcess(std::string creatorProcess)
void setDriftDistance(double driftDistance)
void setPositionX(double positionX)
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)
void addMdcMc(TMdcMc *mcHit)
Mdc.
const TObjArray * getMdcMcHitCol() const
void setMomentumX(Double_t momentumX)
Double_t getDepositEnergy() const
Double_t getPositionZ() const
void setCurrentTrackPID(Int_t currentTrackPID)
void setPositionZ(Double_t positionZ)
TString getCreatorProcess() const
void setIsSecondary(Int_t isSecondary)
Double_t getDriftDistance() const
void setDigiIdx(int digiIdx)
Double_t getFlightLength() const
Double_t getMomentumX() const
void setMomentumY(Double_t momentumY)
void setTrackIndex(UInt_t trackIndex)
void setFlightLength(Double_t flightLength)
UInt_t getTrackIndex() const
Double_t getMomentumZ() const
void setDepositEnergy(Double_t depositEnergy)
Int_t getPositionFlag() const
Double_t getPositionX() const
Double_t getIsSecondary() const
void setPositionX(Double_t positionX)
void setCreatorProcess(TString creatorProcess)
void setPositionFlag(Int_t posFlag)
Double_t getPositionY() const
Int_t getCurrentTrackPID() const
void setPositionY(Double_t positionY)
void setDriftDistance(Double_t driftDistance)
Double_t getMomentumY() const
void setMomentumZ(Double_t momentumZ)
_EXTERN_ std::string Event