ATLAS Offline Software
Loading...
Searching...
No Matches
jFEXFPGA.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//***************************************************************************
6// jFEXFPGA.h -
7// -------------------
8// begin : 15 10 2019
9// email : jacob.julian.kempster@cern.ch
10// ***************************************************************************/
11
12#ifndef jFEXFPGA_H
13#define jFEXFPGA_H
14
18#include "L1CaloFEXSim/jTowerContainer.h" //handle
28#include "CaloEvent/CaloCellContainer.h" //member
29
31#include "TrigConfData/L1Menu.h" //handle
32
34
35#include <vector>
36#include <memory>
37#include <unordered_map>
38
39class jFEXOutputCollection;
40class jFEXTOB;
41
42namespace LVL1 {
43
44 //Doxygen class description below:
50
51 class jFEXFPGA : public AthAlgTool, virtual public IjFEXFPGA {
52
53 public:
55 jFEXFPGA(const std::string& type,const std::string& name,const IInterface* parent);
56
58 virtual StatusCode initialize() override;
60 virtual ~jFEXFPGA();
61
62 virtual StatusCode init(int id, int efexid) override ;
63
64 virtual StatusCode execute(jFEXOutputCollection* inputOutputCollection, const std::pair<unsigned int, const std::vector<int>&> & jetCalibrationParameters) override ;
65
66 virtual void reset() override ;
67
68 virtual int ID() override {return m_id;}
69
72
74 virtual std::vector <std::unique_ptr<jFEXTOB>> getSmallRJetTOBs() override;
75 virtual std::vector <std::unique_ptr<jFEXTOB>> getLargeRJetTOBs() override;
76
78 virtual std::vector <std::vector <uint32_t>> getFwdElTOBs() override;
79
80 /* Retreive Tau TOB words */
81 virtual std::vector<std::unique_ptr<jFEXTOB>> getTauTOBs() override;
82
84 virtual std::vector<std::unique_ptr<jFEXTOB>> getSumEtTOBs() override;
85
87 virtual std::vector<std::unique_ptr<jFEXTOB>> getMetTOBs() override;
88
89 int getTTowerET_EM (unsigned int TTID ) override;
90 int getTTowerET_HAD (unsigned int TTID ) override;
91 int getTTowerET (unsigned int TTID ) override;
92 int getTTowerET_forMET (unsigned int TTID ) override;
93
95 private:
96
97 template <class TOBObjectClass> static bool TOBetSort(const TOBObjectClass& i, const TOBObjectClass& j , uint bits, uint mask) {
98 return (((i->getWord() >> bits ) & mask)>((j->getWord() >> bits ) & mask));
99 }
100
101 static bool etFwdElSort (const std::vector<uint32_t>& i, const std::vector<uint32_t>& j){ return (((i.at(0) >> FEXAlgoSpaceDefs::jEM_etBit ) & 0x7ff )> ((j.at(0) >> FEXAlgoSpaceDefs::jEM_etBit) & 0x7ff ));}
102
103 std::vector<std::unique_ptr<jFEXTOB>> m_tau_tobwords;
104 std::vector<std::unique_ptr<jFEXTOB>> m_SRJet_tobwords;
105 std::vector<std::unique_ptr<jFEXTOB>> m_LRJet_tobwords;
106 std::vector<std::unique_ptr<jFEXTOB>> m_sumET_tobwords;
107 std::vector<std::unique_ptr<jFEXTOB>> m_Met_tobwords;
108
109 int m_id{};
110 int m_jfexid{};
111
112 std::vector<std::vector<uint32_t>> m_FwdEl_tobwords;
113
116
117 std::unordered_map<int,jTower> m_jTowersColl;
118 std::unordered_map<int,std::vector<int> > m_map_Etvalues_FPGA;
119 std::unordered_map<int,std::vector<int> > m_map_HAD_Etvalues_FPGA;
120 std::unordered_map<int,std::vector<int> > m_map_EM_Etvalues_FPGA;
121
122
123 std::unordered_map<int, jFEXForwardJetsInfo> m_FCALJets;
124 std::unordered_map<uint, jFEXForwardElecInfo> m_ForwardElecs;
125
128
129 // FIXME: unused?
130 //CaloCellContainer m_sCellsCollection;
131
132 SG::ReadHandleKey<LVL1::jTowerContainer> m_jTowerContainerKey {this, "MyETowers", "jTowerContainer", "Input container for jTowers"};
133 SG::ReadHandleKey<TrigConf::L1Menu> m_l1MenuKey{this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"};
134 ToolHandle<IjFEXSmallRJetAlgo> m_jFEXSmallRJetAlgoTool {this, "jFEXSmallRJetAlgoTool", "LVL1::jFEXSmallRJetAlgo", "Tool that runs the jFEX Small R Jet algorithm"};
135 ToolHandle<IjFEXLargeRJetAlgo> m_jFEXLargeRJetAlgoTool {this, "jFEXLargeRJetAlgoTool", "LVL1::jFEXLargeRJetAlgo", "Tool that runs the jFEX Large R Jet algorithm"};
136 ToolHandle<IjFEXtauAlgo> m_jFEXtauAlgoTool {this, "jFEXtauAlgoTool" , "LVL1::jFEXtauAlgo" , "Tool that runs the jFEX tau algorithm"};
137 ToolHandle<IjFEXsumETAlgo> m_jFEXsumETAlgoTool {this, "jFEXsumETAlgoTool" , "LVL1::jFEXsumETAlgo" , "Tool that runs the jFEX sumET algorithm"};
138 ToolHandle<IjFEXmetAlgo> m_jFEXmetAlgoTool {this, "jFEXmetAlgoTool" , "LVL1::jFEXmetAlgo" , "Tool that runs the jFEX met algorithm"};
139 ToolHandle<IjFEXForwardJetsAlgo> m_jFEXForwardJetsAlgoTool {this, "jFEXForwardJetsAlgoTool" , "LVL1::jFEXForwardJetsAlgo" , "Tool that runs the jFEX FCAL Jets algorithm"};
140 ToolHandle<IjFEXForwardElecAlgo> m_jFEXForwardElecAlgoTool {this, "jFEXForwardElecAlgoTool" , "LVL1::jFEXForwardElecAlgo" , "Tool that runs the jFEX FCAL Electrons algorithm"};
141 ToolHandle<IjFEXPileupAndNoise> m_jFEXPileupAndNoiseTool {this, "jFEXPileupAndNoiseTool", "LVL1::jFEXPileupAndNoise", "Tool that applies Pileup and Noise"};
142 ToolHandle<IjFEXFormTOBs> m_IjFEXFormTOBsTool {this, "IjFEXFormTOBsTool", "LVL1::jFEXFormTOBs", "Tool that forms TOB words"};
143
144 int getTTowerET_SG(unsigned int TTID);
145 std::string m_jfex_string[6] = {"1C","2C","3C","3A","2A","1A"};
146 };
147
148} // end of namespace
149
150
151CLASS_DEF( LVL1::jFEXFPGA , 76081081 , 1 )
152#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
unsigned int uint
Handle class for reading from StoreGate.
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 jEM_etBit
static constexpr int jFEX_thin_algoSpace_width
static constexpr int jFEX_algoSpace_height
The jFEXFPGA class defines the structure of a single jFEX FPGA Its purpose is:
Definition jFEXFPGA.h:51
static bool etFwdElSort(const std::vector< uint32_t > &i, const std::vector< uint32_t > &j)
Definition jFEXFPGA.h:101
virtual std::vector< std::unique_ptr< jFEXTOB > > getMetTOBs() override
Form a tob word out of the potential candidate MET tob.
Definition jFEXFPGA.cxx:600
std::unordered_map< int, jTower > m_jTowersColl
Definition jFEXFPGA.h:117
std::vector< std::vector< uint32_t > > m_FwdEl_tobwords
Definition jFEXFPGA.h:112
ToolHandle< IjFEXSmallRJetAlgo > m_jFEXSmallRJetAlgoTool
Definition jFEXFPGA.h:134
std::unordered_map< int, std::vector< int > > m_map_Etvalues_FPGA
Definition jFEXFPGA.h:118
virtual void reset() override
Definition jFEXFPGA.cxx:63
std::string m_jfex_string[6]
Definition jFEXFPGA.h:145
int getTTowerET(unsigned int TTID) override
Definition jFEXFPGA.cxx:638
std::unordered_map< int, std::vector< int > > m_map_EM_Etvalues_FPGA
Definition jFEXFPGA.h:120
ToolHandle< IjFEXPileupAndNoise > m_jFEXPileupAndNoiseTool
Definition jFEXFPGA.h:141
virtual StatusCode execute(jFEXOutputCollection *inputOutputCollection, const std::pair< unsigned int, const std::vector< int > & > &jetCalibrationParameters) override
Definition jFEXFPGA.cxx:78
static bool TOBetSort(const TOBObjectClass &i, const TOBObjectClass &j, uint bits, uint mask)
Internal data.
Definition jFEXFPGA.h:97
int getTTowerET_forMET(unsigned int TTID) override
Definition jFEXFPGA.cxx:645
ToolHandle< IjFEXForwardJetsAlgo > m_jFEXForwardJetsAlgoTool
Definition jFEXFPGA.h:139
virtual std::vector< std::vector< uint32_t > > getFwdElTOBs() override
sorted Electron tobs
Definition jFEXFPGA.cxx:561
ToolHandle< IjFEXmetAlgo > m_jFEXmetAlgoTool
Definition jFEXFPGA.h:138
int getTTowerET_EM(unsigned int TTID) override
Definition jFEXFPGA.cxx:614
virtual std::vector< std::unique_ptr< jFEXTOB > > getLargeRJetTOBs() override
Definition jFEXFPGA.cxx:547
std::vector< std::unique_ptr< jFEXTOB > > m_tau_tobwords
Definition jFEXFPGA.h:103
virtual std::vector< std::unique_ptr< jFEXTOB > > getSumEtTOBs() override
Form a tob word out of the potential candidate SumET tob.
Definition jFEXFPGA.cxx:586
jFEXFPGA(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
Definition jFEXFPGA.cxx:36
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
Definition jFEXFPGA.h:133
std::unordered_map< int, std::vector< int > > m_map_HAD_Etvalues_FPGA
Definition jFEXFPGA.h:119
int m_jTowersIDs_Thin[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
Definition jFEXFPGA.h:115
virtual int ID() override
Definition jFEXFPGA.h:68
virtual ~jFEXFPGA()
Destructor.
Definition jFEXFPGA.cxx:41
ToolHandle< IjFEXFormTOBs > m_IjFEXFormTOBsTool
Definition jFEXFPGA.h:142
std::vector< std::unique_ptr< jFEXTOB > > m_sumET_tobwords
Definition jFEXFPGA.h:106
std::vector< std::unique_ptr< jFEXTOB > > m_SRJet_tobwords
Definition jFEXFPGA.h:104
ToolHandle< IjFEXsumETAlgo > m_jFEXsumETAlgoTool
Definition jFEXFPGA.h:137
virtual StatusCode initialize() override
standard Athena-Algorithm method
Definition jFEXFPGA.cxx:47
virtual std::vector< std::unique_ptr< jFEXTOB > > getSmallRJetTOBs() override
Form a tob word out of the potential candidate SmallRJet tob.
Definition jFEXFPGA.cxx:534
ToolHandle< IjFEXtauAlgo > m_jFEXtauAlgoTool
Definition jFEXFPGA.h:136
std::unordered_map< int, jFEXForwardJetsInfo > m_FCALJets
Definition jFEXFPGA.h:123
std::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
Definition jFEXFPGA.h:107
virtual StatusCode init(int id, int efexid) override
Definition jFEXFPGA.cxx:55
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
Definition jFEXFPGA.h:105
virtual void SetTowersAndCells_SG(int[][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override
Definition jFEXFPGA.cxx:493
std::unordered_map< uint, jFEXForwardElecInfo > m_ForwardElecs
Definition jFEXFPGA.h:124
int getTTowerET_SG(unsigned int TTID)
Definition jFEXFPGA.cxx:672
int getTTowerET_HAD(unsigned int TTID) override
Definition jFEXFPGA.cxx:626
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition jFEXFPGA.h:132
ToolHandle< IjFEXLargeRJetAlgo > m_jFEXLargeRJetAlgoTool
Definition jFEXFPGA.h:135
int m_jTowersIDs_Wide[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition jFEXFPGA.h:114
ToolHandle< IjFEXForwardElecAlgo > m_jFEXForwardElecAlgoTool
Definition jFEXFPGA.h:140
virtual std::vector< std::unique_ptr< jFEXTOB > > getTauTOBs() override
Definition jFEXFPGA.cxx:573
Property holding a SG store/key/clid from which a ReadHandle is made.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...