diff --git a/PWGLF/DataModel/LFHStrangeCorrelationTables.h b/PWGLF/DataModel/LFHStrangeCorrelationTables.h index 3d54170252a..cebe1bf4115 100644 --- a/PWGLF/DataModel/LFHStrangeCorrelationTables.h +++ b/PWGLF/DataModel/LFHStrangeCorrelationTables.h @@ -29,8 +29,7 @@ #include "CommonConstants/PhysicsConstants.h" #include "Framework/AnalysisDataModel.h" - -#include +#include // Simple checker #define bitcheck(var, nbit) ((var) & (1 << (nbit))) @@ -45,8 +44,9 @@ DECLARE_SOA_INDEX_COLUMN(Collision, collision); //! DECLARE_SOA_COLUMN(MCPhysicalPrimary, mcPhysicalPrimary, bool); // true physical primary flag DECLARE_SOA_INDEX_COLUMN_FULL(Track, track, int, Tracks, "_Trigger"); //! DECLARE_SOA_COLUMN(MCOriginalPt, mcOriginalPt, float); // true generated pt +DECLARE_SOA_COLUMN(IsLeading, isLeading, bool); // is leading track in the event } // namespace triggerTracks -DECLARE_SOA_TABLE(TriggerTracks, "AOD", "TRIGGERTRACKS", o2::soa::Index<>, triggerTracks::CollisionId, triggerTracks::MCPhysicalPrimary, triggerTracks::TrackId, triggerTracks::MCOriginalPt); +DECLARE_SOA_TABLE(TriggerTracks, "AOD", "TRIGGERTRACKS", o2::soa::Index<>, triggerTracks::CollisionId, triggerTracks::MCPhysicalPrimary, triggerTracks::TrackId, triggerTracks::MCOriginalPt, triggerTracks::IsLeading); namespace triggerTrackExtras { DECLARE_SOA_COLUMN(Extra, extra, int); // true physical primary flag diff --git a/PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx b/PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx index b9a789e47b0..cd825f1ffa4 100644 --- a/PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx +++ b/PWGLF/TableProducer/Strangeness/hStrangeCorrelationFilter.cxx @@ -31,9 +31,9 @@ #include "Common/DataModel/TrackSelectionTables.h" #include "CCDB/BasicCCDBManager.h" -#include "Framework/ASoAHelpers.h" #include "Framework/AnalysisTask.h" #include "Framework/runDataProcessing.h" +#include #include "TF1.h" #include @@ -49,8 +49,8 @@ using namespace o2::framework::expressions; #define BIT_CHECK(var, nbit) ((var) & (1 << (nbit))) struct HStrangeCorrelationFilter { - const float ctauxiPDG = 4.91; // from PDG - const float ctauomegaPDG = 2.461; // from PDG + const float ctauxi = 4.91; // from PDG + const float ctauomega = 2.461; // from PDG Service ccdb; @@ -59,6 +59,8 @@ struct HStrangeCorrelationFilter { // master analysis switches Configurable doPPAnalysis{"doPPAnalysis", true, "if in pp, set to true"}; Configurable useParameterization{"useParameterization", true, "ture for parameterization method, false for hist method"}; + Configurable minPtForParam{"minPtForParam", 0.2f, "min pt for parameterization method"}; + Configurable maxPtForParam{"maxPtForParam", 14.5f, "max pt for parameterization method"}; // Operational Configurable fillTableOnlyWithCompatible{"fillTableOnlyWithCompatible", true, "pre-apply dE/dx, broad mass window in table filling"}; Configurable strangedEdxNSigmaLoose{"strangedEdxNSigmaLoose", 5, "Nsigmas for strange decay daughters"}; @@ -76,6 +78,8 @@ struct HStrangeCorrelationFilter { Configurable zVertexCut{"zVertexCut", 10, "Cut on PV position"}; Configurable selectINELgtZERO{"selectINELgtZERO", true, "select INEL>0 events"}; Configurable requireAllGoodITSLayers{"requireAllGoodITSLayers", false, " require that in the event all ITS are good"}; + Configurable minCentPercent{"minCentPercent", 0, "minimum centrality percentage"}; + Configurable maxCentPercent{"maxCentPercent", 100, "maximum centrality percentage"}; } eventSelections; struct : ConfigurableGroup { @@ -137,6 +141,10 @@ struct HStrangeCorrelationFilter { Configurable dcaBachtopv{"dcaBachtopv", 0.1, "dcaBachtopv"}; Configurable cascV0masswindow{"cascV0masswindow", 0.01, "cascV0masswindow"}; Configurable cascMindcav0topv{"cascMindcav0topv", 0.01, "cascMindcav0topv"}; + + // pt Range for pt dep cuts + Configurable highPtForCascDaugPtDep{"highPtForCascDaugPtDep", 4.0, "high pt range for pt dep cuts"}; + Configurable lowPtForCascDaugPtDep{"lowPtForCascDaugPtDep", 1.0, "low pt range for pt dep cuts"}; } systCuts; struct : ConfigurableGroup { // cascade selections in PbPb @@ -237,6 +245,17 @@ struct HStrangeCorrelationFilter { OutputObj zorroSummary{"zorroSummary"}; int mRunNumber; + struct TriggCandidate { + float pt; + int collisionId; + int trackId; + bool isPhysicalPrimary; + float origPt; + }; + TriggCandidate thisTrigg; + + std::vector triggerCandidates; + void init(InitContext const&) { zorroSummary.setObject(zorro.getZorroSummary()); @@ -326,7 +345,7 @@ struct HStrangeCorrelationFilter { if (std::abs(collision.posZ()) > eventSelections.zVertexCut) { return false; } - if (collision.centFT0M() > 100 || collision.centFT0M() < 0) { + if (collision.centFT0M() > eventSelections.maxCentPercent || collision.centFT0M() < eventSelections.minCentPercent) { return false; } if (!collision.isInelGt0() && eventSelections.selectINELgtZERO) { @@ -443,13 +462,13 @@ struct HStrangeCorrelationFilter { bool physicalPrimary = false; float origPt = -1; - float pdgCode = -9999; + float code = -9999; if constexpr (requires { assoc.mcParticle(); }) { if (assoc.has_mcParticle()) { auto mcParticle = assoc.mcParticle(); physicalPrimary = mcParticle.isPhysicalPrimary(); origPt = mcParticle.pt(); - pdgCode = mcParticle.pdgCode(); + code = mcParticle.pdgCode(); } } @@ -458,7 +477,7 @@ struct HStrangeCorrelationFilter { physicalPrimary, assoc.globalIndex(), origPt, - pdgCode); + code); assocPID( nSigmaTPCTOF[0], nSigmaTPCTOF[1], @@ -473,7 +492,7 @@ struct HStrangeCorrelationFilter { // cascadeselection in PbPb template - bool CascadeSelectedPbPb(TCascade casc, float pvx, float pvy, float pvz) + bool cascadeSelectedPbPb(TCascade casc, float pvx, float pvy, float pvz) { // bachBaryonCosPA if (casc.bachBaryonCosPA() < MorePbPbsystCuts.bachBaryonCosPA) @@ -486,9 +505,9 @@ struct HStrangeCorrelationFilter { return false; // dcacascdaughters float ptDepCut = MorePbPbsystCuts.dcaCacsDauPar0; - if (casc.pt() > 1 && casc.pt() < 4) + if (casc.pt() > systCuts.lowPtForCascDaugPtDep && casc.pt() < systCuts.highPtForCascDaugPtDep) ptDepCut = MorePbPbsystCuts.dcaCacsDauPar1; - else if (casc.pt() > 4) + else if (casc.pt() > systCuts.highPtForCascDaugPtDep) ptDepCut = MorePbPbsystCuts.dcaCacsDauPar2; if (casc.dcacascdaughters() > ptDepCut) return false; @@ -516,20 +535,37 @@ struct HStrangeCorrelationFilter { // for real data processing void processTriggers(soa::Join::iterator const& collision, soa::Filtered const& tracks, aod::BCsWithTimestamps const&) { + triggerCandidates.clear(); if (((doPPAnalysis && !isCollisionSelected(collision))) || (!doPPAnalysis && !isCollisionSelectedPbPb(collision))) { return; } /// _________________________________________________ /// Step 1: Populate table with trigger tracks + double leadingPt = -1.; + int leadingId = -1; for (auto const& track : tracks) { if (!isValidTrigger(track)) continue; + thisTrigg.pt = track.pt(); + thisTrigg.trackId = track.globalIndex(); + thisTrigg.collisionId = track.collisionId(); + thisTrigg.isPhysicalPrimary = false; // if you decide to check real data for primaries, you'll have a hard time + thisTrigg.origPt = 0; + triggerCandidates.push_back(thisTrigg); + if (track.pt() > leadingPt) { + leadingPt = track.pt(); + leadingId = track.globalIndex(); + } + } + for (auto const& TriggCandidate : triggerCandidates) { + bool isLeading = (leadingId == TriggCandidate.trackId); triggerTrack( - track.collisionId(), - false, // if you decide to check real data for primaries, you'll have a hard time - track.globalIndex(), - 0); + TriggCandidate.collisionId, + TriggCandidate.isPhysicalPrimary, + TriggCandidate.trackId, + TriggCandidate.origPt, + isLeading); triggerTrackExtra(1); } } @@ -537,27 +573,41 @@ struct HStrangeCorrelationFilter { // for MC processing void processTriggersMC(soa::Join::iterator const& collision, soa::Filtered const& tracks, aod::McParticles const&, aod::BCsWithTimestamps const&) { + triggerCandidates.clear(); if (((doPPAnalysis && !isCollisionSelected(collision))) || (!doPPAnalysis && !isCollisionSelectedPbPb(collision))) { return; } /// _________________________________________________ /// Step 1: Populate table with trigger tracks + double leadingPt = -1.; + int leadingId = -1; for (auto const& track : tracks) { if (!isValidTrigger(track)) continue; - bool physicalPrimary = false; - float origPt = -1; + thisTrigg.pt = track.pt(); + thisTrigg.trackId = track.globalIndex(); + thisTrigg.collisionId = track.collisionId(); if (track.has_mcParticle()) { auto mcParticle = track.mcParticle(); - physicalPrimary = mcParticle.isPhysicalPrimary(); - origPt = mcParticle.pt(); + thisTrigg.isPhysicalPrimary = mcParticle.isPhysicalPrimary(); + thisTrigg.origPt = mcParticle.pt(); } + triggerCandidates.push_back(thisTrigg); + if (track.pt() > leadingPt) { + leadingPt = track.pt(); + leadingId = track.globalIndex(); + } + } + + for (auto const& TriggCandidate : triggerCandidates) { + bool isLeading = (leadingId == TriggCandidate.trackId); triggerTrack( - track.collisionId(), - physicalPrimary, - track.globalIndex(), - origPt); + TriggCandidate.collisionId, + TriggCandidate.isPhysicalPrimary, + TriggCandidate.trackId, + TriggCandidate.origPt, + isLeading); triggerTrackExtra(1); } } @@ -571,7 +621,7 @@ struct HStrangeCorrelationFilter { return; } // No need to correlate stuff that's in far collisions - if (std::abs(collision.posZ()) > 10.0) { + if (std::abs(collision.posZ()) > eventSelections.zVertexCut) { return; } if (zorroMask.value != "") { @@ -599,7 +649,7 @@ struct HStrangeCorrelationFilter { return; } // No need to correlate stuff that's in far collisions - if (std::abs(collision.posZ()) > 10.0) { + if (std::abs(collision.posZ()) > eventSelections.zVertexCut) { return; } if (zorroMask.value != "") { @@ -627,7 +677,7 @@ struct HStrangeCorrelationFilter { return; } // No need to correlate stuff that's in far collisions - if (std::abs(collision.posZ()) > 10.0) { + if (std::abs(collision.posZ()) > eventSelections.zVertexCut) { return; } if (zorroMask.value != "") { @@ -654,7 +704,7 @@ struct HStrangeCorrelationFilter { return; } // No need to correlate stuff that's in far collisions - if (std::abs(collision.posZ()) > 10.0) { + if (std::abs(collision.posZ()) > eventSelections.zVertexCut) { return; } if (zorroMask.value != "") { @@ -782,7 +832,7 @@ struct HStrangeCorrelationFilter { // Load parameters for sideband subtraction initParametersFromCCDB(bc); // simplified handling: calculate NSigma in mass here - if (v0.pt() < 0.2f || v0.pt() > 14.5f) { + if (v0.pt() < minPtForParam || v0.pt() > maxPtForParam) { massNSigmaK0Short = (v0.mK0Short() - hK0ShortMean->GetBinContent(hK0ShortMean->FindBin(v0.pt()))) / (hK0ShortWidth->GetBinContent(hK0ShortWidth->FindBin(v0.pt())) + 1e-6); massNSigmaLambda = (v0.mLambda() - hLambdaMean->GetBinContent(hLambdaMean->FindBin(v0.pt()))) / (hLambdaWidth->GetBinContent(hLambdaMean->FindBin(v0.pt())) + 1e-6); massNSigmaAntiLambda = (v0.mAntiLambda() - hLambdaMean->GetBinContent(hLambdaMean->FindBin(v0.pt()))) / (hLambdaWidth->GetBinContent(hLambdaMean->FindBin(v0.pt())) + 1e-6); @@ -924,7 +974,7 @@ struct HStrangeCorrelationFilter { // Load parameters for sideband subtraction initParametersFromCCDB(bc); // simplified handling: calculate NSigma in mass here - if (v0.pt() < 0.2f || v0.pt() > 14.5f) { + if (v0.pt() < minPtForParam || v0.pt() > maxPtForParam) { massNSigmaK0Short = (v0.mK0Short() - hK0ShortMean->GetBinContent(hK0ShortMean->FindBin(v0.pt()))) / (hK0ShortWidth->GetBinContent(hK0ShortWidth->FindBin(v0.pt())) + 1e-6); massNSigmaLambda = (v0.mLambda() - hLambdaMean->GetBinContent(hLambdaMean->FindBin(v0.pt()))) / (hLambdaWidth->GetBinContent(hLambdaMean->FindBin(v0.pt())) + 1e-6); massNSigmaAntiLambda = (v0.mAntiLambda() - hLambdaMean->GetBinContent(hLambdaMean->FindBin(v0.pt()))) / (hLambdaWidth->GetBinContent(hLambdaMean->FindBin(v0.pt())) + 1e-6); @@ -939,11 +989,11 @@ struct HStrangeCorrelationFilter { bool trueLambda = false; bool trueAntiLambda = false; v0PhysicalPrimary = v0.isPhysicalPrimary(); - if (v0.pdgCode() == 310) + if (v0.pdgCode() == PDG_t::kK0Short) trueK0Short = true; - if (v0.pdgCode() == 3122) + if (v0.pdgCode() == PDG_t::kLambda0) trueLambda = true; - if (v0.pdgCode() == -3122) + if (v0.pdgCode() == PDG_t::kLambda0Bar) trueAntiLambda = true; if (compatibleK0Short && (!doTrueSelectionInMass || (trueK0Short && v0PhysicalPrimary))) histos.fill(HIST("h3dMassK0Short"), v0.pt(), v0.mK0Short(), cent); @@ -999,7 +1049,7 @@ struct HStrangeCorrelationFilter { continue; if (negTrackCast.tpcNClsCrossedRows() < systCuts.minTPCNCrossedRows) continue; - if (!doPPAnalysis && !CascadeSelectedPbPb(casc, collision.posX(), collision.posY(), collision.posZ())) + if (!doPPAnalysis && !cascadeSelectedPbPb(casc, collision.posX(), collision.posY(), collision.posZ())) continue; // check dE/dx compatibility int compatibleXiMinus = 0; @@ -1008,8 +1058,8 @@ struct HStrangeCorrelationFilter { int compatibleOmegaPlus = 0; float cascpos = std::hypot(casc.x() - collision.posX(), casc.y() - collision.posY(), casc.z() - collision.posZ()); float cascptotmom = std::hypot(casc.px(), casc.py(), casc.pz()); - float ctauXi = o2::constants::physics::MassXiMinus * cascpos / ((cascptotmom + 1e-13) * ctauxiPDG); - float ctauOmega = o2::constants::physics::MassOmegaMinus * cascpos / ((cascptotmom + 1e-13) * ctauomegaPDG); + float ctauXi = o2::constants::physics::MassXiMinus * cascpos / ((cascptotmom + 1e-13) * ctauxi); + float ctauOmega = o2::constants::physics::MassOmegaMinus * cascpos / ((cascptotmom + 1e-13) * ctauomega); if (std::abs(posTrackCast.tpcNSigmaPr()) < strangedEdxNSigmaLoose && std::abs(negTrackCast.tpcNSigmaPi()) < strangedEdxNSigmaLoose && std::abs(bachTrackCast.tpcNSigmaPi()) < strangedEdxNSigmaLoose && casc.sign() < 0) { if (doPPAnalysis || (std::abs(casc.dcabachtopv()) > MorePbPbsystCuts.dcaBachToPV && std::abs(casc.dcapostopv()) > MorePbPbsystCuts.dcaBaryonToPV && @@ -1106,7 +1156,7 @@ struct HStrangeCorrelationFilter { } else { // Load parameters for sideband subtraction initParametersFromCCDB(bc); - if (casc.pt() < 0.2f || casc.pt() > 14.5f) { + if (casc.pt() < minPtForParam || casc.pt() > maxPtForParam) { massNSigmaXi = (casc.mXi() - hXiMean->GetBinContent(hXiMean->FindBin(casc.pt()))) / (hXiWidth->GetBinContent(hXiWidth->FindBin(casc.pt())) + 1e-6); massNSigmaOmega = (casc.mOmega() - hOmegaMean->GetBinContent(hOmegaMean->FindBin(casc.pt()))) / (hOmegaWidth->GetBinContent(hOmegaWidth->FindBin(casc.pt())) + 1e-6); } else { @@ -1171,7 +1221,7 @@ struct HStrangeCorrelationFilter { continue; if (negTrackCast.tpcNClsCrossedRows() < systCuts.minTPCNCrossedRows) continue; - if (!doPPAnalysis && !CascadeSelectedPbPb(casc, collision.posX(), collision.posY(), collision.posZ())) + if (!doPPAnalysis && !cascadeSelectedPbPb(casc, collision.posX(), collision.posY(), collision.posZ())) continue; // check dE/dx compatibility @@ -1181,8 +1231,8 @@ struct HStrangeCorrelationFilter { int compatibleOmegaPlus = 0; float cascpos = std::hypot(casc.x() - collision.posX(), casc.y() - collision.posY(), casc.z() - collision.posZ()); float cascptotmom = std::hypot(casc.px(), casc.py(), casc.pz()); - float ctauXi = o2::constants::physics::MassXiMinus * cascpos / ((cascptotmom + 1e-13) * ctauxiPDG); - float ctauOmega = o2::constants::physics::MassOmegaMinus * cascpos / ((cascptotmom + 1e-13) * ctauomegaPDG); + float ctauXi = o2::constants::physics::MassXiMinus * cascpos / ((cascptotmom + 1e-13) * ctauxi); + float ctauOmega = o2::constants::physics::MassOmegaMinus * cascpos / ((cascptotmom + 1e-13) * ctauomega); if (std::abs(posTrackCast.tpcNSigmaPr()) < strangedEdxNSigmaLoose && std::abs(negTrackCast.tpcNSigmaPi()) < strangedEdxNSigmaLoose && std::abs(bachTrackCast.tpcNSigmaPi()) < strangedEdxNSigmaLoose && casc.sign() < 0) { if (doPPAnalysis || (std::abs(casc.dcabachtopv()) > MorePbPbsystCuts.dcaBachToPV && std::abs(casc.dcapostopv()) > MorePbPbsystCuts.dcaBaryonToPV && @@ -1279,7 +1329,7 @@ struct HStrangeCorrelationFilter { } else { // Load parameters for sideband subtraction initParametersFromCCDB(bc); - if (casc.pt() < 0.2f || casc.pt() > 14.5f) { + if (casc.pt() < minPtForParam || casc.pt() > maxPtForParam) { massNSigmaXi = (casc.mXi() - hXiMean->GetBinContent(hXiMean->FindBin(casc.pt()))) / (hXiWidth->GetBinContent(hXiWidth->FindBin(casc.pt())) + 1e-6); massNSigmaOmega = (casc.mOmega() - hOmegaMean->GetBinContent(hOmegaMean->FindBin(casc.pt()))) / (hOmegaWidth->GetBinContent(hOmegaWidth->FindBin(casc.pt())) + 1e-6); } else { @@ -1294,13 +1344,13 @@ struct HStrangeCorrelationFilter { bool trueOmegaMinus = false; bool trueOmegaPlus = false; cascPhysicalPrimary = casc.isPhysicalPrimary(); - if (casc.pdgCode() == 3312) + if (casc.pdgCode() == PDG_t::kXiMinus) trueXiMinus = true; - if (casc.pdgCode() == -3312) + if (casc.pdgCode() == PDG_t::kXiPlusBar) trueXiPlus = true; - if (casc.pdgCode() == 3334) + if (casc.pdgCode() == PDG_t::kOmegaMinus) trueOmegaMinus = true; - if (casc.pdgCode() == -3334) + if (casc.pdgCode() == PDG_t::kOmegaPlusBar) trueOmegaPlus = true; if (compatibleXiMinus && (!doTrueSelectionInMass || (trueXiMinus && cascPhysicalPrimary))) histos.fill(HIST("h3dMassXiMinus"), casc.pt(), casc.mXi(), cent); diff --git a/PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx b/PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx index 45d6dcf01cb..1fb4ce9054c 100644 --- a/PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx +++ b/PWGLF/Tasks/Strangeness/hStrangeCorrelation.cxx @@ -100,6 +100,7 @@ struct HStrangeCorrelation { Configurable etaSel{"etaSel", 0.8, "Selection in eta for trigger and associated particles"}; Configurable ySel{"ySel", 0.5, "Selection in rapidity for consistency checks"}; + Configurable useTheLeadingParticleAsTrigger{"useTheLeadingParticleAsTrigger", false, "if true, use the leading particle in the event as trigger particle"}; // used for event selections in Pb-Pb Configurable cfgCutOccupancyHigh{"cfgCutOccupancyHigh", 3000, "High cut on TPC occupancy"}; Configurable cfgCutOccupancyLow{"cfgCutOccupancyLow", 0, "Low cut on TPC occupancy"}; @@ -475,7 +476,7 @@ struct HStrangeCorrelation { } template - bool isValidTrigger(TTrack track) + bool isValidTrigger(TTrack track, bool isLeading) { if (track.tpcNClsCrossedRows() < systCuts.minTPCNCrossedRowsTrigger) { return false; // crossed rows @@ -502,6 +503,9 @@ struct HStrangeCorrelation { if (triggerParticleCharge < 0 && track.sign() > 0) { return false; } + if (useTheLeadingParticleAsTrigger && !isLeading) { + return false; + } return true; } template @@ -631,7 +635,7 @@ struct HStrangeCorrelation { if (doTriggPhysicalPrimary && !triggerTrack.mcPhysicalPrimary()) continue; auto trigg = triggerTrack.track_as(); - if (!isValidTrigger(trigg)) + if (!isValidTrigger(trigg, triggerTrack.isLeading())) continue; float efficiencyTrigg = 1.0f; float efficiencyTriggError = 0.0f; @@ -835,7 +839,7 @@ struct HStrangeCorrelation { if (doTriggPhysicalPrimary && !triggerTrack.mcPhysicalPrimary()) continue; auto trigg = triggerTrack.track_as(); - if (!isValidTrigger(trigg)) + if (!isValidTrigger(trigg, triggerTrack.isLeading())) continue; float efficiencyTrigg = 1.0f; @@ -1027,7 +1031,7 @@ struct HStrangeCorrelation { if (doTriggPhysicalPrimary && !triggerTrack.mcPhysicalPrimary()) continue; auto trigg = triggerTrack.template track_as(); - if (!isValidTrigger(trigg)) + if (!isValidTrigger(trigg, triggerTrack.isLeading())) continue; float efficiencyTrigger = 1.0f; @@ -1706,7 +1710,7 @@ struct HStrangeCorrelation { for (auto const& triggerTrack : slicedTriggerTracks) { auto track = triggerTrack.track_as(); - if (!isValidTrigger(track)) { + if (!isValidTrigger(track, triggerTrack.isLeading())) { continue; } auto binNumber = histos.get(HIST("axes/hPtTriggerAxis"))->FindFixBin(track.pt()) - 1; @@ -1750,7 +1754,7 @@ struct HStrangeCorrelation { if (!doprocessSameEventHCascades && !doprocessSameEventHV0s && !doprocessSameEventHPions) { for (auto const& triggerTrack : triggerTracks) { auto track = triggerTrack.track_as(); - if (!isValidTrigger(track)) + if (!isValidTrigger(track, triggerTrack.isLeading())) continue; float efficiency = 1.0f; if (efficiencyFlags.applyEfficiencyCorrection) { @@ -1887,7 +1891,7 @@ struct HStrangeCorrelation { if (!doprocessSameEventHCascades) { for (auto const& triggerTrack : triggerTracks) { auto track = triggerTrack.track_as(); - if (!isValidTrigger(track)) + if (!isValidTrigger(track, triggerTrack.isLeading())) continue; histos.fill(HIST("hTriggerAllSelectedEtaVsPt"), track.pt(), track.eta(), cent); histos.fill(HIST("hTriggerPtResolution"), track.pt(), triggerTrack.mcOriginalPt()); @@ -2003,7 +2007,7 @@ struct HStrangeCorrelation { } for (auto const& triggerTrack : triggerTracks) { auto track = triggerTrack.track_as(); - if (!isValidTrigger(track)) + if (!isValidTrigger(track, triggerTrack.isLeading())) continue; histos.fill(HIST("hTriggerAllSelectedEtaVsPt"), track.pt(), track.eta(), cent); histos.fill(HIST("hTriggerPtResolution"), track.pt(), triggerTrack.mcOriginalPt()); @@ -2070,7 +2074,7 @@ struct HStrangeCorrelation { if (!doprocessSameEventHCascades && !doprocessSameEventHV0s) { for (auto const& triggerTrack : triggerTracks) { auto track = triggerTrack.track_as(); - if (!isValidTrigger(track)) + if (!isValidTrigger(track, triggerTrack.isLeading())) continue; histos.fill(HIST("hTriggerAllSelectedEtaVsPt"), track.pt(), track.eta(), collision.centFT0M()); histos.fill(HIST("hTriggerPtResolution"), track.pt(), triggerTrack.mcOriginalPt());