@@ -53,24 +53,29 @@ using namespace o2;
5353using namespace o2 ::framework;
5454using namespace o2 ::framework::expressions;
5555TH1D* tmpFqErr[6 ][5 ][52 ];
56-
56+ float collisionZ = 0 .f;
5757struct FactorialMomentsTask {
5858 Configurable<bool > useITS{" useITS" , false , " Select tracks with ITS" };
5959 Configurable<bool > useTPC{" useTPC" , false , " Select tracks with TPC" };
6060 Configurable<bool > useGlobal{" useGlobal" , true , " Select global tracks" };
6161 Configurable<bool > applyCheckPtForRec{" applyCheckPtForRec" , false , " Apply checkpT for reconstructed tracks" };
6262 Configurable<bool > applyCheckPtForMC{" applyCheckPtForMC" , true , " Apply checkpT for MC-generated tracks" };
63+ Configurable<bool > cfgEvSelkNoITSROFrameBorder{" cfgEvSelkNoITSROFrameBorder" , true , " ITSROFrame border event selection cut" };
64+ Configurable<bool > cfgEvSelkNoTimeFrameBorder{" cfgEvSelkNoTimeFrameBorder" , true , " TimeFrame border event selection cut" };
6365 Configurable<float > centralEta{" centralEta" , 0.9 , " eta limit for tracks" };
6466 Configurable<int > numPt{" numPt" , 5 , " number of pT bins" };
6567 Configurable<float > ptMin{" ptMin" , 0 .2f , " lower pT cut" };
66- Configurable<float > dcaXY{" dcaXY" , 2 .4f , " DCA xy cut" };
67- Configurable<float > dcaZ{" dcaZ" , 2 .0f , " DCA z cut" };
68+ Configurable<float > dcaXY{" dcaXY" , 0 .1f , " DCA xy cut" };
69+ Configurable<float > dcaZ{" dcaZ" , 1 .0f , " DCA z cut" };
70+ Configurable<float > cfgCutTpcChi2NCl{" cfgCutTpcChi2NCl" , 2 .5f , " Maximum TPCchi2NCl" };
71+ Configurable<float > cfgCutItsChi2NCl{" cfgCutItsChi2NCl" , 40 .0f , " Maximum ITSchi2NCl" };
6872 Configurable<float > mintPCCls{" mintPCCls" , 70 .0f , " minimum number of TPC clusters" };
6973 Configurable<std::vector<int >> centLimits{" centLimits" , {0 , 5 }, " centrality min and max" };
7074 Configurable<std::vector<float >> vertexXYZ{" vertexXYZ" , {0 .3f , 0 .4f , 10 .0f }, " vertex cuts" };
7175 Configurable<std::vector<float >> ptCuts{" ptCuts" , {0 .2f , 2 .0f }, " pT cuts" };
7276 Configurable<bool > isApplySameBunchPileup{" isApplySameBunchPileup" , true , " Enable SameBunchPileup cut" };
7377 Configurable<bool > isApplyGoodZvtxFT0vsPV{" isApplyGoodZvtxFT0vsPV" , true , " Enable GoodZvtxFT0vsPV cut" };
78+ Configurable<bool > cfgUseGoodITSLayerAllCut{" cfgUseGoodITSLayerAllCut" , true , " Remove time interval with dead ITS zone" };
7479 Configurable<bool > isApplyVertexITSTPC{" isApplyVertexITSTPC" , true , " Enable VertexITSTPC cut" };
7580 Configurable<bool > isApplyVertexTOFmatched{" isApplyVertexTOFmatched" , true , " Enable VertexTOFmatched cut" };
7681 Configurable<bool > isApplyVertexTRDmatched{" isApplyVertexTRDmatched" , true , " Enable VertexTRDmatched cut" };
@@ -81,14 +86,20 @@ struct FactorialMomentsTask {
8186 Configurable<bool > includeITSTracks{" includeITSTracks" , false , " ITS Tracks" };
8287 Configurable<int > samplesize{" samplesize" , 100 , " Sample size" };
8388 Configurable<bool > useMC{" useMC" , false , " Use MC information" };
89+ Configurable<bool > useGlobalTrack{" useGlobalTrack" , true , " Require global track in filter" };
90+ Configurable<int > cfgITScluster{" cfgITScluster" , 6 , " Minimum Number of ITS cluster" };
91+ Configurable<int > cfgTPCcluster{" cfgTPCcluster" , 80 , " Minimum Number of TPC cluster" };
92+ Configurable<int > cfgTPCnCrossedRows{" cfgTPCnCrossedRows" , 70 , " Minimum Number of TPC crossed-rows" };
93+ Configurable<float > cfgTPCnCrossedRowsOverFindableCls{" cfgTPCnCrossedRowsOverFindableCls" , 0.8 , " Minimum ratio of crossed rows over findable clusters TPC" };
8494 Configurable<int > reduceOutput{" reduceOutput" , 0 , " Suppress info level output (0 = all output, 1 = per collision, 2 = none)" };
85- Filter filterTracks = (nabs(aod::track::eta) < centralEta) && (aod::track::pt >= ptMin) && (nabs(aod::track::dcaXY) < dcaXY) && (nabs(aod::track::dcaZ) < dcaZ) ;
95+ Filter filterTracks = (nabs(aod::track::eta) < centralEta) && (aod::track::pt >= ptMin);
8696 Filter filterCollisions = (nabs(aod::collision::posZ) < vertexXYZ.value[2 ]) && (nabs(aod::collision::posX) < vertexXYZ.value[0 ]) && (nabs(aod::collision::posY) < vertexXYZ.value[1 ]);
8797 Service<o2::framework::O2DatabasePDG> pdg;
8898 // Histograms
8999 HistogramRegistry histos1{
90100 " histos1" ,
91101 {
102+ {" 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}}}},
92103 {" hRecoPtBefore" , " Reco pT before cuts;pt (GeV/c);Counts" , {HistType::kTH1F , {{1000 , 0.0 , 20.0 }}}},
93104 {" hGenPtBefore" , " Gen pT before cuts;pt (GeV/c);Counts" , {HistType::kTH1F , {{1000 , 0.0 , 20.0 }}}},
94105 {" hRecoPtAfter" , " Reco pT after cuts;pt (GeV/c);Counts" , {HistType::kTH1F , {{1000 , 0.0 , 20.0 }}}},
@@ -118,6 +129,8 @@ struct FactorialMomentsTask {
118129 HistogramRegistry histos{
119130 " histos" ,
120131 {
132+
133+ {" mtpcsignalvspt" , " tpcsignal vs #pt" , {HistType::kTH2F , {{900 , 0 , 10 }, {1400 , 0 , 1400 }}}},
121134 {" mChargeBefore" , " Charge before MC cuts;charge;entries" , {HistType::kTH1F , {{7 , -3.5 , 3.5 }}}},
122135 {" mChargeAfter" , " Charge after MC cuts;charge;entries" , {HistType::kTH1F , {{7 , -3.5 , 3.5 }}}},
123136 {" mCollID" , " collisionID" , {HistType::kTH1I , {{1000 , -10000 , 10000 }}}},
@@ -153,6 +166,10 @@ struct FactorialMomentsTask {
153166 },
154167 OutputObjHandlingPolicy::AnalysisObject,
155168 true };
169+ const double dcaxyMaxTrackPar0 = 0.0105 ;
170+ const double dcaxyMaxTrackPar1 = 0.035 ;
171+ const double dcaxyMaxTrackPar2 = 1.1 ;
172+ const double dcazMaxTrack = 2.0 ;
156173 static const int nBins = 52 ;
157174 double kMinCharge = 1e-6 ;
158175 static const int nfqOrder = 6 ;
@@ -167,6 +184,7 @@ struct FactorialMomentsTask {
167184 std::array<std::array<std::array<double , nBins>, 5 >, 6 > errorFq = {{{{{0 , 0 , 0 , 0 , 0 }}}}};
168185 std::vector<std::shared_ptr<TH2>> mHistArrReset ;
169186 std::vector<std::shared_ptr<TH1>> mHistArrQA ;
187+ std::vector<std::shared_ptr<TH3>> mHistArrEff ;
170188 std::vector<std::shared_ptr<TH1>> mFqBinFinal ;
171189 std::vector<std::shared_ptr<TH1>> mBinConFinal ;
172190 std::vector<std::shared_ptr<TH1>> mFqBinFinalSampled ;
@@ -185,14 +203,15 @@ struct FactorialMomentsTask {
185203 }
186204 }
187205 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
188- auto mEventSelected = std::get<std::shared_ptr<TH1>>(histos.add (" mEventSelected" , " eventSelected" , HistType::kTH1D , {{8 , 0.5 , 8.5 }}));
189- mEventSelected ->GetXaxis ()->SetBinLabel (1 , " all" );
190- mEventSelected ->GetXaxis ()->SetBinLabel (2 , " sel8" );
191- mEventSelected ->GetXaxis ()->SetBinLabel (3 , " sameBunchPileup" );
192- mEventSelected ->GetXaxis ()->SetBinLabel (4 , " goodZvtxFT0vsPV" );
193- mEventSelected ->GetXaxis ()->SetBinLabel (5 , " vertexITSTPC" );
194- mEventSelected ->GetXaxis ()->SetBinLabel (6 , " centrality" );
195- mEventSelected ->GetXaxis ()->SetBinLabel (7 , " final" );
206+ auto mEventSelected = std::get<std::shared_ptr<TH1>>(histos.add (" mEventSelected" , " eventSelected" , HistType::kTH1D , {{7 , 0.5 , 8.5 }}));
207+ mEventSelected ->GetXaxis ()->SetBinLabel (0 , " all" );
208+ mEventSelected ->GetXaxis ()->SetBinLabel (1 , " sel8" );
209+ mEventSelected ->GetXaxis ()->SetBinLabel (2 , " kNoITSROFrameBorder" );
210+ mEventSelected ->GetXaxis ()->SetBinLabel (3 , " kNoTimeFrameBorder" );
211+ mEventSelected ->GetXaxis ()->SetBinLabel (4 , " sameBunchPileup" );
212+ mEventSelected ->GetXaxis ()->SetBinLabel (5 , " kIsGoodITSLayersAll" );
213+ mEventSelected ->GetXaxis ()->SetBinLabel (6 , " kIsGoodZvtxFT0vsPV" );
214+ mEventSelected ->GetXaxis ()->SetBinLabel (7 , " FTOC" );
196215 auto mTrackSelected = std::get<std::shared_ptr<TH1>>(histos.add (
197216 " mTrackSelected" , " Track Selection Steps" , HistType::kTH1D , {{5 , 0.5 , 5.5 }}));
198217 mTrackSelected ->GetXaxis ()->SetBinLabel (1 , " all" );
@@ -207,6 +226,7 @@ struct FactorialMomentsTask {
207226 binningM[iM] = 2 * (iM + 2 );
208227 }
209228 for (int iPt = 0 ; iPt < numPt; ++iPt) {
229+ 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}})));
210230 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 }})));
211231 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]})));
212232 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}})));
@@ -236,24 +256,22 @@ struct FactorialMomentsTask {
236256 template <typename T>
237257 void checkpT (const T& track)
238258 {
239- for (int iPt = 0 ; iPt < numPt; ++iPt) {
259+ for (auto iPt = 0 ; iPt < numPt; ++iPt) {
240260 if (track.pt () > ptCuts.value [2 * iPt] && track.pt () < ptCuts.value [2 * iPt + 1 ]) {
241261 float iphi = track.phi ();
242262 iphi = gRandom ->Gaus (iphi, o2::constants::math::TwoPI);
243- iphi = RecoDecay::constrainAngle (iphi);
244-
263+ iphi = RecoDecay::constrainAngle (iphi, 0 . );
264+ mHistArrEff [iPt]-> Fill (collisionZ, track. eta (), iphi);
245265 mHistArrQA [iPt * 4 ]->Fill (track.eta ());
246266 mHistArrQA [iPt * 4 + 1 ]->Fill (track.pt ());
247- mHistArrQA [iPt * 4 + 2 ]->Fill (track. phi () );
267+ mHistArrQA [iPt * 4 + 2 ]->Fill (iphi );
248268 countTracks[iPt]++;
249-
250- for (int iM = 0 ; iM < nBins; ++iM) {
251- mHistArrReset [iPt * nBins + iM]->Fill (track.eta (), track.phi ());
269+ for (auto iM = 0 ; iM < nBins; ++iM) {
270+ mHistArrReset [iPt * nBins + iM]->Fill (track.eta (), iphi);
252271 }
253272 }
254273 }
255274 }
256-
257275 void calculateMoments (std::vector<std::shared_ptr<TH2>> hist)
258276 {
259277 double binContent = 0 ;
@@ -319,21 +337,36 @@ struct FactorialMomentsTask {
319337 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)
320338 {
321339 // selection of events
340+ histos.fill (HIST (" mEventSelected" ), 0 );
322341 if (!coll.sel8 ()) {
323342 return ;
324343 }
344+ if (cfgEvSelkNoITSROFrameBorder && !(coll.selection_bit (o2::aod::evsel::kNoITSROFrameBorder ))) {
345+ return ;
346+ }
347+
348+ histos.fill (HIST (" mEventSelected" ), 2 );
349+ if (cfgEvSelkNoTimeFrameBorder && !(coll.selection_bit (o2::aod::evsel::kNoTimeFrameBorder ))) {
350+ return ;
351+ }
352+ histos.fill (HIST (" mEventSelected" ), 3 );
325353 if (isApplySameBunchPileup && !coll.selection_bit (o2::aod::evsel::kNoSameBunchPileup )) {
326354 return ;
327355 }
328- if (isApplyGoodZvtxFT0vsPV && !coll.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
356+ histos.fill (HIST (" mEventSelected" ), 4 );
357+ if (cfgUseGoodITSLayerAllCut && !(coll.selection_bit (o2::aod::evsel::kIsGoodITSLayersAll ))) {
329358 return ;
330359 }
331- if (isApplyVertexITSTPC && !coll.selection_bit (o2::aod::evsel::kIsVertexITSTPC )) {
360+ histos.fill (HIST (" mEventSelected" ), 5 );
361+ if (isApplyGoodZvtxFT0vsPV && !coll.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
332362 return ;
333363 }
364+ histos.fill (HIST (" mEventSelected" ), 6 );
334365 if (coll.centFT0C () < centLimits.value [0 ] || coll.centFT0C () > centLimits.value [1 ]) {
335366 return ;
336367 }
368+ collisionZ = coll.posZ ();
369+ histos.fill (HIST (" mEventSelected" ), 7 );
337370 histos.fill (HIST (" mVertexX" ), coll.posX ());
338371 histos.fill (HIST (" mVertexY" ), coll.posY ());
339372 histos.fill (HIST (" mVertexZ" ), coll.posZ ());
@@ -354,29 +387,32 @@ struct FactorialMomentsTask {
354387 continue ;
355388 if (useGlobal && !track.isGlobalTrack ())
356389 continue ;
357- histos.fill (HIST (" mCollID" ), track.collisionId ());
358- histos.fill (HIST (" mEta" ), track.eta ());
359- histos.fill (HIST (" mPt" ), track.pt ());
360- histos.fill (HIST (" mPhi" ), track.phi ());
361- histos.fill (HIST (" mNFindableClsTPC" ), track.tpcNClsFindable ());
362- histos.fill (HIST (" mNClsTPC" ), track.tpcNClsFound ());
363- histos.fill (HIST (" mNClsITS" ), track.itsNCls ());
364- histos.fill (HIST (" mChi2TPC" ), track.tpcChi2NCl ());
365- histos.fill (HIST (" mChi2ITS" ), track.itsChi2NCl ());
366- histos.fill (HIST (" mChi2TRD" ), track.trdChi2 ());
367- histos.fill (HIST (" mDCAxy" ), track.dcaXY ());
368- histos.fill (HIST (" mDCAx" ), track.dcaZ ());
369- histos.fill (HIST (" mDCAxyPt" ), track.pt (), track.dcaXY ());
370- histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
371- histos.fill (HIST (" mNSharedClsTPC" ), track.tpcNClsShared ());
372- histos.fill (HIST (" mCrossedRowsTPC" ), track.tpcNClsCrossedRows ());
373- histos.fill (HIST (" mNFinClsminusCRows" ), track.tpcNClsFindableMinusCrossedRows ());
374- histos.fill (HIST (" mNFractionShClsTPC" ), track.tpcFractionSharedCls ());
375- histos.fill (HIST (" mSharedClsvsPt" ), track.pt (), track.tpcNClsShared ());
376- histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
377- checkpT (track);
378- }
379390
391+ if (std::fabs (track.dcaXY ()) < (dcaxyMaxTrackPar0 + dcaxyMaxTrackPar1 / std::pow (track.pt (), dcaxyMaxTrackPar2))) {
392+ histos.fill (HIST (" mCollID" ), track.collisionId ());
393+ histos.fill (HIST (" mEta" ), track.eta ());
394+ histos.fill (HIST (" mPt" ), track.pt ());
395+ histos.fill (HIST (" mPhi" ), track.phi ());
396+ histos.fill (HIST (" mNFindableClsTPC" ), track.tpcNClsFindable ());
397+ histos.fill (HIST (" mNClsTPC" ), track.tpcNClsFound ());
398+ histos.fill (HIST (" mNClsITS" ), track.itsNCls ());
399+ histos.fill (HIST (" mChi2TPC" ), track.tpcChi2NCl ());
400+ histos.fill (HIST (" mChi2ITS" ), track.itsChi2NCl ());
401+ histos.fill (HIST (" mChi2TRD" ), track.trdChi2 ());
402+ histos.fill (HIST (" mDCAxy" ), track.dcaXY ());
403+ histos.fill (HIST (" mtpcsignalvspt" ), track.pt (), track.tpcSignal ());
404+ histos.fill (HIST (" mDCAxyPt" ), track.pt (), track.dcaXY ());
405+ histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
406+ histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
407+ histos.fill (HIST (" mNSharedClsTPC" ), track.tpcNClsShared ());
408+ histos.fill (HIST (" mCrossedRowsTPC" ), track.tpcNClsCrossedRows ());
409+ histos.fill (HIST (" mNFinClsminusCRows" ), track.tpcNClsFindableMinusCrossedRows ());
410+ histos.fill (HIST (" mNFractionShClsTPC" ), track.tpcFractionSharedCls ());
411+ histos.fill (HIST (" mSharedClsvsPt" ), track.pt (), track.tpcNClsShared ());
412+ histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
413+ checkpT (track);
414+ }
415+ }
380416 for (int iPt = 0 ; iPt < numPt; ++iPt) {
381417 if (countTracks[iPt] > 0 ) {
382418 mHistArrQA [iPt * 4 + 3 ]->Fill (countTracks[iPt]);
@@ -412,6 +448,7 @@ struct FactorialMomentsTask {
412448 if (coll.centFT0C () < centLimits.value [0 ] || coll.centFT0C () > centLimits.value [1 ]) {
413449 return ;
414450 }
451+
415452 histos.fill (HIST (" mEventSelected" ), 5 );
416453 histos.fill (HIST (" mVertexX" ), coll.posX ());
417454 histos.fill (HIST (" mVertexY" ), coll.posY ());
@@ -430,28 +467,31 @@ struct FactorialMomentsTask {
430467 continue ;
431468 if (useGlobal && !track.isGlobalTrack ())
432469 continue ;
433- histos.fill (HIST (" mCollID" ), track.collisionId ());
434- histos.fill (HIST (" mEta" ), track.eta ());
435- histos.fill (HIST (" mPt" ), track.pt ());
436- histos.fill (HIST (" mPhi" ), track.phi ());
437- histos.fill (HIST (" mNFindableClsTPC" ), track.tpcNClsFindable ());
438- histos.fill (HIST (" mNClsTPC" ), track.tpcNClsFound ());
439- histos.fill (HIST (" mNClsITS" ), track.itsNCls ());
440- histos.fill (HIST (" mChi2TPC" ), track.tpcChi2NCl ());
441- histos.fill (HIST (" mChi2ITS" ), track.itsChi2NCl ());
442- histos.fill (HIST (" mChi2TRD" ), track.trdChi2 ());
443- histos.fill (HIST (" mDCAxy" ), track.dcaXY ());
444- histos.fill (HIST (" mDCAx" ), track.dcaZ ());
445- histos.fill (HIST (" mDCAxyPt" ), track.pt (), track.dcaXY ());
446- histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
447- histos.fill (HIST (" mNSharedClsTPC" ), track.tpcNClsShared ());
448- histos.fill (HIST (" mCrossedRowsTPC" ), track.tpcNClsCrossedRows ());
449- histos.fill (HIST (" mNFinClsminusCRows" ), track.tpcNClsFindableMinusCrossedRows ());
450- histos.fill (HIST (" mNFractionShClsTPC" ), track.tpcFractionSharedCls ());
451- histos.fill (HIST (" mSharedClsvsPt" ), track.pt (), track.tpcNClsShared ());
452- histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
453- if (applyCheckPtForRec && !applyCheckPtForMC) {
454- checkpT (track);
470+ if (std::fabs (track.dcaXY ()) < (dcaxyMaxTrackPar0 + dcaxyMaxTrackPar1 / std::pow (track.pt (), dcaxyMaxTrackPar2))) {
471+ histos.fill (HIST (" mCollID" ), track.collisionId ());
472+ histos.fill (HIST (" mEta" ), track.eta ());
473+ histos.fill (HIST (" mPt" ), track.pt ());
474+ histos.fill (HIST (" mPhi" ), track.phi ());
475+ histos.fill (HIST (" mNFindableClsTPC" ), track.tpcNClsFindable ());
476+ histos.fill (HIST (" mNClsTPC" ), track.tpcNClsFound ());
477+ histos.fill (HIST (" mNClsITS" ), track.itsNCls ());
478+ histos.fill (HIST (" mChi2TPC" ), track.tpcChi2NCl ());
479+ histos.fill (HIST (" mChi2ITS" ), track.itsChi2NCl ());
480+ histos.fill (HIST (" mChi2TRD" ), track.trdChi2 ());
481+ histos.fill (HIST (" mDCAxy" ), track.dcaXY ());
482+ histos.fill (HIST (" mDCAx" ), track.dcaZ ());
483+ histos.fill (HIST (" mtpcsignalvspt" ), track.pt (), track.tpcSignal ());
484+ histos.fill (HIST (" mDCAxyPt" ), track.pt (), track.dcaXY ());
485+ histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
486+ histos.fill (HIST (" mNSharedClsTPC" ), track.tpcNClsShared ());
487+ histos.fill (HIST (" mCrossedRowsTPC" ), track.tpcNClsCrossedRows ());
488+ histos.fill (HIST (" mNFinClsminusCRows" ), track.tpcNClsFindableMinusCrossedRows ());
489+ histos.fill (HIST (" mNFractionShClsTPC" ), track.tpcFractionSharedCls ());
490+ histos.fill (HIST (" mSharedClsvsPt" ), track.pt (), track.tpcNClsShared ());
491+ histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
492+ if (applyCheckPtForRec && !applyCheckPtForMC) {
493+ checkpT (track);
494+ }
455495 }
456496 }
457497 auto mcParts = mcParticles.sliceBy (perMcCollision, coll.mcCollision ().globalIndex ());
0 commit comments