ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
AnalysisCommon
ParticleEventTPCnv
src
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
16
#include "
Particle/TrackParticleContainer.h
"
17
#include "
ParticleEvent/TrackParticleAssocs.h
"
18
19
// EventCommonTPCnv includes
20
#include "
ParticleEventTPCnv/TrackParticleAssocsCnv_p1.h
"
21
22
// some useful typedefs
23
typedef
TrackParticleAssocs::object_link
TrackParticleLink_t
;
24
25
26
#define LOG_MSG(log,lvl,msg) \
27
log << lvl; \
28
if( log.level() <= lvl ) log << lvl << msg << endmsg
29
30
void
31
TrackParticleAssocsCnv_p1::persToTrans
(
const
TrackParticleAssocs_p1
* pers,
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 ) {
45
IAssocStoresCnv_t::DLink_t
dlink;
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
54
TrackParticleLink_t
k;
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
70
void
71
TrackParticleAssocsCnv_p1::transToPers
(
const
TrackParticleAssocs
* trans,
72
TrackParticleAssocs_p1
* pers,
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
() );
89
TrackParticleAssocs::object_iterator
begObj = trans->
beginObject
();
90
TrackParticleAssocs::object_iterator
endObj = trans->
endObject
();
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
}
ElementLinkInt_p3
ElementLink_p3< uint32_t > ElementLinkInt_p3
Definition
ElementLink_p3.h:35
LOG_MSG
#define LOG_MSG(log, lvl, msg)
Definition
INav4MomAssocsCnv_p3.cxx:31
TrackParticleLink_t
INav4MomToTrackParticleAssocs::asso_link TrackParticleLink_t
Definition
INav4MomToTrackParticleAssocsCnv_p1.cxx:27
TrackParticleAssocs
Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TrackParticleAssocs
Definition
ParticleEventTPCnv.cxx:70
TrackParticleContainer.h
TrackParticleAssocsCnv_p1.h
TrackParticleAssocs.h
AssociationMap< Rec::TrackParticleContainer, Rec::TrackParticleContainer >::object_iterator
AssociationObjectIterator object_iterator
Definition
AssociationMap.h:84
AssociationMap< Rec::TrackParticleContainer, Rec::TrackParticleContainer >::asso_link
ElementLink< asso_container_type > asso_link
Definition
AssociationMap.h:60
AssociationMap::size
size_t size()
get number of associations
Definition
AssociationMap.h:188
AssociationMap::endObject
object_iterator endObject() const
end iterator for objects
AssociationMap< Rec::TrackParticleContainer, Rec::TrackParticleContainer >::asso_iterator
AssociationVectorIterator asso_iterator
Definition
AssociationMap.h:81
AssociationMap< Rec::TrackParticleContainer, Rec::TrackParticleContainer >::object_link
ElementLink< object_container_type > object_link
Definition
AssociationMap.h:50
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::beginObject
object_iterator beginObject() const
begin iterator for objects
DataLinkCnv_p2< DataLink< TrackParticleAssocs > >::DLink_t
DataLink< TrackParticleAssocs > DLink_t
Definition
DataLinkCnv_p2.h:29
DataLink
Object reference supporting deferred reading from StoreGate.
Definition
AthLinks/DataLink.h:93
TrackParticleAssocsCnv_p1::m_assocStoresCnv
IAssocStoresCnv_t m_assocStoresCnv
converter for DataLink to INav4MomAssocs
Definition
TrackParticleAssocsCnv_p1.h:79
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
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
TrackParticleAssocsCnv_p1::m_TrackParticleLinkCnv
TrackParticleCnv_t m_TrackParticleLinkCnv
converter for ElementLink to TrackParticleCollection
Definition
TrackParticleAssocsCnv_p1.h:76
TrackParticleAssocs_p1
Definition
TrackParticleAssocs_p1.h:27
TrackParticleAssocs_p1::AssocElem_t
std::pair< ElementLinkInt_p3, ElemLinkVect_t > AssocElem_t
Definition
TrackParticleAssocs_p1.h:42
TrackParticleAssocs_p1::ElemLinkVect_t
std::vector< ElementLinkInt_p3 > ElemLinkVect_t
Definition
TrackParticleAssocs_p1.h:40
TrackParticleAssocs_p1::m_assocStores
TrackParticleStores_t m_assocStores
Definition
TrackParticleAssocs_p1.h:64
TrackParticleAssocs_p1::m_assocs
Assocs_t m_assocs
Definition
TrackParticleAssocs_p1.h:63
TrackParticleAssocs
Definition
TrackParticleAssocs.h:28
TrackParticleAssocs::getAssocStores
std::vector< DataLink< TrackParticleAssocs > > getAssocStores() const
Return links to all other association stores.
Definition
TrackParticleAssocs.cxx:110
TrackParticleAssocs::addAssocStore
void addAssocStore(const DataLink< TrackParticleAssocs > &assocStore)
Definition
TrackParticleAssocs.cxx:83
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0