ATLAS Offline Software
Loading...
Searching...
No Matches
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
23
24namespace 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
54protected:
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
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
113
114#endif
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
static constexpr int jFEX_wide_algoSpace_width
static constexpr int jFEX_thin_algoSpace_width
static constexpr int jFEX_algoSpace_height
std::unordered_map< int, int > m_FPGA_ET_EM
int m_FPGA_central[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
virtual std::unordered_map< int, std::vector< int > > Get_HAD_Et_values() override
std::unordered_map< int, int > m_FPGA_ET_HAD
virtual StatusCode safetyTest() override
SG::ReadCondHandleKey< jFEXDBCondData > m_BDToolKey
jFEXPileupAndNoise(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
int getET_HAD(const LVL1::jTower *tmpTower)
int getTTowerEta(const LVL1::jTower *tmpTower)
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
int getTTArea_HAD(const LVL1::jTower *tmpTower)
virtual void ApplyNoise2Met(bool b) override
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
int getTTAreaINV_EM(const LVL1::jTower *tmpTower)
int getET_EM(const LVL1::jTower *tmpTower)
SG::ReadHandle< jTowerContainer > m_jTowerContainer
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual StatusCode reset() override
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower)
int m_FPGA_forward[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
virtual std::unordered_map< int, std::vector< int > > GetEt_values() override
virtual ~jFEXPileupAndNoise()
Destructor.
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
virtual StatusCode ApplyPileup() override
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
int getTTowerET(const LVL1::jTower *tmpTower)
virtual std::vector< int > CalculatePileup() override
virtual std::unordered_map< int, std::vector< int > > Get_EM_Et_values() override
virtual void ApplyNoise2Jets(bool b) override
int getTTArea_EM(const LVL1::jTower *tmpTower)
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
The jTower class is an interface object for jFEX trigger algorithms The purposes are twofold:
Definition jTower.h:36
Property holding a SG store/key/clid from which a ReadHandle is made.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...