Skip to content

Commit a4ab348

Browse files
committed
dev:adding track mults to hm omega filter'
1 parent 23db911 commit a4ab348

File tree

1 file changed

+63
-12
lines changed

1 file changed

+63
-12
lines changed

EventFiltering/PWGLF/strangenessFilter.cxx

Lines changed: 63 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,13 @@ 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-
Configurable<int> LowLimitFT0MMult{"LowLimitFT0MMult", 3100, "FT0M selection for omega + high multiplicity trigger"};
150-
Configurable<int> LowLimitFT0MMultNorm{"LowLimitFT0MMultNorm", 70, "FT0M selection for omega + high multiplicity trigger with Normalised FT0M"};
151-
Configurable<bool> useNormalisedMult{"useNormalisedMult", 1, "Use avarage multiplicity for HM omega like in multFilter.cxx"};
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]"};
152+
Configurable<int> LowLimitHMTriggerOmegaT0M{"LowLimitHMTriggerOmegaT0M", 3100, "T0M"};
153+
Configurable<int> LowLimitHMTriggerOmegaT0MNorm{"LowLimitHMTriggerOmegaT0MNorm", 70, "normalised T0M selection [2] of multFiler"};
154+
Configurable<int> LowLimitHMTriggerOmegaTracksGlobal{"LowLimitHMTriggerOmegaTracksGlobal", 30, "tracks as defined in table MultsGlobal"};
155+
152156
Configurable<float> avPyT0C{"avPyT0C", 8.83, "nch from pythia T0C"};
153157
Configurable<float> avPyT0A{"avPyT0A", 8.16, "nch from pythia T0A"};
154158
Configurable<bool> isTimeFrameBorderCut{"isTimeFrameBorderCut", 1, "Apply timeframe border cut"};
@@ -206,6 +210,7 @@ struct strangenessFilter {
206210
float mBz = 0.;
207211
std::vector<double>* mMeanMultT0C;
208212
std::vector<double>* mMeanMultT0A;
213+
TrackSelection mTrackSelector;
209214

210215
bool selectTrack(const auto& track)
211216
{
@@ -289,6 +294,20 @@ struct strangenessFilter {
289294

290295
void init(o2::framework::InitContext&)
291296
{
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);
292311
// set V0 parameters in the helper
293312
mStraHelper.v0selections.minCrossedRows = tpcmincrossedrows;
294313
if (dcamesontopv <= dcabaryontopv)
@@ -359,6 +378,7 @@ struct strangenessFilter {
359378
AxisSpec multAxisNTPV = {100, 0.0f, 100.0f, "N. tracks PV estimator"};
360379
AxisSpec multAxisT0M = {600, 0.0f, 6000.0f, "T0M multiplicity estimator"};
361380
AxisSpec multAxisT0MNorm = {150, 0.0f, 150.0f, "Normalised T0M multiplicity estimator"};
381+
AxisSpec multAxisTrack = {100, 0.0f, 100.0f, "Tracks"};
362382
AxisSpec multAxisV0A = {500, 0.0f, 25000.0f, "V0A multiplicity estimator"};
363383
AxisSpec ximassAxis = {200, 1.28f, 1.36f};
364384
AxisSpec omegamassAxis = {200, 1.59f, 1.75f};
@@ -421,6 +441,10 @@ struct strangenessFilter {
421441
EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNorm", "T0M Normalised of all events", HistType::kTH1F, {multAxisT0MNorm});
422442
EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MwOmegaNorm", "T0M distribution of events w/ Omega candidate - Normalised FT0M", HistType::kTH1F, {multAxisT0MNorm});
423443
EventsvsMultiplicity.add("AllEventsvsMultiplicityFT0MNoFT0", "T0M distribution of events without FT0", HistType::kTH1F, {multAxisT0M});
444+
EventsvsMultiplicity.add("AllEventsvsMultiplicityTracks", "Track distribution of all events", HistType::kTH1F, {multAxisTrack});
445+
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});
424448

425449
if (doextraQA) {
426450
EventsvsMultiplicity.add("AllEventsvsMultiplicityZeqV0A", "ZeqV0A distribution of all events", HistType::kTH1F, {multAxisV0A});
@@ -520,10 +544,12 @@ struct strangenessFilter {
520544
o2::parameters::GRPMagField* grpmag = ccdb->getForRun<o2::parameters::GRPMagField>("GLO/Config/GRPMagField", run);
521545
o2::base::Propagator::initFieldFromGRP(grpmag);
522546
mBz = static_cast<float>(grpmag->getNominalL3Field());
523-
if (useNormalisedMult)
547+
if (HMTriggerSelectionForOmega & 4) {
524548
mMeanMultT0C = ccdb->getForRun<std::vector<double>>("Users/e/ekryshen/meanT0C", run);
525-
if (useNormalisedMult)
549+
}
550+
if (HMTriggerSelectionForOmega & 4) {
526551
mMeanMultT0A = ccdb->getForRun<std::vector<double>>("Users/e/ekryshen/meanT0A", run);
552+
}
527553

528554
mDCAFitter.setBz(mBz);
529555
mDCAFitter.setPropagateToPCA(propToDCA);
@@ -546,8 +572,8 @@ struct strangenessFilter {
546572
}
547573

548574
// Tables
549-
using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults>::iterator;
550-
using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCLfFullPi, aod::pidTPCLfFullPr, aod::pidTPCLfFullKa>;
575+
using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults, aod::MultsGlobal>::iterator;
576+
using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCLfFullPi, aod::pidTPCLfFullPr, aod::pidTPCLfFullKa, aod::TracksDCA>;
551577

552578
float getMassWindow(const stfilter::species s, const float pt, const float nsigma = 6)
553579
{
@@ -600,12 +626,29 @@ struct strangenessFilter {
600626

601627
Bool_t isHighMultEvent = 0;
602628
float multFT0MNorm = 0.f;
629+
float multTrack = 0;
603630
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M());
604-
if (!useNormalisedMult) {
605-
if (collision.multFT0M() > LowLimitFT0MMult) {
631+
if (HMTriggerSelectionForOmega & 1) {
632+
for (auto& track : tracks) {
633+
if (!mTrackSelector.IsSelected(track)) {
634+
continue;
635+
}
636+
// Has this track contributed to the collision vertex fit
637+
if (!track.isPVContributor()) {
638+
continue;
639+
}
640+
multTrack++;
641+
}
642+
if(multTrack > LowLimitHMTriggerOmegaTracks) {
606643
isHighMultEvent = 1;
607644
}
608-
} else {
645+
}
646+
if (HMTriggerSelectionForOmega & 2) {
647+
if (collision.multFT0M() > LowLimitHMTriggerOmegaT0M) {
648+
isHighMultEvent = 1;
649+
}
650+
}
651+
if (HMTriggerSelectionForOmega & 4) {
609652
float meanMultT0C = 0.f;
610653
float fac_FT0C_ebe = 1.;
611654
meanMultT0C = (*mMeanMultT0C)[0];
@@ -646,7 +689,7 @@ struct strangenessFilter {
646689
ampneg++;
647690
}
648691
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), multFT0MNorm);
649-
if (multFT0MNorm > LowLimitFT0MMultNorm) {
692+
if (multFT0MNorm > LowLimitHMTriggerOmegaT0MNorm) {
650693
isHighMultEvent = 1;
651694
LOG(debug) << "Found FT0 using norm mult";
652695
}
@@ -660,10 +703,18 @@ struct strangenessFilter {
660703
}
661704
} else {
662705
LOG(debug) << "FT0 not Found, using FT0M";
663-
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149);
706+
//EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), 149);
664707
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M());
665708
}
666709
}
710+
if(HMTriggerSelectionForOmega & 8) {
711+
if (collision.multNTracksGlobal() > LowLimitHMTriggerOmegaTracksGlobal) {
712+
isHighMultEvent = 1;
713+
}
714+
}
715+
if ((HMTriggerSelectionForOmega & 0xf) == 0) {
716+
LOG(fatal) << "Wrong selection of HMTriggerForOmega:" << HMTriggerSelectionForOmega;
717+
}
667718

668719
// constants
669720
const float ctauxi = 4.91; // from PDG

0 commit comments

Comments
 (0)