27 ATH_CHECK(m_eTowerContainerKey.initialize());
30 return StatusCode::SUCCESS;
36 std::copy(&inputTable[0][0], &inputTable[0][0] + 9, &m_eFexalgoTowerID[0][0]);
38 buildLayers(efex_id, fpga_id, central_eta);
44 std::unique_ptr<eFEXtauTOB> tob = std::make_unique<eFEXtauTOB>();
45 unsigned int et = getEt();
52 tob->
setIso(getRealRCore());
56 setSCellEncoder(tob.get());
62 if (m_cellsSet ==
false) {
63 ATH_MSG_DEBUG(
"Layers not built, cannot accurately calculate Et.");
68 out += m_em0cells[0][1];
69 out += m_em0cells[1][1];
70 out += m_em0cells[2][1];
71 out += m_em0cells[0][m_offPhi];
72 out += m_em0cells[1][m_offPhi];
73 out += m_em0cells[2][m_offPhi];
75 out += m_em1cells[m_seed][1];
76 out += m_em1cells[m_seed + 1][1];
77 out += m_em1cells[m_seed + 2][1];
78 out += m_em1cells[m_seed - 1][1];
79 out += m_em1cells[m_seed - 2][1];
80 out += m_em1cells[m_seed][m_offPhi];
81 out += m_em1cells[m_seed + 1][m_offPhi];
82 out += m_em1cells[m_seed + 2][m_offPhi];
83 out += m_em1cells[m_seed - 1][m_offPhi];
84 out += m_em1cells[m_seed - 2][m_offPhi];
86 out += m_em2cells[m_seed][1];
87 out += m_em2cells[m_seed + 1][1];
88 out += m_em2cells[m_seed + 2][1];
89 out += m_em2cells[m_seed - 1][1];
90 out += m_em2cells[m_seed - 2][1];
91 out += m_em2cells[m_seed][m_offPhi];
92 out += m_em2cells[m_seed + 1][m_offPhi];
93 out += m_em2cells[m_seed + 2][m_offPhi];
94 out += m_em2cells[m_seed - 1][m_offPhi];
95 out += m_em2cells[m_seed - 2][m_offPhi];
97 out += m_em3cells[0][1];
98 out += m_em3cells[1][1];
99 out += m_em3cells[2][1];
100 out += m_em3cells[0][m_offPhi];
101 out += m_em3cells[1][m_offPhi];
102 out += m_em3cells[2][m_offPhi];
104 out += m_hadcells[0][1];
105 out += m_hadcells[1][1];
106 out += m_hadcells[2][1];
107 out += m_hadcells[0][m_offPhi];
108 out += m_hadcells[1][m_offPhi];
109 out += m_hadcells[2][m_offPhi];
119 if (m_cellsSet ==
false) {
120 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rCore core value");
123 unsigned int out = 0;
125 out += m_em2cells[m_seed][1];
126 out += m_em2cells[m_seed + 1][1];
127 out += m_em2cells[m_seed - 1][1];
128 out += m_em2cells[m_seed][m_offPhi];
129 out += m_em2cells[m_seed + 1][m_offPhi];
130 out += m_em2cells[m_seed - 1][m_offPhi];
140 if (m_cellsSet ==
false) {
141 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rCore environment value");
144 unsigned int out = 0;
146 out += m_em2cells[m_seed + 2][1];
147 out += m_em2cells[m_seed - 2][1];
148 out += m_em2cells[m_seed + 3][1];
149 out += m_em2cells[m_seed - 3][1];
150 out += m_em2cells[m_seed + 4][1];
151 out += m_em2cells[m_seed - 4][1];
152 out += m_em2cells[m_seed + 2][m_offPhi];
153 out += m_em2cells[m_seed - 2][m_offPhi];
154 out += m_em2cells[m_seed + 3][m_offPhi];
155 out += m_em2cells[m_seed - 3][m_offPhi];
156 out += m_em2cells[m_seed + 4][m_offPhi];
157 out += m_em2cells[m_seed - 4][m_offPhi];
167 if (m_cellsSet ==
false) {
168 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rHad core value");
171 unsigned int out = 0;
173 out += m_hadcells[0][1];
174 out += m_hadcells[1][1];
175 out += m_hadcells[2][1];
176 out += m_hadcells[0][m_offPhi];
177 out += m_hadcells[1][m_offPhi];
178 out += m_hadcells[2][m_offPhi];
188 if (m_cellsSet ==
false) {
189 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rHad environment value");
192 unsigned int out = 0;
194 out += m_em2cells[m_seed][1];
195 out += m_em2cells[m_seed - 1][1];
196 out += m_em2cells[m_seed + 1][1];
197 out += m_em2cells[m_seed - 2][1];
198 out += m_em2cells[m_seed + 2][1];
199 out += m_em2cells[m_seed][m_offPhi];
200 out += m_em2cells[m_seed - 1][m_offPhi];
201 out += m_em2cells[m_seed + 1][m_offPhi];
202 out += m_em2cells[m_seed - 2][m_offPhi];
203 out += m_em2cells[m_seed + 2][m_offPhi];
204 out += m_em1cells[m_seed][1];
205 out += m_em1cells[m_seed - 1][1];
206 out += m_em1cells[m_seed + 1][1];
207 out += m_em1cells[m_seed][m_offPhi];
208 out += m_em1cells[m_seed - 1][m_offPhi];
209 out += m_em1cells[m_seed + 1][m_offPhi];
220 if (m_cellsSet ==
false) {
221 ATH_MSG_DEBUG(
"Layers not built, cannot accurately set phi direction.");
224 unsigned int upwardEt = m_em2cells[m_seed][2];
226 unsigned int downwardEt = m_em2cells[m_seed][0];
228 if (downwardEt > upwardEt) {
240 std::vector<unsigned int> &RcoreSums,
241 std::vector<unsigned int> &RemSums) {
254 unsigned int seed = 7;
257 for (
unsigned int i = 7;
i > 3; --
i) {
258 cell_et = m_em2cells[
i][1];
259 if (cell_et > max_et) {
270 unsigned int out = 0;