@@ -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
@@ -147,9 +147,14 @@ struct strangenessFilter {
147147 Configurable<float > ptthrtof{" ptthrtof" , 1.0 , " Pt threshold to apply TOF condition" };
148148 Configurable<bool > sel8{" sel8" , 0 , " Apply sel8 event selection" };
149149 Configurable<bool > isTriggerTVX{" isTriggerTVX" , 1 , " Require TVX" };
150- Configurable<int > LowLimitFT0MMult{" LowLimitFT0MMult" , 3100 , " FT0M selection for omega + high multiplicity trigger" };
151- Configurable<int > LowLimitFT0MMultNorm{" LowLimitFT0MMultNorm" , 70 , " FT0M selection for omega + high multiplicity trigger with Normalised FT0M" };
152- Configurable<bool > useNormalisedMult{" useNormalisedMult" , 1 , " Use avarage multiplicity for HM omega like in multFilter.cxx" };
150+ Configurable<int > HMTrgSelectionForOmegaFT0M{" HMTrgSelectionForOmegaFT0M" , 1 , " 0: none, 1: normalised FT0M, 2: FT0M " };
151+ Configurable<int > LowLimitHMTrgOmegaT0M{" LowLimitHMTrgOmegaT0M" , 3100 , " T0M" };
152+ Configurable<int > LowLimitHMTrgOmegaT0MNorm{" LowLimitHMTrgOmegaT0MNorm" , 70 , " normalised T0M selection [2] of multFiler" };
153+ Configurable<int > HMTrgSelectionForOmegaTrks{" HMTrgSelectionForOmegaTrks" , 2 , " 0: none, 1: GlobalMult,2: selectTrack" };
154+ Configurable<int > LowLimitHMTrgOmegaTrkGlob{" LowLimitHMTrgOmegaTrksGlob" , 90 , " tracks from tyable GlobalMult" };
155+ Configurable<int > LowLimitHMTrgOmegaTrkSel{" LowLimitHMTrgOmegaTrkSel" , 50 , " tracks as defined in selectTrackHMO" };
156+ Configurable<float > hEtaHM{" hEtaHM" , 1 .0f , " Eta range for trigger particles" };
157+ Configurable<float > hMinPtHM{" hMinPtHM" , 0 .2f , " Min pt for trigger particles" };
153158 Configurable<float > avPyT0C{" avPyT0C" , 8.83 , " nch from pythia T0C" };
154159 Configurable<float > avPyT0A{" avPyT0A" , 8.16 , " nch from pythia T0A" };
155160 Configurable<bool > isTimeFrameBorderCut{" isTimeFrameBorderCut" , 1 , " Apply timeframe border cut" };
@@ -212,7 +217,10 @@ struct strangenessFilter {
212217 {
213218 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 ;
214219 }
215-
220+ bool selectTrackOHM (const auto & track)
221+ {
222+ return track.pt () > 0.15 && track.tpcNClsCrossedRows () >= tpcmincrossedrows && track.tpcCrossedRowsOverFindableCls () >= 0 .8f && track.tpcChi2NCl () <= 4 .f && track.itsChi2NCl () <= 36 .f && (track.itsClusterMap () & 0x7 ) != 0 ;
223+ }
216224 float getV0V0DCA (TVector3 v01pos, TVector3 v01mom, TVector3 v02pos, TVector3 v02mom)
217225 {
218226 TVector3 posdiff = v02pos - v01pos;
@@ -334,6 +342,9 @@ struct strangenessFilter {
334342 hProcessedEvents->GetXaxis ()->SetBinLabel (15 , aod::filtering::DoubleOmega::columnLabel ());
335343 hProcessedEvents->GetXaxis ()->SetBinLabel (16 , aod::filtering::OmegaXi::columnLabel ());
336344 hProcessedEvents->GetXaxis ()->SetBinLabel (17 , " LL" );
345+ hProcessedEvents->GetXaxis ()->SetBinLabel (18 , aod::filtering::OmegaHighMultTrk::columnLabel ());
346+ hProcessedEvents->GetXaxis ()->SetBinLabel (19 , aod::filtering::HighMultFT0M::columnLabel ());
347+ hProcessedEvents->GetXaxis ()->SetBinLabel (20 , aod::filtering::HighMultTrk::columnLabel ());
337348
338349 hCandidate->GetXaxis ()->SetBinLabel (1 , " All" );
339350 hCandidate->GetXaxis ()->SetBinLabel (2 , " PassBuilderSel" );
@@ -360,6 +371,7 @@ struct strangenessFilter {
360371 AxisSpec multAxisNTPV = {100 , 0 .0f , 100 .0f , " N. tracks PV estimator" };
361372 AxisSpec multAxisT0M = {600 , 0 .0f , 6000 .0f , " T0M multiplicity estimator" };
362373 AxisSpec multAxisT0MNorm = {150 , 0 .0f , 150 .0f , " Normalised T0M multiplicity estimator" };
374+ AxisSpec multAxisTrack = {150 , 0 .0f , 150 .0f , " Track multiplicity" };
363375 AxisSpec multAxisV0A = {500 , 0 .0f , 25000 .0f , " V0A multiplicity estimator" };
364376 AxisSpec ximassAxis = {200 , 1 .28f , 1 .36f };
365377 AxisSpec omegamassAxis = {200 , 1 .59f , 1 .75f };
@@ -422,7 +434,10 @@ struct strangenessFilter {
422434 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNorm" , " T0M Normalised of all events" , HistType::kTH1F , {multAxisT0MNorm});
423435 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MwOmegaNorm" , " T0M distribution of events w/ Omega candidate - Normalised FT0M" , HistType::kTH1F , {multAxisT0MNorm});
424436 EventsvsMultiplicity.add (" AllEventsvsMultiplicityFT0MNoFT0" , " T0M distribution of events without FT0" , HistType::kTH1F , {multAxisT0M});
425-
437+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracks" , " Track distribution of all events" , HistType::kTH1F , {multAxisTrack});
438+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityTrackswOmega" , " Track distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisTrack});
439+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracksGlob" , " MultGlob Track distribution of all events" , HistType::kTH1F , {multAxisTrack});
440+ EventsvsMultiplicity.add (" AllEventsvsMultiplicityTracksGlobwOmega" , " MultGlob Track distribution of events w/ Omega candidate" , HistType::kTH1F , {multAxisTrack});
426441 if (doextraQA) {
427442 EventsvsMultiplicity.add (" AllEventsvsMultiplicityZeqV0A" , " ZeqV0A distribution of all events" , HistType::kTH1F , {multAxisV0A});
428443 EventsvsMultiplicity.add (" hadEventsvsMultiplicityZeqV0A" , " ZeqV0A distribution of events with hight pT hadron" , HistType::kTH1F , {multAxisV0A});
@@ -521,9 +536,9 @@ struct strangenessFilter {
521536 o2::parameters::GRPMagField* grpmag = ccdb->getForRun <o2::parameters::GRPMagField>(" GLO/Config/GRPMagField" , run);
522537 o2::base::Propagator::initFieldFromGRP (grpmag);
523538 mBz = static_cast <float >(grpmag->getNominalL3Field ());
524- if (useNormalisedMult )
539+ if (HMTrgSelectionForOmegaFT0M == 1 )
525540 mMeanMultT0C = ccdb->getForRun <std::vector<double >>(" Users/e/ekryshen/meanT0C" , run);
526- if (useNormalisedMult )
541+ if (HMTrgSelectionForOmegaFT0M == 1 )
527542 mMeanMultT0A = ccdb->getForRun <std::vector<double >>(" Users/e/ekryshen/meanT0A" , run);
528543
529544 mDCAFitter .setBz (mBz );
@@ -547,7 +562,7 @@ struct strangenessFilter {
547562 }
548563
549564 // Tables
550- using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults>::iterator;
565+ using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults, aod::MultsGlobal >::iterator;
551566 using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCLfFullPi, aod::pidTPCLfFullPr, aod::pidTPCLfFullKa>;
552567
553568 float getMassWindow (const stfilter::species s, const float pt, const float nsigma = 6 )
@@ -562,14 +577,14 @@ struct strangenessFilter {
562577
563578 void fillTriggerTable (bool keepEvent[])
564579 {
565- 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 ]);
580+ 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 ] );
566581 }
567582
568583 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*/ )
569584 {
570585 // Is event good? [0] = Omega, [1] = high-pT hadron + Omega, [2] = 2Xi, [3] = 3Xi, [4] = 4Xi, [5] single-Xi, [6] Omega with high radius
571586 // [7] tracked Xi, [8] tracked Omega, [9] Omega + high mult event
572- bool keepEvent[13 ]{}; // explicitly zero-initialised
587+ bool keepEvent[16 ]{}; // explicitly zero-initialised
573588 std::vector<std::array<int64_t , 2 >> v0sFromOmegaID;
574589 std::vector<std::array<int64_t , 2 >> v0sFromXiID;
575590
@@ -604,12 +619,9 @@ struct strangenessFilter {
604619
605620 Bool_t isHighMultEvent = 0 ;
606621 float multFT0MNorm = 0 .f ;
607- EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0M" ), collision.multFT0M ());
608- if (!useNormalisedMult) {
609- if (collision.multFT0M () > LowLimitFT0MMult) {
610- isHighMultEvent = 1 ;
611- }
612- } else {
622+ Bool_t isHighMultEventTrk = 0 ;
623+ float multTrack = 0 .f ;
624+ if (HMTrgSelectionForOmegaFT0M == 1 ) {
613625 float meanMultT0C = 0 .f ;
614626 float fac_FT0C_ebe = 1 .;
615627 meanMultT0C = (*mMeanMultT0C )[0 ];
@@ -650,7 +662,7 @@ struct strangenessFilter {
650662 ampneg++;
651663 }
652664 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNorm" ), multFT0MNorm);
653- if (multFT0MNorm > LowLimitFT0MMultNorm ) {
665+ if (multFT0MNorm > LowLimitHMTrgOmegaT0MNorm ) {
654666 isHighMultEvent = 1 ;
655667 LOG (debug) << " Found FT0 using norm mult" ;
656668 }
@@ -668,7 +680,29 @@ struct strangenessFilter {
668680 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MNoFT0" ), collision.multFT0M ());
669681 }
670682 }
671-
683+ if (HMTrgSelectionForOmegaFT0M == 2 ) {
684+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0M" ), collision.multFT0M ());
685+ if (collision.multFT0M () > LowLimitHMTrgOmegaT0M) {
686+ isHighMultEvent = 1 ;
687+ }
688+ }
689+ if (HMTrgSelectionForOmegaTrks == 1 ) {
690+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTracksGlob" ), collision.multNTracksGlobal ());
691+ if (collision.multNTracksGlobal () > LowLimitHMTrgOmegaTrkGlob) {
692+ isHighMultEventTrk = 1 ;
693+ }
694+ }
695+ if (HMTrgSelectionForOmegaTrks == 2 ) {
696+ for (auto & track : tracks) {
697+ if (selectTrackOHM (track)) {
698+ multTrack++;
699+ }
700+ }
701+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTracks" ), multTrack);
702+ if (multTrack > LowLimitHMTrgOmegaTrkSel) {
703+ isHighMultEventTrk = 1 ;
704+ }
705+ }
672706 // constants
673707 const float ctauxi = 4.91 ; // from PDG
674708 const float ctauomega = 2.461 ; // from PDG
@@ -1166,14 +1200,26 @@ struct strangenessFilter {
11661200 }
11671201
11681202 // Omega in high multiplicity events
1169- if (omegacounter > 0 ) {
1203+ if (omegacounter > 0 && isHighMultEvent ) {
11701204 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmega" ), collision.multFT0M ());
11711205 EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityFT0MwOmegaNorm" ), multFT0MNorm);
11721206 }
1207+ if (omegacounter > 0 && isHighMultEventTrk) {
1208+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTrackswOmega" ), multTrack);
1209+ EventsvsMultiplicity.fill (HIST (" AllEventsvsMultiplicityTracksGlobwOmega" ), collision.multNTracksGlobal ());
1210+ }
11731211 if (omegacounter > 0 && isHighMultEvent) {
11741212 keepEvent[9 ] = true ;
11751213 }
1176-
1214+ if (omegacounter > 0 && isHighMultEventTrk) {
1215+ keepEvent[13 ] = true ;
1216+ }
1217+ if (isHighMultEvent) {
1218+ keepEvent[14 ] = true ;
1219+ }
1220+ if (isHighMultEventTrk) {
1221+ keepEvent[15 ] = true ;
1222+ }
11771223 for (const auto & trackedCascade : trackedCascades) {
11781224 const auto trackCasc = trackedCascade.track_as <TrackCandidates>();
11791225 QAHistosStrangenessTracking.fill (HIST (" hPtCascTracked" ), trackCasc.pt ());
@@ -1364,6 +1410,15 @@ struct strangenessFilter {
13641410 if (keepEvent[12 ]) {
13651411 hProcessedEvents->Fill (15.5 );
13661412 }
1413+ if (keepEvent[13 ]) {
1414+ hProcessedEvents->Fill (16.5 );
1415+ }
1416+ if (keepEvent[14 ]) {
1417+ hProcessedEvents->Fill (17.5 );
1418+ }
1419+ if (keepEvent[15 ]) {
1420+ hProcessedEvents->Fill (18.5 );
1421+ }
13671422 // Filling the table
13681423 fillTriggerTable (keepEvent);
13691424 }
0 commit comments