2#define TofMcHitCnv_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/TofMcHit.h"
13#include "RootCnvSvc/Mc/McCnv.h"
14#include "RootCnvSvc/Mc/TofMcHitCnv.h"
15#include "RootCnvSvc/RootAddress.h"
16#include "RootEventData/TMcEvent.h"
17#include "RootEventData/TTofMc.h"
26 MsgStream log(
msgSvc(),
"TofMcHitCnv" );
37 MsgStream log(
msgSvc(),
"TofMcHitCnv" );
38 log << MSG::DEBUG <<
"TofMcHitCnv::TObjectToDataObject" << endmsg;
39 StatusCode sc = StatusCode::SUCCESS;
43 refpObject = tofMcTdsCol;
46 if ( !m_tofMcHitCol )
return sc;
47 TIter tofMcIter( m_tofMcHitCol );
49 while ( ( tofMcRoot = (
TTofMc*)tofMcIter.Next() ) )
51 unsigned int id = tofMcRoot->
getId();
56 double px = tofMcRoot->
getPx();
57 double py = tofMcRoot->
getPy();
58 double pz = tofMcRoot->
getPz();
63 m_common.m_rootTofMcHitMap[tofMcRoot] = tofMcTds;
70 tofMcTds->
setPx( px );
71 tofMcTds->
setPy( py );
72 tofMcTds->
setPz( pz );
76 tofMcTdsCol->push_back( tofMcTds );
81 return StatusCode::SUCCESS;
86 MsgStream log(
msgSvc(),
"TofMcHitCnv" );
87 log << MSG::DEBUG <<
"TofMcHitCnv::DataObjectToTObject" << endmsg;
88 StatusCode sc = StatusCode::SUCCESS;
91 if ( !tofMcHitCnvTds )
93 log << MSG::ERROR <<
"Could not downcast to TofMcHitCol" << endmsg;
94 return StatusCode::FAILURE;
101 log << MSG::ERROR <<
"Could not get McEvent in TDS " << endmsg;
102 return StatusCode::FAILURE;
106 { log << MSG::ERROR <<
"TofMcHitCnv:Could not downcast to TDS McEvent" << endmsg; }
107 IOpaqueAddress* addr;
109 m_cnvSvc->getMcCnv()->createRep( evt, addr );
113 if ( !m_tofMcHitCol )
return sc;
116 TofMcHitCol::const_iterator tofMcTds;
118 for ( tofMcTds = tofMcHitCnvTds->begin(); tofMcTds != tofMcHitCnvTds->end(); tofMcTds++ )
120 UInt_t
id = ( ( *tofMcTds )->identify() ).get_value();
121 UInt_t trackIndex = ( *tofMcTds )->getTrackIndex();
122 Double_t xPosition = ( *tofMcTds )->getPositionX();
123 Double_t yPosition = ( *tofMcTds )->getPositionY();
124 Double_t zPosition = ( *tofMcTds )->getPositionZ();
125 Double_t px = ( *tofMcTds )->getPx();
126 Double_t py = ( *tofMcTds )->getPy();
127 Double_t pz = ( *tofMcTds )->getPz();
128 Double_t trackLength = ( *tofMcTds )->getTrackLength();
129 Double_t flightTime = ( *tofMcTds )->getFlightTime();
134 tofMcRoot->
setId(
id );
139 tofMcRoot->
setPx( px );
140 tofMcRoot->
setPy( py );
141 tofMcRoot->
setPz( pz );
148 return StatusCode::SUCCESS;
ObjectVector< TofMcHit > TofMcHitCol
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 addTofMc(TTofMc *mcHit)
Tof.
const TObjArray * getTofMcHitCol() const
void setTrackIndex(UInt_t trackIndex)
Double_t getPositionY() const
void setPositionY(Double_t positionY)
Double_t getPositionX() const
void setTrackLength(Double_t trackLength)
UInt_t getTrackIndex() const
void setFlightTime(Double_t flightTime)
void setPositionZ(Double_t positionZ)
Double_t getPositionZ() const
void setPositionX(Double_t positionX)
Double_t getFlightTime() const
Double_t getTrackLength() const
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
static const CLID & classID()
TofMcHitCnv(ISvcLocator *svc)
void setTrackIndex(unsigned int trackIndex)
void setPositionX(double positionX)
void setIdentifier(unsigned int id)
void setFlightTime(double flightTime)
void setTrackLength(double trackLength)
void setPositionZ(double positionZ)
void setPositionY(double positionY)
_EXTERN_ std::string Event