ATLAS Offline Software
TrackParticleAssocsCnv_p1.cxx
Go to the documentation of this file.
1 
3 /*
4  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 // TrackParticleAssocsCnv_p1.cxx
8 // Implementation file for class TrackParticleAssocsCnv_p1
9 // Author: C.Anastopoulos
11 
12 // Framework includes
13 #include "GaudiKernel/MsgStream.h"
14 
15 // NavFourMom includes
18 
19 // EventCommonTPCnv includes
21 
22 // some useful typedefs
24 
25 
26 #define LOG_MSG(log,lvl,msg) \
27  log << lvl; \
28  if( log.level() <= lvl ) log << lvl << msg << endmsg
29 
30 void
32  TrackParticleAssocs* trans,
33  MsgStream& msg ) const
34 {
35  LOG_MSG(msg, MSG::DEBUG, "Loading TrackParticleAssocs from persistent state..." );
36 
37  *trans = TrackParticleAssocs();
38 
39  // retrieve underlying association stores
40  for ( TrackParticleAssocs_p1::TrackParticleStores_t::const_iterator
41  i = pers->m_assocStores.begin(),
42  iEnd = pers->m_assocStores.end();
43  i != iEnd;
44  ++i ) {
46  m_assocStoresCnv.persToTrans( &*i, &dlink, msg );
47  trans->addAssocStore (dlink);
48  }
49 
50  for ( std::size_t i = 0, iEnd = pers->m_assocs.size(); i != iEnd; ++i ) {
51  const ElementLinkInt_p3& key = pers->m_assocs[i].first;
53 
56  //unpack only if valid
57  if(k.isValid()){
58  for ( std::size_t j = 0, jEnd = val.size(); j != jEnd; ++j ) {
59  TrackParticleLink_t assocLink;
60  m_TrackParticleLinkCnv.persToTrans( &val[j], &assocLink, msg );
61  trans->addAssociation (k, assocLink);
62  }
63  }
64  }
65  LOG_MSG(msg, MSG::DEBUG, "Loaded TrackParticleAssocs from persistent state [OK]" );
66  return;
67 }
68 
69 
70 void
73  MsgStream& msg ) const
74 {
75  LOG_MSG(msg, MSG::DEBUG, "Creating persistent state of TrackParticleAssocs...");
76 
77 
78  // retrieve underlying association stores
79  std::vector<DataLink<TrackParticleAssocs> > assocStores = trans->getAssocStores();
80  pers->m_assocStores.resize( assocStores.size() );
81  std::size_t j = 0;
82  for (const DataLink<TrackParticleAssocs>& l : assocStores) {
84  ++j;
85  }
86 
87  j = 0;
88  pers->m_assocs.resize( trans->size() );
91  for (; begObj != endObj; ++begObj)
92  {
93  const TrackParticleLink_t& key = begObj.getObjectLink();
94  TrackParticleAssocs_p1::AssocElem_t& persAssoc = pers->m_assocs[j];
95  m_TrackParticleLinkCnv.transToPers( &key, &persAssoc.first, msg );
96  persAssoc.second.resize( begObj.getNumberOfAssociations() );
97 
98  TrackParticleAssocs::asso_iterator begAsso = begObj.getFirstAssociation();
99  TrackParticleAssocs::asso_iterator endAsso = begObj.getLastAssociation();
100  size_t i = 0;
101  for (; begAsso != endAsso; ++begAsso) {
102  const TrackParticleAssocs::asso_link asso = begAsso.getLink();
103  m_TrackParticleLinkCnv.transToPers( &asso, &persAssoc.second[i], msg );
104  ++i;
105  }
106 
107  ++j;
108  }
109 
110  LOG_MSG(msg, MSG::DEBUG, "Created persistent state of TrackParticleAssocs [OK]");
111  return;
112 }
TrackParticleAssocs_p1
Definition: TrackParticleAssocs_p1.h:27
ElementLinkCnv_p3::persToTrans
void persToTrans(const PersLink_t &pers, Link_t &trans, MsgStream &log) const
AssociationMap::beginObject
object_iterator beginObject() const
begin iterator for objects
LOG_MSG
#define LOG_MSG(log, lvl, msg)
Definition: TrackParticleAssocsCnv_p1.cxx:26
TrackParticleAssocsCnv_p1.h
DataLinkCnv_p2::persToTrans
virtual void persToTrans(const PersDLink_t &pers, DLink_t &trans, MsgStream &log) const
TrackParticleAssocs_p1::m_assocStores
TrackParticleStores_t m_assocStores
Definition: TrackParticleAssocs_p1.h:64
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
TrackParticleLink_t
TrackParticleAssocs::object_link TrackParticleLink_t
Definition: TrackParticleAssocsCnv_p1.cxx:23
TrackParticleAssocsCnv_p1::m_TrackParticleLinkCnv
TrackParticleCnv_t m_TrackParticleLinkCnv
converter for ElementLink to TrackParticleCollection
Definition: TrackParticleAssocsCnv_p1.h:76
DataLinkCnv_p2::transToPers
virtual void transToPers(const DLink_t &trans, PersDLink_t &pers, MsgStream &log) const
TrackParticleAssocsCnv_p1::m_assocStoresCnv
IAssocStoresCnv_t m_assocStoresCnv
converter for DataLink to INav4MomAssocs
Definition: TrackParticleAssocsCnv_p1.h:79
ElementLinkCnv_p3::transToPers
void transToPers(const Link_t &trans, PersLink_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
TrackParticleAssocs.h
AssociationObjectIterator
object iterator for association maps (internal use only!)
lumiFormat.i
int i
Definition: lumiFormat.py:92
AssociationMap::endObject
object_iterator endObject() const
end iterator for objects
TrackParticleAssocs::addAssocStore
void addAssocStore(const DataLink< TrackParticleAssocs > &assocStore)
Definition: TrackParticleAssocs.cxx:83
TrackParticleAssocs
Definition: TrackParticleAssocs.h:28
TrackParticleAssocs
Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrackParticleAssocs
Definition: ParticleEventTPCnv.cxx:70
TrackParticleAssocs_p1::m_assocs
Assocs_t m_assocs
Definition: TrackParticleAssocs_p1.h:63
TrackParticleAssocs::getAssocStores
std::vector< DataLink< TrackParticleAssocs > > getAssocStores() const
Return links to all other association stores.
Definition: TrackParticleAssocs.cxx:110
TrackParticleAssocs_p1::AssocElem_t
std::pair< ElementLinkInt_p3, ElemLinkVect_t > AssocElem_t
Definition: TrackParticleAssocs_p1.h:42
TrackParticleAssocsCnv_p1::transToPers
virtual void transToPers(const TrackParticleAssocs *trans, TrackParticleAssocs_p1 *pers, MsgStream &msg) const override
Method creating the persistent representation INav4MomAssocs_p3 from its transient representation INa...
Definition: TrackParticleAssocsCnv_p1.cxx:71
AssociationMap::addAssociation
void addAssociation(const object_container_type *objectContainer, const object_index_type &objectIndex, const asso_container_type *assoContainer, const asso_index_type &assoIndex)
AssociationMap::size
size_t size()
get number of associations
Definition: AssociationMap.h:189
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DEBUG
#define DEBUG
Definition: page_access.h:11
AssociationMap< Rec::TrackParticleContainer, Rec::TrackParticleContainer >::asso_iterator
AssociationVectorIterator asso_iterator
association iterator type
Definition: AssociationMap.h:81
TrackParticleAssocsCnv_p1::persToTrans
virtual void persToTrans(const TrackParticleAssocs_p1 *pers, TrackParticleAssocs *trans, MsgStream &msg) const override
Method creating the transient representation of INav4MomAssocs from its persistent representation INa...
Definition: TrackParticleAssocsCnv_p1.cxx:31
TrackParticleAssocs_p1::ElemLinkVect_t
std::vector< ElementLinkInt_p3 > ElemLinkVect_t
Definition: TrackParticleAssocs_p1.h:40
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
fitman.k
k
Definition: fitman.py:528
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
TrackParticleContainer.h