ATLAS Offline Software
Loading...
Searching...
No Matches
jFEXForwardElecAlgo.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// jFEXForwardElecAlgo - Algorithm for Forward Electron Algorithm in jFEX
6// -------------------
7// begin : 16 11 2021
8// email : Sergi.Rodriguez@cern.ch
9// email : sjolin@cern.ch
10//***************************************************************************
11
12#ifndef jFEXForwardElecAlgo_H
13#define jFEXForwardElecAlgo_H
14
22
23namespace LVL1 {
24
25 class jFEXForwardElecAlgo : public AthAlgTool, virtual public IjFEXForwardElecAlgo {
26
27 public:
29 jFEXForwardElecAlgo(const std::string& type, const std::string& name, const IInterface* parent);
30
32 virtual StatusCode initialize() override;
33
35 virtual ~jFEXForwardElecAlgo();
36
38 virtual StatusCode safetyTest() override;
39 virtual StatusCode reset() override;
40
41 virtual void setup(
43 int jfex, int fpga ) override;
44
45 virtual std::unordered_map<uint, jFEXForwardElecInfo> calculateEDM() override;
46 virtual void setFPGAEnergy(
47 std::unordered_map<int,std::vector<int> > etmapEM,
48 std::unordered_map<int,std::vector<int> > etmapHAD) override;
49
50 private:
51 SG::ReadHandleKey<LVL1::jTowerContainer> m_jTowerContainerKey {this, "MyjTowers", "jTowerContainer", "jTower input container"};
53 std::unordered_map<int,std::vector<int> > m_map_Etvalues_EM;
54 std::unordered_map<int,std::vector<int> > m_map_Etvalues_HAD;
56 int m_jfex;
57 int m_fpga;
58 static constexpr float m_2PI = 2*M_PI;
59 static constexpr float m_TT_Size_phi = M_PI/32;
60 const int m_Edge_dR2 = std::round( (std::pow(2*M_PI/32,2)) * 1e5 );
61 const int m_Edge_dR3 = std::round( (std::pow(3*M_PI/32,2)) * 1e5 );
62 const int m_Edge_dR4 = std::round( (std::pow(4*M_PI/32,2)) * 1e5 );
63
64 Gaudi::Property<std::string> m_IsoMapStr {this, "IsoMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_iso.dat", "Contains Trigger towers in (forward) EM layer used for isolation"};
65 Gaudi::Property<std::string> m_Frac1MapStr {this, "Frac1Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac.dat", "Contains Trigger towers in FCal layer2 used for hadronic fraction 1 discriminant"};
66 Gaudi::Property<std::string> m_Frac2MapStr {this, "Frac2Map", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_frac2.dat", "Contains Trigger towers in FCal layer3 used for hadronic fraction 2 discriminant"};
67 Gaudi::Property<std::string> m_SearchGTauStr {this, "SearchGTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGTau.dat" , "Contains Trigger tower to find local max (greater than)"};
68 Gaudi::Property<std::string> m_SearchGeTauStr {this, "SearchGeTauMap", "Run3L1CaloSimulation/JetMaps/2024_04_09/jFEX_FWD_searchGeTau.dat", "Contains Trigger tower to find local max (greater or equal than)"};
69
70 std::unordered_map<unsigned int, std::vector<unsigned int> > m_SeedRingMap;
71 std::unordered_map<unsigned int, std::vector<unsigned int> > m_1stRingMap;
72 std::unordered_map<unsigned int, std::vector<unsigned int> > m_IsoMap;
73 std::unordered_map<unsigned int, std::vector<unsigned int> > m_Frac1Map;
74 std::unordered_map<unsigned int, std::vector<unsigned int> > m_Frac2Map;
75 std::unordered_map<unsigned int, std::vector<unsigned int> > m_SearchGTauMap;
76 std::unordered_map<unsigned int, std::vector<unsigned int> > m_SearchGeTauMap;
77
78 virtual std::array<float,2> getEtaPhi(uint) override;
79 virtual std::array<int,2> getEtEmHad(uint) const override;
80 bool getEMSat(unsigned int ttID);
81
82 bool isValidSeed(uint seedTTID) const;
83 void findAndFillNextTT(jFEXForwardElecInfo& elCluster, int neta, int nphi);
84
85 StatusCode ReadfromFile(const std::string& , std::unordered_map<unsigned int, std::vector<unsigned int> >&) const;
86 };
87
88}//end of namespace
89
91
92#endif
93
#define M_PI
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
unsigned int uint
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_algoSpace_height
std::unordered_map< unsigned int, std::vector< unsigned int > > m_1stRingMap
Gaudi::Property< std::string > m_Frac2MapStr
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac1Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac2Map
virtual std::array< int, 2 > getEtEmHad(uint) const override
jFEXForwardElecAlgo(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
static constexpr float m_TT_Size_phi
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override
virtual StatusCode safetyTest() override
Standard methods.
virtual std::array< float, 2 > getEtaPhi(uint) override
void findAndFillNextTT(jFEXForwardElecInfo &elCluster, int neta, int nphi)
Gaudi::Property< std::string > m_SearchGeTauStr
virtual StatusCode reset() override
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SeedRingMap
bool isValidSeed(uint seedTTID) const
SG::ReadHandle< jTowerContainer > m_jTowerContainer
Gaudi::Property< std::string > m_SearchGTauStr
bool getEMSat(unsigned int ttID)
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
virtual void setFPGAEnergy(std::unordered_map< int, std::vector< int > > etmapEM, std::unordered_map< int, std::vector< int > > etmapHAD) override
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual ~jFEXForwardElecAlgo()
Destructor.
Gaudi::Property< std::string > m_IsoMapStr
Gaudi::Property< std::string > m_Frac1MapStr
static constexpr float m_2PI
std::unordered_map< unsigned int, std::vector< unsigned int > > m_IsoMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeTauMap
virtual std::unordered_map< uint, jFEXForwardElecInfo > calculateEDM() override
Property holding a SG store/key/clid from which a ReadHandle is made.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...