Loading [MathJax]/jax/output/SVG/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
L1CPCMXTools.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 <map>
6 #include <memory>
7 #include <numeric>
8 #include <utility> // Temporary
9 
13 #include "TrigConfL1Data/Menu.h"
18 #include "L1CPCMXTools.h"
25 
26 namespace LVL1 {
27 
30 L1CPCMXTools::L1CPCMXTools(const std::string &type, const std::string &name,
31  const IInterface *parent)
33  m_crates(4),
34  m_modules(14), m_maxTobs(5), m_sysCrate(3), m_debug(false) {
35  declareInterface<IL1CPCMXTools>(this);
36 
37 }
38 
43 
44  return StatusCode::SUCCESS;
45 }
46 
49 std::pair<uint32_t, uint32_t> L1CPCMXTools::roiWord(const EmTauROI *roi) const {
50  const uint32_t oldRoi = roi->roiWord();
52  const int crate = decoder.crate(oldRoi);
53  const int module = decoder.module(oldRoi);
54  const int chip = decoder.chip(oldRoi);
55  const int coord = decoder.localcoord(oldRoi);
56  bool em = false;
57  bool tau = false;
58  for (unsigned int thresh = 1; thresh <= TrigT1CaloDefs::numOfCPThresholds;
59  ++thresh) {
60  if (roi->thresholdPassed(thresh)) {
62  em = true;
63  else
64  tau = true;
65  }
66  }
67  uint32_t emRoi = 0;
68  uint32_t tauRoi = 0;
69  if (em) {
70  int isolation =
72  roi->hadRingIsolationEnergy(), roi->hadCoreEnergy());
73  const CPMTobRoI newRoi(crate, module, chip, coord, 0, roi->clusterEnergy(),
74  isolation);
75  emRoi = newRoi.roiWord();
76  }
77  if (tau) {
78  int isolation =
80  roi->hadRingIsolationEnergy());
81  const CPMTobRoI newRoi(crate, module, chip, coord, 1,
82  roi->tauClusterEnergy(), isolation);
83  tauRoi = newRoi.roiWord();
84  }
85  return std::make_pair(emRoi, tauRoi);
86 }
87 
88 int L1CPCMXTools::isolationEm(unsigned int /*clusterEnergy*/,
89  unsigned int /*emIsol*/, unsigned int /*hadIsol*/,
90  unsigned int hadVeto) const {
91  int isol = 0;
92  if (hadVeto > 1)
93  isol = 1;
94  return isol;
95 }
96 
97 int L1CPCMXTools::isolationTau(unsigned int /*clusterEnergy*/,
98  unsigned int emIsol,
99  unsigned int /*hadIsol*/) const {
100  int isol = 0;
101  if (emIsol > 4)
102  isol = 1;
103  return isol;
104 }
105 
106 void L1CPCMXTools::unpackEmIsol(int /*energy*/, int isol, unsigned int &emIsol,
107  unsigned int &hadIsol,
108  unsigned int &hadVeto) const {
109  emIsol = 0;
110  hadIsol = 0;
111  hadVeto = (isol == 1) ? 2 : 0;
112 }
113 
114 void L1CPCMXTools::unpackTauIsol(int /*energy*/, int isol, unsigned int &emIsol,
115  unsigned int &hadIsol) const {
116  emIsol = (isol == 1) ? 5 : 0;
117  hadIsol = 0;
118 }
119 
123  xAOD::CMXCPTobContainer *cmxTobVec) const {
124  std::vector<const xAOD::CPMTobRoIContainer *> cpmRoiColls(1, cpmRoiVec);
125  formCMXCPTob(cpmRoiColls, cmxTobVec, 0);
126 }
127 
131  const std::vector<const xAOD::CPMTobRoIContainer *> &cpmRoiColls,
132  xAOD::CMXCPTobContainer *cmxTobVec, uint8_t peak) const {
133  std::map<uint32_t, const xAOD::CPMTobRoI *> cpmRoiMap;
134  std::map<int, xAOD::CMXCPTob *> cmxTobMap;
136  int timeslices = cpmRoiColls.size();
137  for (int slice = 0; slice < timeslices; ++slice) {
138  const xAOD::CPMTobRoIContainer *cpmRoiVec = cpmRoiColls[slice];
139  cpmRoiMap.clear();
140  std::vector<unsigned int> presenceMaps(2 * m_crates * m_modules);
141  std::vector<int> tobCount(2 * m_crates * m_modules);
144  for (; it != itE; ++it) { // get sorted list
145  const xAOD::CPMTobRoI *roi = *it;
146  const int type = roi->type();
147  const int crate = roi->crate();
148  const int cpm = roi->cpm();
149  const int index = ((type * m_crates) + crate) * m_modules + cpm - 1;
150  const int presenceBit =
151  (roi->chip() << 1) |
152  ((roi->location() >> 2) &
153  0x1); // <<== CHECK THIS SHIFT LOOKS OK @@vkousk
154  presenceMaps[index] |= (1 << presenceBit);
155  tobCount[index]++;
156  uint32_t key = roi->roiWord();
157  cpmRoiMap.insert(std::make_pair(key, roi));
158  }
159  std::map<uint32_t, const xAOD::CPMTobRoI *>::const_iterator mit =
160  cpmRoiMap.begin();
161  std::map<uint32_t, const xAOD::CPMTobRoI *>::const_iterator mitE =
162  cpmRoiMap.end();
163  for (; mit != mitE; ++mit) {
164  const xAOD::CPMTobRoI *roi = mit->second;
165  const int type = roi->type();
166  const int crate = roi->crate();
167  const int cmx = 1 - type; // <<== CHECK
168  const int cpm = roi->cpm();
169  const int chip = (roi->chip() << 1) | ((roi->location() >> 2) & 0x1);
170  const int loc = roi->location() & 0x3;
171  const int index = ((type * m_crates) + crate) * m_modules + cpm - 1;
172  const int energy = roi->energy();
173  const int isolation = roi->isolation();
174  const unsigned int presence = presenceMaps[index];
175  int error = 0;
176  if (tobCount[index] > m_maxTobs) { // overflow
177  int count = 0;
178  for (int bit = 0; bit <= chip; ++bit)
179  count += (presence >> bit) & 0x1;
180  if (count > m_maxTobs)
181  continue;
184  error = err.error();
185  }
186  const int key =
187  (((((((crate << 1) | cmx) << 4) | cpm) << 4) | chip) << 2) | loc;
188  xAOD::CMXCPTob *tob = 0;
189  std::map<int, xAOD::CMXCPTob *>::iterator xit = cmxTobMap.find(key);
190  if (xit == cmxTobMap.end()) {
191  tob = new xAOD::CMXCPTob();
192  tob->makePrivateStore(); // make temp store
193  tob->initialize(crate, cmx, cpm, chip, loc);
194  std::vector<uint8_t> vecI(timeslices);
195  std::vector<uint32_t> vecU32(timeslices);
196  std::vector<uint16_t> vecU(timeslices);
197  tob->addTob(vecI, vecI, vecU32, vecU);
198  tob->setPeak(peak);
199  cmxTobMap.insert(std::make_pair(key, tob));
200  cmxTobVec->push_back(tob);
201  } else
202  tob = xit->second;
203  std::vector<uint8_t> energyVec(tob->energyVec());
204  std::vector<uint8_t> isolationVec(tob->isolationVec());
205  std::vector<uint32_t> errorVec(tob->errorVec());
206  std::vector<uint16_t> presenceMapVec(tob->presenceMapVec());
207  energyVec[slice] = energy;
208  isolationVec[slice] = isolation;
209  errorVec[slice] = error;
210  presenceMapVec[slice] = presence;
211  tob->addTob(energyVec, isolationVec, errorVec, presenceMapVec);
212  }
213  }
214 }
215 
219  const xAOD::CMXCPTobContainer *cmxTobVec,
220  xAOD::CMXCPHitsContainer *cmxHitsVec) const {
223  // @@vkousk
224  // temporarily comment out cmxHitsTopo, see Jira ticket: ATLLONECAL-13
225  // xAOD::CMXCPHitsContainer* cmxHitsTopo = new xAOD::CMXCPHitsContainer;
226  formCMXCPHitsCrate(l1menu, cmxTobVec, cmxHitsCrate);
227  formCMXCPHitsSystem(cmxHitsCrate, cmxHitsSys);
228  // formCMXCPHitsTopo(cmxTobVec, cmxHitsTopo);
229  mergeCMXCPHits(cmxHitsVec, cmxHitsCrate);
230  mergeCMXCPHits(cmxHitsVec, cmxHitsSys);
231  // mergeCMXCPHits(cmxHitsVec, cmxHitsTopo);
232  delete cmxHitsCrate;
233  delete cmxHitsSys;
234  // delete cmxHitsTopo;
235 }
236 
240  const TrigConf::L1Menu* l1menu,
241  const xAOD::CMXCPTobContainer *cmxTobVec,
242  xAOD::CMXCPHitsContainer *cmxHitsCrate) const {
243  uint8_t peakm = 0;
244  std::vector<HitsVector> hitVec(4 * m_crates);
245  std::vector<ErrorVector> errVec(4 *
246  m_crates); // Need overflow for neutral format
247  HitsVector hit0;
248  HitsVector hit1;
251  xAOD::CMXCPTobContainer::const_iterator pose = cmxTobVec->end();
252  for (; pos != pose; ++pos) {
253  const xAOD::CMXCPTob *tob = *pos;
254  uint8_t crate = tob->crate();
255  uint8_t cmx = tob->cmx();
256  const int index = (crate * 2 + cmx) * 2;
257  const std::vector<uint32_t> &error(tob->errorVec());
258  hit0.clear();
259  hit1.clear();
260  getHits(l1menu, tob, hit0, hit1);
261 
262  addCMXCPHits(hitVec[index], hit0);
263  addCMXCPHits(hitVec[index + 1], hit1);
264  addOverflow(errVec[index], error);
265  addOverflow(errVec[index + 1], error);
266  uint8_t peak = tob->peak();
267  if (peak > peakm)
268  peakm = peak;
269  }
270  // Save non-zero crate totals
271  for (uint8_t crate = 0; crate < m_crates; ++crate) {
272  for (uint8_t cmx = 0; cmx < 2; ++cmx) {
273  const int index = (crate * 2 + cmx) * 2;
274  saveCMXCPHits(cmxHitsCrate, hitVec[index], hitVec[index + 1],
275  errVec[index], errVec[index + 1], crate, cmx,
276  xAOD::CMXCPHits::LOCAL, peakm);
277  if (crate != m_sysCrate) { // REMOTE totals
278  uint8_t source = crate;
279  saveCMXCPHits(cmxHitsCrate, hitVec[index], hitVec[index + 1],
280  errVec[index], errVec[index + 1], m_sysCrate, cmx, source,
281  peakm);
282  }
283  }
284  }
285 }
286 
288  HitsVector &hit1) const {
289  using namespace TrigConf;
290  const std::vector<uint8_t> &energy(tob->energyVec());
291  const std::vector<uint8_t> &isolation(tob->isolationVec());
292 
293  int cmx = tob->cmx();
294  int crate = tob->crate();
295  int cpm = tob->cpm();
296  int chip = (tob->chip() >> 1) & 0x7;
297  int loc = tob->location() | ((tob->chip() & 1) << 2);
298  auto err = LVL1::DataError(tob->error());
299 
300  const int type = 1 - cmx;
301  const int timeslices = energy.size();
302  hit0.resize(timeslices);
303  hit1.resize(timeslices);
304 
305  // Get thresholds from menu
306  const std::string thrType = (type == 0) ? L1DataDef::typeAsString(L1DataDef::EM) : L1DataDef::typeAsString(L1DataDef::TAU);
307 
308  // Get EM and TAU trigger thresholds
309  std::vector<std::shared_ptr<TrigConf::L1Threshold>> allThresholds = l1menu->thresholds();
310  std::vector<std::shared_ptr<TrigConf::L1Threshold>> thresholds;
311  thresholds.reserve(16);
312 
313  for ( const auto& thresh : allThresholds ) {
314  if (thresh->type() == thrType) {
315  thresholds.push_back(thresh);
316  }
317  }
318 
319  if (thresholds.size() > 16) {
320  ATH_MSG_ERROR("Wrong number of thresholds " << thresholds.size());
321  return;
322  }
323 
324  for (int slice = 0; slice < timeslices; ++slice) {
325  if (energy[slice] == 0)
326  continue;
327 
328  if (err.get(LVL1::DataError::Overflow)) {
329  hit0[slice] = 0xffffff;
330  hit1[slice] = 0xffffff;
331  continue;
332  }
333  /* Form an RoI word from the information present
334  Simplest way without duplication is to create a CPMTobRoI */
335  int et = energy[slice];
336  int isol = isolation[slice];
337  std::unique_ptr<LVL1::CPMTobRoI> roi(
338  new CPMTobRoI(crate, cpm, chip, loc, type, et, isol));
339 
340  /* Now get the hit information using RecEmTauroI */
341  RecEmTauRoI recRoI(roi->roiWord(), &(*l1menu));
342  auto mask = recRoI.thresholdPattern();
343  for (const auto& threshold : thresholds) {
344  auto numThresh = threshold->mapping();
345  if (!recRoI.isValidThreshold(numThresh) ||
346  (((1 << numThresh) & mask) == 0)) {
347  continue;
348  }
349  if (numThresh < 8) {
350  hit0[slice] |= (1 << (numThresh * 3));
351  } else {
352  hit1[slice] |= (1 << ((numThresh - 8) * 3));
353  }
354  }
355  }
356 }
357 
359  const ErrorVector &tobErr) const {
360  const int timeslices = tobErr.size();
361  hitErr.resize(timeslices);
362  for (int slice = 0; slice < timeslices; ++slice) {
363  int error = tobErr[slice];
364  if (error) {
366  int overflow = err.get(LVL1::DataError::Overflow);
367  LVL1::DataError err2;
368  err2.set(LVL1::DataError::Overflow, overflow);
369  hitErr[slice] |= err2.error();
370  }
371  }
372 }
373 
377  const xAOD::CMXCPHitsContainer *cmxHitsCrate,
378  xAOD::CMXCPHitsContainer *cmxHitsSys) const {
379  uint8_t peakm = 0;
380  std::vector<HitsVector> systemHit0(2);
381  std::vector<HitsVector> systemHit1(2);
382  std::vector<ErrorVector> systemErr0(2);
383  std::vector<ErrorVector> systemErr1(2);
385  DataVector<xAOD::CMXCPHits>::const_iterator pose = cmxHitsCrate->end();
386  for (; pos != pose; ++pos) {
387  const xAOD::CMXCPHits *hits = *pos;
388  if (hits->crate() != m_sysCrate)
389  continue;
390  uint8_t source = hits->sourceComponent();
395  continue;
396  const uint8_t peak = hits->peak();
397  if (peak > peakm)
398  peakm = peak;
399  HitsVector hits0(hits->hitsVec0());
400  HitsVector hits1(hits->hitsVec1());
401  ErrorVector err0(hits->errorVec0());
402  ErrorVector err1(hits->errorVec1());
403  uint8_t cmx = hits->cmx();
404  addCMXCPHits(systemHit0[cmx], hits0);
405  addCMXCPHits(systemHit1[cmx], hits1);
406  addOverflow(systemErr0[cmx], err0);
407  addOverflow(systemErr1[cmx], err1);
408  }
409  // Save non-zero system totals
410  for (uint8_t cmx = 0; cmx < 2; ++cmx) {
411  saveCMXCPHits(cmxHitsSys, systemHit0[cmx], systemHit1[cmx], systemErr0[cmx],
412  systemErr1[cmx], m_sysCrate, cmx, xAOD::CMXCPHits::TOTAL,
413  peakm);
414  }
415 }
416  // Temporary for
418  // testing
419 
421  const xAOD::CMXCPTobContainer *cmxTobVec,
422  xAOD::CMXCPHitsContainer *cmxHitsTopo) const {
423  uint8_t peakm = 0;
424  int timeslices = 0;
425  std::vector<HitsVector> hitVec(8 * m_crates);
427  xAOD::CMXCPTobContainer::const_iterator pose = cmxTobVec->end();
428  for (; pos != pose; ++pos) {
429  const xAOD::CMXCPTob *tob = *pos;
430  uint8_t crate = tob->crate();
431  uint8_t cmx = tob->cmx();
432  const uint8_t cpm = tob->cpm();
433  const uint8_t chip = tob->chip() >> 1;
434  const uint8_t loc = ((tob->chip() & 0x1) << 2) | tob->location();
435  const int index = (crate * 2 + cmx) * 4;
436  const std::vector<uint8_t> &energy(tob->energyVec());
437  const std::vector<uint8_t> &isolation(tob->isolationVec());
438  const std::vector<uint32_t> &error(tob->errorVec());
439  timeslices = energy.size();
440  HitsVector &checksum(hitVec[index]);
441  HitsVector &map(hitVec[index + 1]);
442  HitsVector &countsLow(hitVec[index + 2]);
443  HitsVector &countsHigh(hitVec[index + 3]);
444  checksum.resize(timeslices);
445  map.resize(timeslices);
446  countsLow.resize(timeslices);
447  countsHigh.resize(timeslices);
448  for (int slice = 0; slice < timeslices; ++slice) {
449  if (energy[slice] == 0)
450  continue;
451  // checksum
453  int overflow = err.get(LVL1::DataError::Overflow);
454  checksum[slice] +=
455  cpm + chip + loc + energy[slice] + isolation[slice] + overflow;
456  checksum[slice] &= 0xff;
457  // occupancy map
458  map[slice] |= (1 << (cpm - 1));
459  // occupancy counts
460  if (cpm <= 7) {
461  countsLow[slice] += (1 << (3 * (cpm - 1))); // can't saturate
462  } else {
463  countsHigh[slice] += (1 << (3 * (cpm - 8)));
464  }
465  }
466  uint8_t peak = tob->peak();
467  if (peak > peakm)
468  peakm = peak;
469  }
470  // Save non-zero crate totals
471  HitsVector dummy(timeslices);
472  std::vector<uint32_t> dummyE(timeslices);
473  for (uint8_t crate = 0; crate < m_crates; ++crate) {
474  for (uint8_t cmx = 0; cmx < 2; ++cmx) {
475  const int index = (crate * 2 + cmx) * 4;
476  saveCMXCPHits(cmxHitsTopo, hitVec[index], dummy, dummyE, dummyE, crate,
477  cmx, xAOD::CMXCPHits::TOPO_CHECKSUM, peakm);
478  saveCMXCPHits(cmxHitsTopo, hitVec[index + 1], dummy, dummyE, dummyE,
479  crate, cmx, xAOD::CMXCPHits::TOPO_OCCUPANCY_MAP, peakm);
480  saveCMXCPHits(cmxHitsTopo, hitVec[index + 2], hitVec[index + 3], dummyE,
481  dummyE, crate, cmx, xAOD::CMXCPHits::TOPO_OCCUPANCY_COUNTS,
482  peakm);
483  }
484  }
485 }
486 
490  const HitsVector &vec2) const {
491  int size1 = vec1.size();
492  int size2 = vec2.size();
493  if (size1 < size2)
494  vec1.resize(size2);
495  HitsVector::iterator pos1 = vec1.begin();
496  HitsVector::iterator pose1 = vec1.end();
497  HitsVector::const_iterator pos2 = vec2.begin();
498  HitsVector::const_iterator pose2 = vec2.end();
499  for (; pos1 != pose1 && pos2 != pose2; ++pos1, ++pos2) {
500  *pos1 = addHits(*pos1, *pos2, 24, 24);
501  }
502 }
503 
506 unsigned int L1CPCMXTools::addHits(unsigned int hitMult, unsigned int hitVec,
507  int multBits, int vecBits) const {
508  if (m_debug)
509  msg() << MSG::DEBUG << "addHits: Original hitMult = " << std::hex << hitMult
510  << ". Add hitWord = " << hitVec << std::dec << endmsg;
511 
512  // Results transmitted in 2 words, each reporting half of the CP thresholds
513  int nthresh = TrigT1CaloDefs::numOfCPThresholds / 2;
514 
515  int nbitsOut = multBits / nthresh;
516  int nbitsIn = vecBits / nthresh;
517 
518  if (m_debug)
519  msg() << MSG::DEBUG << " Bits per threshold = " << nbitsOut << endmsg;
520 
521  int max = (1 << nbitsOut) - 1;
522  unsigned int multMask = max;
523  unsigned int hitMask = (1 << nbitsIn) - 1;
524  unsigned int shift = 0;
525 
526  unsigned int hits = 0;
527 
528  for (int i = 0; i < nthresh; i++) {
529  int mult = (hitMult & multMask) + (hitVec & hitMask);
530  mult = ((mult <= max) ? mult : max);
531  hits += (mult << shift);
532 
533  hitMult >>= nbitsOut;
534  hitVec >>= nbitsIn;
535  shift += nbitsOut;
536  }
537 
538  if (m_debug)
539  msg() << MSG::DEBUG << "addHits returning hitMult = " << std::hex << hits
540  << std::dec << endmsg;
541 
542  return hits;
543 }
544 
548  xAOD::CMXCPHitsContainer *cmxHitsVec2) const {
549  int size = cmxHitsVec2->size();
550  for (int index = 0; index < size; ++index) {
551  xAOD::CMXCPHits *hitsIn = 0;
552  xAOD::CMXCPHits *hitsOut = 0;
553  cmxHitsVec2->swapElement(index, hitsIn, hitsOut);
554  cmxHitsVec1->push_back(hitsOut);
555  }
556  cmxHitsVec2->clear();
557 }
558 
562  xAOD::CMXCPHitsContainer *cmxHitsVec, const HitsVector &hits0,
563  const HitsVector &hits1, const ErrorVector &err0, const ErrorVector &err1,
564  uint8_t crate, uint8_t cmx, uint8_t source, uint8_t peak) const {
565  if (std::accumulate(hits0.begin(), hits0.end(), 0) ||
566  std::accumulate(hits1.begin(), hits1.end(), 0)) {
567  xAOD::CMXCPHits *cmxCpHits = new xAOD::CMXCPHits();
568  cmxCpHits->makePrivateStore();
569  cmxCpHits->initialize(crate, cmx, source, hits0, hits1, err0, err1, peak);
570  cmxHitsVec->push_back(cmxCpHits);
571  }
572 }
573 
574 } // end of namespace
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
xAOD::CPMTobRoI_v1::isolation
int isolation() const
Return isolation.
Definition: CPMTobRoI_v1.cxx:74
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
CTPConfig.h
RecEmTauRoI.h
D3PDMakerTestInstan::vec2
std::vector< D3PDTest::MyVec2 > vec2
Definition: D3PDMakerTestDict.h:14
et
Extra patterns decribing particle interation process.
xAOD::hadIsol
setThrPattern hadIsol
Definition: EmTauRoI_v2.cxx:68
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
xAOD::CMXCPTob_v1::crate
uint8_t crate() const
get crate
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
LVL1::DataError
Error data.
Definition: DataError.h:27
xAOD::CMXCPHits_v1::REMOTE_2
@ REMOTE_2
Definition: CMXCPHits_v1.h:29
xAOD::CMXCPTob_v1::addTob
void addTob(const std::vector< uint8_t > &energyVec, const std::vector< uint8_t > &isolationVec, const std::vector< uint32_t > &errorVec, const std::vector< uint16_t > &presenceMapVec)
add data to existing object
Definition: CMXCPTob_v1.cxx:53
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
python.LArCondContChannels.decoder
decoder
def channelSelection(self, channelList, groupType): if groupType == self.SingleGroup: pass elif group...
Definition: LArCondContChannels.py:618
physval_make_web_display.thresh
thresh
Definition: physval_make_web_display.py:36
LVL1::EmTauROI
This class defines the em/tau hadron ROI which are generated by the LVL1 Calo Trigger.
Definition: EmTauROI.h:40
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1::L1CPCMXTools::L1CPCMXTools
L1CPCMXTools(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
Definition: L1CPCMXTools.cxx:30
index
Definition: index.py:1
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
LVL1::EmTauROI::hadCoreEnergy
unsigned int hadCoreEnergy() const
return energy
Definition: EmTauROI.h:92
LVL1::L1CPCMXTools::m_debug
bool m_debug
Debug printout flag.
Definition: L1CPCMXTools.h:111
CPRoIDecoder.h
LVL1::L1CPCMXTools::unpackEmIsol
void unpackEmIsol(int energy, int isol, unsigned int &emIsol, unsigned int &hadIsol, unsigned int &hadVeto) const
Definition: L1CPCMXTools.cxx:106
skel.it
it
Definition: skel.GENtoEVGEN.py:407
xAOD::CMXCPTob
CMXCPTob_v1 CMXCPTob
Define the latest version of the CMXCPTob class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CMXCPTob.h:17
ClusterProcessorModuleKey.h
LVL1::L1CPCMXTools::ErrorVector
std::vector< uint32_t > ErrorVector
Definition: L1CPCMXTools.h:68
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
Menu.h
xAOD::CPMTobRoI_v1::crate
int crate() const
Return crate number (0-1)
Definition: CPMTobRoI_v1.cxx:38
xAOD::CMXCPTob_v1
Description of CMXCPTob_v1.
Definition: CMXCPTob_v1.h:27
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
L1CPCMXTools.h
LVL1::L1CPCMXTools::formCMXCPHits
virtual void formCMXCPHits(const TrigConf::L1Menu *l1menu, const xAOD::CMXCPTobContainer *cmxTobVec, xAOD::CMXCPHitsContainer *cmxHitsVec) const
form complete CMX-CP hits from CMX-CP TOBs
Definition: L1CPCMXTools.cxx:218
xAOD::CMXCPTob_v1::setPeak
void setPeak(uint8_t)
set peak
LVL1::TrigT1CaloDefs::EMAlg
@ EMAlg
Definition: TrigT1CaloDefs.h:209
LVL1::L1CPCMXTools::formCMXCPHitsTopo
virtual void formCMXCPHitsTopo(const xAOD::CMXCPTobContainer *cmxTobVec, xAOD::CMXCPHitsContainer *cmxHitsTopo) const
form partial CMX-CP hits (topo) from CMX-CP TOBs
Definition: L1CPCMXTools.cxx:420
DataVector::swapElement
void swapElement(size_type index, value_type newElem, reference oldElem)
Swap one element out of the container.
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
LVL1::CPMTobRoI::roiWord
uint32_t roiWord() const
Return packed RoI word.
Definition: Trigger/TrigT1/TrigT1CaloEvent/TrigT1CaloEvent/CPMTobRoI.h:112
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
LVL1::L1CPCMXTools::addCMXCPHits
void addCMXCPHits(HitsVector &vec1, const HitsVector &vec2) const
Add hits from second vector to first.
Definition: L1CPCMXTools.cxx:489
TruthTest.itE
itE
Definition: TruthTest.py:25
xAOD::CMXCPHits_v1::TOPO_OCCUPANCY_MAP
@ TOPO_OCCUPANCY_MAP
Definition: CMXCPHits_v1.h:30
xAOD::CMXCPHits
CMXCPHits_v1 CMXCPHits
Define the latest version of the CMMCPHits class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CMXCPHits.h:17
LVL1::EmTauROI::clusterEnergy
unsigned int clusterEnergy() const
return energy
Definition: EmTauROI.h:94
TrigConf
Forward iterator to traverse the main components of the trigger configuration.
Definition: Config.h:22
LVL1::L1CPCMXTools::m_crates
int m_crates
Number of CP crates.
Definition: L1CPCMXTools.h:103
xAOD::CMXCPTob_v1::errorVec
const std::vector< uint32_t > & errorVec() const
get errorVec
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
python.PyAthena.module
module
Definition: PyAthena.py:131
LVL1::L1CPCMXTools::mergeCMXCPHits
void mergeCMXCPHits(xAOD::CMXCPHitsContainer *cmxHitsVec1, xAOD::CMXCPHitsContainer *cmxHitsVec2) const
Merge CMX-CP hits vectors.
Definition: L1CPCMXTools.cxx:547
LVL1::RecEmTauRoI::isValidThreshold
bool isValidThreshold(unsigned int thresh) const
returns true if thresh is a valid threshold number
Definition: RecEmTauRoI.cxx:494
xAOD::CMXCPHits_v1::initialize
virtual void initialize(const uint8_t crate, const uint8_t cmx, const uint8_t source)
initialize
Definition: CMXCPHits_v1.cxx:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
LVL1::DataError::Overflow
@ Overflow
Definition: DataError.h:31
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:182
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
LVL1::L1CPCMXTools::addHits
unsigned int addHits(unsigned int hitMult, unsigned int hitVec, int multBits, int vecBits) const
Increment CPM/CMX hit word.
Definition: L1CPCMXTools.cxx:506
xAOD::CPMTobRoI_v1::cpm
int cpm() const
Return CPM number (1-14)
Definition: CPMTobRoI_v1.cxx:44
lumiFormat.i
int i
Definition: lumiFormat.py:85
LVL1::L1CPCMXTools::getHits
void getHits(const TrigConf::L1Menu *l1menu, const xAOD::CMXCPTob *tob, HitsVector &hits0, HitsVector &hits1) const
Definition: L1CPCMXTools.cxx:287
xAOD::CMXCPHits_v1::TOTAL
@ TOTAL
Definition: CMXCPHits_v1.h:29
LVL1::L1CPCMXTools::initialize
virtual StatusCode initialize()
standard Athena-Algorithm method
Definition: L1CPCMXTools.cxx:41
xAOD::CMXCPTob_v1::initialize
virtual void initialize(const uint8_t crate, const uint8_t cmx, const uint8_t cpm, const uint8_t chip, const uint8_t loc)
initialize
Definition: CMXCPTob_v1.cxx:21
LVL1::L1CPCMXTools::unpackTauIsol
void unpackTauIsol(int energy, int isol, unsigned int &emIsol, unsigned int &hadIsol) const
Definition: L1CPCMXTools.cxx:114
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::CMXCPTob_v1::error
uint32_t error() const
get errorVec at peak bunch crossing
Definition: CMXCPTob_v1.cxx:92
LVL1::EmTauROI::thresholdType
TrigT1CaloDefs::ClusterAlgorithm thresholdType(int thresh) const
returns type of thresholds number threshold_number Thresholds numbered from 1 to TrigT1CaloDefs::numO...
Definition: EmTauROI.cxx:59
LVL1::DataError::set
void set(ErrorBit bit, int value=1)
Set an error bit or data.
Definition: DataError.cxx:28
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::EmTauROI::tauClusterEnergy
unsigned int tauClusterEnergy() const
Definition: EmTauROI.h:95
LVL1::L1CPCMXTools::addOverflow
void addOverflow(ErrorVector &hitErr, const ErrorVector &tobErr) const
Definition: L1CPCMXTools.cxx:358
python.xAODType.dummy
dummy
Definition: xAODType.py:4
LVL1::RecEmTauRoI
This class defines the reconstructed em/tau hadron ROI.
Definition: RecEmTauRoI.h:44
xAOD::CPMTobRoI_v1::type
int type() const
Return type em/tau (0/1)
Definition: CPMTobRoI_v1.cxx:62
xAOD::CMXCPTob_v1::isolationVec
const std::vector< uint8_t > & isolationVec() const
get isolationVec
xAOD::CPMTobRoI_v1::roiWord
uint32_t roiWord() const
get roiWord
TriggerThreshold.h
CPMTobRoI.h
xAOD::CMXCPTob_v1::presenceMapVec
const std::vector< uint16_t > & presenceMapVec() const
get presenceMapVec
TriggerThresholdValue.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
DataVector::clear
void clear()
Erase all the elements in the collection.
LVL1::L1CPCMXTools::isolationEm
int isolationEm(unsigned int clusterEnergy, unsigned int emIsol, unsigned int hadIsol, unsigned int hadVeto) const
Definition: L1CPCMXTools.cxx:88
DataError.h
TrigConf::name
Definition: HLTChainList.h:35
LVL1::L1CPCMXTools::formCMXCPHitsCrate
virtual void formCMXCPHitsCrate(const TrigConf::L1Menu *l1menu, const xAOD::CMXCPTobContainer *cmxTobVec, xAOD::CMXCPHitsContainer *cmxHitsCrate) const
form partial CMX-CP hits (crate) from CMX-CP TOBs
Definition: L1CPCMXTools.cxx:239
LVL1::DataError::error
int error() const
Return the full error word.
Definition: DataError.h:78
LVL1::EmTauROI::hadRingIsolationEnergy
unsigned int hadRingIsolationEnergy() const
return energy
Definition: EmTauROI.h:90
xAOD::CMXCPHits_v1::LOCAL
@ LOCAL
Definition: CMXCPHits_v1.h:29
EmTauROI.h
LVL1::L1CPCMXTools::m_sysCrate
int m_sysCrate
System crate.
Definition: L1CPCMXTools.h:109
TrigConf::L1DataDef::typeAsString
static std::string & typeAsString(TriggerType tt)
Definition: L1DataDef.h:53
xAOD::CMXCPHitsContainer
CMXCPHitsContainer_v1 CMXCPHitsContainer
Define the latest version of the CMXCPHits class.
Definition: CMXCPHitsContainer.h:18
LVL1::CPMTobRoI
CPM RoI data.
Definition: Trigger/TrigT1/TrigT1CaloEvent/TrigT1CaloEvent/CPMTobRoI.h:19
xAOD::CMXCPTob_v1::cmx
uint8_t cmx() const
get cmx
threshold
Definition: chainparser.cxx:74
LVL1::L1CPCMXTools::formCMXCPTob
virtual void formCMXCPTob(const xAOD::CPMTobRoIContainer *cpmRoiVec, xAOD::CMXCPTobContainer *cmxTobVec) const
form CMX-CP TOBs from RoIs - single slice
Definition: L1CPCMXTools.cxx:122
LVL1::L1CPCMXTools::saveCMXCPHits
void saveCMXCPHits(xAOD::CMXCPHitsContainer *cmxHitsVec, const HitsVector &hits0, const HitsVector &hits1, const ErrorVector &err0, const ErrorVector &err1, uint8_t crate, uint8_t cmx, uint8_t source, uint8_t peak) const
Save non-zero CMX-CP hits.
Definition: L1CPCMXTools.cxx:561
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
xAOD::CMXCPHits_v1::REMOTE_0
@ REMOTE_0
Definition: CMXCPHits_v1.h:29
TrigT1CaloDefs.h
xAOD::CMXCPHits_v1::REMOTE_1
@ REMOTE_1
Definition: CMXCPHits_v1.h:29
JetVoronoiDiagramHelpers::coord
double coord
Definition: JetVoronoiDiagramHelpers.h:45
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::CMXCPHits_v1::TOPO_OCCUPANCY_COUNTS
@ TOPO_OCCUPANCY_COUNTS
Definition: CMXCPHits_v1.h:30
L1DataDef.h
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
LVL1::CPRoIDecoder
A level 1 calorimeter trigger conversion service: returns the Coordinate represented by a RoI word.
Definition: CPRoIDecoder.h:37
LVL1::L1CPCMXTools::roiWord
std::pair< uint32_t, uint32_t > roiWord(const EmTauROI *roi) const
Temporary for testing until CPAlgorithm and EmTauROI are updated.
Definition: L1CPCMXTools.cxx:49
TrigConf::L1DataDef::TAU
@ TAU
Definition: L1DataDef.h:20
DeMoScan.index
string index
Definition: DeMoScan.py:364
runIDAlign.accumulate
accumulate
Update flags based on parser line args.
Definition: runIDAlign.py:60
CoordinateRange.h
ClusterThresholdValue.h
LVL1::TrigT1CaloDefs::numOfCPThresholds
static const unsigned int numOfCPThresholds
Definition: TrigT1CaloDefs.h:125
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LVL1::L1CPCMXTools::HitsVector
std::vector< uint32_t > HitsVector
Definition: L1CPCMXTools.h:67
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
xAOD::CMXCPTob_v1::energyVec
const std::vector< uint8_t > & energyVec() const
get energyVec
LVL1::L1CPCMXTools::isolationTau
int isolationTau(unsigned int clusterEnergy, unsigned int emIsol, unsigned int hadIsol) const
Definition: L1CPCMXTools.cxx:97
xAOD::CPMTobRoI_v1::chip
int chip() const
Return CP chip number (0-7)
Definition: CPMTobRoI_v1.cxx:50
copySelective.source
string source
Definition: copySelective.py:32
LVL1::L1CPCMXTools::formCMXCPHitsSystem
virtual void formCMXCPHitsSystem(const xAOD::CMXCPHitsContainer *cmxHitsCrate, xAOD::CMXCPHitsContainer *cmxHitsSys) const
form partial CMX-CP hits (system) from crate CMX-CP hits
Definition: L1CPCMXTools.cxx:376
LVL1::EmTauROI::thresholdPassed
bool thresholdPassed(int thresh) const
returns TRUE if threshold number threshold_number has been passed by this ROI.
Definition: EmTauROI.cxx:49
AthAlgTool
Definition: AthAlgTool.h:26
LVL1::RecEmTauRoI::thresholdPattern
unsigned int thresholdPattern() const
returns bitmask of passed thresholds
Definition: RecEmTauRoI.cxx:373
get_generator_info.error
error
Definition: get_generator_info.py:40
xAOD::CPMTobRoI_v1::energy
int energy() const
Return energy.
Definition: CPMTobRoI_v1.cxx:68
xAOD::CMXCPHits_v1
Description of CMXCPHits_v1.
Definition: CMXCPHits_v1.h:27
error
Definition: IImpactPoint3dEstimator.h:70
LVL1::L1CPCMXTools::m_modules
int m_modules
Number of CPMs per crate.
Definition: L1CPCMXTools.h:105
xAOD::CPMTobRoI_v1::location
int location() const
Return location (RoI local coords) (0-7)
Definition: CPMTobRoI_v1.cxx:56
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
LVL1::EmTauROI::emRingIsolationEnergy
unsigned int emRingIsolationEnergy() const
return energy
Definition: EmTauROI.h:88
LVL1::L1CPCMXTools::m_maxTobs
int m_maxTobs
Maximum number of TOBs per CPM.
Definition: L1CPCMXTools.h:107
xAOD::CPMTobRoI
CPMTobRoI_v1 CPMTobRoI
Define the latest version of the CPMTobRoI class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/CPMTobRoI.h:17
xAOD::CMXCPTob_v1::peak
uint8_t peak() const
get peak
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
xAOD::CMXCPTob_v1::cpm
uint8_t cpm() const
get cpm
xAOD::CPMTobRoI_v1
Description of CPMTobRoI_v1.
Definition: CPMTobRoI_v1.h:24
xAOD::CMXCPTob_v1::location
uint8_t location() const
get location
LVL1::EmTauROI::roiWord
unsigned int roiWord() const
returns the 32bit ROI word.
Definition: EmTauROI.cxx:42
TrigConf::L1DataDef::EM
@ EM
Definition: L1DataDef.h:20
xAOD::CMXCPTob_v1::chip
uint8_t chip() const
get chip
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
xAOD::CMXCPHits_v1::TOPO_CHECKSUM
@ TOPO_CHECKSUM
Definition: CMXCPHits_v1.h:30