From ecb5f306a194fdeec60f5d782d70e58318e8b20c Mon Sep 17 00:00:00 2001 From: Matthias Kleiner Date: Fri, 12 Jun 2026 16:20:34 +0200 Subject: [PATCH 1/2] TPC: clamp zOut to TPC length - use maxZ2X from SpacePointsCalibConfParam --- .../TPC/calibration/SpacePoints/src/TrackResiduals.cxx | 6 ++++-- .../calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Detectors/TPC/calibration/SpacePoints/src/TrackResiduals.cxx b/Detectors/TPC/calibration/SpacePoints/src/TrackResiduals.cxx index d3db11daf9e87..b49fb22b41c8f 100644 --- a/Detectors/TPC/calibration/SpacePoints/src/TrackResiduals.cxx +++ b/Detectors/TPC/calibration/SpacePoints/src/TrackResiduals.cxx @@ -133,10 +133,12 @@ void TrackResiduals::setZ2XBinning(const std::vector& binning) mZ2XBinsDH.clear(); mZ2XBinsDI.clear(); mZ2XBinsCenter.clear(); + const float maxZ2X = SpacePointsCalibConfParam::Instance().maxZ2X; + LOGP(info, "Using maxZ2X {} for setZ2XBinning", maxZ2X); for (int iBin = 0; iBin < nBins; ++iBin) { - mZ2XBinsDH.push_back(.5f * (binning[iBin + 1] - binning[iBin]) * mMaxZ2X); + mZ2XBinsDH.push_back(.5f * (binning[iBin + 1] - binning[iBin]) * maxZ2X); mZ2XBinsDI.push_back(.5f / mZ2XBinsDH[iBin]); - mZ2XBinsCenter.push_back(binning[iBin] * mMaxZ2X + mZ2XBinsDH[iBin]); + mZ2XBinsCenter.push_back(binning[iBin] * maxZ2X + mZ2XBinsDH[iBin]); LOGF(info, "Bin %i: center (%.3f), half bin width (%.3f)", iBin, mZ2XBinsCenter.back(), mZ2XBinsDH.back()); } } diff --git a/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx b/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx index 5a26dabaa2db5..0cd0ac769dab3 100644 --- a/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx +++ b/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx @@ -497,7 +497,7 @@ std::unique_ptr TPCFastSpaceChargeCorrect double yMax = rowX * trackResiduals.getY2X(iRow, trackResiduals.getNY2XBins() - 1); double zMin = rowX * trackResiduals.getZ2X(0); double zMax = rowX * trackResiduals.getZ2X(trackResiduals.getNZ2XBins() - 1); - double zOut = zMax; + double zOut = std::min(zMax, (double)geo.getTPCzLength()); // clamp to physical TPC extent to avoid negative spline scale info.gridMeasured.set(yMin, spline.getGridX1().getUmax() / (yMax - yMin), // y zMin, spline.getGridX2().getUmax() / (zMax - zMin), // z zOut, geo.getTPCzLength()); // correction scaling region From b292e3fd1714aaac24e18275edeedf58a054340a Mon Sep 17 00:00:00 2001 From: Matthias Kleiner Date: Fri, 12 Jun 2026 16:32:20 +0200 Subject: [PATCH 2/2] fix clang format --- .../TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx b/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx index 0cd0ac769dab3..fa2f8434f80ee 100644 --- a/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx +++ b/Detectors/TPC/calibration/src/TPCFastSpaceChargeCorrectionHelper.cxx @@ -497,7 +497,7 @@ std::unique_ptr TPCFastSpaceChargeCorrect double yMax = rowX * trackResiduals.getY2X(iRow, trackResiduals.getNY2XBins() - 1); double zMin = rowX * trackResiduals.getZ2X(0); double zMax = rowX * trackResiduals.getZ2X(trackResiduals.getNZ2XBins() - 1); - double zOut = std::min(zMax, (double)geo.getTPCzLength()); // clamp to physical TPC extent to avoid negative spline scale + double zOut = std::min(zMax, (double)geo.getTPCzLength()); // clamp to physical TPC extent to avoid negative spline scale info.gridMeasured.set(yMin, spline.getGridX1().getUmax() / (yMax - yMin), // y zMin, spline.getGridX2().getUmax() / (zMax - zMin), // z zOut, geo.getTPCzLength()); // correction scaling region