@@ -79,7 +79,7 @@ struct strangenessFilter {
7979 HistogramRegistry QAHistosTriggerParticles{" QAHistosTriggerParticles" , {}, OutputObjHandlingPolicy::AnalysisObject, false , true };
8080 HistogramRegistry QAHistosStrangenessTracking{" QAHistosStrangenessTracking" , {}, OutputObjHandlingPolicy::AnalysisObject, false , true };
8181 HistogramRegistry EventsvsMultiplicity{" EventsvsMultiplicity" , {}, OutputObjHandlingPolicy::AnalysisObject, true , true };
82- OutputObj<TH1D> hProcessedEvents{TH1D (" hProcessedEvents" , " Strangeness - event filtered;; Number of events" , 17 , -1 ., 16 .)};
82+ OutputObj<TH1D> hProcessedEvents{TH1D (" hProcessedEvents" , " Strangeness - event filtered;; Number of events" , 20 , -1 ., 19 .)};
8383 OutputObj<TH1F> hCandidate{TH1F (" hCandidate" , " ; Candidate pass selection; Number of events" , 30 , 0 ., 30 .)};
8484 OutputObj<TH1F> 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 .)};
8585
@@ -146,12 +146,11 @@ struct strangenessFilter {
146146 Configurable<bool > hastof{" hastof" , 1 , " Has TOF (OOB condition)" };
147147 Configurable<float > ptthrtof{" ptthrtof" , 1.0 , " Pt threshold to apply TOF condition" };
148148 Configurable<bool > sel8{" sel8" , 0 , " Apply sel8 event selection" };
149- // 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
150- Configurable<int > HMTriggerSelectionForOmega{" HMTriggerSelectionForOmega" , 1 , " 0 = HM trigger selection for omega" };
151- Configurable<int > LowLimitHMTriggerOmegaTracks{" LowLimitHMTriggerOmegaTracks" , 30 , " tracks as defined in multFilter selection [0]" };
149+ // 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
150+ Configurable<uint > HMTriggerSelectionForOmega{" HMTriggerSelectionForOmega" , 5 , " 0 = HM trigger selection for omega" };
151+ Configurable<int > LowLimitHMTriggerOmegaTracks{" LowLimitHMTriggerOmegaTracks" , 90 , " tracks as defined in multFilter selection [0]" };
152152 Configurable<int > LowLimitHMTriggerOmegaT0M{" LowLimitHMTriggerOmegaT0M" , 3100 , " T0M" };
153153 Configurable<int > LowLimitHMTriggerOmegaT0MNorm{" LowLimitHMTriggerOmegaT0MNorm" , 70 , " normalised T0M selection [2] of multFiler" };
154- Configurable<int > LowLimitHMTriggerOmegaTracksGlobal{" LowLimitHMTriggerOmegaTracksGlobal" , 30 , " tracks as defined in table MultsGlobal" };
155154
156155 Configurable<float > avPyT0C{" avPyT0C" , 8.83 , " nch from pythia T0C" };
157156 Configurable<float > avPyT0A{" avPyT0A" , 8.16 , " nch from pythia T0A" };
@@ -210,11 +209,14 @@ struct strangenessFilter {
210209 float mBz = 0 .;
211210 std::vector<double >* mMeanMultT0C ;
212211 std::vector<double >* mMeanMultT0A ;
213- TrackSelection mTrackSelector ;
214212
215213 bool selectTrack (const auto & track)
216214 {
217- 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 ;
215+ 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 ;
216+ }
217+ bool selectTrackOHM (const auto & track)
218+ {
219+ return track.pt () > 0.15 && track.tpcNClsCrossedRows () >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls () >= 0 .8f && track.tpcChi2NCl () <= 4 .f && track.itsChi2NCl () <= 36 .f && (track.itsClusterMap () & 0x7 ) != 0 ;
218220 }
219221
220222 float getV0V0DCA (TVector3 v01pos, TVector3 v01mom, TVector3 v02pos, TVector3 v02mom)
@@ -294,20 +296,6 @@ struct strangenessFilter {
294296
295297 void init (o2::framework::InitContext&)
296298 {
297- // Track selector from multFilter
298- mTrackSelector .SetPtRange (0 .15f , 1e10f);
299- mTrackSelector .SetEtaRange (-0 .8f , 0 .8f );
300- mTrackSelector .SetRequireITSRefit (true );
301- mTrackSelector .SetRequireTPCRefit (true );
302- mTrackSelector .SetRequireGoldenChi2 (false );
303- mTrackSelector .SetMinNClustersTPC (60 );
304- mTrackSelector .SetMinNCrossedRowsTPC (70 );
305- mTrackSelector .SetMinNCrossedRowsOverFindableClustersTPC (0 .8f );
306- mTrackSelector .SetMaxChi2PerClusterTPC (4 .f );
307- mTrackSelector .SetRequireHitsInITSLayers (1 , {0 , 1 }); // one hit in any SPD layer
308- mTrackSelector .SetMaxChi2PerClusterITS (36 .f );
309- mTrackSelector .SetMaxDcaXY (1 .f );
310- mTrackSelector .SetMaxDcaZ (1 .f );
311299 // set V0 parameters in the helper
312300 mStraHelper .v0selections .minCrossedRows = tpcmincrossedrows;
313301 if (dcamesontopv <= dcabaryontopv)
@@ -351,7 +339,12 @@ struct strangenessFilter {
351339 hProcessedEvents->GetXaxis ()->SetBinLabel (14 , aod::filtering::OmegaHighMult::columnLabel ());
352340 hProcessedEvents->GetXaxis ()->SetBinLabel (15 , aod::filtering::DoubleOmega::columnLabel ());
353341 hProcessedEvents->GetXaxis ()->SetBinLabel (16 , aod::filtering::OmegaXi::columnLabel ());
342+ // hProcessedEvents->GetXaxis()->SetBinLabel(17, aod::filtering::LambdaLambda::columnLabel());
354343 hProcessedEvents->GetXaxis ()->SetBinLabel (17 , " LL" );
344+ hProcessedEvents->GetXaxis ()->SetBinLabel (18 , aod::filtering::OmegaHighMultTrk::columnLabel ());
345+ hProcessedEvents->GetXaxis ()->SetBinLabel (19 , aod::filtering::HighMultFT0M::columnLabel ());
346+ hProcessedEvents->GetXaxis ()->SetBinLabel (20 , aod::filtering::HighMultTrk::columnLabel ());
347+
355348
356349 hCandidate->GetXaxis ()->SetBinLabel (1 , " All" );
357350 hCandidate->GetXaxis ()->SetBinLabel (2 , " PassBuilderSel" );
@@ -378,7 +371,7 @@ struct strangenessFilter {
378371 AxisSpec multAxisNTPV = {100 , 0 .0f , 100 .0f , " N. tracks PV estimator" };
379372 AxisSpec multAxisT0M = {600 , 0 .0f , 6000 .0f , " T0M multiplicity estimator" };
380373 AxisSpec multAxisT0MNorm = {150 , 0 .0f , 150 .0f , " Normalised T0M multiplicity estimator" };
381- AxisSpec multAxisTrack = {100 , 0 .0f , 100 .0f , " Tracks" };
374+ AxisSpec multAxisTrack = {120 , 0 .0f , 120 .0f , " Tracks" };
382375 AxisSpec multAxisV0A = {500 , 0 .0f , 25000 .0f , " V0A multiplicity estimator" };
383376 AxisSpec ximassAxis = {200 , 1 .28f , 1 .36f };
384377 AxisSpec omegamassAxis = {200 , 1 .59f , 1 .75f };
@@ -436,15 +429,14 @@ struct strangenessFilter {
436429 QAHistosTriggerParticles.add (" hEtaTriggerAllEv" , " hEtaTriggerAllEv" , HistType::kTH2F , {{180 , -1.4 , 1.4 , " Eta of trigger particles" }, {ptTriggAxis}});
437430 QAHistosTriggerParticles.add (" hPhiTriggerAllEv" , " hPhiTriggerAllEv" , HistType::kTH2F , {{100 , 0 , 2 * TMath::Pi (), " Phi of trigger particles" }, {ptTriggAxis}});
438431
432+ EventsvsMultiplicity.add (" AllEventsvsEta" , " eta ditribution" , HistType::kTH1F , {{100 ,-2 ,2 }});
439433 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0M" , " T0M distribution of all events" , HistType::kTH1F , {multAxisT0M});
440434 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MwOmega" , " T0M distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisT0M});
441435 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNorm" , " T0M Normalised of all events" , HistType::kTH1F , {multAxisT0MNorm});
442- EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MwOmegaNorm " , " T0M distribution of events w/ Omega candidate - Normalised FT0M" , HistType::kTH1F , {multAxisT0MNorm});
436+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNormwOmega " , " T0M distribution of events w/ Omega candidate - Normalised FT0M" , HistType::kTH1F , {multAxisT0MNorm});
443437 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNoFT0" , " T0M distribution of events without FT0" , HistType::kTH1F , {multAxisT0M});
444438 EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracks" , " Track distribution of all events" , HistType::kTH1F , {multAxisTrack});
445439 EventsvsMultiplicity.add (" AllEventsvsMultiplicityTrackswOmega" , " Track distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisTrack});
446- EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracksGlobal" , " TrackGlobal distribution of all events" , HistType::kTH1F , {multAxisTrack});
447- EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracksGlobalwOmega" , " TrackGlobal distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisTrack});
448440
449441 if (doextraQA) {
450442 EventsvsMultiplicity.add (" AllEventsvsMultiplicityZeqV0A" , " ZeqV0A distribution of all events" , HistType::kTH1F , {multAxisV0A});
@@ -535,6 +527,7 @@ struct strangenessFilter {
535527 QAHistosStrangenessTracking.add (" hPtVsMassTrkXiSelected" , " cascades;p_{T} (GeV/#it{c});m (GeV/#it{c}^2)" , HistType::kTH2D , {{200 , 0 ., 10 .}, {1000 , 1.2 , 1.7 }});
536528 QAHistosStrangenessTracking.add (" hPtVsMassTrkOmegaSelected" , " cascades;p_{T} (GeV/#it{c});m (GeV/#it{c}^2)" , HistType::kTH2D , {{200 , 0 ., 10 .}, {1000 , 1.6 , 2.1 }});
537529 }
530+ LOG (info) << " HM Omega track trigger:" << LowLimitHMTriggerOmegaTracks;
538531 }
539532
540533 void initCCDB (int run)
@@ -587,14 +580,14 @@ struct strangenessFilter {
587580
588581 void fillTriggerTable (bool keepEvent[])
589582 {
590- 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 ]);
583+ 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 ] );
591584 }
592585
593586 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*/ )
594587 {
595588 // Is event good? [0] = Omega, [1] = high-pT hadron + Omega, [2] = 2Xi, [3] = 3Xi, [4] = 4Xi, [5] single-Xi, [6] Omega with high radius
596589 // [7] tracked Xi, [8] tracked Omega, [9] Omega + high mult event
597- bool keepEvent[13 ]{}; // explicitly zero-initialised
590+ bool keepEvent[16 ]{}; // explicitly zero-initialised
598591 std::vector<std::array<int64_t , 2 >> v0sFromOmegaID;
599592 std::vector<std::array<int64_t , 2 >> v0sFromXiID;
600593
@@ -625,30 +618,30 @@ struct strangenessFilter {
625618 }
626619
627620 Bool_t isHighMultEvent = 0 ;
621+ Bool_t isHighMultEventTrk = 0 ;
622+
628623 float multFT0MNorm = 0 .f ;
629624 float multTrack = 0 ;
630- EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0M" ), collision.multFT0M ());
631- if (HMTriggerSelectionForOmega & 1 ) {
625+ if (HMTriggerSelectionForOmega & 1 ) { // =====================================
632626 for (auto & track : tracks) {
633- if (!mTrackSelector .IsSelected (track)) {
634- continue ;
627+ if (selectTrackOHM (track)) {
628+ multTrack++;
629+ EventsvsMultiplicity.fill (HIST (" AllEventsvsEta" ), track.eta ());
635630 }
636- // Has this track contributed to the collision vertex fit
637- if (!track.isPVContributor ()) {
638- continue ;
639- }
640- multTrack++;
641631 }
632+ // std::cout << multTrack << std::endl;
633+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTracks" ), multTrack);
642634 if (multTrack > LowLimitHMTriggerOmegaTracks) {
643- isHighMultEvent = 1 ;
635+ isHighMultEventTrk = 1 ;
644636 }
645637 }
646- if (HMTriggerSelectionForOmega & 2 ) {
638+ if (HMTriggerSelectionForOmega & 2 ) { // =====================================
639+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0M" ), collision.multFT0M ());
647640 if (collision.multFT0M () > LowLimitHMTriggerOmegaT0M) {
648641 isHighMultEvent = 1 ;
649642 }
650643 }
651- if (HMTriggerSelectionForOmega & 4 ) {
644+ if (HMTriggerSelectionForOmega & 4 ) { // =====================================
652645 float meanMultT0C = 0 .f ;
653646 float fac_FT0C_ebe = 1 .;
654647 meanMultT0C = (*mMeanMultT0C )[0 ];
@@ -707,12 +700,7 @@ struct strangenessFilter {
707700 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNoFT0" ), collision.multFT0M ());
708701 }
709702 }
710- if (HMTriggerSelectionForOmega & 8 ) {
711- if (collision.multNTracksGlobal () > LowLimitHMTriggerOmegaTracksGlobal) {
712- isHighMultEvent = 1 ;
713- }
714- }
715- if ((HMTriggerSelectionForOmega & 0xf ) == 0 ) {
703+ if ((HMTriggerSelectionForOmega & 0x7 ) == 0 ) {
716704 LOG (fatal) << " Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega;
717705 }
718706
@@ -1215,12 +1203,21 @@ struct strangenessFilter {
12151203 // Omega in high multiplicity events
12161204 if (omegacounter > 0 ) {
12171205 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmega" ), collision.multFT0M ());
1218- EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmegaNorm" ), multFT0MNorm);
1206+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNormwOmega" ), multFT0MNorm);
1207+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTrackswOmega" ), multTrack);
12191208 }
12201209 if (omegacounter > 0 && isHighMultEvent) {
12211210 keepEvent[9 ] = true ;
12221211 }
1223-
1212+ if (omegacounter > 0 && isHighMultEventTrk) {
1213+ keepEvent[13 ] = true ;
1214+ }
1215+ if (isHighMultEvent) {
1216+ keepEvent[14 ] = true ;
1217+ }
1218+ if (isHighMultEventTrk) {
1219+ keepEvent[15 ] = true ;
1220+ }
12241221 for (const auto & trackedCascade : trackedCascades) {
12251222 const auto trackCasc = trackedCascade.track_as <TrackCandidates>();
12261223 QAHistosStrangenessTracking.fill (HIST (" hPtCascTracked" ), trackCasc.pt ());
@@ -1411,6 +1408,15 @@ struct strangenessFilter {
14111408 if (keepEvent[12 ]) {
14121409 hProcessedEvents->Fill (15.5 );
14131410 }
1411+ if (keepEvent[13 ]) {
1412+ hProcessedEvents->Fill (16.5 );
1413+ }
1414+ if (keepEvent[14 ]) {
1415+ hProcessedEvents->Fill (17.5 );
1416+ }
1417+ if (keepEvent[15 ]) {
1418+ hProcessedEvents->Fill (18.5 );
1419+ }
14141420 // Filling the table
14151421 fillTriggerTable (keepEvent);
14161422 }
0 commit comments