ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Event
EventCommonTPCnv
src
INav4MomAssocsCnv_p2.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
// INav4MomAssocsCnv_p2.cxx
8
// Implementation file for class INav4MomAssocsCnv_p2
9
// Author: S.Binet<binet@cern.ch>
11
12
13
// STL includes
14
15
// Framework includes
16
#include "GaudiKernel/MsgStream.h"
17
18
// NavFourMom includes
19
#include "
NavFourMom/INavigable4MomentumCollection.h
"
20
#include "
NavFourMom/INav4MomAssocs.h
"
21
22
// EventCommonTPCnv includes
23
#include "
EventCommonTPCnv/INav4MomAssocsCnv_p2.h
"
24
25
#include "
AthenaKernel/getThinningCache.h
"
26
27
// some useful typedefs
28
typedef
INav4MomAssocs::object_link
INav4MomLink_t
;
29
30
31
void
32
INav4MomAssocsCnv_p2::persToTrans
(
const
INav4MomAssocs_p2
* pers,
33
INav4MomAssocs
*
trans
,
34
MsgStream&
msg
)
const
35
{
36
msg
<< MSG::DEBUG
37
<<
"Loading INav4MomAssocs from persistent state..."
38
<<
endmsg
;
39
40
*
trans
=
INav4MomAssocs
();
41
42
// retrieve underlying association stores
43
for
( INav4MomAssocs_p2::INav4MomStores_t::const_iterator
44
i = pers->
m_assocStores
.begin(),
45
iEnd = pers->
m_assocStores
.end();
46
i != iEnd;
47
++i )
48
{
49
IAssocStoresCnv_t::DLink_t
dlink;
50
m_assocStoresCnv
.persToTrans( &*i, &dlink,
msg
);
51
trans
->addAssocStore (dlink);
52
}
53
54
// reset element link converters, and provide container name lookup table
55
INav4MomCnv_t::State state (pers->
m_contNames
);
56
57
for
( std::size_t i = 0, iEnd = pers->
m_assocs
.size(); i != iEnd; ++i ) {
58
const
ElementLinkInt_p2
& key = pers->
m_assocs
[i].first;
59
const
INav4MomAssocs_p2::ElemLinkVect_t
& val = pers->
m_assocs
[i].second;
60
61
INav4MomLink_t
k;
62
m_inav4MomLinkCnv
.persToTrans( state, key, k,
msg
);
63
64
for
( std::size_t j = 0, jEnd = val.size(); j != jEnd; ++j ) {
65
INav4MomLink_t
assocLink;
66
m_inav4MomLinkCnv
.persToTrans( state, val[j], assocLink,
msg
);
67
trans
->addAssociation (k, assocLink);
68
}
69
}
70
71
msg
<< MSG::DEBUG
72
<<
"Loaded INav4MomAssocs from persistent state [OK]"
73
<<
endmsg
;
74
return
;
75
}
76
77
void
78
INav4MomAssocsCnv_p2::transToPers
(
const
INav4MomAssocs
*
trans
,
79
INav4MomAssocs_p2
* pers,
80
MsgStream&
msg
)
const
81
{
82
msg
<< MSG::DEBUG
83
<<
"Creating persistent state of INav4MomAssocs..."
84
<<
endmsg
;
85
86
// retrieve underlying association stores
87
std::vector<DataLink<INav4MomAssocs> > assocStores =
trans
->getAssocStores();
88
pers->
m_assocStores
.resize( assocStores.size() );
89
std::size_t j = 0;
90
for
(
const
DataLink<INav4MomAssocs>
& l : assocStores) {
91
m_assocStoresCnv
.transToPers( &l, &pers->
m_assocStores
[j],
msg
);
92
++j;
93
}
94
95
// reset element link converters, and provide container name lookup table
96
INav4MomCnv_t::State state (pers->
m_contNames
);
97
const
SG::ThinningCache
* cache =
SG::getThinningCache
();
98
99
j = 0;
100
pers->
m_assocs
.resize(
trans
->size() );
101
INav4MomAssocs::object_iterator
begObj =
trans
->beginObject();
102
INav4MomAssocs::object_iterator
endObj =
trans
->endObject();
103
for
(; begObj != endObj; ++begObj)
104
{
105
const
INav4MomLink_t
& key = begObj.getObjectLink();
106
INav4MomAssocs_p2::AssocElem_t
& persAssoc = pers->
m_assocs
[j];
107
m_inav4MomLinkCnv
.transToPers( state, key, persAssoc.first, cache,
msg
);
108
persAssoc.second.resize( begObj.getNumberOfAssociations() );
109
110
INav4MomAssocs::asso_iterator
begAsso = begObj.getFirstAssociation();
111
INav4MomAssocs::asso_iterator
endAsso = begObj.getLastAssociation();
112
size_t
i = 0;
113
for
(; begAsso != endAsso; ++begAsso) {
114
const
INav4MomAssocs::asso_link
asso = begAsso.getLink();
115
m_inav4MomLinkCnv
.transToPers( state, asso, persAssoc.second[i], cache,
msg
);
116
++i;
117
}
118
119
++j;
120
}
121
122
msg
<< MSG::DEBUG
123
<<
"Created persistent state of INav4MomAssocs [OK]"
124
<<
endmsg
;
125
return
;
126
}
127
129
// Non-const methods:
131
133
// Protected methods:
135
137
// Const methods:
139
141
// Non-const methods:
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
ElementLinkInt_p2
ElementLink_p2< uint32_t > ElementLinkInt_p2
Definition
ElementLink_p2.h:41
INav4MomAssocs
INav4MomAssocs
Definition
EventCommonTPCnv.cxx:32
INav4MomLink_t
INav4MomAssocs::object_link INav4MomLink_t
Definition
INav4MomAssocsCnv_p2.cxx:28
INav4MomAssocsCnv_p2.h
INav4MomAssocs.h
INavigable4MomentumCollection.h
AssociationMap< INavigable4MomentumCollection, INavigable4MomentumCollection >::object_iterator
AssociationObjectIterator object_iterator
Definition
AssociationMap.h:84
AssociationMap< INavigable4MomentumCollection, INavigable4MomentumCollection >::asso_link
ElementLink< asso_container_type > asso_link
Definition
AssociationMap.h:60
AssociationMap< INavigable4MomentumCollection, INavigable4MomentumCollection >::asso_iterator
AssociationVectorIterator asso_iterator
Definition
AssociationMap.h:81
AssociationMap< INavigable4MomentumCollection, INavigable4MomentumCollection >::object_link
ElementLink< object_container_type > object_link
Definition
AssociationMap.h:50
DataLinkCnv_p1< DataLink< INav4MomAssocs > >::DLink_t
DataLink< INav4MomAssocs > DLink_t
Definition
DataLinkCnv_p1.h:30
DataLink
Object reference supporting deferred reading from StoreGate.
Definition
AthLinks/DataLink.h:96
INav4MomAssocsCnv_p2::transToPers
virtual void transToPers(const INav4MomAssocs *trans, INav4MomAssocs_p2 *pers, MsgStream &msg) const override
Method creating the persistent representation INav4MomAssocs_p2 from its transient representation INa...
Definition
INav4MomAssocsCnv_p2.cxx:78
INav4MomAssocsCnv_p2::persToTrans
virtual void persToTrans(const INav4MomAssocs_p2 *pers, INav4MomAssocs *trans, MsgStream &msg) const override
Method creating the transient representation of INav4MomAssocs from its persistent representation INa...
Definition
INav4MomAssocsCnv_p2.cxx:32
INav4MomAssocsCnv_p2::m_inav4MomLinkCnv
INav4MomCnv_t m_inav4MomLinkCnv
converter for ElementLink to INavigable4MomentumCollection
Definition
INav4MomAssocsCnv_p2.h:80
INav4MomAssocsCnv_p2::m_assocStoresCnv
IAssocStoresCnv_t m_assocStoresCnv
converter for DataLink to INav4MomAssocs
Definition
INav4MomAssocsCnv_p2.h:83
INav4MomAssocs_p2
Definition
INav4MomAssocs_p2.h:29
INav4MomAssocs_p2::m_contNames
ElementLinkContNames_p2 m_contNames
container names
Definition
INav4MomAssocs_p2.h:76
INav4MomAssocs_p2::m_assocs
Assocs_t m_assocs
Definition
INav4MomAssocs_p2.h:77
INav4MomAssocs_p2::AssocElem_t
std::pair< ElementLinkInt_p2, ElemLinkVect_t > AssocElem_t
Definition
INav4MomAssocs_p2.h:45
INav4MomAssocs_p2::m_assocStores
INav4MomStores_t m_assocStores
Definition
INav4MomAssocs_p2.h:78
INav4MomAssocs_p2::ElemLinkVect_t
std::vector< ElementLinkInt_p2 > ElemLinkVect_t
Definition
INav4MomAssocs_p2.h:43
INav4MomAssocs
Definition
INav4MomAssocs.h:33
SG::ThinningCache
Cache thinning decisions for converters.
Definition
ThinningCache.h:48
trans
TH1F * trans(TH1F *h, bool t=false)
Definition
comparitor.cxx:199
getThinningCache.h
Helpers to retrieve the current thinning cache from the event context.
SG::getThinningCache
const SG::ThinningCache * getThinningCache()
Retrieve the current thinning cache from the current event context.
Definition
getThinningCache.cxx:41
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0