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