92 {
93
95 if(!this_jTowerContainer.isValid()){
97 return StatusCode::FAILURE;
98 }
99
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 int fcal2Eta = 3; int fcal2Phi = 0; int fcal2Mod = 1100000;
135 int initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
136 int fcal1Eta = 7; int fcal1Phi = 0; int fcal1Mod = 900000;
137 int initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
138 int fcal0Eta = 11; int fcal0Phi = 0; int fcal0Mod = 700000;
139 int initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
140 int emecEta = 28; int emecPhi = 0; int emecMod = 500000;
141 int initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
142 int transEta = 14; int transPhi = 0; int transMod = 300000;
143 int initialTRANS =
calcTowerID(transEta,transPhi,transMod);
144 int embEta = 13; int embPhi = 0; int embMod = 100000;
145 int initialEMB =
calcTowerID(embEta,embPhi,embMod);
146
147 SG::ReadCondHandle<jFEXDBCondData> myDBTool = SG::ReadCondHandle<jFEXDBCondData>(
m_DBToolKey, ctx );
150 return StatusCode::FAILURE;
151 }
152
153 unsigned int evtTimeStamp = ctx.eventID().time_stamp();
154
156
157 thisJFEX = 0;
158
159
160
161
162 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL;
163 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.reserve(1600);
164
165
166
168
169
172 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[
i][
j] = 0;
173 }
174 }
175
176 int rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0];
177 int cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0][0];
178
179
180 for(int thisCol=0; thisCol<4; thisCol++){
181 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
182
183 int towerid = initialFCAL2 - (thisCol * 64) + thisRow;
184
185 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
186 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
187
188 }
189 }
190
191
192
193 for(int thisCol=4; thisCol<12; thisCol++){
194 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
195
196 int towerid = initialFCAL1 - ((thisCol-4) * 64) + thisRow;
197
198 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
199 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
200
201 }
202 }
203
204
205
206 for(int thisCol=12; thisCol<24; thisCol++){
207 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
208
209 int towerid = initialFCAL0 - ((thisCol-12) * 64) + thisRow;
210
211 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
212 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
213
214 }
215 }
216
217
218
219 for(int thisCol=24; thisCol<28; thisCol++){
220 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
221
222 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
223
224 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
225 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
226
227 }
228 }
229
230 for(int thisCol=28; thisCol<38; thisCol++){
231 for(
int thisRow=0; thisRow<
rows; thisRow++){
232
233 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
234
235 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
236 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
237
238 }
239 }
240
241 for(
int thisRow = 0; thisRow <
rows; thisRow++){
242
243 int towerid = initialTRANS + thisRow;
244
245 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][38] = towerid;
246 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
247
248 }
249
250 for(int thisCol = 39; thisCol < 45; thisCol++){
251 for(
int thisRow=0; thisRow<
rows; thisRow++){
252
253 int towerid = initialEMB - ( (thisCol-39) * 64) + thisRow;
254
255 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
256 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
257
258 }
259 }
260
261 if (msgLvl(MSG::DEBUG)) {
263 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
264 for (
int thisCol=0; thisCol<
cols; thisCol++) {
265 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol];
266 if(tmptowerid == 0 ) continue;
267 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
268 const float tmptowereta = tmptower->
iEta();
269 const float tmptowerphi = tmptower->
iPhi();
270 if(thisCol != cols-1) {
271 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
272 }
273 else {
274 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
275 }
276 }
277 }
278 }
280 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardASide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
281
282 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
283 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
284 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
285 m_allfwdElTobs.insert( std::unordered_map<uint8_t, std::vector<std::vector<std::vector<uint32_t>>> >::value_type(thisJFEX,(
m_jFEXSimTool->getFwdElTOBs() ) ));
286
287 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
288 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
290
291
292
293
294
295
296
297
298
299 emecEta = 23; emecPhi = 0; emecMod = 500000;
300 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
301 transEta = 14; transPhi = 0; transMod = 300000;
302 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
303 embEta = 13; embPhi = 0; embMod = 100000;
305
306
307 thisJFEX = 1;
308
309
310 std::unordered_map<int,jTower> tmp_jTowersColl_subset_1;
311
312
314
315
318 tmp_jTowersIDs_subset_1[
i][
j] = 0;
319 }
320 }
321
322 rows =
sizeof tmp_jTowersIDs_subset_1 /
sizeof tmp_jTowersIDs_subset_1[0];
323 cols =
sizeof tmp_jTowersIDs_subset_1[0] /
sizeof tmp_jTowersIDs_subset_1[0][0];
324
325
326 for(int thisCol = 0; thisCol < 9; thisCol++){
327 for(
int thisRow=0; thisRow<
rows; thisRow++){
328
329 int towerid = initialEMEC - (thisCol * 64) + thisRow;
330
331 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
332 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
333
334 }
335 }
336
337
338 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
339
340 int towerid = initialTRANS + thisRow;
341
342 tmp_jTowersIDs_subset_1[thisRow][9] = towerid;
343 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
344
345 }
346
347
348 for(
int thisCol = 10; thisCol <
cols; thisCol++) {
349 for(
int thisRow=0; thisRow<
rows; thisRow++) {
350
351 int towerid = initialEMB - ( (thisCol-10) * 64) + thisRow ;
352
353 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
354 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
355
356 }
357 }
358
359 if (msgLvl(MSG::DEBUG)) {
361 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
362 for (
int thisCol=0; thisCol<
cols; thisCol++) {
363 int tmptowerid = tmp_jTowersIDs_subset_1[thisRow][thisCol];
364 if(tmptowerid == 0) continue;
365 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
366 const float tmptowereta = tmptower->
iEta();
367 const float tmptowerphi = tmptower->
iPhi();
368 if(thisCol != cols-1) {
369 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
370 }
371 else {
372 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
373 }
374 }
375 }
376 }
378 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_1, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
379
380 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
381 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
382 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
383
384 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
385 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
387
388
389
390
391
392
393
394
395
396 emecEta = 15; emecPhi = 0; emecMod = 500000;
397 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
398 transEta = 14; transPhi = 0; transMod = 300000;
399 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
400 embEta = 13; embPhi = 0; embMod = 100000;
402
403
404 thisJFEX = 2;
405
406
407 std::unordered_map<int,jTower> tmp_jTowersColl_subset_2;
408
409
411
412
415 tmp_jTowersIDs_subset_2[
i][
j] = 0;
416 }
417 }
418
419
420 rows =
sizeof tmp_jTowersIDs_subset_2 /
sizeof tmp_jTowersIDs_subset_2[0];
421 cols =
sizeof tmp_jTowersIDs_subset_2[0] /
sizeof tmp_jTowersIDs_subset_2[0][0];
422
423
424 for(
int thisRow=0; thisRow<
rows; thisRow++) {
425
426 int towerid = initialEMEC + thisRow;
427
428 tmp_jTowersIDs_subset_2[thisRow][0] = towerid;
429 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
430
431 }
432
433
434 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
435
436 int towerid = initialTRANS + thisRow;
437
438 tmp_jTowersIDs_subset_2[thisRow][1] = towerid;
439 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
440
441 }
442
443
444 for(
int thisCol = 2; thisCol <
cols-8; thisCol++) {
445 for(
int thisRow=0; thisRow<
rows; thisRow++) {
446 int towerid = -1;
447
448 int tmp_initEMB = initialEMB;
449
450 towerid = tmp_initEMB - ( (thisCol-2) * 64) + thisRow;
451 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
452
453 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
454
455 }
456 }
457
458 embEta = 0; embPhi = 0; embMod = 200000;
460
461
462 for(
int thisCol = 16; thisCol <
cols; thisCol++) {
463 for(
int thisRow=0; thisRow<
rows; thisRow++) {
464 int towerid = -1;
465
466 int tmp_initEMB = initialEMB;
467
468 towerid = tmp_initEMB + ( (thisCol-16) * 64) + thisRow;
469 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
470
471 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
472
473 }
474 }
475
476 if (msgLvl(MSG::DEBUG)) {
478 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
479 for (
int thisCol=0; thisCol<
cols; thisCol++) {
480 int tmptowerid = tmp_jTowersIDs_subset_2[thisRow][thisCol];
481 if(tmptowerid == 0) continue;
482 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
483 const float tmptowereta = tmptower->
iEta();
484 const float tmptowerphi = tmptower->
iPhi();
485 if(thisCol != cols-1) {
486 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
487 }
488 else {
489 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
490 }
491 }
492 }
493 }
494
495
497 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
498
499 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
500 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
501 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
502
503 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
504 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
506
507
508
509
510
511
512
513
514
515 emecEta = 15; emecPhi = 0; emecMod = 600000;
516 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
517 transEta = 14; transPhi = 0; transMod = 400000;
518 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
519 embEta = 7; embPhi = 0; embMod = 100000;
521
522
523 thisJFEX = 3;
524
525
526 std::unordered_map<int,jTower> tmp_jTowersColl_subset_3;
527
528
530
531
534 tmp_jTowersIDs_subset_3[
i][
j] = 0;
535 }
536 }
537
538
539 rows =
sizeof tmp_jTowersIDs_subset_3 /
sizeof tmp_jTowersIDs_subset_3[0];
540 cols =
sizeof tmp_jTowersIDs_subset_3[0] /
sizeof tmp_jTowersIDs_subset_3[0][0];
541
542
543 for(int thisCol = 0; thisCol < 8; thisCol++){
544 for(
int thisRow=0; thisRow<
rows; thisRow++){
545 int towerid = -1;
546
547 int tmp_initEMB = initialEMB;
548
549 towerid = tmp_initEMB - ( (thisCol) * 64) + thisRow;
550
551 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
552
553 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
554
555 }
556 }
557
558 embEta = 0; embPhi = 0; embMod = 200000;
560
561 for(int thisCol = 8; thisCol < 22; thisCol++){
562 for(
int thisRow=0; thisRow<
rows; thisRow++){
563 int towerid = -1;
564
565 int tmp_initEMB = initialEMB;
566
567 towerid = tmp_initEMB + ( (thisCol-8) * 64) + thisRow;
568
569 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
570
571 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
572
573 }
574 }
575
576
577 for(
int thisRow = 0; thisRow <
rows; thisRow++){
578 int towerid = initialTRANS + thisRow;
579
580 tmp_jTowersIDs_subset_3[thisRow][22] = towerid;
581 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
582
583 }
584
585
586 for(
int thisRow=0; thisRow<
rows; thisRow++){
587 int towerid = initialEMEC + + thisRow;
588
589 tmp_jTowersIDs_subset_3[thisRow][23] = towerid;
590 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
591
592 }
593
594 if (msgLvl(MSG::DEBUG)) {
596 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
597 for (
int thisCol=0; thisCol<
cols; thisCol++) {
598 int tmptowerid = tmp_jTowersIDs_subset_3[thisRow][thisCol];
599 if(tmptowerid == 0) continue;
600 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
601 const float tmptowereta = tmptower->
iEta();
602 const float tmptowerphi = tmptower->
iPhi();
603 if(thisCol != cols-1) {
604 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
605 }
606 else {
607 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
608 }
609 }
610 }
611 }
612
613
615 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_3, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
616
617 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
618 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
619 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
620
621 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
622 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
624
625
626
627
628
629
630
631
632 emecEta = 15; emecPhi = 0; emecMod = 600000;
633 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
634 transEta = 14; transPhi = 0; transMod = 400000;
635 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
636 embEta = 0; embPhi = 0; embMod = 200000;
638
639
640 thisJFEX = 4;
641
642
643 std::unordered_map<int,jTower> tmp_jTowersColl_subset_4;
644
645
647
648
651 tmp_jTowersIDs_subset_4[
i][
j] = 0;
652 }
653 }
654
655 rows =
sizeof tmp_jTowersIDs_subset_4 /
sizeof tmp_jTowersIDs_subset_4[0];
656 cols =
sizeof tmp_jTowersIDs_subset_4[0] /
sizeof tmp_jTowersIDs_subset_4[0][0];
657
658
659 for(int thisCol = 0; thisCol < 14; thisCol++){
660 for(
int thisRow=0; thisRow<
rows; thisRow++){
661 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
662
663 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
664 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
665
666 }
667 }
668
669 for(
int thisRow = 0; thisRow <
rows; thisRow++){
670 int towerid = initialTRANS + thisRow;
671
672 tmp_jTowersIDs_subset_4[thisRow][14] = towerid;
673 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
674
675 }
676
677 for(
int thisCol = 15; thisCol <
cols; thisCol++){
678 for(
int thisRow=0; thisRow<
rows; thisRow++){
679 int towerid = initialEMEC + ( (thisCol-15) * 64) + thisRow;
680
681 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
682 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
683
684 }
685 }
686
687 if (msgLvl(MSG::DEBUG)) {
689 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
690 for (
int thisCol=0; thisCol<
cols; thisCol++) {
691 int tmptowerid = tmp_jTowersIDs_subset_4[thisRow][thisCol];
692 if(tmptowerid == 0) continue;
693 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
694 const float tmptowereta = tmptower->
iEta();
695 const float tmptowerphi = tmptower->
iPhi();
696 if(thisCol != cols-1) {
697 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
698 }
699 else {
700 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
701 }
702 }
703 }
704 }
705
706
708 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_4, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
709
710 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
711 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
712 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
713
714 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
715 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
717
718
719
720
721
722
723
724
725 fcal2Eta = 0; fcal2Phi = 0; fcal2Mod = 1200000;
726 initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
727 fcal1Eta = 0; fcal1Phi = 0; fcal1Mod = 1000000;
728 initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
729 fcal0Eta = 0; fcal0Phi = 0; fcal0Mod = 800000;
730 initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
731 emecEta = 15; emecPhi = 0; emecMod = 600000;
732 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
733 transEta = 14; transPhi = 0; transMod = 400000;
734 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
735 embEta = 8; embPhi = 0; embMod = 200000;
737
738
739 thisJFEX = 5;
740
741
742 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2;
743
744
745
746
748
749
752 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[
i][
j] = 0;
753 }
754 }
755
756 rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2 /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0];
757 cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0][0];
758
759
760 for(int thisCol = 0; thisCol < 6; thisCol++){
761 for(
int thisRow=0; thisRow<
rows; thisRow++){
762 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
763
764 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
765 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
766
767 }
768 }
769
770
771 for(
int thisRow = 0; thisRow <
rows; thisRow++){
772 int towerid = initialTRANS + thisRow;
773
774 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][6] = towerid;
775 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
776
777 }
778
779
780 for(int thisCol=7; thisCol<17; thisCol++){
781 for(
int thisRow=0; thisRow<
rows; thisRow++){
782
783 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
784
785 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
786 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
787
788 }
789 }
790
791
792 for(int thisCol=17; thisCol<21; thisCol++){
793 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
794
795 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
796
797 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
798 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
799
800 }
801 }
802
803
804
805
806 for(int thisCol=21; thisCol<33; thisCol++){
807 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
808
809 int towerid = initialFCAL0 + ((thisCol-21) * 64) + thisRow;
810
811 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
812 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
813
814 }
815 }
816
817
818
819
820 for(int thisCol=33; thisCol<41; thisCol++){
821 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
822
823 int towerid = initialFCAL1 + ((thisCol-33) * 64) + thisRow;
824
825 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
826 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
827
828 }
829 }
830
831
832
833
834 for(int thisCol=41; thisCol<45; thisCol++){
835 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
836
837 int towerid = initialFCAL2 + ((thisCol-41) * 64) + thisRow;
838
839 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
840 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->findTower(towerid))));
841
842 }
843 }
844
845
846 if (msgLvl(MSG::DEBUG)) {
848 for (int thisRow=rows-1; thisRow>=0; thisRow--) {
849 for (
int thisCol=0; thisCol<
cols; thisCol++) {
850 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol];
851 if(tmptowerid == 0) continue;
852 const LVL1::jTower* tmptower = this_jTowerContainer->findTower(tmptowerid);
853 const float tmptowereta = tmptower->
iEta();
854 const float tmptowerphi = tmptower->
iPhi();
855 if(thisCol != cols-1) {
856 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
857 }
858 else {
859 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
860 }
861 }
862 }
863 }
864
866 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardCSide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
867
868 m_allSmallRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getSmallRJetTOBs() ) ));
869 m_allLargeRJetTobs.insert(std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getLargeRJetTOBs() ) ));
870 m_alltauTobs.insert( std::unordered_map<uint8_t, std::vector< std::vector<std::unique_ptr<jFEXTOB>> > >::value_type(thisJFEX,(
m_jFEXSimTool->getTauTOBs() ) ));
871 m_allfwdElTobs.insert( std::unordered_map<uint8_t, std::vector<std::vector<std::vector<uint32_t>>> >::value_type(thisJFEX,(
m_jFEXSimTool->getFwdElTOBs() ) ));
872
873 m_allsumEtTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getSumEtTOBs() ) ));
874 m_allMetTobs.insert(std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> >::value_type(thisJFEX,(
m_jFEXSimTool->getMetTOBs() ) ));
876
877
878
879
880
881
882 SG::ReadHandle<TrigConf::L1Menu> l1Menu (
m_l1MenuKey, ctx);
883
884 const int jFwdElResolution = l1Menu->thrExtraInfo().jEM().resolutionMeV();
885
886
887 auto tobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
888 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > tobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
889 tobContainer_jJ->setStore(tobAuxContainer_jJ.get());
890
892
893 auto xtobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
894 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > xtobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
895 xtobContainer_jJ->setStore(xtobAuxContainer_jJ.get());
896
898
899
900 SG::WriteHandle<xAOD::jFexSRJetRoIContainer> output_Tob_jJ(
m_TobOutKey_jJ, ctx);
901 ATH_MSG_DEBUG(
" write: " << output_Tob_jJ.key() <<
" = " <<
"..." );
902 ATH_CHECK(output_Tob_jJ.record(std::move(tobContainer_jJ),std::move(tobAuxContainer_jJ)));
903
904 SG::WriteHandle<xAOD::jFexSRJetRoIContainer> output_xTob_jJ(
m_xTobOutKey_jJ, ctx);
905 ATH_MSG_DEBUG(
" write: " << output_xTob_jJ.key() <<
" = " <<
"..." );
906 ATH_CHECK(output_xTob_jJ.record(std::move(xtobContainer_jJ),std::move(xtobAuxContainer_jJ)));
907
908
910 for(auto const & tobs: fpga) {
911 for(
size_t it = 0;
it<tobs.size();
it++) {
914 char istob = 0;
915 if(tobs.at(it)->getWord() != 0) {
916 eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
917 phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();
918 }
919
920
921 if(it<7){
922 istob = 1;
924 tobDec_jJ_seedET( *(output_Tob_jJ->back()) ) = tobs.at(it)->getSeedEt();
925 }
927 xtobDec_jJ_seedET( *(output_xTob_jJ->back()) ) = tobs.at(it)->getSeedEt();
928 }
929 }
930 }
931
932
933 auto tobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
934 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > tobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
935 tobContainer_jLJ->setStore(tobAuxContainer_jLJ.get());
936
937 auto xtobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
938 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > xtobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
939 xtobContainer_jLJ->setStore(xtobAuxContainer_jLJ.get());
940
941
942 SG::WriteHandle<xAOD::jFexLRJetRoIContainer_v1> output_Tob_jLJ(
m_TobOutKey_jLJ, ctx);
943 ATH_MSG_DEBUG(
" write: " << output_Tob_jLJ.key() <<
" = " <<
"..." );
944 ATH_CHECK(output_Tob_jLJ.record(std::move(tobContainer_jLJ),std::move(tobAuxContainer_jLJ)));
945
946 SG::WriteHandle<xAOD::jFexLRJetRoIContainer_v1> output_xTob_jLJ(
m_xTobOutKey_jLJ, ctx);
947 ATH_MSG_DEBUG(
" write: " << output_xTob_jLJ.key() <<
" = " <<
"..." );
948 ATH_CHECK(output_xTob_jLJ.record(std::move(xtobContainer_jLJ),std::move(xtobAuxContainer_jLJ)));
949
951
952
954 for(auto const& tobs: fpga) {
955 for(
size_t it = 0;
it<tobs.size();
it++) {
958 char istob = 0;
959 if(tobs.at(it)->getWord() != 0) {
960 eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
961 phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();
962 }
963
964
965 if(it<1){
966 istob=1;
968 }
970 }
971 }
972 }
973
974 auto tobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
975 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > tobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
976 tobContainer_jTau->setStore(tobAuxContainer_jTau.get());
977
978 auto xtobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
979 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > xtobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
980 xtobContainer_jTau->setStore(xtobAuxContainer_jTau.get());
981
982 SG::WriteHandle<xAOD::jFexTauRoIContainer_v1> output_Tob_jTau(
m_TobOutKey_jTau, ctx);
983 ATH_MSG_DEBUG(
" write: " << output_Tob_jTau.key() <<
" = " <<
"..." );
984 ATH_CHECK(output_Tob_jTau.record(std::move(tobContainer_jTau),std::move(tobAuxContainer_jTau)));
985
986 SG::WriteHandle<xAOD::jFexTauRoIContainer_v1> output_xTob_jTau(
m_xTobOutKey_jTau, ctx);
987 ATH_MSG_DEBUG(
" write: " << output_xTob_jTau.key() <<
" = " <<
"..." );
988 ATH_CHECK(output_xTob_jTau.record(std::move(xtobContainer_jTau),std::move(xtobAuxContainer_jTau)));
989
990
992 for(auto const& tobs : fpga){
993 for(
size_t it = 0;
it<tobs.size();
it++) {
996 char istob = 0;
997 if(tobs.at(it)->getWord() != 0){
998 eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
999 phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();
1000 }
1001
1002
1003 if(it<6){
1004 istob=1;
1006 }
1008 }
1009 }
1010
1011 }
1012
1013
1014 auto tobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1015 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > tobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1016 tobContainer_jEM->setStore(tobAuxContainer_jEM.get());
1017
1018 auto xtobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1019 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > xtobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1020 xtobContainer_jEM->setStore(xtobAuxContainer_jEM.get());
1021
1022 SG::WriteHandle<xAOD::jFexFwdElRoIContainer_v1> output_Tob_jEM(
m_TobOutKey_jEM, ctx);
1023 ATH_MSG_DEBUG(
" write: " << output_Tob_jEM.key() <<
" = " <<
"..." );
1024 ATH_CHECK(output_Tob_jEM.record(std::move(tobContainer_jEM),std::move(tobAuxContainer_jEM)));
1025
1026 SG::WriteHandle<xAOD::jFexFwdElRoIContainer_v1> output_xTob_jEM(
m_xTobOutKey_jEM, ctx);
1027 ATH_MSG_DEBUG(
" write: " << output_xTob_jEM.key() <<
" = " <<
"..." );
1028 ATH_CHECK(output_xTob_jEM.record(std::move(xtobContainer_jEM),std::move(xtobAuxContainer_jEM)));
1029
1030
1032 const int fpga_map[4]={0,1,3,2};
1034 for(auto &FPGA_tob : MODULE_tobs) {
1035 if (fpgaNum>3) {
1036 ATH_MSG_ERROR(
"FPGA larger than 4 in Forward electron EDM!");
1037 continue;
1038 }
1039 for(
size_t it = 0;
it<FPGA_tob.size();
it++) {
1042 char istob = 0;
1043 if(FPGA_tob.at(it).at(1) != 0) {
1044 eta = (this_jTowerContainer->findTower(FPGA_tob.at(it).at(1)))->centreEta();
1045 phi = (this_jTowerContainer->findTower(FPGA_tob.at(it).at(1)))->centrephi_toPI();
1046 }
1047
1048 if(it<5){
1049 istob=1;
1051 }
1053 }
1054 fpgaNum++;
1055 }
1056
1057 }
1058
1059
1060 auto tobContainer_jTE = std::make_unique<xAOD::jFexSumETRoIContainer> ();
1061 std::unique_ptr< xAOD::jFexSumETRoIAuxContainer > tobAuxContainer_jTE = std::make_unique<xAOD::jFexSumETRoIAuxContainer> ();
1062 tobContainer_jTE->setStore(tobAuxContainer_jTE.get());
1063
1064 SG::WriteHandle<xAOD::jFexSumETRoIContainer_v1> output_Tob_jTE(
m_TobOutKey_jTE, ctx);
1065 ATH_MSG_DEBUG(
" write: " << output_Tob_jTE.key() <<
" = " <<
"..." );
1066 ATH_CHECK(output_Tob_jTE.record(std::move(tobContainer_jTE),std::move(tobAuxContainer_jTE)));
1067
1069
1070 for(auto const& t : tobs) {
1072 }
1073 }
1074
1075
1076 auto tobContainer_jXE = std::make_unique<xAOD::jFexMETRoIContainer> ();
1077 std::unique_ptr< xAOD::jFexMETRoIAuxContainer > tobAuxContainer_jXE = std::make_unique<xAOD::jFexMETRoIAuxContainer> ();
1078 tobContainer_jXE->setStore(tobAuxContainer_jXE.get());
1079
1080 SG::WriteHandle<xAOD::jFexMETRoIContainer_v1> output_Tob_jXE(
m_TobOutKey_jXE, ctx);
1081 ATH_MSG_DEBUG(
" write: " << output_Tob_jXE.key() <<
" = " <<
"..." );
1082 ATH_CHECK(output_Tob_jXE.record(std::move(tobContainer_jXE),std::move(tobAuxContainer_jXE)));
1083
1085
1086 for(auto const& t : tobs) {
1088 }
1089 }
1090
1091
1092
1093
1094
1095
1096
1097
1098 return StatusCode::SUCCESS;
1099
1100 }
#define ATH_CHECK
Evaluate an expression and check for errors.
static constexpr int jFEX_wide_algoSpace_width
static constexpr int jFEX_thin_algoSpace_width
static constexpr int jFEX_algoSpace_height
std::unordered_map< uint8_t, std::vector< std::vector< std::unique_ptr< jFEXTOB > > > > m_allLargeRJetTobs
SG::WriteHandleKey< xAOD::jFexLRJetRoIContainer > m_xTobOutKey_jLJ
StatusCode fillFwdElEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, SG::WriteHandle< xAOD::jFexFwdElRoIContainer > &jContainer) const
std::unordered_map< uint8_t, std::vector< std::vector< std::unique_ptr< jFEXTOB > > > > m_alltauTobs
SG::WriteHandleKey< xAOD::jFexMETRoIContainer > m_TobOutKey_jXE
SG::WriteHandleKey< xAOD::jFexFwdElRoIContainer > m_xTobOutKey_jEM
SG::ReadHandleKey< LVL1::jTowerContainer > m_jTowerContainerSGKey
SG::ReadHandleKey< TrigConf::L1Menu > m_l1MenuKey
ToolHandle< IjFEXSim > m_jFEXSimTool
std::unordered_map< uint8_t, std::vector< std::vector< std::unique_ptr< jFEXTOB > > > > m_allSmallRJetTobs
SG::WriteHandleKey< xAOD::jFexTauRoIContainer > m_TobOutKey_jTau
StatusCode fillTauEDM(const std::unique_ptr< jFEXTOB > &internalTob, char istob, float_t eta, float_t phi, SG::WriteHandle< xAOD::jFexTauRoIContainer > &jContainer) const
StatusCode fillMetEDM(const std::unique_ptr< jFEXTOB > &internalTob, SG::WriteHandle< xAOD::jFexMETRoIContainer > &jContainer) const
SG::WriteHandleKey< xAOD::jFexSRJetRoIContainer > m_xTobOutKey_jJ
SG::WriteDecorHandleKey< xAOD::jFexSRJetRoIContainer > m_TobDecorKey_jJ_seedET
std::unordered_map< uint8_t, std::vector< std::unique_ptr< jFEXTOB > > > m_allMetTobs
StatusCode fillLRJetEDM(const std::unique_ptr< jFEXTOB > &internalTob, char istob, float_t eta, float_t phi, SG::WriteHandle< xAOD::jFexLRJetRoIContainer > &jContainer) const
SG::WriteDecorHandleKey< xAOD::jFexSRJetRoIContainer > m_xTobDecorKey_jJ_seedET
virtual int calcTowerID(int eta, int phi, int mod) const override
SG::WriteHandleKey< xAOD::jFexLRJetRoIContainer > m_TobOutKey_jLJ
SG::WriteHandleKey< xAOD::jFexSRJetRoIContainer > m_TobOutKey_jJ
SG::WriteHandleKey< xAOD::jFexFwdElRoIContainer > m_TobOutKey_jEM
std::unordered_map< uint8_t, std::vector< std::unique_ptr< jFEXTOB > > > m_allsumEtTobs
StatusCode fillSRJetEDM(const std::unique_ptr< jFEXTOB > &internalTob, char istob, float_t eta, float_t phi, SG::WriteHandle< xAOD::jFexSRJetRoIContainer > &jContainer) const
SG::WriteHandleKey< xAOD::jFexTauRoIContainer > m_xTobOutKey_jTau
SG::ReadCondHandleKey< jFEXDBCondData > m_DBToolKey
std::unordered_map< uint8_t, std::vector< std::vector< std::vector< uint32_t > > > > m_allfwdElTobs
StatusCode fillSumEtEDM(const std::unique_ptr< jFEXTOB > &internalTob, SG::WriteHandle< xAOD::jFexSumETRoIContainer > &jContainer) const
SG::WriteHandleKey< xAOD::jFexSumETRoIContainer > m_TobOutKey_jTE
int iEta() const
Get coordinates of tower.
int iPhi() const
Return global phi index.
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)