55 int lastTime =
digits.front().getTimeStamp();
60 float kAmp = std::abs(mITMultFactor) * 0.1276;
61 if (mITMultFactor < 0) {
62 kAmp = kAmp / (1 + kAmp);
66 float tailSlopeUnit = std::exp(-kTime);
68 for (
auto& digit :
digits) {
69 const auto sector =
CRU(digit.getCRU()).
sector();
70 const auto row = digit.getRow();
71 const auto pad = digit.getPad();
72 const auto time = digit.getTimeStamp();
75 kAmp = mFraction->getValue(sector,
row, pad) * std::abs(mITMultFactor);
76 if (mITMultFactor < 0) {
77 kAmp = kAmp / (1 + kAmp);
81 tailSlopeUnit = mExpLambda->getValue(sector,
row, pad);
82 kTime = -std::log(tailSlopeUnit);
86 if (
row != lastRow || pad != lastPad) {
92 while (lastTime + 1 <
time) {
93 auto origCuml = cumul;
94 cumul *= tailSlopeUnit;
97 streamData(digit.getCRU(),
row, pad,
time, lastTime, kAmp, kTime, tailSlopeUnit, origCuml, cumul, 0, 0);
108 const auto origCharge = digit.getChargeFloat();
109 const auto charge = origCharge + mSign * kAmp * (1 - tailSlopeUnit) * cumul;
112 const auto origCuml = cumul;
114 cumul *= tailSlopeUnit;
117 streamData(digit.getCRU(),
row, pad,
time, lastTime, kAmp, kTime, tailSlopeUnit, origCuml, cumul, origCharge,
charge);
void streamData(int cru, int row, int pad, int time, int lastTime, float kAmp, float kTime, float tailSlopeUnit, float origCumul, float cumul, float origCharge, float charge)