1#include "GaudiKernel/MsgStream.h"
4#include "EventModel/EventModel.h"
5#include "EvtRecEvent/EvtRecEtaToGG.h"
6#include "EvtRecEvent/EvtRecObject.h"
8#include "RootEventData/TEvtRecEtaToGG.h"
9#include "RootEventData/TEvtRecObject.h"
11#include "RootCnvSvc/EvtRec/EvtRecCnv.h"
12#include "RootCnvSvc/EvtRec/EvtRecEtaToGGCnv.h"
13#include "RootCnvSvc/RootAddress.h"
15#include "CLHEP/Matrix/SymMatrix.h"
16#include "CLHEP/Matrix/Vector.h"
20using CLHEP::HepSymMatrix;
21using CLHEP::HepVector;
26 m_evtRecEtaToGGCol = 0;
31 MsgStream log(
msgSvc(),
"EvtRecEtaToGGCnv" );
32 log << MSG::DEBUG <<
"EvtRecEtaToGGCnv::TObjectToDataObject" << endmsg;
36 refpObject = evtRecEtaToGGCol;
38 if ( !m_evtRecEtaToGGCol )
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 EvtRecEtaToGGCnv" << endmsg;
50 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
53 TIter evtRecEtaToGGIter( m_evtRecEtaToGGCol );
55 while ( ( evtRecEtaToGGRoot = (
TEvtRecEtaToGG*)evtRecEtaToGGIter.Next() ) )
58 m_common.m_rootEvtRecEtaToGGMap[evtRecEtaToGGRoot] = evtRecEtaToGG;
64 HepLorentzVector hiP4( evtRecEtaToGGRoot->
hiPxfit(), evtRecEtaToGGRoot->
hiPyfit(),
66 HepLorentzVector loP4( evtRecEtaToGGRoot->
loPxfit(), evtRecEtaToGGRoot->
loPyfit(),
71 int hiEnGammatrk = evtRecEtaToGGRoot->
hiEnGamma();
72 int loEnGammatrk = evtRecEtaToGGRoot->
loEnGamma();
74 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( hiEnGammatrk ) ) );
76 dynamic_cast<EvtRecTrack*
>( evtRecTrackCol->containedObject( loEnGammatrk ) ) );
78 evtRecEtaToGGCol->push_back( evtRecEtaToGG );
81 delete m_evtRecEtaToGGCol;
82 m_evtRecEtaToGGCol = 0;
83 return StatusCode::SUCCESS;
87 MsgStream log(
msgSvc(),
"EvtRecEtaToGGCnv" );
88 log << MSG::DEBUG <<
"EvtRecEtaToGGCnv::DataObjectToTObject" << endmsg;
91 if ( !evtRecEtaToGGCol )
93 log << MSG::ERROR <<
"Could not downcast to EvtRecEtaToGGCol" << endmsg;
94 return StatusCode::FAILURE;
101 log << MSG::ERROR <<
"Could not get EvtRecObject in TDS" << endmsg;
102 return StatusCode::FAILURE;
107 log << MSG::ERROR <<
"EvtRecEtaToGGCnv: Could not downcast to TDS EvtRecObject" << endmsg;
110 IOpaqueAddress* addr;
111 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
115 if ( !m_evtRecEtaToGGCol )
return StatusCode::SUCCESS;
117 IDataProviderSvc* dataSvc = 0;
118 StatusCode sc = serviceLocator()->getService(
119 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
120 if ( sc.isFailure() )
122 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecEtaToGGCnv" << endmsg;
126 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
129 if ( !evtRecTrackCol ) { log << MSG::INFO <<
"Could not find EvtRecTrackCol" << endmsg; }
132 evtRecTrackColbegin = evtRecTrackCol->begin();
133 evtRecTrackColend = evtRecTrackCol->end();
138 EvtRecEtaToGGCol::const_iterator evtRecEtaToGG = evtRecEtaToGGCol->begin();
140 for ( ; evtRecEtaToGG != evtRecEtaToGGCol->end(); evtRecEtaToGG++ )
149 HepLorentzVector hiP4 = ptr->
hiPfit();
150 HepLorentzVector loP4 = ptr->
loPfit();
162 EvtRecTrackCol::iterator it =
163 find( evtRecTrackColbegin, evtRecTrackColend, ptr->
hiEnGamma() );
165 evtRecEtaToGGRoot->
setHiEnGamma( it - evtRecTrackColbegin );
168 it = find( evtRecTrackColbegin, evtRecTrackColend, ptr->
loEnGamma() );
170 evtRecEtaToGGRoot->
setLoEnGamma( it - evtRecTrackColbegin );
175 return StatusCode::SUCCESS;
ObjectVector< EvtRecEtaToGG > EvtRecEtaToGGCol
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
EvtRecEtaToGGCnv(ISvcLocator *svc)
static const CLID & classID()
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
const EvtRecTrack * hiEnGamma() const
HepLorentzVector hiPfit() const
void setLoEnGamma(const EvtRecTrack *trk)
void setHiEnGamma(const EvtRecTrack *trk)
HepLorentzVector loPfit() const
void setUnconMass(const double unconMass)
void setChisq(const double chisq)
void setHiPfit(const HepLorentzVector &hiPfit)
void setLoPfit(const HepLorentzVector &loPfit)
const EvtRecTrack * loEnGamma() const
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 setHiPyfit(Double_t hiPy)
Double_t unconMass() const
void setHiPxfit(Double_t hiPx)
void setHiPzfit(Double_t hiPz)
void setHiPefit(Double_t hiPe)
void setLoPxfit(Double_t loPx)
void setLoPyfit(Double_t loPy)
void setLoPefit(Double_t loPe)
void setLoEnGamma(Int_t loEnGamma)
void setUnconMass(Double_t unconMass)
void setLoPzfit(Double_t loPz)
void setChisq(Double_t chisq)
void setHiEnGamma(Int_t hiEnGamma)
const TObjArray * getEvtRecEtaToGGCol() const
void clearEvtRecEtaToGGCol()
void addEvtRecEtaToGG(TEvtRecEtaToGG *eta)
_EXTERN_ std::string Event
_EXTERN_ std::string EvtRecTrackCol