36#include <unordered_map>
38class jFEXOutputCollection;
54 jFEXFPGA(
const std::string&
type,
const std::string&
name,
const IInterface* parent);
61 virtual StatusCode
init(
int id,
int efexid)
override ;
63 virtual StatusCode
execute(
jFEXOutputCollection* inputOutputCollection,
const std::pair<
unsigned int,
const std::vector<int>&> & jetCalibrationParameters)
override ;
65 virtual void reset()
override ;
67 virtual int ID()
const override {
return m_id;}
77 virtual std::vector <std::vector <uint32_t>>
getFwdElTOBs()
override;
80 virtual std::vector<std::unique_ptr<jFEXTOB>>
getTauTOBs()
override;
83 virtual std::vector<std::unique_ptr<jFEXTOB>>
getSumEtTOBs()
override;
86 virtual std::vector<std::unique_ptr<jFEXTOB>>
getMetTOBs()
override;
90 int getTTowerET (
unsigned int TTID )
const override;
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));
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"};
macros to associate a CLID to a type
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Handle class for reading from StoreGate.
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:
static bool etFwdElSort(const std::vector< uint32_t > &i, const std::vector< uint32_t > &j)
virtual std::vector< std::unique_ptr< jFEXTOB > > getMetTOBs() override
Form a tob word out of the potential candidate MET tob.
std::vector< std::vector< uint32_t > > m_FwdEl_tobwords
ToolHandle< IjFEXSmallRJetAlgo > m_jFEXSmallRJetAlgoTool
virtual void reset() override
std::string m_jfex_string[6]
std::unordered_map< int, std::vector< int > > m_map_EM_Etvalues_FPGA
ToolHandle< IjFEXPileupAndNoise > m_jFEXPileupAndNoiseTool
virtual StatusCode execute(jFEXOutputCollection *inputOutputCollection, const std::pair< unsigned int, const std::vector< int > & > &jetCalibrationParameters) override
static bool TOBetSort(const TOBObjectClass &i, const TOBObjectClass &j, uint bits, uint mask)
Internal data.
ToolHandle< IjFEXForwardJetsAlgo > m_jFEXForwardJetsAlgoTool
virtual std::vector< std::vector< uint32_t > > getFwdElTOBs() override
sorted Electron tobs
ToolHandle< IjFEXmetAlgo > m_jFEXmetAlgoTool
virtual std::vector< std::unique_ptr< jFEXTOB > > getLargeRJetTOBs() override
int getTTowerET_forMET(unsigned int TTID) const override
std::vector< std::unique_ptr< jFEXTOB > > m_tau_tobwords
virtual std::vector< std::unique_ptr< jFEXTOB > > getSumEtTOBs() override
Form a tob word out of the potential candidate SumET tob.
virtual int ID() const override
jFEXFPGA(const std::string &type, const std::string &name, const IInterface *parent)
Constructors.
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
std::unordered_map< int, std::vector< int > > m_map_HAD_Etvalues_FPGA
int m_jTowersIDs_Thin[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_thin_algoSpace_width]
virtual ~jFEXFPGA()
Destructor.
int getTTowerET(unsigned int TTID) const override
ToolHandle< IjFEXFormTOBs > m_IjFEXFormTOBsTool
std::vector< std::unique_ptr< jFEXTOB > > m_sumET_tobwords
std::vector< std::unique_ptr< jFEXTOB > > m_SRJet_tobwords
ToolHandle< IjFEXsumETAlgo > m_jFEXsumETAlgoTool
virtual StatusCode initialize() override
standard Athena-Algorithm method
virtual std::vector< std::unique_ptr< jFEXTOB > > getSmallRJetTOBs() override
Form a tob word out of the potential candidate SmallRJet tob.
ToolHandle< IjFEXtauAlgo > m_jFEXtauAlgoTool
int getTTowerET_HAD(unsigned int TTID) const override
std::vector< std::unique_ptr< jFEXTOB > > m_Met_tobwords
int getTTowerET_EM(unsigned int TTID) const override
virtual StatusCode init(int id, int efexid) override
std::vector< std::unique_ptr< jFEXTOB > > m_LRJet_tobwords
virtual void SetTowersAndCells_SG(int[][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]) override
int getTTowerET_SG(unsigned int TTID)
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerKey
ToolHandle< IjFEXLargeRJetAlgo > m_jFEXLargeRJetAlgoTool
int m_jTowersIDs_Wide[FEXAlgoSpaceDefs::jFEX_algoSpace_height][FEXAlgoSpaceDefs::jFEX_wide_algoSpace_width]
ToolHandle< IjFEXForwardElecAlgo > m_jFEXForwardElecAlgoTool
virtual std::vector< std::unique_ptr< jFEXTOB > > getTauTOBs() 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...