ATLAS Offline Software
eflowObjectCnv_p4.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 void eflowObjectCnv_p4::persToTrans( const eflowObject_p4 *persObj, eflowObject *transObj, MsgStream &eflowStream ){
10 
11 
12  //data
13 
14  transObj->set_type (persObj->m_eflowType);
15  transObj->set_charge (persObj->m_charge);
16  transObj->setCaloRecoStatus (CaloRecoStatus(persObj->m_recoStatus));
17 
18  transObj->set_eta(persObj->m_eta);
19  transObj->set_phi(persObj->m_phi);
20  transObj->set_energy(persObj->m_e);
21  transObj->set_m(persObj->m_m);
22 
23  //element links data
24 
25  //m_elMuCnv.persToTrans(&persObj->m_muonElementLink, &transObj->m_muonElementLink, eflowStream);
26  //m_elVxCnv.persToTrans(&persObj->m_convElementLink, &transObj->m_convElementLink, eflowStream);
27 
28  //navigable vectors data
29  //convert persistent elementlinkvector to transient first and then copy links to navigable vectors
30 
32  m_navTrackCnv.persToTrans(&persObj->m_eflowTrack,&dummyTrackVector,eflowStream);
33  for (const ElementLink<Rec::TrackParticleContainer> track : dummyTrackVector)
34  transObj->addTrack(track);
35 
36  ElementLinkVector<CaloClusterContainer> dummyClusterVector;
37  m_navClusCnv.persToTrans(&persObj->m_eflowClus,&dummyClusterVector,eflowStream);
38  for (const ElementLink<CaloClusterContainer> clus : dummyClusterVector)
39  transObj->addClus (clus);
40 }
41 
42 
43 void eflowObjectCnv_p4::transToPers( const eflowObject *transObj,eflowObject_p4 *persObj, MsgStream &eflowStream ){
44 
45  //data
46 
47  persObj->m_eflowType = transObj->eflowType();
48  persObj->m_charge = transObj->charge();
49  persObj->m_recoStatus = transObj->getCaloRecoStatus().getStatusWord();
50 
51  persObj->m_eta = transObj->eta();
52  persObj->m_phi = transObj->phi();
53  persObj->m_e = transObj->energy();
54  persObj->m_m = transObj->m();
55 
56  //element links data
57 
58 
59  //if (transObj->m_muonElementLink.isValid()) m_elMuCnv.transToPers(&transObj->m_muonElementLink, &persObj->m_muonElementLink, eflowStream);
60  //if (transObj->m_convElementLink.isValid()) m_elVxCnv.transToPers(&transObj->m_convElementLink, &persObj->m_convElementLink, eflowStream);
61 
62  //navigable vectors
63  //there are no converters so we have to make an ElementLinkVector first for which converters exist
64 
66  for (int i = 0; i < transObj->numTrack();i++)
67  dummyTrackVector.push_back(transObj->trackLink(i));
68  m_navTrackCnv.transToPers(&dummyTrackVector, &persObj->m_eflowTrack, eflowStream);
69 
70  ElementLinkVector<CaloClusterContainer> dummyClusterVector;
71  for (int i = 0; i < transObj->numClus(); i++)
72  dummyClusterVector.push_back(transObj->clusLink(i));
73  m_navClusCnv.transToPers(&dummyClusterVector, &persObj->m_eflowClus, eflowStream);
74 }
eflowObject::energy
double energy() const
Definition: eflowObject.h:146
eflowObject_p4::m_eta
float m_eta
Definition: eflowObject_p4.h:66
eflowObject::set_phi
void set_phi(double cphi)
Definition: eflowObject.h:138
eflowObjectCnv_p4::m_navClusCnv
ElementLinkVectorCnv_p1< ElementLinkVector< CaloClusterContainer > > m_navClusCnv
Definition: eflowObjectCnv_p4.h:44
eflowObject::getCaloRecoStatus
CaloRecoStatus getCaloRecoStatus() const
Definition: eflowObject.h:185
eflowObjectCnv_p4::persToTrans
virtual void persToTrans(const eflowObject_p4 *persObj, eflowObject *transObj, MsgStream &eflowStream)
Definition: eflowObjectCnv_p4.cxx:9
eflowObject::set_eta
void set_eta(double ceta)
Definition: eflowObject.h:136
eflowObject::clusLink
const ElementLink< CaloClusterContainer > clusLink(size_t i) const
Definition: eflowObject.h:113
eflowObject::eflowType
int eflowType() const
Definition: eflowObject.h:151
eflowObject_p4
Definition: eflowObject_p4.h:27
ElementLinkVectorCnv_p1::persToTrans
void persToTrans(const PersLinkVect_t &pers, LinkVect_t &trans, MsgStream &log) const
eflowObject
Definition: eflowObject.h:60
eflowObject::addClus
void addClus(const ElementLink< CaloClusterContainer > &clusElementLink)
Definition: eflowObject.cxx:115
ElementLinkVector::push_back
void push_back(const ElemLink &link)
Definition: AthLinks/ElementLinkVector.h:316
eflowObjectCnv_p4::transToPers
virtual void transToPers(const eflowObject *transObj, eflowObject_p4 *persObj, MsgStream &eflowStream)
Definition: eflowObjectCnv_p4.cxx:43
P4EEtaPhiM::eta
virtual double eta() const
get eta data member
Definition: P4EEtaPhiM.h:105
eflowObject::set_energy
void set_energy(double cenergy)
Definition: eflowObject.h:147
eflowObjectCnv_p4.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
eflowObject_p4::m_e
float m_e
Definition: eflowObject_p4.h:66
P4EEtaPhiM::m
virtual double m() const
get mass data member
Definition: P4EEtaPhiM.h:111
eflowObject_p4::m_eflowClus
ElementLinkIntVector_p1 m_eflowClus
Definition: eflowObject_p4.h:55
eflowObject::set_type
void set_type(int ctype)
Definition: eflowObject.h:152
eflowObject::addTrack
void addTrack(const ElementLink< Rec::TrackParticleContainer > &trackElementLink)
Definition: eflowObject.cxx:130
eflowObject_p4::m_m
float m_m
Definition: eflowObject_p4.h:66
ElementLinkVector< Rec::TrackParticleContainer >
eflowObject_p4::m_phi
float m_phi
Definition: eflowObject_p4.h:66
eflowObject::set_charge
void set_charge(int ccharge)
Definition: eflowObject.h:155
eflowObject::setCaloRecoStatus
void setCaloRecoStatus(CaloRecoStatus status)
Definition: eflowObject.h:184
P4EEtaPhiM::phi
virtual double phi() const
get phi data member
Definition: P4EEtaPhiM.h:108
eflowObject::numClus
int numClus() const
Definition: eflowObject.h:122
eflowObject::set_m
void set_m(double cm)
Definition: eflowObject.h:149
eflowObject.h
eflowObject_p4::m_recoStatus
unsigned int m_recoStatus
Definition: eflowObject_p4.h:52
eflowObjectCnv_p4::m_navTrackCnv
ElementLinkVectorCnv_p1< ElementLinkVector< Rec::TrackParticleContainer > > m_navTrackCnv
Definition: eflowObjectCnv_p4.h:43
NavigableVector.h
eflowObject::charge
int charge() const
Definition: eflowObject.h:154
eflowObject_p4::m_eflowTrack
ElementLinkIntVector_p1 m_eflowTrack
Definition: eflowObject_p4.h:58
ElementLinkVectorCnv_p1::transToPers
void transToPers(const LinkVect_t &trans, PersLinkVect_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
eflowObject::trackLink
const ElementLink< Rec::TrackParticleContainer > trackLink(size_t i) const
Definition: eflowObject.h:102
eflowObject_p4::m_charge
int m_charge
Definition: eflowObject_p4.h:60
CaloRecoStatus::getStatusWord
virtual const store_type & getStatusWord() const
retrieve the entire status word
Definition: CaloRecoStatus.h:112
eflowObject::numTrack
int numTrack() const
Definition: eflowObject.h:121
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
eflowObject_p4::m_eflowType
int m_eflowType
Definition: eflowObject_p4.h:60
CaloRecoStatus
reconstruction status indicator
Definition: CaloRecoStatus.h:12