92 ATH_CHECK( ttl1CellContainer.
record(std::make_unique<TileTTL1CellContainer>()) );
96 int ttNpmt[32][64] = {{0}};
98 float ttAmp[32][64] = {{0}};
99 uint16_t ttStatusCells[32][64] = {{0}};
100 uint16_t ttStatusChans[32][64] = {{0}};
101 float ttTimeAve[32][64] = {{0}};
102 float ttCorrFact[32][64] = {{0}};
104 auto a = std::make_unique<Arrays>();
107 for (
int i = 0; i < 32; i++) {
108 for (
int j = 0; j < 64; j++) {
109 a->ttCorrFact[i][j] = 1.0;
117 for (
const CaloCell* cell : *cellContainer) {
121 if (!(
m_tileID->is_tile(cell_id)))
continue;
124 if (!tilecell)
continue;
126 float cell_ene = cell->energy();
127 float cell_time = cell->time();
129 int bad_cell = tilecell->
badcell();
131 bad_chan[0] = tilecell->
badch1();
132 bad_chan[1] = tilecell->
badch2();
138 for (
int ipmt = 0; ipmt < 2; ipmt++) {
143 int sample =
m_tileID->sample(pmt_id);
152 int ieta =
m_TT_ID->eta(tt_id);
157 int iphi =
m_TT_ID->phi(tt_id);
162 if (
a->ttNpmt[ieta][iphi] > 0) {
163 a->ttAmp[ieta][iphi] += cell_ene * 0.5;
164 a->ttNpmt[ieta][iphi]++;
165 a->ttStatusCells[ieta][iphi] += (uint16_t) bad_cell;
166 a->ttStatusChans[ieta][iphi] += (uint16_t) bad_chan[ipmt];
167 a->ttTimeAve[ieta][iphi] += cell_time;
171 a->ttId[ieta][iphi] = tt_id;
172 a->ttNpmt[ieta][iphi]++;
173 a->ttAmp[ieta][iphi] = cell_ene * 0.5;
174 a->ttStatusCells[ieta][iphi] = (uint16_t) bad_cell;
175 a->ttStatusChans[ieta][iphi] = (uint16_t) bad_chan[ipmt];
176 a->ttTimeAve[ieta][iphi] = cell_time;
182 for (
int ieta = 0; ieta < 32; ieta++) {
183 for (
int iphi = 0; iphi < 64; iphi++) {
186 if (
a->ttNpmt[ieta][iphi] == 0)
continue;
188 float time_ave =
a->ttTimeAve[ieta][iphi] / ((float)
a->ttNpmt[ieta][iphi]);
191 if (
a->ttStatusChans[ieta][iphi] ==
a->ttNpmt[ieta][iphi])
193 if (
a->ttStatusCells[ieta][iphi] > 0)
195 if (
a->ttStatusChans[ieta][iphi] > 0)
198 ttl1CellContainer->push_back(std::make_unique<TileTTL1Cell>(
a->ttId[ieta][iphi],
199 a->ttAmp[ieta][iphi],
201 a->ttCorrFact[ieta][iphi],
211 return StatusCode::SUCCESS;