ATLAS Offline Software
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 
17 #include "AthenaKernel/CLASS_DEF.h"
22 
23 namespace 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 
LVL1::jFEXForwardElecAlgo::m_jTowerContainer
SG::ReadHandle< jTowerContainer > m_jTowerContainer
Definition: jFEXForwardElecAlgo.h:52
LVL1::jFEXForwardElecAlgo::m_Edge_dR3
const int m_Edge_dR3
Definition: jFEXForwardElecAlgo.h:61
LVL1::jFEXForwardElecAlgo::getEMSat
bool getEMSat(unsigned int ttID)
Definition: jFEXForwardElecAlgo.cxx:93
LVL1::jFEXForwardElecAlgo::m_fpga
int m_fpga
Definition: jFEXForwardElecAlgo.h:57
LVL1::jFEXForwardElecAlgo::m_TT_Size_phi
static constexpr float m_TT_Size_phi
Definition: jFEXForwardElecAlgo.h:59
jFEXForwardElecTOB.h
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
LVL1::jFEXForwardElecAlgo::m_jTowerContainerKey
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition: jFEXForwardElecAlgo.h:51
LVL1::jFEXForwardElecAlgo::m_SearchGTauStr
Gaudi::Property< std::string > m_SearchGTauStr
Definition: jFEXForwardElecAlgo.h:67
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_EM
std::unordered_map< int, std::vector< int > > m_map_Etvalues_EM
Definition: jFEXForwardElecAlgo.h:53
LVL1::jFEXForwardElecAlgo::isValidSeed
bool isValidSeed(uint seedTTID) const
Definition: jFEXForwardElecAlgo.cxx:110
LVL1::IjFEXForwardElecAlgo
Definition: IjFEXForwardElecAlgo.h:24
M_PI
#define M_PI
Definition: ActiveFraction.h:11
LVL1::jFEXForwardElecAlgo::m_jfex
int m_jfex
Definition: jFEXForwardElecAlgo.h:56
LVL1::jFEXForwardElecAlgo::m_IsoMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_IsoMap
Definition: jFEXForwardElecAlgo.h:72
LVL1::FEXAlgoSpaceDefs::jFEX_algoSpace_height
constexpr static int jFEX_algoSpace_height
Definition: FEXAlgoSpaceDefs.h:29
SG::ReadHandleKey< LVL1::jTowerContainer >
LVL1::jFEXForwardElecAlgo::m_SearchGeTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGeTauMap
Definition: jFEXForwardElecAlgo.h:76
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
LVL1::jFEXForwardElecAlgo::ReadfromFile
StatusCode ReadfromFile(const std::string &, std::unordered_map< unsigned int, std::vector< unsigned int > > &) const
Definition: jFEXForwardElecAlgo.cxx:354
LVL1::jFEXForwardElecAlgo::m_Frac2Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac2Map
Definition: jFEXForwardElecAlgo.h:74
LVL1::jFEXForwardElecAlgo::m_Edge_dR4
const int m_Edge_dR4
Definition: jFEXForwardElecAlgo.h:62
LVL1::jFEXForwardElecAlgo::m_map_Etvalues_HAD
std::unordered_map< int, std::vector< int > > m_map_Etvalues_HAD
Definition: jFEXForwardElecAlgo.h:54
LVL1::jFEXForwardElecAlgo::m_Frac1Map
std::unordered_map< unsigned int, std::vector< unsigned int > > m_Frac1Map
Definition: jFEXForwardElecAlgo.h:73
LVL1::jFEXForwardElecAlgo::m_1stRingMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_1stRingMap
Definition: jFEXForwardElecAlgo.h:71
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
LVL1::jFEXForwardElecAlgo::m_2PI
static constexpr float m_2PI
Definition: jFEXForwardElecAlgo.h:58
LVL1::jFEXForwardElecAlgo::m_Edge_dR2
const int m_Edge_dR2
Definition: jFEXForwardElecAlgo.h:60
IjFEXForwardElecAlgo.h
LVL1::jFEXForwardElecAlgo::m_Frac1MapStr
Gaudi::Property< std::string > m_Frac1MapStr
Definition: jFEXForwardElecAlgo.h:65
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LVL1::jFEXForwardElecAlgo
Definition: jFEXForwardElecAlgo.h:25
LVL1::FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width
constexpr static int jFEX_wide_algoSpace_width
Definition: FEXAlgoSpaceDefs.h:27
AthAlgTool.h
LVL1::jFEXForwardElecAlgo::m_IsoMapStr
Gaudi::Property< std::string > m_IsoMapStr
Definition: jFEXForwardElecAlgo.h:64
test_pyathena.parent
parent
Definition: test_pyathena.py:15
LVL1::jFEXForwardElecAlgo::setFPGAEnergy
virtual void setFPGAEnergy(std::unordered_map< int, std::vector< int > > etmapEM, std::unordered_map< int, std::vector< int > > etmapHAD) override
Definition: jFEXForwardElecAlgo.cxx:102
LVL1::jFEXForwardElecAlgo::m_Frac2MapStr
Gaudi::Property< std::string > m_Frac2MapStr
Definition: jFEXForwardElecAlgo.h:66
LVL1::jFEXForwardElecAlgo::findAndFillNextTT
void findAndFillNextTT(jFEXForwardElecInfo &elCluster, int neta, int nphi)
Definition: jFEXForwardElecAlgo.cxx:146
FEXAlgoSpaceDefs.h
TrigConf::name
Definition: HLTChainList.h:35
LVL1::jFEXForwardElecAlgo::jFEXForwardElecAlgo
jFEXForwardElecAlgo(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition: jFEXForwardElecAlgo.cxx:28
jTowerContainer.h
LVL1::jFEXForwardElecAlgo::initialize
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition: jFEXForwardElecAlgo.cxx:36
LVL1::jFEXForwardElecAlgo::calculateEDM
virtual std::unordered_map< uint, jFEXForwardElecInfo > calculateEDM() override
Definition: jFEXForwardElecAlgo.cxx:231
LVL1::jFEXForwardElecAlgo::safetyTest
virtual StatusCode safetyTest() override
Standard methods.
Definition: jFEXForwardElecAlgo.cxx:49
LVL1::jFEXForwardElecAlgo::getEtEmHad
virtual std::array< int, 2 > getEtEmHad(uint) const override
Definition: jFEXForwardElecAlgo.cxx:77
LVL1::jFEXForwardElecAlgo::reset
virtual StatusCode reset() override
Definition: jFEXForwardElecAlgo.cxx:58
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
jFEXForwardElecInfo.h
LVL1::jFEXForwardElecAlgo::m_SearchGTauMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SearchGTauMap
Definition: jFEXForwardElecAlgo.h:75
LVL1::jFEXForwardElecAlgo::m_jFEXalgoTowerID
int m_jFEXalgoTowerID[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition: jFEXForwardElecAlgo.h:55
LVL1::jFEXForwardElecAlgo::m_SeedRingMap
std::unordered_map< unsigned int, std::vector< unsigned int > > m_SeedRingMap
Definition: jFEXForwardElecAlgo.h:70
LVL1::jFEXForwardElecAlgo::setup
virtual void setup(int inputTable[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width], int jfex, int fpga) override
Definition: jFEXForwardElecAlgo.cxx:62
LVL1::jFEXForwardElecInfo
Definition: jFEXForwardElecInfo.h:23
LVL1::jFEXForwardElecAlgo::getEtaPhi
virtual std::array< float, 2 > getEtaPhi(uint) override
Definition: jFEXForwardElecAlgo.cxx:69
AthAlgTool
Definition: AthAlgTool.h:26
LVL1::jFEXForwardElecAlgo::~jFEXForwardElecAlgo
virtual ~jFEXForwardElecAlgo()
Destructor.
Definition: jFEXForwardElecAlgo.cxx:33
LVL1::jFEXForwardElecAlgo::m_SearchGeTauStr
Gaudi::Property< std::string > m_SearchGeTauStr
Definition: jFEXForwardElecAlgo.h:68
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
CLASS_DEF.h
macros to associate a CLID to a type