From b7cd452b570bb1666cd0e724d15f5bd0fe96bd81 Mon Sep 17 00:00:00 2001 From: Omar Vazquez Date: Tue, 9 Sep 2025 12:34:48 -0500 Subject: [PATCH 1/4] Change track selection optimized for electrons --- PWGLF/Tasks/Nuspex/piKpRAA.cxx | 189 ++++++++++++++++++++------------- 1 file changed, 118 insertions(+), 71 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/piKpRAA.cxx b/PWGLF/Tasks/Nuspex/piKpRAA.cxx index d41dd1b4812..dca877691b0 100644 --- a/PWGLF/Tasks/Nuspex/piKpRAA.cxx +++ b/PWGLF/Tasks/Nuspex/piKpRAA.cxx @@ -124,7 +124,9 @@ struct PiKpRAA { Configurable maxEtaDaughter{"maxEtaDaughter", +0.8, "Daughter maximum-eta selection"}; Configurable minPt{"minPt", 0.15, "minimum pt of the tracks"}; Configurable maxPt{"maxPt", 20.0, "maximum pt of the tracks"}; - Configurable minNclFound{"minNclFound", 135, "minimum found Ncl in TPC"}; + Configurable useNclsPID{"useNclsPID", true, "Use Ncl for PID?"}; + Configurable minNcl{"minNcl", 135, "minimum found Ncl in TPC"}; + Configurable minNCrossedRows{"minNCrossedRows", 70, "minimum number of crossed rows"}; // Standard 5 topological criteria Configurable v0cospa{"v0cospa", 0.995, "min V0 CosPA"}; @@ -141,15 +143,17 @@ struct PiKpRAA { Configurable qTSel{"qTSel", 0.01f, "Armenteros qT select (Gammas)"}; // Selection + Configurable selElecFromGammas{"selElecFromGammas", true, "track selection for electrons"}; Configurable applyInvMassSel{"applyInvMassSel", false, "Select V0s close to the Inv. mass value"}; Configurable dMassSel{"dMassSel", 0.01f, "Invariant mass selection"}; Configurable dMassSelG{"dMassSelG", 0.1f, "Inv mass selection gammas"}; Configurable dMassGcut{"dMassGcut", 0.1f, "Inv mass selection gammas"}; // PID (TPC/TOF) + Configurable dEdxPlateauSel{"dEdxPlateauSel", 50, "dEdx selection for electrons"}; Configurable tpcPidNsigmaCut{"tpcPidNsigmaCut", 5, "tpcPidNsigmaCut"}; - Configurable maxPiTOFBeta{"maxPiTOFBeta", 0.00005, "Maximum beta TOF selection"}; - Configurable maxElTOFBeta{"maxElTOFBeta", 0.1, "Maximum beta TOF selection"}; + Configurable maxExpTOFPi{"maxExpTOFPi", 0.00005, "Maximum beta TOF selection"}; + Configurable maxExpTOFEl{"maxExpTOFEl", 0.001, "Maximum beta TOF selection"}; Configurable applyTPCTOFCombinedCut{"applyTPCTOFCombinedCut", false, " Apply geometrical cut ? "}; // Phi cut @@ -191,7 +195,7 @@ struct PiKpRAA { ConfigurableAxis axisArmqT{"axisArmqT", {600, 0.0f, 0.3f}, "Armenteros qT"}; ConfigurableAxis axisK0Mass{"axisK0Mass", {200, 0.4f, 0.6f}, "Mass K0Short"}; ConfigurableAxis axisLambdaMass{"axisLambdaMass", {200, 1.101f, 1.131f}, "Mass Lambda"}; - ConfigurableAxis axisGammaMass{"axisGammaMass", {200, 0.0f, 0.5f}, "Mass Gamma"}; + ConfigurableAxis axisGammaMass{"axisGammaMass", {150, 0.0f, 0.15f}, "Mass Gamma"}; ConfigurableAxis axisNsigmaTPC{"axisNsigmaTPC", {200, -10.0f, 10.0f}, "N sigma TPC"}; ConfigurableAxis axisdEdx{"axisdEdx", {140, 20.0, 160.0}, "dEdx binning"}; Configurable nBinsNch{"nBinsNch", 400, "N bins Nch (|eta|<0.8)"}; @@ -205,6 +209,7 @@ struct PiKpRAA { Configurable pathMeanNch{"pathMeanNch", "Users/o/omvazque/MeanNch/OO/Pass2/PerTimeStamp/Aug20", "base path to the ccdb object"}; Configurable pathSigmaNch{"pathSigmaNch", "Users/o/omvazque/SigmaNch/OO/Pass2/PerTimeStamp/Aug20", "base path to the ccdb object"}; Configurable pathEtaCal{"pathEtaCal", "Users/o/omvazque/EtaCal/OO/Global", "base path to the ccdb object"}; + Configurable pathEtaCalPlateau{"pathEtaCalPlateau", "Users/o/omvazque/EtaCal/OO/Global", "base path to the ccdb object"}; Configurable pathPhiCutHigh{"pathPhiCutHigh", "Users/o/omvazque/PhiCut/OO/Global/High", "base path to the ccdb object"}; Configurable pathPhiCutLow{"pathPhiCutLow", "Users/o/omvazque/PhiCut/OO/Global/Low", "base path to the ccdb object"}; Configurable ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"}; @@ -250,6 +255,7 @@ struct PiKpRAA { struct ConfigEtaCalib { TProfile* pEtaCal = nullptr; + TProfile* pEtaCalPlateau = nullptr; bool isCalLoaded = false; } etaCal; @@ -337,9 +343,13 @@ struct PiKpRAA { registry.add("NclFindable", ";;Findable Ncl TPC", kTH2F, {axisPtNcl, axisNcl}); registry.add("NclFindablep", ";;Findable #LTNcl#GT TPC", kTProfile, {axisPtNcl}); registry.add("NclFoundVsPhipBeforeCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclFoundVsPhipBeforeCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); registry.add("NclFoundVsPhipAfterCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclFoundVsPhipAfterCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); registry.add("NclVsEta", ";#eta;Found Ncl TPC", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); + registry.add("NclVsEtaPID", ";#eta;Ncl used for PID", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); registry.add("NclVsEtap", ";#eta;Found #LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("NclVsEtaPIDp", ";#eta;#LTNcl#GT used for PID", kTProfile, {axisEta}); registry.add("NclVsEtaPiMIP", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta; Found Ncl TPC", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); registry.add("NclVsEtaPiMIPp", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta; Found #LTNcl#GT TPC", kTProfile, {axisEta}); @@ -357,8 +367,8 @@ struct PiKpRAA { registry.add("EtaVsYPrAL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYG", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); - registry.add("TOFExpPi2TOF", ";Momentum (GeV/#it{c});t^{e}_{Exp}/t_{TOF}", kTH2F, {{{axisPtV0s}, {100, 0.2, 1.2}}}); - registry.add("TOFExpEl2TOF", ";Momentum (GeV/#it{c});t^{#pi}_{Exp}/t_{TOF}", kTH2F, {{{axisPtV0s}, {100, 0.2, 1.2}}}); + registry.add("TOFExpPi2TOF", ";Momentum (GeV/#it{c});t^{#pi}_{Exp}/t_{TOF}", kTH2F, {{{axisPtV0s}, {100, 0.2, 1.2}}}); + registry.add("TOFExpEl2TOF", ";Momentum (GeV/#it{c});t^{e}_{Exp}/t_{TOF}", kTH2F, {{{axisPtV0s}, {100, 0.2, 1.2}}}); registry.add("betaVsMomentum", ";Momentum (GeV/#it{c}); #beta", kTH2F, {{{axisPtV0s}, {500, 0, 1.2}}}); registry.add("dEdxVsEtaPiMIP", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c});#eta; dE/dx;", kTH2F, {{{axisEta}, {100, 0, 100}}}); @@ -394,6 +404,7 @@ struct PiKpRAA { LOG(info) << "\tv0TypeSelection=" << static_cast(v0Selections.v0TypeSelection); LOG(info) << "\tminPt=" << v0Selections.minPt; LOG(info) << "\tmaxPt=" << v0Selections.maxPt; + LOG(info) << "\tuseNclsPID=" << v0Selections.useNclsPID; LOG(info) << "\tqTSel=" << v0Selections.qTSel; LOG(info) << "\tarmAlphaSel=" << v0Selections.armAlphaSel; LOG(info) << "\tapplyTPCTOFCombinedCut=" << v0Selections.applyTPCTOFCombinedCut; @@ -430,7 +441,7 @@ struct PiKpRAA { } if (v0Selections.applyNclSel) - LOG(info) << "\t minNclFound=" << v0Selections.minNclFound; + LOG(info) << "\t minNcl=" << v0Selections.minNcl; } void processCalibrationAndV0s(ColEvSels::iterator const& collision, BCsRun3 const& /**/, aod::V0Datas const& v0s, aod::FV0As const& /**/, aod::FT0s const& /**/, TracksFull const& tracks) @@ -532,13 +543,16 @@ struct PiKpRAA { const int charge{track.sign()}; const float pOrPt{v0Selections.usePinPhiSelection ? momentum : pt}; const int16_t nclFound{track.tpcNClsFound()}; + const int16_t nclPID{track.tpcNClsPID()}; - if (v0Selections.applyNclSel && nclFound < v0Selections.minNclFound) + const int16_t ncl = v0Selections.useNclsPID ? nclPID : nclFound; + if (v0Selections.applyNclSel && ncl < v0Selections.minNcl) continue; float phiPrime{phi}; phiPrimeFunc(phiPrime, magField, charge); - registry.fill(HIST("NclFoundVsPhipBeforeCut"), pOrPt, phiPrime, track.tpcNClsFound()); + registry.fill(HIST("NclFoundVsPhipBeforeCut"), pOrPt, phiPrime, nclFound); + registry.fill(HIST("NclFoundVsPhipBeforeCutPID"), pOrPt, phiPrime, nclPID); if (v0Selections.applyPhiCut) { if (!passesPhiSelection(pOrPt, phiPrime)) @@ -567,41 +581,51 @@ struct PiKpRAA { if (momentum > kMinPMIP && momentum < kMaxPMIP && dedx > kMindEdxMIP && dedx < kMaxdEdxMIP) { registry.fill(HIST("dEdxVsEtaPiMIP"), eta, dedx); registry.fill(HIST("dEdxVsEtaPiMIPp"), eta, dedx); - registry.fill(HIST("NclVsEtaPiMIP"), eta, track.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiMIPp"), eta, track.tpcNClsFound()); + registry.fill(HIST("NclVsEtaPiMIP"), eta, ncl); + registry.fill(HIST("NclVsEtaPiMIPp"), eta, ncl); } if (momentum > kMinPElMIP && momentum < kMaxPElMIP && dedx > kMindEdxMIPPlateau && dedx < kMaxdEdxMIPPlateau) { - registry.fill(HIST("dEdxVsEtaElMIP"), eta, dedx); - registry.fill(HIST("dEdxVsEtaElMIPp"), eta, dedx); + if (track.hasTOF() && track.goodTOFMatch()) { + const float tTOF{track.tofSignal()}; + const float trkLength{track.length()}; + const float tExpElTOF{track.tofExpSignalEl(tTOF)}; + + if (trkLength > kZero && tTOF > kZero) { + if (std::abs((tExpElTOF / tTOF) - kOne) < v0Selections.maxExpTOFEl) { + registry.fill(HIST("dEdxVsEtaElMIP"), eta, dedx); + registry.fill(HIST("dEdxVsEtaElMIPp"), eta, dedx); + } + } + } } dEdx[indexEta]->Fill(momentum, dedx, centrality); pTVsP[indexEta]->Fill(momentum, pt); - nClVsP[indexEta]->Fill(pOrPt, track.tpcNClsFound()); - nClVsPp[indexEta]->Fill(pOrPt, track.tpcNClsFound()); + nClVsP[indexEta]->Fill(pOrPt, ncl); + nClVsPp[indexEta]->Fill(pOrPt, ncl); registry.fill(HIST("dcaVsPt"), pt, track.dcaXY()); - registry.fill(HIST("NclVsEta"), eta, track.tpcNClsFound()); - registry.fill(HIST("NclVsEtap"), eta, track.tpcNClsFound()); - // registry.fill(HIST("NclFoundp"), pOrPt, track.tpcNClsFound()); + registry.fill(HIST("NclVsEta"), eta, nclFound); + registry.fill(HIST("NclVsEtap"), eta, nclFound); + registry.fill(HIST("NclVsEtaPID"), eta, nclPID); + registry.fill(HIST("NclVsEtaPIDp"), eta, nclPID); registry.fill(HIST("NclFindable"), pOrPt, track.tpcNClsFindable()); registry.fill(HIST("NclFindablep"), pOrPt, track.tpcNClsFindable()); - registry.fill(HIST("NclFoundVsPhipAfterCut"), pOrPt, phiPrime, track.tpcNClsFound()); + registry.fill(HIST("NclFoundVsPhipAfterCut"), pOrPt, phiPrime, nclFound); + registry.fill(HIST("NclFoundVsPhipAfterCutPID"), pOrPt, phiPrime, nclPID); if (track.hasTOF() && track.goodTOFMatch()) { const float tTOF{track.tofSignal()}; const float trkLength{track.length()}; const float tExpPiTOF{track.tofExpSignalPi(tTOF)}; const float tExpElTOF{track.tofExpSignalEl(tTOF)}; - // const float dTOFPi{tTOF - tExpPiTOF - colTime}; - // const float dTOFEl{tTOF - tExpElTOF - colTime}; if (trkLength > kZero && tTOF > kZero) { registry.fill(HIST("betaVsMomentum"), momentum, track.beta()); registry.fill(HIST("TOFExpPi2TOF"), momentum, tExpPiTOF / tTOF); registry.fill(HIST("TOFExpEl2TOF"), momentum, tExpElTOF / tTOF); - if (std::abs((tExpPiTOF / tTOF) - kOne) < v0Selections.maxPiTOFBeta) { + if (std::abs((tExpPiTOF / tTOF) - kOne) < v0Selections.maxExpTOFPi) { dEdxPiTOF[indexEta]->Fill(momentum, dedx, centrality); } } @@ -631,6 +655,11 @@ struct PiKpRAA { float negTrackPhiPrime{negTrack.phi()}; const int16_t posNclFound{posTrack.tpcNClsFound()}; const int16_t negNclFound{negTrack.tpcNClsFound()}; + const int16_t posNclPID{posTrack.tpcNClsPID()}; + const int16_t negNclPID{negTrack.tpcNClsPID()}; + const int16_t posNcl = v0Selections.useNclsPID ? posNclPID : posNclFound; + const int16_t negNcl = v0Selections.useNclsPID ? negNclPID : negNclFound; + phiPrimeFunc(posTrackPhiPrime, magField, posTrackCharge); phiPrimeFunc(negTrackPhiPrime, magField, negTrackCharge); const float posPorPt{v0Selections.usePinPhiSelection ? posTrkP : posTrkPt}; @@ -650,7 +679,7 @@ struct PiKpRAA { if (!(passesTrackSelectionDaughters(posTrack) && passesTrackSelectionDaughters(negTrack))) continue; - if (v0Selections.applyNclSel && (posNclFound < v0Selections.minNclFound || negNclFound < v0Selections.minNclFound)) + if (v0Selections.applyNclSel && !(posNcl >= v0Selections.minNcl && negNcl >= v0Selections.minNcl)) continue; if (v0Selections.applyEtaCal) { @@ -723,14 +752,14 @@ struct PiKpRAA { registry.fill(HIST("MassK0sVsPt"), v0.pt(), v0.mK0Short()); registry.fill(HIST("nSigPiFromK0s"), posTrkPt, posTrack.tpcNSigmaPi()); registry.fill(HIST("nSigPiFromK0s"), negTrkPt, negTrack.tpcNSigmaPi()); - registry.fill(HIST("NclVsEtaPiV0"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0p"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0"), negTrkEta, negTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0p"), negTrkEta, negTrack.tpcNClsFound()); - nClVsPPiV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPPiV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); + registry.fill(HIST("NclVsEtaPiV0"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPiV0p"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPiV0"), negTrkEta, negNcl); + registry.fill(HIST("NclVsEtaPiV0p"), negTrkEta, negNcl); + nClVsPPiV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPPiV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negNcl); dEdxPiV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); dEdxPiV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); @@ -755,14 +784,14 @@ struct PiKpRAA { registry.fill(HIST("MassLVsPt"), v0.pt(), v0.mLambda()); registry.fill(HIST("nSigPrFromL"), posTrkPt, posTrack.tpcNSigmaPr()); registry.fill(HIST("nSigPiFromL"), negTrkPt, negTrack.tpcNSigmaPi()); - registry.fill(HIST("NclVsEtaPrV0"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPrV0p"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0"), negTrkEta, negTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0p"), negTrkEta, negTrack.tpcNClsFound()); - nClVsPPrV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPpPrV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPPiV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); + registry.fill(HIST("NclVsEtaPrV0"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPrV0p"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPiV0"), negTrkEta, negNcl); + registry.fill(HIST("NclVsEtaPiV0p"), negTrkEta, negNcl); + nClVsPPrV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPpPrV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPPiV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negNcl); dEdxPrV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); dEdxPiV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); } @@ -776,42 +805,50 @@ struct PiKpRAA { registry.fill(HIST("MassALVsPt"), v0.pt(), v0.mAntiLambda()); registry.fill(HIST("nSigPrFromAL"), negTrkPt, negTrack.tpcNSigmaPr()); registry.fill(HIST("nSigPiFromAL"), posTrkPt, posTrack.tpcNSigmaPi()); - registry.fill(HIST("NclVsEtaPiV0"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPiV0p"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPrV0"), negTrkEta, negTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaPrV0p"), negTrkEta, negTrack.tpcNClsFound()); - nClVsPPrV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPpPrV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPPiV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); + registry.fill(HIST("NclVsEtaPiV0"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPiV0p"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaPrV0"), negTrkEta, negNcl); + registry.fill(HIST("NclVsEtaPrV0p"), negTrkEta, negNcl); + nClVsPPrV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPpPrV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPPiV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posNcl); dEdxPrV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); dEdxPiV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); } } } - if (v0Selections.applyInvMassSel && dMassK0s > v0Selections.dMassSel && dMassL > v0Selections.dMassSel && dMassAL > v0Selections.dMassSel && dMassG < v0Selections.dMassGcut) { + if (v0Selections.applyInvMassSel && dMassK0s > v0Selections.dMassSel && dMassL > v0Selections.dMassSel && dMassAL > v0Selections.dMassSel && dMassG < v0Selections.dMassSel) { if (passesGammaSelection(collision, v0)) { if (std::abs(alpha) < v0Selections.armAlphaSel && qT < v0Selections.qTSel) { - registry.fill(HIST("V0sCounter"), V0sCounter::Gamma); - registry.fill(HIST("ArmG"), alpha, qT); - registry.fill(HIST("MassGVsPt"), v0.pt(), v0.mGamma()); - registry.fill(HIST("nSigElFromG"), negTrkPt, negTrack.tpcNSigmaEl()); - registry.fill(HIST("nSigElFromG"), posTrkPt, posTrack.tpcNSigmaEl()); - registry.fill(HIST("NclVsEtaElV0"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaElV0p"), posTrkEta, posTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaElV0"), negTrkEta, negTrack.tpcNClsFound()); - registry.fill(HIST("NclVsEtaElV0p"), negTrkEta, negTrack.tpcNClsFound()); - nClVsPElV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPpElV0[negIndexEta]->Fill(negPorPt, negTrack.tpcNClsFound()); - nClVsPElV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - nClVsPpElV0[posIndexEta]->Fill(posPorPt, posTrack.tpcNClsFound()); - registry.fill(HIST("dEdxVsEtaElMIPV0"), posTrkEta, posTrkdEdx); - registry.fill(HIST("dEdxVsEtaElMIPV0p"), posTrkEta, posTrkdEdx); - registry.fill(HIST("dEdxVsEtaElMIPV0"), negTrkEta, negTrkdEdx); - registry.fill(HIST("dEdxVsEtaElMIPV0p"), negTrkEta, negTrkdEdx); - dEdxElV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); - dEdxElV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); + const double posDedxCal{etaCal.pEtaCalPlateau->GetBinContent(etaCal.pEtaCalPlateau->FindBin(posTrkEta))}; + const double negDedxCal{etaCal.pEtaCalPlateau->GetBinContent(etaCal.pEtaCalPlateau->FindBin(negTrkEta))}; + if (std::abs(posTrkdEdx - posDedxCal) < v0Selections.dEdxPlateauSel && std::abs(negTrkdEdx - negDedxCal) < v0Selections.dEdxPlateauSel) { + registry.fill(HIST("V0sCounter"), V0sCounter::Gamma); + registry.fill(HIST("ArmG"), alpha, qT); + registry.fill(HIST("MassGVsPt"), v0.pt(), v0.mGamma()); + registry.fill(HIST("nSigElFromG"), negTrkPt, negTrack.tpcNSigmaEl()); + registry.fill(HIST("nSigElFromG"), posTrkPt, posTrack.tpcNSigmaEl()); + registry.fill(HIST("NclVsEtaElV0"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaElV0p"), posTrkEta, posNcl); + registry.fill(HIST("NclVsEtaElV0"), negTrkEta, negNcl); + registry.fill(HIST("NclVsEtaElV0p"), negTrkEta, negNcl); + nClVsPElV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPpElV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsPElV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsPpElV0[posIndexEta]->Fill(posPorPt, posNcl); + if (posTrkP > kMinPMIP && posTrkP < kMaxPMIP) { + registry.fill(HIST("dEdxVsEtaElMIPV0"), posTrkEta, posTrkdEdx); + registry.fill(HIST("dEdxVsEtaElMIPV0p"), posTrkEta, posTrkdEdx); + } + if (negTrkP > kMinPMIP && negTrkP < kMaxPMIP) { + registry.fill(HIST("dEdxVsEtaElMIPV0"), negTrkEta, negTrkdEdx); + registry.fill(HIST("dEdxVsEtaElMIPV0p"), negTrkEta, negTrkdEdx); + } + dEdxElV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); + dEdxElV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); + } } } } @@ -870,7 +907,14 @@ struct PiKpRAA { bool passesTrackSelectionDaughters(const T& track) { - bool isSelected = trkSelDaugthers.IsSelected(track) ? true : false; + const float eta{track.eta()}; + const int16_t nCrossedRows{track.tpcNClsCrossedRows()}; + + bool isSelected{false}; + if (v0Selections.selElecFromGammas) + isSelected = std::abs(eta) < v0Selections.maxEtaDaughter && nCrossedRows >= v0Selections.minNCrossedRows ? true : false; + if (!v0Selections.selElecFromGammas) + isSelected = trkSelDaugthers.IsSelected(track) ? true : false; return isSelected; } @@ -1188,12 +1232,15 @@ struct PiKpRAA { { if (pathEtaCal.value.empty() == false) { etaCal.pEtaCal = ccdb->getForTimeStamp(pathEtaCal, ccdbNoLaterThan.value); - if (etaCal.pEtaCal == nullptr) { + etaCal.pEtaCalPlateau = ccdb->getForTimeStamp(pathEtaCalPlateau, ccdbNoLaterThan.value); + if (etaCal.pEtaCal == nullptr) LOGF(fatal, "Could not load pEtaCal from %s", pathEtaCal.value.c_str()); - } + + if (etaCal.pEtaCalPlateau == nullptr) + LOGF(fatal, "Could not load pEtaCalPlateau from %s", pathEtaCalPlateau.value.c_str()); } - if (etaCal.pEtaCal) + if (etaCal.pEtaCal && etaCal.pEtaCalPlateau) etaCal.isCalLoaded = true; } }; From 08bed14e8bfa8a7b128d2d9118901ec18003aa2a Mon Sep 17 00:00:00 2001 From: Omar Vazquez Date: Tue, 9 Sep 2025 17:33:54 -0500 Subject: [PATCH 2/4] Change track selection optimized for electrons V2 --- PWGLF/Tasks/Nuspex/piKpRAA.cxx | 89 +++++++++++++++++++++++----------- 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/PWGLF/Tasks/Nuspex/piKpRAA.cxx b/PWGLF/Tasks/Nuspex/piKpRAA.cxx index dca877691b0..730863592da 100644 --- a/PWGLF/Tasks/Nuspex/piKpRAA.cxx +++ b/PWGLF/Tasks/Nuspex/piKpRAA.cxx @@ -77,6 +77,9 @@ std::array, kNEtaHists> dEdxPrV0{}; std::array, kNEtaHists> dEdxElV0{}; std::array, kNEtaHists> dEdxPiTOF{}; std::array, kNEtaHists> dEdx{}; +std::array, kNEtaHists> nClVsdEdxPiV0{}; +std::array, kNEtaHists> nClVsdEdxElV0{}; +std::array, kNEtaHists> nClVsdEdxPrV0{}; std::array, kNEtaHists> pTVsP{}; std::array, kNEtaHists> nClVsP{}; std::array, kNEtaHists> nClVsPElV0{}; @@ -86,6 +89,9 @@ std::array, kNEtaHists> nClVsPp{}; std::array, kNEtaHists> nClVsPpElV0{}; std::array, kNEtaHists> nClVsPpPiV0{}; std::array, kNEtaHists> nClVsPpPrV0{}; +std::array, kNEtaHists> nClVsdEdxpPiV0{}; +std::array, kNEtaHists> nClVsdEdxpElV0{}; +std::array, kNEtaHists> nClVsdEdxpPrV0{}; struct PiKpRAA { @@ -342,24 +348,25 @@ struct PiKpRAA { registry.add("NclFindable", ";;Findable Ncl TPC", kTH2F, {axisPtNcl, axisNcl}); registry.add("NclFindablep", ";;Findable #LTNcl#GT TPC", kTProfile, {axisPtNcl}); - registry.add("NclFoundVsPhipBeforeCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); - registry.add("NclFoundVsPhipBeforeCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); - registry.add("NclFoundVsPhipAfterCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); - registry.add("NclFoundVsPhipAfterCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclVsPhipBeforeCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclVsPhipBeforeCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclVsPhipAfterCut", Form("Found #LTNcl#GT TPC;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); + registry.add("NclVsPhipAfterCutPID", Form("#LTNcl#GT used for PID;%s (GeV/#it{c});#varphi", titlePorPt.data()), kTProfile2D, {{{axisXPhiCut}, {350, 0.0, 0.35}}}); registry.add("NclVsEta", ";#eta;Found Ncl TPC", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); registry.add("NclVsEtaPID", ";#eta;Ncl used for PID", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); registry.add("NclVsEtap", ";#eta;Found #LTNcl#GT TPC", kTProfile, {axisEta}); registry.add("NclVsEtaPIDp", ";#eta;#LTNcl#GT used for PID", kTProfile, {axisEta}); - registry.add("NclVsEtaPiMIP", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta; Found Ncl TPC", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); - registry.add("NclVsEtaPiMIPp", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta; Found #LTNcl#GT TPC", kTProfile, {axisEta}); - registry.add("NclVsEtaPiV0", ";#eta; Found Ncl TPC", kTH2F, {axisEta, axisNcl}); - registry.add("NclVsEtaPiV0p", ";#eta; Found #LTNcl#GT TPC", kTProfile, {axisEta}); - registry.add("NclVsEtaPrV0", ";#eta; Found Ncl TPC", kTH2F, {axisEta, axisNcl}); - registry.add("NclVsEtaPrV0p", ";#eta; Found #LTNcl#GT TPC", kTProfile, {axisEta}); - registry.add("NclVsEtaElV0", ";#eta; Found Ncl TPC", kTH2F, {axisEta, axisNcl}); - registry.add("NclVsEtaElV0p", ";#eta; Found #LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("NclVsEtaPiMIP", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta;Ncl TPC", kTH2F, {{{axisEta}, {161, -0.5, 160.5}}}); + registry.add("NclVsEtaPiMIPp", "MIP #pi^{+} + #pi^{-} (0.4 < #it{p} < 0.6 GeV/#it{c}, 40 < dE/dx < 60);#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("NclVsEtaPiV0", ";#eta;Ncl TPC", kTH2F, {axisEta, axisNcl}); + registry.add("NclVsEtaPiV0p", ";#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("NclVsEtaPrV0", ";#eta;Ncl TPC", kTH2F, {axisEta, axisNcl}); + registry.add("NclVsEtaPrV0p", ";#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("NclVsEtaElV0", ";#eta;Ncl TPC", kTH2F, {axisEta, axisNcl}); + registry.add("NclVsEtaElV0p", ";#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); + registry.add("EtaVsPhi", ";#eta;#varphi;", kTH2F, {{axisEta}, {100, 0, 2 * PI}}); registry.add("EtaVsYK0s", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPiL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPrL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); @@ -387,14 +394,20 @@ struct PiKpRAA { dEdxPrV0[i] = registry.add(Form("dEdxPrV0_%s", endingEta[i]), Form("p + #bar{p}, %s;Momentum (GeV/#it{c});dE/dx;", latexEta[i]), kTH3F, {axisPtV0s, axisdEdx, axisCent}); dEdxElV0[i] = registry.add(Form("dEdxElV0_%s", endingEta[i]), Form("e^{+} + e^{-}, %s;Momentum (GeV/#it{c});dE/dx;", latexEta[i]), kTH3F, {axisPtV0s, axisdEdx, axisCent}); dEdxPiTOF[i] = registry.add(Form("dEdxPiTOF_%s", endingEta[i]), Form("#pi^{+} + #pi^{-}, %s;Momentum (GeV/#it{c});dE/dx;", latexEta[i]), kTH3F, {axisPtV0s, axisdEdx, axisCent}); - nClVsP[i] = registry.add(Form("NclFound_%s", endingEta[i]), Form("%s;;Found Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); - nClVsPElV0[i] = registry.add(Form("NclFoundElV0_%s", endingEta[i]), Form("%s;;Found Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); - nClVsPPiV0[i] = registry.add(Form("NclFoundPiV0_%s", endingEta[i]), Form("%s;;Found Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); - nClVsPPrV0[i] = registry.add(Form("NclFoundPrV0_%s", endingEta[i]), Form("%s;;Found Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); - nClVsPp[i] = registry.add(Form("NclFoundp_%s", endingEta[i]), Form("%s;;Found #LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); - nClVsPpElV0[i] = registry.add(Form("NclFoundpElV0_%s", endingEta[i]), Form("%s;;Found #LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); - nClVsPpPiV0[i] = registry.add(Form("NclFoundpPiV0_%s", endingEta[i]), Form("%s;;Found #LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); - nClVsPpPrV0[i] = registry.add(Form("NclFoundpPrV0_%s", endingEta[i]), Form("%s;;Found #LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); + nClVsdEdxPiV0[i] = registry.add(Form("NclVsdEdxPiV0_%s", endingEta[i]), Form("%s;#it{N}_{cl} used for PID;dE/dx;", latexEta[i]), kTH2F, {axisNcl, axisdEdx}); + nClVsdEdxElV0[i] = registry.add(Form("NclVsdEdxElV0_%s", endingEta[i]), Form("%s;#it{N}_{cl} used for PID;dE/dx;", latexEta[i]), kTH2F, {axisNcl, axisdEdx}); + nClVsdEdxPrV0[i] = registry.add(Form("NclVsdEdxPrV0_%s", endingEta[i]), Form("%s;#it{N}_{cl} used for PID;dE/dx;", latexEta[i]), kTH2F, {axisNcl, axisdEdx}); + nClVsP[i] = registry.add(Form("NclVsPPrimaries_%s", endingEta[i]), Form("%s;;Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); + nClVsPElV0[i] = registry.add(Form("NclVsPElV0_%s", endingEta[i]), Form("%s;;Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); + nClVsPPiV0[i] = registry.add(Form("NclVsPPiV0_%s", endingEta[i]), Form("%s;;Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); + nClVsPPrV0[i] = registry.add(Form("NclVsPPrV0_%s", endingEta[i]), Form("%s;;Ncl TPC", latexEta[i]), kTH2F, {axisPtNcl, axisNcl}); + nClVsPp[i] = registry.add(Form("NclVsPrimariesp_%s", endingEta[i]), Form("%s;;#LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); + nClVsPpElV0[i] = registry.add(Form("NclVsPElV0p_%s", endingEta[i]), Form("%s;;#LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); + nClVsPpPiV0[i] = registry.add(Form("NclVsPPiV0p_%s", endingEta[i]), Form("%s;;#LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); + nClVsPpPrV0[i] = registry.add(Form("NclVsPPrV0p_%s", endingEta[i]), Form("%s;;#LT#it{N}_{cl}#GT TPC", latexEta[i]), kTProfile, {axisPtNcl}); + nClVsdEdxpElV0[i] = registry.add(Form("NclVsdEdxElV0p_%s", endingEta[i]), Form("%s;;#LTd#it{E}/d#it{x}#GT", latexEta[i]), kTProfile, {axisNcl}); + nClVsdEdxpPiV0[i] = registry.add(Form("NclVsdEdxPiV0p_%s", endingEta[i]), Form("%s;;#LTd#it{E}/d#it{x}#GT", latexEta[i]), kTProfile, {axisNcl}); + nClVsdEdxpPrV0[i] = registry.add(Form("NclVsdEdxPrV0p_%s", endingEta[i]), Form("%s;;#LTd#it{E}/d#it{x}#GT", latexEta[i]), kTProfile, {axisNcl}); } } @@ -424,19 +437,20 @@ struct PiKpRAA { if (applyNchSel.value) { LOG(info) << "\tLoading Nch-based selections!"; - LOG(info) << "\t pathMeanNch=" << pathMeanNch.value; - LOG(info) << "\t pathSigmaNch=" << pathSigmaNch.value; + LOG(info) << "\tpathMeanNch=" << pathMeanNch.value; + LOG(info) << "\tpathSigmaNch=" << pathSigmaNch.value; } if (v0Selections.applyPhiCut) { LOG(info) << "\tLoading Phi cut!"; - LOG(info) << "\t pathPhiCutLow=" << pathPhiCutLow.value; - LOG(info) << "\t pathPhiCutHigh=" << pathPhiCutHigh.value; + LOG(info) << "\tpathPhiCutLow=" << pathPhiCutLow.value; + LOG(info) << "\tpathPhiCutHigh=" << pathPhiCutHigh.value; } if (v0Selections.applyEtaCal) { LOG(info) << "\tLoading Eta Cal!"; - LOG(info) << "\t pathEtaCal=" << pathEtaCal.value; + LOG(info) << "\tpathEtaCal=" << pathEtaCal.value; + LOG(info) << "\tpathEtaCalPlateau=" << pathEtaCalPlateau.value; loadEtaCalibration(); } @@ -551,8 +565,8 @@ struct PiKpRAA { float phiPrime{phi}; phiPrimeFunc(phiPrime, magField, charge); - registry.fill(HIST("NclFoundVsPhipBeforeCut"), pOrPt, phiPrime, nclFound); - registry.fill(HIST("NclFoundVsPhipBeforeCutPID"), pOrPt, phiPrime, nclPID); + registry.fill(HIST("NclVsPhipBeforeCut"), pOrPt, phiPrime, nclFound); + registry.fill(HIST("NclVsPhipBeforeCutPID"), pOrPt, phiPrime, nclPID); if (v0Selections.applyPhiCut) { if (!passesPhiSelection(pOrPt, phiPrime)) @@ -605,14 +619,15 @@ struct PiKpRAA { nClVsP[indexEta]->Fill(pOrPt, ncl); nClVsPp[indexEta]->Fill(pOrPt, ncl); registry.fill(HIST("dcaVsPt"), pt, track.dcaXY()); + registry.fill(HIST("EtaVsPhi"), eta, track.phi()); registry.fill(HIST("NclVsEta"), eta, nclFound); registry.fill(HIST("NclVsEtap"), eta, nclFound); registry.fill(HIST("NclVsEtaPID"), eta, nclPID); registry.fill(HIST("NclVsEtaPIDp"), eta, nclPID); registry.fill(HIST("NclFindable"), pOrPt, track.tpcNClsFindable()); registry.fill(HIST("NclFindablep"), pOrPt, track.tpcNClsFindable()); - registry.fill(HIST("NclFoundVsPhipAfterCut"), pOrPt, phiPrime, nclFound); - registry.fill(HIST("NclFoundVsPhipAfterCutPID"), pOrPt, phiPrime, nclPID); + registry.fill(HIST("NclVsPhipAfterCut"), pOrPt, phiPrime, nclFound); + registry.fill(HIST("NclVsPhipAfterCutPID"), pOrPt, phiPrime, nclPID); if (track.hasTOF() && track.goodTOFMatch()) { const float tTOF{track.tofSignal()}; @@ -759,6 +774,10 @@ struct PiKpRAA { nClVsPPiV0[posIndexEta]->Fill(posPorPt, posNcl); nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posNcl); nClVsPPiV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsdEdxPiV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxpPiV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxPiV0[posIndexEta]->Fill(posNcl, posTrkdEdx); + nClVsdEdxpPiV0[posIndexEta]->Fill(posNcl, posTrkdEdx); nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negNcl); dEdxPiV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); dEdxPiV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); @@ -792,6 +811,10 @@ struct PiKpRAA { nClVsPpPrV0[posIndexEta]->Fill(posPorPt, posNcl); nClVsPPiV0[negIndexEta]->Fill(negPorPt, negNcl); nClVsPpPiV0[negIndexEta]->Fill(negPorPt, negNcl); + nClVsdEdxPiV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxpPiV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxPrV0[posIndexEta]->Fill(posNcl, posTrkdEdx); + nClVsdEdxpPrV0[posIndexEta]->Fill(posNcl, posTrkdEdx); dEdxPrV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); dEdxPiV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); } @@ -813,6 +836,10 @@ struct PiKpRAA { nClVsPpPrV0[negIndexEta]->Fill(negPorPt, negNcl); nClVsPPiV0[posIndexEta]->Fill(posPorPt, posNcl); nClVsPpPiV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsdEdxPrV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxpPrV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxPiV0[posIndexEta]->Fill(posNcl, posTrkdEdx); + nClVsdEdxpPiV0[posIndexEta]->Fill(posNcl, posTrkdEdx); dEdxPrV0[negIndexEta]->Fill(negTrkP, negTrkdEdx, centrality); dEdxPiV0[posIndexEta]->Fill(posTrkP, posTrkdEdx, centrality); } @@ -838,6 +865,10 @@ struct PiKpRAA { nClVsPpElV0[negIndexEta]->Fill(negPorPt, negNcl); nClVsPElV0[posIndexEta]->Fill(posPorPt, posNcl); nClVsPpElV0[posIndexEta]->Fill(posPorPt, posNcl); + nClVsdEdxElV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxpElV0[negIndexEta]->Fill(negNcl, negTrkdEdx); + nClVsdEdxElV0[posIndexEta]->Fill(posNcl, posTrkdEdx); + nClVsdEdxpElV0[posIndexEta]->Fill(posNcl, posTrkdEdx); if (posTrkP > kMinPMIP && posTrkP < kMaxPMIP) { registry.fill(HIST("dEdxVsEtaElMIPV0"), posTrkEta, posTrkdEdx); registry.fill(HIST("dEdxVsEtaElMIPV0p"), posTrkEta, posTrkdEdx); From 71d036aec1b0a7b37926725d63404940cbaf0ec9 Mon Sep 17 00:00:00 2001 From: Omar Vazquez Date: Tue, 9 Sep 2025 17:40:13 -0500 Subject: [PATCH 3/4] Change track selection optimized for electrons V2 --- PWGLF/Tasks/Nuspex/piKpRAA.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/Tasks/Nuspex/piKpRAA.cxx b/PWGLF/Tasks/Nuspex/piKpRAA.cxx index 730863592da..55a2b8e1d4e 100644 --- a/PWGLF/Tasks/Nuspex/piKpRAA.cxx +++ b/PWGLF/Tasks/Nuspex/piKpRAA.cxx @@ -366,7 +366,7 @@ struct PiKpRAA { registry.add("NclVsEtaElV0", ";#eta;Ncl TPC", kTH2F, {axisEta, axisNcl}); registry.add("NclVsEtaElV0p", ";#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); - registry.add("EtaVsPhi", ";#eta;#varphi;", kTH2F, {{axisEta}, {100, 0, 2 * PI}}); + registry.add("EtaVsPhi", ";#eta;#varphi;", kTH2F, {{axisEta}, {100, 0, 2 * o2::constants::math::PI}}); registry.add("EtaVsYK0s", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPiL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPrL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); From 05b40980e2020244e0e77159ef3d2acecdad35df Mon Sep 17 00:00:00 2001 From: Omar Vazquez Date: Tue, 9 Sep 2025 20:47:07 -0500 Subject: [PATCH 4/4] Change track selection optimized for electrons V2 --- PWGLF/Tasks/Nuspex/piKpRAA.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGLF/Tasks/Nuspex/piKpRAA.cxx b/PWGLF/Tasks/Nuspex/piKpRAA.cxx index 55a2b8e1d4e..c64467b7c6d 100644 --- a/PWGLF/Tasks/Nuspex/piKpRAA.cxx +++ b/PWGLF/Tasks/Nuspex/piKpRAA.cxx @@ -366,7 +366,7 @@ struct PiKpRAA { registry.add("NclVsEtaElV0", ";#eta;Ncl TPC", kTH2F, {axisEta, axisNcl}); registry.add("NclVsEtaElV0p", ";#eta;#LTNcl#GT TPC", kTProfile, {axisEta}); - registry.add("EtaVsPhi", ";#eta;#varphi;", kTH2F, {{axisEta}, {100, 0, 2 * o2::constants::math::PI}}); + registry.add("EtaVsPhi", ";#eta;#varphi;", kTH2F, {{axisEta}, {100, 0, o2::constants::math::TwoPI}}); registry.add("EtaVsYK0s", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPiL", ";#eta;#it{y};", kTH2F, {axisEta, axisY}); registry.add("EtaVsYPrL", ";#eta;#it{y};", kTH2F, {axisEta, axisY});