ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Reconstruction
Jet
JetEventTPCnv
src
JetCollectionCnv_p3.cxx
Go to the documentation of this file.
1
2
3
/*
4
Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// JetCollectionCnv_p3.cxx
8
// Implementation file for class JetCollectionCnv_p3
9
// Author: S.Binet<binet@cern.ch>
11
12
// DataModel includes
13
#include "
AthAllocators/DataPool.h
"
14
15
// JetEvent includes
16
#include "
JetEvent/Jet.h
"
17
#include "
JetEvent/JetCollection.h
"
18
19
20
// JetEventTPCnv includes
21
#include "
JetEventTPCnv/JetCnv_p3.h
"
22
#include "
JetEventTPCnv/JetCollection_p3.h
"
23
#include "
JetEventTPCnv/JetCollectionCnv_p3.h
"
24
#include "
JetEventTPCnv/JetKeyDescriptorCnv_p1.h
"
25
26
// DataModelAthenaPool includes
27
#include "
DataModelAthenaPool/DataLinkCnv_p1.h
"
28
29
#include <sstream>
30
31
// preallocate converters
32
static
const
JetCnv_p3
jetCnv
;
33
static
const
JetKeyDescriptorCnv_p1
jetkeyCnv
;
34
35
36
void
37
JetCollectionCnv_p3::persToTrans
(
const
JetCollection_p3
* pers,
38
JetCollection
*
trans
,
39
MsgStream&
msg
)
const
40
{
41
msg
<< MSG::DEBUG <<
"Loading JetCollection from persistent state..."
42
<<
endmsg
;
43
44
// make sure to first read the JetKeyDescriptor
45
DataLinkCnv_p1<DataLink<JetKeyDescriptor>
> JetKeyStoreCnv;
46
JetKeyStoreCnv.
persToTrans
( &pers->
m_keyStore
, &
trans
->m_keyStore,
msg
);
47
// link the JetKeyDescriptorInstance to the store:
48
if
(
trans
->m_keyStore.isValid() ){
49
trans
->keyDesc()->m_Stores =
nullptr
;
50
trans
->keyDesc()->m_ConstStores =
trans
->m_keyStore.cptr();
51
// make sure the global instance is pointing to this jetkey store
52
JetKeyDescriptorInstance::instance
()->
m_Stores
=
nullptr
;
53
JetKeyDescriptorInstance::instance
()->
m_ConstStores
=
trans
->keyDesc()->m_ConstStores;
54
}
55
else
if
(
trans
->m_keyStore.isDefault()) {
56
DataLink<JetKeyDescriptor>
dl (
"JetKeyMap"
);
57
if
(dl.isValid()) {
58
trans
->keyDesc()->m_Stores =
nullptr
;
59
trans
->keyDesc()->m_ConstStores = dl.cptr();
60
// make sure the global instance is pointing to this jetkey store
61
JetKeyDescriptorInstance::instance
()->
m_Stores
=
nullptr
;
62
JetKeyDescriptorInstance::instance
()->
m_ConstStores
=
trans
->keyDesc()->m_ConstStores;
63
}
64
else
{
65
trans
->keyDesc()->m_Stores =
66
JetKeyDescriptorInstance::instance
()->
m_Stores
;
67
trans
->keyDesc()->m_ConstStores =
68
JetKeyDescriptorInstance::instance
()->
m_ConstStores
;
69
}
70
}
71
else
{
72
trans
->keyDesc()->m_Stores =
JetKeyDescriptorInstance::instance
()->
m_Stores
;
73
trans
->keyDesc()->m_ConstStores =
JetKeyDescriptorInstance::instance
()->
m_ConstStores
;
74
}
75
msg
<< MSG::DEBUG <<
"attached JetKeyDescriptor to its instance"
<<
endmsg
;
76
77
// elements are managed by DataPool
78
trans
->clear(
SG::VIEW_ELEMENTS
);
79
80
DataPool<Jet>
pool
( 20 );
81
const
std::size_t nJets = pers->size();
82
if
(
pool
.capacity() -
pool
.allocated() < nJets ) {
83
pool
.reserve(
pool
.allocated() + nJets );
84
}
85
86
trans
->setOrdered (
static_cast<
JetCollection::OrderedVar
>
(pers->
m_ordered
));
87
// the transient version does not have this data member any more,
88
// each jet knows its ROI
89
// trans->m_ROIauthor = //pers->m_roiAuthor;
90
91
msg
<< MSG::DEBUG <<
"persistant JetCollection has size "
<< nJets <<
endmsg
;
92
93
trans
->reserve( nJets );
94
for
( JetCollection_p3::const_iterator
95
itr = pers->begin(),
96
itrEnd = pers->end();
97
itr != itrEnd;
98
++itr ) {
99
Jet
*
jet
=
pool
.nextElementPtr();
100
jetCnv
.persToTrans( &(*itr),
jet
,
msg
);
101
trans
->push_back(
jet
);
102
103
}
104
105
// now each jet knows its ROI
106
unsigned
int
RoIWord;
107
std::stringstream strm(pers->
m_roiAuthor
);
108
strm >> RoIWord;
109
if
( strm.good() )
110
{
111
msg
<< MSG::DEBUG <<
"Note: This jet collection uses RoIWords!"
<<
endmsg
;
112
for
(
JetCollection::iterator
itr =
trans
->begin(); itr !=
trans
->end(); ++itr )
113
(*itr)->set_RoIword( RoIWord );
114
}
115
116
msg
<< MSG::DEBUG <<
"Loading JetCollection from persistent state [OK]"
117
<<
endmsg
;
118
}
119
120
void
121
JetCollectionCnv_p3::transToPers
(
const
JetCollection
*
trans
,
122
JetCollection_p3
* pers,
123
MsgStream&
msg
)
const
124
{
125
// msg << MSG::DEBUG << "Creating persistent state of JetCollection..."
126
// << endmsg;
127
128
pers->
m_ordered
=
static_cast<
short
>
(
trans
->ordered());
129
//pers->m_roiAuthor = trans->m_ROIauthor;
130
131
std::size_t
size
=
trans
->size();
132
pers->resize(
size
);
133
134
// convert vector entries one by one
135
JetCollection::const_iterator
transItr =
trans
->begin();
136
JetCollection_p3::iterator persItr = pers->begin();
137
while
(
size
) {
138
jetCnv
.transToPers( *transItr, &(*persItr),
msg
);
139
++persItr; ++transItr; --
size
;
140
}
141
142
// RS now deal with the JetKeyDescriptor
143
DataLinkCnv_p1<DataLink<JetKeyDescriptor>
> JetKeyStoreCnv;
144
JetKeyStoreCnv.
transToPers
( &
trans
->m_keyStore, &pers->
m_keyStore
,
msg
);
145
}
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
DataLinkCnv_p1.h
This file contains the class definition for the DataLinkCnv_p1 class and DataLinkVectorCnv_p1 class.
DataPool.h
JetCnv_p3.h
jetCnv
static const JetCnv_p1 jetCnv
Definition
JetCollectionCnv_p1.cxx:28
jetkeyCnv
static const JetKeyDescriptorCnv_p1 jetkeyCnv
Definition
JetCollectionCnv_p2.cxx:33
JetCollectionCnv_p3.h
JetCollection.h
JetCollection_p3.h
JetKeyDescriptorCnv_p1.h
Jet.h
size
size_t size() const
Number of registered mappings.
DataLinkCnv_p1
Definition
DataLinkCnv_p1.h:23
DataLinkCnv_p1::persToTrans
virtual void persToTrans(const PersDLink_t *pers, DLink_t *trans, MsgStream &log) const override
DataLinkCnv_p1::transToPers
virtual void transToPers(const DLink_t *trans, PersDLink_t *pers, MsgStream &log) const override
DataLink
Object reference supporting deferred reading from StoreGate.
Definition
AthLinks/DataLink.h:93
DataPool
a typed memory pool that saves time spent allocation small object.
Definition
DataPool.h:63
DataVector< Jet >::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Definition
DataVector.h:837
JetCnv_p3
Definition
JetCnv_p3.h:27
JetCollectionCnv_p3::transToPers
virtual void transToPers(const JetCollection *trans, JetCollection_p3 *pers, MsgStream &msg) const override
Method creating the persistent representation JetCollection_p1 from its transient representation JetC...
Definition
JetCollectionCnv_p3.cxx:121
JetCollectionCnv_p3::persToTrans
virtual void persToTrans(const JetCollection_p3 *pers, JetCollection *trans, MsgStream &msg) const override
Method creating the transient representation of JetCollection from its persistent representation JetC...
Definition
JetCollectionCnv_p3.cxx:37
JetCollection_p3
Definition
JetCollection_p3.h:29
JetCollection_p3::m_keyStore
DataLink_p1 m_keyStore
Definition
JetCollection_p3.h:43
JetCollection_p3::m_ordered
short m_ordered
Definition
JetCollection_p3.h:42
JetCollection_p3::m_roiAuthor
std::string m_roiAuthor
Definition
JetCollection_p3.h:41
JetCollection
Definition
JetCollection.h:30
JetCollection::OrderedVar
OrderedVar
Definition
JetCollection.h:35
JetCollection::iterator
DataVector< Jet >::iterator iterator
Definition
JetCollection.h:34
JetKeyDescriptorCnv_p1
Definition
JetKeyDescriptorCnv_p1.h:17
JetKeyDescriptorInstance::m_ConstStores
const JetKeyDescriptor * m_ConstStores
Definition
JetKeyDescriptor.h:156
JetKeyDescriptorInstance::m_Stores
JetKeyDescriptor * m_Stores
Definition
JetKeyDescriptor.h:155
JetKeyDescriptorInstance::instance
static JetKeyDescriptorInstance * instance()
Definition
JetKeyDescriptor.h:123
Jet
Definition
Reconstruction/Jet/JetEvent/JetEvent/Jet.h:47
trans
TH1F * trans(TH1F *h, bool t=false)
Definition
comparitor.cxx:185
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition
OwnershipPolicy.h:18
jet
Definition
JetCalibTools_PlotJESFactors.cxx:23
pool
Framework include files.
Definition
libname.h:15
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0