Skip to content

Commit d5436cf

Browse files
authored
Merge branch 'AliceO2Group:master' into Update
2 parents 7850e70 + 42bd47f commit d5436cf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+3101
-1310
lines changed

ALICE3/DataModel/OTFMulticharm.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ DECLARE_SOA_COLUMN(XiccMass, xiccMass, float);
4040
// kine vars
4141
DECLARE_SOA_COLUMN(XiccPt, xiccPt, float);
4242
DECLARE_SOA_COLUMN(XiccEta, xiccEta, float);
43+
DECLARE_SOA_COLUMN(XicPt, xicPt, float);
44+
DECLARE_SOA_COLUMN(XicEta, xicEta, float);
4345

4446
// topo vars
4547
DECLARE_SOA_COLUMN(XiDCAz, xiDCAz, float);
@@ -122,12 +124,15 @@ DECLARE_SOA_TABLE(MCharmIndices, "AOD", "MCharmIndices",
122124
otfmulticharm::XiCCPionId);
123125

124126
DECLARE_SOA_TABLE(MCharmCores, "AOD", "MCharmCores",
125-
otfmulticharm::XicDauDCA,
126-
otfmulticharm::XiccDauDCA,
127-
otfmulticharm::XicMass,
128127
otfmulticharm::XiccMass,
129128
otfmulticharm::XiccPt,
130129
otfmulticharm::XiccEta,
130+
otfmulticharm::XiccDauDCA,
131+
132+
otfmulticharm::XicMass,
133+
otfmulticharm::XicPt,
134+
otfmulticharm::XicEta,
135+
otfmulticharm::XicDauDCA,
131136

132137
otfmulticharm::XiDCAxy,
133138
otfmulticharm::XiDCAz,

ALICE3/TableProducer/alice3-multicharmTable.cxx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -734,9 +734,10 @@ struct alice3multicharmTable {
734734
picc.globalIndex());
735735

736736
multiCharmCore(
737-
thisXiCcandidate.dca, thisXiCCcandidate.dca,
738-
thisXiCcandidate.mass, thisXiCCcandidate.mass,
739-
thisXiCCcandidate.pt, thisXiCCcandidate.eta,
737+
thisXiCCcandidate.mass, thisXiCCcandidate.pt,
738+
thisXiCCcandidate.eta, thisXiCCcandidate.dca,
739+
thisXiCcandidate.mass, thisXiCcandidate.pt,
740+
thisXiCcandidate.eta, thisXiCcandidate.dca,
740741
xi.dcaXY(), xi.dcaZ(),
741742
xicdcaXY, xicdcaZ,
742743
xiccdcaXY, xiccdcaZ,
@@ -756,12 +757,10 @@ struct alice3multicharmTable {
756757
pi1cTOFDiffOuter, pi1c.nSigmaPionOuterTOF(),
757758
pi1c.hasSigPi(), pi1c.nSigmaPionRich(),
758759
getPdgCodeForTrack(pi1c),
759-
760760
pi2cTOFDiffInner, pi2c.nSigmaPionInnerTOF(),
761761
pi2cTOFDiffOuter, pi2c.nSigmaPionOuterTOF(),
762762
pi2c.hasSigPi(), pi2c.nSigmaPionRich(),
763763
getPdgCodeForTrack(pi2c),
764-
765764
piccTOFDiffInner, picc.nSigmaPionInnerTOF(),
766765
piccTOFDiffOuter, picc.nSigmaPionOuterTOF(),
767766
picc.hasSigPi(), picc.nSigmaPionRich(),
@@ -774,9 +773,7 @@ struct alice3multicharmTable {
774773
prFromLa.dcaXY(), prFromLa.dcaZ(),
775774
piFromLa.pt(), piFromLa.eta(),
776775
piFromLa.dcaXY(), piFromLa.dcaZ(),
777-
pi1c.eta(),
778-
pi2c.eta(),
779-
picc.eta());
776+
pi1c.eta(), pi2c.eta(), picc.eta());
780777
}
781778
}
782779
histos.fill(HIST("hCombinationsXiCC"), nCombinationsCC);

ALICE3/Tasks/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ o2physics_add_dpl_workflow(alice3-taskcorrelationddbar
6161

6262
o2physics_add_dpl_workflow(alice3-multicharm
6363
SOURCES alice3-multicharm.cxx
64-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
64+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::MLCore
6565
COMPONENT_NAME Analysis)
6666

6767
o2physics_add_dpl_workflow(alice3-efficiency

ALICE3/Tasks/alice3-multicharm.cxx

Lines changed: 244 additions & 46 deletions
Large diffs are not rendered by default.

Common/Tools/TrackPropagationModule.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,27 @@ class TrackPropagationModule
103103
LOGF(info, "Track propagation to PV not required. Suppressing all further processing and logs.");
104104
}
105105

106+
LOGF(info, " Track propagation table detection results:");
107+
LOGF(info, " ---> Will generate Tracks table.");
108+
if (fillTracksCov) {
109+
LOGF(info, "---> Will generate TracksCov table.");
110+
}
111+
if (fillTracksDCA) {
112+
LOGF(info, "---> Will generate TracksDCA table.");
113+
}
114+
if (fillTracksDCACov) {
115+
LOGF(info, "---> Will generate TracksDCACov table.");
116+
}
117+
if (fillTracksCov) {
118+
LOGF(info, "**************************************************************");
119+
LOGF(info, " Warning: TracksCov has been requested due to a subscription!");
120+
LOGF(info, " Please be mindful that generating track covariances requires");
121+
LOGF(info, " a significant extra amount of CPU and memory. If not strictly");
122+
LOGF(info, " necessary, requesting TracksCov should be avoided to save");
123+
LOGF(info, " these additional resouces.");
124+
LOGF(info, "**************************************************************");
125+
}
126+
106127
/// TrackTuner initialization
107128
if (cGroup.useTrackTuner.value) {
108129
std::string outputStringParams = "";

DPG/Tasks/AOTEvent/detectorOccupancyQa.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ struct DetectorOccupancyQaTask {
260260
histos.add("track_distr_nITStrThisEv_above_2000/hEta_highOccupInDistantFuture", ";#eta;n tracks", kTH1D, {axisEta});
261261
histos.add("track_distr_nITStrThisEv_above_2000/hEta_highOccupInNeighbourEvents", ";#eta;n tracks", kTH1D, {axisEta});
262262

263-
const int nPhiBins = 800;
263+
const int nPhiBins = 810; // 18*45
264264
AxisSpec axisPhi{nPhiBins, 0, TMath::TwoPi(), "#varphi"}; // o2-linter: disable=external-pi (temporary fix)
265265
histos.add("track_distr_nITStrThisEv_10_200/hPhi_lowOccupInTPC", ";#varphi;n tracks", kTH1D, {axisPhi});
266266
histos.add("track_distr_nITStrThisEv_10_200/hPhi_highOccupInRecentPast", ";#varphi;n tracks", kTH1D, {axisPhi});
@@ -290,7 +290,8 @@ struct DetectorOccupancyQaTask {
290290
histos.add("track_distr_nITStrThisEv_above_2000/hPt_highOccupInNeighbourEvents", ";p_{T};n tracks", kTH1D, {axisLogPt});
291291

292292
// July 2025: to compare data and MC (pt, eta, phi)
293-
AxisSpec axisOccupForKine{{0, 500, 1000, 2000, 4000, 6000, 20000}, "weighted occupancy"};
293+
// AxisSpec axisOccupForKine{{0, 500, 1000, 2000, 4000, 6000, 20000}, "weighted occupancy"};
294+
AxisSpec axisOccupForKine{{0, 500, 1000, 2000, 4000, 6000, 8000, 10000, 20000}, "weighted occupancy"};
294295
AxisSpec axisPtForKine{{0.2, 0.6, 1.0, 2.0, 10}, "centrality percentile"};
295296
histos.add("track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_pos", ";p_{T};weighted occupancy", kTH2D, {axisLogPt, axisOccupForKine});
296297
histos.add("track_distr_nITStrThisEv_10_200/kine_vs_weighted_occup/hPt_neg", ";p_{T};weighted occupancy", kTH2D, {axisLogPt, axisOccupForKine});

DPG/Tasks/AOTEvent/eventSelectionQa.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1185,7 +1185,7 @@ struct EventSelectionQaTask {
11851185
histos.fill(HIST("occupancyQA/tpcNCrossedRows_vs_V0A_vs_occupancy"), multV0A, track.tpcNClsFindable() - tpcNClsFindableMinusCrossedRowsCorrected, occupancyByTracks);
11861186
}
11871187
} // end of hasTPC
1188-
if (track.tpcNClsFound() > 70 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
1188+
if (track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
11891189
nContributorsAfterEtaTPCCuts++;
11901190
// ROF border QA
11911191
histos.fill(HIST("ITSROFborderQA/hFoundBC_kTVX_nITSlayers_for_ITSTPCtracks"), localBC, track.itsNCls());
@@ -1232,7 +1232,7 @@ struct EventSelectionQaTask {
12321232
continue;
12331233
if (std::fabs(track.eta()) < 0.8 && track.pt() > 0.2 && track.itsNCls() >= 5) {
12341234
float signedP = track.sign() * track.tpcInnerParam();
1235-
if (std::fabs(signedP) > 0.38 && std::fabs(signedP) < 0.4 && track.tpcNClsFound() > 70 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
1235+
if (std::fabs(signedP) > 0.38 && std::fabs(signedP) < 0.4 && track.tpcNClsFound() > 50 && track.tpcNClsCrossedRows() > 80 && track.itsChi2NCl() < 36 && track.tpcChi2NCl() < 4) {
12361236
float dEdx = track.tpcSignal();
12371237
histos.fill(HIST("occupancyQA/dEdx_vs_centr_vs_occup_narrow_p_win"), nPV, occupancyByTracks, dEdx);
12381238
}

PWGCF/Flow/Tasks/flowMc.cxx

Lines changed: 89 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,19 @@ struct FlowMc {
5454

5555
Configurable<float> minB{"minB", 0.0f, "min impact parameter"};
5656
Configurable<float> maxB{"maxB", 20.0f, "max impact parameter"};
57+
O2_DEFINE_CONFIGURABLE(cfgCutVertex, float, 10.0f, "Accepted z-vertex range")
58+
O2_DEFINE_CONFIGURABLE(cfgCutPtMin, float, 0.2f, "Minimal pT for tracks")
59+
O2_DEFINE_CONFIGURABLE(cfgCutPtMax, float, 1000.0f, "Maximal pT for tracks")
60+
O2_DEFINE_CONFIGURABLE(cfgCutEta, float, 0.8f, "Eta range for tracks")
5761
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeights, bool, false, "Fill and output NUA weights")
5862
O2_DEFINE_CONFIGURABLE(cfgCutPtRefMin, float, 0.2f, "Minimal pT for ref tracks")
5963
O2_DEFINE_CONFIGURABLE(cfgCutPtRefMax, float, 3.0f, "Maximal pT for ref tracks")
6064
O2_DEFINE_CONFIGURABLE(cfgCutPtPOIMin, float, 0.2f, "Minimal pT for poi tracks")
6165
O2_DEFINE_CONFIGURABLE(cfgCutPtPOIMax, float, 10.0f, "Maximal pT for poi tracks")
62-
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 70.0f, "minimum TPC clusters")
63-
O2_DEFINE_CONFIGURABLE(cfgCutITSclu, float, 6.0f, "minimum ITS clusters")
66+
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 50.0f, "minimum TPC clusters")
67+
O2_DEFINE_CONFIGURABLE(cfgCutITSclu, float, 5.0f, "minimum ITS clusters")
68+
O2_DEFINE_CONFIGURABLE(cfgCutChi2prTPCcls, float, 2.5f, "max chi2 per TPC clusters")
69+
O2_DEFINE_CONFIGURABLE(cfgCutTPCcrossedrows, float, 70.0f, "minimum TPC crossed rows")
6470
O2_DEFINE_CONFIGURABLE(cfgFlowAcceptance, std::string, "", "CCDB path to acceptance object")
6571
O2_DEFINE_CONFIGURABLE(cfgFlowEfficiency, std::string, "", "CCDB path to efficiency object")
6672
O2_DEFINE_CONFIGURABLE(cfgCentVsIPTruth, std::string, "", "CCDB path to centrality vs IP truth")
@@ -70,6 +76,10 @@ struct FlowMc {
7076
O2_DEFINE_CONFIGURABLE(cfgFlowCumulantNbootstrap, int, 30, "Number of subsamples")
7177
O2_DEFINE_CONFIGURABLE(cfgTrackDensityCorrUse, bool, false, "Use track density efficiency correction")
7278
O2_DEFINE_CONFIGURABLE(cfgTrackDensityCorrSlopeFactor, float, 1.0f, "A factor to scale the track density efficiency slope")
79+
O2_DEFINE_CONFIGURABLE(cfgRecoEvRejectMC, bool, false, "reject both MC and Reco events when reco do not pass")
80+
O2_DEFINE_CONFIGURABLE(cfgRecoEvSel8, bool, false, "require sel8 for reconstruction events")
81+
O2_DEFINE_CONFIGURABLE(cfgRecoEvkIsGoodITSLayersAll, bool, false, "require kIsGoodITSLayersAll for reconstruction events")
82+
O2_DEFINE_CONFIGURABLE(cfgRecoEvkNoSameBunchPileup, bool, false, "require kNoSameBunchPileup for reconstruction events")
7383
Configurable<std::vector<double>> cfgTrackDensityP0{"cfgTrackDensityP0", std::vector<double>{0.6003720411, 0.6152630970, 0.6288860646, 0.6360694031, 0.6409494798, 0.6450540203, 0.6482117301, 0.6512592056, 0.6640008690, 0.6862631416, 0.7005738691, 0.7106567432, 0.7170728333}, "parameter 0 for track density efficiency correction"};
7484
Configurable<std::vector<double>> cfgTrackDensityP1{"cfgTrackDensityP1", std::vector<double>{-1.007592e-05, -8.932635e-06, -9.114538e-06, -1.054818e-05, -1.220212e-05, -1.312304e-05, -1.376433e-05, -1.412813e-05, -1.289562e-05, -1.050065e-05, -8.635725e-06, -7.380821e-06, -6.201250e-06}, "parameter 1 for track density efficiency correction"};
7585
float maxEta = 0.8;
@@ -81,6 +91,18 @@ struct FlowMc {
8191

8292
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.2f, 2.4f, 2.6f, 2.8f, 3.0f, 3.2f, 3.4f, 3.6f, 3.8f, 4.0f, 4.4f, 4.8f, 5.2f, 5.6f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f}, "pt axis"};
8393

94+
// Filter for MCcollisions
95+
Filter mccollisionFilter = nabs(aod::mccollision::posZ) < cfgCutVertex;
96+
using FilteredMcCollisions = soa::Filtered<aod::McCollisions>;
97+
// Filter for MCParticle
98+
Filter particleFilter = (nabs(aod::mcparticle::eta) < cfgCutEta) && (aod::mcparticle::pt > cfgCutPtMin) && (aod::mcparticle::pt < cfgCutPtMax);
99+
using FilteredMcParticles = soa::Filtered<soa::Join<aod::McParticles, aod::ParticlesToTracks>>;
100+
// Filter for reco tracks
101+
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls);
102+
using FilteredTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA, aod::McTrackLabels>>;
103+
104+
// using FilteredTracks = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TrackSelection>;
105+
84106
// Cent vs IP
85107
TH1D* mCentVsIPTruth = nullptr;
86108
bool centVsIPTruthLoaded = false;
@@ -98,7 +120,6 @@ struct FlowMc {
98120

99121
// Connect to ccdb
100122
Service<ccdb::BasicCCDBManager> ccdb;
101-
Configurable<int64_t> ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"};
102123
Configurable<std::string> ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
103124

104125
OutputObj<GFWWeights> fWeights{GFWWeights("weights")};
@@ -110,10 +131,22 @@ struct FlowMc {
110131
std::vector<GFW::CorrConfig> corrconfigsTruth;
111132
std::vector<GFW::CorrConfig> corrconfigsReco;
112133
TRandom3* fRndm = new TRandom3(0);
134+
double epsilon = 1e-6;
113135

114136
void init(InitContext&)
115137
{
138+
ccdb->setURL(ccdbUrl.value);
139+
ccdb->setCaching(true);
140+
auto now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
141+
ccdb->setCreatedNotAfter(now);
142+
143+
const AxisSpec axisVertex{20, -10, 10, "Vtxz (cm)"};
144+
const AxisSpec axisEta{20, -1., 1., "#eta"};
145+
const AxisSpec axisCounter{1, 0, +1, ""};
116146
// QA histograms
147+
histos.add<TH1>("mcEventCounter", "Monte Carlo Truth EventCounter", HistType::kTH1F, {axisCounter});
148+
histos.add<TH1>("numberOfRecoCollisions", "numberOfRecoCollisions", HistType::kTH1F, {{10, -0.5f, 9.5f}});
149+
histos.add<TH1>("RecoEventCounter", "Reconstruction EventCounter", HistType::kTH1F, {axisCounter});
117150
histos.add<TH1>("hnTPCClu", "Number of found TPC clusters", HistType::kTH1D, {{100, 40, 180}});
118151
histos.add<TH1>("hnITSClu", "Number of found ITS clusters", HistType::kTH1D, {{100, 0, 20}});
119152
// pT histograms
@@ -156,7 +189,9 @@ struct FlowMc {
156189
histos.add<TH2>("hPtNchGeneratedLambda", "Reco production; pT (GeV/c); multiplicity", HistType::kTH2D, {axisPt, axisNch});
157190
histos.add<TH2>("hPtNchGlobalLambda", "Global production; pT (GeV/c); multiplicity", HistType::kTH2D, {axisPt, axisNch});
158191
histos.add<TH1>("hPtMCGen", "Monte Carlo Truth; pT (GeV/c);", {HistType::kTH1D, {axisPt}});
192+
histos.add<TH3>("hEtaPtVtxzMCGen", "Monte Carlo Truth; #eta; p_{T} (GeV/c); V_{z} (cm);", {HistType::kTH3D, {axisEta, axisPt, axisVertex}});
159193
histos.add<TH1>("hPtMCGlobal", "Monte Carlo Global; pT (GeV/c);", {HistType::kTH1D, {axisPt}});
194+
histos.add<TH3>("hEtaPtVtxzMCGlobal", "Monte Carlo Global; #eta; p_{T} (GeV/c); V_{z} (cm);", {HistType::kTH3D, {axisEta, axisPt, axisVertex}});
160195
histos.add<TH1>("hPhiWeightedTrDen", "corrected #phi distribution, considering track density", {HistType::kTH1D, {axisPhi}});
161196

162197
o2::framework::AxisSpec axis = axisPt;
@@ -318,9 +353,35 @@ struct FlowMc {
318353
}
319354
}
320355

321-
using RecoTracks = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TrackSelection>;
356+
template <typename TCollision>
357+
bool eventSelected(TCollision collision)
358+
{
359+
if (std::fabs(collision.posZ()) > cfgCutVertex) {
360+
return 0;
361+
}
362+
if (cfgRecoEvSel8 && !collision.sel8()) {
363+
return 0;
364+
}
365+
if (cfgRecoEvkNoSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
366+
// rejects collisions which are associated with the same "found-by-T0" bunch crossing
367+
// https://indico.cern.ch/event/1396220/#1-event-selection-with-its-rof
368+
return 0;
369+
}
370+
if (cfgRecoEvkIsGoodITSLayersAll && !collision.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll)) {
371+
// from Jan 9 2025 AOT meeting
372+
// cut time intervals with dead ITS staves
373+
return 0;
374+
}
375+
return 1;
376+
}
377+
378+
template <typename TTrack>
379+
bool trackSelected(TTrack track)
380+
{
381+
return ((track.tpcNClsFound() >= cfgCutTPCclu) && (track.tpcNClsCrossedRows() >= cfgCutTPCcrossedrows) && (track.itsNCls() >= cfgCutITSclu));
382+
}
322383

323-
void process(aod::McCollision const& mcCollision, aod::BCsWithTimestamps const&, soa::Join<aod::McParticles, aod::ParticlesToTracks> const& mcParticles, RecoTracks const&)
384+
void process(FilteredMcCollisions::iterator const& mcCollision, aod::BCsWithTimestamps const&, soa::SmallGroups<soa::Join<aod::McCollisionLabels, aod::Collisions, aod::EvSels>> const& collisions, FilteredMcParticles const& mcParticles, FilteredTracks const&)
324385
{
325386

326387
float imp = mcCollision.impactParameter();
@@ -337,6 +398,21 @@ struct FlowMc {
337398
auto bc = mcCollision.bc_as<aod::BCsWithTimestamps>();
338399
loadCorrections(bc.timestamp());
339400

401+
if (collisions.size() > -1) {
402+
histos.fill(HIST("mcEventCounter"), 0.5);
403+
histos.fill(HIST("numberOfRecoCollisions"), collisions.size()); // number of times coll was reco-ed
404+
if (cfgRecoEvRejectMC) {
405+
if (collisions.size() != 1) { // only pass those have one reconstruction event
406+
return;
407+
}
408+
for (auto const& collision : collisions) {
409+
if (!eventSelected(collision))
410+
return;
411+
}
412+
}
413+
histos.fill(HIST("RecoEventCounter"), 0.5);
414+
}
415+
340416
if (imp > minB && imp < maxB) {
341417
// event within range
342418
histos.fill(HIST("hImpactParameter"), imp);
@@ -363,9 +439,9 @@ struct FlowMc {
363439
if (std::fabs(mcParticle.eta()) > maxEta) // main acceptance
364440
continue;
365441
if (mcParticle.has_tracks()) {
366-
auto const& tracks = mcParticle.tracks_as<RecoTracks>();
442+
auto const& tracks = mcParticle.tracks_as<FilteredTracks>();
367443
for (auto const& track : tracks) {
368-
if (!((track.tpcNClsFound() >= cfgCutTPCclu) && (track.itsNCls() >= cfgCutITSclu))) {
444+
if (!trackSelected(track)) {
369445
continue;
370446
}
371447
if (cfgIsGlobalTrack && track.isGlobalTrack()) {
@@ -418,6 +494,7 @@ struct FlowMc {
418494
histos.fill(HIST("hBVsPtVsPhiGenerated"), imp, deltaPhi, mcParticle.pt());
419495
histos.fill(HIST("hPtNchGenerated"), mcParticle.pt(), nChGlobal);
420496
histos.fill(HIST("hPtMCGen"), mcParticle.pt());
497+
histos.fill(HIST("hEtaPtVtxzMCGen"), mcParticle.eta(), mcParticle.pt(), vtxz);
421498
if (pdgCode == PDG_t::kPiPlus)
422499
histos.fill(HIST("hPtNchGeneratedPion"), mcParticle.pt(), nChGlobal);
423500
if (pdgCode == PDG_t::kKPlus)
@@ -437,9 +514,9 @@ struct FlowMc {
437514
bool validITSTrack = false;
438515
bool validITSABTrack = false;
439516
if (mcParticle.has_tracks()) {
440-
auto const& tracks = mcParticle.tracks_as<RecoTracks>();
517+
auto const& tracks = mcParticle.tracks_as<FilteredTracks>();
441518
for (auto const& track : tracks) {
442-
if (!((track.tpcNClsFound() >= cfgCutTPCclu) && (track.itsNCls() >= cfgCutITSclu))) {
519+
if (!trackSelected(track)) {
443520
continue;
444521
}
445522
histos.fill(HIST("hnTPCClu"), track.tpcNClsFound());
@@ -456,10 +533,10 @@ struct FlowMc {
456533
if (track.hasTPC()) {
457534
validTPCTrack = true;
458535
}
459-
if (track.hasITS() && track.itsChi2NCl() > -1e-6) {
536+
if (track.hasITS() && track.itsChi2NCl() > -1. * epsilon) {
460537
validITSTrack = true;
461538
}
462-
if (track.hasITS() && track.itsChi2NCl() < -1e-6) {
539+
if (track.hasITS() && track.itsChi2NCl() < -1. * epsilon) {
463540
validITSABTrack = true;
464541
}
465542
}
@@ -519,6 +596,7 @@ struct FlowMc {
519596
histos.fill(HIST("hBVsPtVsPhiGlobal"), imp, deltaPhi, mcParticle.pt(), wacc * weff);
520597
histos.fill(HIST("hPtNchGlobal"), mcParticle.pt(), nChGlobal);
521598
histos.fill(HIST("hPtMCGlobal"), mcParticle.pt());
599+
histos.fill(HIST("hEtaPtVtxzMCGlobal"), mcParticle.eta(), mcParticle.pt(), vtxz);
522600
if (pdgCode == PDG_t::kPiPlus)
523601
histos.fill(HIST("hPtNchGlobalPion"), mcParticle.pt(), nChGlobal);
524602
if (pdgCode == PDG_t::kKPlus)

0 commit comments

Comments
 (0)