ATLAS Offline Software
Loading...
Searching...
No Matches
TrackParticleAssocsCnv_p1.cxx
Go to the documentation of this file.
1
2
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
30void
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;
52 const TrackParticleAssocs_p1::ElemLinkVect_t& val = pers->m_assocs[i].second;
53
55 m_TrackParticleLinkCnv.persToTrans( &key, &k, msg );
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
70void
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) {
83 m_assocStoresCnv.transToPers( &l, &pers->m_assocStores[j], msg );
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();
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}
#define LOG_MSG(log, lvl, msg)
INav4MomToTrackParticleAssocs::asso_link TrackParticleLink_t
Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrackParticleAssocs
size_t size()
get number of associations
object_iterator endObject() const
end iterator for objects
void addAssociation(const object_container_type *objectContainer, const object_index_type &objectIndex, const asso_container_type *assoContainer, const asso_index_type &assoIndex)
object_iterator beginObject() const
begin iterator for objects
IAssocStoresCnv_t m_assocStoresCnv
converter for DataLink to INav4MomAssocs
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...
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...
TrackParticleCnv_t m_TrackParticleLinkCnv
converter for ElementLink to TrackParticleCollection
std::pair< ElementLinkInt_p3, ElemLinkVect_t > AssocElem_t
std::vector< ElementLinkInt_p3 > ElemLinkVect_t
TrackParticleStores_t m_assocStores
std::vector< DataLink< TrackParticleAssocs > > getAssocStores() const
Return links to all other association stores.
void addAssocStore(const DataLink< TrackParticleAssocs > &assocStore)
MsgStream & msg
Definition testRead.cxx:32