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;
3940using namespace o2 ::framework;
4041using namespace o2 ::framework::expressions;
4142TH1D* 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" ));
4350struct 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