ATLAS Offline Software
jFEXPileupAndNoise.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 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 
11 #ifndef jFEXPileupAndNoise_H
12 #define jFEXPileupAndNoise_H
13 
14 
16 #include "AthenaKernel/CLASS_DEF.h"
23 
24 namespace LVL1 {
25 
26  class jFEXPileupAndNoise : public AthAlgTool, virtual public IjFEXPileupAndNoise{
27 
28  public:
30  jFEXPileupAndNoise(const std::string& type, const std::string& name, const IInterface* parent);
31 
33  virtual StatusCode initialize() override;
34  virtual StatusCode safetyTest() override;
35  virtual StatusCode reset() override;
36 
39 
40  virtual std::unordered_map<int,std::vector<int> > GetEt_values() override;
41  virtual std::unordered_map<int,std::vector<int> > Get_EM_Et_values() override;
42  virtual std::unordered_map<int,std::vector<int> > Get_HAD_Et_values() override;
43 
45  virtual ~jFEXPileupAndNoise();
46 
47 
48  virtual std::vector<int> CalculatePileup() override;
49  virtual StatusCode ApplyPileup() override;
50  virtual void ApplyNoise2Jets(bool b) override;
51  virtual void ApplyNoise2Met(bool b) override;
52 
53 
54 protected:
55 
56  private:
57  SG::ReadHandleKey<LVL1::jTowerContainer> m_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"};
59 
60  SG::ReadCondHandleKey<jFEXDBCondData> m_BDToolKey {this, "BDToolKey", "jFEXDBParams", "DB tool key"};
61 
64 
65  int m_etaMAX=0;
66 
67  std::unordered_map<int,int > m_FPGA_ET_EM;
68  std::unordered_map<int,int > m_FPGA_ET_HAD;
69 
70  //rho variables for the pileup
71  int m_rho_EM = 0; //for eta < 3.2
72  int m_rho_HAD1 = 0; //for eta < 1.5
73  int m_rho_HAD2 = 0; //for 1.5 < eta < 1.6
74  int m_rho_HAD3 = 0; //for 1.6 < eta < 3.2
75  int m_rho_FCAL = 0; //for eta > 3.1
76 
77  //TT counters
78  int m_count_rho_EM = 0;
83 
84  //boolean flags
85  bool m_is_FWD = false; // 0 for central, 1 for forward
86  bool m_apply_pileup2jets = false;
87  bool m_apply_pileup2met = false;
88  bool m_apply_noise2jets = false;
89  bool m_apply_noise2met = false;
90 
91  void reset_conters();
92  void SubtractPileup();
93  void ApplyNoiseCuts(std::unordered_map<int,std::vector<int> > & map_Etvalues, int layer);
94  int rhoDivLUT(int ntowers);
95 
96  // SG information
97  int getTTowerEta (const LVL1::jTower *tmpTower );
98  int getTTowerET (const LVL1::jTower *tmpTower );
99  int getET_EM (const LVL1::jTower *tmpTower );
100  int getET_HAD (const LVL1::jTower *tmpTower );
101  int getTTArea_EM (const LVL1::jTower *tmpTower );
102  int getTTArea_HAD (const LVL1::jTower *tmpTower );
103  int getTTAreaINV_EM (const LVL1::jTower *tmpTower );
104  int getTTAreaINV_HAD (const LVL1::jTower *tmpTower );
105 
106  std::unordered_map<int,std::vector<int> > m_map_Etvalues_EM;
107  std::unordered_map<int,std::vector<int> > m_map_Etvalues_HAD;
108  };
109 }//end of namespace
110 
111 
112 CLASS_DEF( LVL1::jFEXPileupAndNoise , 585629 , 1 )
113 
114 #endif
LVL1::jFEXPileupAndNoise::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXPileupAndNoise.cxx:29
LVL1::jFEXPileupAndNoise::ApplyNoiseCuts
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
Definition: jFEXPileupAndNoise.cxx:397
LVL1::jFEXPileupAndNoise::getTTowerEta
int getTTowerEta(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:446
LVL1::jFEXPileupAndNoise::m_apply_pileup2jets
bool m_apply_pileup2jets
Definition: jFEXPileupAndNoise.h:86
LVL1::jFEXPileupAndNoise::m_rho_FCAL
int m_rho_FCAL
Definition: jFEXPileupAndNoise.h:75
LVL1::jFEXPileupAndNoise::setup
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
Definition: jFEXPileupAndNoise.cxx:81
LVL1::FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width
constexpr static int jFEX_thin_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:28
LVL1::jFEXPileupAndNoise::Get_EM_Et_values
virtual std::unordered_map< int, std::vector< int > > Get_EM_Et_values() override
Definition: jFEXPileupAndNoise.cxx:293
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
LVL1::jFEXPileupAndNoise::getTTAreaINV_HAD
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:478
LVL1::jFEXPileupAndNoise::m_count_rho_HAD1
int m_count_rho_HAD1
Definition: jFEXPileupAndNoise.h:79
LVL1::jFEXPileupAndNoise::m_apply_noise2jets
bool m_apply_noise2jets
Definition: jFEXPileupAndNoise.h:88
LVL1::jFEXPileupAndNoise::getET_EM
int getET_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:454
LVL1::jFEXPileupAndNoise::m_FPGA_ET_EM
std::unordered_map< int, int > m_FPGA_ET_EM
Definition: jFEXPileupAndNoise.h:67
LVL1::jFEXPileupAndNoise::jFEXPileupAndNoise
jFEXPileupAndNoise(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXPileupAndNoise.cxx:21
LVL1::jFEXPileupAndNoise::reset_conters
void reset_conters()
Definition: jFEXPileupAndNoise.cxx:63
jFEXDBCondData.h
LVL1::jFEXPileupAndNoise::ApplyNoise2Jets
virtual void ApplyNoise2Jets(bool b) override
Definition: jFEXPileupAndNoise.cxx:283
LVL1::jFEXPileupAndNoise::getTTowerET
int getTTowerET(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:450
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:29
LVL1::jFEXPileupAndNoise::m_BDToolKey
SG::ReadCondHandleKey< jFEXDBCondData > m_BDToolKey
Definition: jFEXPileupAndNoise.h:60
LVL1::jFEXPileupAndNoise::safetyTest
virtual StatusCode safetyTest() override
Definition: jFEXPileupAndNoise.cxx:39
SG::ReadHandleKey< LVL1::jTowerContainer >
LVL1::jFEXPileupAndNoise::m_FPGA_central
int m_FPGA_central[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
Definition: jFEXPileupAndNoise.h:62
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::IjFEXPileupAndNoise
Definition: IjFEXPileupAndNoise.h:22
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
LVL1::jFEXPileupAndNoise::Get_HAD_Et_values
virtual std::unordered_map< int, std::vector< int > > Get_HAD_Et_values() override
Definition: jFEXPileupAndNoise.cxx:345
ReadCondHandle.h
LVL1::jFEXPileupAndNoise
Definition: jFEXPileupAndNoise.h:26
LVL1::jFEXPileupAndNoise::m_rho_HAD1
int m_rho_HAD1
Definition: jFEXPileupAndNoise.h:72
LVL1::jFEXPileupAndNoise::m_count_rho_EM
int m_count_rho_EM
Definition: jFEXPileupAndNoise.h:78
LVL1::jFEXPileupAndNoise::m_map_Etvalues_EM
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
Definition: jFEXPileupAndNoise.h:106
LVL1::jFEXPileupAndNoise::getTTArea_HAD
int getTTArea_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:468
LVL1::jFEXPileupAndNoise::m_rho_HAD3
int m_rho_HAD3
Definition: jFEXPileupAndNoise.h:74
LVL1::jFEXPileupAndNoise::getTTAreaINV_EM
int getTTAreaINV_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:473
LVL1::jFEXPileupAndNoise::m_map_Etvalues_HAD
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
Definition: jFEXPileupAndNoise.h:107
LVL1::jFEXPileupAndNoise::GetEt_values
virtual std::unordered_map< int, std::vector< int > > GetEt_values() override
Definition: jFEXPileupAndNoise.cxx:418
LVL1::jFEXPileupAndNoise::reset
virtual StatusCode reset() override
Definition: jFEXPileupAndNoise.cxx:50
LVL1::jFEXPileupAndNoise::m_apply_noise2met
bool m_apply_noise2met
Definition: jFEXPileupAndNoise.h:89
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
LVL1::jFEXPileupAndNoise::SubtractPileup
void SubtractPileup()
Definition: jFEXPileupAndNoise.cxx:220
LVL1::jFEXPileupAndNoise::m_jTowerContainerKey
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition: jFEXPileupAndNoise.h:57
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:27
AthAlgTool.h
LVL1::jFEXPileupAndNoise::m_is_FWD
bool m_is_FWD
Definition: jFEXPileupAndNoise.h:85
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::jFEXPileupAndNoise::rhoDivLUT
int rhoDivLUT(int ntowers)
Definition: jFEXPileupAndNoise.cxx:213
LVL1::jFEXPileupAndNoise::m_apply_pileup2met
bool m_apply_pileup2met
Definition: jFEXPileupAndNoise.h:87
IjFEXPileupAndNoise.h
FEXAlgoSpaceDefs.h
LVL1::jFEXPileupAndNoise::m_rho_EM
int m_rho_EM
Definition: jFEXPileupAndNoise.h:71
TrigConf::name
Definition: HLTChainList.h:35
LVL1::jFEXPileupAndNoise::m_count_rho_HAD3
int m_count_rho_HAD3
Definition: jFEXPileupAndNoise.h:81
ReadCondHandleKey.h
jTowerContainer.h
LVL1::jFEXPileupAndNoise::m_jTowerContainer
SG::ReadHandle< jTowerContainer > m_jTowerContainer
Definition: jFEXPileupAndNoise.h:58
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:76
LVL1::jFEXPileupAndNoise::m_count_rho_FCAL
int m_count_rho_FCAL
Definition: jFEXPileupAndNoise.h:82
SG::ReadCondHandleKey
Definition: ReadCondHandleKey.h:20
LVL1::jFEXPileupAndNoise::m_etaMAX
int m_etaMAX
Definition: jFEXPileupAndNoise.h:65
LVL1::jFEXPileupAndNoise::getET_HAD
int getET_HAD(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:458
LVL1::jFEXPileupAndNoise::getTTArea_EM
int getTTArea_EM(const LVL1::jTower *tmpTower)
Definition: jFEXPileupAndNoise.cxx:463
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:67
LVL1::jTower
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition: jTower.h:36
LVL1::jFEXPileupAndNoise::m_FPGA_forward
int m_FPGA_forward[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition: jFEXPileupAndNoise.h:63
LVL1::jFEXPileupAndNoise::m_FPGA_ET_HAD
std::unordered_map< int, int > m_FPGA_ET_HAD
Definition: jFEXPileupAndNoise.h:68
LVL1::jFEXPileupAndNoise::CalculatePileup
virtual std::vector< int > CalculatePileup() override
Definition: jFEXPileupAndNoise.cxx:100
LVL1::gFEX::FPGA
FPGA
Definition: GTowerHelpers.h:17
LVL1::jFEXPileupAndNoise::ApplyNoise2Met
virtual void ApplyNoise2Met(bool b) override
Definition: jFEXPileupAndNoise.cxx:287
AthAlgTool
Definition: AthAlgTool.h:26
CLASS_DEF.h
macros to associate a CLID to a type
LVL1::jFEXPileupAndNoise::~jFEXPileupAndNoise
virtual ~jFEXPileupAndNoise()
Destructor.
Definition: jFEXPileupAndNoise.cxx:26
LVL1::jFEXPileupAndNoise::m_rho_HAD2
int m_rho_HAD2
Definition: jFEXPileupAndNoise.h:73
LVL1::jFEXPileupAndNoise::ApplyPileup
virtual StatusCode ApplyPileup() override
Definition: jFEXPileupAndNoise.cxx:270
LVL1::jFEXPileupAndNoise::m_count_rho_HAD2
int m_count_rho_HAD2
Definition: jFEXPileupAndNoise.h:80