106 bool tileThresh =
m_tileInfo->TileZeroSuppress();
111 <<
", iTrig=" << iTrig
112 <<
", tileNoise=" << ((tileNoise) ?
"true" :
"false")
113 <<
", tileThresh=" << ((tileThresh) ?
"true" :
"false") );
123 ATH_CHECK( ttl1Container.
record(std::make_unique<TileTTL1Container>()) );
138 float ttAmpTotIg = 0.;
139 int minieta, maxieta, posneg;
142 std::vector<float> ttL1samples(nSamp);
175 posneg = minieta = maxieta = 0;
179 memset(ttDigit, 0,
sizeof(ttDigit));
180 std::vector<std::vector<float> > myttAmp(16);
181 for (
int ii = 0; ii < 16; ++ii)
182 myttAmp[ii].resize(nSamp);
184 nTT = nIgnore = nDigit = 0;
188 for (
const TileDigits* tile_digits : *digitsCollection) {
191 std::vector<float> samples = tile_digits->samples();
194 int nSamp2 = samples.size();
195 if (nSamp2 != nSamp) {
197 <<
" nSamp from digits= " << nSamp2 );
204 float pedestal = samples[0];
205 for (
int jsamp = 0; jsamp < nSamp; ++jsamp) {
217 int ieta =
m_TT_ID->eta(tt_id);
218 int iphi =
m_TT_ID->phi(tt_id);
223 for (
int jsamp = 0; jsamp < nSamp; ++jsamp) {
224 myttAmp[ieta][jsamp] += samples[jsamp];
228 ttDigit[ieta] =
true;
229 for (
int jsamp = 0; jsamp < nSamp; ++jsamp) {
230 myttAmp[ieta][jsamp] = samples[jsamp];
232 if (ieta >= minieta && ieta <= maxieta)
236 if (ieta < minieta || ieta > maxieta)
244 if (ieta >= minieta && ieta <= maxieta) {
250 if (
msgLvl(MSG::VERBOSE)) {
253 int tower =
m_tileID->tower(pmt_id);
254 int sample =
m_tileID->sample(pmt_id);
258 msg(MSG::VERBOSE) <<
"New Digit:"
260 <<
", drawer=" << drawer
261 <<
", ch=" << channel
263 <<
", tower=" << tower
264 <<
", sample=" << sample
270 if (ieta >= minieta && ieta <= maxieta)
273 msg(MSG::VERBOSE) <<
" Outside limits" <<
endmsg;
283 nIgnoreTot += nIgnore;
287 <<
", drawer=" << drawer
288 <<
"; posneg=" << posneg
289 <<
", minieta=" << minieta
290 <<
", maxieta=" << maxieta
292 <<
", nDigit=" << nDigit
293 <<
", nIgnore=" << nIgnore );
299 for (
int ieta = minieta; ieta <= maxieta; ++ieta) {
301 bool Good = ttDigit[ieta];
307 ttId[ieta] =
m_TT_ID->tower_id(posneg, 1, 0, ieta, drawer);
309 float ttL1Calib =
m_tileInfo->TTL1Calib(ttId[ieta]);
310 for (
int jsamp = 0; jsamp < nSamp; ++jsamp) {
311 myttAmp[ieta][jsamp] *= ttL1Calib;
316 CLHEP::RandGauss::shootArray(nSamp, Rndm);
317 float ttL1Ped =
m_tileInfo->TTL1Ped(ttId[ieta]);
318 float ttL1NoiseSigma =
m_tileInfo->TTL1NoiseSigma(ttId[ieta]);
319 for (
int jsamp = 0; jsamp < nSamp; ++jsamp) {
320 ttL1samples[jsamp] = myttAmp[ieta][jsamp] + ttL1Ped;
322 ttL1samples[jsamp] += ttL1NoiseSigma * Rndm[jsamp];
325 float ttL1Thresh =
m_tileInfo->TTL1Thresh(ttId[ieta]);
326 if (ttL1samples[iTrig] - ttL1Ped < ttL1Thresh)
336 <<
", digitTrue=" << ttDigit[ieta]
338 <<
", amp0=" << myttAmp[ieta][iTrig]
339 <<
", digitIn=" << ttL1samples[iTrig] );
360 ttl1Container->push_back(std::make_unique<TileTTL1>(ttId[ieta], ttL1samples));
369 <<
" nDigitTot=" << nDigitTot
370 <<
" nIgnoreTot=" << nIgnoreTot
371 <<
" ttAmpTot=" << ttAmpTot
372 <<
" ttAmpTotIg=" << ttAmpTotIg
373 <<
" =>eneTot=" << ttAmpTot + ttAmpTotIg );
375 return StatusCode::SUCCESS;