ATLAS Offline Software
Loading...
Searching...
No Matches
jFEXFPGA.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//***************************************************************************
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
30#include "TrigConfData/L1Menu.h" //handle
31
33
34#include <vector>
35#include <memory>
36#include <unordered_map>
37
38class jFEXOutputCollection;
39class jFEXTOB;
40
41namespace LVL1 {
42
43 //Doxygen class description below:
49
50 class jFEXFPGA : public AthAlgTool, virtual public IjFEXFPGA {
51
52 public:
54 jFEXFPGA(const std::string& type,const std::string& name,const IInterface* parent);
55
57 virtual StatusCode initialize() override;
59 virtual ~jFEXFPGA();
60
61 virtual StatusCode init(int id, int efexid) override ;
62
63 virtual StatusCode execute(jFEXOutputCollection* inputOutputCollection, const std::pair<unsigned int, const std::vector<int>&> & jetCalibrationParameters) override ;
64
65 virtual void reset() override ;
66
67 virtual int ID() const override {return m_id;}
68
71
73 virtual std::vector <std::unique_ptr<jFEXTOB>> getSmallRJetTOBs() override;
74 virtual std::vector <std::unique_ptr<jFEXTOB>> getLargeRJetTOBs() override;
75
77 virtual std::vector <std::vector <uint32_t>> getFwdElTOBs() override;
78
79 /* Retreive Tau TOB words */
80 virtual std::vector<std::unique_ptr<jFEXTOB>> getTauTOBs() override;
81
83 virtual std::vector<std::unique_ptr<jFEXTOB>> getSumEtTOBs() override;
84
86 virtual std::vector<std::unique_ptr<jFEXTOB>> getMetTOBs() override;
87
88 int getTTowerET_EM (unsigned int TTID ) const override;
89 int getTTowerET_HAD (unsigned int TTID ) const override;
90 int getTTowerET (unsigned int TTID ) const override;
91 int getTTowerET_forMET (unsigned int TTID ) const override;
92
94 private:
95
96 template <class TOBObjectClass> static bool TOBetSort(const TOBObjectClass& i, const TOBObjectClass& j , uint bits, uint mask) {
97 return (((i->getWord() >> bits ) & mask)>((j->getWord() >> bits ) & mask));
98 }
99
100 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 ));}
101
102 std::vector<std::unique_ptr<jFEXTOB>> m_tau_tobwords;
103 std::vector<std::unique_ptr<jFEXTOB>> m_SRJet_tobwords;
104 std::vector<std::unique_ptr<jFEXTOB>> m_LRJet_tobwords;
105 std::vector<std::unique_ptr<jFEXTOB>> m_sumET_tobwords;
106 std::vector<std::unique_ptr<jFEXTOB>> m_Met_tobwords;
107
108 int m_id{};
109 int m_jfexid{};
110
111 std::vector<std::vector<uint32_t>> m_FwdEl_tobwords;
112
115
116 std::unordered_map<int,std::vector<int> > m_map_HAD_Etvalues_FPGA;
117 std::unordered_map<int,std::vector<int> > m_map_EM_Etvalues_FPGA;
118
119 SG::ReadHandleKey<LVL1::jTowerContainer> m_jTowerContainerKey {this, "MyETowers", "jTowerContainer", "Input container for jTowers"};
120 SG::ReadHandleKey<TrigConf::L1Menu> m_l1MenuKey{this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"};
121 ToolHandle<IjFEXSmallRJetAlgo> m_jFEXSmallRJetAlgoTool {this, "jFEXSmallRJetAlgoTool", "LVL1::jFEXSmallRJetAlgo", "Tool that runs the jFEX Small R Jet algorithm"};
122 ToolHandle<IjFEXLargeRJetAlgo> m_jFEXLargeRJetAlgoTool {this, "jFEXLargeRJetAlgoTool", "LVL1::jFEXLargeRJetAlgo", "Tool that runs the jFEX Large R Jet algorithm"};
123 ToolHandle<IjFEXtauAlgo> m_jFEXtauAlgoTool {this, "jFEXtauAlgoTool" , "LVL1::jFEXtauAlgo" , "Tool that runs the jFEX tau algorithm"};
124 ToolHandle<IjFEXsumETAlgo> m_jFEXsumETAlgoTool {this, "jFEXsumETAlgoTool" , "LVL1::jFEXsumETAlgo" , "Tool that runs the jFEX sumET algorithm"};
125 ToolHandle<IjFEXmetAlgo> m_jFEXmetAlgoTool {this, "jFEXmetAlgoTool" , "LVL1::jFEXmetAlgo" , "Tool that runs the jFEX met algorithm"};
126 ToolHandle<IjFEXForwardJetsAlgo> m_jFEXForwardJetsAlgoTool {this, "jFEXForwardJetsAlgoTool" , "LVL1::jFEXForwardJetsAlgo" , "Tool that runs the jFEX FCAL Jets algorithm"};
127 ToolHandle<IjFEXForwardElecAlgo> m_jFEXForwardElecAlgoTool {this, "jFEXForwardElecAlgoTool" , "LVL1::jFEXForwardElecAlgo" , "Tool that runs the jFEX FCAL Electrons algorithm"};
128 ToolHandle<IjFEXPileupAndNoise> m_jFEXPileupAndNoiseTool {this, "jFEXPileupAndNoiseTool", "LVL1::jFEXPileupAndNoise", "Tool that applies Pileup and Noise"};
129 ToolHandle<IjFEXFormTOBs> m_IjFEXFormTOBsTool {this, "IjFEXFormTOBsTool", "LVL1::jFEXFormTOBs", "Tool that forms TOB words"};
130
131 int getTTowerET_SG(unsigned int TTID);
132 std::string m_jfex_string[6] = {"1C","2C","3C","3A","2A","1A"};
133 };
134
135} // end of namespace
136
137
138CLASS_DEF( LVL1::jFEXFPGA , 76081081 , 1 )
139#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:50
static bool etFwdElSort(const std::vector< uint32_t > &i, const std::vector< uint32_t > &j)
Definition jFEXFPGA.h:100
virtual std::vector< std::unique_ptr< jFEXTOB > > getMetTOBs() override
Form a tob word out of the potential candidate MET tob.
Definition jFEXFPGA.cxx:603
std::vector< std::vector< uint32_t > > m_FwdEl_tobwords
Definition jFEXFPGA.h:111
ToolHandle< IjFEXSmallRJetAlgo > m_jFEXSmallRJetAlgoTool
Definition jFEXFPGA.h:121
virtual void reset() override
Definition jFEXFPGA.cxx:63
std::string m_jfex_string[6]
Definition jFEXFPGA.h:132
std::unordered_map< int, std::vector< int > > m_map_EM_Etvalues_FPGA
Definition jFEXFPGA.h:117
ToolHandle< IjFEXPileupAndNoise > m_jFEXPileupAndNoiseTool
Definition jFEXFPGA.h:128
virtual StatusCode execute(jFEXOutputCollection *inputOutputCollection, const std::pair< unsigned int, const std::vector< int > & > &jetCalibrationParameters) override
Definition jFEXFPGA.cxx:77
static bool TOBetSort(const TOBObjectClass &i, const TOBObjectClass &j, uint bits, uint mask)
Internal data.
Definition jFEXFPGA.h:96
ToolHandle< IjFEXForwardJetsAlgo > m_jFEXForwardJetsAlgoTool
Definition jFEXFPGA.h:126
virtual std::vector< std::vector< uint32_t > > getFwdElTOBs() override
sorted Electron tobs
Definition jFEXFPGA.cxx:564
ToolHandle< IjFEXmetAlgo > m_jFEXmetAlgoTool
Definition jFEXFPGA.h:125
virtual std::vector< std::unique_ptr< jFEXTOB > > getLargeRJetTOBs() override
Definition jFEXFPGA.cxx:550
int getTTowerET_forMET(unsigned int TTID) const override
Definition jFEXFPGA.cxx:648
std::vector< std::unique_ptr< jFEXTOB > > m_tau_tobwords
Definition jFEXFPGA.h:102
virtual std::vector< std::unique_ptr< jFEXTOB > > getSumEtTOBs() override
Form a tob word out of the potential candidate SumET tob.
Definition jFEXFPGA.cxx:589
virtual int ID() const override
Definition jFEXFPGA.h:67
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:120
std::unordered_map< int, std::vector< int > > m_map_HAD_Etvalues_FPGA
Definition jFEXFPGA.h:116
int m_jTowersIDs_Thin[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
Definition jFEXFPGA.h:114
virtual ~jFEXFPGA()
Destructor.
Definition jFEXFPGA.cxx:41
int getTTowerET(unsigned int TTID) const override
Definition jFEXFPGA.cxx:641
ToolHandle< IjFEXFormTOBs > m_IjFEXFormTOBsTool
Definition jFEXFPGA.h:129
std::vector< std::unique_ptr< jFEXTOB > > m_sumET_tobwords
Definition jFEXFPGA.h:105
std::vector< std::unique_ptr< jFEXTOB > > m_SRJet_tobwords
Definition jFEXFPGA.h:103
ToolHandle< IjFEXsumETAlgo > m_jFEXsumETAlgoTool
Definition jFEXFPGA.h:124
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:537
ToolHandle< IjFEXtauAlgo > m_jFEXtauAlgoTool
Definition jFEXFPGA.h:123
int getTTowerET_HAD(unsigned int TTID) const override
Definition jFEXFPGA.cxx:629
std::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
Definition jFEXFPGA.h:106
int getTTowerET_EM(unsigned int TTID) const override
Definition jFEXFPGA.cxx:617
virtual StatusCode init(int id, int efexid) override
Definition jFEXFPGA.cxx:55
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
Definition jFEXFPGA.h:104
virtual void SetTowersAndCells_SG(int[][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override
Definition jFEXFPGA.cxx:492
int getTTowerET_SG(unsigned int TTID)
Definition jFEXFPGA.cxx:675
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
Definition jFEXFPGA.h:119
ToolHandle< IjFEXLargeRJetAlgo > m_jFEXLargeRJetAlgoTool
Definition jFEXFPGA.h:122
int m_jTowersIDs_Wide[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
Definition jFEXFPGA.h:113
ToolHandle< IjFEXForwardElecAlgo > m_jFEXForwardElecAlgoTool
Definition jFEXFPGA.h:127
virtual std::vector< std::unique_ptr< jFEXTOB > > getTauTOBs() override
Definition jFEXFPGA.cxx:576
Property holding a SG store/key/clid from which a ReadHandle is made.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...