39 declareInterface<IjFEXSysSim>(
this);
79 return StatusCode::SUCCESS;
86 return StatusCode::SUCCESS;
104 return ((64*eta) + phi +
mod);
110 if(!this_jTowerContainer.
isValid()){
112 return StatusCode::FAILURE;
149 int fcal2Eta = 3;
int fcal2Phi = 0;
int fcal2Mod = 1100000;
150 int initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
151 int fcal1Eta = 7;
int fcal1Phi = 0;
int fcal1Mod = 900000;
152 int initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
153 int fcal0Eta = 11;
int fcal0Phi = 0;
int fcal0Mod = 700000;
154 int initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
155 int emecEta = 28;
int emecPhi = 0;
int emecMod = 500000;
156 int initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
157 int transEta = 14;
int transPhi = 0;
int transMod = 300000;
158 int initialTRANS =
calcTowerID(transEta,transPhi,transMod);
159 int embEta = 13;
int embPhi = 0;
int embMod = 100000;
160 int initialEMB =
calcTowerID(embEta,embPhi,embMod);
165 return StatusCode::FAILURE;
168 unsigned int evtTimeStamp = Gaudi::Hive::currentContext().eventID().time_stamp();
177 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL;
178 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.reserve(1600);
186 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[
i][j] = 0;
190 int rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0];
191 int cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[0][0];
194 for(
int thisCol=0; thisCol<4; thisCol++){
195 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
197 int towerid = initialFCAL2 - (thisCol * 64) + thisRow;
199 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
200 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
207 for(
int thisCol=4; thisCol<12; thisCol++){
208 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
210 int towerid = initialFCAL1 - ((thisCol-4) * 64) + thisRow;
212 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
213 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
220 for(
int thisCol=12; thisCol<24; thisCol++){
221 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
223 int towerid = initialFCAL0 - ((thisCol-12) * 64) + thisRow;
225 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
226 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
233 for(
int thisCol=24; thisCol<28; thisCol++){
234 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
236 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
238 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
239 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
244 for(
int thisCol=28; thisCol<38; thisCol++){
245 for(
int thisRow=0; thisRow<
rows; thisRow++){
247 int towerid = initialEMEC - ((thisCol-24) * 64) + thisRow;
249 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
250 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
255 for(
int thisRow = 0; thisRow <
rows; thisRow++){
257 int towerid = initialTRANS + thisRow;
259 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][38] = towerid;
260 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
264 for(
int thisCol = 39; thisCol < 45; thisCol++){
265 for(
int thisRow=0; thisRow<
rows; thisRow++){
267 int towerid = initialEMB - ( (thisCol-39) * 64) + thisRow;
269 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol] = towerid;
270 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
277 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
278 for (
int thisCol=0; thisCol<
cols; thisCol++) {
279 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL[thisRow][thisCol];
280 if(tmptowerid == 0 )
continue;
282 const float tmptowereta = tmptower->
iEta();
283 const float tmptowerphi = tmptower->
iPhi();
284 if(thisCol !=
cols-1) {
285 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
288 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
294 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardASide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
313 emecEta = 23; emecPhi = 0; emecMod = 500000;
314 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
315 transEta = 14; transPhi = 0; transMod = 300000;
316 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
317 embEta = 13; embPhi = 0; embMod = 100000;
324 std::unordered_map<int,jTower> tmp_jTowersColl_subset_1;
332 tmp_jTowersIDs_subset_1[
i][j] = 0;
336 rows =
sizeof tmp_jTowersIDs_subset_1 /
sizeof tmp_jTowersIDs_subset_1[0];
337 cols =
sizeof tmp_jTowersIDs_subset_1[0] /
sizeof tmp_jTowersIDs_subset_1[0][0];
340 for(
int thisCol = 0; thisCol < 9; thisCol++){
341 for(
int thisRow=0; thisRow<
rows; thisRow++){
343 int towerid = initialEMEC - (thisCol * 64) + thisRow;
345 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
346 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
352 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
354 int towerid = initialTRANS + thisRow;
356 tmp_jTowersIDs_subset_1[thisRow][9] = towerid;
357 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
362 for(
int thisCol = 10; thisCol <
cols; thisCol++) {
363 for(
int thisRow=0; thisRow<
rows; thisRow++) {
365 int towerid = initialEMB - ( (thisCol-10) * 64) + thisRow ;
367 tmp_jTowersIDs_subset_1[thisRow][thisCol] = towerid;
368 tmp_jTowersColl_subset_1.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
375 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
376 for (
int thisCol=0; thisCol<
cols; thisCol++) {
377 int tmptowerid = tmp_jTowersIDs_subset_1[thisRow][thisCol];
378 if(tmptowerid == 0)
continue;
380 const float tmptowereta = tmptower->
iEta();
381 const float tmptowerphi = tmptower->
iPhi();
382 if(thisCol !=
cols-1) {
383 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
386 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
392 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_1, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
410 emecEta = 15; emecPhi = 0; emecMod = 500000;
411 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
412 transEta = 14; transPhi = 0; transMod = 300000;
413 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
414 embEta = 13; embPhi = 0; embMod = 100000;
421 std::unordered_map<int,jTower> tmp_jTowersColl_subset_2;
429 tmp_jTowersIDs_subset_2[
i][j] = 0;
434 rows =
sizeof tmp_jTowersIDs_subset_2 /
sizeof tmp_jTowersIDs_subset_2[0];
435 cols =
sizeof tmp_jTowersIDs_subset_2[0] /
sizeof tmp_jTowersIDs_subset_2[0][0];
438 for(
int thisRow=0; thisRow<
rows; thisRow++) {
440 int towerid = initialEMEC + thisRow;
442 tmp_jTowersIDs_subset_2[thisRow][0] = towerid;
443 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
448 for(
int thisRow = 0; thisRow <
rows; thisRow++) {
450 int towerid = initialTRANS + thisRow;
452 tmp_jTowersIDs_subset_2[thisRow][1] = towerid;
453 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
458 for(
int thisCol = 2; thisCol <
cols-8; thisCol++) {
459 for(
int thisRow=0; thisRow<
rows; thisRow++) {
462 int tmp_initEMB = initialEMB;
464 towerid = tmp_initEMB - ( (thisCol-2) * 64) + thisRow;
465 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
467 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
472 embEta = 0; embPhi = 0; embMod = 200000;
476 for(
int thisCol = 16; thisCol <
cols; thisCol++) {
477 for(
int thisRow=0; thisRow<
rows; thisRow++) {
480 int tmp_initEMB = initialEMB;
482 towerid = tmp_initEMB + ( (thisCol-16) * 64) + thisRow;
483 tmp_jTowersIDs_subset_2[thisRow][thisCol] = towerid;
485 tmp_jTowersColl_subset_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
492 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
493 for (
int thisCol=0; thisCol<
cols; thisCol++) {
494 int tmptowerid = tmp_jTowersIDs_subset_2[thisRow][thisCol];
495 if(tmptowerid == 0)
continue;
497 const float tmptowereta = tmptower->
iEta();
498 const float tmptowerphi = tmptower->
iPhi();
499 if(thisCol !=
cols-1) {
500 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
503 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
511 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
529 emecEta = 15; emecPhi = 0; emecMod = 600000;
530 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
531 transEta = 14; transPhi = 0; transMod = 400000;
532 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
533 embEta = 7; embPhi = 0; embMod = 100000;
540 std::unordered_map<int,jTower> tmp_jTowersColl_subset_3;
548 tmp_jTowersIDs_subset_3[
i][j] = 0;
553 rows =
sizeof tmp_jTowersIDs_subset_3 /
sizeof tmp_jTowersIDs_subset_3[0];
554 cols =
sizeof tmp_jTowersIDs_subset_3[0] /
sizeof tmp_jTowersIDs_subset_3[0][0];
557 for(
int thisCol = 0; thisCol < 8; thisCol++){
558 for(
int thisRow=0; thisRow<
rows; thisRow++){
561 int tmp_initEMB = initialEMB;
563 towerid = tmp_initEMB - ( (thisCol) * 64) + thisRow;
565 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
567 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
572 embEta = 0; embPhi = 0; embMod = 200000;
575 for(
int thisCol = 8; thisCol < 22; thisCol++){
576 for(
int thisRow=0; thisRow<
rows; thisRow++){
579 int tmp_initEMB = initialEMB;
581 towerid = tmp_initEMB + ( (thisCol-8) * 64) + thisRow;
583 tmp_jTowersIDs_subset_3[thisRow][thisCol] = towerid;
585 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
591 for(
int thisRow = 0; thisRow <
rows; thisRow++){
592 int towerid = initialTRANS + thisRow;
594 tmp_jTowersIDs_subset_3[thisRow][22] = towerid;
595 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
600 for(
int thisRow=0; thisRow<
rows; thisRow++){
601 int towerid = initialEMEC + + thisRow;
603 tmp_jTowersIDs_subset_3[thisRow][23] = towerid;
604 tmp_jTowersColl_subset_3.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
610 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
611 for (
int thisCol=0; thisCol<
cols; thisCol++) {
612 int tmptowerid = tmp_jTowersIDs_subset_3[thisRow][thisCol];
613 if(tmptowerid == 0)
continue;
615 const float tmptowereta = tmptower->
iEta();
616 const float tmptowerphi = tmptower->
iPhi();
617 if(thisCol !=
cols-1) {
618 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
621 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
629 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_3, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
646 emecEta = 15; emecPhi = 0; emecMod = 600000;
647 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
648 transEta = 14; transPhi = 0; transMod = 400000;
649 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
650 embEta = 0; embPhi = 0; embMod = 200000;
657 std::unordered_map<int,jTower> tmp_jTowersColl_subset_4;
665 tmp_jTowersIDs_subset_4[
i][j] = 0;
669 rows =
sizeof tmp_jTowersIDs_subset_4 /
sizeof tmp_jTowersIDs_subset_4[0];
670 cols =
sizeof tmp_jTowersIDs_subset_4[0] /
sizeof tmp_jTowersIDs_subset_4[0][0];
673 for(
int thisCol = 0; thisCol < 14; thisCol++){
674 for(
int thisRow=0; thisRow<
rows; thisRow++){
675 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
677 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
678 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
683 for(
int thisRow = 0; thisRow <
rows; thisRow++){
684 int towerid = initialTRANS + thisRow;
686 tmp_jTowersIDs_subset_4[thisRow][14] = towerid;
687 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
691 for(
int thisCol = 15; thisCol <
cols; thisCol++){
692 for(
int thisRow=0; thisRow<
rows; thisRow++){
693 int towerid = initialEMEC + ( (thisCol-15) * 64) + thisRow;
695 tmp_jTowersIDs_subset_4[thisRow][thisCol] = towerid;
696 tmp_jTowersColl_subset_4.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
703 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
704 for (
int thisCol=0; thisCol<
cols; thisCol++) {
705 int tmptowerid = tmp_jTowersIDs_subset_4[thisRow][thisCol];
706 if(tmptowerid == 0)
continue;
708 const float tmptowereta = tmptower->
iEta();
709 const float tmptowerphi = tmptower->
iPhi();
710 if(thisCol !=
cols-1) {
711 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) ");
714 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
722 ATH_CHECK(
m_jFEXSimTool->ExecuteBarrel(tmp_jTowersIDs_subset_4, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
739 fcal2Eta = 0; fcal2Phi = 0; fcal2Mod = 1200000;
740 initialFCAL2 =
calcTowerID(fcal2Eta,fcal2Phi,fcal2Mod);
741 fcal1Eta = 0; fcal1Phi = 0; fcal1Mod = 1000000;
742 initialFCAL1 =
calcTowerID(fcal1Eta,fcal1Phi,fcal1Mod);
743 fcal0Eta = 0; fcal0Phi = 0; fcal0Mod = 800000;
744 initialFCAL0 =
calcTowerID(fcal0Eta,fcal0Phi,fcal0Mod);
745 emecEta = 15; emecPhi = 0; emecMod = 600000;
746 initialEMEC =
calcTowerID(emecEta,emecPhi,emecMod);
747 transEta = 14; transPhi = 0; transMod = 400000;
748 initialTRANS =
calcTowerID(transEta,transPhi,transMod);
749 embEta = 8; embPhi = 0; embMod = 200000;
756 std::unordered_map<int,jTower> tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2;
764 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[
i][j] = 0;
768 rows =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2 /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0];
769 cols =
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0] /
sizeof tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[0][0];
772 for(
int thisCol = 0; thisCol < 6; thisCol++){
773 for(
int thisRow=0; thisRow<
rows; thisRow++){
774 int towerid = initialEMB + ( (thisCol) * 64) + thisRow;
776 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
777 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
783 for(
int thisRow = 0; thisRow <
rows; thisRow++){
784 int towerid = initialTRANS + thisRow;
786 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][6] = towerid;
787 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
792 for(
int thisCol=7; thisCol<17; thisCol++){
793 for(
int thisRow=0; thisRow<
rows; thisRow++){
795 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
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))));
804 for(
int thisCol=17; thisCol<21; thisCol++){
805 for(
int thisRow=0; thisRow<
rows/2; thisRow++){
807 int towerid = initialEMEC + ((thisCol-7) * 64) + thisRow;
809 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
810 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
818 for(
int thisCol=21; thisCol<33; thisCol++){
819 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
821 int towerid = initialFCAL0 + ((thisCol-21) * 64) + thisRow;
823 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
824 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
832 for(
int thisCol=33; thisCol<41; thisCol++){
833 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
835 int towerid = initialFCAL1 + ((thisCol-33) * 64) + thisRow;
837 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
838 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
846 for(
int thisCol=41; thisCol<45; thisCol++){
847 for(
int thisRow=0; thisRow<
rows/4; thisRow++){
849 int towerid = initialFCAL2 + ((thisCol-41) * 64) + thisRow;
851 tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol] = towerid;
852 tmp_jTowersColl_subset_ENDCAP_AND_EMB_AND_FCAL_2.insert( std::unordered_map<int, jTower>::value_type(towerid, *(this_jTowerContainer->
findTower(towerid))));
860 for (
int thisRow=
rows-1; thisRow>=0; thisRow--) {
861 for (
int thisCol=0; thisCol<
cols; thisCol++) {
862 int tmptowerid = tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2[thisRow][thisCol];
863 if(tmptowerid == 0)
continue;
865 const float tmptowereta = tmptower->
iEta();
866 const float tmptowerphi = tmptower->
iPhi();
867 if(thisCol !=
cols-1) {
868 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowerphi <<
"][" << tmptowereta <<
"]) ");
871 ATH_MSG_DEBUG(
"| " << tmptowerid <<
"([" << tmptowereta <<
"][" << tmptowerphi <<
"]) |");
878 ATH_CHECK(
m_jFEXSimTool->ExecuteForwardCSide(tmp_jTowersIDs_subset_ENDCAP_AND_EMB_AND_FCAL_2, inputOutputCollection, { evtTimeStamp, myDBTool->get_jJCalibParams(thisJFEX) } ));
899 auto tobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
900 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > tobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
901 tobContainer_jJ->setStore(tobAuxContainer_jJ.get());
905 auto xtobContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIContainer> ();
906 std::unique_ptr< xAOD::jFexSRJetRoIAuxContainer > xtobAuxContainer_jJ = std::make_unique<xAOD::jFexSRJetRoIAuxContainer> ();
907 xtobContainer_jJ->setStore(xtobAuxContainer_jJ.get());
914 ATH_CHECK(output_Tob_jJ.
record(std::move(tobContainer_jJ),std::move(tobAuxContainer_jJ)));
918 ATH_CHECK(output_xTob_jJ.
record(std::move(xtobContainer_jJ),std::move(xtobAuxContainer_jJ)));
922 for(
auto const & tobs: fpga) {
923 for(
size_t it = 0;
it<tobs.size();
it++) {
927 if(tobs.at(
it)->getWord() != 0) {
928 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
929 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
936 tobDec_jJ_seedET( *(output_Tob_jJ->
back()) ) = tobs.at(
it)->getSeedEt();
939 xtobDec_jJ_seedET( *(output_xTob_jJ->
back()) ) = tobs.at(
it)->getSeedEt();
945 auto tobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
946 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > tobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
947 tobContainer_jLJ->setStore(tobAuxContainer_jLJ.get());
949 auto xtobContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIContainer> ();
950 std::unique_ptr< xAOD::jFexLRJetRoIAuxContainer > xtobAuxContainer_jLJ = std::make_unique<xAOD::jFexLRJetRoIAuxContainer> ();
951 xtobContainer_jLJ->setStore(xtobAuxContainer_jLJ.get());
956 ATH_CHECK(output_Tob_jLJ.
record(std::move(tobContainer_jLJ),std::move(tobAuxContainer_jLJ)));
960 ATH_CHECK(output_xTob_jLJ.
record(std::move(xtobContainer_jLJ),std::move(xtobAuxContainer_jLJ)));
966 for(
auto const& tobs: fpga) {
967 for(
size_t it = 0;
it<tobs.size();
it++) {
971 if(tobs.at(
it)->getWord() != 0) {
972 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
973 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
986 auto tobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
987 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > tobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
988 tobContainer_jTau->setStore(tobAuxContainer_jTau.get());
990 auto xtobContainer_jTau = std::make_unique<xAOD::jFexTauRoIContainer> ();
991 std::unique_ptr< xAOD::jFexTauRoIAuxContainer > xtobAuxContainer_jTau = std::make_unique<xAOD::jFexTauRoIAuxContainer> ();
992 xtobContainer_jTau->setStore(xtobAuxContainer_jTau.get());
996 ATH_CHECK(output_Tob_jTau.
record(std::move(tobContainer_jTau),std::move(tobAuxContainer_jTau)));
1000 ATH_CHECK(output_xTob_jTau.
record(std::move(xtobContainer_jTau),std::move(xtobAuxContainer_jTau)));
1004 for(
auto const& tobs : fpga){
1005 for(
size_t it = 0;
it<tobs.size();
it++) {
1009 if(tobs.at(
it)->getWord() != 0){
1010 eta = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centreEta();
1011 phi = (this_jTowerContainer->
findTower( tobs.at(
it)->getTTID() ))->centrephi_toPI();
1026 auto tobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1027 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > tobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1028 tobContainer_jEM->setStore(tobAuxContainer_jEM.get());
1030 auto xtobContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIContainer> ();
1031 std::unique_ptr< xAOD::jFexFwdElRoIAuxContainer > xtobAuxContainer_jEM = std::make_unique<xAOD::jFexFwdElRoIAuxContainer> ();
1032 xtobContainer_jEM->setStore(xtobAuxContainer_jEM.get());
1036 ATH_CHECK(output_Tob_jEM.
record(std::move(tobContainer_jEM),std::move(tobAuxContainer_jEM)));
1040 ATH_CHECK(output_xTob_jEM.
record(std::move(xtobContainer_jEM),std::move(xtobAuxContainer_jEM)));
1044 const int fpga_map[4]={0,1,3,2};
1046 for(
auto &FPGA_tob : MODULE_tobs) {
1048 ATH_MSG_ERROR(
"FPGA larger than 4 in Forward electron EDM!");
1051 for(
size_t it = 0;
it<FPGA_tob.size();
it++) {
1055 if(FPGA_tob.at(
it).at(1) != 0) {
1056 eta = (this_jTowerContainer->
findTower(FPGA_tob.at(
it).at(1)))->centreEta();
1057 phi = (this_jTowerContainer->
findTower(FPGA_tob.at(
it).at(1)))->centrephi_toPI();
1062 ATH_CHECK(
fillFwdElEDM(jfex,fpga_map[fpgaNum], FPGA_tob.at(
it).at(0),istob, jFwdElResolution, eta, phi, output_Tob_jEM));
1064 ATH_CHECK(
fillFwdElEDM(jfex,fpga_map[fpgaNum], FPGA_tob.at(
it).at(0),istob, jFwdElResolution, eta, phi, output_xTob_jEM));
1072 auto tobContainer_jTE = std::make_unique<xAOD::jFexSumETRoIContainer> ();
1073 std::unique_ptr< xAOD::jFexSumETRoIAuxContainer > tobAuxContainer_jTE = std::make_unique<xAOD::jFexSumETRoIAuxContainer> ();
1074 tobContainer_jTE->setStore(tobAuxContainer_jTE.get());
1078 ATH_CHECK(output_Tob_jTE.
record(std::move(tobContainer_jTE),std::move(tobAuxContainer_jTE)));
1082 for(
auto const&
t : tobs) {
1088 auto tobContainer_jXE = std::make_unique<xAOD::jFexMETRoIContainer> ();
1089 std::unique_ptr< xAOD::jFexMETRoIAuxContainer > tobAuxContainer_jXE = std::make_unique<xAOD::jFexMETRoIAuxContainer> ();
1090 tobContainer_jXE->setStore(tobAuxContainer_jXE.get());
1094 ATH_CHECK(output_Tob_jXE.
record(std::move(tobContainer_jXE),std::move(tobAuxContainer_jXE)));
1098 for(
auto const&
t : tobs) {
1110 return StatusCode::SUCCESS;
1120 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1122 ATH_MSG_DEBUG(
" setting SRJet jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1124 return StatusCode::SUCCESS;
1133 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1135 ATH_MSG_DEBUG(
" setting tau jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1137 return StatusCode::SUCCESS;
1147 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 );
1149 return StatusCode::SUCCESS;
1157 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), istob, internalTob->getRes(), eta, phi);
1159 ATH_MSG_DEBUG(
" setting LRJet jFEX Number: " << +my_EDM->
jFexNumber() <<
" et: " << my_EDM->
et() <<
" eta: " << my_EDM->
eta() <<
" / "<< eta <<
" phi: " << my_EDM->
phi()<<
" / "<< phi );
1161 return StatusCode::SUCCESS;
1169 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), internalTob->getRes());
1173 return StatusCode::SUCCESS;
1181 my_EDM->
initialize(internalTob->getjFex(), internalTob->getFpga(), internalTob->getWord(), internalTob->getRes());
1185 return StatusCode::SUCCESS;