ATLAS Offline Software
CaloClusterContainerCnv_p2.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
10 
11 
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
22 
23  trans->clear (SG::VIEW_ELEMENTS);
24  trans->reserve(pers->m_vec.size());
28  pers->m_vec.size(),
29  momentStoreIterator) ||
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 
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
57  samplingState);
58  //Convert moment store
60  momentStoreIterator);
61  trans->push_back(transCluster);
62  }
63  //Convert TowerSegment
64  CaloTowerSeg seg;
66  trans->setTowerSeg (seg);
67 }
68 
69 
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());
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  }
99 }
100 
101 
102 
104  CaloCluster* trans,
105  ShowerLinkState& showerLinkState,
106  CellLinkState& cellLinkState,
107  MsgStream& log) const
108 {
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
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 
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;
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 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
CaloCluster::phi0
double phi0() const
Returns raw of cluster seed.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:1186
CaloCluster::m_momentStore
CaloClusterMomentStore m_momentStore
cluster moments
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:480
TruthTest.itp
itp
Definition: TruthTest.py:46
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
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CaloCluster::setTime
void setTime(double theTime)
Set cluster time.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:889
IAthenaBarCode::UNDEFINEDBARCODE
static const AthenaBarCode_t UNDEFINEDBARCODE
Definition: AthenaKernel/AthenaKernel/IAthenaBarCode.h:52
CaloClusterContainer_p2::CaloCluster_p::m_dataLink
ElementLinkInt_p2 m_dataLink
Definition: CaloClusterContainer_p2.h:46
CaloClusterContainerCnv_p2::m_momentContainerCnv
CaloClusterMomentContainerCnv_p1 m_momentContainerCnv
Definition: CaloClusterContainerCnv_p2.h:70
CaloClusterContainer_p2::CaloCluster_p::m_phi0
float m_phi0
Definition: CaloClusterContainer_p2.h:33
CaloClusterContainer::getTowerSeg
virtual const CaloTowerSeg & getTowerSeg() const
Retrieve tower segmentation.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:104
P4EEtaPhiMCnv_p1::transToPers
virtual void transToPers(const P4EEtaPhiM *transObj, P4EEtaPhiM_p1 *persObj, MsgStream &log) const override
Method creating the persistent representation P4EEtaPhiM_p1 from its transient representation P4EEtaP...
Definition: P4EEtaPhiMCnv_p1.cxx:38
ElementLinkCnv_p2::transToPers
void transToPers(State &state, const Link_t &trans, PersLink_t &pers, const SG::ThinningCache *cache, MsgStream &log) const
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
CaloClusterContainerCnv_p2::m_samplingDataContainerCnv
CaloSamplingDataContainerCnv_p1 m_samplingDataContainerCnv
Definition: CaloClusterContainerCnv_p2.h:71
CaloCluster::m_eta0
double m_eta0
Cluster seed
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:558
CaloClusterContainer_p2::CaloCluster_p::m_clusterSize
unsigned int m_clusterSize
Definition: CaloClusterContainer_p2.h:37
CaloClusterContainer
Storable container for CaloCluster.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:37
P4EEtaPhiM
Definition: P4EEtaPhiM.h:25
CaloClusterContainerCnv_p2::m_caloTowerSegCnv
CaloTowerSegCnv_p1 m_caloTowerSegCnv
Definition: CaloClusterContainerCnv_p2.h:68
CaloSamplingDataContainerCnv_p1::persToTrans
void persToTrans(const CaloSamplingDataContainer_p1 *pers, CaloSamplingData *trans, State &state) const
Definition: CaloSamplingDataContainerCnv_p1.cxx:29
skel.it
it
Definition: skel.GENtoEVGEN.py:423
CaloClusterContainerCnv_p2::persToTrans
virtual void persToTrans(const CaloClusterContainer_p2 *pers, CaloClusterContainer *trans, MsgStream &log) const override
Definition: CaloClusterContainerCnv_p2.cxx:12
CaloClusterContainer_p2::CaloCluster_p::m_samplingPattern
unsigned int m_samplingPattern
Definition: CaloClusterContainer_p2.h:35
CaloClusterContainer_p2::CaloCluster_p::m_barrel
bool m_barrel
Definition: CaloClusterContainer_p2.h:39
CaloClusterContainerCnv_p2::m_showerElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > > m_showerElementLinkCnv
Definition: CaloClusterContainerCnv_p2.h:72
CaloCluster::getBasicEnergy
virtual double getBasicEnergy() const
Access basic energy scale signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:876
CaloCluster::setDefaultSignalState
bool setDefaultSignalState(signalstate_t s)
Sets default signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:865
CaloClusterContainer_p2::m_vec
contType m_vec
Definition: CaloClusterContainer_p2.h:57
CaloTowerSegCnv_p1::persToTrans
void persToTrans(const CaloTowerSeg_p1 *, CaloTowerSeg *) const
Definition: CaloTowerSegCnv_p1.cxx:9
CaloClusterContainerCnv_p2::m_P4EEtaPhiMCnv
P4EEtaPhiMCnv_p1 m_P4EEtaPhiMCnv
Definition: CaloClusterContainerCnv_p2.h:69
CaloClusterNavigable::m_cellLink
cell_link_type m_cellLink
Local pointer to cell store.
Definition: CaloClusterNavigable.h:186
CaloCluster::m_dataLink
data_link_type m_dataLink
{
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:488
CaloCluster::m_phi0
double m_phi0
Cluster seed
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:560
CaloClusterContainer_p2::CaloCluster_p
Definition: CaloClusterContainer_p2.h:27
CaloClusterContainerCnv_p2::m_cellElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > > m_cellElementLinkCnv
Definition: CaloClusterContainerCnv_p2.h:73
CaloSamplingDataContainerCnv_p1::State
Definition: CaloSamplingDataContainerCnv_p1.h:18
CaloCluster::m_endcap
bool m_endcap
Flag is true if at least one cell in EMB.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:551
CaloCluster::m_dataStore
CaloSamplingData m_dataStore
{\ brief Cached Stores
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:479
CaloClusterContainerCnv_p2::transToPers
virtual void transToPers(const CaloClusterContainer *trans, CaloClusterContainer_p2 *pers, MsgStream &log) const override
Definition: CaloClusterContainerCnv_p2.cxx:70
CaloClusterContainer_p2::m_samplingDataContainer
CaloSamplingDataContainer_p1 m_samplingDataContainer
Definition: CaloClusterContainer_p2.h:58
CaloCluster
Principal data class for CaloCell clusters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
CaloClusterContainerCnv_p2.h
CaloTowerSegCnv_p1::transToPers
void transToPers(const CaloTowerSeg *, CaloTowerSeg_p1 *) const
Definition: CaloTowerSegCnv_p1.cxx:23
CaloCluster::m_samplingPattern
unsigned int m_samplingPattern
Sampling pattern.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:501
CaloClusterMomentContainerCnv_p1::persToTrans
void persToTrans(const CaloClusterMomentContainer_p1 *pers, CaloClusterMomentStore *trans, CaloClusterMomentContainer_p1::const_iterator &momentStoreIterator) const
Definition: CaloClusterMomentContainerCnv_p1.cxx:27
P4EEtaPhiMCnv_p1::persToTrans
virtual void persToTrans(const P4EEtaPhiM_p1 *persObj, P4EEtaPhiM *transObj, MsgStream &log) const override
Method creating the transient representation of P4EEtaPhiM from its persistent representation P4EEtaP...
Definition: P4EEtaPhiMCnv_p1.cxx:26
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DataVector::clear
void clear()
Erase all the elements in the collection.
ElementLinkCnv_p2::persToTrans
void persToTrans(State &state, const PersLink_t &pers, Link_t &trans, MsgStream &log) const
CaloClusterContainerCnv_p2::CellLinkState
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > >::State CellLinkState
Definition: CaloClusterContainerCnv_p2.h:53
DataPool.h
CaloClusterContainer_p2::m_linkNames
ElementLinkContNames_p2 m_linkNames
Definition: CaloClusterContainer_p2.h:63
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
CaloCluster::getTime
double getTime() const
Access cluster time.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:886
CaloClusterContainer_p2::CaloCluster_p::m_eta0
float m_eta0
Definition: CaloClusterContainer_p2.h:32
CaloClusterContainerCnv_p2::ShowerLinkState
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > >::State ShowerLinkState
Definition: CaloClusterContainerCnv_p2.h:51
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CaloSamplingDataContainerCnv_p1::transToPers
void transToPers(const CaloSamplingData *trans, CaloSamplingDataContainer_p1 *pers, MsgStream &log) const
Definition: CaloSamplingDataContainerCnv_p1.cxx:9
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
CaloClusterContainer_p2::CaloCluster_p::m_caloRecoStatus
unsigned int m_caloRecoStatus
Definition: CaloClusterContainer_p2.h:36
CaloClusterMomentContainerCnv_p1::transToPers
void transToPers(const CaloClusterMomentStore *trans, CaloClusterMomentContainer_p1 *pers) const
Definition: CaloClusterMomentContainerCnv_p1.cxx:14
CaloCompositeKineBase::m_status
CaloRecoStatus m_status
Calorimeter reconstruction status.
Definition: CaloCompositeKineBase.h:58
CaloClusterContainer_p2::iterator
contType::iterator iterator
Definition: CaloClusterContainer_p2.h:55
CaloClusterContainer_p2::CaloCluster_p::m_basicSignal
float m_basicSignal
Definition: CaloClusterContainer_p2.h:30
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloClusterContainer_p2::m_towerSeg
CaloTowerSeg_p1 m_towerSeg
Definition: CaloClusterContainer_p2.h:60
CaloClusterMomentContainerCnv_p1::setIterator
bool setIterator(const CaloClusterMomentContainer_p1 *pers, unsigned int ncluster, CaloClusterMomentContainer_p1::const_iterator &momentStoreIterator) const
Definition: CaloClusterMomentContainerCnv_p1.cxx:47
CaloCluster::getClusterSize
unsigned int getClusterSize() const
Get cluster size.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:895
CaloClusterContainer_p2::CaloCluster_p::m_endcap
bool m_endcap
Definition: CaloClusterContainer_p2.h:40
CaloClusterContainer_p2::m_momentContainer
CaloClusterMomentContainer_p1 m_momentContainer
Definition: CaloClusterContainer_p2.h:59
CaloSamplingDataContainerCnv_p1::setState
bool setState(const CaloSamplingDataContainer_p1 *pers, unsigned int ncluster, State &state) const
Definition: CaloSamplingDataContainerCnv_p1.cxx:59
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
CaloCluster::setClusterSize
void setClusterSize(unsigned int theClusterSize)
Set cluster size.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:892
DataPool
a typed memory pool that saves time spent allocation small object. This is typically used by containe...
Definition: DataPool.h:47
P4SignalState::CALIBRATED
@ CALIBRATED
Definition: ISignalState.h:31
CaloClusterContainer_p2::CaloCluster_p::m_cellLink
ElementLinkInt_p2 m_cellLink
Definition: CaloClusterContainer_p2.h:47
CaloClusterContainer_p2
Definition: CaloClusterContainer_p2.h:20
CaloRecoStatus::getStatusWord
virtual const store_type & getStatusWord() const
retrieve the entire status word
Definition: CaloRecoStatus.h:112
CaloCluster::eta0
double eta0() const
Returns raw of cluster seed.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:1180
CaloTowerSeg
Data object stores CaloTower segmentation.
Definition: CaloTowerSeg.h:37
CaloClusterContainer::setTowerSeg
virtual void setTowerSeg(const CaloTowerSeg &towerSeg)
Set tower segmentation into CaloClusterContainer.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:101
CaloCluster::setBasicEnergy
virtual void setBasicEnergy(double theEnergy)
Set basic energy scale signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:883
CaloClusterContainer_p2::CaloCluster_p::m_P4EEtaPhiM
P4EEtaPhiM_p1 m_P4EEtaPhiM
Definition: CaloClusterContainer_p2.h:43
CaloClusterContainer_p2::const_iterator
contType::const_iterator const_iterator
Definition: CaloClusterContainer_p2.h:54
CaloClusterSignalState.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
CaloCluster::m_barrel
bool m_barrel
Flag is true if at least one cell in EMB.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:549
CaloRecoStatus
reconstruction status indicator
Definition: CaloRecoStatus.h:12
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloClusterContainer_p2::CaloCluster_p::m_time
float m_time
Definition: CaloClusterContainer_p2.h:31