7 #include "AthLinks/ElementLink.h"
51 return StatusCode::SUCCESS;
65 cells = cellsHandle.ptr();
71 triggerTowers = triggerTowersHandle.ptr();
75 auto towers = std::make_unique<xAOD::JGTowerContainer>();
76 auto towersAux = std::make_unique<xAOD::JGTowerAuxContainer>();
77 towers->setStore(towersAux.get());
83 return StatusCode::FAILURE;
93 if (triggerTower->sampling() != towerHelper.sampling() && std::abs(towerHelper.Eta()) < 3.1)
95 if (!towerHelper.inBox(triggerTower->eta(), triggerTower->phi()))
97 tileEt += 500 * triggerTower->cpET();
103 for (
unsigned int scIdx : towerHelper.GetSCIndices())
107 const CaloCell *superCell = superCells->findCell(scHash);
111 float et = superCell->
et();
112 float time = superCell->
time();
113 if (std::isnan(superCell->
et()))
115 ATH_MSG_ERROR(
"Supercell ET is nan. Likely due to BCID correction or something else upstream");
119 (
et < 10
e3 && std::abs(time) > 8) ||
120 (
et >= 10
e3 && (time > 16 || time < -8)))
134 if (towerHelper.sampling() == 1)
137 for (
unsigned int tileIdx : towerHelper.GetTileIndices())
143 tileEt +=
cell->e() *
cell->sinTh();
147 if (std::abs(triggerTower->eta()) < 1.5) {
148 if (triggerTower->sampling() == 1 &&
149 towerHelper.inBox(triggerTower->eta(), triggerTower->phi()))
150 tileEt += 500 * triggerTower->cpET();
155 float towerEt = LArEt + tileEt;
160 tower->
initialize(
towers->size() - 1, towerHelper.Eta(), towerHelper.Phi());
161 tower->
setdEta(towerHelper.dEta());
162 tower->
setdPhi(towerHelper.dPhi());
163 tower->
setEt(towerEt);
164 tower->
setSCIndex(towerHelper.GetSCIndices());
167 decArea(*tower) = towerHelper.area();
169 decNextEtaIndex(*tower) = towerHelper.nextEtaIndex();
170 decPreviousEtaIndex(*tower) = towerHelper.previousEtaIndex();
171 decNextPhiIndex(*tower) = towerHelper.nextPhiIndex();
172 decPreviousPhiIndex(*tower) = towerHelper.previousPhiIndex();
173 decIndexInFront(*tower) = towerHelper.indexInFront();
174 decIndexBehind(*tower) = towerHelper.indexBehind();
177 ATH_CHECK(towerHandle.record(std::move(
towers), std::move(towersAux)));
178 return StatusCode::SUCCESS;