ATLAS Offline Software
Loading...
Searching...
No Matches
gFEXSysSim.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4//***************************************************************************
5// gFEXSysSim - Overall gFEX simulation
6// -------------------
7// begin : 01 04 2021
8// email : cecilia.tosciri@cern.ch
9//***************************************************************************
10
11#include "gFEXSysSim.h"
12#include "gFEXSim.h"
13#include "L1CaloFEXSim/gTower.h"
15
18
20
21namespace LVL1 {
22
23 //---------------- Initialisation -------------------------------------------------
24
26 {
27
29
30 ATH_CHECK(m_gFEXSimTool.retrieve());
31
32 ATH_CHECK(m_gFexRhoOutKey.initialize());
33
34 ATH_CHECK(m_gFexBlockOutKey.initialize());
35
36 ATH_CHECK(m_gFexJetOutKey.initialize());
37
38 ATH_CHECK(m_gScalarEJwojOutKey.initialize());
39
41
43
45
47
49
51
52 ATH_CHECK(m_gScalarERmsOutKey.initialize());
53
54 ATH_CHECK(m_l1MenuKey.initialize());
55
56
57
58 return StatusCode::SUCCESS;
59 }
60
61
62
64
65 m_gFEXCollection.clear();
66
67 }
68
69
70 int gFEXSysSim::calcTowerID(int eta, int phi, int nphi, int mod) const {
71
72 return ((nphi*eta) + phi + mod);
73 }
74
75
76 StatusCode gFEXSysSim::execute(const EventContext& ctx, gFEXOutputCollection* gFEXOutputs) {
77
79 if(!this_gTowerContainer.isValid()){
80 ATH_MSG_FATAL("Could not retrieve gTowerContainer " << m_gTowerContainerSGKey.key());
81 return StatusCode::FAILURE;
82 }
83
84 // remove TOBs of the previous events from the array
85 m_allgRhoTobs.clear();
86 m_allgBlockTobs.clear();
87 m_allgJetTobs.clear();
92
93
94 // int centralNphi = 32;
95 // int forwardNphi = 16;
96
97 int fcalEta = 19; int fcalPhi = 0; int fcalMod = 900000;
98 int initialFCAL = calcTowerID(fcalEta,fcalPhi,FEXAlgoSpaceDefs::forwardNphi,fcalMod);//900304
99 int transfcalEta = 15; int transfcalPhi = 0; int transfcalMod = 700000;
100 int initialTRANSFCAL = calcTowerID(transfcalEta,transfcalPhi,FEXAlgoSpaceDefs::centralNphi,transfcalMod);//700480
101 int emecEta = 11; int emecPhi = 0; int emecMod = 500000;
102 int initialEMEC = calcTowerID(emecEta,emecPhi,FEXAlgoSpaceDefs::centralNphi,emecMod);//500384
103 int transembEta = 7; int transembPhi = 0; int transembMod = 300000;
104 int initialTRANSEMB = calcTowerID(transembEta,transembPhi,FEXAlgoSpaceDefs::centralNphi,transembMod);
105 int embEta = 6; int embPhi = 0; int embMod = 100000;
106 int initialEMB = calcTowerID(embEta,embPhi,FEXAlgoSpaceDefs::centralNphi,embMod);//100192
107
108
109 int embposEta = 0; int embposPhi = 0; int embposMod = 200000;
110 int initialposEMB = calcTowerID(embposEta,embposPhi,FEXAlgoSpaceDefs::centralNphi,embposMod);//200000
111 int transembposEta = 7; int transembposPhi = 0; int transembposMod = 400000;
112 int initialposTRANSEMB = calcTowerID(transembposEta,transembposPhi,FEXAlgoSpaceDefs::centralNphi,transembposMod);//400224
113 int emecposEta = 8; int emecposPhi = 0; int emecposMod = 600000;
114 int initialposEMEC = calcTowerID(emecposEta,emecposPhi,FEXAlgoSpaceDefs::centralNphi,emecposMod);//600256
115 int transfcalposEta = 12; int transfcalposPhi = 0; int transfcalposMod = 800000;
116 int initialposTRANSFCAL = calcTowerID(transfcalposEta,transfcalposPhi,FEXAlgoSpaceDefs::centralNphi,transfcalposMod);//800416
117 int fcalposEta = 16; int fcalposPhi = 0; int fcalposMod = 1000000;
118 int initialposFCAL = calcTowerID(fcalposEta,fcalposPhi,FEXAlgoSpaceDefs::forwardNphi,fcalposMod);//1000240
119
120
121 // Since gFEX consists of a single module, here we are just (re)assigning the gTowerID
122
123 // Defining a matrix 32x40 corresponding to the gFEX structure (32 phi x 40 eta in the most general case - forward region has 16 phi bins)
124 typedef std::array<std::array<int, FEXAlgoSpaceDefs::totalNeta>, FEXAlgoSpaceDefs::centralNphi> gTowersIDs;
125 gTowersIDs tmp_gTowersIDs_subset;
126
127 int rows = tmp_gTowersIDs_subset.size();
128 int cols = tmp_gTowersIDs_subset[0].size();
129
130 // set the FCAL negative part
131 for(int thisCol=0; thisCol<4; thisCol++){
132 for(int thisRow=0; thisRow<rows/2; thisRow++){
133 int towerid = initialFCAL - ((thisCol) * (FEXAlgoSpaceDefs::forwardNphi)) + thisRow;
134 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
135 }
136 }
137
138 // set the TRANSFCAL negative part (FCAL-EMEC overlap)
139 for(int thisCol=4; thisCol<8; thisCol++){
140 for(int thisRow=0; thisRow<rows; thisRow++){
141 int towerid = initialTRANSFCAL - ((thisCol-4) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
142 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
143 }
144 }
145
146 // set the EMEC negative part
147 for(int thisCol=8; thisCol<12; thisCol++){
148 for(int thisRow=0; thisRow<rows; thisRow++){
149 int towerid = initialEMEC - ((thisCol-8) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
150 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
151 }
152 }
153
154 // set the TRANSEMB (EMB-EMEC overlap) negative part
155 for(int thisRow = 0; thisRow < rows; thisRow++){
156 int thisCol = 12;
157 int towerid = initialTRANSEMB + thisRow;
158 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
159 }
160
161 // set the EMB negative part
162 for(int thisCol = 13; thisCol < 20; thisCol++){
163 for(int thisRow=0; thisRow<rows; thisRow++){
164 int towerid = initialEMB - ( (thisCol-13) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
165 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
166 }
167 }
168
169 // set the EMB positive part
170 for(int thisCol = 20; thisCol < 27; thisCol++){
171 for(int thisRow=0; thisRow<rows; thisRow++){
172 int towerid = initialposEMB + ( (thisCol-20) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
173 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
174 }
175 }
176
177 // set the TRANSEMB (EMB-EMEC overlap) positive part
178 for(int thisRow = 0; thisRow < rows; thisRow++){
179 int thisCol = 27;
180 int towerid = initialposTRANSEMB + thisRow;
181 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
182 }
183 // set the EMEC positive part
184 for(int thisCol=28; thisCol<32; thisCol++){
185 for(int thisRow=0; thisRow<rows; thisRow++){
186 int towerid = initialposEMEC + ((thisCol-28) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
187 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
188 }
189 }
190
191 // set the TRANSFCAL positive part (EMEC-FCAL overlap)
192 for(int thisCol=32; thisCol<36; thisCol++){
193 for(int thisRow=0; thisRow<rows; thisRow++){
194 int towerid = initialposTRANSFCAL + ((thisCol-32) * (FEXAlgoSpaceDefs::centralNphi)) + thisRow;
195 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
196 }
197 }
198
199 // set the FCAL positive part
200 for(int thisCol=36; thisCol<cols; thisCol++){
201 for(int thisRow=0; thisRow<rows/2; thisRow++){
202 int towerid = initialposFCAL + ((thisCol-36) * (FEXAlgoSpaceDefs::forwardNphi)) + thisRow;
203 tmp_gTowersIDs_subset[thisRow][thisCol] = towerid;
204 }
205 }
206
207 if(false){
208 ATH_MSG_DEBUG("CONTENTS OF gFEX : ");
209 for (int thisRow=rows-1; thisRow>=0; thisRow--){
210 for (int thisCol=0; thisCol<cols; thisCol++){
211 int tmptowerid = tmp_gTowersIDs_subset[thisRow][thisCol];
212 const float tmptowereta = this_gTowerContainer->findTower(tmptowerid)->eta();
213 const float tmptowerphi = this_gTowerContainer->findTower(tmptowerid)->phi();
214 if(thisCol != cols-1){ ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowerphi << "][" << tmptowereta << "]) "); }
215 else { ATH_MSG_DEBUG("| " << tmptowerid << "([" << tmptowereta << "][" << tmptowerphi << "]) |"); }
216 }
217 }
218 }
219
220 ATH_CHECK(m_gFEXSimTool->executegFEXSim(tmp_gTowersIDs_subset, gFEXOutputs));
221
222 m_allgRhoTobs = m_gFEXSimTool->getgRhoTOBs();
223 m_allgBlockTobs = m_gFEXSimTool->getgBlockTOBs();
224 m_allgJetTobs = m_gFEXSimTool->getgJetTOBs();
225
226 m_allgScalarEJwojTobs = m_gFEXSimTool->getgScalarEJwojTOBs();
227 m_allgMETComponentsJwojTobs = m_gFEXSimTool->getgMETComponentsJwojTOBs();
228 m_allgMHTComponentsJwojTobs = m_gFEXSimTool->getgMHTComponentsJwojTOBs();
229 m_allgMSTComponentsJwojTobs = m_gFEXSimTool->getgMSTComponentsJwojTOBs();
230
231 m_allgMETComponentsNoiseCutTobs = m_gFEXSimTool->getgMETComponentsNoiseCutTOBs();
232 m_allgMETComponentsRmsTobs = m_gFEXSimTool->getgMETComponentsRmsTOBs();
233 m_allgScalarENoiseCutTobs = m_gFEXSimTool->getgScalarENoiseCutTOBs();
234 m_allgScalarERmsTobs = m_gFEXSimTool->getgScalarERmsTOBs();
235
236 m_gFEXSimTool->reset();
237
238 //Makes containers for different gFEX Jet objects
239 m_gRhoContainer = std::make_unique<xAOD::gFexJetRoIContainer> ();
240 m_gRhoAuxContainer = std::make_unique<xAOD::gFexJetRoIAuxContainer> ();
241 m_gRhoContainer->setStore(m_gRhoAuxContainer.get());
242
243 m_gBlockContainer = std::make_unique<xAOD::gFexJetRoIContainer> ();
244 m_gBlockAuxContainer = std::make_unique<xAOD::gFexJetRoIAuxContainer> ();
246
247 m_gJetContainer = std::make_unique<xAOD::gFexJetRoIContainer> ();
248 m_gJetAuxContainer = std::make_unique<xAOD::gFexJetRoIAuxContainer> ();
249 m_gJetContainer->setStore(m_gJetAuxContainer.get());
250
251 //Makes containers for different gFEX Global objects (for JwoJ algorithm quantities)
252 m_gScalarEJwojContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
253 m_gScalarEJwojAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
255
256 m_gMETComponentsJwojContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
257 m_gMETComponentsJwojAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
259
260 m_gMHTComponentsJwojContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
261 m_gMHTComponentsJwojAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
263
264 m_gMSTComponentsJwojContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
265 m_gMSTComponentsJwojAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
267
268 //Makes containers for different gFEX Global objects (for Noise Cut and RMS algorithms quantities)
269 m_gMETComponentsNoiseCutContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
270 m_gMETComponentsNoiseCutAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
272
273 m_gMETComponentsRmsContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
274 m_gMETComponentsRmsAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
276
277 m_gScalarENoiseCutContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
278 m_gScalarENoiseCutAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
280
281 m_gScalarERmsContainer = std::make_unique<xAOD::gFexGlobalRoIContainer> ();
282 m_gScalarERmsAuxContainer = std::make_unique<xAOD::gFexGlobalRoIAuxContainer> ();
284
285
286 // Retrieve the L1 menu configuration
288 ATH_CHECK(l1Menu.isValid());
289
290 auto & thr_gJ = l1Menu->thrExtraInfo().gJ();
291 auto & thr_gLJ = l1Menu->thrExtraInfo().gLJ();
292 auto & thr_gXE = l1Menu->thrExtraInfo().gXE();
293 auto & thr_gTE = l1Menu->thrExtraInfo().gTE();
294
295 int gJ_scale = thr_gJ.resolutionMeV();
296 int gLJ_scale = thr_gLJ.resolutionMeV();
297 int gXE_scale = thr_gXE.resolutionMeV();
298 int gTE_scale = thr_gTE.resolutionMeV();
299
300
301 //iterate over all gRho Tobs and fill EDM with them
302 for(auto &tob : m_allgRhoTobs){
303 ATH_CHECK(fillgRhoEDM(tob, gJ_scale));
304 }
305 //iterate over all gBlock Tobs and fill EDM with them
306 for(auto &tob : m_allgBlockTobs){
307 ATH_CHECK(fillgBlockEDM(tob, gJ_scale));
308 }
309
310 //iterate over all gJet Tobs and fill EDM with them
311 for(auto &tob : m_allgJetTobs){
312 ATH_CHECK(fillgJetEDM(tob, gLJ_scale));
313 }
314
315 //iterate over all JwoJ scalar energy Tobs and fill EDM with them (should be only one)
316 for(auto &tob : m_allgScalarEJwojTobs){
317 ATH_CHECK(fillgScalarEJwojEDM(tob, gXE_scale, gTE_scale));
318 }
319 //iterate over all JwoJ METcomponents Tobs and fill EDM with them (should be only one)
320 for(auto &tob : m_allgMETComponentsJwojTobs){
321 ATH_CHECK(fillgMETComponentsJwojEDM(tob, gXE_scale, gXE_scale));
322 }
323 //iterate over all JwoJ MHTcomponents Tobs and fill EDM with them (should be only one)
324 for(auto &tob : m_allgMHTComponentsJwojTobs){
325 ATH_CHECK(fillgMHTComponentsJwojEDM(tob, gXE_scale, gXE_scale));
326 }
327 //iterate over all JwoJ MSTcomponents Tobs and fill EDM with them (should be only one)
328 for(auto &tob : m_allgMSTComponentsJwojTobs){
329 ATH_CHECK(fillgMSTComponentsJwojEDM(tob, gXE_scale, gXE_scale));
330 }
331
332
333 //iterate over all NoiseCut METcomponents Tobs and fill EDM with them (should be only one)
334 for(auto &tob : m_allgMETComponentsNoiseCutTobs){
335 ATH_CHECK(fillgMETComponentsNoiseCutEDM(tob, gXE_scale, gXE_scale));
336 }
337 //iterate over all RMS METcomponents Tobs and fill EDM with them (should be only one)
338 for(auto &tob : m_allgMETComponentsRmsTobs){
339 ATH_CHECK(fillgMETComponentsRmsEDM(tob, gXE_scale, gXE_scale));
340 }
341 //iterate over all NoiseCut scalar energy Tobs and fill EDM with them (should be only one)
342 for(auto &tob : m_allgScalarENoiseCutTobs){
343 ATH_CHECK(fillgScalarENoiseCutEDM(tob, gXE_scale, gTE_scale));
344 }
345 //iterate over all RMS scalar energy Tobs and fill EDM with them (should be only one)
346 for(auto &tob : m_allgScalarERmsTobs){
347 ATH_CHECK(fillgScalarERmsEDM(tob, gXE_scale, gTE_scale));
348 }
349
350
352 ATH_MSG_DEBUG(" write: " << outputgFexRhoHandle.key() << " = " << "..." );
353 ATH_CHECK(outputgFexRhoHandle.record(std::move(m_gRhoContainer),std::move(m_gRhoAuxContainer)));
354
356 ATH_MSG_DEBUG(" write: " << outputgFexBlockHandle.key() << " = " << "..." );
357 ATH_CHECK(outputgFexBlockHandle.record(std::move(m_gBlockContainer),std::move(m_gBlockAuxContainer)));
358
360 ATH_MSG_DEBUG(" write: " << outputgFexJetHandle.key() << " = " << "..." );
361 ATH_CHECK(outputgFexJetHandle.record(std::move(m_gJetContainer),std::move(m_gJetAuxContainer)));
362
363
365 ATH_MSG_DEBUG(" write: " << outputgScalarEJwojHandle.key() << " = " << "..." );
366 ATH_CHECK(outputgScalarEJwojHandle.record(std::move(m_gScalarEJwojContainer),std::move(m_gScalarEJwojAuxContainer)));
367
369 ATH_MSG_DEBUG(" write: " << outputgMETComponentsJwojHandle.key() << " = " << "..." );
370 ATH_CHECK(outputgMETComponentsJwojHandle.record(std::move(m_gMETComponentsJwojContainer),std::move(m_gMETComponentsJwojAuxContainer)));
371
373 ATH_MSG_DEBUG(" write: " << outputgMHTComponentsJwojHandle.key() << " = " << "..." );
374 ATH_CHECK(outputgMHTComponentsJwojHandle.record(std::move(m_gMHTComponentsJwojContainer),std::move(m_gMHTComponentsJwojAuxContainer)));
375
377 ATH_MSG_DEBUG(" write: " << outputgMSTComponentsJwojHandle.key() << " = " << "..." );
378 ATH_CHECK(outputgMSTComponentsJwojHandle.record(std::move(m_gMSTComponentsJwojContainer),std::move(m_gMSTComponentsJwojAuxContainer)));
379
380
382 ATH_MSG_DEBUG(" write: " << outputgMETComponentsNoiseCutHandle.key() << " = " << "..." );
383 ATH_CHECK(outputgMETComponentsNoiseCutHandle.record(std::move(m_gMETComponentsNoiseCutContainer),std::move(m_gMETComponentsNoiseCutAuxContainer)));
384
386 ATH_MSG_DEBUG(" write: " << outputgMETComponentsRmsHandle.key() << " = " << "..." );
387 ATH_CHECK(outputgMETComponentsRmsHandle.record(std::move(m_gMETComponentsRmsContainer),std::move(m_gMETComponentsRmsAuxContainer)));
388
390 ATH_MSG_DEBUG(" write: " << outputgScalarENoiseCutHandle.key() << " = " << "..." );
391 ATH_CHECK(outputgScalarENoiseCutHandle.record(std::move(m_gScalarENoiseCutContainer),std::move(m_gScalarENoiseCutAuxContainer)));
392
394 ATH_MSG_DEBUG(" write: " << outputgScalarERmsHandle.key() << " = " << "..." );
395 ATH_CHECK(outputgScalarERmsHandle.record(std::move(m_gScalarERmsContainer),std::move(m_gScalarERmsAuxContainer)));
396
397
398 return StatusCode::SUCCESS;
399 }
400
401 StatusCode gFEXSysSim::fillgRhoEDM(uint32_t tobWord, int gJ_scale){
402
403 std::unique_ptr<xAOD::gFexJetRoI> myEDM (new xAOD::gFexJetRoI());
404 m_gRhoContainer->push_back(std::move(myEDM));
405 m_gRhoContainer->back()->initialize(tobWord, gJ_scale);
406
407 return StatusCode::SUCCESS;
408 }
409
410 StatusCode gFEXSysSim::fillgBlockEDM(uint32_t tobWord, int gJ_scale){
411
412 std::unique_ptr<xAOD::gFexJetRoI> myEDM (new xAOD::gFexJetRoI());
413 m_gBlockContainer->push_back(std::move(myEDM));
414 m_gBlockContainer->back()->initialize(tobWord, gJ_scale);
415
416 return StatusCode::SUCCESS;
417 }
418
419 StatusCode gFEXSysSim::fillgJetEDM(uint32_t tobWord, int gLJ_scale){
420
421 std::unique_ptr<xAOD::gFexJetRoI> myEDM (new xAOD::gFexJetRoI());
422 m_gJetContainer->push_back(std::move(myEDM));
423 m_gJetContainer->back()->initialize(tobWord, gLJ_scale);
424
425 return StatusCode::SUCCESS;
426 }
427
428 StatusCode gFEXSysSim::fillgMETComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2){
429
430 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
431 m_gMETComponentsJwojContainer->push_back(std::move(myEDM));
432 m_gMETComponentsJwojContainer->back()->initialize(tobWord, scale1, scale2);
433
434 return StatusCode::SUCCESS;
435 }
436
437 StatusCode gFEXSysSim::fillgMHTComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2){
438
439 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
440 m_gMHTComponentsJwojContainer->push_back(std::move(myEDM));
441 m_gMHTComponentsJwojContainer->back()->initialize(tobWord, scale1, scale2);
442
443 return StatusCode::SUCCESS;
444 }
445
446 StatusCode gFEXSysSim::fillgMSTComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2){
447
448 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
449 m_gMSTComponentsJwojContainer->push_back(std::move(myEDM));
450 m_gMSTComponentsJwojContainer->back()->initialize(tobWord, scale1, scale2);
451
452 return StatusCode::SUCCESS;
453 }
454
455 StatusCode gFEXSysSim::fillgScalarEJwojEDM(uint32_t tobWord, int scale1, int scale2){
456
457 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
458 m_gScalarEJwojContainer->push_back(std::move(myEDM));
459 m_gScalarEJwojContainer->back()->initialize(tobWord, scale1, scale2);
460
461 return StatusCode::SUCCESS;
462 }
463
464 StatusCode gFEXSysSim::fillgMETComponentsNoiseCutEDM(uint32_t tobWord, int scale1, int scale2){
465
466 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
467 m_gMETComponentsNoiseCutContainer->push_back(std::move(myEDM));
468 m_gMETComponentsNoiseCutContainer->back()->initialize(tobWord, scale1, scale2);
469
470 return StatusCode::SUCCESS;
471 }
472
473 StatusCode gFEXSysSim::fillgMETComponentsRmsEDM(uint32_t tobWord, int scale1, int scale2){
474
475 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
476 m_gMETComponentsRmsContainer->push_back(std::move(myEDM));
477 m_gMETComponentsRmsContainer->back()->initialize(tobWord, scale1, scale2);
478
479 return StatusCode::SUCCESS;
480 }
481
482 StatusCode gFEXSysSim::fillgScalarENoiseCutEDM(uint32_t tobWord, int scale1, int scale2){
483
484 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
485 m_gScalarENoiseCutContainer->push_back(std::move(myEDM));
486 m_gScalarENoiseCutContainer->back()->initialize(tobWord, scale1, scale2);
487
488 return StatusCode::SUCCESS;
489 }
490
491 StatusCode gFEXSysSim::fillgScalarERmsEDM(uint32_t tobWord, int scale1, int scale2){
492
493 std::unique_ptr<xAOD::gFexGlobalRoI> myEDM (new xAOD::gFexGlobalRoI());
494 m_gScalarERmsContainer->push_back(std::move(myEDM));
495 m_gScalarERmsContainer->back()->initialize(tobWord, scale1, scale2);
496
497 return StatusCode::SUCCESS;
498 }
499
500
501} // end of namespace bracket
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_DEBUG(x)
#define scale2
#define scale1
Handle class for reading from StoreGate.
Handle class for recording to StoreGate.
static constexpr int centralNphi
static constexpr int forwardNphi
std::vector< uint32_t > m_allgRhoTobs
Definition gFEXSysSim.h:136
virtual StatusCode fillgMETComponentsRmsEDM(uint32_t tobWord, int scale1, int scale2) override
std::vector< uint32_t > m_allgMETComponentsNoiseCutTobs
Definition gFEXSysSim.h:145
std::vector< uint32_t > m_allgMSTComponentsJwojTobs
Definition gFEXSysSim.h:143
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gMETComponentsNoiseCutContainer
Definition gFEXSysSim.h:101
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
Definition gFEXSysSim.h:134
SG::ReadHandleKey< LVL1::gTowerContainer > m_gTowerContainerSGKey
Definition gFEXSysSim.h:118
SG::WriteHandleKey< xAOD::gFexJetRoIContainer > m_gFexJetOutKey
Definition gFEXSysSim.h:122
virtual StatusCode initialize() override
standard Athena-Algorithm method
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gMETComponentsJwojOutKey
Definition gFEXSysSim.h:125
std::vector< uint32_t > m_allgScalarENoiseCutTobs
Definition gFEXSysSim.h:147
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gMETComponentsNoiseCutOutKey
Definition gFEXSysSim.h:129
virtual StatusCode fillgMHTComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2) override
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gMETComponentsJwojAuxContainer
Definition gFEXSysSim.h:93
std::unique_ptr< xAOD::gFexJetRoIAuxContainer > m_gJetAuxContainer
Definition gFEXSysSim.h:87
virtual void cleanup() override
SG::WriteHandleKey< xAOD::gFexJetRoIContainer > m_gFexRhoOutKey
Definition gFEXSysSim.h:120
std::unique_ptr< xAOD::gFexJetRoIAuxContainer > m_gRhoAuxContainer
Definition gFEXSysSim.h:81
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gMHTComponentsJwojOutKey
Definition gFEXSysSim.h:126
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gScalarENoiseCutContainer
Definition gFEXSysSim.h:107
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gMETComponentsRmsContainer
Definition gFEXSysSim.h:104
virtual StatusCode execute(const EventContext &ctx, gFEXOutputCollection *gFEXOutputs) override
std::vector< uint32_t > m_allgMHTComponentsJwojTobs
Definition gFEXSysSim.h:142
std::vector< uint32_t > m_allgMETComponentsRmsTobs
Definition gFEXSysSim.h:146
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gMSTComponentsJwojContainer
Definition gFEXSysSim.h:98
virtual StatusCode fillgRhoEDM(uint32_t tobWord, int scale) override
Create and fill a new gFexJetRoI object, and return a pointer to it.
std::vector< uint32_t > m_allgBlockTobs
Definition gFEXSysSim.h:137
std::vector< uint32_t > m_allgMETComponentsJwojTobs
Definition gFEXSysSim.h:141
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gScalarEJwojOutKey
Definition gFEXSysSim.h:124
virtual StatusCode fillgScalarEJwojEDM(uint32_t tobWord, int scale1, int scale2) override
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gScalarERmsOutKey
Definition gFEXSysSim.h:132
virtual StatusCode fillgScalarERmsEDM(uint32_t tobWord, int scale1, int scale2) override
std::vector< gFEXSim * > m_gFEXCollection
Definition gFEXSysSim.h:114
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gMETComponentsRmsOutKey
Definition gFEXSysSim.h:130
std::vector< uint32_t > m_allgJetTobs
Definition gFEXSysSim.h:138
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gScalarENoiseCutOutKey
Definition gFEXSysSim.h:131
virtual StatusCode fillgScalarENoiseCutEDM(uint32_t tobWord, int scale1, int scale2) override
std::unique_ptr< xAOD::gFexJetRoIContainer > m_gJetContainer
Definition gFEXSysSim.h:86
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gScalarEJwojContainer
Definition gFEXSysSim.h:89
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gScalarEJwojAuxContainer
Definition gFEXSysSim.h:90
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gMHTComponentsJwojContainer
Definition gFEXSysSim.h:95
std::unique_ptr< xAOD::gFexJetRoIContainer > m_gBlockContainer
Definition gFEXSysSim.h:83
virtual StatusCode fillgJetEDM(uint32_t tobWord, int scale) override
virtual StatusCode fillgMETComponentsNoiseCutEDM(uint32_t tobWord, int scale1, int scale2) override
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gMETComponentsRmsAuxContainer
Definition gFEXSysSim.h:105
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gScalarENoiseCutAuxContainer
Definition gFEXSysSim.h:108
std::vector< uint32_t > m_allgScalarERmsTobs
Definition gFEXSysSim.h:148
std::vector< int32_t > m_allgScalarEJwojTobs
Definition gFEXSysSim.h:140
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gScalarERmsAuxContainer
Definition gFEXSysSim.h:111
virtual StatusCode fillgBlockEDM(uint32_t tobWord, int scale) override
std::unique_ptr< xAOD::gFexJetRoIAuxContainer > m_gBlockAuxContainer
Definition gFEXSysSim.h:84
SG::WriteHandleKey< xAOD::gFexGlobalRoIContainer > m_gMSTComponentsJwojOutKey
Definition gFEXSysSim.h:127
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gMETComponentsNoiseCutAuxContainer
Definition gFEXSysSim.h:102
virtual StatusCode fillgMETComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2) override
SG::WriteHandleKey< xAOD::gFexJetRoIContainer > m_gFexBlockOutKey
Definition gFEXSysSim.h:121
virtual StatusCode fillgMSTComponentsJwojEDM(uint32_t tobWord, int scale1, int scale2) override
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gMETComponentsJwojContainer
Definition gFEXSysSim.h:92
std::unique_ptr< xAOD::gFexGlobalRoIContainer > m_gScalarERmsContainer
Definition gFEXSysSim.h:110
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gMHTComponentsJwojAuxContainer
Definition gFEXSysSim.h:96
virtual int calcTowerID(int eta, int phi, int nphi, int mod) const override
std::unique_ptr< xAOD::gFexGlobalRoIAuxContainer > m_gMSTComponentsJwojAuxContainer
Definition gFEXSysSim.h:99
ToolHandle< IgFEXSim > m_gFEXSimTool
Definition gFEXSysSim.h:116
std::unique_ptr< xAOD::gFexJetRoIContainer > m_gRhoContainer
Internal data.
Definition gFEXSysSim.h:80
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
std::array< std::array< int, 40 >, 32 > gTowersIDs
Definition IgFEXSim.h:20
gFexJetRoI_v1 gFexJetRoI
Define the latest version of the gFexJetRoI class.
Definition gFexJetRoI.h:16
gFexGlobalRoI_v1 gFexGlobalRoI
Define the latest version of the eFexEMRoI class.