ATLAS Offline Software
Loading...
Searching...
No Matches
INav4MomToTrackParticleAssocsCnv_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// INav4MomToTrackParticleAssocsCnv_p1.cxx
8// Implementation file for class INav4MomToTrackParticleAssocsCnv_p1
9// Author: Karsten Koeneke
11
12
13// STL includes
14
15// Framework includes
16#include "GaudiKernel/MsgStream.h"
17
18// NavFourMom includes
21
22// EventCommonTPCnv includes
24
25// some useful typedefs
28
29
30#define LOG_MSG(log,lvl,msg) \
31 log << lvl; \
32 if( log.level() <= lvl ) log << lvl << msg << endmsg
33
34void
37 MsgStream& msg ) const
38{
39 LOG_MSG(msg, MSG::DEBUG, "Loading INav4MomToTrackParticleAssocs from persistent state..." );
40
42
43 // retrieve underlying association stores
44 for ( INav4MomToTrackParticleAssocs_p1::TrackParticleStores_t::const_iterator
45 i = pers->m_assocStores.begin(),
46 iEnd = pers->m_assocStores.end();
47 i != iEnd;
48 ++i )
49 {
51 m_assocStoresCnv.persToTrans( &*i, &dlink, msg );
52 trans->addAssocStore (dlink);
53 }
54
55 for ( std::size_t i = 0, iEnd = pers->m_assocs.size(); i != iEnd; ++i )
56 {
57 const ElementLinkInt_p3& key = pers->m_assocs[i].first;
59
61 m_inav4MomLinkCnv.persToTrans( &key, &k, msg );
62 //unpack only if valid
63 if(k.isValid())
64 {
65 for ( std::size_t j = 0, jEnd = val.size(); j != jEnd; ++j )
66 {
67 TrackParticleLink_t assocLink;
68 m_TrackParticleLinkCnv.persToTrans( &val[j], &assocLink, msg );
69 trans->addAssociation (k, assocLink);
70 }
71 }
72 }
73 LOG_MSG(msg, MSG::DEBUG, "Loaded INav4MomToTrackParticleAssocs from persistent state [OK]" );
74 return;
75}
76
77
78void
81 MsgStream& msg ) const
82{
83 LOG_MSG(msg, MSG::DEBUG, "Creating persistent state of INav4MomToTrackParticleAssocs...");
84
85 // retrieve underlying association stores
86 std::vector<DataLink<INav4MomToTrackParticleAssocs> > assocStores = trans->getAssocStores();
87 pers->m_assocStores.resize( assocStores.size() );
88 std::size_t j = 0;
89 for (const DataLink<INav4MomToTrackParticleAssocs>& l : assocStores) {
90 m_assocStoresCnv.transToPers( &l, &pers->m_assocStores[j], msg );
91 ++j;
92 }
93
94 j = 0;
95 pers->m_assocs.resize( trans->size() );
98 for (; begObj != endObj; ++begObj)
99 {
100 const INav4MomLink_t& key = begObj.getObjectLink();
102 m_inav4MomLinkCnv.transToPers( &key, &persAssoc.first, msg );
103 persAssoc.second.resize( begObj.getNumberOfAssociations() );
104
105 INav4MomToTrackParticleAssocs::asso_iterator begAsso = begObj.getFirstAssociation();
106 INav4MomToTrackParticleAssocs::asso_iterator endAsso = begObj.getLastAssociation();
107 size_t i = 0;
108 for (; begAsso != endAsso; ++begAsso) {
109 const INav4MomToTrackParticleAssocs::asso_link asso = begAsso.getLink();
110 m_TrackParticleLinkCnv.transToPers( &asso, &persAssoc.second[i], msg );
111 ++i;
112 }
113
114 ++j;
115 }
116
117 LOG_MSG(msg, MSG::DEBUG, "Created persistent state of INav4MomToTrackParticleAssocs [OK]");
118 return;
119}
INav4MomAssocs::object_link INav4MomLink_t
#define LOG_MSG(log, lvl, msg)
INav4MomToTrackParticleAssocs::asso_link TrackParticleLink_t
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
DataLink< INav4MomToTrackParticleAssocs > DLink_t
TrackParticleCnv_t m_TrackParticleLinkCnv
converter for ElementLink to TrackParticleCollection
INav4MomCnv_t m_inav4MomLinkCnv
converter for ElementLink to INavigable4MomentumCollection
IAssocStoresCnv_t m_assocStoresCnv
converter for DataLink to INav4MomAssocs
virtual void persToTrans(const INav4MomToTrackParticleAssocs_p1 *pers, INav4MomToTrackParticleAssocs *trans, MsgStream &msg) const override
Method creating the transient representation of INav4MomToTrackParticleAssocs from its persistent rep...
virtual void transToPers(const INav4MomToTrackParticleAssocs *trans, INav4MomToTrackParticleAssocs_p1 *pers, MsgStream &msg) const override
Method creating the persistent representation INav4MomToTrackParticleAssocs_p1 from its transient rep...
std::pair< ElementLinkInt_p3, ElemLinkVect_t > AssocElem_t
std::vector< ElementLinkInt_p3 > ElemLinkVect_t
std::vector< DataLink< INav4MomToTrackParticleAssocs > > getAssocStores() const
Return links to all other association stores.
void addAssocStore(const DataLink< INav4MomToTrackParticleAssocs > &assocStore)
MsgStream & msg
Definition testRead.cxx:32