ATLAS Offline Software
CaloClusterContainerCnv_p4.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
8 
12 //#include "CaloEvent/CaloSampling.h"
15 
16 
17 namespace {
18 
19 inline
20 bool testbit (unsigned int x, unsigned int i)
21 {
22  return (x & (1U << i)) != 0;
23 }
24 
25 } // anonymous namespace
26 
27 
29  CaloClusterContainer* trans,
30  MsgStream &log) const
31 {
32  if (log.level() <= MSG::DEBUG) log<< MSG::DEBUG << "Reading CaloClusterContainerCnv_p4" << endmsg;
33 
34  // reset element link converters, and provide container name lookup table
35  ShowerLinkState showerLinkState (pers->m_linkNames);
36  CellLinkState cellLinkState (pers->m_linkNames);
37 
38  // Use data pool for clusters to avoid calling constructor for each event
40 
41  trans->clear (SG::VIEW_ELEMENTS);
42  trans->reserve(pers->m_vec.size());
43 
46 
47  std::vector<float> temp_Moments;
48  Compressor A;
49  A.expandToFloat( pers->m_momentContainer.m_Mvalue, temp_Moments); // unpacks moments
50 
51  std::vector<float>::const_iterator i_mom = temp_Moments.begin();
52  std::vector<float>::const_iterator i_mom_e = temp_Moments.end();
53 
54  const std::vector<unsigned short>& keys = pers->m_momentContainer.m_Mkey;
55  unsigned int nkeys = keys.size();
56 
57  unsigned int c1=0;
58 
59  std::vector<float> tmp_badChannelEta;
60  std::vector<float> tmp_badChannelPhi;
61  Compressor B;
62  B.expandToFloat(pers->m_badEtaList,tmp_badChannelEta);
63  B.expandToFloat(pers->m_badPhiList,tmp_badChannelPhi);
64 
65  std::vector<float> tmp_rawE;
66  Compressor C;
67  C.expandToFloat(pers->m_rawEEtaPhiM,tmp_rawE);
68  std::vector<float>::const_iterator iraw1 = tmp_rawE.begin();
69  std::vector<float>::const_iterator iraw2 = tmp_rawE.end();
70 
71  std::vector<short>::const_iterator ibad1 = pers->m_badClusIndexList.begin();
72  std::vector<short>::const_iterator ibad2 = pers->m_badClusIndexList.end();
73  int nbad=0;
74 
75  bool mom_overrun_err = false;
76  bool store_overrun_err = false;
77  bool raw_overrun_err = false;
78  size_t dataStore_size = pers->m_dataStore.size();
79 
80  bool fillBad=true;
81  if (tmp_badChannelEta.size() != pers->m_badClusIndexList.size() ||
82  tmp_badChannelPhi.size() != pers->m_badClusIndexList.size() ||
83  pers->m_badLayerStatusList.size() != pers->m_badClusIndexList.size()) {
84  log << MSG::WARNING << " problem to decode bad channel information, not filled..." << endmsg;
85  fillBad=false;
86  }
87 
88  short index=0;
89  for(;itp!=itp_e;++itp) {
90  index++;
91 
92  CaloCluster* transCluster = clusters.nextElementPtr();// Get next ptr for next cluster
93  persToTrans(&(*itp),transCluster,
94  showerLinkState,
95  cellLinkState,
96  log); //Convert Cluster-quantities
97 
98  CaloSamplingData *trDS =&(transCluster->m_dataStore);
99 
100  trDS->m_varTypePattern = pers->m_varTypePattern;
101  int nVar=trDS->getNumberOfVariableTypes();
102  int nSamplings=trDS->getNumberOfSamplings();
103 
104  typedef CaloSamplingData::variable_key_type vartype;
105  typedef CaloSamplingData::sampling_key_type samptype;
106 
107  for (int i=0;i<nVar;++i) {// here loops to read them in ...
108  if (testbit (trDS->m_varTypePattern, i)) {
109 
110  // can be optimized: no decoding for each variable.
111  for (int j=0;j<nSamplings; ++j){
112 
113  if ( testbit(transCluster->m_samplingPattern, j) ){
114  float val;
115  if (c1 < dataStore_size)
116  val = pers->m_dataStore[c1++];
117  else {
118  val = 0;
119  if (!store_overrun_err) {
120  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
121  "CaloClusterContainerCnv_p4")
122  << "Corrupted data: data store array overrun "
123  << pers->m_vec.size() << " clusters "
124  << nkeys << " moment keys "
125  << temp_Moments.size() << " total moments.";
126  store_overrun_err = true;
127  }
128  }
129  trDS->storeData(static_cast<vartype>(i),
130  static_cast<samptype>(j),
131  val);
132  }
133  else{
134 
135  trDS->removeVariable(static_cast<vartype>(i),
136  static_cast<samptype>(j));
137  //std::cout<<"a:0"<<"\t";
138  }
139  }
140  // std::cout<<std::endl;
141  }
142  else
143  trDS->removeVariable(static_cast<vartype>(i));
144  }
145 
146  transCluster->m_barrel= (bool)(0x001ff00f & transCluster->m_samplingPattern);
147  transCluster->m_endcap= (bool)(0x00e00ff0 & transCluster->m_samplingPattern);
148  // std::cout<<" <<< Read"<<std::endl;
149 
150 
151  //Convert moment store
153  for (unsigned short i=0;i<nkeys;++i) {
154  float val;
155  if (i_mom == i_mom_e) {
156  val = 0;
157  if (!mom_overrun_err) {
158  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
159  "CaloClusterContainerCnv_p4")
160  << "Corrupted data: moment array overrun "
161  << pers->m_vec.size() << " clusters "
162  << nkeys << " moment keys "
163  << temp_Moments.size() << " total moments.";
164  mom_overrun_err = true;
165  }
166  }
167  else {
168  val = *i_mom;
169  ++i_mom;
170  }
171  transStore.insert (transStore.end(), CaloClusterMomentStore::moment_store::value_type( keys[i], val ) );
172  }
173  transCluster->m_momentStore.setMomentStore (std::move (transStore));
174 
175  // fill bad channel information
176  transCluster->resetBadChannel();
177  if (fillBad){
178  while (ibad1 != ibad2 && (*ibad1) ==index) {
179  float eta = tmp_badChannelEta[nbad] + transCluster->eta();
180  float phi = CaloPhiRange::fix(tmp_badChannelPhi[nbad] + transCluster->phi());
181  short status=pers->m_badLayerStatusList[nbad];
183  CaloBadChannel flag = CaloBadChannel( ((status>>8) & 0xff) );
185  // std::cout << " add bad channel data " << transCluster << " " << eta << " " << phi << " " << layer << " " << status << " " << flag.packedData() << std::endl;
186  transCluster->addBadChannel(data);
187  ++ibad1;
188  ++nbad;
189  }
190  }
191 
192 // fill raw E,eta,phi,M
193  if (iraw1 != iraw2) {
194  if (std::fabs(transCluster->e())>0.1) {
195  transCluster->m_rawE = (*iraw1) * transCluster->e();
196  }
197  else
198  transCluster->m_rawE = (*iraw1);
199  ++iraw1;
200  }
201  if (iraw1 != iraw2) {
202  transCluster->m_rawEta = (*iraw1) + transCluster->eta();
203  ++iraw1;
204  }
205  if (iraw1 != iraw2) {
206  transCluster->m_rawPhi = CaloPhiRange::fix((*iraw1)+transCluster->phi());
207  ++iraw1;
208  }
209  if (iraw1 == iraw2 && !raw_overrun_err) {
210  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
211  "CaloClusterContainerCnv_p4")
212  << "Corrupted data: raw array overrun "
213  << pers->m_vec.size() << " clusters "
214  << tmp_rawE.size() << " raw values.";
215  raw_overrun_err = true;
216  }
217  if (iraw1 != iraw2) {
218  transCluster->m_rawM = (*iraw1);
219  ++iraw1;
220  }
221  // std::cout << " perstotrans rawE/eta/phi/M " << transCluster->m_rawE << " " << transCluster->m_rawEta << " " <<
222  // transCluster->m_rawPhi << " " << transCluster->m_rawM << std::endl;
223 
224  // no alt calib information available in p4 persistent
225  transCluster->m_altE=0.;
226  transCluster->m_altEta=0.;
227  transCluster->m_altPhi=0.;
228  transCluster->m_altM=0.;
229 
230 
231  trans->push_back(transCluster);
232  }
233 
234  if (i_mom != i_mom_e && !mom_overrun_err) {
235  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
236  "CaloClusterContainerCnv_p4")
237  << "Corrupted data: not all moments read "
238  << pers->m_vec.size() << " clusters "
239  << nkeys << " moment keys "
240  << temp_Moments.size() << " total moments "
241  << i_mom-temp_Moments.begin() << " read.";
242  }
243 
244  if (c1 != dataStore_size && !store_overrun_err) {
245  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
246  "CaloClusterContainerCnv_p4")
247  << "Corrupted data: not all data store members read "
248  << dataStore_size << " elements "
249  << c1 << " read.";
250  }
251 
252  if (iraw1 != iraw2 && !raw_overrun_err) {
253  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
254  "CaloClusterContainerCnv_p4")
255  << "Corrupted data: not all raw values read "
256  << pers->m_vec.size() << " clusters "
257  << tmp_rawE.size() << " raw values "
258  << iraw1-tmp_rawE.begin() << " read.";
259  }
260 
261  if (ibad1 != ibad2) {
262  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
263  "CaloClusterContainerCnv_p4")
264  << "Corrupted data: not all bad data read "
265  << pers->m_badClusIndexList.size() << " bad values "
266  << nbad << " read.";
267  }
268 
269  //Convert TowerSegment
270  CaloTowerSeg seg;
272  trans->setTowerSeg (seg);
273 }
274 
275 
276 
279  MsgStream &log) const
280 {
281  if (log.level() <= MSG::DEBUG) log<< MSG::DEBUG << "Writing CaloClusterContainerCnv_p4" << endmsg;
282 
283 
284  // reset element link converters, and provide container name lookup table
285  ShowerLinkState showerLinkState (pers->m_linkNames);
286  CellLinkState cellLinkState (pers->m_linkNames);
287 
288  pers->m_vec.resize(trans->size());
292 
293  pers->m_badClusIndexList.clear();
294  pers->m_badLayerStatusList.clear();
295  pers->m_badEtaList.clear();
296  pers->m_badPhiList.clear();
297 
298  pers->m_rawEEtaPhiM.clear();
299 
300  // Set varTypePattern to the OR of the patterns of all clusters.
301  // (For samplings.)
302  // Trigger can make cluster collections with multiple pattern masks!
303  //
304  // Also pick up moment keys here. Trigger can make clusters with no
305  // stored moments, so we need to look until we find one that isn't empty.
306  // Store the moment keys and their number.
307  pers->m_varTypePattern=0;
308  pers->m_momentContainer.m_Mkey.clear();
309  pers->m_momentContainer.m_nMoments = 0;
310  for (CaloClusterContainer::const_iterator it2 = it; it2 != it_e; ++it2)
311  {
312  const CaloCluster& cl = **it2;
313  const CaloClusterMomentStore& ms = cl.m_momentStore;
314  pers->m_varTypePattern |= cl.m_dataStore.m_varTypePattern;
315 
316  if (pers->m_momentContainer.m_nMoments == 0 && ms.size() != 0) {
318  int nMom=ms.size();
319  pers->m_momentContainer.m_nMoments = nMom;
320  for (int w=0; w<nMom; w++){ // here stores moment keys per container not cluster
321  pers->m_momentContainer.m_Mkey.push_back(mit.getMomentType());
322  ++mit;
323  }
324  }
325  else if (ms.size() > 0 && pers->m_momentContainer.m_nMoments != ms.size())
326  {
327  REPORT_MESSAGE_WITH_CONTEXT(MSG::WARNING,
328  "CaloClusterContainerCnv_p4")
329  << "Inconsistent number of cluster moments: cluster "
330  << it2 - trans->begin() << " of " << trans->size()
331  << " have " << ms.size()
332  << " expect " << pers->m_momentContainer.m_nMoments;
333  }
334 
335  }
336 
337  std::vector<float> temp_Moments;
338  temp_Moments.reserve (trans->size() * pers->m_momentContainer.m_nMoments);
339  std::vector<float> tmp_badChannelEta;
340  std::vector<float> tmp_badChannelPhi;
341 
342  std::vector<float> tmp_rawE;
343  tmp_rawE.reserve(4*trans->size());
344 
345 
346  short index=0;
347  for(;it!=it_e;++it,++itp) { // LOOP over clusters
348  const CaloCluster& cl = **it;
349  index++;
350  transToPers(&cl,&(*itp),
351  showerLinkState,
352  cellLinkState,
353  log); // tP of CaloCluster to CaloCluster_p
354 
355  const CaloSamplingData* trDS=&cl.m_dataStore; //transient
356  int nVar=trDS->getNumberOfVariableTypes();
357  int nSamplings=trDS->getNumberOfSamplings();
358 // std::cout<<"vars:"<<nVar<<"\t samplings:"<<nSamplings<<std::endl;
359 // std::cout<<"b:"<<(*it)->m_barrel<<"\te:"<<(*it)->m_endcap<<std::endl;
360 // std::cout<<"sPattern: "<<(*it)->m_samplingPattern<<"\tgB:"<<(0x001ff00f & (*it)->m_samplingPattern) <<"\tgEC:"<< (0x00e00ff0 & (*it)->m_samplingPattern) <<std::endl;
361 
362  typedef CaloSamplingData::variable_key_type vartype;
363  typedef CaloSamplingData::sampling_key_type samptype;
364 
365  for (int i=0;i<nVar;++i) {
366  if (testbit (pers->m_varTypePattern, i)) {
367  // We're writing this pattern. Was it in the cluster?
368  if (testbit (trDS->m_varTypePattern, i)) {
369  // Yes, store it.
370  for (int j=0;j<nSamplings; ++j)
371  if ( testbit(cl.m_samplingPattern, j)) {
372  pers->m_dataStore.push_back(trDS->retrieveData
373  (static_cast<vartype>(i),
374  static_cast<samptype>(j)));
375  }
376  }
377  else {
378  // Not in the cluster. Store 0's.
379  for (int j=0;j<nSamplings; ++j)
380  if ( testbit(cl.m_samplingPattern, j))
381  pers->m_dataStore.push_back(0);
382  }
383  }
384  else{
385  // We're not writing. Check that nothing was stored...
386  for (int j=0;j<nSamplings; ++j)
387  if ( testbit(cl.m_samplingPattern, j))
388  if(trDS->retrieveData(static_cast<vartype>(i),
389  static_cast<samptype>(j)))
390  if (log.level() <= MSG::DEBUG) log<< MSG::DEBUG<<"BIG PROBLEM ! not stored and has value:"
391  <<trDS->retrieveData(static_cast<vartype>(i),
392  static_cast<samptype>(j))
393  <<"\t var: "<<i
394  <<"\t sampling: "<<j<<endmsg;
395  }
396  }
397 
398 
399  //CaloClusterMomentStore::moment_iterator itm=cl.m_momentStore.begin();
400  //CaloClusterMomentStore::moment_iterator itm_e=cl.m_momentStore.end();
401 
402  std::vector<unsigned short>::const_iterator itk =
403  pers->m_momentContainer.m_Mkey.begin();
404  std::vector<unsigned short>::const_iterator itk_e =
405  pers->m_momentContainer.m_Mkey.end();
407  cl.m_momentStore.begin();
409  cl.m_momentStore.end();
410  for (; itk != itk_e; ++itk) {
411  float val = 0;
412  if (itm != itm_e && itm.getMomentType() == *itk) {
413  val = (*itm).getValue();
414  ++itm;
415  }
416  else {
417  itm = cl.m_momentStore.find
418  (static_cast<CaloClusterMomentStore::moment_type> (*itk));
419  if (itm != itm_e) {
420  val = (*itm).getValue();
421  ++itm;
422  }
423  }
424  temp_Moments.push_back(val);
425  }
426 
427 // bad channel info
428  const CaloCluster::badChannelList* badlist = cl.getBadChannel();
429  // std::cout << " transtopers: bad channel size " << badlist->size() << std::endl;
430  for (const CaloClusterBadChannelData& bad : *badlist) {
431  pers->m_badClusIndexList.push_back(index);
432  float etac = bad.getEta()-(cl.eta());
433  float phic = CaloPhiRange::diff(bad.getPhi(),cl.phi());
434  CaloSampling::CaloSample sampl = bad.getLayer();
435  CaloBadChannel flag = bad.getFlag();
436  short status = ((sampl & 0xff) | ((flag.packedData() & 0xff) << 8));
437  tmp_badChannelEta.push_back(etac);
438  tmp_badChannelPhi.push_back(phic);
439  pers->m_badLayerStatusList.push_back(status);
440  }
441 
442 // raw E-eta-phi-M
443  // std::cout << "transtopers: rawE/eta/phi/M " << (*it)->m_rawE << " " << (*it)->m_rawEta << " " << (*it)->m_rawPhi << " " << (*it)->m_rawM << std::endl;
444  double e = cl.e();
445  if (std::fabs(e)>0.1) {
446  float eratio = cl.m_rawE / e;
447  tmp_rawE.push_back( eratio);
448  }
449  else
450  tmp_rawE.push_back( cl.m_rawE);
451  tmp_rawE.push_back( cl.m_rawEta-cl.eta());
452  float dphi = CaloPhiRange::diff ( cl.m_rawPhi, cl.phi());
453  tmp_rawE.push_back( dphi);
454  tmp_rawE.push_back( cl.m_rawM);
455  } // end of loop over clusters
456 
457  Compressor A;
458  A.setNrBits(16);
459  // A.setIgnoreSign();
460  A.reduce(temp_Moments,pers->m_momentContainer.m_Mvalue); // packs moments
461 
462  Compressor B;
463  B.setNrBits(16);
464  B.reduce(tmp_badChannelEta,pers->m_badEtaList);
465  B.reduce(tmp_badChannelPhi,pers->m_badPhiList);
466 
467  Compressor C;
468  C.setNrBits(16);
469  C.reduce(tmp_rawE,pers->m_rawEEtaPhiM);
470 
472 }
473 
474 
475 
477  CaloCluster* trans,
478  ShowerLinkState& showerLinkState,
479  CellLinkState& cellLinkState,
480  MsgStream& log) const
481 {
483  trans->setBasicEnergy (pers->m_basicSignal);
484  trans->setTime (pers->m_time);
485  trans->m_samplingPattern=pers->m_samplingPattern;
486  trans->m_eta0=pers->m_eta0;
487  trans->m_phi0=pers->m_phi0;
488  trans->m_status = CaloRecoStatus(pers->m_caloRecoStatus);
489  trans->setClusterSize (pers->m_clusterSize);
490 
491  //Convert base class and element links
493  m_showerElementLinkCnv.persToTrans(showerLinkState, pers->m_dataLink, trans->m_dataLink,log);
494  m_cellElementLinkCnv.persToTrans(cellLinkState, pers->m_cellLink, trans->m_cellLink,log);
495  trans->setAthenaBarCode (IAthenaBarCode::UNDEFINEDBARCODE);
496 
497 }
498 
499 
502  ShowerLinkState& showerLinkState,
503  CellLinkState& cellLinkState,
504  MsgStream& log) const
505 {
506  pers->m_basicSignal=trans->getBasicEnergy();
507  pers->m_time=trans->getTime();
508  pers->m_samplingPattern=trans->m_samplingPattern;
509  pers->m_eta0=trans->eta0();
510  pers->m_phi0=trans->phi0();
511  pers->m_caloRecoStatus=trans->m_status.getStatusWord();
512  pers->m_clusterSize=trans->getClusterSize();
513 
514  //Convert base class and element links
515  P4EEtaPhiM tmp = *trans;
517  m_showerElementLinkCnv.transToPers(showerLinkState, trans->m_dataLink, pers->m_dataLink,log);
518  m_cellElementLinkCnv.transToPers(cellLinkState, trans->m_cellLink, pers->m_cellLink,log);
519 }
DataVector::reserve
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
bad
@ bad
Definition: SUSYToolsTester.cxx:95
CaloClusterContainer_p4::CaloCluster_p::m_cellLink
ElementLinkInt_p2 m_cellLink
Definition: CaloClusterContainer_p4.h:37
CaloClusterMoment::MomentType
MomentType
enums to identify different moments
Definition: CaloClusterMoment.h:38
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
CaloCluster::phi0
double phi0() const
Returns raw of cluster seed.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:1186
xAOD::eratio
setCharge setNTRTHiThresholdHits eratio
Definition: TrigElectron_v1.cxx:96
CaloCluster::m_momentStore
CaloClusterMomentStore m_momentStore
cluster moments
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:480
TruthTest.itp
itp
Definition: TruthTest.py:46
CaloVariableType::VariableType
VariableType
Definition: CaloVariableType.h:15
CaloClusterContainer_p4::m_badLayerStatusList
std::vector< short > m_badLayerStatusList
Definition: CaloClusterContainer_p4.h:60
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
CaloCluster::m_altPhi
double m_altPhi
Stores calibrated (cell weight) signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:709
CaloClusterContainerCnv_p4::m_cellElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > > m_cellElementLinkCnv
Definition: CaloClusterContainerCnv_p4.h:67
CaloSamplingData::retrieveData
value_type retrieveData(variable_key_type theVariable, sampling_key_type theSampling) const
Retrieve const reference to individual variable.
Definition: CaloSamplingData.h:225
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CaloClusterContainer::getTowerSeg
virtual const CaloTowerSeg & getTowerSeg() const
Retrieve tower segmentation.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:104
CaloClusterContainer_p4::m_badClusIndexList
std::vector< short > m_badClusIndexList
Definition: CaloClusterContainer_p4.h:59
CaloBadChannel.h
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
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
index
Definition: index.py:1
CaloCluster::m_eta0
double m_eta0
Cluster seed
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:558
CaloClusterContainer_p4::m_badPhiList
std::vector< unsigned int > m_badPhiList
Definition: CaloClusterContainer_p4.h:62
CaloClusterMomentStore::setMomentStore
virtual void setMomentStore(const moment_store &rMomStore)
Set internal store.
Definition: CaloClusterMomentStore.h:253
CaloClusterContainer
Storable container for CaloCluster.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:37
CaloSamplingData::storeData
bool storeData(variable_key_type theVariable, sampling_key_type theSampling, value_type theData)
}
Definition: CaloSamplingData.cxx:109
extractSporadic.c1
c1
Definition: extractSporadic.py:134
DMTest::C
C_v1 C
Definition: C.h:26
P4EEtaPhiM
Definition: P4EEtaPhiM.h:25
skel.it
it
Definition: skel.GENtoEVGEN.py:423
CaloClusterMomentContainer_p2::m_nMoments
unsigned short m_nMoments
Definition: CaloClusterMomentContainer_p2.h:14
CaloSamplingData::m_varTypePattern
unsigned int m_varTypePattern
Definition: CaloSamplingData.h:117
CaloClusterContainer_p4::m_vec
contType m_vec
Definition: CaloClusterContainer_p4.h:41
CaloCluster::m_altE
double m_altE
Stores calibrated (cell weight) signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:705
CaloClusterMomentStore::CaloClusterMomentIterator
Internally used iterator.
Definition: CaloClusterMomentStore.h:54
P4EEtaPhiMCnv_p2::transToPers
virtual void transToPers(const P4EEtaPhiM *transObj, P4EEtaPhiMFloat_p2 *persObj, MsgStream &log) const override
Method creating the persistent representation P4EEtaPhiMFloat_p2 from its transient representation P4...
Definition: P4EEtaPhiMCnv_p2.cxx:38
CaloClusterContainer_p4::m_badEtaList
std::vector< unsigned int > m_badEtaList
Definition: CaloClusterContainer_p4.h:61
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
CaloSamplingData::removeVariable
bool removeVariable(variable_key_type theVariable, sampling_key_type theSampling)
Remove a certain variable.
Definition: CaloSamplingData.h:248
x
#define x
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
CaloClusterMomentContainer_p2::m_Mvalue
std::vector< unsigned int > m_Mvalue
Definition: CaloClusterMomentContainer_p2.h:19
CaloClusterMomentStore
Stores CaloClusterMoment in a keyed map.
Definition: CaloClusterMomentStore.h:15
Compressor
Definition: Compressor.h:26
CaloTowerSegCnv_p1::persToTrans
void persToTrans(const CaloTowerSeg_p1 *, CaloTowerSeg *) const
Definition: CaloTowerSegCnv_p1.cxx:9
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
CaloClusterContainer_p4::iterator
contType::iterator iterator
Definition: CaloClusterContainer_p4.h:44
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
CaloSamplingData::getNumberOfSamplings
size_t getNumberOfSamplings() const
Set variable type pattern for this store.
Definition: CaloSamplingData.h:186
CaloClusterContainer_p4::CaloCluster_p::m_samplingPattern
unsigned int m_samplingPattern
Definition: CaloClusterContainer_p4.h:29
Compressor.h
CaloClusterContainer_p4::CaloCluster_p
Definition: CaloClusterContainer_p4.h:21
CaloCluster::m_phi0
double m_phi0
Cluster seed
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:560
lumiFormat.i
int i
Definition: lumiFormat.py:92
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloSamplingData::getNumberOfVariableTypes
size_t getNumberOfVariableTypes() const
Return number of variable types.
Definition: CaloSamplingData.h:189
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
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
master.flag
bool flag
Definition: master.py:29
CaloCluster::m_altM
double m_altM
Stores calibrated (cell weight) signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:711
CaloClusterContainerCnv_p4::m_showerElementLinkCnv
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > > m_showerElementLinkCnv
Definition: CaloClusterContainerCnv_p4.h:66
CaloClusterContainer_p4::CaloCluster_p::m_basicSignal
float m_basicSignal
Definition: CaloClusterContainer_p4.h:24
CaloCluster
Principal data class for CaloCell clusters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
CaloPhiRange.h
CaloPhiRange class declaration.
CaloCluster::m_rawM
double m_rawM
Stores raw signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:702
CaloClusterContainer_p4::m_towerSeg
CaloTowerSeg_p1 m_towerSeg
Definition: CaloClusterContainer_p4.h:51
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
CaloCluster::badChannelList
std::vector< CaloClusterBadChannelData > badChannelList
Get Bad Channel information.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:458
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
CaloPhiRange::fix
static double fix(double phi)
Definition: CaloPhiRange.cxx:14
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_p4.h
DataPool.h
CaloClusterContainer_p4::CaloCluster_p::m_clusterSize
unsigned int m_clusterSize
Definition: CaloClusterContainer_p4.h:31
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
CaloClusterContainer_p4::CaloCluster_p::m_time
float m_time
Definition: CaloClusterContainer_p4.h:25
CaloClusterContainer_p4::m_rawEEtaPhiM
std::vector< unsigned int > m_rawEEtaPhiM
Definition: CaloClusterContainer_p4.h:65
CaloCluster::m_rawPhi
double m_rawPhi
Stores raw signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:700
CaloCluster::getTime
double getTime() const
Access cluster time.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:886
CaloClusterContainer_p4::CaloCluster_p::m_dataLink
ElementLinkInt_p2 m_dataLink
Definition: CaloClusterContainer_p4.h:36
errorcheck.h
Helpers for checking error return status codes and reporting errors.
CaloClusterContainer_p4::m_dataStore
std::vector< float > m_dataStore
Definition: CaloClusterContainer_p4.h:48
CaloClusterContainer_p4::CaloCluster_p::m_phi0
float m_phi0
Definition: CaloClusterContainer_p4.h:27
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
CaloClusterContainer_p4::const_iterator
contType::const_iterator const_iterator
Definition: CaloClusterContainer_p4.h:43
CaloClusterContainer_p4::m_momentContainer
CaloClusterMomentContainer_p2 m_momentContainer
Definition: CaloClusterContainer_p4.h:50
CaloCompositeKineBase::m_status
CaloRecoStatus m_status
Calorimeter reconstruction status.
Definition: CaloCompositeKineBase.h:58
CaloCluster::m_altEta
double m_altEta
Stores calibrated (cell weight) signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:707
CaloSamplingData.h
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloClusterBadChannelData
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterBadChannelData.h:12
CaloClusterContainer_p4::CaloCluster_p::m_eta0
float m_eta0
Definition: CaloClusterContainer_p4.h:26
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloCluster::getClusterSize
unsigned int getClusterSize() const
Get cluster size.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:895
CaloClusterMomentStore::moment_store
std::map< moment_key, moment_value > moment_store
Internal moment store type.
Definition: CaloClusterMomentStore.h:35
CaloCluster::eta
virtual double eta() const
Retrieve eta independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:755
CaloClusterContainer_p4::m_linkNames
ElementLinkContNames_p2 m_linkNames
Definition: CaloClusterContainer_p4.h:54
CaloClusterContainer_p4::m_varTypePattern
unsigned int m_varTypePattern
Definition: CaloClusterContainer_p4.h:47
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
CaloClusterContainerCnv_p4::CellLinkState
ElementLinkCnv_p2< ElementLink< CaloCellLinkContainer > >::State CellLinkState
Definition: CaloClusterContainerCnv_p4.h:49
CaloClusterMomentContainer_p2::m_Mkey
std::vector< unsigned short > m_Mkey
Definition: CaloClusterMomentContainer_p2.h:20
DEBUG
#define DEBUG
Definition: page_access.h:11
CaloClusterContainerCnv_p4::m_P4EEtaPhiMCnv
P4EEtaPhiMCnv_p2 m_P4EEtaPhiMCnv
Definition: CaloClusterContainerCnv_p4.h:65
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
CaloClusterContainerCnv_p4::persToTrans
virtual void persToTrans(const CaloClusterContainer_p4 *pers, CaloClusterContainer *trans, MsgStream &log) const override
Definition: CaloClusterContainerCnv_p4.cxx:28
CaloCluster::e
virtual double e() const
Retrieve energy independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:753
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
CaloBadChannel
Definition: CaloBadChannel.h:8
P4SignalState::CALIBRATED
@ CALIBRATED
Definition: ISignalState.h:31
CaloRecoStatus::getStatusWord
virtual const store_type & getStatusWord() const
retrieve the entire status word
Definition: CaloRecoStatus.h:112
CaloCluster::m_rawE
double m_rawE
Stores raw signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:696
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_p4
Definition: CaloClusterContainer_p4.h:19
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
merge.status
status
Definition: merge.py:17
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
CaloClusterContainerCnv_p4::transToPers
virtual void transToPers(const CaloClusterContainer *trans, CaloClusterContainer_p4 *pers, MsgStream &log) const override
Definition: CaloClusterContainerCnv_p4.cxx:277
CaloSamplingData
Simple data object to store all variables in calorimeter samplings.
Definition: CaloSamplingData.h:18
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
CaloClusterContainerCnv_p4::m_caloTowerSegCnv
CaloTowerSegCnv_p1 m_caloTowerSegCnv
Definition: CaloClusterContainerCnv_p4.h:64
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CaloClusterContainerCnv_p4::ShowerLinkState
ElementLinkCnv_p2< ElementLink< CaloShowerContainer > >::State ShowerLinkState
Definition: CaloClusterContainerCnv_p4.h:47
CaloCluster::addBadChannel
void addBadChannel(const CaloClusterBadChannelData &badChannel)
Add Bad channel information.
Definition: CaloCluster.cxx:1424
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
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
CaloClusterContainer_p4::CaloCluster_p::m_caloRecoStatus
unsigned int m_caloRecoStatus
Definition: CaloClusterContainer_p4.h:30
CaloRecoStatus
reconstruction status indicator
Definition: CaloRecoStatus.h:12
CaloCluster::resetBadChannel
void resetBadChannel()
Reset Bad channel list.
Definition: CaloCluster.cxx:1429
CaloCluster::m_rawEta
double m_rawEta
Stores raw signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:698
P4EEtaPhiMCnv_p2::persToTrans
virtual void persToTrans(const P4EEtaPhiMFloat_p2 *persObj, P4EEtaPhiM *transObj, MsgStream &log) const override
Method creating the transient representation of P4EEtaPhiM from its persistent representation P4EEtaP...
Definition: P4EEtaPhiMCnv_p2.cxx:26
CaloClusterContainer_p4::CaloCluster_p::m_P4EEtaPhiM
P4EEtaPhiMFloat_p2 m_P4EEtaPhiM
Definition: CaloClusterContainer_p4.h:33
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloPhiRange::diff
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
Definition: CaloPhiRange.cxx:22
CaloCluster::phi
virtual double phi() const
Retrieve phi independent of signal state.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:759