ATLAS Offline Software
Loading...
Searching...
No Matches
JfexMonitorAlgorithm.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
7#include "TMath.h"
9
10
11JfexMonitorAlgorithm::JfexMonitorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
12 : AthMonitorAlgorithm(name,pSvcLocator)
13{
14}
15
17
18 ATH_MSG_DEBUG("JfexMonitorAlgorith::initialize");
19 ATH_MSG_DEBUG("Package Name "<< m_Grouphist);
20
21 ATH_MSG_DEBUG("m_jFexLRJetContainerKey"<< m_jFexLRJetContainerKey);
22 ATH_MSG_DEBUG("m_jFexSRJetContainerKey"<< m_jFexSRJetContainerKey);
23 ATH_MSG_DEBUG("m_jFexTauContainerKey" << m_jFexTauContainerKey);
24 ATH_MSG_DEBUG("m_jFexFwdElContainerKey"<< m_jFexFwdElContainerKey);
25 ATH_MSG_DEBUG("m_jFexMETContainerKey" << m_jFexMETContainerKey);
26 ATH_MSG_DEBUG("m_jFexSumEtContainerKey"<< m_jFexSumEtContainerKey);
27
28 ATH_CHECK( m_jFexLRJetContainerKey.initialize() );
29 ATH_CHECK( m_jFexSRJetContainerKey.initialize() );
30 ATH_CHECK( m_jFexTauContainerKey.initialize() );
31 ATH_CHECK( m_jFexFwdElContainerKey.initialize() );
32 ATH_CHECK( m_jFexMETContainerKey.initialize() );
33 ATH_CHECK( m_jFexSumEtContainerKey.initialize() );
34
35
37}
38
39StatusCode JfexMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
40
41 ATH_MSG_DEBUG("JfexMonitorAlgorithm::fillHistograms");
42
43 bool jJ_isInValid = false;
44 bool jLJ_isInValid = false;
45 bool jTau_isInValid = false;
46 bool jEM_isInValid = false;
47 bool jXE_isInValid = false;
48 bool jTE_isInValid = false;
49
51 if(!jFexSRJetContainer.isValid()) {
52 ATH_MSG_WARNING("No jFex SR Jet container found in storegate "<< m_jFexSRJetContainerKey<<". Will be skipped!");
53 jJ_isInValid = true;
54 }
56 if(!jFexLRJetContainer.isValid()) {
57 ATH_MSG_WARNING("No jFex LR Jet container found in storegate "<< m_jFexLRJetContainerKey<<". Will be skipped!");
58 jLJ_isInValid = true;
59 }
61 if(!jFexTauContainer.isValid()) {
62 ATH_MSG_WARNING("No jFex Tau container found in storegate "<< m_jFexTauContainerKey<<". Will be skipped!");
63 jTau_isInValid = true;
64 }
66 if(!jFexEMContainer.isValid()) {
67 ATH_MSG_WARNING("No jFex EM container found in storegate "<< m_jFexFwdElContainerKey<<". Will be skipped!");
68 jEM_isInValid = true;
69 }
71 if(!jFexMETContainer.isValid()) {
72 ATH_MSG_WARNING("No jFex MET container found in storegate "<< m_jFexMETContainerKey<<". Will be skipped!");
73 jXE_isInValid = true;
74 }
76 if(!jFexSumETContainer.isValid()) {
77 ATH_MSG_WARNING("No jFex MET container found in storegate "<< m_jFexSumEtContainerKey<<". Will be skipped!");
78 jTE_isInValid = true;
79 }
80
81 // variables for histograms
82 auto lbn = Monitored::Scalar<int>("LBN",GetEventInfo(ctx)->lumiBlock());
83 // jJ
84 auto jFexSRJetModule = Monitored::Scalar<int> ("jJ_jFexNumber",0);
85 auto jFexSRJetFPGA = Monitored::Scalar<int> ("jJ_fpgaNumber",0);
86 auto jFexSRJetEt = Monitored::Scalar<int> ("jJ_Et",0);
87 auto jFexSRJeteta = Monitored::Scalar<float>("jJ_Eta",0.0);
88 auto jFexSRJetphi = Monitored::Scalar<float>("jJ_Phi",0.0);
89 auto jFexSRJeteta_glo = Monitored::Scalar<float>("jJ_GlobalEta",0.0);
90 auto jFexSRJetphi_glo = Monitored::Scalar<float>("jJ_GlobalPhi",0.0);
91 auto jFexSRJetBinNumber = Monitored::Scalar<int>("jJ_binNumber",0);
92
93 // jLJ
94 auto jFexLRJetModule = Monitored::Scalar<int> ("jLJ_jFexNumber",0);
95 auto jFexLRJetFPGA = Monitored::Scalar<int> ("jLJ_fpgaNumber",0);
96 auto jFexLRJetEt = Monitored::Scalar<int> ("jLJ_Et",0);
97 auto jFexLRJeteta = Monitored::Scalar<float>("jLJ_Eta",0.0);
98 auto jFexLRJetphi = Monitored::Scalar<float>("jLJ_Phi",0.0);
99 auto jFexLRJeteta_glo = Monitored::Scalar<float>("jLJ_GlobalEta",0.0);
100 auto jFexLRJetphi_glo = Monitored::Scalar<float>("jLJ_GlobalPhi",0.0);
101
102
103 // jTau
104 auto jFexTauModule = Monitored::Scalar<int> ("jTau_jFexNumber",0);
105 auto jFexTauFPGA = Monitored::Scalar<int> ("jTau_fpgaNumber",0);
106 auto jFexTauEt = Monitored::Scalar<int> ("jTau_Et",0);
107 auto jFexTauIso = Monitored::Scalar<int> ("jTau_Iso",0);
108 auto jFexTaueta = Monitored::Scalar<float>("jTau_Eta",0.0);
109 auto jFexTauphi = Monitored::Scalar<float>("jTau_Phi",0.0);
110 auto jFexTaueta_glo = Monitored::Scalar<float>("jTau_GlobalEta",0.0);
111 auto jFexTauphi_glo = Monitored::Scalar<float>("jTau_GlobalPhi",0.0);
112 auto jFexTauBinNumber = Monitored::Scalar<int>("jTau_binNumber",0);
113
114 // jEM
115 auto jFexEMModule = Monitored::Scalar<int> ("jEM_jFexNumber",0);
116 auto jFexEMFPGA = Monitored::Scalar<int> ("jEM_fpgaNumber",0);
117 auto jFexEMEt = Monitored::Scalar<int> ("jEM_Et",0);
118 auto jFexEMeta = Monitored::Scalar<float>("jEM_Eta",0.0);
119 auto jFexEMphi = Monitored::Scalar<float>("jEM_Phi",0.0);
120 auto jFexEMeta_glo = Monitored::Scalar<float>("jEM_GlobalEta",0.0);
121 auto jFexEMphi_glo = Monitored::Scalar<float>("jEM_GlobalPhi",0.0);
122 auto jFexEMIso = Monitored::Scalar<int> ("jEM_Iso",0);
123 auto jFexEMf1 = Monitored::Scalar<int> ("jEM_f1",0);
124 auto jFexEMf2 = Monitored::Scalar<int> ("jEM_f2",0);
125 auto jFexEMBinNumber = Monitored::Scalar<int>("jEM_binNumber",0);
126
127 // jXE
128 auto jFexMETX = Monitored::Scalar<int> ("jXE_X",0);
129 auto jFexMETY = Monitored::Scalar<int> ("jXE_Y",0);
130 auto jFexMET = Monitored::Scalar<float>("jXE_MET",0.0);
131 auto jFexMETphi = Monitored::Scalar<float>("jXE_phi",0.0);
132
133 // jTE
134 auto jFexSumEt_low = Monitored::Scalar<int> ("jTE_low",0);
135 auto jFexSumEt_high = Monitored::Scalar<int> ("jTE_high",0);
136 auto jFexSumEt_total = Monitored::Scalar<float>("jTE_SumEt",0.0);
137
138 auto weight = Monitored::Scalar<float>("weight",1);
139
140 // write -1 into bins in maps that are always empty
141 std::call_once(m_initOnce, [&]() {
142 weight = -1;
143 // empty bins due to irregular structure of FCAL
144 for (auto& [eta, phi] : jFEXMapEmptyBinCenters) {
145 jFexSRJeteta = eta;
146 jFexSRJetphi = phi;
147 jFexEMeta = eta;
148 jFexEMphi = phi;
149 fill(m_Groupmaps,jFexSRJeteta,jFexSRJetphi,jFexEMeta,jFexEMphi,weight);
150 fill(m_GroupmapsHighPt,jFexSRJeteta,jFexSRJetphi,jFexEMeta,jFexEMphi,weight);
151 }
152
153 for (auto& [eta, phi] : jFEXMapEmptyBinCentersJetsOnly) {
154 jFexSRJeteta = eta;
155 jFexSRJetphi = phi;
156 fill(m_Groupmaps,jFexSRJeteta,jFexSRJetphi,weight);
157 fill(m_GroupmapsHighPt,jFexSRJeteta,jFexSRJetphi,weight);
158 }
159
160 // central region without jEM
161 for (int ieta=-23; ieta<23; ieta++){
162 jFexEMeta = 0.1 * ieta + 0.05;
163 for (int iphi=-32; iphi<33; iphi++){
164 jFexEMphi = M_PI/32 * iphi + M_PI/64;
165 fill(m_Groupmaps,jFexEMeta,jFexEMphi,weight);
166 fill(m_GroupmapsHighPt,jFexEMeta,jFexEMphi,weight);
167 }
168 }
169 weight = 1;
170 });
171
172 if (!jJ_isInValid) {
173 for (const xAOD::jFexSRJetRoI *jFexSRJetRoI : *jFexSRJetContainer) {
174 if (jFexSRJetRoI->tobWord() == 0)
175 continue; // remove empty TOBs
176 jFexSRJetModule = jFexSRJetRoI->jFexNumber();
177 jFexSRJetFPGA = jFexSRJetRoI->fpgaNumber();
178 jFexSRJetEt = jFexSRJetRoI->tobEt();
179 jFexSRJeteta = jFexSRJetRoI->eta();
180 jFexSRJetphi = jFexSRJetRoI->phi();
181 jFexSRJeteta_glo = jFexSRJetRoI->globalEta();
182 jFexSRJetphi_glo = jFexSRJetRoI->globalPhi();
183 fill(m_Grouphist, jFexSRJetModule, jFexSRJetFPGA, jFexSRJetEt,
184 jFexSRJeteta, jFexSRJetphi, jFexSRJeteta_glo, jFexSRJetphi_glo);
185
186 ANA_CHECK(fillJetMaps(jFexSRJetRoI, jFexSRJeteta, jFexSRJetphi,
187 jFexSRJetBinNumber, lbn, weight));
188 }
189 }
190
191 if (!jTau_isInValid) {
192 for (const xAOD::jFexTauRoI *jFexTauRoI : *jFexTauContainer) {
193 if (jFexTauRoI->tobWord() == 0)
194 continue; // remove empty TOBs
195 jFexTauModule = jFexTauRoI->jFexNumber();
196 jFexTauFPGA = jFexTauRoI->fpgaNumber();
197 jFexTauEt = jFexTauRoI->tobEt();
198 jFexTauIso = jFexTauRoI->tobIso();
199 jFexTaueta = jFexTauRoI->eta();
200 jFexTauphi = jFexTauRoI->phi();
201 jFexTaueta_glo = jFexTauRoI->globalEta();
202 jFexTauphi_glo = jFexTauRoI->globalPhi();
203 ANA_CHECK(fillMapsCentralAndFCAL(jFexTauRoI, jFexTaueta, jFexTauphi,
204 jFexTauBinNumber, lbn, m_jTauEtaBins,
205 weight));
206 }
207 }
208
209 if (!jEM_isInValid) {
210 for (const xAOD::jFexFwdElRoI *jFexFwdElRoI : *jFexEMContainer) {
211 if (jFexFwdElRoI->tobWord() == 0)
212 continue; // remove empty TOBs
213 jFexEMModule = jFexFwdElRoI->jFexNumber();
214 jFexEMFPGA = jFexFwdElRoI->fpgaNumber();
215 jFexEMEt = jFexFwdElRoI->tobEt();
216 jFexEMeta = jFexFwdElRoI->eta();
217 jFexEMphi = jFexFwdElRoI->phi();
218 jFexEMeta_glo = jFexFwdElRoI->globalEta();
219 jFexEMphi_glo = jFexFwdElRoI->globalPhi();
220 jFexEMIso = jFexFwdElRoI->tobEMIso();
221 jFexEMf1 = jFexFwdElRoI->tobEMf1();
222 jFexEMf2 = jFexFwdElRoI->tobEMf2();
223 fill(m_Grouphist, jFexEMModule, jFexEMFPGA, jFexEMEt, jFexEMeta,
224 jFexEMphi, jFexEMeta_glo, jFexEMphi_glo, jFexEMIso, jFexEMf1,
225 jFexEMf2);
226 ANA_CHECK(fillEMMaps(jFexFwdElRoI, jFexEMeta, jFexEMphi, jFexEMBinNumber,
227 lbn, weight));
228 }
229 }
230
231 if(!jLJ_isInValid) {
232 for(const xAOD::jFexLRJetRoI* jFexLRJetRoI : *jFexLRJetContainer) {
233 if(jFexLRJetRoI->tobWord()==0) continue; //remove empty TOBs
234 jFexLRJetModule=jFexLRJetRoI->jFexNumber();
235 jFexLRJetFPGA=jFexLRJetRoI->fpgaNumber();
236 jFexLRJetEt=jFexLRJetRoI->tobEt();
237 jFexLRJeteta=jFexLRJetRoI->eta();
238 jFexLRJetphi=jFexLRJetRoI->phi();
239 jFexLRJeteta_glo=jFexLRJetRoI->globalEta();
240 jFexLRJetphi_glo=jFexLRJetRoI->globalPhi();
241 fill(m_Grouphist,jFexLRJetModule,jFexLRJetFPGA,jFexLRJetEt,jFexLRJeteta,jFexLRJetphi,jFexLRJeteta_glo,jFexLRJetphi_glo);
242 }
243 }
244
245 if(!jXE_isInValid){
246 float metx = 0;
247 float mety = 0;
248 for(const xAOD::jFexMETRoI* jFexMETRoI : *jFexMETContainer) {
249 jFexMETX =jFexMETRoI->tobEx();
250 jFexMETY =jFexMETRoI->tobEy();
251 if(jFexMETRoI->tobEtScale() != 0) {
252 metx += jFexMETRoI->Ex()/jFexMETRoI->tobEtScale();
253 mety += jFexMETRoI->Ey()/jFexMETRoI->tobEtScale();
254 }
255
256 fill(m_Grouphist,jFexMETX,jFexMETY);
257 }
258 if(jFexMETContainer->size()>0) {
259 jFexMET = TMath::Sqrt(std::pow(metx,2)+std::pow(mety,2));
260 jFexMETphi = TMath::ATan2(mety,metx);
261 fill(m_Grouphist,jFexMET,jFexMETphi);
262 }
263 }
264
265 if(!jTE_isInValid){
266 int sumEt_total = 0;
267 for(const xAOD::jFexSumETRoI* jFexSumETRoI : *jFexSumETContainer) {
268 jFexSumEt_low =jFexSumETRoI->tobEt_lower();
269 jFexSumEt_high =jFexSumETRoI->tobEt_upper();
270 sumEt_total += jFexSumETRoI->tobEt_lower()+jFexSumETRoI->tobEt_upper();
271 fill(m_Grouphist,jFexSumEt_low,jFexSumEt_high);
272 }
273 if(jFexSumETContainer->size()>0) {
274 jFexSumEt_total = sumEt_total;
275 fill(m_Grouphist,jFexSumEt_total);
276 }
277 }
278
279 return StatusCode::SUCCESS;
280}
281
286 if (abs(eta) > 2.5 && abs(eta) < 3.1) {
287 ANA_CHECK(
288 fillMapsEndcap(tob, eta, phi, binNumber, lbn, m_jJEtaBins, weight));
289 } else if (abs(eta) > 3.1 && abs(eta) < 3.2) {
290 ANA_CHECK(
291 fillMapsOverlap(tob, eta, phi, binNumber, lbn, m_jJEtaBins, weight));
292 } else {
293 ANA_CHECK(fillMapsCentralAndFCAL(tob, eta, phi, binNumber, lbn, m_jJEtaBins,
294 weight));
295 }
296
297 return StatusCode::SUCCESS;
298}
299
304 if (abs(eta) > 2.5 && abs(eta) < 3.2) {
305 ANA_CHECK(
306 fillMapsEndcap(tob, eta, phi, binNumber, lbn, m_jEMEtaBins, weight));
307 } else {
308 ANA_CHECK(fillMapsCentralAndFCAL(tob, eta, phi, binNumber, lbn,
309 m_jEMEtaBins, weight));
310 }
311 return StatusCode::SUCCESS;
312}
313
314template <typename TOB>
318 const std::vector<float>& etaBinBorders, Monitored::Scalar<float> &weight) const {
319 binNumber = binNumberFromCoordinates(eta, phi, etaBinBorders);
320 fill(m_Groupmaps, eta, phi, lbn, binNumber, weight);
321 if (passesEnergyCut(tob))
322 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
323 return StatusCode::SUCCESS;
324}
325
326template <typename TOB>
330 const std::vector<float>& etaBinBorders, Monitored::Scalar<float> &weight) const {
331 float originalPhi = phi;
332 phi = originalPhi - M_PI / 64;
333 fill(m_Groupmaps, eta, phi, weight);
334 binNumber = binNumberFromCoordinates(eta, phi, etaBinBorders);
335 fill(m_Groupmaps, lbn, binNumber);
336 if (passesEnergyCut(tob))
337 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
338 phi = originalPhi + M_PI / 64;
339 fill(m_Groupmaps, eta, phi, weight);
340 binNumber = binNumberFromCoordinates(eta, phi, etaBinBorders);
341 fill(m_Groupmaps, lbn, binNumber);
342 if (passesEnergyCut(tob))
343 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
344
345 return StatusCode::SUCCESS;
346}
347
351 Monitored::Scalar<int> &lbn, const std::vector<float>& etaBinBorders,
352 Monitored::Scalar<float> &weight) const {
353 binNumber = binNumberFromCoordinates(eta, phi, etaBinBorders);
354 fill(m_Groupmaps, lbn, binNumber);
355 float originalPhi = phi;
356 uint8_t localEta = tob->tobLocalEta();
357 bool isFCAL = localEta >= 13;
358 if (isFCAL) {
359 eta = eta > 0 ? 3.175 : -3.175;
360 fill(m_Groupmaps, eta, phi, weight);
361 if (passesEnergyCut(tob))
362 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
363 } else {
364 eta = eta > 0 ? 3.125 : -3.125;
365 phi = originalPhi - M_PI / 64;
366 fill(m_Groupmaps, eta, phi, weight);
367 if (passesEnergyCut(tob))
368 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
369 phi = originalPhi + M_PI / 64;
370 fill(m_Groupmaps, eta, phi, weight);
371 if (passesEnergyCut(tob))
372 fill(m_GroupmapsHighPt, eta, phi, lbn, binNumber, weight);
373 }
374 return StatusCode::SUCCESS;
375}
376
378 const xAOD::jFexSRJetRoI *tob) const {
379 return tob->et() >= 20000;
380}
381
383 const xAOD::jFexFwdElRoI *tob) const {
384 return tob->et() >= 10000;
385}
386
388 return tob->et() >= 10000;
389}
390
392 float eta, float phi, const std::vector<float>& etaBinBorders) const {
393 if (etaBinBorders.size() == 0) {
394 ANA_MSG_ERROR("List of eta bin borders is empty!");
395 return 0;
396 }
397
398 int iEta = 0;
399 int iPhi = 0;
400
401 for (size_t i = 0; i < etaBinBorders.size() - 1; ++i) {
402 if (etaBinBorders.at(i) <= eta && etaBinBorders.at(i + 1) > eta) {
403 iEta = i;
404 break;
405 }
406 }
407
408 // 64 regular bins from -pi to pi
409 constexpr float phiBinWidth = 2 * M_PI / 64;
410 for (int i = 0; i < 64 - 1; i++) {
411 if (i * phiBinWidth - M_PI <= phi && (i + 1) * phiBinWidth - M_PI > phi) {
412 iPhi = i;
413 break;
414 }
415 }
416
417 // following ROOT's convention of lowest bin being number 1
418 iPhi++;
419
420 int binNumber = iEta * 64 + iPhi;
421 return binNumber;
422}
#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_WARNING(x)
#define ATH_MSG_DEBUG(x)
macros for messaging and checking status codes
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful
constexpr std::array< std::pair< float, float >, 96 > jFEXMapEmptyBinCentersJetsOnly
constexpr std::array< std::pair< float, float >, 2036 > jFEXMapEmptyBinCenters
virtual StatusCode initialize() override
initialize
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
StringProperty m_GroupmapsHighPt
SG::ReadHandleKey< xAOD::jFexTauRoIContainer > m_jFexTauContainerKey
SG::ReadHandleKey< xAOD::jFexFwdElRoIContainer > m_jFexFwdElContainerKey
Gaudi::Property< std::vector< float > > m_jEMEtaBins
SG::ReadHandleKey< xAOD::jFexSumETRoIContainer > m_jFexSumEtContainerKey
virtual StatusCode initialize() override
initialize
Gaudi::Property< std::vector< float > > m_jJEtaBins
int binNumberFromCoordinates(float eta, float phi, const std::vector< float > &etaBinBorders) const
StatusCode fillJetMaps(const xAOD::jFexSRJetRoI *tob, Monitored::Scalar< float > &eta, Monitored::Scalar< float > &phi, Monitored::Scalar< int > &binNumber, Monitored::Scalar< int > &lbn, Monitored::Scalar< float > &weight) const
SG::ReadHandleKey< xAOD::jFexMETRoIContainer > m_jFexMETContainerKey
Gaudi::Property< std::vector< float > > m_jTauEtaBins
bool passesEnergyCut(const xAOD::jFexSRJetRoI *tob) const
StatusCode fillMapsEndcap(TOB tob, Monitored::Scalar< float > &eta, Monitored::Scalar< float > &phi, Monitored::Scalar< int > &binNumber, Monitored::Scalar< int > &lbn, const std::vector< float > &etaBinBorders, Monitored::Scalar< float > &weight) const
StatusCode fillMapsCentralAndFCAL(TOB tob, Monitored::Scalar< float > &eta, Monitored::Scalar< float > &phi, Monitored::Scalar< int > &binNumber, Monitored::Scalar< int > &lbn, const std::vector< float > &etaBinBorders, Monitored::Scalar< float > &weight) const
StatusCode fillMapsOverlap(const xAOD::jFexSRJetRoI *tob, Monitored::Scalar< float > &eta, Monitored::Scalar< float > &phi, Monitored::Scalar< int > &binNumber, Monitored::Scalar< int > &lbn, const std::vector< float > &etaBinBorders, Monitored::Scalar< float > &weight) const
SG::ReadHandleKey< xAOD::jFexSRJetRoIContainer > m_jFexSRJetContainerKey
JfexMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode fillEMMaps(const xAOD::jFexFwdElRoI *tob, Monitored::Scalar< float > &eta, Monitored::Scalar< float > &phi, Monitored::Scalar< int > &binNumber, Monitored::Scalar< int > &lbn, Monitored::Scalar< float > &weight) const
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
SG::ReadHandleKey< xAOD::jFexLRJetRoIContainer > m_jFexLRJetContainerKey
Declare a monitored scalar variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
uint32_t tobWord() const
The "raw" 32-bit word describing the object candidate, 27 bit-word used at hardware level.
int globalEta() const
Calculated from Tob.
uint8_t tobEMIso() const
unsigned int et() const
Methods that require combining results or applying scales.
uint8_t tobEMf2() const
uint globalPhi() const
uint16_t tobEt() const
Decoded from Tob (for convenience)
uint8_t tobEMf1() const
uint8_t fpgaNumber() const
uint8_t jFexNumber() const
Additional info (initialization)
uint8_t fpgaNumber() const
uint16_t tobEt() const
uint globalPhi() const
uint8_t jFexNumber() const
uint32_t tobWord() const
The "raw" 32-bit word describing the object candidate.
int tobEtScale() const
int Ey() const
Met Ey in 1 MeV scale (all signs considered)
int Ex() const
Methods that require combining results or applying scales.
uint8_t fpgaNumber() const
uint16_t tobEt() const
uint8_t tobLocalEta() const
uint32_t tobWord() const
The "raw" 32-bit word describing the object candidate.
uint8_t jFexNumber() const
unsigned int et() const
Methods that require combining results or applying scales.
uint globalPhi() const
uint16_t tobEt_lower() const
uint16_t tobEt_upper() const
uint32_t tobWord() const
The "raw" 32-bit word describing the object candidate.
uint globalPhi() const
int globalEta() const
uint16_t tobIso() const
float phi() const
uint8_t fpgaNumber() const
uint16_t tobEt() const
float eta() const
uint8_t jFexNumber() const
unsigned int et() const
Methods that require combining results or applying scales.
jFexFwdElRoI_v1 jFexFwdElRoI
Define the latest version of the jFexFwdElJetRoI class.
jFexSumETRoI_v1 jFexSumETRoI
Define the latest version of the jFexSumETJetRoI class.
jFexLRJetRoI_v1 jFexLRJetRoI
Define the latest version of the jFexLRJetRoI class.
jFexTauRoI_v1 jFexTauRoI
Define the latest version of the jFexSRJetRoI class.
Definition jFexTauRoI.h:13
jFexSRJetRoI_v1 jFexSRJetRoI
Define the latest version of the jFexSRJetRoI class.
jFexMETRoI_v1 jFexMETRoI
Define the latest version of the jFexMETRoI class.
Definition jFexMETRoI.h:13
void fill(H5::Group &out_file, size_t iterations)