92 ATH_CHECK( ttl1CellContainer.
record(std::make_unique<TileTTL1CellContainer>()) );
99 uint16_t ttStatusCells[32][64];
100 uint16_t ttStatusChans[32][64];
101 float ttTimeAve[32][64];
102 float ttCorrFact[32][64];
104 auto a = std::make_unique<Arrays>();
107 for (
int i = 0; i < 32; i++) {
108 for (
int j = 0; j < 64; j++) {
111 a->ttAmp[i][j] = 0.0;
112 a->ttStatusCells[i][j] = 0;
113 a->ttStatusChans[i][j] = 0;
114 a->ttTimeAve[i][j] = 0.0;
115 a->ttCorrFact[i][j] = 1.0;
123 for (
const CaloCell* cell : *cellContainer) {
127 if (!(
m_tileID->is_tile(cell_id)))
continue;
130 if (!tilecell)
continue;
132 float cell_ene = cell->energy();
133 float cell_time = cell->time();
135 int bad_cell = tilecell->
badcell();
137 bad_chan[0] = tilecell->
badch1();
138 bad_chan[1] = tilecell->
badch2();
144 for (
int ipmt = 0; ipmt < 2; ipmt++) {
149 int sample =
m_tileID->sample(pmt_id);
158 int ieta =
m_TT_ID->eta(tt_id);
163 int iphi =
m_TT_ID->phi(tt_id);
168 if (
a->ttNpmt[ieta][iphi] > 0) {
169 a->ttAmp[ieta][iphi] += cell_ene * 0.5;
170 a->ttNpmt[ieta][iphi]++;
171 a->ttStatusCells[ieta][iphi] += (uint16_t) bad_cell;
172 a->ttStatusChans[ieta][iphi] += (uint16_t) bad_chan[ipmt];
173 a->ttTimeAve[ieta][iphi] += cell_time;
177 a->ttId[ieta][iphi] = tt_id;
178 a->ttNpmt[ieta][iphi]++;
179 a->ttAmp[ieta][iphi] = cell_ene * 0.5;
180 a->ttStatusCells[ieta][iphi] = (uint16_t) bad_cell;
181 a->ttStatusChans[ieta][iphi] = (uint16_t) bad_chan[ipmt];
182 a->ttTimeAve[ieta][iphi] = cell_time;
188 for (
int ieta = 0; ieta < 32; ieta++) {
189 for (
int iphi = 0; iphi < 64; iphi++) {
192 if (
a->ttNpmt[ieta][iphi] == 0)
continue;
194 float time_ave =
a->ttTimeAve[ieta][iphi] / ((float)
a->ttNpmt[ieta][iphi]);
197 if (
a->ttStatusChans[ieta][iphi] ==
a->ttNpmt[ieta][iphi])
199 if (
a->ttStatusCells[ieta][iphi] > 0)
201 if (
a->ttStatusChans[ieta][iphi] > 0)
204 ttl1CellContainer->push_back(std::make_unique<TileTTL1Cell>(
a->ttId[ieta][iphi],
205 a->ttAmp[ieta][iphi],
207 a->ttCorrFact[ieta][iphi],
217 return StatusCode::SUCCESS;