From c508a2eb616358262ca6784a9b214c1250c65949 Mon Sep 17 00:00:00 2001 From: Anton Riedel Date: Fri, 31 Oct 2025 12:54:01 +0100 Subject: [PATCH 1/6] Feat: update cpr --- PWGCF/Femto/Core/closePairRejection.h | 83 ++++++----- PWGCF/Femto/Core/dataTypes.h | 5 +- PWGCF/Femto/Core/modes.h | 6 + PWGCF/Femto/Core/pairBuilder.h | 4 +- PWGCF/Femto/Core/pairHistManager.h | 200 +++++++++++++------------- PWGCF/Femto/Core/pairProcessHelpers.h | 21 ++- 6 files changed, 179 insertions(+), 140 deletions(-) diff --git a/PWGCF/Femto/Core/closePairRejection.h b/PWGCF/Femto/Core/closePairRejection.h index 214f19f1d8d..00069f4075d 100644 --- a/PWGCF/Femto/Core/closePairRejection.h +++ b/PWGCF/Femto/Core/closePairRejection.h @@ -63,6 +63,8 @@ struct ConfCpr : o2::framework::ConfigurableGroup { o2::framework::Configurable plotAverage{"plotAverage", true, "Plot average deta dphi distribution"}; o2::framework::Configurable detaMax{"detaMax", 0.01f, "Maximium deta"}; o2::framework::Configurable dphistarMax{"dphistarMax", 0.01f, "Maximum dphistar"}; + o2::framework::Configurable kstarMin{"kstarMin", -1.f, "Minimum kstar of pair for plotting (Set to negative value to turn of the cut)"}; + o2::framework::Configurable kstarMax{"kstarMax", -1.f, "Maximum kstar of pair for plotting (Set to negative value to turn of the cut)"}; o2::framework::ConfigurableAxis binningDeta{"binningDeta", {{250, -0.5, 0.5}}, "deta"}; o2::framework::ConfigurableAxis binningDphistar{"binningDphistar", {{250, -0.5, 0.5}}, "dphi"}; }; @@ -140,19 +142,15 @@ class CloseTrackRejection CloseTrackRejection() = default; ~CloseTrackRejection() = default; + template void init(o2::framework::HistogramRegistry* registry, std::map> const& specs, - bool plotAverage, - bool plotAllRadii, - bool cutOnAverage, - bool cutOnAnyRadius, - float detaMax, - float dphistarMax, + T const& confCpr, int chargeAbsTrack1, int chargeAbsTrack2) { - mDetaMax = detaMax; - mDphistarMax = dphistarMax; + mDetaMax = confCpr.detaMax.value; + mDphistarMax = confCpr.dphistarMax.value; // check the limits if (mDetaMax <= 0 || mDphistarMax <= 0) { @@ -162,14 +160,17 @@ class CloseTrackRejection mChargeAbsTrack1 = std::abs(chargeAbsTrack1); mChargeAbsTrack2 = std::abs(chargeAbsTrack2); - mCutOnAverage = cutOnAverage; - mCutOnAnyRadius = cutOnAnyRadius; + mCutAverage = confCpr.cutAverage.value; + mCutAnyRadius = confCpr.cutAnyRadius.value; + + mKstarMin = confCpr.kstarMin.value; + mKstarMax = confCpr.kstarMax.value; - mPlotAverage = plotAverage; - mPlotAllRadii = plotAllRadii; + mPlotAverage = confCpr.plotAverage.value; + mPlotAllRadii = confCpr.plotAllRadii.value; // check if we need to apply any cut a plot is requested - mIsActivated = mCutOnAverage || mCutOnAnyRadius || mPlotAverage || mPlotAllRadii; + mIsActivated = mCutAverage || mCutAnyRadius || mPlotAverage || mPlotAllRadii; mHistogramRegistry = registry; @@ -210,7 +211,7 @@ class CloseTrackRejection auto phistar1 = utils::dphistar(mMagField, TpcRadii[i], mChargeAbsTrack1 * track1.signedPt(), track1.phi()); auto phistar2 = utils::dphistar(mMagField, TpcRadii[i], mChargeAbsTrack2 * track2.signedPt(), track2.phi()); if (phistar1 && phistar2) { - mDphistar.at(i) = RecoDecay::constrainAngle(phistar1.value() - phistar2.value(), -o2::constants::math::PI); // const angle difference between -pi and pi + mDphistar.at(i) = RecoDecay::constrainAngle(phistar1.value() - phistar2.value(), -o2::constants::math::PI); // constrain angular difference between -pi and pi mDphistarMask.at(i) = true; count++; } @@ -219,11 +220,20 @@ class CloseTrackRejection mAverageDphistar = std::accumulate(mDphistar.begin(), mDphistar.end(), 0.f) / count; // only average values if phistar could be computed } - void fill() + void fill(float kstar) { if (!mIsActivated) { return; } + + if (mKstarMin > 0.f && kstar < mKstarMin) { + return; + } + + if (mKstarMax > 0.f && kstar > mKstarMax) { + return; + } + // fill average hist if (mPlotAverage) { mHistogramRegistry->fill(HIST(prefix) + HIST(getHistName(kAverage, HistTable)), mDeta, mAverageDphistar); @@ -269,11 +279,11 @@ class CloseTrackRejection bool isCloseAverage = false; bool isCloseAnyRadius = false; - if (mCutOnAverage) { + if (mCutAverage) { isCloseAverage = std::hypot(mAverageDphistar / mDphistarMax, mDeta / mDetaMax) < 1.f; } - if (mCutOnAnyRadius) { + if (mCutAnyRadius) { for (size_t i = 0; i < TpcRadii.size(); i++) { if (isCloseAnyRadius) { break; @@ -293,8 +303,11 @@ class CloseTrackRejection bool mPlotAllRadii = false; bool mPlotAverage = false; - bool mCutOnAverage = false; - bool mCutOnAnyRadius = false; + float mKstarMin = -1.f; + float mKstarMax = -1.f; + + bool mCutAverage = false; + bool mCutAnyRadius = false; bool mIsActivated = false; @@ -321,7 +334,7 @@ class ClosePairRejectionTrackTrack int absChargeTrack1, int absChargeTrack2) { - mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack1, absChargeTrack2); + mCtr.init(registry, specs, confCpr, absChargeTrack1, absChargeTrack2); } void setMagField(float magField) { mCtr.setMagField(magField); } @@ -331,7 +344,7 @@ class ClosePairRejectionTrackTrack mCtr.compute(track1, track2); } bool isClosePair() const { return mCtr.isClosePair(); } - void fill() { mCtr.fill(); } + void fill(float kstar) { mCtr.fill(kstar); } private: CloseTrackRejection mCtr; @@ -348,8 +361,8 @@ class ClosePairRejectionV0V0 T1 const& confCprPos, T2 const& confCprNeg) { - mCtrPos.init(registry, specsPos, confCprPos.plotAverage.value, confCprPos.plotAllRadii.value, confCprPos.cutAverage.value, confCprPos.cutAnyRadius.value, confCprPos.detaMax.value, confCprPos.dphistarMax.value, 1, 1); - mCtrNeg.init(registry, specsNeg, confCprNeg.plotAverage.value, confCprNeg.plotAllRadii.value, confCprNeg.cutAverage.value, confCprNeg.cutAnyRadius.value, confCprNeg.detaMax.value, confCprNeg.dphistarMax.value, 1, 1); + mCtrPos.init(registry, specsPos, confCprPos, 1, 1); + mCtrNeg.init(registry, specsNeg, confCprNeg, 1, 1); } void setMagField(float magField) @@ -372,10 +385,10 @@ class ClosePairRejectionV0V0 bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); } - void fill() + void fill(float kstar) { - mCtrPos.fill(); - mCtrNeg.fill(); + mCtrPos.fill(kstar); + mCtrNeg.fill(kstar); } private: @@ -393,7 +406,7 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h T const& confCpr, int absChargeTrack) { - mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack, 1); + mCtr.init(registry, specs, confCpr, absChargeTrack, 1); } void setMagField(float magField) { mCtr.setMagField(magField); } @@ -412,7 +425,7 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h bool isClosePair() const { return mCtr.isClosePair(); } - void fill() { mCtr.fill(); } + void fill(float kstar) { mCtr.fill(kstar); } private: CloseTrackRejection mCtr; @@ -430,8 +443,8 @@ class ClosePairRejectionTrackCascade T2 const& confCprV0Daughter, int absChargeTrack) { - mCtrBachelor.init(registry, specsBachelor, confCprBachelor.plotAverage.value, confCprBachelor.plotAllRadii.value, confCprBachelor.cutAverage.value, confCprBachelor.cutAnyRadius.value, confCprBachelor.detaMax.value, confCprBachelor.dphistarMax.value, absChargeTrack, 1); - mCtrV0Daughter.init(registry, specsV0Daughter, confCprV0Daughter.plotAverage.value, confCprV0Daughter.plotAllRadii.value, confCprV0Daughter.cutAverage.value, confCprV0Daughter.cutAnyRadius.value, confCprV0Daughter.detaMax.value, confCprV0Daughter.dphistarMax.value, absChargeTrack, 1); + mCtrBachelor.init(registry, specsBachelor, confCprBachelor, absChargeTrack, 1); + mCtrV0Daughter.init(registry, specsV0Daughter, confCprV0Daughter, absChargeTrack, 1); } void setMagField(float magField) @@ -461,10 +474,10 @@ class ClosePairRejectionTrackCascade return mCtrBachelor.isClosePair() || mCtrBachelor.isClosePair(); } - void fill() + void fill(float kstar) { - mCtrBachelor.fill(); - mCtrV0Daughter.fill(); + mCtrBachelor.fill(kstar); + mCtrV0Daughter.fill(kstar); } private: @@ -482,7 +495,7 @@ class ClosePairRejectionTrackKink T const& confCpr, int absChargeTrack) { - mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack, 1); + mCtr.init(registry, specs, confCpr, absChargeTrack, 1); } void setMagField(float magField) @@ -498,7 +511,7 @@ class ClosePairRejectionTrackKink } bool isClosePair() const { return mCtr.isClosePair(); } - void fill() { mCtr.fill(); } + void fill(float kstar) { mCtr.fill(kstar); } private: CloseTrackRejection mCtr; diff --git a/PWGCF/Femto/Core/dataTypes.h b/PWGCF/Femto/Core/dataTypes.h index fc1bc15f74d..6a1dd58da37 100644 --- a/PWGCF/Femto/Core/dataTypes.h +++ b/PWGCF/Femto/Core/dataTypes.h @@ -29,7 +29,6 @@ using CollisionTagType = uint64_t; using CollisionMaskType = uint16_t; // datatypes for tracks -using MomentumType = uint8_t; using TrackMaskType = uint64_t; using TrackType = uint16_t; @@ -53,6 +52,10 @@ using CascadeType = uint16_t; // datatype for particles using ParticleType = uint16_t; +// datatypes for different observables +using MomentumType = uint16_t; +using TransverseMassType = uint16_t; + } // namespace femtodatatypes } // namespace o2::aod diff --git a/PWGCF/Femto/Core/modes.h b/PWGCF/Femto/Core/modes.h index 25d27943ca1..f12eeb0b715 100644 --- a/PWGCF/Femto/Core/modes.h +++ b/PWGCF/Femto/Core/modes.h @@ -71,6 +71,12 @@ enum class MomentumType : o2::aod::femtodatatypes::MomentumType { kPTpc, // momentum at inner wall of tpc }; +enum class TransverseMassType : o2::aod::femtodatatypes::TransverseMassType { + kAveragePdgMass, + kReducedPdgMass, + kMt4Vector +}; + enum class Particle : o2::aod::femtodatatypes::ParticleType { kTrack, kTwoTrackResonance, diff --git a/PWGCF/Femto/Core/pairBuilder.h b/PWGCF/Femto/Core/pairBuilder.h index f16fc5a8b4e..9af6fcd0a13 100644 --- a/PWGCF/Femto/Core/pairBuilder.h +++ b/PWGCF/Femto/Core/pairBuilder.h @@ -141,7 +141,7 @@ class PairTrackTrackBuilder } mColHistManager.fill(col); mCprSe.setMagField(col.magField()); - pairprocesshelpers::processSameEvent(trackSlice1, trackTable, col, mTrackHistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles); + pairprocesshelpers::processSameEvent(trackSlice1, trackTable, col, mTrackHistManager1, mPairHistManagerSe, mCprSe, mPc, mRng, mMixIdenticalParticles); } else { auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache); auto trackSlice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache); @@ -317,7 +317,7 @@ class PairV0V0Builder } mColHistManager.fill(col); mCprSe.setMagField(col.magField()); - pairprocesshelpers::processSameEvent(v0Slice1, trackTable, col, mV0HistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles); + pairprocesshelpers::processSameEvent(v0Slice1, trackTable, col, mV0HistManager1, mPairHistManagerSe, mCprSe, mPc, mRng, mMixIdenticalParticles); } else { auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache); auto v0Slice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache); diff --git a/PWGCF/Femto/Core/pairHistManager.h b/PWGCF/Femto/Core/pairHistManager.h index 1779255816c..d29eb5eccd8 100644 --- a/PWGCF/Femto/Core/pairHistManager.h +++ b/PWGCF/Femto/Core/pairHistManager.h @@ -263,70 +263,7 @@ class PairHistManager mMtMax = ConfPairCuts.mtMax.value; if constexpr (isFlagSet(mode, modes::Mode::kAnalysis)) { - std::string analysisDir = std::string(prefix) + std::string(AnalysisDir); - if (mPlot1d) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstar, HistTable), getHistDesc(kKstar, HistTable), getHistType(kKstar, HistTable), {Specs.at(kKstar)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kKt, HistTable), getHistDesc(kKt, HistTable), getHistType(kKt, HistTable), {Specs.at(kKt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kMt, HistTable), getHistDesc(kMt, HistTable), getHistType(kMt, HistTable), {Specs.at(kMt)}); - } - if (mPlot2d) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsPt2, HistTable), getHistDesc(kPt1VsPt2, HistTable), getHistType(kPt1VsPt2, HistTable), {Specs.at(kPt1VsPt2)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsKstar, HistTable), getHistDesc(kPt1VsKstar, HistTable), getHistType(kPt1VsKstar, HistTable), {Specs.at(kPt1VsKstar)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsKstar, HistTable), getHistDesc(kPt2VsKstar, HistTable), getHistType(kPt2VsKstar, HistTable), {Specs.at(kPt2VsKstar)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsKt, HistTable), getHistDesc(kPt1VsKt, HistTable), getHistType(kPt1VsKt, HistTable), {Specs.at(kPt1VsKt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsKt, HistTable), getHistDesc(kPt2VsKt, HistTable), getHistType(kPt2VsKt, HistTable), {Specs.at(kPt2VsKt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsMt, HistTable), getHistDesc(kPt1VsMt, HistTable), getHistType(kPt1VsMt, HistTable), {Specs.at(kPt1VsMt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsMt, HistTable), getHistDesc(kPt2VsMt, HistTable), getHistType(kPt2VsMt, HistTable), {Specs.at(kPt2VsMt)}); - - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsKt, HistTable), getHistDesc(kKstarVsKt, HistTable), getHistType(kKstarVsKt, HistTable), {Specs.at(kKstarVsKt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMt, HistTable), getHistDesc(kKstarVsMt, HistTable), getHistType(kKstarVsMt, HistTable), {Specs.at(kKstarVsMt)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMult, HistTable), getHistDesc(kKstarVsMult, HistTable), getHistType(kKstarVsMult, HistTable), {Specs.at(kKstarVsMult)}); - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsCent, HistTable), getHistDesc(kKstarVsCent, HistTable), getHistType(kKstarVsCent, HistTable), {Specs.at(kKstarVsCent)}); - - // special care for mass plots since not all particles have "mass" - if constexpr (modes::hasMass(particleType1)) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1, HistTable), getHistDesc(kKstarVsMass1, HistTable), getHistType(kKstarVsMass1, HistTable), {Specs.at(kKstarVsMass1)}); - } - if constexpr (modes::hasMass(particleType2)) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass2, HistTable), getHistDesc(kKstarVsMass2, HistTable), getHistType(kKstarVsMass2, HistTable), {Specs.at(kKstarVsMass2)}); - } - if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kMass1VsMass2, HistTable), getHistDesc(kMass1VsMass2, HistTable), getHistType(kMass1VsMass2, HistTable), {Specs.at(kMass1VsMass2)}); - } - } - - if (mPlotKstarVsMtVsMult) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsMult, HistTable), getHistDesc(kKstarVsMtVsMult, HistTable), getHistType(kKstarVsMtVsMult, HistTable), {Specs.at(kKstarVsMtVsMult)}); - } - if (mPlotKstarVsMtVsMultVsCent) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsMultVsCent, HistTable), getHistDesc(kKstarVsMtVsMultVsCent, HistTable), getHistType(kKstarVsMtVsMultVsCent, HistTable), {Specs.at(kKstarVsMtVsMultVsCent)}); - } - if (mPlotKstarVsMtVsPt1VsP2VsMult) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsPt1VsPt2VsMult, HistTable), getHistDesc(kKstarVsMtVsPt1VsPt2VsMult, HistTable), getHistType(kKstarVsMtVsPt1VsPt2VsMult, HistTable), {Specs.at(kKstarVsMtVsPt1VsPt2VsMult)}); - } - if (mPlotKstarVsMtVsPt1VsP2VsMultVsCent) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), getHistDesc(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), getHistType(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), {Specs.at(kKstarVsMtVsPt1VsPt2VsMultVsCent)}); - } - - // again special care for particles with "mass" - if constexpr (modes::hasMass(particleType1)) { - if (mPlotKstarVsMass1VsMult) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMult, HistTable), getHistDesc(kKstarVsMass1VsMult, HistTable), getHistType(kKstarVsMass1VsMult, HistTable), {Specs.at(kKstarVsMass1VsMult)}); - } - } - if constexpr (modes::hasMass(particleType2)) { - if (mPlotKstarVsMass2VsMult) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass2VsMult, HistTable), getHistDesc(kKstarVsMass2VsMult, HistTable), getHistType(kKstarVsMass2VsMult, HistTable), {Specs.at(kKstarVsMass2VsMult)}); - } - } - if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { - if (mPlotKstarVsMass1VsMass2) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMass2, HistTable), getHistDesc(kKstarVsMass1VsMass2, HistTable), getHistType(kKstarVsMass1VsMass2, HistTable), {Specs.at(kKstarVsMass1VsMass2)}); - } - if (mPlotKstarVsMass1VsMass2VsMult) { - mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMass2VsMult, HistTable), getHistDesc(kKstarVsMass1VsMass2VsMult, HistTable), getHistType(kKstarVsMass1VsMass2VsMult, HistTable), {Specs.at(kKstarVsMass1VsMass2VsMult)}); - } - } + initAnalysis(Specs); } // if constexpr (isFlagSet(mode, modes::Mode::kQA)) { @@ -409,34 +346,110 @@ class PairHistManager void fill() { if constexpr (isFlagSet(mode, modes::Mode::kAnalysis)) { - if (mPlot1d) { - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstar, HistTable)), mKstar); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kMt, HistTable)), mMt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKt, HistTable)), mKt); + fillAnalysis(); + } + } + + float getKstar() const { return mKstar; } + + private: + void initAnalysis(std::map> const& Specs) + { + std::string analysisDir = std::string(prefix) + std::string(AnalysisDir); + if (mPlot1d) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstar, HistTable), getHistDesc(kKstar, HistTable), getHistType(kKstar, HistTable), {Specs.at(kKstar)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kKt, HistTable), getHistDesc(kKt, HistTable), getHistType(kKt, HistTable), {Specs.at(kKt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kMt, HistTable), getHistDesc(kMt, HistTable), getHistType(kMt, HistTable), {Specs.at(kMt)}); + } + if (mPlot2d) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsPt2, HistTable), getHistDesc(kPt1VsPt2, HistTable), getHistType(kPt1VsPt2, HistTable), {Specs.at(kPt1VsPt2)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsKstar, HistTable), getHistDesc(kPt1VsKstar, HistTable), getHistType(kPt1VsKstar, HistTable), {Specs.at(kPt1VsKstar)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsKstar, HistTable), getHistDesc(kPt2VsKstar, HistTable), getHistType(kPt2VsKstar, HistTable), {Specs.at(kPt2VsKstar)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsKt, HistTable), getHistDesc(kPt1VsKt, HistTable), getHistType(kPt1VsKt, HistTable), {Specs.at(kPt1VsKt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsKt, HistTable), getHistDesc(kPt2VsKt, HistTable), getHistType(kPt2VsKt, HistTable), {Specs.at(kPt2VsKt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt1VsMt, HistTable), getHistDesc(kPt1VsMt, HistTable), getHistType(kPt1VsMt, HistTable), {Specs.at(kPt1VsMt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kPt2VsMt, HistTable), getHistDesc(kPt2VsMt, HistTable), getHistType(kPt2VsMt, HistTable), {Specs.at(kPt2VsMt)}); + + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsKt, HistTable), getHistDesc(kKstarVsKt, HistTable), getHistType(kKstarVsKt, HistTable), {Specs.at(kKstarVsKt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMt, HistTable), getHistDesc(kKstarVsMt, HistTable), getHistType(kKstarVsMt, HistTable), {Specs.at(kKstarVsMt)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMult, HistTable), getHistDesc(kKstarVsMult, HistTable), getHistType(kKstarVsMult, HistTable), {Specs.at(kKstarVsMult)}); + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsCent, HistTable), getHistDesc(kKstarVsCent, HistTable), getHistType(kKstarVsCent, HistTable), {Specs.at(kKstarVsCent)}); + + // special care for mass plots since not all particles have "mass" + if constexpr (modes::hasMass(particleType1)) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1, HistTable), getHistDesc(kKstarVsMass1, HistTable), getHistType(kKstarVsMass1, HistTable), {Specs.at(kKstarVsMass1)}); + } + if constexpr (modes::hasMass(particleType2)) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass2, HistTable), getHistDesc(kKstarVsMass2, HistTable), getHistType(kKstarVsMass2, HistTable), {Specs.at(kKstarVsMass2)}); } - if (mPlot2d) { - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsPt2, HistTable)), mParticle1.Pt(), mParticle2.Pt()); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsKstar, HistTable)), mParticle1.Pt(), mKstar); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsMt, HistTable)), mParticle1.Pt(), mMt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsKt, HistTable)), mParticle1.Pt(), mKt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsKstar, HistTable)), mParticle2.Pt(), mKstar); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsMt, HistTable)), mParticle2.Pt(), mMt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsKt, HistTable)), mParticle2.Pt(), mKt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsKt, HistTable)), mKstar, mKt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMt, HistTable)), mKstar, mMt); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMult, HistTable)), mKstar, mMult); - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsCent, HistTable)), mKstar, mCent); - - // // special care for mass plots since not all particles have "mass" - if constexpr (modes::hasMass(particleType1)) { - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMass1, HistTable)), mKstar, mMass1); - } - if constexpr (modes::hasMass(particleType2)) { - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMass2, HistTable)), mKstar, mMass2); - } - if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { - mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kMass1VsMass2, HistTable)), mMass1, mMass2); - } + if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kMass1VsMass2, HistTable), getHistDesc(kMass1VsMass2, HistTable), getHistType(kMass1VsMass2, HistTable), {Specs.at(kMass1VsMass2)}); + } + } + + if (mPlotKstarVsMtVsMult) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsMult, HistTable), getHistDesc(kKstarVsMtVsMult, HistTable), getHistType(kKstarVsMtVsMult, HistTable), {Specs.at(kKstarVsMtVsMult)}); + } + if (mPlotKstarVsMtVsMultVsCent) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsMultVsCent, HistTable), getHistDesc(kKstarVsMtVsMultVsCent, HistTable), getHistType(kKstarVsMtVsMultVsCent, HistTable), {Specs.at(kKstarVsMtVsMultVsCent)}); + } + if (mPlotKstarVsMtVsPt1VsP2VsMult) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsPt1VsPt2VsMult, HistTable), getHistDesc(kKstarVsMtVsPt1VsPt2VsMult, HistTable), getHistType(kKstarVsMtVsPt1VsPt2VsMult, HistTable), {Specs.at(kKstarVsMtVsPt1VsPt2VsMult)}); + } + if (mPlotKstarVsMtVsPt1VsP2VsMultVsCent) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), getHistDesc(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), getHistType(kKstarVsMtVsPt1VsPt2VsMultVsCent, HistTable), {Specs.at(kKstarVsMtVsPt1VsPt2VsMultVsCent)}); + } + + // again special care for particles with "mass" + if constexpr (modes::hasMass(particleType1)) { + if (mPlotKstarVsMass1VsMult) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMult, HistTable), getHistDesc(kKstarVsMass1VsMult, HistTable), getHistType(kKstarVsMass1VsMult, HistTable), {Specs.at(kKstarVsMass1VsMult)}); + } + } + if constexpr (modes::hasMass(particleType2)) { + if (mPlotKstarVsMass2VsMult) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass2VsMult, HistTable), getHistDesc(kKstarVsMass2VsMult, HistTable), getHistType(kKstarVsMass2VsMult, HistTable), {Specs.at(kKstarVsMass2VsMult)}); + } + } + if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { + if (mPlotKstarVsMass1VsMass2) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMass2, HistTable), getHistDesc(kKstarVsMass1VsMass2, HistTable), getHistType(kKstarVsMass1VsMass2, HistTable), {Specs.at(kKstarVsMass1VsMass2)}); + } + if (mPlotKstarVsMass1VsMass2VsMult) { + mHistogramRegistry->add(analysisDir + getHistNameV2(kKstarVsMass1VsMass2VsMult, HistTable), getHistDesc(kKstarVsMass1VsMass2VsMult, HistTable), getHistType(kKstarVsMass1VsMass2VsMult, HistTable), {Specs.at(kKstarVsMass1VsMass2VsMult)}); + } + } + } + + void fillAnalysis() + { + if (mPlot1d) { + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstar, HistTable)), mKstar); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kMt, HistTable)), mMt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKt, HistTable)), mKt); + } + if (mPlot2d) { + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsPt2, HistTable)), mParticle1.Pt(), mParticle2.Pt()); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsKstar, HistTable)), mParticle1.Pt(), mKstar); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsMt, HistTable)), mParticle1.Pt(), mMt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt1VsKt, HistTable)), mParticle1.Pt(), mKt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsKstar, HistTable)), mParticle2.Pt(), mKstar); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsMt, HistTable)), mParticle2.Pt(), mMt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kPt2VsKt, HistTable)), mParticle2.Pt(), mKt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsKt, HistTable)), mKstar, mKt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMt, HistTable)), mKstar, mMt); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMult, HistTable)), mKstar, mMult); + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsCent, HistTable)), mKstar, mCent); + + // // special care for mass plots since not all particles have "mass" + if constexpr (modes::hasMass(particleType1)) { + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMass1, HistTable)), mKstar, mMass1); + } + if constexpr (modes::hasMass(particleType2)) { + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kKstarVsMass2, HistTable)), mKstar, mMass2); + } + if constexpr (modes::hasMass(particleType1) && modes::hasMass(particleType2)) { + mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(getHistName(kMass1VsMass2, HistTable)), mMass1, mMass2); } } @@ -475,11 +488,6 @@ class PairHistManager } } - // if constexpr (isFlagSet(mode, modes::Mode::kQA)) { - // mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(getHistName(kPtVsDcaz, HistTable)), track.pt(), track.dcaZ()); - // } - - private: o2::framework::HistogramRegistry* mHistogramRegistry = nullptr; float mPdgMass1 = 0.f; float mPdgMass2 = 0.f; diff --git a/PWGCF/Femto/Core/pairProcessHelpers.h b/PWGCF/Femto/Core/pairProcessHelpers.h index 6600177257e..a4b69c85a4d 100644 --- a/PWGCF/Femto/Core/pairProcessHelpers.h +++ b/PWGCF/Femto/Core/pairProcessHelpers.h @@ -35,14 +35,16 @@ template + typename T7, + typename T8> void processSameEvent(T1 const& SliceParticle, T2 const& TrackTable, T3 const& Collision, T4& ParticleHistManager, T5& PairHistManager, T6& CprManager, - T7& rng, + T7& PcManager, + T8& rng, bool randomize) { for (auto const& part : SliceParticle) { @@ -50,6 +52,11 @@ void processSameEvent(T1 const& SliceParticle, } std::uniform_real_distribution dist(0.f, 1.f); for (auto const& [p1, p2] : o2::soa::combinations(o2::soa::CombinationsStrictlyUpperIndexPolicy(SliceParticle, SliceParticle))) { + // check if pair is clean + if (!PcManager.isCleanPair(p1, p2, TrackTable)) { + continue; + } + // check if pair is close CprManager.setPair(p1, p2, TrackTable); if (CprManager.isClosePair()) { continue; @@ -62,8 +69,10 @@ void processSameEvent(T1 const& SliceParticle, } else { PairHistManager.setPair(p1, p2, Collision); } + // fill deta-dphi histograms with kstar cutoff + CprManager.fill(PairHistManager.getKstar()); + // if pair cuts are configured check them before filling if (PairHistManager.checkPairCuts()) { - CprManager.fill(); PairHistManager.fill(); } } @@ -107,8 +116,8 @@ void processSameEvent(T1 const& SliceParticle1, continue; } PairHistManager.setPair(p1, p2, Collision); + CprManager.fill(PairHistManager.getKstar()); if (PairHistManager.checkPairCuts()) { - CprManager.fill(); PairHistManager.fill(); } } @@ -155,8 +164,8 @@ void processMixedEvent(T1& Collisions, continue; } PairHistManager.setPair(p1, p2, collision1, collision2); + CprManager.fill(PairHistManager.getKstar()); if (PairHistManager.checkPairCuts()) { - CprManager.fill(); PairHistManager.fill(); } } @@ -206,8 +215,8 @@ void processMixedEvent(T1& Collisions, continue; } PairHistManager.setPair(p1, p2, collision1, collision2); + CprManager.fill(PairHistManager.getKstar()); if (PairHistManager.checkPairCuts()) { - CprManager.fill(); PairHistManager.fill(); } } From 45cb080bc8d8684638cac05cd4335f2472c6be2f Mon Sep 17 00:00:00 2001 From: Anton Riedel Date: Fri, 31 Oct 2025 13:58:41 +0100 Subject: [PATCH 2/6] Feat: add different types of mT --- PWGCF/Femto/Core/modes.h | 12 ++++++------ PWGCF/Femto/Core/pairHistManager.h | 28 +++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/PWGCF/Femto/Core/modes.h b/PWGCF/Femto/Core/modes.h index f12eeb0b715..6fe0f9a71b3 100644 --- a/PWGCF/Femto/Core/modes.h +++ b/PWGCF/Femto/Core/modes.h @@ -66,15 +66,15 @@ enum class System : uint32_t { }; enum class MomentumType : o2::aod::femtodatatypes::MomentumType { - kPt, // transverse momentum - kPAtPv, // momentum at primary vertex - kPTpc, // momentum at inner wall of tpc + kPt = 0, // transverse momentum + kPAtPv = 1, // momentum at primary vertex + kPTpc = 2, // momentum at inner wall of tpc }; enum class TransverseMassType : o2::aod::femtodatatypes::TransverseMassType { - kAveragePdgMass, - kReducedPdgMass, - kMt4Vector + kAveragePdgMass = 0, + kReducedPdgMass = 1, + kMt4Vector = 2 }; enum class Particle : o2::aod::femtodatatypes::ParticleType { diff --git a/PWGCF/Femto/Core/pairHistManager.h b/PWGCF/Femto/Core/pairHistManager.h index d29eb5eccd8..7c2d482cea9 100644 --- a/PWGCF/Femto/Core/pairHistManager.h +++ b/PWGCF/Femto/Core/pairHistManager.h @@ -114,6 +114,7 @@ struct ConfPairBinning : o2::framework::ConfigurableGroup { o2::framework::ConfigurableAxis pt2{"pt2", {{100, 0, 6}}, "Pt binning for particle 2"}; o2::framework::ConfigurableAxis mass1{"mass1", {{100, 0, 2}}, "Mass binning for particle 1 (if particle has mass getter)"}; o2::framework::ConfigurableAxis mass2{"mass2", {{100, 0, 2}}, "Mass binning for particle 2 (if particle has mass getter)"}; + o2::framework::Configurable transverseMassType{"transverseMassType", static_cast(modes::TransverseMassType::kAveragePdgMass), "Type of transverse mass (0-> Average Pdg Mass, 1-> Reduced Pdg Mass, 2-> Mt from combined 4 vector)"}; }; struct ConfPairCuts : o2::framework::ConfigurableGroup { @@ -254,6 +255,9 @@ class PairHistManager mPlotKstarVsMass2VsMult = ConfPairBinning.plotKstarVsMass2VsMult.value; mPlotKstarVsMass1VsMass2VsMult = ConfPairBinning.plotKstarVsMass1VsMass2VsMult.value; + // transverse mass type + mMtType = static_cast(ConfPairBinning.transverseMassType.value); + // values for cuts mKstarMin = ConfPairCuts.kstarMin.value; mKstarMax = ConfPairCuts.kstarMax.value; @@ -276,6 +280,7 @@ class PairHistManager mPdgMass1 = o2::analysis::femto::utils::getMass(PdgParticle1); mPdgMass2 = o2::analysis::femto::utils::getMass(PdgParticle2); mPdgAverageMass = (mPdgMass1 + mPdgMass2) / 2.f; + mPdgReducedMass = (mPdgMass1 * mPdgMass2) / (mPdgMass1 + mPdgMass2); } void setCharge(int chargeAbsParticle1, int chargeAbsParticle2) { @@ -298,7 +303,7 @@ class PairHistManager mKt = partSum.Pt() / 2.f; // set mT - mMt = std::hypot(mKt, mPdgAverageMass); + computeMt(partSum); // Boost particle to the pair rest frame (Prf) and calculate k* (would be equivalent using particle 2) // make a copy of particle 1 @@ -488,10 +493,31 @@ class PairHistManager } } + void computeMt(ROOT::Math::PtEtaPhiMVector const& PairMomentum) + { + switch (mMtType) { + case modes::TransverseMassType::kAveragePdgMass: + mMt = std::hypot(PairMomentum.Pt() / 2.f, mPdgAverageMass); + break; + case modes::TransverseMassType::kReducedPdgMass: + mMt = std::hypot(PairMomentum.Pt() / 2.f, mPdgReducedMass); + break; + case modes::TransverseMassType::kMt4Vector: + mMt = PairMomentum.Mt() / 2.f; + break; + default: + mMt = std::hypot(mKt, mPdgAverageMass); + }; + } + o2::framework::HistogramRegistry* mHistogramRegistry = nullptr; float mPdgMass1 = 0.f; float mPdgMass2 = 0.f; + + modes::TransverseMassType mMtType = modes::TransverseMassType::kAveragePdgMass; float mPdgAverageMass = 0.f; + float mPdgReducedMass = 0.f; + int mAbsCharge1 = 1; int mAbsCharge2 = 1; ROOT::Math::PtEtaPhiMVector mParticle1{}; From cd8fd176f2dc4e30c8e0d007bc8951bb857fe60f Mon Sep 17 00:00:00 2001 From: ariedel-cern <85537041+ariedel-cern@users.noreply.github.com> Date: Fri, 31 Oct 2025 14:01:52 +0100 Subject: [PATCH 3/6] Fix: fix typo in description --- PWGCF/Femto/Core/closePairRejection.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PWGCF/Femto/Core/closePairRejection.h b/PWGCF/Femto/Core/closePairRejection.h index 00069f4075d..c7044ceef88 100644 --- a/PWGCF/Femto/Core/closePairRejection.h +++ b/PWGCF/Femto/Core/closePairRejection.h @@ -63,8 +63,8 @@ struct ConfCpr : o2::framework::ConfigurableGroup { o2::framework::Configurable plotAverage{"plotAverage", true, "Plot average deta dphi distribution"}; o2::framework::Configurable detaMax{"detaMax", 0.01f, "Maximium deta"}; o2::framework::Configurable dphistarMax{"dphistarMax", 0.01f, "Maximum dphistar"}; - o2::framework::Configurable kstarMin{"kstarMin", -1.f, "Minimum kstar of pair for plotting (Set to negative value to turn of the cut)"}; - o2::framework::Configurable kstarMax{"kstarMax", -1.f, "Maximum kstar of pair for plotting (Set to negative value to turn of the cut)"}; + o2::framework::Configurable kstarMin{"kstarMin", -1.f, "Minimum kstar of pair for plotting (Set to negative value to turn off the cut)"}; + o2::framework::Configurable kstarMax{"kstarMax", -1.f, "Maximum kstar of pair for plotting (Set to negative value to turn off the cut)"}; o2::framework::ConfigurableAxis binningDeta{"binningDeta", {{250, -0.5, 0.5}}, "deta"}; o2::framework::ConfigurableAxis binningDphistar{"binningDphistar", {{250, -0.5, 0.5}}, "dphi"}; }; From f0cea143a77bf4d4141b5ce26f3efef6a4c16566 Mon Sep 17 00:00:00 2001 From: Anton Riedel Date: Fri, 31 Oct 2025 14:21:33 +0100 Subject: [PATCH 4/6] Fix: fix linter error --- PWGCF/Femto/Core/pairHistManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/Femto/Core/pairHistManager.h b/PWGCF/Femto/Core/pairHistManager.h index 7c2d482cea9..f5b11c61abc 100644 --- a/PWGCF/Femto/Core/pairHistManager.h +++ b/PWGCF/Femto/Core/pairHistManager.h @@ -507,7 +507,7 @@ class PairHistManager break; default: mMt = std::hypot(mKt, mPdgAverageMass); - }; + } } o2::framework::HistogramRegistry* mHistogramRegistry = nullptr; From 8ea5acac2dd58c7ffa782f8337ef5676e07e7053 Mon Sep 17 00:00:00 2001 From: Anton Riedel Date: Fri, 31 Oct 2025 14:53:49 +0100 Subject: [PATCH 5/6] Fix: fix reduced mass --- PWGCF/Femto/Core/pairHistManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGCF/Femto/Core/pairHistManager.h b/PWGCF/Femto/Core/pairHistManager.h index f5b11c61abc..5ad02050aec 100644 --- a/PWGCF/Femto/Core/pairHistManager.h +++ b/PWGCF/Femto/Core/pairHistManager.h @@ -280,7 +280,7 @@ class PairHistManager mPdgMass1 = o2::analysis::femto::utils::getMass(PdgParticle1); mPdgMass2 = o2::analysis::femto::utils::getMass(PdgParticle2); mPdgAverageMass = (mPdgMass1 + mPdgMass2) / 2.f; - mPdgReducedMass = (mPdgMass1 * mPdgMass2) / (mPdgMass1 + mPdgMass2); + mPdgReducedMass = 2 * (mPdgMass1 * mPdgMass2) / (mPdgMass1 + mPdgMass2); } void setCharge(int chargeAbsParticle1, int chargeAbsParticle2) { From 2185418f03a8ac75f5063a5b467cc8f35f002f97 Mon Sep 17 00:00:00 2001 From: Anton Riedel Date: Fri, 31 Oct 2025 14:59:55 +0100 Subject: [PATCH 6/6] Fix: fix linter error --- PWGCF/Femto/Core/pairHistManager.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/PWGCF/Femto/Core/pairHistManager.h b/PWGCF/Femto/Core/pairHistManager.h index 5ad02050aec..52adbee6a78 100644 --- a/PWGCF/Femto/Core/pairHistManager.h +++ b/PWGCF/Femto/Core/pairHistManager.h @@ -279,8 +279,8 @@ class PairHistManager { mPdgMass1 = o2::analysis::femto::utils::getMass(PdgParticle1); mPdgMass2 = o2::analysis::femto::utils::getMass(PdgParticle2); - mPdgAverageMass = (mPdgMass1 + mPdgMass2) / 2.f; - mPdgReducedMass = 2 * (mPdgMass1 * mPdgMass2) / (mPdgMass1 + mPdgMass2); + mAverageMass = (mPdgMass1 + mPdgMass2) / 2.f; + mReducedMass = 2.f * (mPdgMass1 * mPdgMass2) / (mPdgMass1 + mPdgMass2); } void setCharge(int chargeAbsParticle1, int chargeAbsParticle2) { @@ -497,16 +497,16 @@ class PairHistManager { switch (mMtType) { case modes::TransverseMassType::kAveragePdgMass: - mMt = std::hypot(PairMomentum.Pt() / 2.f, mPdgAverageMass); + mMt = std::hypot(PairMomentum.Pt() / 2.f, mAverageMass); break; case modes::TransverseMassType::kReducedPdgMass: - mMt = std::hypot(PairMomentum.Pt() / 2.f, mPdgReducedMass); + mMt = std::hypot(PairMomentum.Pt() / 2.f, mReducedMass); break; case modes::TransverseMassType::kMt4Vector: mMt = PairMomentum.Mt() / 2.f; break; default: - mMt = std::hypot(mKt, mPdgAverageMass); + mMt = std::hypot(mKt, mAverageMass); } } @@ -515,8 +515,8 @@ class PairHistManager float mPdgMass2 = 0.f; modes::TransverseMassType mMtType = modes::TransverseMassType::kAveragePdgMass; - float mPdgAverageMass = 0.f; - float mPdgReducedMass = 0.f; + float mAverageMass = 0.f; + float mReducedMass = 0.f; int mAbsCharge1 = 1; int mAbsCharge2 = 1;