Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 76 additions & 21 deletions EventFiltering/PWGLF/strangenessFilter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -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<TH1D> hProcessedEvents{TH1D("hProcessedEvents", "Strangeness - event filtered;; Number of events", 17, -1., 16.)};
OutputObj<TH1D> hProcessedEvents{TH1D("hProcessedEvents", "Strangeness - event filtered;; Number of events", 20, -1., 19.)};
OutputObj<TH1F> hCandidate{TH1F("hCandidate", "; Candidate pass selection; Number of events", 30, 0., 30.)};
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.)};

Expand Down Expand Up @@ -147,9 +147,14 @@ struct strangenessFilter {
Configurable<float> ptthrtof{"ptthrtof", 1.0, "Pt threshold to apply TOF condition"};
Configurable<bool> sel8{"sel8", 0, "Apply sel8 event selection"};
Configurable<bool> isTriggerTVX{"isTriggerTVX", 1, "Require TVX"};
Configurable<int> LowLimitFT0MMult{"LowLimitFT0MMult", 3100, "FT0M selection for omega + high multiplicity trigger"};
Configurable<int> LowLimitFT0MMultNorm{"LowLimitFT0MMultNorm", 70, "FT0M selection for omega + high multiplicity trigger with Normalised FT0M"};
Configurable<bool> useNormalisedMult{"useNormalisedMult", 1, "Use avarage multiplicity for HM omega like in multFilter.cxx"};
Configurable<int> HMTrgSelectionForOmegaFT0M{"HMTrgSelectionForOmegaFT0M", 1, "0: none, 1: normalised FT0M, 2: FT0M "};
Configurable<int> LowLimitHMTrgOmegaT0M{"LowLimitHMTrgOmegaT0M", 3100, "T0M"};
Configurable<int> LowLimitHMTrgOmegaT0MNorm{"LowLimitHMTrgOmegaT0MNorm", 70, "normalised T0M selection [2] of multFiler"};
Configurable<int> HMTrgSelectionForOmegaTrks{"HMTrgSelectionForOmegaTrks", 2, "0: none, 1: GlobalMult,2: selectTrack"};
Configurable<int> LowLimitHMTrgOmegaTrkGlob{"LowLimitHMTrgOmegaTrksGlob", 90, "tracks from tyable GlobalMult"};
Configurable<int> LowLimitHMTrgOmegaTrkSel{"LowLimitHMTrgOmegaTrkSel", 50, "tracks as defined in selectTrackHMO"};
Configurable<float> hEtaHM{"hEtaHM", 1.0f, "Eta range for trigger particles"};
Configurable<float> hMinPtHM{"hMinPtHM", 0.2f, "Min pt for trigger particles"};
Configurable<float> avPyT0C{"avPyT0C", 8.83, "nch from pythia T0C"};
Configurable<float> avPyT0A{"avPyT0A", 8.16, "nch from pythia T0A"};
Configurable<bool> isTimeFrameBorderCut{"isTimeFrameBorderCut", 1, "Apply timeframe border cut"};
Expand Down Expand Up @@ -212,7 +217,10 @@ struct strangenessFilter {
{
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)
{
TVector3 posdiff = v02pos - v01pos;
Expand Down Expand Up @@ -334,6 +342,9 @@ struct strangenessFilter {
hProcessedEvents->GetXaxis()->SetBinLabel(15, aod::filtering::DoubleOmega::columnLabel());
hProcessedEvents->GetXaxis()->SetBinLabel(16, aod::filtering::OmegaXi::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");
Expand All @@ -360,6 +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 = {150, 0.0f, 150.0f, "Track multiplicity"};
AxisSpec multAxisV0A = {500, 0.0f, 25000.0f, "V0A multiplicity estimator"};
AxisSpec ximassAxis = {200, 1.28f, 1.36f};
AxisSpec omegamassAxis = {200, 1.59f, 1.75f};
Expand Down Expand Up @@ -422,7 +434,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("AllEventsvsMultiplicityTracksGlob", "MultGlob Track distribution of all events", HistType::kTH1F, {multAxisTrack});
EventsvsMultiplicity.add("AllEventsvsMultiplicityTracksGlobwOmega", "MultGlob Track distribution of events w/ Omega candidate", HistType::kTH1F, {multAxisTrack});
if (doextraQA) {
EventsvsMultiplicity.add("AllEventsvsMultiplicityZeqV0A", "ZeqV0A distribution of all events", HistType::kTH1F, {multAxisV0A});
EventsvsMultiplicity.add("hadEventsvsMultiplicityZeqV0A", "ZeqV0A distribution of events with hight pT hadron", HistType::kTH1F, {multAxisV0A});
Expand Down Expand Up @@ -521,9 +536,9 @@ struct strangenessFilter {
o2::parameters::GRPMagField* grpmag = ccdb->getForRun<o2::parameters::GRPMagField>("GLO/Config/GRPMagField", run);
o2::base::Propagator::initFieldFromGRP(grpmag);
mBz = static_cast<float>(grpmag->getNominalL3Field());
if (useNormalisedMult)
if (HMTrgSelectionForOmegaFT0M == 1)
mMeanMultT0C = ccdb->getForRun<std::vector<double>>("Users/e/ekryshen/meanT0C", run);
if (useNormalisedMult)
if (HMTrgSelectionForOmegaFT0M == 1)
mMeanMultT0A = ccdb->getForRun<std::vector<double>>("Users/e/ekryshen/meanT0A", run);

mDCAFitter.setBz(mBz);
Expand All @@ -547,7 +562,7 @@ struct strangenessFilter {
}

// Tables
using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults>::iterator;
using CollisionCandidates = soa::Join<aod::Collisions, aod::EvSels, aod::MultZeqs, aod::FT0Mults, aod::MultsGlobal>::iterator;
using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCLfFullPi, aod::pidTPCLfFullPr, aod::pidTPCLfFullKa>;

float getMassWindow(const stfilter::species s, const float pt, const float nsigma = 6)
Expand All @@ -562,14 +577,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<std::array<int64_t, 2>> v0sFromOmegaID;
std::vector<std::array<int64_t, 2>> v0sFromXiID;

Expand Down Expand Up @@ -604,12 +619,9 @@ struct strangenessFilter {

Bool_t isHighMultEvent = 0;
float multFT0MNorm = 0.f;
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M());
if (!useNormalisedMult) {
if (collision.multFT0M() > LowLimitFT0MMult) {
isHighMultEvent = 1;
}
} else {
Bool_t isHighMultEventTrk = 0;
float multTrack = 0.f;
if (HMTrgSelectionForOmegaFT0M == 1) {
float meanMultT0C = 0.f;
float fac_FT0C_ebe = 1.;
meanMultT0C = (*mMeanMultT0C)[0];
Expand Down Expand Up @@ -650,7 +662,7 @@ struct strangenessFilter {
ampneg++;
}
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNorm"), multFT0MNorm);
if (multFT0MNorm > LowLimitFT0MMultNorm) {
if (multFT0MNorm > LowLimitHMTrgOmegaT0MNorm) {
isHighMultEvent = 1;
LOG(debug) << "Found FT0 using norm mult";
}
Expand All @@ -668,7 +680,29 @@ struct strangenessFilter {
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MNoFT0"), collision.multFT0M());
}
}

if (HMTrgSelectionForOmegaFT0M == 2) {
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0M"), collision.multFT0M());
if (collision.multFT0M() > LowLimitHMTrgOmegaT0M) {
isHighMultEvent = 1;
}
}
if (HMTrgSelectionForOmegaTrks == 1) {
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTracksGlob"), collision.multNTracksGlobal());
if (collision.multNTracksGlobal() > LowLimitHMTrgOmegaTrkGlob) {
isHighMultEventTrk = 1;
}
}
if (HMTrgSelectionForOmegaTrks == 2) {
for (auto& track : tracks) {
if (selectTrackOHM(track)) {
multTrack++;
}
}
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTracks"), multTrack);
if (multTrack > LowLimitHMTrgOmegaTrkSel) {
isHighMultEventTrk = 1;
}
}
// constants
const float ctauxi = 4.91; // from PDG
const float ctauomega = 2.461; // from PDG
Expand Down Expand Up @@ -1166,14 +1200,26 @@ struct strangenessFilter {
}

// Omega in high multiplicity events
if (omegacounter > 0) {
if (omegacounter > 0 && isHighMultEvent) {
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MwOmega"), collision.multFT0M());
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityFT0MwOmegaNorm"), multFT0MNorm);
}
if (omegacounter > 0 && isHighMultEventTrk) {
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTrackswOmega"), multTrack);
EventsvsMultiplicity.fill(HIST("AllEventsvsMultiplicityTracksGlobwOmega"), collision.multNTracksGlobal());
}
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<TrackCandidates>();
QAHistosStrangenessTracking.fill(HIST("hPtCascTracked"), trackCasc.pt());
Expand Down Expand Up @@ -1364,6 +1410,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);
}
Expand Down
7 changes: 4 additions & 3 deletions EventFiltering/filterTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,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 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

Expand Down Expand Up @@ -329,8 +331,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;

// F1 proton
Expand Down
Loading