24 #include "GaudiKernel/ServiceHandle.h"
54 declareInterface<IjFEXSysSim>(
this);
94 return StatusCode::SUCCESS;
101 return StatusCode::SUCCESS;
119 return ((64*eta) + phi +
mod);
125 if(!this_jTowerContainer.
isValid()){
127 return StatusCode::FAILURE;
164 int fcal2Eta = 3;
int fcal2Phi = 0;
int fcal2Mod = 1100000;
165 int initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
166 int fcal1Eta = 7;
int fcal1Phi = 0;
int fcal1Mod = 900000;
167 int initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
168 int fcal0Eta = 11;
int fcal0Phi = 0;
int fcal0Mod = 700000;
169 int initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
170 int emecEta = 28;
int emecPhi = 0;
int emecMod = 500000;
171 int initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
172 int transEta = 14;
int transPhi = 0;
int transMod = 300000;
173 int initialTRANS =
calcTowerID(transEta,transPhi,transMod);
174 int embEta = 13;
int embPhi = 0;
int embMod = 100000;
175 int initialEMB =
calcTowerID(embEta,embPhi,embMod);
180 return StatusCode::FAILURE;
183 unsigned int evtTimeStamp = Gaudi::Hive::currentContext().eventID().time_stamp();
192 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL;
193 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.reserve(1600);
201 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[
i][j] = 0;
205 int rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0];
206 int cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0][0];
209 for(
int thisCol=0; thisCol<4; thisCol++){
210 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
212 int towerid = initialFCAL2 - (thisCol * 64) + thisRow;
214 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
215 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
222 for(
int thisCol=4; thisCol<12; thisCol++){
223 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
225 int towerid = initialFCAL1 - ((thisCol-4) * 64) + thisRow;
227 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
228 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
235 for(
int thisCol=12; thisCol<24; thisCol++){
236 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
238 int towerid = initialFCAL0 - ((thisCol-12) * 64) + thisRow;
240 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
241 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
248 for(
int thisCol=24; thisCol<28; thisCol++){
249 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
251 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
253 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
254 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
259 for(
int thisCol=28; thisCol<38; thisCol++){
260 for(
int thisRow=0; thisRow<
rows; thisRow++){
262 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
264 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
265 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
270 for(
int thisRow = 0; thisRow <
rows; thisRow++){
272 int towerid = initialTRANS + thisRow;
274 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][38] = towerid;
275 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
279 for(
int thisCol = 39; thisCol < 45; thisCol++){
280 for(
int thisRow=0; thisRow<
rows; thisRow++){
282 int towerid = initialEMB - ( (thisCol-39) * 64) + thisRow;
284 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
285 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
292 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
293 for (
int thisCol=0; thisCol<
cols; thisCol++) {
294 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol];
295 if(tmptowerid == 0 )
continue;
297 const float tmptowereta = tmptower->
iEta();
298 const float tmptowerphi = tmptower->
iPhi();
299 if(thisCol !=
cols-1) {
300 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
303 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
309 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardASide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
328 emecEta = 23; emecPhi = 0; emecMod = 500000;
329 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
330 transEta = 14; transPhi = 0; transMod = 300000;
331 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
332 embEta = 13; embPhi = 0; embMod = 100000;
339 std::unordered_map<int,jTower> tmp_jTowersColl_subset_1;
347 tmp_jTowersIDs_subset_1[
i][j] = 0;
351 rows =
sizeof tmp_jTowersIDs_subset_1 /
sizeof tmp_jTowersIDs_subset_1[0];
352 cols =
sizeof tmp_jTowersIDs_subset_1[0] /
sizeof tmp_jTowersIDs_subset_1[0][0];
355 for(
int thisCol = 0; thisCol < 9; thisCol++){
356 for(
int thisRow=0; thisRow<
rows; thisRow++){
358 int towerid = initialEMEC - (thisCol * 64) + thisRow;
360 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
361 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
367 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
369 int towerid = initialTRANS + thisRow;
371 tmp_jTowersIDs_subset_1[thisRow][9] = towerid;
372 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
377 for(
int thisCol = 10; thisCol <
cols; thisCol++) {
378 for(
int thisRow=0; thisRow<
rows; thisRow++) {
380 int towerid = initialEMB - ( (thisCol-10) * 64) + thisRow ;
382 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
383 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
390 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
391 for (
int thisCol=0; thisCol<
cols; thisCol++) {
392 int tmptowerid = tmp_jTowersIDs_subset_1[thisRow][thisCol];
393 if(tmptowerid == 0)
continue;
395 const float tmptowereta = tmptower->
iEta();
396 const float tmptowerphi = tmptower->
iPhi();
397 if(thisCol !=
cols-1) {
398 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
401 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
407 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_1, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
425 emecEta = 15; emecPhi = 0; emecMod = 500000;
426 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
427 transEta = 14; transPhi = 0; transMod = 300000;
428 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
429 embEta = 13; embPhi = 0; embMod = 100000;
436 std::unordered_map<int,jTower> tmp_jTowersColl_subset_2;
444 tmp_jTowersIDs_subset_2[
i][j] = 0;
449 rows =
sizeof tmp_jTowersIDs_subset_2 /
sizeof tmp_jTowersIDs_subset_2[0];
450 cols =
sizeof tmp_jTowersIDs_subset_2[0] /
sizeof tmp_jTowersIDs_subset_2[0][0];
453 for(
int thisRow=0; thisRow<
rows; thisRow++) {
455 int towerid = initialEMEC + thisRow;
457 tmp_jTowersIDs_subset_2[thisRow][0] = towerid;
458 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
463 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
465 int towerid = initialTRANS + thisRow;
467 tmp_jTowersIDs_subset_2[thisRow][1] = towerid;
468 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
473 for(
int thisCol = 2; thisCol <
cols-8; thisCol++) {
474 for(
int thisRow=0; thisRow<
rows; thisRow++) {
477 int tmp_initEMB = initialEMB;
479 towerid = tmp_initEMB - ( (thisCol-2) * 64) + thisRow;
480 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
482 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
487 embEta = 0; embPhi = 0; embMod = 200000;
491 for(
int thisCol = 16; thisCol <
cols; thisCol++) {
492 for(
int thisRow=0; thisRow<
rows; thisRow++) {
495 int tmp_initEMB = initialEMB;
497 towerid = tmp_initEMB + ( (thisCol-16) * 64) + thisRow;
498 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
500 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
507 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
508 for (
int thisCol=0; thisCol<
cols; thisCol++) {
509 int tmptowerid = tmp_jTowersIDs_subset_2[thisRow][thisCol];
510 if(tmptowerid == 0)
continue;
512 const float tmptowereta = tmptower->
iEta();
513 const float tmptowerphi = tmptower->
iPhi();
514 if(thisCol !=
cols-1) {
515 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
518 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
526 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
544 emecEta = 15; emecPhi = 0; emecMod = 600000;
545 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
546 transEta = 14; transPhi = 0; transMod = 400000;
547 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
548 embEta = 7; embPhi = 0; embMod = 100000;
555 std::unordered_map<int,jTower> tmp_jTowersColl_subset_3;
563 tmp_jTowersIDs_subset_3[
i][j] = 0;
568 rows =
sizeof tmp_jTowersIDs_subset_3 /
sizeof tmp_jTowersIDs_subset_3[0];
569 cols =
sizeof tmp_jTowersIDs_subset_3[0] /
sizeof tmp_jTowersIDs_subset_3[0][0];
572 for(
int thisCol = 0; thisCol < 8; thisCol++){
573 for(
int thisRow=0; thisRow<
rows; thisRow++){
576 int tmp_initEMB = initialEMB;
578 towerid = tmp_initEMB - ( (thisCol) * 64) + thisRow;
580 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
582 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
587 embEta = 0; embPhi = 0; embMod = 200000;
590 for(
int thisCol = 8; thisCol < 22; thisCol++){
591 for(
int thisRow=0; thisRow<
rows; thisRow++){
594 int tmp_initEMB = initialEMB;
596 towerid = tmp_initEMB + ( (thisCol-8) * 64) + thisRow;
598 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
600 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
606 for(
int thisRow = 0; thisRow <
rows; thisRow++){
607 int towerid = initialTRANS + thisRow;
609 tmp_jTowersIDs_subset_3[thisRow][22] = towerid;
610 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
615 for(
int thisRow=0; thisRow<
rows; thisRow++){
616 int towerid = initialEMEC + + thisRow;
618 tmp_jTowersIDs_subset_3[thisRow][23] = towerid;
619 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
625 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
626 for (
int thisCol=0; thisCol<
cols; thisCol++) {
627 int tmptowerid = tmp_jTowersIDs_subset_3[thisRow][thisCol];
628 if(tmptowerid == 0)
continue;
630 const float tmptowereta = tmptower->
iEta();
631 const float tmptowerphi = tmptower->
iPhi();
632 if(thisCol !=
cols-1) {
633 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
636 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
644 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_3, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
661 emecEta = 15; emecPhi = 0; emecMod = 600000;
662 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
663 transEta = 14; transPhi = 0; transMod = 400000;
664 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
665 embEta = 0; embPhi = 0; embMod = 200000;
672 std::unordered_map<int,jTower> tmp_jTowersColl_subset_4;
680 tmp_jTowersIDs_subset_4[
i][j] = 0;
684 rows =
sizeof tmp_jTowersIDs_subset_4 /
sizeof tmp_jTowersIDs_subset_4[0];
685 cols =
sizeof tmp_jTowersIDs_subset_4[0] /
sizeof tmp_jTowersIDs_subset_4[0][0];
688 for(
int thisCol = 0; thisCol < 14; thisCol++){
689 for(
int thisRow=0; thisRow<
rows; thisRow++){
690 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
692 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
693 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
698 for(
int thisRow = 0; thisRow <
rows; thisRow++){
699 int towerid = initialTRANS + thisRow;
701 tmp_jTowersIDs_subset_4[thisRow][14] = towerid;
702 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
706 for(
int thisCol = 15; thisCol <
cols; thisCol++){
707 for(
int thisRow=0; thisRow<
rows; thisRow++){
708 int towerid = initialEMEC + ( (thisCol-15) * 64) + thisRow;
710 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
711 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
718 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
719 for (
int thisCol=0; thisCol<
cols; thisCol++) {
720 int tmptowerid = tmp_jTowersIDs_subset_4[thisRow][thisCol];
721 if(tmptowerid == 0)
continue;
723 const float tmptowereta = tmptower->
iEta();
724 const float tmptowerphi = tmptower->
iPhi();
725 if(thisCol !=
cols-1) {
726 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
729 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
737 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_4, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
754 fcal2Eta = 0; fcal2Phi = 0; fcal2Mod = 1200000;
755 initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
756 fcal1Eta = 0; fcal1Phi = 0; fcal1Mod = 1000000;
757 initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
758 fcal0Eta = 0; fcal0Phi = 0; fcal0Mod = 800000;
759 initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
760 emecEta = 15; emecPhi = 0; emecMod = 600000;
761 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
762 transEta = 14; transPhi = 0; transMod = 400000;
763 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
764 embEta = 8; embPhi = 0; embMod = 200000;
771 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2;
779 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[
i][j] = 0;
783 rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2 /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0];
784 cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0][0];
787 for(
int thisCol = 0; thisCol < 6; thisCol++){
788 for(
int thisRow=0; thisRow<
rows; thisRow++){
789 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
791 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
792 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
798 for(
int thisRow = 0; thisRow <
rows; thisRow++){
799 int towerid = initialTRANS + thisRow;
801 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][6] = towerid;
802 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
807 for(
int thisCol=7; thisCol<17; thisCol++){
808 for(
int thisRow=0; thisRow<
rows; thisRow++){
810 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
812 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
813 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
819 for(
int thisCol=17; thisCol<21; thisCol++){
820 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
822 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
824 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
825 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
833 for(
int thisCol=21; thisCol<33; thisCol++){
834 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
836 int towerid = initialFCAL0 + ((thisCol-21) * 64) + thisRow;
838 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
839 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
847 for(
int thisCol=33; thisCol<41; thisCol++){
848 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
850 int towerid = initialFCAL1 + ((thisCol-33) * 64) + thisRow;
852 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
853 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
861 for(
int thisCol=41; thisCol<45; thisCol++){
862 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
864 int towerid = initialFCAL2 + ((thisCol-41) * 64) + thisRow;
866 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
867 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
875 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
876 for (
int thisCol=0; thisCol<
cols; thisCol++) {
877 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol];
878 if(tmptowerid == 0)
continue;
880 const float tmptowereta = tmptower->
iEta();
881 const float tmptowerphi = tmptower->
iPhi();
882 if(thisCol !=
cols-1) {
883 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
886 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
893 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardCSide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
914 auto tobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
915 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > tobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
916 tobContainer_jJ->setStore(tobAuxContainer_jJ.get());
920 auto xtobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
921 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > xtobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
922 xtobContainer_jJ->setStore(xtobAuxContainer_jJ.get());
929 ATH_CHECK(output_Tob_jJ.
record(std::move(tobContainer_jJ),std::move(tobAuxContainer_jJ)));
933 ATH_CHECK(output_xTob_jJ.
record(std::move(xtobContainer_jJ),std::move(xtobAuxContainer_jJ)));
937 for(
auto const & tobs: fpga) {
938 for(
size_t it = 0;
it<tobs.size();
it++) {
942 if(tobs.at(
it)->getWord() != 0) {
943 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
944 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
951 tobDec_jJ_seedET( *(output_Tob_jJ->
back()) ) = tobs.at(
it)->getSeedEt();
954 xtobDec_jJ_seedET( *(output_xTob_jJ->
back()) ) = tobs.at(
it)->getSeedEt();
960 auto tobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
961 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > tobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
962 tobContainer_jLJ->setStore(tobAuxContainer_jLJ.get());
964 auto xtobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
965 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > xtobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
966 xtobContainer_jLJ->setStore(xtobAuxContainer_jLJ.get());
971 ATH_CHECK(output_Tob_jLJ.
record(std::move(tobContainer_jLJ),std::move(tobAuxContainer_jLJ)));
975 ATH_CHECK(output_xTob_jLJ.
record(std::move(xtobContainer_jLJ),std::move(xtobAuxContainer_jLJ)));
979 for(
auto const& tobs: fpga) {
980 for(
size_t it = 0;
it<tobs.size();
it++) {
984 if(tobs.at(
it)->getWord() != 0) {
985 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
986 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
999 auto tobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
1000 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > tobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
1001 tobContainer_jTau->setStore(tobAuxContainer_jTau.get());
1003 auto xtobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
1004 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > xtobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
1005 xtobContainer_jTau->setStore(xtobAuxContainer_jTau.get());
1009 ATH_CHECK(output_Tob_jTau.
record(std::move(tobContainer_jTau),std::move(tobAuxContainer_jTau)));
1013 ATH_CHECK(output_xTob_jTau.
record(std::move(xtobContainer_jTau),std::move(xtobAuxContainer_jTau)));
1017 for(
auto const& tobs : fpga){
1018 for(
size_t it = 0;
it<tobs.size();
it++) {
1022 if(tobs.at(
it)->getWord() != 0){
1023 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
1024 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
1039 auto tobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1040 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > tobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1041 tobContainer_jEM->setStore(tobAuxContainer_jEM.get());
1043 auto xtobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1044 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > xtobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1045 xtobContainer_jEM->setStore(xtobAuxContainer_jEM.get());
1049 ATH_CHECK(output_Tob_jEM.
record(std::move(tobContainer_jEM),std::move(tobAuxContainer_jEM)));
1053 ATH_CHECK(output_xTob_jEM.
record(std::move(xtobContainer_jEM),std::move(xtobAuxContainer_jEM)));
1057 const int fpga_map[4]={0,1,3,2};
1059 for(
auto &FPGA_tob : MODULE_tobs) {
1061 ATH_MSG_ERROR(
"FPGA larger than 4 in Forward electron EDM!");
1064 for(
size_t it = 0;
it<FPGA_tob.size();
it++) {
1068 if(FPGA_tob.at(
it).at(1) != 0) {
1069 eta = (this_jTowerContainer->
findTower(FPGA_tob.at(
it).at(1)))->centreEta();
1070 phi = (this_jTowerContainer->
findTower(FPGA_tob.at(
it).at(1)))->centrephi_toPI();
1075 ATH_CHECK(
fillFwdElEDM(jfex,fpga_map[fpgaNum], FPGA_tob.at(
it).at(0),istob, jFwdElResolution, eta, phi, output_Tob_jEM));
1077 ATH_CHECK(
fillFwdElEDM(jfex,fpga_map[fpgaNum], FPGA_tob.at(
it).at(0),istob, jFwdElResolution, eta, phi, output_xTob_jEM));
1085 auto tobContainer_jTE = std::make_unique<xAOD::jFexSumETRoIContainer> ();
1086 std::unique_ptr< xAOD::jFexSumETRoIAuxContainer > tobAuxContainer_jTE = std::make_unique<xAOD::jFexSumETRoIAuxContainer> ();
1087 tobContainer_jTE->setStore(tobAuxContainer_jTE.get());
1091 ATH_CHECK(output_Tob_jTE.
record(std::move(tobContainer_jTE),std::move(tobAuxContainer_jTE)));
1095 for(
auto const&
t : tobs) {
1101 auto tobContainer_jXE = std::make_unique<xAOD::jFexMETRoIContainer> ();
1102 std::unique_ptr< xAOD::jFexMETRoIAuxContainer > tobAuxContainer_jXE = std::make_unique<xAOD::jFexMETRoIAuxContainer> ();
1103 tobContainer_jXE->setStore(tobAuxContainer_jXE.get());
1107 ATH_CHECK(output_Tob_jXE.
record(std::move(tobContainer_jXE),std::move(tobAuxContainer_jXE)));
1111 for(
auto const&
t : tobs) {
1123 return StatusCode::SUCCESS;
1133 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1135 ATH_MSG_DEBUG(
" setting SRJet jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1137 return StatusCode::SUCCESS;
1146 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1148 ATH_MSG_DEBUG(
" setting tau jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1150 return StatusCode::SUCCESS;
1160 ATH_MSG_DEBUG(
" setting Forward Elec jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1162 return StatusCode::SUCCESS;
1170 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1172 ATH_MSG_DEBUG(
" setting LRJet jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1174 return StatusCode::SUCCESS;
1182 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), internalTob->getRes());
1186 return StatusCode::SUCCESS;
1194 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), internalTob->getRes());
1198 return StatusCode::SUCCESS;