29 ATH_CHECK(m_eTowerContainerKey.initialize());
32 return StatusCode::SUCCESS;
38 std::copy(&inputTable[0][0], &inputTable[0][0] + 9, &m_eFexalgoTowerID[0][0]);
40 buildLayers(efex_id, fpga_id, central_eta);
46 std::unique_ptr<eFEXtauTOB> tob = std::make_unique<eFEXtauTOB>();
47 unsigned int et = getEt();
54 tob->
setIso(getRealRCore());
63 if (m_cellsSet ==
false) {
64 ATH_MSG_DEBUG(
"Layers not built, cannot accurately calculate Et.");
69 out += m_em0cells[0][1];
71 if (m_AlgoVersion==0){
72 out += m_em0cells[1][1];
73 out += m_em0cells[2][1];
74 out += m_em0cells[0][m_offPhi];
75 out += m_em0cells[1][m_offPhi];
76 out += m_em0cells[2][m_offPhi];
79 out += m_em1cells[m_seed][1];
80 out += m_em1cells[m_seed + 1][1];
81 out += m_em1cells[m_seed + 2][1];
82 out += m_em1cells[m_seed - 1][1];
83 out += m_em1cells[m_seed - 2][1];
84 out += m_em1cells[m_seed][m_offPhi];
85 out += m_em1cells[m_seed + 1][m_offPhi];
86 out += m_em1cells[m_seed + 2][m_offPhi];
87 out += m_em1cells[m_seed - 1][m_offPhi];
88 out += m_em1cells[m_seed - 2][m_offPhi];
90 out += m_em2cells[m_seed][1];
91 out += m_em2cells[m_seed + 1][1];
92 out += m_em2cells[m_seed + 2][1];
93 out += m_em2cells[m_seed - 1][1];
94 out += m_em2cells[m_seed - 2][1];
95 out += m_em2cells[m_seed][m_offPhi];
96 out += m_em2cells[m_seed + 1][m_offPhi];
97 out += m_em2cells[m_seed + 2][m_offPhi];
98 out += m_em2cells[m_seed - 1][m_offPhi];
99 out += m_em2cells[m_seed - 2][m_offPhi];
101 out += m_em3cells[0][1];
102 out += m_em3cells[1][1];
103 out += m_em3cells[2][1];
104 out += m_em3cells[0][m_offPhi];
105 out += m_em3cells[1][m_offPhi];
106 out += m_em3cells[2][m_offPhi];
108 out += m_hadcells[0][1];
109 out += m_hadcells[1][1];
110 out += m_hadcells[2][1];
111 out += m_hadcells[0][m_offPhi];
112 out += m_hadcells[1][m_offPhi];
113 out += m_hadcells[2][m_offPhi];
123 if (m_cellsSet ==
false) {
124 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rCore core value");
127 unsigned int out = 0;
129 out += m_em2cells[m_seed][1];
130 out += m_em2cells[m_seed + 1][1];
131 out += m_em2cells[m_seed - 1][1];
132 out += m_em2cells[m_seed][m_offPhi];
133 out += m_em2cells[m_seed + 1][m_offPhi];
134 out += m_em2cells[m_seed - 1][m_offPhi];
144 if (m_cellsSet ==
false) {
145 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rCore environment value");
148 unsigned int out = 0;
150 out += m_em2cells[m_seed + 2][1];
151 out += m_em2cells[m_seed - 2][1];
152 out += m_em2cells[m_seed + 3][1];
153 out += m_em2cells[m_seed - 3][1];
154 out += m_em2cells[m_seed + 4][1];
155 out += m_em2cells[m_seed - 4][1];
156 out += m_em2cells[m_seed + 2][m_offPhi];
157 out += m_em2cells[m_seed - 2][m_offPhi];
158 out += m_em2cells[m_seed + 3][m_offPhi];
159 out += m_em2cells[m_seed - 3][m_offPhi];
160 out += m_em2cells[m_seed + 4][m_offPhi];
161 out += m_em2cells[m_seed - 4][m_offPhi];
171 if (m_cellsSet ==
false) {
172 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rHad core value");
175 unsigned int out = 0;
177 out += m_hadcells[0][1];
178 out += m_hadcells[1][1];
179 out += m_hadcells[2][1];
180 out += m_hadcells[0][m_offPhi];
181 out += m_hadcells[1][m_offPhi];
182 out += m_hadcells[2][m_offPhi];
192 if (m_cellsSet ==
false) {
193 ATH_MSG_DEBUG(
"Layers not built, cannot calculate rHad environment value");
196 unsigned int out = 0;
198 out += m_em2cells[m_seed][1];
199 out += m_em2cells[m_seed - 1][1];
200 out += m_em2cells[m_seed + 1][1];
201 out += m_em2cells[m_seed - 2][1];
202 out += m_em2cells[m_seed + 2][1];
203 out += m_em2cells[m_seed][m_offPhi];
204 out += m_em2cells[m_seed - 1][m_offPhi];
205 out += m_em2cells[m_seed + 1][m_offPhi];
206 out += m_em2cells[m_seed - 2][m_offPhi];
207 out += m_em2cells[m_seed + 2][m_offPhi];
208 out += m_em1cells[m_seed][1];
209 out += m_em1cells[m_seed - 1][1];
210 out += m_em1cells[m_seed + 1][1];
211 out += m_em1cells[m_seed][m_offPhi];
212 out += m_em1cells[m_seed - 1][m_offPhi];
213 out += m_em1cells[m_seed + 1][m_offPhi];
224 if (m_cellsSet ==
false) {
225 ATH_MSG_DEBUG(
"Layers not built, cannot accurately set phi direction.");
228 unsigned int upwardEt = m_em2cells[m_seed][2];
229 unsigned int downwardEt = m_em2cells[m_seed][0];
231 if (m_AlgoVersion==3){
232 upwardEt = m_em1cells[m_seed][2];
233 downwardEt = m_em1cells[m_seed][0];
236 if (downwardEt > upwardEt) {
248 std::vector<unsigned int> &RcoreSums,
249 std::vector<unsigned int> &RemSums) {
262 unsigned int seed = 7;
265 for (
unsigned int i = 7;
i > 3; --
i) {
266 cell_et = m_em2cells[
i][1];
268 if (m_AlgoVersion==3){
269 cell_et = m_em1cells[
i][1];
271 if (cell_et > max_et) {
282 unsigned int out = 0;