ATLAS Offline Software
Loading...
Searching...
No Matches
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
7JepJemMonitorAlgorithm::JepJemMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
8 : AthMonitorAlgorithm(name,pSvcLocator),
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
37StatusCode 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();
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
168 const LVL1::DataError err(je->emJetElementError());
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();
302 LVL1::JEPRoIDecoder decoder;
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}
#define M_PI
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
double coord
Type of coordination system.
virtual StatusCode initialize() override
initialize
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
SG::ReadHandleKey< xAOD::JEMTobRoIContainer > m_JEMRoILocation
JepJemMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
void fillJEMRoIEtaVsPhiMon(double eta, double phi, Monitored::Scalar< double > &etaMonitoredScalar, Monitored::Scalar< double > &phiMonitoredScalar, Monitored::Scalar< int > &weight) const
Gaudi::Property< int > m_tobsPerJEM
virtual StatusCode initialize() override
initialize
SG::ReadHandleKey< xAOD::JEMEtSumsContainer > m_JEMEtSumsLocation
SG::ReadHandleKey< xAOD::JetElementContainer > m_JetElementLocation
Gaudi::Property< int > m_maxSlices
Gaudi::Property< int > m_crates
Gaudi::Property< int > m_modules
void fillJEMPhiMon(double eta, double phi, Monitored::Scalar< double > &phiMonitoredScalar) const
void fillJEMEtaVsPhiMon(double eta, double phi, Monitored::Scalar< double > &etaMonitoredScalar, Monitored::Scalar< double > &phiMonitoredScalar, Monitored::Scalar< int > &weight) const
returns the trigger hardware components associated with a given Coordinate
unsigned int jepModule(const Coordinate &coord)
returns ID of JEP module (i.e.
unsigned int jepCoordinateWord(const Coordinate &coord)
return JEP (Jet Energy Processing) hardware coordinate word for this coordinate.
unsigned int jepCrate(const Coordinate &Coord)
returns ID of JEP Crate that covers this coordinate
CoordinateRange class declaration.
double phi() const
return phi
double eta() const
return eta
Error data.
Definition DataError.h:27
int get(ErrorBit bit) const
Return an error bit or data.
Definition DataError.cxx:48
A level 1 calorimeter trigger conversion service: returns the Coordinate represented by a RoI word.
Declare a monitored scalar variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
uint16_t et() const
get et for etVec[peak] - time slice that (hopefully) contains the collision
uint16_t ey() const
get ey for eyVec[peak] - time slice that (hopefully) contains the collision
uint8_t module() const
get module
uint16_t ex() const
get ex for exVec[peak] - time slice that (hopefully) contains the collision
uint8_t crate() const
get crate number
uint32_t roiWord() const
get roiWord
int energyLarge() const
Return energy large window size.
int crate() const
Return crate number (0-1)
int energySmall() const
Return energy small window size.
int jem() const
Return JEM number (0-15)
float phi() const
get phi (note that for L1Calo phi runs from 0 to 2pi)
const std::vector< uint16_t > & hadJetElementETVec() const
get hadJetElementETVec - hadJetElementET for all time slices
unsigned int hadJetElementET() const
get hadJetElementET for hadJetElementETVec[peak] - time slice that (hopefully) contains the collision
uint32_t emJetElementError() const
get emJetElementError for emJetElementErrorVec[peak] - time slice that (hopefully) contains the colli...
float eta() const
get eta
const std::vector< uint16_t > & emJetElementETVec() const
get emJetElementETVec - emJetElementET for all time slices
uint32_t hadJetElementError() const
get hadJetElementError for hadJetElementErrorVec[peak] - time slice that (hopefully) contains the col...
unsigned int emJetElementET() const
get emJetElementET for emJetElementETVec[peak] - time slice that (hopefully) contains the collision
uint8_t peak() const
get peak
JetElement_v2 JetElement
Define the latest version of the JetElement class.
JEMEtSums_v2 JEMEtSums
Define the latest version of the JEMEtSums class.
JEMTobRoI_v1 JEMTobRoI
Define the latest version of the JEMTobRoI class.
Extra patterns decribing particle interation process.
void fill(H5::Group &out_file, size_t iterations)