ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloCnv
CaloTPCnv
src
CaloClusterContainerCnv_p2.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
CaloTPCnv/CaloClusterContainerCnv_p2.h
"
6
#include "
CaloUtils/CaloClusterSignalState.h
"
7
8
#include "
AthAllocators/DataPool.h
"
9
#include "
AthenaKernel/errorcheck.h
"
10
11
12
void
CaloClusterContainerCnv_p2::persToTrans
(
const
CaloClusterContainer_p2
* pers,
13
CaloClusterContainer
*
trans
,
14
MsgStream &log)
const
15
{
16
// reset element link converters, and provide container name lookup table
17
ShowerLinkState
showerLinkState (pers->
m_linkNames
);
18
CellLinkState
cellLinkState (pers->
m_linkNames
);
19
20
// Use data pool for clusters to avoid calling constructor for each event
21
DataPool<CaloCluster>
clusters;
22
23
trans
->clear (
SG::VIEW_ELEMENTS
);
24
trans
->reserve(pers->
m_vec
.size());
25
CaloClusterMomentContainer_p1::const_iterator
momentStoreIterator;
26
CaloSamplingDataContainerCnv_p1::State
samplingState;
27
if
( !
m_momentContainerCnv
.setIterator(&pers->
m_momentContainer
,
28
pers->
m_vec
.size(),
29
momentStoreIterator) ||
30
!
m_samplingDataContainerCnv
.setState(&pers->
m_samplingDataContainer
,
31
pers->
m_vec
.size(),
32
samplingState))
33
{
34
REPORT_MESSAGE_WITH_CONTEXT
(MSG::WARNING,
"CaloClusterContainerCnv_p2"
)
35
<<
"Not converting CaloClusterContainer."
;
36
return
;
37
}
38
39
CaloClusterContainer_p2::const_iterator
itp=pers->
m_vec
.begin();
40
CaloClusterContainer_p2::const_iterator
itp_e=pers->
m_vec
.end();
41
for
(;itp!=itp_e;++itp) {
42
43
// Get next ptr for next cluster
44
CaloCluster
* transCluster = clusters.nextElementPtr();
45
46
//The var-type pattern is stored in CaloSamplingDataContainer_p1 (once for the entire cluster container)
47
//transCluster->m_dataStore.m_varTypePattern=pers->m_samplingDataContainer.m_varTypePattern;
48
//... not any more...
49
50
//Convert Cluster-quantities
51
persToTrans
(&(*itp),transCluster,
52
showerLinkState,
53
cellLinkState,
54
log);
55
//Convert sampling data store
56
m_samplingDataContainerCnv
.persToTrans(&(pers->
m_samplingDataContainer
),&(transCluster->
m_dataStore
),
57
samplingState);
58
//Convert moment store
59
m_momentContainerCnv
.persToTrans(&(pers->
m_momentContainer
),&(transCluster->
m_momentStore
),
60
momentStoreIterator);
61
trans
->push_back(transCluster);
62
}
63
//Convert TowerSegment
64
CaloTowerSeg
seg;
65
m_caloTowerSegCnv
.persToTrans(&(pers->
m_towerSeg
),&seg);
66
trans
->setTowerSeg (seg);
67
}
68
69
70
void
CaloClusterContainerCnv_p2::transToPers
(
const
CaloClusterContainer
*
trans
,
71
CaloClusterContainer_p2
* pers,
72
MsgStream &log)
const
73
{
74
// reset element link converters, and provide container name lookup table
75
ShowerLinkState
showerLinkState (pers->
m_linkNames
);
76
CellLinkState
cellLinkState (pers->
m_linkNames
);
77
78
pers->
m_vec
.resize(
trans
->size());
79
CaloClusterContainer_p2::iterator
itp=pers->
m_vec
.begin();
80
CaloClusterContainer::const_iterator
it=
trans
->begin();
81
CaloClusterContainer::const_iterator
it_e=
trans
->end();
82
if
(it!=it_e) {
83
//The var-type pattern is stored in CaloSamplingDataContainer_p1 (once for the entire container)
84
//pers->m_samplingDataContainer.m_varTypePattern=(*it)->m_dataStore.m_varTypePattern;
85
//... not any more...
86
87
//The number of moments is also the same for the entire container
88
pers->
m_momentContainer
.
m_nMoments
=(*it)->m_momentStore.size();
89
}
90
for
(;it!=it_e;++it,++itp) {
91
transToPers
(*it,&(*itp),
92
showerLinkState,
93
cellLinkState,
94
log);
95
m_samplingDataContainerCnv
.transToPers(&((*it)->m_dataStore),&(pers->
m_samplingDataContainer
),log);
96
m_momentContainerCnv
.transToPers(&((*it)->m_momentStore),&(pers->
m_momentContainer
));
97
}
98
m_caloTowerSegCnv
.transToPers(&
trans
->getTowerSeg(),&(pers->
m_towerSeg
));
99
}
100
101
102
103
void
CaloClusterContainerCnv_p2::persToTrans
(
const
CaloClusterContainer_p2::CaloCluster_p
* pers,
104
CaloCluster
*
trans
,
105
ShowerLinkState
& showerLinkState,
106
CellLinkState
& cellLinkState,
107
MsgStream& log)
const
108
{
109
trans
->setDefaultSignalState (
P4SignalState::CALIBRATED
);
110
trans
->setBasicEnergy (pers->
m_basicSignal
);
111
trans
->setTime (pers->
m_time
);
112
trans
->m_samplingPattern=pers->
m_samplingPattern
;
113
trans
->m_barrel=pers->
m_barrel
;
114
trans
->m_endcap=pers->
m_endcap
;
115
trans
->m_eta0=pers->
m_eta0
;
116
trans
->m_phi0=pers->
m_phi0
;
117
trans
->m_status =
CaloRecoStatus
(pers->
m_caloRecoStatus
);
118
trans
->setClusterSize (pers->
m_clusterSize
);
119
120
//trans->m_barrel=pers->m_samplingPattern & 0x1ff00f; //That's the OR of all barrel-bits
121
//trans->m_endcap=pers->m_samplingPattern & 0xe00ff0; //That's the OR of all endcap-bits
122
123
//Convert base class and element links
124
m_P4EEtaPhiMCnv
.persToTrans(&pers->
m_P4EEtaPhiM
,
static_cast<
P4EEtaPhiM
*
>
(
trans
),log);
125
m_showerElementLinkCnv
.persToTrans(showerLinkState, pers->
m_dataLink
,
trans
->m_dataLink,log);
126
m_cellElementLinkCnv
.persToTrans(cellLinkState, pers->
m_cellLink
,
trans
->m_cellLink,log);
127
trans
->setAthenaBarCode (
IAthenaBarCode::UNDEFINEDBARCODE
);
128
129
}
130
131
132
133
134
void
CaloClusterContainerCnv_p2::transToPers
(
const
CaloCluster
*
trans
,
135
CaloClusterContainer_p2::CaloCluster_p
* pers,
136
ShowerLinkState
& showerLinkState,
137
CellLinkState
& cellLinkState,
138
MsgStream& log)
const
139
{
140
pers->
m_basicSignal
=
trans
->getBasicEnergy();
141
pers->
m_time
=
trans
->getTime();
142
pers->
m_samplingPattern
=
trans
->m_samplingPattern;
143
pers->
m_barrel
=
trans
->m_barrel;
144
pers->
m_endcap
=
trans
->m_endcap;
145
pers->
m_eta0
=
trans
->eta0();
146
pers->
m_phi0
=
trans
->phi0();
147
pers->
m_caloRecoStatus
=
trans
->m_status.getStatusWord();
148
pers->
m_clusterSize
=
trans
->getClusterSize();
149
150
//Convert base class and element links
151
P4EEtaPhiM
tmp = *
trans
;
152
m_P4EEtaPhiMCnv
.transToPers(&tmp,&pers->
m_P4EEtaPhiM
,log);
153
m_showerElementLinkCnv
.transToPers(showerLinkState,
trans
->m_dataLink, pers->
m_dataLink
,log);
154
m_cellElementLinkCnv
.transToPers(cellLinkState,
trans
->m_cellLink, pers->
m_cellLink
,log);
155
}
CaloClusterContainerCnv_p2.h
CaloClusterSignalState.h
errorcheck.h
Helpers for checking error return status codes and reporting errors.
REPORT_MESSAGE_WITH_CONTEXT
#define REPORT_MESSAGE_WITH_CONTEXT(LVL, CONTEXT_NAME)
Report a message, with an explicitly specified context name.
Definition
Control/AthenaKernel/AthenaKernel/errorcheck.h:345
DataPool.h
CaloClusterContainerCnv_p2::CellLinkState
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > >::State CellLinkState
Definition
CaloClusterContainerCnv_p2.h:53
CaloClusterContainerCnv_p2::m_cellElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > > m_cellElementLinkCnv
Definition
CaloClusterContainerCnv_p2.h:73
CaloClusterContainerCnv_p2::m_P4EEtaPhiMCnv
P4EEtaPhiMCnv_p1 m_P4EEtaPhiMCnv
Definition
CaloClusterContainerCnv_p2.h:69
CaloClusterContainerCnv_p2::ShowerLinkState
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > >::State ShowerLinkState
Definition
CaloClusterContainerCnv_p2.h:51
CaloClusterContainerCnv_p2::transToPers
virtual void transToPers(const CaloClusterContainer *trans, CaloClusterContainer_p2 *pers, MsgStream &log) const override
Definition
CaloClusterContainerCnv_p2.cxx:70
CaloClusterContainerCnv_p2::m_samplingDataContainerCnv
CaloSamplingDataContainerCnv_p1 m_samplingDataContainerCnv
Definition
CaloClusterContainerCnv_p2.h:71
CaloClusterContainerCnv_p2::persToTrans
virtual void persToTrans(const CaloClusterContainer_p2 *pers, CaloClusterContainer *trans, MsgStream &log) const override
Definition
CaloClusterContainerCnv_p2.cxx:12
CaloClusterContainerCnv_p2::m_showerElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > > m_showerElementLinkCnv
Definition
CaloClusterContainerCnv_p2.h:72
CaloClusterContainerCnv_p2::m_caloTowerSegCnv
CaloTowerSegCnv_p1 m_caloTowerSegCnv
Definition
CaloClusterContainerCnv_p2.h:68
CaloClusterContainerCnv_p2::m_momentContainerCnv
CaloClusterMomentContainerCnv_p1 m_momentContainerCnv
Definition
CaloClusterContainerCnv_p2.h:70
CaloClusterContainer_p2
Definition
CaloClusterContainer_p2.h:20
CaloClusterContainer_p2::iterator
contType::iterator iterator
Definition
CaloClusterContainer_p2.h:55
CaloClusterContainer_p2::const_iterator
contType::const_iterator const_iterator
Definition
CaloClusterContainer_p2.h:54
CaloClusterContainer_p2::m_linkNames
ElementLinkContNames_p2 m_linkNames
Definition
CaloClusterContainer_p2.h:63
CaloClusterContainer_p2::m_towerSeg
CaloTowerSeg_p1 m_towerSeg
Definition
CaloClusterContainer_p2.h:60
CaloClusterContainer_p2::m_vec
contType m_vec
Definition
CaloClusterContainer_p2.h:57
CaloClusterContainer_p2::m_samplingDataContainer
CaloSamplingDataContainer_p1 m_samplingDataContainer
Definition
CaloClusterContainer_p2.h:58
CaloClusterContainer_p2::m_momentContainer
CaloClusterMomentContainer_p1 m_momentContainer
Definition
CaloClusterContainer_p2.h:59
CaloClusterContainer
Storable container for CaloCluster.
Definition
Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:37
CaloClusterMomentContainer_p1::m_nMoments
unsigned short m_nMoments
Definition
CaloClusterMomentContainer_p1.h:19
CaloClusterMomentContainer_p1::const_iterator
std::vector< ClusterMoment_p >::const_iterator const_iterator
Definition
CaloClusterMomentContainer_p1.h:20
CaloCluster
Principal data class for CaloCell clusters.
Definition
Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
CaloCluster::m_momentStore
CaloClusterMomentStore m_momentStore
cluster moments
Definition
Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:480
CaloCluster::m_dataStore
CaloSamplingData m_dataStore
{\ brief Cached Stores
Definition
Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:479
CaloRecoStatus
reconstruction status indicator
Definition
CaloRecoStatus.h:12
CaloTowerSeg
Data object stores CaloTower segmentation.
Definition
CaloTowerSeg.h:37
DataPool
a typed memory pool that saves time spent allocation small object.
Definition
DataPool.h:63
DataVector< CaloCluster >::const_iterator
DataModel_detail::const_iterator< DataVector > const_iterator
Definition
DataVector.h:861
IAthenaBarCode::UNDEFINEDBARCODE
static const AthenaBarCode_t UNDEFINEDBARCODE
Definition
AthenaKernel/AthenaKernel/IAthenaBarCode.h:52
P4EEtaPhiM
Definition
P4EEtaPhiM.h:25
trans
TH1F * trans(TH1F *h, bool t=false)
Definition
comparitor.cxx:199
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition
OwnershipPolicy.h:18
CaloClusterContainer_p2::CaloCluster_p
Definition
CaloClusterContainer_p2.h:27
CaloClusterContainer_p2::CaloCluster_p::m_endcap
bool m_endcap
Definition
CaloClusterContainer_p2.h:40
CaloClusterContainer_p2::CaloCluster_p::m_phi0
float m_phi0
Definition
CaloClusterContainer_p2.h:33
CaloClusterContainer_p2::CaloCluster_p::m_P4EEtaPhiM
P4EEtaPhiM_p1 m_P4EEtaPhiM
Definition
CaloClusterContainer_p2.h:43
CaloClusterContainer_p2::CaloCluster_p::m_caloRecoStatus
unsigned int m_caloRecoStatus
Definition
CaloClusterContainer_p2.h:36
CaloClusterContainer_p2::CaloCluster_p::m_samplingPattern
unsigned int m_samplingPattern
Definition
CaloClusterContainer_p2.h:35
CaloClusterContainer_p2::CaloCluster_p::m_cellLink
ElementLinkInt_p2 m_cellLink
Definition
CaloClusterContainer_p2.h:47
CaloClusterContainer_p2::CaloCluster_p::m_eta0
float m_eta0
Definition
CaloClusterContainer_p2.h:32
CaloClusterContainer_p2::CaloCluster_p::m_barrel
bool m_barrel
Definition
CaloClusterContainer_p2.h:39
CaloClusterContainer_p2::CaloCluster_p::m_time
float m_time
Definition
CaloClusterContainer_p2.h:31
CaloClusterContainer_p2::CaloCluster_p::m_dataLink
ElementLinkInt_p2 m_dataLink
Definition
CaloClusterContainer_p2.h:46
CaloClusterContainer_p2::CaloCluster_p::m_clusterSize
unsigned int m_clusterSize
Definition
CaloClusterContainer_p2.h:37
CaloClusterContainer_p2::CaloCluster_p::m_basicSignal
float m_basicSignal
Definition
CaloClusterContainer_p2.h:30
CaloSamplingDataContainerCnv_p1::State
Definition
CaloSamplingDataContainerCnv_p1.h:18
P4SignalState::CALIBRATED
@ CALIBRATED
Definition
ISignalState.h:31
Generated on
for ATLAS Offline Software by
1.17.0