46 LOGP(warn,
"Nullptr detected in setting the correction maps");
50 mCorrAvg->cloneFromObject(*avg,
nullptr);
51 mCorrAvg->rectifyAfterReadingFromFile();
54 mCorrDer->cloneFromObject(*der,
nullptr);
55 mCorrDer->rectifyAfterReadingFromFile();
57 mCorrAvg->setApplyCorrectionOn();
58 mCorrDer->setApplyCorrectionOn();
87 const float ly = mTPCGeometry.LinearPad2Y(sector,
padrow, pad);
95 mCorrAvg->Transform(sector, row1, pad,
time, lxT_1, lyT_1, lzT_1, 0, mCorrDer.get(),
nullptr, mScaleDer, 0, 1);
98 lyT_1 += ly - mTPCGeometry.LinearPad2Y(sector, row1, pad);
101 const float r_1_f = std::sqrt(lxT_1 * lxT_1 + lyT_1 * lyT_1);
107 const unsigned char pad0 = std::clamp(
static_cast<int>(pad), 0, mTPCGeometry.NPads(row0) - 1);
111 mCorrAvg->Transform(sector, row0, pad0,
time, lxT_0, lyT_0, lzT_0, 0, mCorrDer.get(),
nullptr, mScaleDer, 0, 1);
114 lyT_0 += ly - mTPCGeometry.LinearPad2Y(sector, row0, pad0);
117 const float r_0_f = std::sqrt(lxT_0 * lxT_0 + lyT_0 * lyT_0);
120 const float dr_f = r_1_f - r_0_f;
123 const float x_0 =
padrow - 0.5;
124 const float x_1 =
padrow + 0.5;
127 const int deltaRow = (row1 - row0);
128 const float d_StartPad = (r_0_f * (row1 - x_0) + r_1_f * (x_0 - row0)) / deltaRow;
129 const float d_EndPad = (r_0_f * (row1 - x_1) + r_1_f * (x_1 - row0)) / deltaRow;
130 const float scCorr = (d_EndPad - d_StartPad) / mTPCGeometry.PadHeight(
padrow);
133 const bool isOk = ((lxT_1 < mLX0Min) || (lxT_0 < mLX1Min) || (scCorr < mScCorrMin) || (scCorr > mScCorrMax)) ?
false :
true;
137 const float lx = mTPCGeometry.Row2X(
padrow);
143 mCorrAvg->Transform(sector,
padrow, pad,
time, lxT, lyT, lzT, 0, mCorrDer.get(),
nullptr, mScaleDer, 0, 1);
145 (*mStreamer) <<
"tree"
146 <<
"sector=" << sector
164 <<
"d_StartPad=" << d_StartPad
165 <<
"d_EndPad=" << d_EndPad
168 <<
"scCorr=" << scCorr
173 return isOk ? scCorr : 1;