From 649102da19248c9f6e318e9e64d04c5d67ddd88f Mon Sep 17 00:00:00 2001 From: Sandro Wenzel Date: Wed, 30 Sep 2026 16:05:23 +0200 Subject: [PATCH] Use std::abs for floating-point values in TRD and ITS studies This fixes unqualified abs() calls on floats that resolve to the integer abs and truncate. - 11 calls in TRD TrackBasedCalib and ITS studies (Efficiency, AvgClusSize) called int abs(int) on a float. - They now call std::abs. Co-Authored-By: Claude Opus 5.5 --- .../ITS/postprocessing/studies/src/AvgClusSize.cxx | 3 ++- .../ITS/postprocessing/studies/src/Efficiency.cxx | 13 +++++++------ Detectors/TRD/calibration/src/TrackBasedCalib.cxx | 3 ++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Detectors/ITSMFT/ITS/postprocessing/studies/src/AvgClusSize.cxx b/Detectors/ITSMFT/ITS/postprocessing/studies/src/AvgClusSize.cxx index f7efae8677516..73c3103b7a95e 100644 --- a/Detectors/ITSMFT/ITS/postprocessing/studies/src/AvgClusSize.cxx +++ b/Detectors/ITSMFT/ITS/postprocessing/studies/src/AvgClusSize.cxx @@ -35,6 +35,7 @@ #include "SimulationDataFormat/MCCompLabel.h" #include "DetectorsCommonDataFormats/DetID.h" +#include #include #include #include @@ -461,7 +462,7 @@ void AvgClusSizeStudy::process(o2::globaltracking::RecoContainer& recoData) } mOutputNtupleAll->Fill(dPosACS, dNegACS, cosPA, v0R, eta, dauDCA, dPospvDCA, dNegpvDCA, v0pvDCA, alphaArm, pT, calcV0HypoMass(v0, PID::Pion, PID::Pion), calcV0HypoMass(v0, PID::Proton, PID::Pion), calcV0HypoMass(v0, PID::Pion, PID::Proton), (float)V0PdgCode); - if ((cosPA > params.cosPAmin || params.disableCosPA) && (v0R < params.Rmax || params.disableRmax) && (v0R > params.Rmin || params.disableRmin) && (dauDCA < params.prongDCAmax || params.disableProngDCAmax) && (dPospvDCA > params.dauPVDCAmin || params.disableDauPVDCAmin) && (dNegpvDCA > params.dauPVDCAmin || params.disableDauPVDCAmin) && (v0pvDCA < params.v0PVDCAmax || params.disableV0PVDCAmax) && (abs(bgV0HypoMass - backgroundV0.getMass()) > params.bgV0window || params.disableMassHypoth) && (abs(tgV0HypoMass - targetV0.getMass()) < params.tgV0window || params.disableMassHypoth)) { + if ((cosPA > params.cosPAmin || params.disableCosPA) && (v0R < params.Rmax || params.disableRmax) && (v0R > params.Rmin || params.disableRmin) && (dauDCA < params.prongDCAmax || params.disableProngDCAmax) && (dPospvDCA > params.dauPVDCAmin || params.disableDauPVDCAmin) && (dNegpvDCA > params.dauPVDCAmin || params.disableDauPVDCAmin) && (v0pvDCA < params.v0PVDCAmax || params.disableV0PVDCAmax) && (std::abs(bgV0HypoMass - backgroundV0.getMass()) > params.bgV0window || params.disableMassHypoth) && (std::abs(tgV0HypoMass - targetV0.getMass()) < params.tgV0window || params.disableMassHypoth)) { mOutputNtupleCut->Fill(dPosACS, dNegACS, cosPA, v0R, eta, dauDCA, dPospvDCA, dNegpvDCA, v0pvDCA, alphaArm, pT, calcV0HypoMass(v0, PID::Pion, PID::Pion), calcV0HypoMass(v0, PID::Proton, PID::Pion), calcV0HypoMass(v0, PID::Pion, PID::Proton), (float)V0PdgCode); if (eta > params.etaMin && eta < params.etaMax) { fillEtaBin(eta, dPosACS, 0); diff --git a/Detectors/ITSMFT/ITS/postprocessing/studies/src/Efficiency.cxx b/Detectors/ITSMFT/ITS/postprocessing/studies/src/Efficiency.cxx index f6ee014abdabd..2c84655161119 100644 --- a/Detectors/ITSMFT/ITS/postprocessing/studies/src/Efficiency.cxx +++ b/Detectors/ITSMFT/ITS/postprocessing/studies/src/Efficiency.cxx @@ -45,6 +45,7 @@ #include #include #include +#include #include #define NLAYERS 3 @@ -902,11 +903,11 @@ void EfficiencyStudy::countDuplicatedAfterCuts() o2::math_utils::Point3D clusOriginalPointGlob = mGeometry->getMatrixT2G(clusOriginal.getSensorID()) * clusOriginalPointTrack; phiOriginal = clusOriginalPointGlob.phi(); // * 180 / M_PI; - if (abs(clusOriginalPointGlob.y()) < 0.5) { ///// excluding gap between bottom and top barrels + if (std::abs(clusOriginalPointGlob.y()) < 0.5) { ///// excluding gap between bottom and top barrels continue; } - if (abs(clusOriginalPointGlob.z()) >= 10) { /// excluding external z + if (std::abs(clusOriginalPointGlob.z()) >= 10) { /// excluding external z continue; } @@ -1139,10 +1140,10 @@ void EfficiencyStudy::studyDCAcutsMC() } /// checking the DCA for 20 different sigma ranges for (int i = 0; i < 20; i++) { - if (abs(dcaXY[layerDuplicated] - clusDuplicatedDCA[0]) < (i + 1) * sigmaDcaXY[layerDuplicated] && abs(dcaZ[layerDuplicated] - clusDuplicatedDCA[1]) < (i + 1) * sigmaDcaZ[layerDuplicated]) { // check if the DCA is within the cut i*sigma + if (std::abs(dcaXY[layerDuplicated] - clusDuplicatedDCA[0]) < (i + 1) * sigmaDcaXY[layerDuplicated] && std::abs(dcaZ[layerDuplicated] - clusDuplicatedDCA[1]) < (i + 1) * sigmaDcaZ[layerDuplicated]) { // check if the DCA is within the cut i*sigma if (mVerboseOutput) { - LOGP(info, "Check DCA ok: {} < {}; {} < {}", abs(meanDCAxyDuplicated[layerDuplicated] - clusDuplicatedDCA[0]), (i + 1) * sigmaDCAxyDuplicated[layerDuplicated], abs(meanDCAzDuplicated[layerDuplicated] - clusDuplicatedDCA[1]), (i + 1) * sigmaDCAzDuplicated[layerDuplicated]); + LOGP(info, "Check DCA ok: {} < {}; {} < {}", std::abs(meanDCAxyDuplicated[layerDuplicated] - clusDuplicatedDCA[0]), (i + 1) * sigmaDCAxyDuplicated[layerDuplicated], std::abs(meanDCAzDuplicated[layerDuplicated] - clusDuplicatedDCA[1]), (i + 1) * sigmaDCAzDuplicated[layerDuplicated]); } nDCAMatches[i]++; bool isGoodMatch = false; @@ -2279,11 +2280,11 @@ void EfficiencyStudy::getEfficiency(bool isMC) o2::math_utils::Point3D clusOriginalPointGlob = mGeometry->getMatrixT2G(clusOriginal.getSensorID()) * clusOriginalPointTrack; phiOriginal = clusOriginalPointGlob.phi(); // * 180 / M_PI; - if (abs(clusOriginalPointGlob.y()) < 0.5) { ///// excluding gap between bottom and top barrels + if (std::abs(clusOriginalPointGlob.y()) < 0.5) { ///// excluding gap between bottom and top barrels continue; } - if (abs(clusOriginalPointGlob.z()) >= 10) { /// excluding external z + if (std::abs(clusOriginalPointGlob.z()) >= 10) { /// excluding external z continue; } diff --git a/Detectors/TRD/calibration/src/TrackBasedCalib.cxx b/Detectors/TRD/calibration/src/TrackBasedCalib.cxx index cd2f8ad7f8594..eeb0baba87bde 100644 --- a/Detectors/TRD/calibration/src/TrackBasedCalib.cxx +++ b/Detectors/TRD/calibration/src/TrackBasedCalib.cxx @@ -25,6 +25,7 @@ #include "CommonConstants/GeomConstants.h" #include "DataFormatsTPC/TrackTPC.h" #include "ReconstructionDataFormats/TrackTPCITS.h" +#include #include using namespace o2::trd; @@ -149,7 +150,7 @@ int TrackBasedCalib::filldEdx(gsl::span& tracks, bool isTPCTRD) float tgl = trkIn.getTgl(); float snp = trkIn.getSnpAt(o2::math_utils::sector2Angle(trkltSec), trackletCalib.getX(), bz); - if (abs(snp) > 1.) { + if (std::abs(snp) > 1.) { continue; }