ATLAS Offline Software
Loading...
Searching...
No Matches
jFEXPileupAndNoise.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 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#include <vector>
24
25namespace LVL1 {
26
27 class jFEXPileupAndNoise : public AthAlgTool, virtual public IjFEXPileupAndNoise{
28
29 public:
31 jFEXPileupAndNoise(const std::string& type, const std::string& name, const IInterface* parent);
32
34 virtual StatusCode initialize() override;
35 virtual StatusCode safetyTest() override;
36 virtual StatusCode reset() override;
37
40
41 virtual std::unordered_map<int,std::vector<int> > GetEt_values() const override;
42 virtual std::unordered_map<int,std::vector<int> > Get_EM_Et_values() override;
43 virtual std::unordered_map<int,std::vector<int> > Get_HAD_Et_values() override;
44
46 virtual ~jFEXPileupAndNoise();
47
48
49 virtual std::vector<int> CalculatePileup() override;
50 virtual StatusCode ApplyPileup() override;
51 virtual void ApplyNoise2Jets(bool b) override;
52 virtual void ApplyNoise2Met(bool b) override;
53
54
55protected:
56
57 private:
58 SG::ReadHandleKey<LVL1::jTowerContainer> m_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "Input container for jTowers"};
60
61 SG::ReadCondHandleKey<jFEXDBCondData> m_BDToolKey {this, "BDToolKey", "jFEXDBParams", "DB tool key"};
62
65
66 int m_etaMAX=0;
67
68 std::unordered_map<int,int > m_FPGA_ET_EM;
69 std::unordered_map<int,int > m_FPGA_ET_HAD;
70
71 //rho variables for the pileup
72 int m_rho_EM = 0; //for eta < 3.2
73 int m_rho_HAD1 = 0; //for eta < 1.5
74 int m_rho_HAD2 = 0; //for 1.5 < eta < 1.6
75 int m_rho_HAD3 = 0; //for 1.6 < eta < 3.2
76 int m_rho_FCAL = 0; //for eta > 3.1
77
78 //TT counters
84
85 //boolean flags
86 bool m_is_FWD = false; // 0 for central, 1 for forward
87 bool m_apply_pileup2jets = false;
88 bool m_apply_pileup2met = false;
89 bool m_apply_noise2jets = false;
90 bool m_apply_noise2met = false;
91
92 void reset_conters();
93 void SubtractPileup();
94 void ApplyNoiseCuts(std::unordered_map<int,std::vector<int> > & map_Etvalues, int layer);
95 int rhoDivLUT(int ntowers) const;
96
97 // SG information
98 int getTTowerEta (const LVL1::jTower *tmpTower ) const;
99 int getTTowerET (const LVL1::jTower *tmpTower ) const;
100 int getET_EM (const LVL1::jTower *tmpTower ) const;
101 int getET_HAD (const LVL1::jTower *tmpTower ) const;
102 int getTTArea_EM (const LVL1::jTower *tmpTower ) const;
103 int getTTArea_HAD (const LVL1::jTower *tmpTower ) const;
104 int getTTAreaINV_EM (const LVL1::jTower *tmpTower ) const;
105 int getTTAreaINV_HAD (const LVL1::jTower *tmpTower ) const;
106
107 std::unordered_map<int,std::vector<int> > m_map_Etvalues_EM;
108 std::unordered_map<int,std::vector<int> > m_map_Etvalues_HAD;
109 };
110}//end of namespace
111
112
114
115#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 getTTArea_HAD(const LVL1::jTower *tmpTower) const
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
int getTTAreaINV_HAD(const LVL1::jTower *tmpTower) const
virtual void ApplyNoise2Met(bool b) override
virtual void setup(int FPGA[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]) override
int getTTArea_EM(const LVL1::jTower *tmpTower) const
int getTTowerET(const LVL1::jTower *tmpTower) const
SG::ReadHandle< jTowerContainer > m_jTowerContainer
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual StatusCode reset() override
int m_FPGA_forward[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
int rhoDivLUT(int ntowers) const
int getTTowerEta(const LVL1::jTower *tmpTower) const
virtual ~jFEXPileupAndNoise()
Destructor.
int getET_EM(const LVL1::jTower *tmpTower) const
void ApplyNoiseCuts(std::unordered_map< int, std::vector< int > > &map_Etvalues, int layer)
virtual StatusCode ApplyPileup() override
int getTTAreaINV_EM(const LVL1::jTower *tmpTower) const
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
virtual std::unordered_map< int, std::vector< int > > GetEt_values() const override
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
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
int getET_HAD(const LVL1::jTower *tmpTower) const
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...