Skip to content

Commit 0824b88

Browse files
committed
Add phi correction handling for multiplicity bins
1 parent db817c9 commit 0824b88

1 file changed

Lines changed: 125 additions & 66 deletions

File tree

PWGCF/EbyEFluctuations/Tasks/FactorialMomentsTask.cxx

Lines changed: 125 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "Framework/runDataProcessing.h"
3232
#include "ReconstructionDataFormats/GlobalTrackID.h"
3333
#include "ReconstructionDataFormats/Track.h"
34+
#include <CCDB/BasicCCDBManager.h>
3435

3536
#include <unordered_set>
3637
#include <vector>
@@ -39,24 +40,35 @@ using namespace o2;
3940
using namespace o2::framework;
4041
using namespace o2::framework::expressions;
4142
TH1D* tmpFqErr[6][5][52];
42-
43+
float collisionZ = 0.f;
44+
TFile* f = TFile::Open("/home/salman/taskrun/o2running/PhiHistograms.root");
45+
TH3D* hBin1 = reinterpret_cast<TH3D*>(f->Get("bin1_m3DVtxZetaPhi"));
46+
TH3D* hBin2 = reinterpret_cast<TH3D*>(f->Get("bin2_m3DVtxZetaPhi"));
47+
TH3D* hBin3 = reinterpret_cast<TH3D*>(f->Get("bin3_m3DVtxZetaPhi"));
48+
TH3D* hBin4 = reinterpret_cast<TH3D*>(f->Get("bin4_m3DVtxZetaPhi"));
49+
TH3D* hBin5 = reinterpret_cast<TH3D*>(f->Get("bin5_m3DVtxZetaPhi"));
4350
struct FactorialMomentsTask {
4451
Configurable<bool> useITS{"useITS", false, "Select tracks with ITS"};
4552
Configurable<bool> useTPC{"useTPC", false, "Select tracks with TPC"};
4653
Configurable<bool> useGlobal{"useGlobal", true, "Select global tracks"};
4754
Configurable<bool> applyCheckPtForRec{"applyCheckPtForRec", false, "Apply checkpT for reconstructed tracks"};
4855
Configurable<bool> applyCheckPtForMC{"applyCheckPtForMC", true, "Apply checkpT for MC-generated tracks"};
56+
Configurable<bool> cfgEvSelkNoITSROFrameBorder{"cfgEvSelkNoITSROFrameBorder", true, "ITSROFrame border event selection cut"};
57+
Configurable<bool> cfgEvSelkNoTimeFrameBorder{"cfgEvSelkNoTimeFrameBorder", true, "TimeFrame border event selection cut"};
4958
Configurable<float> centralEta{"centralEta", 0.9, "eta limit for tracks"};
5059
Configurable<int> numPt{"numPt", 5, "number of pT bins"};
5160
Configurable<float> ptMin{"ptMin", 0.2f, "lower pT cut"};
52-
Configurable<float> dcaXY{"dcaXY", 2.4f, "DCA xy cut"};
53-
Configurable<float> dcaZ{"dcaZ", 2.0f, "DCA z cut"};
61+
Configurable<float> dcaXY{"dcaXY", 0.1f, "DCA xy cut"};
62+
Configurable<float> dcaZ{"dcaZ", 1.0f, "DCA z cut"};
63+
Configurable<float> cfgCutTpcChi2NCl{"cfgCutTpcChi2NCl", 2.5f, "Maximum TPCchi2NCl"};
64+
Configurable<float> cfgCutItsChi2NCl{"cfgCutItsChi2NCl", 40.0f, "Maximum ITSchi2NCl"};
5465
Configurable<float> mintPCCls{"mintPCCls", 70.0f, "minimum number of TPC clusters"};
5566
Configurable<std::vector<int>> centLimits{"centLimits", {0, 5}, "centrality min and max"};
5667
Configurable<std::vector<float>> vertexXYZ{"vertexXYZ", {0.3f, 0.4f, 10.0f}, "vertex cuts"};
5768
Configurable<std::vector<float>> ptCuts{"ptCuts", {0.2f, 2.0f}, "pT cuts"};
5869
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", true, "Enable SameBunchPileup cut"};
5970
Configurable<bool> isApplyGoodZvtxFT0vsPV{"isApplyGoodZvtxFT0vsPV", true, "Enable GoodZvtxFT0vsPV cut"};
71+
Configurable<bool> cfgUseGoodITSLayerAllCut{"cfgUseGoodITSLayerAllCut", true, "Remove time interval with dead ITS zone"};
6072
Configurable<bool> isApplyVertexITSTPC{"isApplyVertexITSTPC", true, "Enable VertexITSTPC cut"};
6173
Configurable<bool> isApplyVertexTOFmatched{"isApplyVertexTOFmatched", true, "Enable VertexTOFmatched cut"};
6274
Configurable<bool> isApplyVertexTRDmatched{"isApplyVertexTRDmatched", true, "Enable VertexTRDmatched cut"};
@@ -67,14 +79,20 @@ struct FactorialMomentsTask {
6779
Configurable<bool> includeITSTracks{"includeITSTracks", false, "ITS Tracks"};
6880
Configurable<int> samplesize{"samplesize", 100, "Sample size"};
6981
Configurable<bool> useMC{"useMC", false, "Use MC information"};
82+
83+
Configurable<int> cfgITScluster{"cfgITScluster", 6, "Minimum Number of ITS cluster"};
84+
Configurable<int> cfgTPCcluster{"cfgTPCcluster", 80, "Minimum Number of TPC cluster"};
85+
Configurable<int> cfgTPCnCrossedRows{"cfgTPCnCrossedRows", 70, "Minimum Number of TPC crossed-rows"};
86+
Configurable<float> cfgTPCnCrossedRowsOverFindableCls{"cfgTPCnCrossedRowsOverFindableCls", 0.8, "Minimum ratio of crossed rows over findable clusters TPC"};
7087
Configurable<int> reduceOutput{"reduceOutput", 0, "Suppress info level output (0 = all output, 1 = per collision, 2 = none)"};
71-
Filter filterTracks = (nabs(aod::track::eta) < centralEta) && (aod::track::pt >= ptMin) && (nabs(aod::track::dcaXY) < dcaXY) && (nabs(aod::track::dcaZ) < dcaZ);
88+
Filter filterTracks = (nabs(aod::track::eta) < centralEta) && (aod::track::pt >= ptMin) && (requireGlobalTrackInFilter()); // && (aod::track::itsChi2NCl < cfgCutItsChi2NCl) && (aod::track::tpcChi2NCl < cfgCutTpcChi2NCl);// && (nabs(aod::track::dcaZ) < dcaZ) ;
7289
Filter filterCollisions = (nabs(aod::collision::posZ) < vertexXYZ.value[2]) && (nabs(aod::collision::posX) < vertexXYZ.value[0]) && (nabs(aod::collision::posY) < vertexXYZ.value[1]);
7390
Service<o2::framework::O2DatabasePDG> pdg;
7491
// Histograms
7592
HistogramRegistry histos1{
7693
"histos1",
7794
{
95+
{"h3DVtxZetaPhi", "VtxZ vs #eta vs #phi;VtxZ;#eta;#phi", {HistType::kTH3F, {{20, -10, 10}, {16, -0.8, 0.8}, {100, 0., o2::constants::math::TwoPI}}}},
7896
{"hRecoPtBefore", "Reco pT before cuts;pt (GeV/c);Counts", {HistType::kTH1F, {{1000, 0.0, 20.0}}}},
7997
{"hGenPtBefore", "Gen pT before cuts;pt (GeV/c);Counts", {HistType::kTH1F, {{1000, 0.0, 20.0}}}},
8098
{"hRecoPtAfter", "Reco pT after cuts;pt (GeV/c);Counts", {HistType::kTH1F, {{1000, 0.0, 20.0}}}},
@@ -104,6 +122,8 @@ struct FactorialMomentsTask {
104122
HistogramRegistry histos{
105123
"histos",
106124
{
125+
126+
{"mtpcsignalvspt", "tpcsignal vs #pt", {HistType::kTH2F, {{900, 0, 10}, {1400, 0, 1400}}}},
107127
{"mChargeBefore", "Charge before MC cuts;charge;entries", {HistType::kTH1F, {{7, -3.5, 3.5}}}},
108128
{"mChargeAfter", "Charge after MC cuts;charge;entries", {HistType::kTH1F, {{7, -3.5, 3.5}}}},
109129
{"mCollID", "collisionID", {HistType::kTH1I, {{1000, -10000, 10000}}}},
@@ -139,6 +159,10 @@ struct FactorialMomentsTask {
139159
},
140160
OutputObjHandlingPolicy::AnalysisObject,
141161
true};
162+
const double dcaxyMaxTrackPar0 = 0.0105;
163+
const double dcaxyMaxTrackPar1 = 0.035;
164+
const double dcaxyMaxTrackPar2 = 1.1;
165+
const double dcazMaxTrack = 2.0;
142166
static const int nBins = 52;
143167
double kMinCharge = 1e-6;
144168
static const int nfqOrder = 6;
@@ -153,6 +177,7 @@ struct FactorialMomentsTask {
153177
std::array<std::array<std::array<double, nBins>, 5>, 6> errorFq = {{{{{0, 0, 0, 0, 0}}}}};
154178
std::vector<std::shared_ptr<TH2>> mHistArrReset;
155179
std::vector<std::shared_ptr<TH1>> mHistArrQA;
180+
std::vector<std::shared_ptr<TH3>> mHistArrEff;
156181
std::vector<std::shared_ptr<TH1>> mFqBinFinal;
157182
std::vector<std::shared_ptr<TH1>> mBinConFinal;
158183
std::vector<std::shared_ptr<TH1>> mFqBinFinalSampled;
@@ -171,14 +196,15 @@ struct FactorialMomentsTask {
171196
}
172197
}
173198
AxisSpec axisPt[5] = {{100, -0.01, 3 * ptCuts.value[1], ""}, {100, -0.01, 3 * ptCuts.value[3], ""}, {100, -0.01, 3 * ptCuts.value[5], ""}, {100, -0.01, 3 * ptCuts.value[7], ""}, {100, -0.01, 3 * ptCuts.value[9], ""}}; // pT axis
174-
auto mEventSelected = std::get<std::shared_ptr<TH1>>(histos.add("mEventSelected", "eventSelected", HistType::kTH1D, {{8, 0.5, 8.5}}));
175-
mEventSelected->GetXaxis()->SetBinLabel(1, "all");
176-
mEventSelected->GetXaxis()->SetBinLabel(2, "sel8");
177-
mEventSelected->GetXaxis()->SetBinLabel(3, "sameBunchPileup");
178-
mEventSelected->GetXaxis()->SetBinLabel(4, "goodZvtxFT0vsPV");
179-
mEventSelected->GetXaxis()->SetBinLabel(5, "vertexITSTPC");
180-
mEventSelected->GetXaxis()->SetBinLabel(6, "centrality");
181-
mEventSelected->GetXaxis()->SetBinLabel(7, "final");
199+
auto mEventSelected = std::get<std::shared_ptr<TH1>>(histos.add("mEventSelected", "eventSelected", HistType::kTH1D, {{7, 0.5, 8.5}}));
200+
mEventSelected->GetXaxis()->SetBinLabel(0, "all");
201+
mEventSelected->GetXaxis()->SetBinLabel(1, "sel8");
202+
mEventSelected->GetXaxis()->SetBinLabel(2, "kNoITSROFrameBorder");
203+
mEventSelected->GetXaxis()->SetBinLabel(3, "kNoTimeFrameBorder");
204+
mEventSelected->GetXaxis()->SetBinLabel(4, "sameBunchPileup");
205+
mEventSelected->GetXaxis()->SetBinLabel(5, "kIsGoodITSLayersAll");
206+
mEventSelected->GetXaxis()->SetBinLabel(6, "kIsGoodZvtxFT0vsPV");
207+
mEventSelected->GetXaxis()->SetBinLabel(7, "FTOC");
182208
auto mTrackSelected = std::get<std::shared_ptr<TH1>>(histos.add(
183209
"mTrackSelected", "Track Selection Steps", HistType::kTH1D, {{5, 0.5, 5.5}}));
184210
mTrackSelected->GetXaxis()->SetBinLabel(1, "all");
@@ -193,6 +219,7 @@ struct FactorialMomentsTask {
193219
binningM[iM] = 2 * (iM + 2);
194220
}
195221
for (int iPt = 0; iPt < numPt; ++iPt) {
222+
mHistArrEff.push_back(std::get<std::shared_ptr<TH3>>(histos.add(Form("bin%i/m3DVtxZetaPhi", iPt + 1), Form("#eta #phi #vtxz for bin %.2f-%.2f;vz;#eta;#phi", ptCuts.value[2 * iPt], ptCuts.value[2 * iPt + 1]), HistType::kTH3F, {{20, -10, 10}, {16, -0.8, +0.8}, {100, 0., o2::constants::math::TwoPI}})));
196223
mHistArrQA.push_back(std::get<std::shared_ptr<TH1>>(histos.add(Form("bin%i/mEta", iPt + 1), Form("#eta for bin %.2f-%.2f;#eta", ptCuts.value[2 * iPt], ptCuts.value[2 * iPt + 1]), HistType::kTH1F, {{1000, -2, 2}})));
197224
mHistArrQA.push_back(std::get<std::shared_ptr<TH1>>(histos.add(Form("bin%i/mPt", iPt + 1), Form("pT for bin %.2f-%.2f;pT", ptCuts.value[2 * iPt], ptCuts.value[2 * iPt + 1]), HistType::kTH1F, {axisPt[iPt]})));
198225
mHistArrQA.push_back(std::get<std::shared_ptr<TH1>>(histos.add(Form("bin%i/mPhi", iPt + 1), Form("#phi for bin %.2f-%.2f;#phi", ptCuts.value[2 * iPt], ptCuts.value[2 * iPt + 1]), HistType::kTH1F, {{1000, 0, o2::constants::math::TwoPI}})));
@@ -219,27 +246,39 @@ struct FactorialMomentsTask {
219246
}
220247
}
221248
}
249+
250+
template <typename T>
251+
float getPhiWeight(const T& candidate, float vtxz)
252+
{
253+
int bin = hBin1->FindBin(vtxz, candidate.eta(), candidate.phi());
254+
float weight = hBin1->GetBinContent(bin);
255+
if (!std::isfinite(weight) || weight <= 0) {
256+
return 1.0;
257+
}
258+
return weight;
259+
}
260+
222261
template <typename T>
223262
void checkpT(const T& track)
224263
{
225-
for (int iPt = 0; iPt < numPt; ++iPt) {
264+
for (auto iPt = 0; iPt < numPt; ++iPt) {
226265
if (track.pt() > ptCuts.value[2 * iPt] && track.pt() < ptCuts.value[2 * iPt + 1]) {
227266
float iphi = track.phi();
228267
iphi = gRandom->Gaus(iphi, o2::constants::math::TwoPI);
229-
iphi = RecoDecay::constrainAngle(iphi);
230-
268+
iphi = RecoDecay::constrainAngle(iphi, 0.);
269+
double phiweight = 1.0;
270+
phiweight = getPhiWeight(track, collisionZ);
271+
mHistArrEff[iPt]->Fill(collisionZ, track.eta(), track.phi());
231272
mHistArrQA[iPt * 4]->Fill(track.eta());
232273
mHistArrQA[iPt * 4 + 1]->Fill(track.pt());
233-
mHistArrQA[iPt * 4 + 2]->Fill(track.phi());
274+
mHistArrQA[iPt * 4 + 2]->Fill(iphi, phiweight);
234275
countTracks[iPt]++;
235-
236-
for (int iM = 0; iM < nBins; ++iM) {
237-
mHistArrReset[iPt * nBins + iM]->Fill(track.eta(), track.phi());
276+
for (auto iM = 0; iM < nBins; ++iM) {
277+
mHistArrReset[iPt * nBins + iM]->Fill(track.eta(), iphi);
238278
}
239279
}
240280
}
241281
}
242-
243282
void calculateMoments(std::vector<std::shared_ptr<TH2>> hist)
244283
{
245284
double binContent = 0;
@@ -305,21 +344,36 @@ struct FactorialMomentsTask {
305344
void processRun3(soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>>::iterator const& coll, TracksFMs const& tracks)
306345
{
307346
// selection of events
347+
histos.fill(HIST("mEventSelected"), 0);
308348
if (!coll.sel8()) {
309349
return;
310350
}
351+
if (cfgEvSelkNoITSROFrameBorder && !(coll.selection_bit(o2::aod::evsel::kNoITSROFrameBorder))) {
352+
return;
353+
}
354+
355+
histos.fill(HIST("mEventSelected"), 2);
356+
if (cfgEvSelkNoTimeFrameBorder && !(coll.selection_bit(o2::aod::evsel::kNoTimeFrameBorder))) {
357+
return;
358+
}
359+
histos.fill(HIST("mEventSelected"), 3);
311360
if (isApplySameBunchPileup && !coll.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
312361
return;
313362
}
314-
if (isApplyGoodZvtxFT0vsPV && !coll.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV)) {
363+
histos.fill(HIST("mEventSelected"), 4);
364+
if (cfgUseGoodITSLayerAllCut && !(coll.selection_bit(o2::aod::evsel::kIsGoodITSLayersAll))) {
315365
return;
316366
}
317-
if (isApplyVertexITSTPC && !coll.selection_bit(o2::aod::evsel::kIsVertexITSTPC)) {
367+
histos.fill(HIST("mEventSelected"), 5);
368+
if (isApplyGoodZvtxFT0vsPV && !coll.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV)) {
318369
return;
319370
}
371+
histos.fill(HIST("mEventSelected"), 6);
320372
if (coll.centFT0C() < centLimits.value[0] || coll.centFT0C() > centLimits.value[1]) {
321373
return;
322374
}
375+
collisionZ = coll.posZ();
376+
histos.fill(HIST("mEventSelected"), 7);
323377
histos.fill(HIST("mVertexX"), coll.posX());
324378
histos.fill(HIST("mVertexY"), coll.posY());
325379
histos.fill(HIST("mVertexZ"), coll.posZ());
@@ -340,29 +394,31 @@ struct FactorialMomentsTask {
340394
continue;
341395
if (useGlobal && !track.isGlobalTrack())
342396
continue;
343-
histos.fill(HIST("mCollID"), track.collisionId());
344-
histos.fill(HIST("mEta"), track.eta());
345-
histos.fill(HIST("mPt"), track.pt());
346-
histos.fill(HIST("mPhi"), track.phi());
347-
histos.fill(HIST("mNFindableClsTPC"), track.tpcNClsFindable());
348-
histos.fill(HIST("mNClsTPC"), track.tpcNClsFound());
349-
histos.fill(HIST("mNClsITS"), track.itsNCls());
350-
histos.fill(HIST("mChi2TPC"), track.tpcChi2NCl());
351-
histos.fill(HIST("mChi2ITS"), track.itsChi2NCl());
352-
histos.fill(HIST("mChi2TRD"), track.trdChi2());
353-
histos.fill(HIST("mDCAxy"), track.dcaXY());
354-
histos.fill(HIST("mDCAx"), track.dcaZ());
355-
histos.fill(HIST("mDCAxyPt"), track.pt(), track.dcaXY());
356-
histos.fill(HIST("mDCAzPt"), track.pt(), track.dcaZ());
357-
histos.fill(HIST("mNSharedClsTPC"), track.tpcNClsShared());
358-
histos.fill(HIST("mCrossedRowsTPC"), track.tpcNClsCrossedRows());
359-
histos.fill(HIST("mNFinClsminusCRows"), track.tpcNClsFindableMinusCrossedRows());
360-
histos.fill(HIST("mNFractionShClsTPC"), track.tpcFractionSharedCls());
361-
histos.fill(HIST("mSharedClsvsPt"), track.pt(), track.tpcNClsShared());
362-
histos.fill(HIST("mSharedClsProbvsPt"), track.pt(), track.tpcFractionSharedCls() / track.tpcNClsCrossedRows());
363-
checkpT(track);
397+
if (std::fabs(track.dcaXY()) < (dcaxyMaxTrackPar0 + dcaxyMaxTrackPar1 / std::pow(track.pt(), dcaxyMaxTrackPar2))) {
398+
histos.fill(HIST("mCollID"), track.collisionId());
399+
histos.fill(HIST("mEta"), track.eta());
400+
histos.fill(HIST("mPt"), track.pt());
401+
histos.fill(HIST("mPhi"), track.phi());
402+
histos.fill(HIST("mNFindableClsTPC"), track.tpcNClsFindable());
403+
histos.fill(HIST("mNClsTPC"), track.tpcNClsFound());
404+
histos.fill(HIST("mNClsITS"), track.itsNCls());
405+
histos.fill(HIST("mChi2TPC"), track.tpcChi2NCl());
406+
histos.fill(HIST("mChi2ITS"), track.itsChi2NCl());
407+
histos.fill(HIST("mChi2TRD"), track.trdChi2());
408+
histos.fill(HIST("mDCAxy"), track.dcaXY());
409+
histos.fill(HIST("mtpcsignalvspt"), track.pt(), track.tpcSignal());
410+
histos.fill(HIST("mDCAxyPt"), track.pt(), track.dcaXY());
411+
histos.fill(HIST("mDCAzPt"), track.pt(), track.dcaZ());
412+
histos.fill(HIST("mDCAzPt"), track.pt(), track.dcaZ());
413+
histos.fill(HIST("mNSharedClsTPC"), track.tpcNClsShared());
414+
histos.fill(HIST("mCrossedRowsTPC"), track.tpcNClsCrossedRows());
415+
histos.fill(HIST("mNFinClsminusCRows"), track.tpcNClsFindableMinusCrossedRows());
416+
histos.fill(HIST("mNFractionShClsTPC"), track.tpcFractionSharedCls());
417+
histos.fill(HIST("mSharedClsvsPt"), track.pt(), track.tpcNClsShared());
418+
histos.fill(HIST("mSharedClsProbvsPt"), track.pt(), track.tpcFractionSharedCls() / track.tpcNClsCrossedRows());
419+
checkpT(track);
420+
}
364421
}
365-
366422
for (int iPt = 0; iPt < numPt; ++iPt) {
367423
if (countTracks[iPt] > 0) {
368424
mHistArrQA[iPt * 4 + 3]->Fill(countTracks[iPt]);
@@ -398,6 +454,7 @@ struct FactorialMomentsTask {
398454
if (coll.centFT0C() < centLimits.value[0] || coll.centFT0C() > centLimits.value[1]) {
399455
return;
400456
}
457+
401458
histos.fill(HIST("mEventSelected"), 5);
402459
histos.fill(HIST("mVertexX"), coll.posX());
403460
histos.fill(HIST("mVertexY"), coll.posY());
@@ -416,28 +473,30 @@ struct FactorialMomentsTask {
416473
continue;
417474
if (useGlobal && !track.isGlobalTrack())
418475
continue;
419-
histos.fill(HIST("mCollID"), track.collisionId());
420-
histos.fill(HIST("mEta"), track.eta());
421-
histos.fill(HIST("mPt"), track.pt());
422-
histos.fill(HIST("mPhi"), track.phi());
423-
histos.fill(HIST("mNFindableClsTPC"), track.tpcNClsFindable());
424-
histos.fill(HIST("mNClsTPC"), track.tpcNClsFound());
425-
histos.fill(HIST("mNClsITS"), track.itsNCls());
426-
histos.fill(HIST("mChi2TPC"), track.tpcChi2NCl());
427-
histos.fill(HIST("mChi2ITS"), track.itsChi2NCl());
428-
histos.fill(HIST("mChi2TRD"), track.trdChi2());
429-
histos.fill(HIST("mDCAxy"), track.dcaXY());
430-
histos.fill(HIST("mDCAx"), track.dcaZ());
431-
histos.fill(HIST("mDCAxyPt"), track.pt(), track.dcaXY());
432-
histos.fill(HIST("mDCAzPt"), track.pt(), track.dcaZ());
433-
histos.fill(HIST("mNSharedClsTPC"), track.tpcNClsShared());
434-
histos.fill(HIST("mCrossedRowsTPC"), track.tpcNClsCrossedRows());
435-
histos.fill(HIST("mNFinClsminusCRows"), track.tpcNClsFindableMinusCrossedRows());
436-
histos.fill(HIST("mNFractionShClsTPC"), track.tpcFractionSharedCls());
437-
histos.fill(HIST("mSharedClsvsPt"), track.pt(), track.tpcNClsShared());
438-
histos.fill(HIST("mSharedClsProbvsPt"), track.pt(), track.tpcFractionSharedCls() / track.tpcNClsCrossedRows());
439-
if (applyCheckPtForRec && !applyCheckPtForMC) {
440-
checkpT(track);
476+
if (std::fabs(track.dcaXY()) < (dcaxyMaxTrackPar0 + dcaxyMaxTrackPar1 / std::pow(track.pt(), dcaxyMaxTrackPar2))) {
477+
histos.fill(HIST("mCollID"), track.collisionId());
478+
histos.fill(HIST("mEta"), track.eta());
479+
histos.fill(HIST("mPt"), track.pt());
480+
histos.fill(HIST("mPhi"), track.phi());
481+
histos.fill(HIST("mNFindableClsTPC"), track.tpcNClsFindable());
482+
histos.fill(HIST("mNClsTPC"), track.tpcNClsFound());
483+
histos.fill(HIST("mNClsITS"), track.itsNCls());
484+
histos.fill(HIST("mChi2TPC"), track.tpcChi2NCl());
485+
histos.fill(HIST("mChi2ITS"), track.itsChi2NCl());
486+
histos.fill(HIST("mChi2TRD"), track.trdChi2());
487+
histos.fill(HIST("mDCAxy"), track.dcaXY());
488+
histos.fill(HIST("mDCAx"), track.dcaZ());
489+
histos.fill(HIST("mDCAxyPt"), track.pt(), track.dcaXY());
490+
histos.fill(HIST("mDCAzPt"), track.pt(), track.dcaZ());
491+
histos.fill(HIST("mNSharedClsTPC"), track.tpcNClsShared());
492+
histos.fill(HIST("mCrossedRowsTPC"), track.tpcNClsCrossedRows());
493+
histos.fill(HIST("mNFinClsminusCRows"), track.tpcNClsFindableMinusCrossedRows());
494+
histos.fill(HIST("mNFractionShClsTPC"), track.tpcFractionSharedCls());
495+
histos.fill(HIST("mSharedClsvsPt"), track.pt(), track.tpcNClsShared());
496+
histos.fill(HIST("mSharedClsProbvsPt"), track.pt(), track.tpcFractionSharedCls() / track.tpcNClsCrossedRows());
497+
if (applyCheckPtForRec && !applyCheckPtForMC) {
498+
checkpT(track);
499+
}
441500
}
442501
}
443502
auto mcParts = mcParticles.sliceBy(perMcCollision, coll.mcCollision().globalIndex());

0 commit comments

Comments
 (0)