1#include "GaudiKernel/MsgStream.h"
4#include "EventModel/EventModel.h"
5#include "EvtRecEvent/EvtRecObject.h"
6#include "EvtRecEvent/EvtRecPi0.h"
8#include "RootEventData/TEvtRecObject.h"
9#include "RootEventData/TEvtRecPi0.h"
11#include "RootCnvSvc/EvtRec/EvtRecCnv.h"
12#include "RootCnvSvc/EvtRec/EvtRecPi0Cnv.h"
13#include "RootCnvSvc/RootAddress.h"
15#include "CLHEP/Matrix/SymMatrix.h"
16#include "CLHEP/Matrix/Vector.h"
20using CLHEP::HepSymMatrix;
21using CLHEP::HepVector;
31 MsgStream log(
msgSvc(),
"EvtRecPi0Cnv" );
32 log << MSG::DEBUG <<
"EvtRecPi0Cnv::TObjectToDataObject" << endmsg;
36 refpObject = evtRecPi0Col;
38 if ( !m_evtRecPi0Col )
return StatusCode::SUCCESS;
40 IDataProviderSvc* dataSvc = 0;
41 StatusCode sc = serviceLocator()->getService(
42 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
45 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecPi0Cnv" << endmsg;
50 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
53 TIter evtRecPi0Iter( m_evtRecPi0Col );
55 while ( ( evtRecPi0Root = (
TEvtRecPi0*)evtRecPi0Iter.Next() ) )
58 m_common.m_rootEvtRecPi0Map[evtRecPi0Root] = evtRecPi0;
64 HepLorentzVector hiP4( evtRecPi0Root->
hiPxfit(), evtRecPi0Root->
hiPyfit(),
66 HepLorentzVector loP4( evtRecPi0Root->
loPxfit(), evtRecPi0Root->
loPyfit(),
71 int hiEnGammatrk = evtRecPi0Root->
hiEnGamma();
72 int loEnGammatrk = evtRecPi0Root->
loEnGamma();
74 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( hiEnGammatrk ) ) );
76 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( loEnGammatrk ) ) );
78 evtRecPi0Col->push_back( evtRecPi0 );
81 delete m_evtRecPi0Col;
83 return StatusCode::SUCCESS;
87 MsgStream log(
msgSvc(),
"EvtRecPi0Cnv" );
88 log << MSG::DEBUG <<
"EvtRecPi0Cnv::DataObjectToTObject" << endmsg;
93 log << MSG::ERROR <<
"Could not downcast to EvtRecPi0Col" << endmsg;
94 return StatusCode::FAILURE;
101 log << MSG::ERROR <<
"Could not get EvtRecObject in TDS" << endmsg;
102 return StatusCode::FAILURE;
106 { log << MSG::ERROR <<
"EvtRecPi0Cnv: Could not downcast to TDS EvtRecObject" << endmsg; }
108 IOpaqueAddress* addr;
109 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
113 if ( !m_evtRecPi0Col )
return StatusCode::SUCCESS;
115 IDataProviderSvc* dataSvc = 0;
116 StatusCode sc = serviceLocator()->getService(
117 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
118 if ( sc.isFailure() )
120 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecPi0Cnv" << endmsg;
124 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
127 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
130 evtRecTrackColbegin = evtRecTrackCol->begin();
131 evtRecTrackColend = evtRecTrackCol->end();
136 EvtRecPi0Col::const_iterator evtRecPi0 = evtRecPi0Col->begin();
138 for ( ; evtRecPi0 != evtRecPi0Col->end(); evtRecPi0++ )
147 HepLorentzVector hiP4 = ptr->
hiPfit();
148 HepLorentzVector loP4 = ptr->
loPfit();
160 EvtRecTrackCol::iterator it =
161 find( evtRecTrackColbegin, evtRecTrackColend, ptr->
hiEnGamma() );
163 evtRecPi0Root->
setHiEnGamma( it - evtRecTrackColbegin );
166 it = find( evtRecTrackColbegin, evtRecTrackColend, ptr->
loEnGamma() );
168 evtRecPi0Root->
setLoEnGamma( it - evtRecTrackColbegin );
173 return StatusCode::SUCCESS;
ObjectVector< EvtRecPi0 > EvtRecPi0Col
EvtRecPi0Cnv(ISvcLocator *svc)
static const CLID & classID()
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
void setChisq(const double chisq)
void setLoPfit(const HepLorentzVector &loPfit)
void setLoEnGamma(const EvtRecTrack *trk)
const EvtRecTrack * loEnGamma() const
void setHiPfit(const HepLorentzVector &hiPfit)
HepLorentzVector hiPfit() const
HepLorentzVector loPfit() const
void setUnconMass(const double unconMass)
const EvtRecTrack * hiEnGamma() const
void setHiEnGamma(const EvtRecTrack *trk)
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 addEvtRecPi0(TEvtRecPi0 *pi0)
const TObjArray * getEvtRecPi0Col() const
void setLoPxfit(Double_t loPx)
void setLoPyfit(Double_t loPy)
void setUnconMass(Double_t unconMass)
void setLoEnGamma(Int_t loEnGamma)
void setLoPzfit(Double_t loPz)
void setHiPyfit(Double_t hiPy)
Double_t unconMass() const
void setLoPefit(Double_t loPe)
void setHiPxfit(Double_t hiPx)
void setHiPzfit(Double_t hiPz)
void setChisq(Double_t chisq)
void setHiEnGamma(Int_t hiEnGamma)
void setHiPefit(Double_t hiPe)
_EXTERN_ std::string Event
_EXTERN_ std::string EvtRecTrackCol