ATLAS Offline Software
jFEXPileupAndNoise.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 //***************************************************************************
5 // jFEXPileupAndNoise - Algorithm for Pileup and Noise in jFEX
6 // -------------------
7 // begin : 24 05 2021
8 // email : Sergi.Rodriguez@cern.ch
9 //***************************************************************************
10 #include <iostream>
11 #include <vector>
12 #include <stdio.h>
13 #include <math.h>
14 #include "L1CaloFEXSim/jTower.h"
20 #include "StoreGate/StoreGateSvc.h"
23 
24 namespace LVL1{
25 
26 //Default Constructor
27 LVL1::jFEXPileupAndNoise::jFEXPileupAndNoise(const std::string& type, const std::string& name, const IInterface* parent): AthAlgTool(type, name, parent) {
28  declareInterface<IjFEXPileupAndNoise>(this);
29 }
30 
33 }
34 
36 
37  ATH_CHECK(m_jTowerContainerKey.initialize());
38  ATH_CHECK( m_BDToolKey.initialize() );
39 
40 
41  return StatusCode::SUCCESS;
42 }
43 
44 //calls container for TT
46 
47  m_jTowerContainer = SG::ReadHandle<jTowerContainer>(m_jTowerContainerKey);
48  if(! m_jTowerContainer.isValid()) {
49  ATH_MSG_ERROR("Could not retrieve jTowerContainer " << m_jTowerContainerKey.key());
50  return StatusCode::FAILURE;
51  }
52 
53  return StatusCode::SUCCESS;
54 }
55 
57 
58  m_is_FWD=0;
59  m_apply_pileup2jets=0;
60  m_apply_pileup2met=0;
61  m_apply_noise2jets=0;
62  m_apply_noise2met=0;
63 
64  reset_conters();
65 
66  return StatusCode::SUCCESS;
67 }
68 
70 
71  m_rho_EM = 0;
72  m_rho_HAD1 = 0;
73  m_rho_HAD2 = 0;
74  m_rho_HAD3 = 0;
75  m_rho_FCAL = 0;
76 
77  m_count_rho_EM = 0;
78  m_count_rho_HAD1 = 0;
79  m_count_rho_HAD2 = 0;
80  m_count_rho_HAD3 = 0;
81  m_count_rho_FCAL = 0;
82 
83 }
84 
85 
86 //Setup for the central region, duplicate fuction
88 
89  ATH_MSG_DEBUG("---------------- jFEXPileupAndNoise::setup ----------------");
90  m_is_FWD = 0; //central region
93 }
94 
95 
96 //Setup for the forward region, duplicate fuction
98 
99  ATH_MSG_DEBUG("---------------- jFEXPileupAndNoise::setup ----------------");
100  m_is_FWD = 1; //forward region
103 }
104 
105 
107 
108  reset_conters();
109 
111  if(! myDBTool.isValid()) {
112  ATH_MSG_ERROR("Could not retrieve DB tool " << m_BDToolKey);
113  }
114 
115  for(int iphi=0;iphi<FEXAlgoSpaceDefs::jFEX_algoSpace_height;iphi++){
116  for(int ieta=0;ieta<m_etaMAX;ieta++){
117 
118  int TTID = 0;
119 
120  if(m_is_FWD){
121  TTID = m_FPGA_forward[iphi][ieta];
122  }
123  else{
124  TTID = m_FPGA_central[iphi][ieta];
125  }
126 
127  if(TTID == 0){
128  continue; //skipping TTID iqual to 0
129  }
130 
131  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
132 
133  int tmp_eta = getTTowerEta(tmpTower);
134  // energies used below are in MeV, but to reproduce firmware behavior we need to truncate at the same position,
135  // i.e., temporarily go back to the granularity used in firmware!
136  int em_granularity = 25;
137  int had_granularity = tmp_eta < 15 ? 500 : 25; //For Tile inputs granularity is 500MeV, for LAr 25MeV
138  //storing the energies
139  int tmp_energy_EM = getET_EM(tmpTower)/em_granularity;
140  int tmp_energy_HAD = getET_HAD(tmpTower)/had_granularity;
141  int tmp_EM_AreaINV = getTTAreaINV_EM(tmpTower);
142  int tmp_HD_AreaINV = getTTAreaINV_HAD(tmpTower);
143  m_FPGA_ET_EM[TTID] = getET_EM(tmpTower);
144  m_FPGA_ET_HAD[TTID] = getET_HAD(tmpTower);
145 
146  tmp_energy_EM = (tmp_energy_EM * tmp_EM_AreaINV)/(1<<FEXAlgoSpaceDefs::pu_AreaINV);
147  tmp_energy_HAD= (tmp_energy_HAD* tmp_HD_AreaINV)/(1<<FEXAlgoSpaceDefs::pu_AreaINV);
148 
149  //calculating rho's
150 
151  // EM layer ( not EM FCAL!! )
152 
153  if(tmp_eta < 32 ){
154  if(tmp_energy_EM > myDBTool->get_PUThrLowEm() and tmp_energy_EM < myDBTool->get_PUThrHighEm()) {
155  m_rho_EM += tmp_energy_EM;
156  m_count_rho_EM++;
157  }
158  }
159 
160  // Tile layer
161  if(tmp_eta < 15){
162  if(tmp_energy_HAD > myDBTool->get_PUThrLowHadTrex() and tmp_energy_HAD < myDBTool->get_PUThrHighHadTrex()){
163  m_rho_HAD1 += tmp_energy_HAD;
164  m_count_rho_HAD1++;
165  }
166  }
167  // HEC Overlap layer!
168  else if(tmp_eta < 16 ){
169  if(tmp_energy_HAD > myDBTool->get_PUThrLowHadHecOverlap() and tmp_energy_HAD < myDBTool->get_PUThrHighHadHecOverlap()){
170  m_rho_HAD2 += tmp_energy_HAD;
171  m_count_rho_HAD2++;
172  }
173  }
174  // Rest of HEC without overlap
175  else if(tmp_eta < 32 ){
176  if(tmp_energy_HAD > myDBTool->get_PUThrLowHadLar() and tmp_energy_HAD < myDBTool->get_PUThrHighHadLar()){
177  m_rho_HAD3 += tmp_energy_HAD;
178  m_count_rho_HAD3++;
179  }
180  }
181  // FCAL is treated here!
182  else if(tmp_eta >= 32){
183 
184  // Contributes the HAD layer (FCAL2 and FCAL3)
186  if(tmp_energy_HAD > myDBTool->get_PUThrLowFcal() and tmp_energy_HAD < myDBTool->get_PUThrHighFcal()){
187  m_rho_FCAL += tmp_energy_HAD;
188  m_count_rho_FCAL++;
189  }
190  }
191  // FCAL1 is EM layer so the energy is suposed to be in the EM layer
192  else{
193  if(tmp_energy_EM > myDBTool->get_PUThrLowFcal() and tmp_energy_EM < myDBTool->get_PUThrHighFcal()){
194  m_rho_FCAL += tmp_energy_EM;
195  m_count_rho_FCAL++;
196  }
197  }
198  }
199  }
200  }//end of iphi loop
201 
202  //calculating rho values for each region
203  m_rho_EM = m_count_rho_EM > 0 ? ((m_rho_EM*rhoDivLUT(m_count_rho_EM) )/(1<<FEXAlgoSpaceDefs::pu_rhoLUT)) : 0;
204  m_rho_HAD1 = m_count_rho_HAD1 > 0 ? ((m_rho_HAD1*rhoDivLUT(m_count_rho_HAD1))/(1<<FEXAlgoSpaceDefs::pu_rhoLUT)) : 0;
205  m_rho_HAD2 = m_count_rho_HAD2 > 0 ? ((m_rho_HAD2*rhoDivLUT(m_count_rho_HAD2))/(1<<FEXAlgoSpaceDefs::pu_rhoLUT)) : 0;
206  m_rho_HAD3 = m_count_rho_HAD3 > 0 ? ((m_rho_HAD3*rhoDivLUT(m_count_rho_HAD3))/(1<<FEXAlgoSpaceDefs::pu_rhoLUT)) : 0;
207  m_rho_FCAL = m_count_rho_FCAL > 0 ? ((m_rho_FCAL*rhoDivLUT(m_count_rho_FCAL))/(1<<FEXAlgoSpaceDefs::pu_rhoLUT)) : 0;
208 
209  //return values in MeV -> m_rho_HAD1 corresponds to TileCal, so 500MeV/count, rest is 25MeV/count
210  //note: do not convert the internal values yet, this needs to happen after the PU correction is applied
211  // to fully reproduce FW behavior!
212  std::vector<int> rho_values {m_rho_EM*25,m_rho_HAD1*500,m_rho_HAD2*25,m_rho_HAD3*25,m_rho_FCAL*25};
213 
214  SubtractPileup();
215 
216  return rho_values;
217 }
218 
220 
221  //This is to save one bit in the firmware (19 bit will set be set to 1 instead of the 20th bit and rest are 0)
222  if(ntowers == 1) return ((1<<FEXAlgoSpaceDefs::pu_rhoLUT) - 1);
223  return static_cast<int>((1.0/ntowers)*(1<<FEXAlgoSpaceDefs::pu_rhoLUT) );
224 }
225 
227 
228  for(int iphi=0; iphi<FEXAlgoSpaceDefs::jFEX_algoSpace_height; iphi++) {
229  for(int ieta=0; ieta<m_etaMAX; ieta++) {
230 
231  int TTID = 0;
232 
233  if(m_is_FWD) {
234  TTID = m_FPGA_forward[iphi][ieta];
235  }
236  else {
237  TTID = m_FPGA_central[iphi][ieta];
238  }
239 
240  if(TTID == 0) continue; //skipping TTID iqual to 0
241 
242  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
243  int tmp_eta = getTTowerEta(tmpTower);
244  int tmp_EM_Area = getTTArea_EM(tmpTower);
245  int tmp_HD_Area = getTTArea_HAD(tmpTower);
246 
247  if(tmp_eta < 32) {
248  m_FPGA_ET_EM[TTID] =m_FPGA_ET_EM[TTID] - ((m_rho_EM * tmp_EM_Area)/(1<<FEXAlgoSpaceDefs::pu_Area)) * 25; //factor 25: jFEX internal counts -> MeV (LAr)
249  }
250 
251  if(tmp_eta < 15) {
252  m_FPGA_ET_HAD[TTID]=m_FPGA_ET_HAD[TTID] - ((m_rho_HAD1 * tmp_HD_Area)/(1<<FEXAlgoSpaceDefs::pu_Area)) * 500; //factor 500: jFEX internal counts -> MeV (Tile)
253  }
254  else if(tmp_eta < 16 ) {
255  m_FPGA_ET_HAD[TTID]=m_FPGA_ET_HAD[TTID] - ((m_rho_HAD2 * tmp_HD_Area)/(1<<FEXAlgoSpaceDefs::pu_Area)) * 25; //factor 25: jFEX internal counts -> MeV (LAr)
256  }
257  else if(tmp_eta < 32 ) {
258  m_FPGA_ET_HAD[TTID]=m_FPGA_ET_HAD[TTID] - ((m_rho_HAD3 * tmp_HD_Area)/(1<<FEXAlgoSpaceDefs::pu_Area)) * 25; //factor 25: jFEX internal counts -> MeV (LAr)
259  }
260  else if(tmp_eta >= 32) {
261  // Contributes the HAD layer (FCAL2 and FCAL3)
263  m_FPGA_ET_HAD[TTID] = m_FPGA_ET_HAD[TTID] - ((m_rho_FCAL * (tmp_HD_Area))/(1<<FEXAlgoSpaceDefs::pu_Area)) * 25; //factor 25: jFEX internal counts -> MeV (LAr)
264  }
265  // FCAL1 is EM layer so the energy is suposed to be in the EM layer
266  else{
267  m_FPGA_ET_EM[TTID] = m_FPGA_ET_EM[TTID] - ((m_rho_FCAL * (tmp_EM_Area))/(1<<FEXAlgoSpaceDefs::pu_Area)) * 25; //factor 25: jFEX internal counts -> MeV (LAr)
268  }
269  }
270  }
271  }
272 }
273 
274 
275 //Flags that allow to apply the pileup/noise to the objets
278  if(! myDBTool.isValid()) {
279  ATH_MSG_ERROR("Could not retrieve DB tool " << m_BDToolKey);
280  return StatusCode::FAILURE;
281  }
282 
283  m_apply_pileup2jets = myDBTool->get_doPileUpJet();
284  m_apply_pileup2met = myDBTool->get_doPileUpMet();
285 
286  return StatusCode::SUCCESS;
287 }
288 
290  m_apply_noise2jets = b;
291 }
292 
294  m_apply_noise2met = b;
295 }
296 
297 
298 
299 std::unordered_map<int,std::vector<int> > LVL1::jFEXPileupAndNoise::Get_EM_Et_values(){
300 
301  // map for energies sent to the FPGA
302  m_map_Etvalues_EM.clear();
303 
304 
305  for(int iphi=0; iphi<FEXAlgoSpaceDefs::jFEX_algoSpace_height; iphi++) {
306  for(int ieta=0; ieta<m_etaMAX; ieta++) {
307 
308  int TTID = 0;
309 
310  if(m_is_FWD) {
311  TTID = m_FPGA_forward[iphi][ieta];
312  }
313  else {
314  TTID = m_FPGA_central[iphi][ieta];
315  }
316 
317  if(TTID == 0) continue; //skipping TTID iqual to 0
318  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
319 
320  // tmp variable to fill the map
321  std::vector<int> v_energies;
322  v_energies.clear();
323  v_energies.resize(2,0);
324 
325  //saving the SG energy
326  int tmp_TotalEt_jet=getET_EM(tmpTower);
327  int tmp_TotalEt_met=getET_EM(tmpTower);
328 
329  // if true changing the raw energy to the pileup subtracted energy for jets
330  if(m_apply_pileup2jets){
331  tmp_TotalEt_jet = m_FPGA_ET_EM[TTID];
332  }
333 
334  // if true changing the raw energy to the pileup subtracted energy for met
335  if(m_apply_pileup2met){
336  tmp_TotalEt_met = m_FPGA_ET_EM[TTID];
337  }
338 
339  v_energies[0]=tmp_TotalEt_jet;
340  v_energies[1]=tmp_TotalEt_met;
341 
342  m_map_Etvalues_EM.insert(std::make_pair(TTID, v_energies));
343  }
344  }
345 
346  if(m_apply_noise2jets || m_apply_noise2met) ApplyNoiseCuts(m_map_Etvalues_EM,0);
347 
348  return m_map_Etvalues_EM;
349 }
350 
351 std::unordered_map<int,std::vector<int> > LVL1::jFEXPileupAndNoise::Get_HAD_Et_values(){
352 
353  // map for energies sent to the FPGA
354  m_map_Etvalues_HAD.clear();
355 
356 
357  for(int iphi=0; iphi<FEXAlgoSpaceDefs::jFEX_algoSpace_height; iphi++) {
358  for(int ieta=0; ieta<m_etaMAX; ieta++) {
359 
360  int TTID = 0;
361 
362  if(m_is_FWD) {
363  TTID = m_FPGA_forward[iphi][ieta];
364  }
365  else {
366  TTID = m_FPGA_central[iphi][ieta];
367  }
368 
369  if(TTID == 0) continue; //skipping TTID iqual to 0
370  const LVL1::jTower *tmpTower = m_jTowerContainer->findTower(TTID);
371 
372  // tmp variable to fill the map
373  std::vector<int> v_energies;
374  v_energies.clear();
375  v_energies.resize(2,0);
376 
377  //saving the SG energy
378  int tmp_TotalEt_jet=getET_HAD(tmpTower);
379  int tmp_TotalEt_met=getET_HAD(tmpTower);
380 
381  // if true changing the raw energy to the pileup subtracted energy for jets
382  if(m_apply_pileup2jets){
383  tmp_TotalEt_jet = m_FPGA_ET_HAD[TTID];
384  }
385 
386  // if true changing the raw energy to the pileup subtracted energy for met
387  if(m_apply_pileup2met){
388  tmp_TotalEt_met = m_FPGA_ET_HAD[TTID];
389  }
390 
391  v_energies[0]=tmp_TotalEt_jet;
392  v_energies[1]=tmp_TotalEt_met;
393 
394  m_map_Etvalues_HAD.insert(std::make_pair(TTID, v_energies));
395  }
396  }
397 
398  if(m_apply_noise2jets || m_apply_noise2met) ApplyNoiseCuts(m_map_Etvalues_HAD,1);
399 
400  return m_map_Etvalues_HAD;
401 }
402 
403 void LVL1::jFEXPileupAndNoise::ApplyNoiseCuts(std::unordered_map<int,std::vector<int> > & map_Etvalues,int layer ){
404 
405  const LVL1::jTower *tmpTower;
406 
407  for(auto [key,vec] : map_Etvalues){
408 
409  tmpTower = m_jTowerContainer->findTower(key);
410  int Jet_NoiseCut = tmpTower->getNoiseForJet(layer);
411  int Met_NoiseCut = tmpTower->getNoiseForMet(layer);
412 
413  if(m_apply_noise2jets && map_Etvalues[key][0]<=Jet_NoiseCut){ // Et for jets
414  map_Etvalues[key][0]=0.;
415  }
416  if(m_apply_noise2met && map_Etvalues[key][1]<=Met_NoiseCut){ // Et for Met
417  map_Etvalues[key][1]=0.;
418  }
419 
420  }
421 
422 }
423 
424 std::unordered_map<int,std::vector<int> > LVL1::jFEXPileupAndNoise::GetEt_values(){
425 
426  // map for energies sent to the FPGA
427  std::unordered_map<int,std::vector<int> > map_Etvalues;
428  map_Etvalues.clear();
429 
430 
431  /*
432  * The vector Et_energy has size 2
433  * Et_energy[0] is used un the Jet algos
434  * Et_energy[1] is used un the Met/SumEt algos
435  */
436  std::vector<int> Et_energy;
437 
438  for(auto [key,vec] : m_map_Etvalues_EM){
439 
440  Et_energy.clear();
441  Et_energy.resize(2,0);
442 
443  Et_energy[0]=m_map_Etvalues_EM[key][0]+m_map_Etvalues_HAD[key][0];
444  Et_energy[1]=m_map_Etvalues_EM[key][1]+m_map_Etvalues_HAD[key][1];
445  map_Etvalues[key] = Et_energy;
446  }
447  return map_Etvalues;
448 }
449 
450 
451 //Gets Eta of the TT
453  return tmpTower->iEta() < 0 ? std::abs(tmpTower->iEta()+1) : tmpTower->iEta() ;
454 }
455 //Gets ET of the TT
457  return tmpTower->getTotalET();
458 }
459 //Gets EM ET of the TT
461  return tmpTower->getET_EM();
462 }
463 //Gets HAD ET of the TT
465  return tmpTower->getET_HAD();
466 }
467 
468 //Get Area of a EM TT
470  return tmpTower->getTTowerArea(0);
471 }
472 
473 //Get Area of a HAD TT
475  return tmpTower->getTTowerArea(1);
476 }
477 
478 //Get Area of a EM TT
480  return tmpTower->getTTowerAreaInv(0);
481 }
482 
483 //Get Area of a HAD TT
485  return tmpTower->getTTowerAreaInv(1);
486 }
487 
488 
489 
490 
491 
492 }// end of namespace LVL1
LVL1::jFEXPileupAndNoise::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXPileupAndNoise.cxx:35
LVL1::jFEXPileupAndNoise::ApplyNoiseCuts
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
Definition: jFEXPileupAndNoise.cxx:403
LVL1::jFEXPileupAndNoise::getTTowerEta
int getTTowerEta(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:452
LVL1::jFEXPileupAndNoise::setup
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
Definition: jFEXPileupAndNoise.cxx:87
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
LVL1::jTower::iEta
int iEta() const
Get coordinates of tower.
Definition: jTower.cxx:169
LVL1::FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width
constexpr static int jFEX_thin_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:26
LVL1::jFEXPileupAndNoise::Get_EM_Et_values
virtual std::unordered_map< int, std::vector< int > > Get_EM_Et_values() override
Definition: jFEXPileupAndNoise.cxx:299
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LVL1::jFEXPileupAndNoise::getTTAreaINV_HAD
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:484
LVL1::jFEXPileupAndNoise::getET_EM
int getET_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:460
LVL1::jFEXPileupAndNoise::jFEXPileupAndNoise
jFEXPileupAndNoise(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXPileupAndNoise.cxx:27
LVL1::jFEXPileupAndNoise::reset_conters
void reset_conters()
Definition: jFEXPileupAndNoise.cxx:69
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:205
LVL1::jFEXPileupAndNoise::ApplyNoise2Jets
virtual void ApplyNoise2Jets(bool b) override
Definition: jFEXPileupAndNoise.cxx:289
LVL1::FEXAlgoSpaceDefs::pu_Area
constexpr static unsigned int pu_Area
Definition: FEXAlgoSpaceDefs.h:38
LVL1::jFEXPileupAndNoise::getTTowerET
int getTTowerET(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:456
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:27
LVL1::jFEXPileupAndNoise::safetyTest
virtual StatusCode safetyTest() override
Definition: jFEXPileupAndNoise.cxx:45
LVL1::FEXAlgoSpaceDefs::pu_rhoLUT
constexpr static unsigned int pu_rhoLUT
Definition: FEXAlgoSpaceDefs.h:39
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::jFEXPileupAndNoise::Get_HAD_Et_values
virtual std::unordered_map< int, std::vector< int > > Get_HAD_Et_values() override
Definition: jFEXPileupAndNoise.cxx:351
LVL1::jTower::getTTowerAreaInv
int getTTowerAreaInv(int layer) const
Definition: jTower.cxx:332
jFEXPileupAndNoise.h
AthAlgorithm.h
LVL1::jFEXPileupAndNoise::getTTArea_HAD
int getTTArea_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:474
LVL1::jTower::getNoiseForJet
int getNoiseForJet(int layer) const
Definition: jTower.cxx:350
LVL1::jFEXPileupAndNoise::getTTAreaINV_EM
int getTTAreaINV_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:479
LVL1::jFEXPileupAndNoise::GetEt_values
virtual std::unordered_map< int, std::vector< int > > GetEt_values() override
Definition: jFEXPileupAndNoise.cxx:424
LVL1::jFEXPileupAndNoise::reset
virtual StatusCode reset() override
Definition: jFEXPileupAndNoise.cxx:56
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
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
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LVL1::jFEXPileupAndNoise::SubtractPileup
void SubtractPileup()
Definition: jFEXPileupAndNoise.cxx:226
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:25
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell_SuperCell_ID.h
Helper class for offline supercell identifiers.
LVL1::jTower::getTotalET
int getTotalET() const
Get ET sum of all cells in the jTower in MeV.
Definition: jTower.cxx:201
LVL1::jFEXPileupAndNoise::rhoDivLUT
int rhoDivLUT(int ntowers)
Definition: jFEXPileupAndNoise.cxx:219
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::FEXAlgoSpaceDefs::pu_AreaINV
constexpr static unsigned int pu_AreaINV
Definition: FEXAlgoSpaceDefs.h:37
FEXAlgoSpaceDefs.h
TrigConf::name
Definition: HLTChainList.h:35
jTowerContainer.h
LVL1::jTower::getET_EM
int getET_EM() const
Get EM ET value in MeV.
Definition: jTower.h:135
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
LVL1::jTower::getET_HAD
int getET_HAD() const
Get HAD ET value in MeV.
Definition: jTower.h:138
CaloCellContainer.h
LVL1::jTower::getTTowerArea
int getTTowerArea(int layer) const
Definition: jTower.cxx:324
LVL1::jFEXPileupAndNoise::getET_HAD
int getET_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:464
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::jFEXPileupAndNoise::getTTArea_EM
int getTTArea_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:469
LVL1::FEXAlgoSpaceDefs::jFEX_FCAL2_start
constexpr static int jFEX_FCAL2_start
Definition: FEXAlgoSpaceDefs.h:33
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:40
CaloIdManager.h
LVL1::jFEXPileupAndNoise::CalculatePileup
virtual std::vector< int > CalculatePileup() override
Definition: jFEXPileupAndNoise.cxx:106
LVL1::gFEX::FPGA
FPGA
Definition: GTowerHelpers.h:17
LVL1::jFEXPileupAndNoise::ApplyNoise2Met
virtual void ApplyNoise2Met(bool b) override
Definition: jFEXPileupAndNoise.cxx:293
LVL1::jTower::getNoiseForMet
int getNoiseForMet(int layer) const
Definition: jTower.cxx:341
calibdata.copy
bool copy
Definition: calibdata.py:27
AthAlgTool
Definition: AthAlgTool.h:26
jTower.h
StoreGateSvc.h
LVL1::jFEXPileupAndNoise::~jFEXPileupAndNoise
virtual ~jFEXPileupAndNoise()
Destructor.
Definition: jFEXPileupAndNoise.cxx:32
LVL1::jFEXPileupAndNoise::ApplyPileup
virtual StatusCode ApplyPileup() override
Definition: jFEXPileupAndNoise.cxx:276
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37