@@ -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