ATLAS Offline Software
JepJemMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 JepJemMonitorAlgorithm::JepJemMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
8  : AthMonitorAlgorithm(name,pSvcLocator),
9  m_phiScaleJE(16./M_PI)
10 {
11 }
12 
14 
15  ATH_MSG_DEBUG("JepJemMonitorAlgorith::initialize");
16  ATH_MSG_DEBUG("Package Name "<< m_packageName);
17 
18  // container names
19  ATH_MSG_DEBUG("m_JetElementLocation " << m_JetElementLocation);
20  ATH_MSG_DEBUG("m_JEMEtSumsLocation " << m_JEMEtSumsLocation);
21  ATH_MSG_DEBUG("m_JEMRoILocation " << m_JEMRoILocation);
22 
23  // steering parameters
24  ATH_MSG_DEBUG("m_maxSlices" << m_maxSlices);
25  ATH_MSG_DEBUG("m_crates" << m_crates);
26  ATH_MSG_DEBUG("m_modules" << m_modules);
27  ATH_MSG_DEBUG("m_tobsPerJEM" << m_tobsPerJEM);
28 
29  // we initialise all the containers that we need
30  ATH_CHECK(m_JetElementLocation.initialize());
31  ATH_CHECK(m_JEMEtSumsLocation.initialize());
32  ATH_CHECK(m_JEMRoILocation.initialize());
33 
35 }
36 
37 StatusCode JepJemMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
38 
39  ATH_MSG_DEBUG("JepJemMonitorAlgorithm::fillHistograms");
40 
41  // ===============================
42  // RETRIEVE AND SETUP JET ELEMENTS
43  // ===============================
44 
45  // Retrieve jet elements from SG
47  if (!jetElements.isValid()) {
48  ATH_MSG_ERROR("No JetElements found in TES at " << m_JetElementLocation);
49  return StatusCode::FAILURE;
50  }
51 
52  // 1D EM
53  auto etJepJem_em = Monitored::Scalar<int>("etJepJemJE_em", 0.);
54  auto em_weight = Monitored::Scalar<int>("em_weight", 0.);
55  auto etaJepJem_em = Monitored::Scalar<double>("etaJepJemJE_em", 0.);
56  auto phiJepJem_em = Monitored::Scalar<double>("phiJepJemJE_em", 0.);
57  // 1D HAD
58  auto etJepJem_had = Monitored::Scalar<int>("etJepJemJE_had", 0.);
59  auto had_weight = Monitored::Scalar<int>("had_weight", 0.);
60  auto etaJepJem_had = Monitored::Scalar<double> ("etaJepJemJE_had", 0.);
61  auto phiJepJem_had = Monitored::Scalar<double> ("phiJepJemJE_had", 0.);
62  // 2D EM
63  auto etaScaledJepJem_em = Monitored::Scalar<double>("etaScaledJepJemJE_em", 0.);
64  auto phiScaledJepJem_em = Monitored::Scalar<double>("phiScaledJepJemJE_em", 0.);
65  // 2D HAD
66  auto etaScaledJepJem_had = Monitored::Scalar<double>("etaScaledJepJemJE_had", 0.);
67  auto phiScaledJepJem_had = Monitored::Scalar<double>("phiScaledJepJemJE_had", 0.);
68 
69  // triggered slice number
70  auto jem_1d_triggeredSlice_num = Monitored::Scalar<int>("jem_1d_TriggeredSlice_num", 0.);
71 
72  // hitmaps per time slice in eta and phi
73  std::vector<Monitored::Scalar<double>> jem_em_2d_eta_jetEl_HitMapSlice;
74  std::vector<Monitored::Scalar<double>> jem_em_2d_phi_jetEl_HitMapSlice;
75  std::vector<Monitored::Scalar<double>> jem_had_2d_eta_jetEl_HitMapSlice;
76  std::vector<Monitored::Scalar<double>> jem_had_2d_phi_jetEl_HitMapSlice;
77  std::stringstream buffer;
78  for (int i=0; i < m_maxSlices; i++) {
79  buffer.str("");
80  buffer << i;
81  jem_em_2d_eta_jetEl_HitMapSlice.push_back(Monitored::Scalar<double>("etaSliceJepJemJE_em_num" + buffer.str(), 0.));
82  jem_em_2d_phi_jetEl_HitMapSlice.push_back(Monitored::Scalar<double>("phiSliceJepJemJE_em_num" + buffer.str(), 0.));
83  jem_had_2d_eta_jetEl_HitMapSlice.push_back(Monitored::Scalar<double>("etaSliceJepJemJE_had_num" + buffer.str(), 0.));
84  jem_had_2d_phi_jetEl_HitMapSlice.push_back(Monitored::Scalar<double>("phiSliceJepJemJE_had_num" + buffer.str(), 0.));
85  }
86 
87  // error variables
88  auto parityErrorJepJE_em = Monitored::Scalar<bool>("parityErrorJepJE_em", 0.);
89  auto parityErrorJepJE_had = Monitored::Scalar<bool>("parityErrorJepJE_had", 0.);
90  auto linkDownErrorJepJE_em = Monitored::Scalar<bool>("linkDownErrorJepJE_em", 0.);
91  auto linkDownErrorJepJE_had = Monitored::Scalar<bool>("linkDownErrorJepJE_had", 0.);
92 
93  // error summaries
94  auto jemErrorSummary = Monitored::Scalar<int>("jemErrorSummary", 0);
95  auto GLinkParityError = Monitored::Scalar<int>("GLinkParityError", 0);
96  auto jemLoc = Monitored::Scalar<int>("jemLoc", 0);
97 
98  // Error vector for global overview
99  std::vector<int> overview(2);
100 
101  using LVL1::DataError;
102 
103  // =====================
104  // Stepping over JE cells
105  // =====================
107  xAOD::JetElementContainer::const_iterator jeIterator = (*jetElements).begin();
108  xAOD::JetElementContainer::const_iterator jeIteratorEnd = (*jetElements).end();
109  for (; jeIterator != jeIteratorEnd; ++jeIterator)
110  {
111  const xAOD::JetElement *je = *jeIterator;
112  const int emEnergy = je->emJetElementET();
113  const int hadEnergy = je->hadJetElementET();
114  const double eta = je->eta();
115  const double phi = je->phi();
116  const int slice_n = je->peak();
117  const LVL1::Coordinate coord(phi, eta);
118  const int crate = ToHW.jepCrate(coord);
119  const int module = ToHW.jepModule(coord);
120  const int cord = ToHW.jepCoordinateWord(coord);
121 
122  ATH_MSG_DEBUG("JE has coords (eta,phi): " << eta << ", " << phi
123  << " and energies (Em,Had): " << emEnergy << ", "
124  << hadEnergy << " HW Crate:" << crate
125  << " Module: " << module << " " << cord);
126 
127  // fill kinematic variables
128  if (emEnergy > 0) {
129  etJepJem_em = emEnergy;
130  fill(m_packageName, etJepJem_em);
131  em_weight = emEnergy;
132  fill(m_packageName, em_weight);
133  etaJepJem_em = eta;
134  fill(m_packageName, etaJepJem_em);
135  fillJEMPhiMon(eta, phi, phiJepJem_em);
136  fillJEMEtaVsPhiMon(eta, phi, etaScaledJepJem_em, phiScaledJepJem_em, em_weight);
137  }
138  if (hadEnergy > 0) {
139  etJepJem_had = hadEnergy;
140  fill(m_packageName, etJepJem_had);
141  had_weight = hadEnergy;
142  fill(m_packageName, had_weight);
143  etaJepJem_had = eta;
144  fill(m_packageName, etaJepJem_had);
145  fillJEMPhiMon(eta, phi, phiJepJem_had);
146  fillJEMEtaVsPhiMon(eta, phi, etaScaledJepJem_had, phiScaledJepJem_had, had_weight);
147  }
148 
149  // number of triggered slice
150  jem_1d_triggeredSlice_num = slice_n;
151  fill(m_packageName, jem_1d_triggeredSlice_num);
152 
153  // HitMaps per time slice
154  const std::vector<uint16_t> &emEnergyVec(je->emJetElementETVec());
155  const std::vector<uint16_t> &hadEnergyVec(je->hadJetElementETVec());
156  const int slicesEm = emEnergyVec.size();
157  const int slicesHad = hadEnergyVec.size();
158  for (int i = 0; i < m_maxSlices; i++) {
159  if (i < slicesEm && emEnergyVec[i] > 0) {
160  fillJEMEtaVsPhiMon(eta, phi, jem_em_2d_eta_jetEl_HitMapSlice[i], jem_em_2d_phi_jetEl_HitMapSlice[i]);
161  }
162  if (i < slicesHad && hadEnergyVec[i] > 0) {
163  fillJEMEtaVsPhiMon(eta, phi, jem_had_2d_eta_jetEl_HitMapSlice[i], jem_had_2d_phi_jetEl_HitMapSlice[i]);
164  }
165  }
166 
167  // ERRORS
169  const LVL1::DataError haderr(je->hadJetElementError());
170 
171  const int ypos = crate * 16 + module;
172 
173  bool emParityError = false;
174  bool hadParityError = false;
175  bool emLinkDownError = false;
176  bool hadLinkDownError = false;
177  // EM Parity
178  if (err.get(DataError::Parity)) {
179  emParityError = true;
180  jemErrorSummary = EMParity;
181  fill(m_packageName, jemErrorSummary);
182  overview[crate] |= (1 << EMParity);
183  }
184  // HAD Parity
185  if (haderr.get(DataError::Parity)) {
186  hadParityError = true;
187  jemErrorSummary = HadParity;
188  fill(m_packageName, jemErrorSummary);
189  overview[crate] |= (1 << HadParity);
190  }
191  // PPM Link down: em.
192  if (err.get(DataError::LinkDown)) {
193  emLinkDownError = true;
194  jemErrorSummary = EMLink;
195  fill(m_packageName, jemErrorSummary);
196  overview[crate] |= (1 << EMLink);
197  }
198  // PPM Link down: had.
199  if (haderr.get(DataError::LinkDown)) {
200  hadLinkDownError = true;
201  jemErrorSummary = HadLink;
202  fill(m_packageName, jemErrorSummary);
203  overview[crate] |= (1 << HadLink);
204  }
205  parityErrorJepJE_em = emParityError;
206  fill(m_packageName, parityErrorJepJE_em);
207  parityErrorJepJE_had = hadParityError;
208  fill(m_packageName, parityErrorJepJE_had);
209  linkDownErrorJepJE_em = emLinkDownError;
210  fill(m_packageName, linkDownErrorJepJE_em);
211  linkDownErrorJepJE_had = hadLinkDownError;
212  fill(m_packageName, linkDownErrorJepJE_had);
213 
214  // Errors from substatus word from ROD: JEM
215  const int status = (err.error() >> LVL1::DataError::GLinkParity) & 0xff;
216  if (status) {
217  jemLoc = ypos;
218  for (int bit = 0; bit < 8; ++bit) {
219  if ((status >> bit) & 0x1) {
220  GLinkParityError = bit;
221  fill(m_packageName, GLinkParityError, jemLoc);
222  };
223  }
224  jemErrorSummary = JEMStatus;
225  fill(m_packageName, jemErrorSummary);
226  overview[crate] |= (1 << JEMStatus);
227  }
228  } // iterator
229 
230  // ===============
231  // For JEM Et Sums
232  // ===============
233 
234  // Retrieve Et sums from SG
236  if (!JEMEtSums.isValid()) {
237  ATH_MSG_ERROR("No JEMEtSums found in TES at " << m_JEMEtSumsLocation);
238  return StatusCode::FAILURE;
239  }
240 
241  auto etSumJE_Ex = Monitored::Scalar<int>("JEMEtSums_Ex", 0.);
242  auto etSumJE_Ey = Monitored::Scalar<int>("JEMEtSums_Ey", 0.);
243  auto etSumJE_Et = Monitored::Scalar<int>("JEMEtSums_Et", 0.);
244 
245  ATH_MSG_DEBUG("-------------- JEM Et Sums ---------------");
246 
247  xAOD::JEMEtSumsContainer::const_iterator sumsIterator = (*JEMEtSums).begin();
248  xAOD::JEMEtSumsContainer::const_iterator sumsIteratorEnd = (*JEMEtSums).end();
249  for (; sumsIterator != sumsIteratorEnd; ++sumsIterator) {
250  const xAOD::JEMEtSums* sums = *sumsIterator;
251  const int ex = sums->ex();
252  const int ey = sums->ey();
253  const int et = sums->et();
254 
255  etSumJE_Ex = ex;
256  etSumJE_Ey = ey;
257  etSumJE_Et = et;
258 
259  if (ex != 0) fill(m_packageName, etSumJE_Ex);
260  if (ey != 0) fill(m_packageName, etSumJE_Ey);
261  if (et != 0) fill(m_packageName, etSumJE_Et);
262 
263  ATH_MSG_DEBUG(" JEMEtSums Crate: " << sums->crate()
264  << " Module: " << sums->module()
265  << " Ex: " << ex
266  << " Ey: " << ey
267  << " Et: " << et);
268  }
269 
270  // ==================
271  // ==== JEM ROIS ====
272  // ==================
273 
274  // Retrieve JEM TOB RoIs from SG
276  if (!JEMRoIs.isValid()) {
277  ATH_MSG_ERROR("No JEM RoIs found in TES at " << m_JEMRoILocation);
278  return StatusCode::FAILURE;
279  }
280 
281  auto jemRoiEnergyLg = Monitored::Scalar<int>("jemRoiEnergyLg", 0.);
282  auto jemRoiEnergySm = Monitored::Scalar<int>("jemRoiEnergySm", 0.);
283  auto jemRoiTOBsPerJEM = Monitored::Scalar<int>("jemRoiTOBsPerJEM", 0.);
284  auto jemRoiEta = Monitored::Scalar<double>("jemRoiEta", 0.);
285  auto jemRoiPhi = Monitored::Scalar<double>("jemRoiPhi", 0.);
286  auto jemRoiEtaWeighted = Monitored::Scalar<double>("jemRoiEtaWeighted", 0.);
287  auto jemRoiPhiWeighted = Monitored::Scalar<double>("jemRoiPhiWeighted", 0.);
288  auto jemRoiEnergyWeight = Monitored::Scalar<int>("jemRoiEnergyWeight", 0.);
289 
290  ATH_MSG_DEBUG("-------------- JEM RoIs ---------------");
291 
292  xAOD::JEMTobRoIContainer::const_iterator roiIterator = (*JEMRoIs).begin();
293  xAOD::JEMTobRoIContainer::const_iterator roiIteratorEnd = (*JEMRoIs).end();
294  const int vecSize = m_crates *m_modules;
295  std::vector<int> tobCount(vecSize);
296  for (; roiIterator != roiIteratorEnd; ++roiIterator) {
297  const xAOD::JEMTobRoI* roi = *roiIterator;
298  const int crate = roi->crate();
299  const int module = roi->jem();
300  const int energyLg = roi->energyLarge();
301  const int energySm = roi->energySmall();
303  const LVL1::CoordinateRange coordRange = decoder.coordinate(roi->roiWord());
304  const double eta = coordRange.eta();
305  const double phi = coordRange.phi();
306 
307  if (energyLg) {
308  jemRoiEnergyLg = energyLg;
309  fill(m_packageName, jemRoiEnergyLg);
310  jemRoiEnergyWeight = energyLg;
311  fill(m_packageName, jemRoiEnergyWeight);
312  fillJEMRoIEtaVsPhiMon(eta, phi, jemRoiEta, jemRoiPhi);
313  fillJEMRoIEtaVsPhiMon(eta, phi, jemRoiEtaWeighted, jemRoiPhiWeighted, jemRoiEnergyWeight);
314  }
315  if (energySm) {
316  jemRoiEnergySm = energySm;
317  fill(m_packageName, jemRoiEnergySm);
318  }
319  ++tobCount[crate * m_modules + module];
320  }
321 
322  for (int crate = 0; crate < m_crates; ++crate) {
323  for (int jem = 0; jem < m_modules; ++jem) {
324  int val = tobCount[crate * m_modules + jem];
325  if (val) {
326  if (val > m_tobsPerJEM) val = m_tobsPerJEM + 1;
327  jemRoiTOBsPerJEM = val;
328  fill(m_packageName, jemRoiTOBsPerJEM);
329  }
330  }
331  }
332 
333  return StatusCode::SUCCESS;
334 }
335 
337  Monitored::Scalar<double> &phiMonitoredScalar
338  ) const
339 {
340  const double halfBin = 1. / (2. * m_phiScaleJE);
341  if (eta < -3.2 || eta > 3.2)
342  {
343  // Fill two bins for FCAL
344  phiMonitoredScalar = phi + halfBin;
345  fill(m_packageName, phiMonitoredScalar);
346  phiMonitoredScalar = phi - halfBin;
347  fill(m_packageName, phiMonitoredScalar);
348  }
349  else {
350  phiMonitoredScalar = phi;
351  fill(m_packageName, phiMonitoredScalar);
352  }
353 }
354 
356  Monitored::Scalar<double> &etaMonitoredScalar,
357  Monitored::Scalar<double> &phiMonitoredScalar,
359  ) const
360 {
361  double phiMod = phi * m_phiScaleJE;
362  double etaMod = eta;
363  const double absEta = std::abs(eta);
364  if (absEta > 2.4) {
365  int offset = 1;
366  if (absEta > 3.2) offset = 4;
367  else if (absEta > 2.9) offset = 3;
368  else if (absEta > 2.7) offset = 2;
369  etaMod = 2.3 + 0.2 * offset;
370  if (eta < 0.) etaMod = -etaMod;
371  }
372  etaMonitoredScalar = etaMod;
373  if (eta < -3.2 || eta > 3.2) {
374  // Fill two bins for FCAL
375  phiMod = std::floor(phiMod / 2) * 2. + 1.;
376  phiMonitoredScalar = phiMod + 0.5;
377  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar, weight);
378  phiMonitoredScalar = phiMod - 0.5;
379  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar, weight);
380  }
381  else {
382  phiMonitoredScalar = phiMod;
383  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar, weight);
384  }
385 }
386 
388  Monitored::Scalar<double> &etaMonitoredScalar,
389  Monitored::Scalar<double> &phiMonitoredScalar
390  ) const
391 {
392  double phiMod = phi * m_phiScaleJE;
393  double etaMod = eta;
394  const double absEta = std::abs(eta);
395  if (absEta > 2.4) {
396  int offset = 1;
397  if (absEta > 3.2) offset = 4;
398  else if (absEta > 2.9) offset = 3;
399  else if (absEta > 2.7) offset = 2;
400  etaMod = 2.3 + 0.2 * offset;
401  if (eta < 0.) etaMod = -etaMod;
402  }
403  etaMonitoredScalar = etaMod;
404  if (eta < -3.2 || eta > 3.2) {
405  // Fill two bins for FCAL
406  phiMod = std::floor(phiMod / 2) * 2. + 1.;
407  phiMonitoredScalar = phiMod + 0.5;
408  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar);
409  phiMonitoredScalar = phiMod - 0.5;
410  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar);
411  }
412  else {
413  phiMonitoredScalar = phiMod;
414  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar);
415  }
416 }
417 
419  Monitored::Scalar<double> &etaMonitoredScalar,
420  Monitored::Scalar<double> &phiMonitoredScalar,
422  ) const
423 {
424  const double phiMod = phi * m_phiScaleJE - 0.5;
425  phiMonitoredScalar = phiMod;
426  double etaMod = eta;
427  const double absEta = std::abs(eta);
428  if (absEta > 2.3) {
429  int offset = 1;
430  if (absEta > 4.0) offset = 5;
431  else if (absEta > 3.05) offset = 4;
432  else if (absEta > 2.8) offset = 3;
433  else if (absEta > 2.55) offset = 2;
434  etaMod = 2.2 + 0.2 * offset;
435  if (eta < 0.) etaMod = -etaMod;
436  }
437  const double etaShift = 0.1;
438  // JEPRoIDecoder returns eta=3.9 for both of the two forwardmost bins
439  if (eta > 3.8 && eta < 4.0) {
440  etaMonitoredScalar = 3.2 - etaShift;
441  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar, weight);
442  }
443  etaMonitoredScalar = etaMod - etaShift;
444  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar, weight);
445 }
446 
448  Monitored::Scalar<double> &etaMonitoredScalar,
449  Monitored::Scalar<double> &phiMonitoredScalar
450  ) const
451 {
452  const double phiMod = phi * m_phiScaleJE - 0.5;
453  phiMonitoredScalar = phiMod;
454  double etaMod = eta;
455  const double absEta = std::abs(eta);
456  if (absEta > 2.3) {
457  int offset = 1;
458  if (absEta > 4.0) offset = 5;
459  else if (absEta > 3.05) offset = 4;
460  else if (absEta > 2.8) offset = 3;
461  else if (absEta > 2.55) offset = 2;
462  etaMod = 2.2 + 0.2 * offset;
463  if (eta < 0.) etaMod = -etaMod;
464  }
465  const double etaShift = 0.1;
466  // JEPRoIDecoder returns eta=3.9 for both of the two forwardmost bins
467  if (eta > 3.8 && eta < 4.0) {
468  etaMonitoredScalar = 3.2 - etaShift;
469  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar);
470  }
471  etaMonitoredScalar = etaMod - etaShift;
472  fill(m_packageName, etaMonitoredScalar, phiMonitoredScalar);
473 }
xAOD::JEMTobRoI_v1::energyLarge
int energyLarge() const
Return energy large window size.
Definition: JEMTobRoI_v1.cxx:61
xAOD::JetElement_v2::hadJetElementError
uint32_t hadJetElementError() const
get hadJetElementError for hadJetElementErrorVec[peak] - time slice that (hopefully) contains the col...
Definition: JetElement_v2.cxx:142
et
Extra patterns decribing particle interation process.
JepJemMonitorAlgorithm::m_JetElementLocation
SG::ReadHandleKey< xAOD::JetElementContainer > m_JetElementLocation
Definition: JepJemMonitorAlgorithm.h:41
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
xAOD::JEMEtSums
JEMEtSums_v2 JEMEtSums
Define the latest version of the JEMEtSums class.
Definition: Event/xAOD/xAODTrigL1Calo/xAODTrigL1Calo/JEMEtSums.h:15
LVL1::DataError
Error data.
Definition: DataError.h:27
LVL1::Coordinate::phi
double phi() const
return phi
Definition: Coordinate.cxx:50
xAOD::JetElement_v2::emJetElementError
uint32_t emJetElementError() const
get emJetElementError for emJetElementErrorVec[peak] - time slice that (hopefully) contains the colli...
Definition: JetElement_v2.cxx:137
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
python.LArCondContChannels.decoder
decoder
def channelSelection(self, channelList, groupType): if groupType == self.SingleGroup: pass elif group...
Definition: LArCondContChannels.py:618
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LVL1::JEPRoIDecoder
A level 1 calorimeter trigger conversion service: returns the Coordinate represented by a RoI word.
Definition: JEPRoIDecoder.h:33
xAOD::JetElement_v2::emJetElementET
unsigned int emJetElementET() const
get emJetElementET for emJetElementETVec[peak] - time slice that (hopefully) contains the collision
Definition: JetElement_v2.cxx:62
xAOD::JetElement_v2
Description of JetElement_v2.
Definition: JetElement_v2.h:26
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::JEMTobRoI_v1::jem
int jem() const
Return JEM number (0-15)
Definition: JEMTobRoI_v1.cxx:43
JepJemMonitorAlgorithm.h
LVL1::DataError::GLinkParity
@ GLinkParity
Definition: DataError.h:40
xAOD::JEMEtSums_v2::crate
uint8_t crate() const
get crate number
xAOD::JEMEtSums_v2::ey
uint16_t ey() const
get ey for eyVec[peak] - time slice that (hopefully) contains the collision
Definition: JEMEtSums_v2.cxx:73
JepJemMonitorAlgorithm::m_JEMRoILocation
SG::ReadHandleKey< xAOD::JEMTobRoIContainer > m_JEMRoILocation
Definition: JepJemMonitorAlgorithm.h:43
xAOD::JetElement_v2::eta
float eta() const
get eta
xAOD::JEMTobRoI_v1::energySmall
int energySmall() const
Return energy small window size.
Definition: JEMTobRoI_v1.cxx:67
LVL1::CoordToHardware::jepCoordinateWord
unsigned int jepCoordinateWord(const Coordinate &coord)
return JEP (Jet Energy Processing) hardware coordinate word for this coordinate.
Definition: CoordToHardware.cxx:140
JepJemMonitorAlgorithm::m_packageName
StringProperty m_packageName
Definition: JepJemMonitorAlgorithm.h:32
JepJemMonitorAlgorithm::HadParity
@ HadParity
Definition: JepJemMonitorAlgorithm.h:46
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
JepJemMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: JepJemMonitorAlgorithm.cxx:13
python.PyAthena.module
module
Definition: PyAthena.py:134
xAOD::JEMEtSums_v2::et
uint16_t et() const
get et for etVec[peak] - time slice that (hopefully) contains the collision
Definition: JEMEtSums_v2.cxx:63
xAOD::JetElement_v2::peak
uint8_t peak() const
get peak
createCoolChannelIdFile.buffer
buffer
Definition: createCoolChannelIdFile.py:12
JepJemMonitorAlgorithm::m_maxSlices
Gaudi::Property< int > m_maxSlices
Definition: JepJemMonitorAlgorithm.h:35
LVL1::CoordinateRange
CoordinateRange class declaration.
Definition: CoordinateRange.h:36
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:193
LVL1::Coordinate
Coordinate class declaration.
Definition: TrigT1/TrigT1Interfaces/TrigT1Interfaces/Coordinate.h:50
lumiFormat.i
int i
Definition: lumiFormat.py:92
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::JEMEtSums_v2
Description of JEMEtSums_v2.
Definition: JEMEtSums_v2.h:26
JepJemMonitorAlgorithm::m_phiScaleJE
double m_phiScaleJE
Definition: JepJemMonitorAlgorithm.h:30
JepJemMonitorAlgorithm::JepJemMonitorAlgorithm
JepJemMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: JepJemMonitorAlgorithm.cxx:7
JepJemMonitorAlgorithm::EMParity
@ EMParity
Definition: JepJemMonitorAlgorithm.h:46
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
JepJemMonitorAlgorithm::m_tobsPerJEM
Gaudi::Property< int > m_tobsPerJEM
Definition: JepJemMonitorAlgorithm.h:38
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
xAOD::JetElement_v2::hadJetElementETVec
const std::vector< uint16_t > & hadJetElementETVec() const
get hadJetElementETVec - hadJetElementET for all time slices
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::JetElement_v2::hadJetElementET
unsigned int hadJetElementET() const
get hadJetElementET for hadJetElementETVec[peak] - time slice that (hopefully) contains the collision
Definition: JetElement_v2.cxx:70
JepJemMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: JepJemMonitorAlgorithm.cxx:37
LVL1::CoordToHardware
returns the trigger hardware components associated with a given Coordinate
Definition: CoordToHardware.h:42
LVL1::CoordToHardware::jepModule
unsigned int jepModule(const Coordinate &coord)
returns ID of JEP module (i.e.
Definition: CoordToHardware.cxx:67
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
JepJemMonitorAlgorithm::JEMStatus
@ JEMStatus
Definition: JepJemMonitorAlgorithm.h:46
JetVoronoiDiagramHelpers::coord
double coord
Definition: JetVoronoiDiagramHelpers.h:45
LVL1::Coordinate::eta
double eta() const
return eta
Definition: Coordinate.cxx:45
JepJemMonitorAlgorithm::HadLink
@ HadLink
Definition: JepJemMonitorAlgorithm.h:46
xAOD::JetElement_v2::emJetElementETVec
const std::vector< uint16_t > & emJetElementETVec() const
get emJetElementETVec - emJetElementET for all time slices
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
JepJemMonitorAlgorithm::m_JEMEtSumsLocation
SG::ReadHandleKey< xAOD::JEMEtSumsContainer > m_JEMEtSumsLocation
Definition: JepJemMonitorAlgorithm.h:42
xAOD::JEMTobRoI_v1::roiWord
uint32_t roiWord() const
get roiWord
xAOD::JEMTobRoI_v1
Description of JEMTobRoI_v1.
Definition: JEMTobRoI_v1.h:25
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
JepJemMonitorAlgorithm::fillJEMPhiMon
void fillJEMPhiMon(double eta, double phi, Monitored::Scalar< double > &phiMonitoredScalar) const
Definition: JepJemMonitorAlgorithm.cxx:336
JepJemMonitorAlgorithm::m_crates
Gaudi::Property< int > m_crates
Definition: JepJemMonitorAlgorithm.h:36
LVL1::CoordToHardware::jepCrate
unsigned int jepCrate(const Coordinate &Coord)
returns ID of JEP Crate that covers this coordinate
Definition: CoordToHardware.cxx:32
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
TauGNNUtils::Variables::absEta
bool absEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:232
xAOD::JEMEtSums_v2::ex
uint16_t ex() const
get ex for exVec[peak] - time slice that (hopefully) contains the collision
Definition: JEMEtSums_v2.cxx:68
xAOD::JetElement_v2::phi
float phi() const
get phi (note that for L1Calo phi runs from 0 to 2pi)
merge.status
status
Definition: merge.py:17
JepJemMonitorAlgorithm::fillJEMEtaVsPhiMon
void fillJEMEtaVsPhiMon(double eta, double phi, Monitored::Scalar< double > &etaMonitoredScalar, Monitored::Scalar< double > &phiMonitoredScalar, Monitored::Scalar< int > &weight) const
Definition: JepJemMonitorAlgorithm.cxx:355
JepJemMonitorAlgorithm::m_modules
Gaudi::Property< int > m_modules
Definition: JepJemMonitorAlgorithm.h:37
JepJemMonitorAlgorithm::EMLink
@ EMLink
Definition: JepJemMonitorAlgorithm.h:46
xAOD::JEMEtSums_v2::module
uint8_t module() const
get module
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
LVL1::DataError::get
int get(ErrorBit bit) const
Return an error bit or data.
Definition: DataError.cxx:48
JepJemMonitorAlgorithm::fillJEMRoIEtaVsPhiMon
void fillJEMRoIEtaVsPhiMon(double eta, double phi, Monitored::Scalar< double > &etaMonitoredScalar, Monitored::Scalar< double > &phiMonitoredScalar, Monitored::Scalar< int > &weight) const
Definition: JepJemMonitorAlgorithm.cxx:418
fillSCTHists.etaMod
etaMod
Definition: fillSCTHists.py:23
xAOD::JEMTobRoI_v1::crate
int crate() const
Return crate number (0-1)
Definition: JEMTobRoI_v1.cxx:37