ATLAS Offline Software
Loading...
Searching...
No Matches
LVL1::gFEXSim Class Reference

The gFEXSim class defines the structure of the gFEX Its purpose is: More...

#include <gFEXSim.h>

Inheritance diagram for LVL1::gFEXSim:
Collaboration diagram for LVL1::gFEXSim:

Public Member Functions

 gFEXSim (const std::string &type, const std::string &name, const IInterface *parent)
 Constructors.
virtual ~gFEXSim ()
 Destructor.
virtual void reset () override
virtual void execute () override
virtual StatusCode initialize () override
virtual StatusCode executegFEXSim (const gTowersIDs &tmp, gFEXOutputCollection *gFEXOutputs) override
virtual std::vector< uint32_t > getgRhoTOBs () const override
virtual std::vector< uint32_t > getgBlockTOBs () const override
virtual std::vector< uint32_t > getgJetTOBs () const override
virtual std::vector< int32_t > getgScalarEJwojTOBs () const override
virtual std::vector< uint32_t > getgMETComponentsJwojTOBs () const override
virtual std::vector< uint32_t > getgMHTComponentsJwojTOBs () const override
virtual std::vector< uint32_t > getgMSTComponentsJwojTOBs () const override
virtual std::vector< uint32_t > getgMETComponentsNoiseCutTOBs () const override
virtual std::vector< uint32_t > getgMETComponentsRmsTOBs () const override
virtual std::vector< uint32_t > getgScalarENoiseCutTOBs () const override
virtual std::vector< uint32_t > getgScalarERmsTOBs () const override
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

gTowersIDs m_gTowersIDs
 Internal data.
CaloCellContainer m_sCellsCollection
std::vector< uint32_t > m_gRhoTobWords
std::vector< uint32_t > m_gBlockTobWords
std::vector< uint32_t > m_gJetTobWords
std::vector< int32_t > m_gScalarEJwojTobWords
std::vector< uint32_t > m_gMETComponentsJwojTobWords
std::vector< uint32_t > m_gMHTComponentsJwojTobWords
std::vector< uint32_t > m_gMSTComponentsJwojTobWords
std::vector< uint32_t > m_gMETComponentsNoiseCutTobWords
std::vector< uint32_t > m_gMETComponentsRmsTobWords
std::vector< uint32_t > m_gScalarENoiseCutTobWords
std::vector< uint32_t > m_gScalarERmsTobWords
ToolHandle< IgFEXFPGAm_gFEXFPGA_Tool {this, "gFEXFPGATool", "LVL1::gFEXFPGA", "Tool that simulates the FPGA hardware"}
ToolHandle< IgFEXJetAlgom_gFEXJetAlgoTool {this, "gFEXJetAlgoTool", "LVL1::gFEXJetAlgo", "Tool that runs the gFEX jet algorithm"}
ToolHandle< IgFEXJwoJAlgom_gFEXJwoJAlgoTool {this, "gFEXJwoJAlgoTool", "LVL1::gFEXJwoJAlgo", "Tool that runs the gFEX Jets without Jets algorithm"}
ToolHandle< IgFEXaltMetAlgom_gFEXaltMetAlgoTool {this, "gFEXaltMetAlgoTool", "LVL1::gFEXaltMetAlgo", "Tool that runs the gFEX noise cut and rho+RMS algorithms for MET"}
SG::ReadHandleKey< TrigConf::L1Menum_l1MenuKey {this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"}
SG::WriteHandleKey< xAOD::gFexTowerContainerm_gTowersWriteKey {this,"gTowersWriteKey" ,"L1_gFexTriggerTowers", "Write gFexEDM Trigger Tower container"}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

The gFEXSim class defines the structure of the gFEX Its purpose is:

  • to emulate the steps taken in processing data for gFEX in hardware and firmware
  • It will need to interact with gTowers and produce the gTOBs. It will be created and handed data by gFEXSysSim

Definition at line 38 of file gFEXSim.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ gFEXSim()

LVL1::gFEXSim::gFEXSim ( const std::string & type,
const std::string & name,
const IInterface * parent )

Constructors.

Definition at line 21 of file gFEXSim.cxx.

21 :
22 AthAlgTool(type,name,parent)
23 {
24 declareInterface<IgFEXSim>(this);
25 }
AthAlgTool()
Default constructor:

◆ ~gFEXSim()

LVL1::gFEXSim::~gFEXSim ( )
virtual

Destructor.

Definition at line 42 of file gFEXSim.cxx.

42 {
43 }

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

void LVL1::gFEXSim::execute ( )
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 55 of file gFEXSim.cxx.

55 {
56
57 }

◆ executegFEXSim()

StatusCode LVL1::gFEXSim::executegFEXSim ( const gTowersIDs & tmp,
gFEXOutputCollection * gFEXOutputs )
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 59 of file gFEXSim.cxx.

59 {
60
61 // Container to save gTowers
62 SG::WriteHandle<xAOD::gFexTowerContainer> gTowersContainer(m_gTowersWriteKey);
63 ATH_CHECK(gTowersContainer.record(std::make_unique<xAOD::gFexTowerContainer>(), std::make_unique<xAOD::gFexTowerAuxContainer>()));
64 ATH_MSG_DEBUG("Recorded gFexTriggerTower container with key " << gTowersContainer.key());
65
66 int rows = tmp_gTowersIDs_subset.size();
67 int cols = tmp_gTowersIDs_subset[0].size();
68
69 std::copy(&tmp_gTowersIDs_subset[0][0], &tmp_gTowersIDs_subset[0][0]+(rows*cols),&m_gTowersIDs[0][0]);
70
71 gTowersType Atwr = {{{0}}};
72 gTowersType Btwr = {{{0}}};
73 gTowersType Ctwr = {{{0}}};
74
75 gTowersType Atwr50 = {{{0}}};
76 gTowersType Btwr50 = {{{0}}};
77 gTowersType Ctwr50 = {{{0}}};
78
79 gTowersType Asat = {{{0}}};
80 gTowersType Bsat = {{{0}}};
81 gTowersType Csat = {{{0}}};
82
83
84 //FPGA A----------------------------------------------------------------------------------------------------------------------------------------------
85 gTowersCentral tmp_gTowersIDs_subset_centralFPGA;
86 memset(&tmp_gTowersIDs_subset_centralFPGA, 0, sizeof tmp_gTowersIDs_subset_centralFPGA);
87 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::centralNphi; myrow++){
88 for (int mycol = 0; mycol<12; mycol++){
89 tmp_gTowersIDs_subset_centralFPGA[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+8];
90 }
91 }
92 ATH_CHECK(m_gFEXFPGA_Tool->init(0));
93 m_gFEXFPGA_Tool->FillgTowerEDMCentral(gTowersContainer, tmp_gTowersIDs_subset_centralFPGA, Atwr, Atwr50, Asat);
94 m_gFEXFPGA_Tool->reset();
95
96 //FPGA A----------------------------------------------------------------------------------------------------------------------------------------------
97
98 //FPGA B----------------------------------------------------------------------------------------------------------------------------------------------
99 gTowersCentral tmp_gTowersIDs_subset_centralFPGA_B;
100 memset(&tmp_gTowersIDs_subset_centralFPGA_B, 0, sizeof tmp_gTowersIDs_subset_centralFPGA_B);
101 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::centralNphi; myrow++){
102 for (int mycol = 0; mycol<12; mycol++){
103 tmp_gTowersIDs_subset_centralFPGA_B[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+20];
104 }
105 }
106 ATH_CHECK(m_gFEXFPGA_Tool->init(1));
107 m_gFEXFPGA_Tool->FillgTowerEDMCentral(gTowersContainer, tmp_gTowersIDs_subset_centralFPGA_B, Btwr, Btwr50, Bsat);
108 m_gFEXFPGA_Tool->reset();
109
110 //FPGA B----------------------------------------------------------------------------------------------------------------------------------------------
111
112
113 //FPGA C ----------------------------------------------------------------------------------------------------------------------------------------------
114
115 // C-N
116 //Use a matrix with 32 rows, even if FPGA-N (negative) also deals with regions of 16 bins in phi (those connected to FCAL).
117 //We have 4 columns with 32 rows and 4 columns with 16 rows for each FPGA-C.
118 //So we use a matrix 32x8 but we fill only half of it in the region 3.3<|eta|<4.8.
119 gTowersForward tmp_gTowersIDs_subset_forwardFPGA_N;
120 memset(&tmp_gTowersIDs_subset_forwardFPGA_N, 0, sizeof tmp_gTowersIDs_subset_forwardFPGA_N);
121 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::forwardNphi; myrow++){
122 for (int mycol = 0; mycol<4; mycol++){
123 tmp_gTowersIDs_subset_forwardFPGA_N[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol];
124 }
125 }
126 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::centralNphi; myrow++){
127 for (int mycol = 4; mycol<8; mycol++){
128 tmp_gTowersIDs_subset_forwardFPGA_N[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol];
129 }
130 }
131
132 // C-P
133 //Use a matrix with 32 rows, even if FPGA-C (positive) also deals with regions of 16 bins in phi (those connected to FCAL).
134 //We have 4 columns with 32 rows and 4 columns with 16 rows for each FPGA-C.
135 //So we use a matrix 32x8 but we fill only half of it in the region 3.3<|eta|<4.8.
136 gTowersForward tmp_gTowersIDs_subset_forwardFPGA_P;
137 memset(&tmp_gTowersIDs_subset_forwardFPGA_P, 0, sizeof tmp_gTowersIDs_subset_forwardFPGA_P);
138 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::centralNphi; myrow++){
139 for (int mycol = 0; mycol<4; mycol++){
140 tmp_gTowersIDs_subset_forwardFPGA_P[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+32];
141 }
142 }
143 for (int myrow = 0; myrow<FEXAlgoSpaceDefs::forwardNphi; myrow++){
144 for (int mycol = 4; mycol<8; mycol++){
145 tmp_gTowersIDs_subset_forwardFPGA_P[myrow][mycol] = tmp_gTowersIDs_subset[myrow][mycol+32];
146 }
147 }
148
149 ATH_CHECK(m_gFEXFPGA_Tool->init(2));
150 m_gFEXFPGA_Tool->FillgTowerEDMForward(gTowersContainer, tmp_gTowersIDs_subset_forwardFPGA_N, tmp_gTowersIDs_subset_forwardFPGA_P, Ctwr, Ctwr50, Csat);
151 m_gFEXFPGA_Tool->reset();
152
153
154 //FPGA C----------------------------------------------------------------------------------------------------------------------------------------------
155
156 // Retrieve the L1 menu configuration
157 SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey/*, ctx*/);
158 ATH_CHECK(l1Menu.isValid());
159
160 //Parameters related to gLJ (large-R jet objects - gJet)
161 auto & thr_gLJ = l1Menu->thrExtraInfo().gLJ();
162 int gLJ_seedThrA = 0;
163 int gLJ_seedThrB = 0;
164 int gLJ_seedThrC = 0;
165 gLJ_seedThrA = thr_gLJ.seedThrCounts('A'); //defined in GeV by default
166 gLJ_seedThrB = thr_gLJ.seedThrCounts('B'); //defined in GeV by default
167 gLJ_seedThrC = thr_gLJ.seedThrCounts('C'); //defined in GeV by default
168
169 int gLJ_ptMinToTopoCounts1 = 0;
170 int gLJ_ptMinToTopoCounts2 = 0;
171 gLJ_ptMinToTopoCounts1 = thr_gLJ.ptMinToTopoCounts(1);
172 gLJ_ptMinToTopoCounts2 = thr_gLJ.ptMinToTopoCounts(2);
173 float gLJ_rhoMaxA = 0;
174 float gLJ_rhoMaxB = 0;
175 float gLJ_rhoMaxC = 0;
176
177 gLJ_rhoMaxA = (thr_gLJ.rhoTowerMax('A')*1000)/50;//Values are given in GeV, need to be converted with 50MeV scale to be used in PU calculation
178 gLJ_rhoMaxB = (thr_gLJ.rhoTowerMax('B')*1000)/50;//Values are given in GeV, need to be converted with 50MeV scale to be used in PU calculation
179 gLJ_rhoMaxC = (thr_gLJ.rhoTowerMax('C')*1000)/50;//Values are given in GeV, need to be converted with 50MeV scale to be used in PU calculation
180
181
182 //Parameters related to gJ (small-R jet objects - gBlock)
183 auto & thr_gJ = l1Menu->thrExtraInfo().gJ();
184 int gJ_ptMinToTopoCounts1 = 0;
185 int gJ_ptMinToTopoCounts2 = 0;
186 gJ_ptMinToTopoCounts1 = thr_gJ.ptMinToTopoCounts(1);
187 gJ_ptMinToTopoCounts2 = thr_gJ.ptMinToTopoCounts(2);
188
189
190 int pucA = 0;
191 int pucB = 0;
192 int pucC = 0;
193 int pucA_JWJ = 0;
194 int pucB_JWJ = 0;
195 int pucC_JWJ = 0;
196 //note that jetThreshold is not a configurable parameter in firmware, it is used to check that jet values are positive
197 int jetThreshold = FEXAlgoSpaceDefs::jetThr; //this threshold is set by the online software
198
199 if (FEXAlgoSpaceDefs::ENABLE_PUC == true){
200 m_gFEXJetAlgoTool->pileUpCalculation(Atwr50, gLJ_rhoMaxA, 1, pucA, pucA_JWJ);
201 m_gFEXJetAlgoTool->pileUpCalculation(Btwr50, gLJ_rhoMaxB, 1, pucB, pucB_JWJ);
202 m_gFEXJetAlgoTool->pileUpCalculation(Ctwr50, gLJ_rhoMaxC, 1, pucC, pucC_JWJ);
203 }
204
205
206
207 // The output TOBs, to be filled by the gFEXJetAlgoTool
208 std::array<uint32_t, 7> ATOB1_dat = {0};
209 std::array<uint32_t, 7> ATOB2_dat = {0};
210 std::array<uint32_t, 7> BTOB1_dat = {0};
211 std::array<uint32_t, 7> BTOB2_dat = {0};
212 std::array<uint32_t, 7> CTOB1_dat = {0};
213 std::array<uint32_t, 7> CTOB2_dat = {0};
214
215
216 // Pass the energy matrices to the algo tool, and run the algorithms
217 auto tobs_v = m_gFEXJetAlgoTool->largeRfinder(Atwr, Btwr, Ctwr, Asat, Bsat, Csat, pucA, pucB, pucC,
218 gLJ_seedThrA, gLJ_seedThrB, gLJ_seedThrC, gJ_ptMinToTopoCounts1, gJ_ptMinToTopoCounts2,
219 jetThreshold, gLJ_ptMinToTopoCounts1, gLJ_ptMinToTopoCounts2,
220 ATOB1_dat, ATOB2_dat,
221 BTOB1_dat, BTOB2_dat,
222 CTOB1_dat, CTOB2_dat);
223
224 m_gRhoTobWords.resize(3);
225 m_gBlockTobWords.resize(12);
226 m_gJetTobWords.resize(6);
227
228 m_gRhoTobWords[0] = ATOB2_dat[0];//Pile up correction A
229 m_gRhoTobWords[1] = BTOB2_dat[0];//Pile up correction B
230 m_gRhoTobWords[2] = CTOB2_dat[0];//Pile up correction C
231
232 //Placing the gBlock TOBs into a dedicated array
233 m_gBlockTobWords[0] = ATOB1_dat[1];//leading gBlock in FPGA A, eta bins (0--5)
234 m_gBlockTobWords[1] = ATOB2_dat[1];//leading gBlock in FPGA A, eta bins (6--11)
235 m_gBlockTobWords[2] = BTOB1_dat[1];//leading gBlock in FPGA B, eta bins (0--5)
236 m_gBlockTobWords[3] = BTOB2_dat[1];//leading gBlock in FPGA B, eta bins (6--11)
237
238 m_gBlockTobWords[4] = ATOB1_dat[2];//subleading gBlock in FPGA A, eta bins (0--5)
239 m_gBlockTobWords[5] = ATOB2_dat[2];//subleading gBlock in FPGA A, eta bins (6--11)
240 m_gBlockTobWords[6] = BTOB1_dat[2];//subleading gBlock in FPGA B, eta bins (0--5)
241 m_gBlockTobWords[7] = BTOB2_dat[2];//subleading gBlock in FPGA B, eta bins (6--11)
242
243 m_gBlockTobWords[8] = CTOB1_dat[1];//leading gBlock in FPGA C, eta negative
244 m_gBlockTobWords[9] = CTOB2_dat[1];//leading gBlock in FPGA C, eta positive
245 m_gBlockTobWords[10] = CTOB1_dat[2];//sub-leading gBlock in FPGA C, eta negative
246 m_gBlockTobWords[11] = CTOB2_dat[2];//sub-leading gBlock in FPGA C, eta positive
247
248 //Placing the gJet TOBs into a dedicated array
249 m_gJetTobWords[0] = ATOB1_dat[3];//leading gJet in FPGA A, eta bins (0--5)
250 m_gJetTobWords[1] = ATOB2_dat[3];//leading gJet in FPGA A, eta bins (6--11)
251 m_gJetTobWords[2] = BTOB1_dat[3];//leading gJet in FPGA B, eta bins (0--5)
252 m_gJetTobWords[3] = BTOB2_dat[3];//leading gJet in FPGA B, eta bins (6--11)
253 m_gJetTobWords[4] = CTOB1_dat[3];//leading gJet in FPGA C negative
254 m_gJetTobWords[5] = CTOB2_dat[3];//leading gJet in FPGA C positive
255
256
257 // Use the gFEXJetAlgoTool
258 std::array<int32_t, 4> outJwojTOB = {0};
259 std::array<uint32_t, 4> outAltMetTOB = {0};
260
261 //Parameters related to gXE (MET objects, both JwoJ and alternative MET calculation)
262 auto & thr_gXE = l1Menu->thrExtraInfo().gXE();
263 int gXE_seedThrA = 0;
264 int gXE_seedThrB = 0;
265 int gXE_seedThrC = 0;
266 gXE_seedThrA = thr_gXE.seedThr('A'); //defined in counts
267 gXE_seedThrB = thr_gXE.seedThr('B'); //defined in counts
268 gXE_seedThrC = thr_gXE.seedThr('C'); //defined in counts
269
270
271 int aFPGA_A = thr_gXE.JWOJ_param('A','a');// 1003
272 int bFPGA_A = thr_gXE.JWOJ_param('A','b');// 409
273 int aFPGA_B = thr_gXE.JWOJ_param('B','a');// 1003
274 int bFPGA_B = thr_gXE.JWOJ_param('B','b');// 409
275 int aFPGA_C = thr_gXE.JWOJ_param('C','a');// 1003
276 int bFPGA_C = thr_gXE.JWOJ_param('C','b');// 409
277
278 //Set constants for JwoJ and run the algorithm
279 m_gFEXJwoJAlgoTool->setAlgoConstant(aFPGA_A, bFPGA_A,
280 aFPGA_B, bFPGA_B,
281 aFPGA_C, bFPGA_C,
282 gXE_seedThrA, gXE_seedThrB, gXE_seedThrC);
283
284 auto global_tobs = m_gFEXJwoJAlgoTool->jwojAlgo(Atwr, pucA_JWJ, Btwr, pucB_JWJ, Ctwr, pucC_JWJ, outJwojTOB);
285
286 m_gScalarEJwojTobWords.resize(1);
290
291
292 //Placing the global TOBs into a dedicated array
293 m_gScalarEJwojTobWords[0] = outJwojTOB[0];//
294 m_gMETComponentsJwojTobWords[0] = outJwojTOB[1];//
295 m_gMHTComponentsJwojTobWords[0] = outJwojTOB[2];//
296 m_gMSTComponentsJwojTobWords[0] = outJwojTOB[3];//
297
298
299 //Set constants for noise cut and rho+RMS and run the algorithms
300 std::vector<int> thr_A (12, 0);//To be retrieved from COOL database in the future
301 std::vector<int> thr_B (12, 0);//To be retrieved from COOL database in the future
302
303 m_gFEXaltMetAlgoTool->setAlgoConstant(std::move(thr_A) , std::move(thr_B), 10000/200);
304
305 m_gFEXaltMetAlgoTool->altMetAlgo(Atwr, Btwr, outAltMetTOB);
306
310 m_gScalarERmsTobWords.resize(1);
311
312
313 //Placing the global TOBs into a dedicated array
314 m_gMETComponentsNoiseCutTobWords[0] = outAltMetTOB[0];//
315 m_gMETComponentsRmsTobWords[0] = outAltMetTOB[1];//
316 m_gScalarENoiseCutTobWords[0] = outAltMetTOB[2];//
317 m_gScalarERmsTobWords[0] = outAltMetTOB[3];//
318
319 for (int i = 0; i <14; i++){
320 gFEXOutputs->addJetTob(tobs_v[i]->getWord());
321 gFEXOutputs->addValueJet("EtaJet", tobs_v[i]->getEta());
322 gFEXOutputs->addValueJet("PhiJet", tobs_v[i]->getPhi());
323 gFEXOutputs->addValueJet("ETJet", tobs_v[i]->getET());
324 gFEXOutputs->addValueJet("StatusJet", tobs_v[i]->getStatus());
325 gFEXOutputs->addValueJet("TobIDJet", tobs_v[i]->getTobID());
326 gFEXOutputs->fillJet();
327
328 }
329
330 for (int i = 0; i <4; i++){
331 gFEXOutputs->addGlobalTob(global_tobs[i]->getWord());
332 gFEXOutputs->addValueGlobal("GlobalQuantity1", global_tobs[i]->getQuantity1());
333 gFEXOutputs->addValueGlobal("GlobalQuantity2", global_tobs[i]->getQuantity2());
334 gFEXOutputs->addValueGlobal("SaturationGlobal", global_tobs[i]->getSaturation());
335 gFEXOutputs->addValueGlobal("TobIDGlobal", global_tobs[i]->getTobID());
336 gFEXOutputs->addValueGlobal("GlobalStatus1", global_tobs[i]->getStatus1());
337 gFEXOutputs->addValueGlobal("GlobalStatus2", global_tobs[i]->getStatus2());
338 gFEXOutputs->fillGlobal();
339
340 }
341
342 return StatusCode::SUCCESS;
343
344}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
static constexpr int centralNphi
static constexpr int jetThr
static constexpr int forwardNphi
static constexpr bool ENABLE_PUC
ToolHandle< IgFEXFPGA > m_gFEXFPGA_Tool
Definition gFEXSim.h:111
std::vector< uint32_t > m_gMETComponentsJwojTobWords
Definition gFEXSim.h:95
gTowersIDs m_gTowersIDs
Internal data.
Definition gFEXSim.h:83
std::vector< int32_t > m_gScalarEJwojTobWords
Definition gFEXSim.h:93
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
Definition gFEXSim.h:119
ToolHandle< IgFEXJwoJAlgo > m_gFEXJwoJAlgoTool
Definition gFEXSim.h:115
SG::WriteHandleKey< xAOD::gFexTowerContainer > m_gTowersWriteKey
Definition gFEXSim.h:121
std::vector< uint32_t > m_gMHTComponentsJwojTobWords
Definition gFEXSim.h:97
std::vector< uint32_t > m_gMSTComponentsJwojTobWords
Definition gFEXSim.h:99
std::vector< uint32_t > m_gScalarERmsTobWords
Definition gFEXSim.h:107
std::vector< uint32_t > m_gScalarENoiseCutTobWords
Definition gFEXSim.h:105
std::vector< uint32_t > m_gMETComponentsRmsTobWords
Definition gFEXSim.h:103
std::vector< uint32_t > m_gRhoTobWords
Definition gFEXSim.h:87
std::vector< uint32_t > m_gJetTobWords
Definition gFEXSim.h:91
ToolHandle< IgFEXJetAlgo > m_gFEXJetAlgoTool
Definition gFEXSim.h:113
ToolHandle< IgFEXaltMetAlgo > m_gFEXaltMetAlgoTool
Definition gFEXSim.h:117
std::vector< uint32_t > m_gMETComponentsNoiseCutTobWords
Definition gFEXSim.h:101
std::vector< uint32_t > m_gBlockTobWords
Definition gFEXSim.h:89
float getPhi(const xAOD::TrackParticle &p)
Accessor utility function for getting the value of phi.
std::array< std::array< int, 8 >, 32 > gTowersForward
std::array< std::array< int, 12 >, 32 > gTowersCentral
std::array< std::array< int, 12 >, 32 > gTowersType
Definition IgFEXFPGA.h:25

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getgBlockTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgBlockTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 352 of file gFEXSim.cxx.

353{
354 return m_gBlockTobWords;
355}

◆ getgJetTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgJetTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 357 of file gFEXSim.cxx.

358{
359 return m_gJetTobWords;
360}

◆ getgMETComponentsJwojTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgMETComponentsJwojTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 367 of file gFEXSim.cxx.

368{
370}

◆ getgMETComponentsNoiseCutTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgMETComponentsNoiseCutTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 382 of file gFEXSim.cxx.

383{
385}

◆ getgMETComponentsRmsTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgMETComponentsRmsTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 387 of file gFEXSim.cxx.

388{
390}

◆ getgMHTComponentsJwojTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgMHTComponentsJwojTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 372 of file gFEXSim.cxx.

373{
375}

◆ getgMSTComponentsJwojTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgMSTComponentsJwojTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 377 of file gFEXSim.cxx.

378{
380}

◆ getgRhoTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgRhoTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 347 of file gFEXSim.cxx.

348{
349 return m_gRhoTobWords;
350}

◆ getgScalarEJwojTOBs()

std::vector< int32_t > LVL1::gFEXSim::getgScalarEJwojTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 362 of file gFEXSim.cxx.

363{
365}

◆ getgScalarENoiseCutTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgScalarENoiseCutTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 392 of file gFEXSim.cxx.

393{
395}

◆ getgScalarERmsTOBs()

std::vector< uint32_t > LVL1::gFEXSim::getgScalarERmsTOBs ( ) const
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 397 of file gFEXSim.cxx.

398{
400}

◆ initialize()

StatusCode LVL1::gFEXSim::initialize ( )
overridevirtual

Definition at line 45 of file gFEXSim.cxx.

45 {
46 ATH_CHECK( m_gFEXFPGA_Tool.retrieve() );
47 ATH_CHECK( m_gFEXJetAlgoTool.retrieve() );
48 ATH_CHECK( m_gFEXJwoJAlgoTool.retrieve() );
49 ATH_CHECK( m_gFEXaltMetAlgoTool.retrieve() );
50 ATH_CHECK(m_l1MenuKey.initialize());
51 ATH_CHECK(m_gTowersWriteKey.initialize());
52 return StatusCode::SUCCESS;
53 }

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & LVL1::IgFEXSim::interfaceID ( )
inlinestaticinherited

Definition at line 59 of file IgFEXSim.h.

60 {
61 return IID_IgFEXSim;
62 }
static const InterfaceID IID_IgFEXSim("LVL1::IgFEXSim", 1, 0)

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ reset()

void LVL1::gFEXSim::reset ( )
overridevirtual

Implements LVL1::IgFEXSim.

Definition at line 28 of file gFEXSim.cxx.

29 {
30 int rows = m_gTowersIDs.size();
31 int cols = m_gTowersIDs[0].size();
32
33 for (int i=0; i<rows; i++){
34 for (int j=0; j<cols; j++){
35 m_gTowersIDs[i][j] = 0;
36 }
37 }
38
39 }
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_gBlockTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gBlockTobWords
private

Definition at line 89 of file gFEXSim.h.

◆ m_gFEXaltMetAlgoTool

ToolHandle<IgFEXaltMetAlgo> LVL1::gFEXSim::m_gFEXaltMetAlgoTool {this, "gFEXaltMetAlgoTool", "LVL1::gFEXaltMetAlgo", "Tool that runs the gFEX noise cut and rho+RMS algorithms for MET"}
private

Definition at line 117 of file gFEXSim.h.

117{this, "gFEXaltMetAlgoTool", "LVL1::gFEXaltMetAlgo", "Tool that runs the gFEX noise cut and rho+RMS algorithms for MET"};

◆ m_gFEXFPGA_Tool

ToolHandle<IgFEXFPGA> LVL1::gFEXSim::m_gFEXFPGA_Tool {this, "gFEXFPGATool", "LVL1::gFEXFPGA", "Tool that simulates the FPGA hardware"}
private

Definition at line 111 of file gFEXSim.h.

111{this, "gFEXFPGATool", "LVL1::gFEXFPGA", "Tool that simulates the FPGA hardware"};

◆ m_gFEXJetAlgoTool

ToolHandle<IgFEXJetAlgo> LVL1::gFEXSim::m_gFEXJetAlgoTool {this, "gFEXJetAlgoTool", "LVL1::gFEXJetAlgo", "Tool that runs the gFEX jet algorithm"}
private

Definition at line 113 of file gFEXSim.h.

113{this, "gFEXJetAlgoTool", "LVL1::gFEXJetAlgo", "Tool that runs the gFEX jet algorithm"};

◆ m_gFEXJwoJAlgoTool

ToolHandle<IgFEXJwoJAlgo> LVL1::gFEXSim::m_gFEXJwoJAlgoTool {this, "gFEXJwoJAlgoTool", "LVL1::gFEXJwoJAlgo", "Tool that runs the gFEX Jets without Jets algorithm"}
private

Definition at line 115 of file gFEXSim.h.

115{this, "gFEXJwoJAlgoTool", "LVL1::gFEXJwoJAlgo", "Tool that runs the gFEX Jets without Jets algorithm"};

◆ m_gJetTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gJetTobWords
private

Definition at line 91 of file gFEXSim.h.

◆ m_gMETComponentsJwojTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gMETComponentsJwojTobWords
private

Definition at line 95 of file gFEXSim.h.

◆ m_gMETComponentsNoiseCutTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gMETComponentsNoiseCutTobWords
private

Definition at line 101 of file gFEXSim.h.

◆ m_gMETComponentsRmsTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gMETComponentsRmsTobWords
private

Definition at line 103 of file gFEXSim.h.

◆ m_gMHTComponentsJwojTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gMHTComponentsJwojTobWords
private

Definition at line 97 of file gFEXSim.h.

◆ m_gMSTComponentsJwojTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gMSTComponentsJwojTobWords
private

Definition at line 99 of file gFEXSim.h.

◆ m_gRhoTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gRhoTobWords
private

Definition at line 87 of file gFEXSim.h.

◆ m_gScalarEJwojTobWords

std::vector<int32_t> LVL1::gFEXSim::m_gScalarEJwojTobWords
private

Definition at line 93 of file gFEXSim.h.

◆ m_gScalarENoiseCutTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gScalarENoiseCutTobWords
private

Definition at line 105 of file gFEXSim.h.

◆ m_gScalarERmsTobWords

std::vector<uint32_t> LVL1::gFEXSim::m_gScalarERmsTobWords
private

Definition at line 107 of file gFEXSim.h.

◆ m_gTowersIDs

gTowersIDs LVL1::gFEXSim::m_gTowersIDs
private

Internal data.

Definition at line 83 of file gFEXSim.h.

◆ m_gTowersWriteKey

SG::WriteHandleKey< xAOD::gFexTowerContainer > LVL1::gFEXSim::m_gTowersWriteKey {this,"gTowersWriteKey" ,"L1_gFexTriggerTowers", "Write gFexEDM Trigger Tower container"}
private

Definition at line 121 of file gFEXSim.h.

121{this,"gTowersWriteKey" ,"L1_gFexTriggerTowers", "Write gFexEDM Trigger Tower container"};

◆ m_l1MenuKey

SG::ReadHandleKey<TrigConf::L1Menu> LVL1::gFEXSim::m_l1MenuKey {this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"}
private

Definition at line 119 of file gFEXSim.h.

119{this, "L1TriggerMenu", "DetectorStore+L1TriggerMenu","Name of the L1Menu object to read configuration from"};

◆ m_sCellsCollection

CaloCellContainer LVL1::gFEXSim::m_sCellsCollection
private

Definition at line 85 of file gFEXSim.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: