From a4ab348e433ec6ff000b4893da18582825841e25 Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Sun, 25 Jan 2026 09:36:43 +0100 Subject: [PATCH 1/6] dev:adding track mults to hm omega filter' --- EventFiltering/PWGLF/strangenessFilter.cxx | 75 ++++++++++++++++++---- 1 file changed, 63 insertions(+), 12 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index 33d83d92d6f..4f1127fc9fe 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -146,9 +146,13 @@ struct strangenessFilter { Configurable hastof{"hastof", 1, "Has TOF (OOB condition)"}; Configurable ptthrtof{"ptthrtof", 1.0, "Pt threshold to apply TOF condition"}; Configurable sel8{"sel8", 0, "Apply sel8 event selection"}; - Configurable LowLimitFT0MMult{"LowLimitFT0MMult", 3100, "FT0M selection for omega + high multiplicity trigger"}; - Configurable LowLimitFT0MMultNorm{"LowLimitFT0MMultNorm", 70, "FT0M selection for omega + high multiplicity trigger with Normalised FT0M"}; - Configurable useNormalisedMult{"useNormalisedMult", 1, "Use avarage multiplicity for HM omega like in multFilter.cxx"}; + // Selection mask: bit 1 = 0 of multFilter - Tracks, bit 2 = FT0M used in 2024, bit 2 (4) = 2 of multFilter normalised FT0M used in 2025, bit 3 (8) = multNTracksGlobal + Configurable HMTriggerSelectionForOmega{"HMTriggerSelectionForOmega", 1, "0 = HM trigger selection for omega"}; + Configurable LowLimitHMTriggerOmegaTracks{"LowLimitHMTriggerOmegaTracks", 30, "tracks as defined in multFilter selection [0]"}; + Configurable LowLimitHMTriggerOmegaT0M{"LowLimitHMTriggerOmegaT0M", 3100, "T0M"}; + Configurable LowLimitHMTriggerOmegaT0MNorm{"LowLimitHMTriggerOmegaT0MNorm", 70, "normalised T0M selection [2] of multFiler"}; + Configurable LowLimitHMTriggerOmegaTracksGlobal{"LowLimitHMTriggerOmegaTracksGlobal", 30, "tracks as defined in table MultsGlobal"}; + Configurable avPyT0C{"avPyT0C", 8.83, "nch from pythia T0C"}; Configurable avPyT0A{"avPyT0A", 8.16, "nch from pythia T0A"}; Configurable isTimeFrameBorderCut{"isTimeFrameBorderCut", 1, "Apply timeframe border cut"}; @@ -206,6 +210,7 @@ struct strangenessFilter { float mBz = 0.; std::vector* mMeanMultT0C; std::vector* mMeanMultT0A; + TrackSelection mTrackSelector; bool selectTrack(const auto& track) { @@ -289,6 +294,20 @@ struct strangenessFilter { void init(o2::framework::InitContext&) { + // Track selector from multFilter + mTrackSelector.SetPtRange(0.15f, 1e10f); + mTrackSelector.SetEtaRange(-0.8f, 0.8f); + mTrackSelector.SetRequireITSRefit(true); + mTrackSelector.SetRequireTPCRefit(true); + mTrackSelector.SetRequireGoldenChi2(false); + mTrackSelector.SetMinNClustersTPC(60); + mTrackSelector.SetMinNCrossedRowsTPC(70); + mTrackSelector.SetMinNCrossedRowsOverFindableClustersTPC(0.8f); + mTrackSelector.SetMaxChi2PerClusterTPC(4.f); + mTrackSelector.SetRequireHitsInITSLayers(1, {0, 1}); // one hit in any SPD layer + mTrackSelector.SetMaxChi2PerClusterITS(36.f); + mTrackSelector.SetMaxDcaXY(1.f); + mTrackSelector.SetMaxDcaZ(1.f); // set V0 parameters in the helper mStraHelper.v0selections.minCrossedRows = tpcmincrossedrows; if (dcamesontopv <= dcabaryontopv) @@ -359,6 +378,7 @@ struct strangenessFilter { AxisSpec multAxisNTPV = {100, 0.0f, 100.0f, "N. tracks PV estimator"}; AxisSpec multAxisT0M = {600, 0.0f, 6000.0f, "T0M multiplicity estimator"}; AxisSpec multAxisT0MNorm = {150, 0.0f, 150.0f, "Normalised T0M multiplicity estimator"}; + AxisSpec multAxisTrack = {100, 0.0f, 100.0f, "Tracks"}; AxisSpec multAxisV0A = {500, 0.0f, 25000.0f, "V0A multiplicity estimator"}; AxisSpec ximassAxis = {200, 1.28f, 1.36f}; AxisSpec omegamassAxis = {200, 1.59f, 1.75f}; @@ -421,6 +441,10 @@ struct strangenessFilter { EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNorm", "T0M Normalised of all events", HistType::kTH1F, {multAxisT0MNorm}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MwOmegaNorm", "T0M distribution of events w/ Omega candidate - Normalised FT0M", HistType::kTH1F, {multAxisT0MNorm}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNoFT0", "T0M distribution of events without FT0", HistType::kTH1F, {multAxisT0M}); + EventsvsMultiplicity.add("AllEventsvsMultiplicityTracks", "Track distribution of all events", HistType::kTH1F, {multAxisTrack}); + EventsvsMultiplicity.add("AllEventsvsMultiplicityTrackswOmega", "Track distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisTrack}); + EventsvsMultiplicity.add("AllEventsvsMultiplicityTracksGlobal", "TrackGlobal distribution of all events", HistType::kTH1F, {multAxisTrack}); + EventsvsMultiplicity.add("AllEventsvsMultiplicityTracksGlobalwOmega", "TrackGlobal distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisTrack}); if (doextraQA) { EventsvsMultiplicity.add("AllEventsvsMultiplicityZeqV0A", "ZeqV0A distribution of all events", HistType::kTH1F, {multAxisV0A}); @@ -520,10 +544,12 @@ struct strangenessFilter { o2::parameters::GRPMagField* grpmag = ccdb->getForRun("GLO/Config/GRPMagField", run); o2::base::Propagator::initFieldFromGRP(grpmag); mBz = static_cast(grpmag->getNominalL3Field()); - if (useNormalisedMult) + if (HMTriggerSelectionForOmega & 4) { mMeanMultT0C = ccdb->getForRun>("Users/e/ekryshen/meanT0C", run); - if (useNormalisedMult) + } + if (HMTriggerSelectionForOmega & 4) { mMeanMultT0A = ccdb->getForRun>("Users/e/ekryshen/meanT0A", run); + } mDCAFitter.setBz(mBz); mDCAFitter.setPropagateToPCA(propToDCA); @@ -546,8 +572,8 @@ struct strangenessFilter { } // Tables - using CollisionCandidates = soa::Join::iterator; - using TrackCandidates = soa::Join; + using CollisionCandidates = soa::Join::iterator; + using TrackCandidates = soa::Join; float getMassWindow(const stfilter::species s, const float pt, const float nsigma = 6) { @@ -600,12 +626,29 @@ struct strangenessFilter { Bool_t isHighMultEvent = 0; float multFT0MNorm = 0.f; + float multTrack = 0; EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); - if (!useNormalisedMult) { - if (collision.multFT0M() > LowLimitFT0MMult) { + if (HMTriggerSelectionForOmega & 1) { + for (auto& track : tracks) { + if (!mTrackSelector.IsSelected(track)) { + continue; + } + // Has this track contributed to the collision vertex fit + if (!track.isPVContributor()) { + continue; + } + multTrack++; + } + if(multTrack > LowLimitHMTriggerOmegaTracks) { isHighMultEvent = 1; } - } else { + } + if (HMTriggerSelectionForOmega & 2) { + if (collision.multFT0M() > LowLimitHMTriggerOmegaT0M) { + isHighMultEvent = 1; + } + } + if (HMTriggerSelectionForOmega & 4) { float meanMultT0C = 0.f; float fac_FT0C_ebe = 1.; meanMultT0C = (*mMeanMultT0C)[0]; @@ -646,7 +689,7 @@ struct strangenessFilter { ampneg++; } EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), multFT0MNorm); - if (multFT0MNorm > LowLimitFT0MMultNorm) { + if (multFT0MNorm > LowLimitHMTriggerOmegaT0MNorm) { isHighMultEvent = 1; LOG(debug) << "Found FT0 using norm mult"; } @@ -660,10 +703,18 @@ struct strangenessFilter { } } else { LOG(debug) << "FT0 not Found, using FT0M"; - EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149); + //EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149); EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M()); } } + if(HMTriggerSelectionForOmega & 8) { + if (collision.multNTracksGlobal() > LowLimitHMTriggerOmegaTracksGlobal) { + isHighMultEvent = 1; + } + } + if ((HMTriggerSelectionForOmega & 0xf) == 0) { + LOG(fatal) << "Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega; + } // constants const float ctauxi = 4.91; // from PDG From a57ad65c64c2de6a4f4d58ab4fac62b8c26ab2eb Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Sun, 25 Jan 2026 09:37:35 +0100 Subject: [PATCH 2/6] clang --- EventFiltering/PWGLF/strangenessFilter.cxx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index 4f1127fc9fe..02db7c0d9e3 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -626,28 +626,28 @@ struct strangenessFilter { Bool_t isHighMultEvent = 0; float multFT0MNorm = 0.f; - float multTrack = 0; + float multTrack = 0; EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); if (HMTriggerSelectionForOmega & 1) { for (auto& track : tracks) { if (!mTrackSelector.IsSelected(track)) { - continue; + continue; } // Has this track contributed to the collision vertex fit if (!track.isPVContributor()) { - continue; + continue; } multTrack++; } - if(multTrack > LowLimitHMTriggerOmegaTracks) { + if (multTrack > LowLimitHMTriggerOmegaTracks) { isHighMultEvent = 1; } - } + } if (HMTriggerSelectionForOmega & 2) { if (collision.multFT0M() > LowLimitHMTriggerOmegaT0M) { isHighMultEvent = 1; } - } + } if (HMTriggerSelectionForOmega & 4) { float meanMultT0C = 0.f; float fac_FT0C_ebe = 1.; @@ -703,15 +703,15 @@ struct strangenessFilter { } } else { LOG(debug) << "FT0 not Found, using FT0M"; - //EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149); + // EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149); EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M()); } } - if(HMTriggerSelectionForOmega & 8) { + if (HMTriggerSelectionForOmega & 8) { if (collision.multNTracksGlobal() > LowLimitHMTriggerOmegaTracksGlobal) { isHighMultEvent = 1; } - } + } if ((HMTriggerSelectionForOmega & 0xf) == 0) { LOG(fatal) << "Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega; } From 73f3eeeafd4fd47489d8f6ce7cdfd8829bed1151 Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Fri, 30 Jan 2026 15:18:51 +0100 Subject: [PATCH 3/6] dev: 3 new triggers --- EventFiltering/PWGLF/strangenessFilter.cxx | 100 +++++++++++---------- EventFiltering/filterTables.h | 7 +- 2 files changed, 58 insertions(+), 49 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index 02db7c0d9e3..8af770d47f8 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -79,7 +79,7 @@ struct strangenessFilter { HistogramRegistry QAHistosTriggerParticles{"QAHistosTriggerParticles", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; HistogramRegistry QAHistosStrangenessTracking{"QAHistosStrangenessTracking", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; HistogramRegistry EventsvsMultiplicity{"EventsvsMultiplicity", {}, OutputObjHandlingPolicy::AnalysisObject, true, true}; - OutputObj hProcessedEvents{TH1D("hProcessedEvents", "Strangeness - event filtered;; Number of events", 17, -1., 16.)}; + OutputObj hProcessedEvents{TH1D("hProcessedEvents", "Strangeness - event filtered;; Number of events", 20, -1., 19.)}; OutputObj hCandidate{TH1F("hCandidate", "; Candidate pass selection; Number of events", 30, 0., 30.)}; OutputObj hEvtvshMinPt{TH1F("hEvtvshMinPt", " Number of h-Omega events with pT_h higher than thrd; min p_{T, trigg} (GeV/c); Number of events", 11, 0., 11.)}; @@ -146,12 +146,11 @@ struct strangenessFilter { Configurable hastof{"hastof", 1, "Has TOF (OOB condition)"}; Configurable ptthrtof{"ptthrtof", 1.0, "Pt threshold to apply TOF condition"}; Configurable sel8{"sel8", 0, "Apply sel8 event selection"}; - // Selection mask: bit 1 = 0 of multFilter - Tracks, bit 2 = FT0M used in 2024, bit 2 (4) = 2 of multFilter normalised FT0M used in 2025, bit 3 (8) = multNTracksGlobal - Configurable HMTriggerSelectionForOmega{"HMTriggerSelectionForOmega", 1, "0 = HM trigger selection for omega"}; - Configurable LowLimitHMTriggerOmegaTracks{"LowLimitHMTriggerOmegaTracks", 30, "tracks as defined in multFilter selection [0]"}; + // Selection mask: bit 1 = 0 of multFilter - Tracks, bit 2 = FT0M used in 2024, bit 2 (4) = 4 of multFilter normalised FT0M used in 2025 + Configurable HMTriggerSelectionForOmega{"HMTriggerSelectionForOmega", 5 , "0 = HM trigger selection for omega"}; + Configurable LowLimitHMTriggerOmegaTracks{"LowLimitHMTriggerOmegaTracks", 90, "tracks as defined in multFilter selection [0]"}; Configurable LowLimitHMTriggerOmegaT0M{"LowLimitHMTriggerOmegaT0M", 3100, "T0M"}; Configurable LowLimitHMTriggerOmegaT0MNorm{"LowLimitHMTriggerOmegaT0MNorm", 70, "normalised T0M selection [2] of multFiler"}; - Configurable LowLimitHMTriggerOmegaTracksGlobal{"LowLimitHMTriggerOmegaTracksGlobal", 30, "tracks as defined in table MultsGlobal"}; Configurable avPyT0C{"avPyT0C", 8.83, "nch from pythia T0C"}; Configurable avPyT0A{"avPyT0A", 8.16, "nch from pythia T0A"}; @@ -210,11 +209,14 @@ struct strangenessFilter { float mBz = 0.; std::vector* mMeanMultT0C; std::vector* mMeanMultT0A; - TrackSelection mTrackSelector; bool selectTrack(const auto& track) { - return track.pt() > hMinPt && std::abs(track.eta()) < hEta && track.tpcNClsCrossedRows() >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls() >= 0.8f && track.tpcChi2NCl() <= 4.f && track.itsChi2NCl() <= 36.f && (track.itsClusterMap() & 0x7) != 0; + return track.pt() > hMinPt && std::abs(track.eta()) < hEta && track.tpcNClsCrossedRows() >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls() >= 0.8f && track.tpcChi2NCl() <= 4.f && track.itsChi2NCl() <= 36.f && (track.itsClusterMap() & 0x7) != 0; + } + bool selectTrackOHM(const auto& track) + { + return track.pt() > 0.15 && track.tpcNClsCrossedRows() >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls() >= 0.8f && track.tpcChi2NCl() <= 4.f && track.itsChi2NCl() <= 36.f && (track.itsClusterMap() & 0x7) != 0; } float getV0V0DCA(TVector3 v01pos, TVector3 v01mom, TVector3 v02pos, TVector3 v02mom) @@ -294,20 +296,6 @@ struct strangenessFilter { void init(o2::framework::InitContext&) { - // Track selector from multFilter - mTrackSelector.SetPtRange(0.15f, 1e10f); - mTrackSelector.SetEtaRange(-0.8f, 0.8f); - mTrackSelector.SetRequireITSRefit(true); - mTrackSelector.SetRequireTPCRefit(true); - mTrackSelector.SetRequireGoldenChi2(false); - mTrackSelector.SetMinNClustersTPC(60); - mTrackSelector.SetMinNCrossedRowsTPC(70); - mTrackSelector.SetMinNCrossedRowsOverFindableClustersTPC(0.8f); - mTrackSelector.SetMaxChi2PerClusterTPC(4.f); - mTrackSelector.SetRequireHitsInITSLayers(1, {0, 1}); // one hit in any SPD layer - mTrackSelector.SetMaxChi2PerClusterITS(36.f); - mTrackSelector.SetMaxDcaXY(1.f); - mTrackSelector.SetMaxDcaZ(1.f); // set V0 parameters in the helper mStraHelper.v0selections.minCrossedRows = tpcmincrossedrows; if (dcamesontopv <= dcabaryontopv) @@ -351,7 +339,12 @@ struct strangenessFilter { hProcessedEvents->GetXaxis()->SetBinLabel(14, aod::filtering::OmegaHighMult::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(15, aod::filtering::DoubleOmega::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(16, aod::filtering::OmegaXi::columnLabel()); + //hProcessedEvents->GetXaxis()->SetBinLabel(17, aod::filtering::LambdaLambda::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(17, "LL"); + hProcessedEvents->GetXaxis()->SetBinLabel(18, aod::filtering::OmegaHighMultTrk::columnLabel()); + hProcessedEvents->GetXaxis()->SetBinLabel(19, aod::filtering::HighMultFT0M::columnLabel()); + hProcessedEvents->GetXaxis()->SetBinLabel(20, aod::filtering::HighMultTrk::columnLabel()); + hCandidate->GetXaxis()->SetBinLabel(1, "All"); hCandidate->GetXaxis()->SetBinLabel(2, "PassBuilderSel"); @@ -378,7 +371,7 @@ struct strangenessFilter { AxisSpec multAxisNTPV = {100, 0.0f, 100.0f, "N. tracks PV estimator"}; AxisSpec multAxisT0M = {600, 0.0f, 6000.0f, "T0M multiplicity estimator"}; AxisSpec multAxisT0MNorm = {150, 0.0f, 150.0f, "Normalised T0M multiplicity estimator"}; - AxisSpec multAxisTrack = {100, 0.0f, 100.0f, "Tracks"}; + AxisSpec multAxisTrack = {120, 0.0f, 120.0f, "Tracks"}; AxisSpec multAxisV0A = {500, 0.0f, 25000.0f, "V0A multiplicity estimator"}; AxisSpec ximassAxis = {200, 1.28f, 1.36f}; AxisSpec omegamassAxis = {200, 1.59f, 1.75f}; @@ -436,15 +429,14 @@ struct strangenessFilter { QAHistosTriggerParticles.add("hEtaTriggerAllEv", "hEtaTriggerAllEv", HistType::kTH2F, {{180, -1.4, 1.4, "Eta of trigger particles"}, {ptTriggAxis}}); QAHistosTriggerParticles.add("hPhiTriggerAllEv", "hPhiTriggerAllEv", HistType::kTH2F, {{100, 0, 2 * TMath::Pi(), "Phi of trigger particles"}, {ptTriggAxis}}); + EventsvsMultiplicity.add("AllEventsvsEta", "eta ditribution", HistType::kTH1F, {{100,-2,2}}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0M", "T0M distribution of all events", HistType::kTH1F, {multAxisT0M}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MwOmega", "T0M distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisT0M}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNorm", "T0M Normalised of all events", HistType::kTH1F, {multAxisT0MNorm}); - EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MwOmegaNorm", "T0M distribution of events w/ Omega candidate - Normalised FT0M", HistType::kTH1F, {multAxisT0MNorm}); + EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNormwOmega", "T0M distribution of events w/ Omega candidate - Normalised FT0M", HistType::kTH1F, {multAxisT0MNorm}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNoFT0", "T0M distribution of events without FT0", HistType::kTH1F, {multAxisT0M}); EventsvsMultiplicity.add("AllEventsvsMultiplicityTracks", "Track distribution of all events", HistType::kTH1F, {multAxisTrack}); EventsvsMultiplicity.add("AllEventsvsMultiplicityTrackswOmega", "Track distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisTrack}); - EventsvsMultiplicity.add("AllEventsvsMultiplicityTracksGlobal", "TrackGlobal distribution of all events", HistType::kTH1F, {multAxisTrack}); - EventsvsMultiplicity.add("AllEventsvsMultiplicityTracksGlobalwOmega", "TrackGlobal distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisTrack}); if (doextraQA) { EventsvsMultiplicity.add("AllEventsvsMultiplicityZeqV0A", "ZeqV0A distribution of all events", HistType::kTH1F, {multAxisV0A}); @@ -535,6 +527,7 @@ struct strangenessFilter { QAHistosStrangenessTracking.add("hPtVsMassTrkXiSelected", "cascades;p_{T} (GeV/#it{c});m (GeV/#it{c}^2)", HistType::kTH2D, {{200, 0., 10.}, {1000, 1.2, 1.7}}); QAHistosStrangenessTracking.add("hPtVsMassTrkOmegaSelected", "cascades;p_{T} (GeV/#it{c});m (GeV/#it{c}^2)", HistType::kTH2D, {{200, 0., 10.}, {1000, 1.6, 2.1}}); } + LOG(info) << "HM Omega track trigger:" << LowLimitHMTriggerOmegaTracks; } void initCCDB(int run) @@ -587,14 +580,14 @@ struct strangenessFilter { void fillTriggerTable(bool keepEvent[]) { - strgtable(keepEvent[0], keepEvent[1], keepEvent[2], keepEvent[3], keepEvent[4], keepEvent[5], keepEvent[6], keepEvent[7], keepEvent[8], keepEvent[9], keepEvent[10], keepEvent[11], keepEvent[12]); + strgtable(keepEvent[0], keepEvent[1], keepEvent[2], keepEvent[3], keepEvent[4], keepEvent[5], keepEvent[6], keepEvent[7], keepEvent[8], keepEvent[9], keepEvent[10], keepEvent[11], keepEvent[12], keepEvent[13], keepEvent[14], keepEvent[15]); } void process(CollisionCandidates const& collision, TrackCandidates const& tracks, aod::Cascades const& cascadesBase, aod::AssignedTrackedCascades const& trackedCascades, aod::AssignedTrackedV0s const& /*trackedV0s*/, aod::AssignedTracked3Bodys const& /*tracked3Bodys*/, aod::V0s const& v0Base, aod::BCs const&, aod::FT0s const& /*ft0s*/) { // Is event good? [0] = Omega, [1] = high-pT hadron + Omega, [2] = 2Xi, [3] = 3Xi, [4] = 4Xi, [5] single-Xi, [6] Omega with high radius // [7] tracked Xi, [8] tracked Omega, [9] Omega + high mult event - bool keepEvent[13]{}; // explicitly zero-initialised + bool keepEvent[16]{}; // explicitly zero-initialised std::vector> v0sFromOmegaID; std::vector> v0sFromXiID; @@ -625,30 +618,30 @@ struct strangenessFilter { } Bool_t isHighMultEvent = 0; + Bool_t isHighMultEventTrk = 0; + float multFT0MNorm = 0.f; float multTrack = 0; - EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); - if (HMTriggerSelectionForOmega & 1) { + if (HMTriggerSelectionForOmega & 1) { //===================================== for (auto& track : tracks) { - if (!mTrackSelector.IsSelected(track)) { - continue; + if(selectTrackOHM(track)) { + multTrack++; + EventsvsMultiplicity.fill(HIST("AllEventsvsEta"), track.eta()); } - // Has this track contributed to the collision vertex fit - if (!track.isPVContributor()) { - continue; - } - multTrack++; } + //std::cout << multTrack << std::endl; + EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTracks"), multTrack); if (multTrack > LowLimitHMTriggerOmegaTracks) { - isHighMultEvent = 1; + isHighMultEventTrk = 1; } } - if (HMTriggerSelectionForOmega & 2) { + if (HMTriggerSelectionForOmega & 2) { //===================================== + EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); if (collision.multFT0M() > LowLimitHMTriggerOmegaT0M) { isHighMultEvent = 1; } } - if (HMTriggerSelectionForOmega & 4) { + if (HMTriggerSelectionForOmega & 4) { //===================================== float meanMultT0C = 0.f; float fac_FT0C_ebe = 1.; meanMultT0C = (*mMeanMultT0C)[0]; @@ -707,12 +700,7 @@ struct strangenessFilter { EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M()); } } - if (HMTriggerSelectionForOmega & 8) { - if (collision.multNTracksGlobal() > LowLimitHMTriggerOmegaTracksGlobal) { - isHighMultEvent = 1; - } - } - if ((HMTriggerSelectionForOmega & 0xf) == 0) { + if ((HMTriggerSelectionForOmega & 0x7) == 0) { LOG(fatal) << "Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega; } @@ -1215,12 +1203,21 @@ struct strangenessFilter { // Omega in high multiplicity events if (omegacounter > 0) { EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MwOmega"), collision.multFT0M()); - EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MwOmegaNorm"), multFT0MNorm); + EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNormwOmega"), multFT0MNorm); + EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTrackswOmega"), multTrack); } if (omegacounter > 0 && isHighMultEvent) { keepEvent[9] = true; } - + if (omegacounter > 0 && isHighMultEventTrk) { + keepEvent[13] = true; + } + if(isHighMultEvent) { + keepEvent[14] = true; + } + if(isHighMultEventTrk) { + keepEvent[15] = true; + } for (const auto& trackedCascade : trackedCascades) { const auto trackCasc = trackedCascade.track_as(); QAHistosStrangenessTracking.fill(HIST("hPtCascTracked"), trackCasc.pt()); @@ -1411,6 +1408,15 @@ struct strangenessFilter { if (keepEvent[12]) { hProcessedEvents->Fill(15.5); } + if (keepEvent[13]) { + hProcessedEvents->Fill(16.5); + } + if (keepEvent[14]) { + hProcessedEvents->Fill(17.5); + } + if (keepEvent[15]) { + hProcessedEvents->Fill(18.5); + } // Filling the table fillTriggerTable(keepEvent); } diff --git a/EventFiltering/filterTables.h b/EventFiltering/filterTables.h index 1371d152e75..7bf07b4bae5 100644 --- a/EventFiltering/filterTables.h +++ b/EventFiltering/filterTables.h @@ -166,8 +166,11 @@ DECLARE_SOA_COLUMN(TrackedCascade, hasTrackedCascade, bool); //! at least 1 DECLARE_SOA_COLUMN(TrackedXi, hasTrackedXi, bool); //! at least 1 tracked Xi DECLARE_SOA_COLUMN(TrackedOmega, hasTrackedOmega, bool); //! at least 1 tracked Omega DECLARE_SOA_COLUMN(Tracked3Body, hasTracked3Body, bool); //! at least 1 tracked 3Body -DECLARE_SOA_COLUMN(OmegaHighMult, hasOmegaHighMult, bool); //! at least 1 Omega + high-mult event +DECLARE_SOA_COLUMN(OmegaHighMult, hasOmegaHighMult, bool); //! at least 1 Omega + high-mult FT0M event DECLARE_SOA_COLUMN(LambdaLambda, lambdaLambda, bool); //! at least 2 lambda satisfying selection +DECLARE_SOA_COLUMN(OmegaHighMultTrk, hasOmegaHighMultTrk, bool); //! at least 1 Omega + high-mult track event +DECLARE_SOA_COLUMN(HighMultFT0M, hasHighMultFT0M, bool); //! at least 1 Omega + high-mult track event +DECLARE_SOA_COLUMN(HighMultTrk, hasHighMultTrk, bool); //! at least 1 Omega + high-mult track event // F1-proton DECLARE_SOA_COLUMN(TriggerEventF1Proton, triggereventf1proton, bool); //! F1 - proton femto trigger event @@ -321,7 +324,7 @@ using FullJetFilter = FullJetFilters::iterator; // strangeness (lf) DECLARE_SOA_TABLE(StrangenessFilters, "AOD", "LFStrgFilters", //! - filtering::Omega, filtering::hadronOmega, filtering::DoubleXi, filtering::TripleXi, filtering::QuadrupleXi, filtering::SingleXiYN, filtering::OmegaLargeRadius, filtering::TrackedXi, filtering::TrackedOmega, filtering::OmegaHighMult, filtering::DoubleOmega, filtering::OmegaXi, filtering::LambdaLambda); + filtering::Omega, filtering::hadronOmega, filtering::DoubleXi, filtering::TripleXi, filtering::QuadrupleXi, filtering::SingleXiYN, filtering::OmegaLargeRadius, filtering::TrackedXi, filtering::TrackedOmega, filtering::OmegaHighMult, filtering::DoubleOmega, filtering::OmegaXi, filtering::LambdaLambda, filtering::OmegaHighMultTrk, filtering::HighMultFT0M, filtering::HighMultTrk); using StrangenessFilter = StrangenessFilters::iterator; From 4fb108d7da4660722f3a73c258d7dca6c291be73 Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Fri, 30 Jan 2026 15:19:39 +0100 Subject: [PATCH 4/6] clang --- EventFiltering/PWGLF/strangenessFilter.cxx | 23 +++++++++++----------- EventFiltering/filterTables.h | 6 +++--- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index 8af770d47f8..b4ab1e2d4c2 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -147,7 +147,7 @@ struct strangenessFilter { Configurable ptthrtof{"ptthrtof", 1.0, "Pt threshold to apply TOF condition"}; Configurable sel8{"sel8", 0, "Apply sel8 event selection"}; // Selection mask: bit 1 = 0 of multFilter - Tracks, bit 2 = FT0M used in 2024, bit 2 (4) = 4 of multFilter normalised FT0M used in 2025 - Configurable HMTriggerSelectionForOmega{"HMTriggerSelectionForOmega", 5 , "0 = HM trigger selection for omega"}; + Configurable HMTriggerSelectionForOmega{"HMTriggerSelectionForOmega", 5, "0 = HM trigger selection for omega"}; Configurable LowLimitHMTriggerOmegaTracks{"LowLimitHMTriggerOmegaTracks", 90, "tracks as defined in multFilter selection [0]"}; Configurable LowLimitHMTriggerOmegaT0M{"LowLimitHMTriggerOmegaT0M", 3100, "T0M"}; Configurable LowLimitHMTriggerOmegaT0MNorm{"LowLimitHMTriggerOmegaT0MNorm", 70, "normalised T0M selection [2] of multFiler"}; @@ -212,7 +212,7 @@ struct strangenessFilter { bool selectTrack(const auto& track) { - return track.pt() > hMinPt && std::abs(track.eta()) < hEta && track.tpcNClsCrossedRows() >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls() >= 0.8f && track.tpcChi2NCl() <= 4.f && track.itsChi2NCl() <= 36.f && (track.itsClusterMap() & 0x7) != 0; + return track.pt() > hMinPt && std::abs(track.eta()) < hEta && track.tpcNClsCrossedRows() >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls() >= 0.8f && track.tpcChi2NCl() <= 4.f && track.itsChi2NCl() <= 36.f && (track.itsClusterMap() & 0x7) != 0; } bool selectTrackOHM(const auto& track) { @@ -339,13 +339,12 @@ struct strangenessFilter { hProcessedEvents->GetXaxis()->SetBinLabel(14, aod::filtering::OmegaHighMult::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(15, aod::filtering::DoubleOmega::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(16, aod::filtering::OmegaXi::columnLabel()); - //hProcessedEvents->GetXaxis()->SetBinLabel(17, aod::filtering::LambdaLambda::columnLabel()); + // hProcessedEvents->GetXaxis()->SetBinLabel(17, aod::filtering::LambdaLambda::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(17, "LL"); hProcessedEvents->GetXaxis()->SetBinLabel(18, aod::filtering::OmegaHighMultTrk::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(19, aod::filtering::HighMultFT0M::columnLabel()); hProcessedEvents->GetXaxis()->SetBinLabel(20, aod::filtering::HighMultTrk::columnLabel()); - hCandidate->GetXaxis()->SetBinLabel(1, "All"); hCandidate->GetXaxis()->SetBinLabel(2, "PassBuilderSel"); hCandidate->GetXaxis()->SetBinLabel(3, "DCA_meson"); @@ -429,7 +428,7 @@ struct strangenessFilter { QAHistosTriggerParticles.add("hEtaTriggerAllEv", "hEtaTriggerAllEv", HistType::kTH2F, {{180, -1.4, 1.4, "Eta of trigger particles"}, {ptTriggAxis}}); QAHistosTriggerParticles.add("hPhiTriggerAllEv", "hPhiTriggerAllEv", HistType::kTH2F, {{100, 0, 2 * TMath::Pi(), "Phi of trigger particles"}, {ptTriggAxis}}); - EventsvsMultiplicity.add("AllEventsvsEta", "eta ditribution", HistType::kTH1F, {{100,-2,2}}); + EventsvsMultiplicity.add("AllEventsvsEta", "eta ditribution", HistType::kTH1F, {{100, -2, 2}}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0M", "T0M distribution of all events", HistType::kTH1F, {multAxisT0M}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MwOmega", "T0M distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisT0M}); EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNorm", "T0M Normalised of all events", HistType::kTH1F, {multAxisT0MNorm}); @@ -624,19 +623,19 @@ struct strangenessFilter { float multTrack = 0; if (HMTriggerSelectionForOmega & 1) { //===================================== for (auto& track : tracks) { - if(selectTrackOHM(track)) { - multTrack++; - EventsvsMultiplicity.fill(HIST("AllEventsvsEta"), track.eta()); + if (selectTrackOHM(track)) { + multTrack++; + EventsvsMultiplicity.fill(HIST("AllEventsvsEta"), track.eta()); } } - //std::cout << multTrack << std::endl; + // std::cout << multTrack << std::endl; EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTracks"), multTrack); if (multTrack > LowLimitHMTriggerOmegaTracks) { isHighMultEventTrk = 1; } } if (HMTriggerSelectionForOmega & 2) { //===================================== - EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); + EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M()); if (collision.multFT0M() > LowLimitHMTriggerOmegaT0M) { isHighMultEvent = 1; } @@ -1212,10 +1211,10 @@ struct strangenessFilter { if (omegacounter > 0 && isHighMultEventTrk) { keepEvent[13] = true; } - if(isHighMultEvent) { + if (isHighMultEvent) { keepEvent[14] = true; } - if(isHighMultEventTrk) { + if (isHighMultEventTrk) { keepEvent[15] = true; } for (const auto& trackedCascade : trackedCascades) { diff --git a/EventFiltering/filterTables.h b/EventFiltering/filterTables.h index 7bf07b4bae5..21dfa28d1d3 100644 --- a/EventFiltering/filterTables.h +++ b/EventFiltering/filterTables.h @@ -168,9 +168,9 @@ DECLARE_SOA_COLUMN(TrackedOmega, hasTrackedOmega, bool); //! at least 1 DECLARE_SOA_COLUMN(Tracked3Body, hasTracked3Body, bool); //! at least 1 tracked 3Body DECLARE_SOA_COLUMN(OmegaHighMult, hasOmegaHighMult, bool); //! at least 1 Omega + high-mult FT0M event DECLARE_SOA_COLUMN(LambdaLambda, lambdaLambda, bool); //! at least 2 lambda satisfying selection -DECLARE_SOA_COLUMN(OmegaHighMultTrk, hasOmegaHighMultTrk, bool); //! at least 1 Omega + high-mult track event -DECLARE_SOA_COLUMN(HighMultFT0M, hasHighMultFT0M, bool); //! at least 1 Omega + high-mult track event -DECLARE_SOA_COLUMN(HighMultTrk, hasHighMultTrk, bool); //! at least 1 Omega + high-mult track event +DECLARE_SOA_COLUMN(OmegaHighMultTrk, hasOmegaHighMultTrk, bool); //! at least 1 Omega + high-mult track event +DECLARE_SOA_COLUMN(HighMultFT0M, hasHighMultFT0M, bool); //! at least 1 Omega + high-mult track event +DECLARE_SOA_COLUMN(HighMultTrk, hasHighMultTrk, bool); //! at least 1 Omega + high-mult track event // F1-proton DECLARE_SOA_COLUMN(TriggerEventF1Proton, triggereventf1proton, bool); //! F1 - proton femto trigger event From 51498a6155bf02ade2d20d2f5708ea3a29e6de6d Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Fri, 30 Jan 2026 15:45:36 +0100 Subject: [PATCH 5/6] dev: fixes --- EventFiltering/PWGLF/strangenessFilter.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index b4ab1e2d4c2..3b5a226192d 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -564,8 +564,8 @@ struct strangenessFilter { } // Tables - using CollisionCandidates = soa::Join::iterator; - using TrackCandidates = soa::Join; + using CollisionCandidates = soa::Join::iterator; + using TrackCandidates = soa::Join; float getMassWindow(const stfilter::species s, const float pt, const float nsigma = 6) { From 5d0686a65adeef8d502b5b0abdc695ae2d4e5292 Mon Sep 17 00:00:00 2001 From: Roman Lietava Date: Fri, 30 Jan 2026 15:52:26 +0100 Subject: [PATCH 6/6] dev: fixes --- EventFiltering/PWGLF/strangenessFilter.cxx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/EventFiltering/PWGLF/strangenessFilter.cxx b/EventFiltering/PWGLF/strangenessFilter.cxx index 3b5a226192d..2aa8f73fbfc 100644 --- a/EventFiltering/PWGLF/strangenessFilter.cxx +++ b/EventFiltering/PWGLF/strangenessFilter.cxx @@ -699,10 +699,6 @@ struct strangenessFilter { EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M()); } } - if ((HMTriggerSelectionForOmega & 0x7) == 0) { - LOG(fatal) << "Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega; - } - // constants const float ctauxi = 4.91; // from PDG const float ctauomega = 2.461; // from PDG