@@ -60,6 +60,9 @@ struct k892pmanalysis {
6060 Configurable<int > cLambdaAntiLambdaMassBins{" cLambdaAntiLambdaMassBins" , 250 , " V0 mass (in the (Anti)Lambda0 hypothesis) binning" };
6161
6262 Configurable<int > cDCABinsQA{" cDCABinsQA" , 150 , " DCA binning" };
63+
64+ Configurable<int > cTpcNsigmaPionBinsQA{" cTpcNsigmaPionBinsQA" , 140 , " tpcNSigmaPi binning" };
65+
6366 // Pre-selection cuts
6467 Configurable<double > cMinPtcut{" cMinPtcut" , 0.15 , " Track minimum pt cut" };
6568 Configurable<double > cMaxEtacut{" cMaxEtacut" , 0.8 , " Track maximum eta cut" };
@@ -72,10 +75,7 @@ struct k892pmanalysis {
7275 // / PID Selections
7376 Configurable<double > cMaxTPCnSigmaPion{" cMaxTPCnSigmaPion" , 3.0 , " TPC nSigma cut for Pion" }; // TPC
7477 Configurable<double > cMaxTOFnSigmaPion{" cMaxTOFnSigmaPion" , 3.0 , " TOF nSigma cut for Pion" }; // TOF
75- Configurable<double > cMaxTPCnSigmaV0Pion{" cMaxTPCnSigmaV0Pion" , 5.0 , " TPC nSigma cut for V0 Pion" }; // TPC, secondary pions
76- Configurable<double > cMaxTOFnSigmaV0Pion{" cMaxTOFnSigmaV0Pion" , 5.0 , " TOF nSigma cut for V0 Pion" }; // TOF, secondary pions
7778 Configurable<double > nsigmaCutCombinedPion{" nsigmaCutCombinedPion" , -999 , " Combined nSigma cut for Pion" }; // Combined
78- Configurable<double > nsigmaCutCombinedV0Pion{" nsigmaCutCombinedV0Pion" , -999 , " Combined nSigma cut for V0 Pion" }; // Combined, secondary pions
7979 Configurable<bool > cUseOnlyTOFTrackPi{" cUseOnlyTOFTrackPi" , false , " Use only TOF track for PID selection" }; // Use only TOF track for Pion PID selection
8080 Configurable<bool > cUseOnlyTOFTrackKa{" cUseOnlyTOFTrackKa" , false , " Use only TOF track for PID selection" }; // Use only TOF track for Kaon PID selection
8181 // Track selections
@@ -86,7 +86,7 @@ struct k892pmanalysis {
8686 Configurable<double > cV0MinCosPA{" cV0MinCosPA" , 0.97 , " V0 minimum pointing angle cosine" };
8787 Configurable<double > cV0MaxDaughDCA{" cV0MaxDaughDCA" , 1.0 , " V0 daughter DCA Maximum" };
8888 // Competing V0 rejection
89- Configurable<double > cV0MassWindow{" cV0MassWindow" , 0.004 , " Mass window for competing Lambda0 rejection" };
89+ Configurable<double > cV0MassWindow{" cV0MassWindow" , 0.0043 , " Mass window for competing Lambda0 rejection" };
9090 // Resonance selection
9191 // Configurable<double> cMaxResRapidity{"cMaxResRapidity", 0.5, "Maximum pseudo-rapidity value of reconstructed K*(892)pm resonance"};
9292 // Event mixing
@@ -102,6 +102,7 @@ struct k892pmanalysis {
102102 AxisSpec dcazAxisQA = {cDCABinsQA, 0.0 , 3.0 , " DCA_{#it{xy}} (cm)" };
103103 AxisSpec daughdcaAxisQa = {cDCABinsQA, 0.0 , 3.0 , " V0 daughters DCA (cm)" };
104104 AxisSpec CosPointAngleAxisQA = {binsV0CosPointAngleQA, " CosPA" };
105+ AxisSpec tpcNSigmaPiAxisQA = {cTpcNsigmaPionBinsQA, -7.0 , 7.0 , " N#sigma_{TPC}" };
105106 AxisSpec ptAxis = {binsPt, " #it{p}_{T} (GeV/#it{c})" };
106107 AxisSpec ptAxisQA = {binsPtQA, " #it{p}_{T} (GeV/#it{c})" };
107108 AxisSpec invMassAxis = {cInvMassBins, cInvMassStart, cInvMassEnd, " Invariant Mass (GeV/#it{c}^2)" };
@@ -112,11 +113,11 @@ struct k892pmanalysis {
112113
113114 // Mass QA (quick check)
114115 // QA before
115- histos.add (" QAbefore/k0shortmass " , " Invariant mass of K0Short" , kTH1F , {k0sMassAxisQA});
116+ histos.add (" QAbefore/k0shortmassPt " , " Invariant mass of K0Short vs K0Short Pt " , kTH2F , {ptAxisQA, k0sMassAxisQA});
116117 histos.add (" QAbefore/lambda0mass" , " Invariant mass of V0 in Lambda0 hypothesis" , kTH1F , {lambdaAntilambdaMassAxisQA});
117118 histos.add (" QAbefore/antilambda0mass" , " Invariant mass of V0 in AntiLambda0 hypothesis" , kTH1F , {lambdaAntilambdaMassAxisQA});
118119 // QA after
119- histos.add (" QAafter/k0shortmass " , " Invariant mass of K0Short" , kTH1F , {k0sMassAxisQA});
120+ histos.add (" QAafter/k0shortmassPt " , " Invariant mass of K0Short vs K0Short Pt " , kTH2F , {ptAxisQA, k0sMassAxisQA});
120121 histos.add (" QAafter/lambda0mass" , " Invariant mass of V0 in Lambda0 hypothesis" , kTH1F , {lambdaAntilambdaMassAxisQA});
121122 histos.add (" QAafter/antilambda0mass" , " Invariant mass of V0 in AntiLambda0 hypothesis" , kTH1F , {lambdaAntilambdaMassAxisQA});
122123 histos.add (" k892pminvmass" , " Invariant mass of charged K*(892)" , kTH1F , {invMassAxis});
@@ -152,6 +153,11 @@ struct k892pmanalysis {
152153 // QA after
153154 histos.add (" QAafter/trkpT_pi" , " pT distribution of pion track candidates" , kTH1F , {ptAxisQA});
154155 histos.add (" QAafter/trkpT_k0s" , " pT distribution of k0short track candidates" , kTH1F , {ptAxisQA});
156+ // Primary pion TPC PID
157+ // QA before
158+ histos.add (" QAbefore/tpcNsigmaPionQA" , " NsigmaTPC distribution of primary pion candidates" , kTH2F , {ptAxisQA, tpcNSigmaPiAxisQA});
159+ // QA after
160+ histos.add (" QAafter/tpcNsigmaPionQA" , " NsigmaTPC distribution of primary pion candidates" , kTH2F , {ptAxisQA, tpcNSigmaPiAxisQA});
155161 // Good tracks and V0 counts QA
156162 histos.add (" QAafter/hGoodTracksV0s" , " Number of good track and V0 passed" , kTH1F , {goodTrackCountAxis});
157163 // Mass vs Pt vs Multiplicity 3-dimensional histogram
@@ -244,30 +250,6 @@ struct k892pmanalysis {
244250 return false ;
245251 }
246252
247- // Secondary PID selection tools
248- template <typename T>
249- bool selectionPIDSecondaryPion (const T& candidate)
250- {
251- bool tpcPIDPassed{false }, tofPIDPassed{false };
252- if (std::abs (candidate.tpcNSigmaPi ()) < cMaxTPCnSigmaV0Pion) {
253- tpcPIDPassed = true ;
254- }
255- if (candidate.hasTOF ()) {
256- if (std::abs (candidate.tofNSigmaPi ()) < cMaxTOFnSigmaV0Pion) {
257- tofPIDPassed = true ;
258- }
259- if ((nsigmaCutCombinedPion > 0 ) && (candidate.tpcNSigmaPi () * candidate.tpcNSigmaPi () + candidate.tofNSigmaPi () * candidate.tofNSigmaPi () < nsigmaCutCombinedV0Pion * nsigmaCutCombinedV0Pion)) {
260- tofPIDPassed = true ;
261- }
262- } else {
263- tofPIDPassed = true ;
264- }
265- if (tpcPIDPassed && tofPIDPassed) {
266- return true ;
267- }
268- return false ;
269- }
270-
271253 /* // Resonance candidate selection
272254 template <typename ResoCandidate>
273255 bool selectionResoK892pm(const ResoCandidate& resoCandidate)
@@ -311,6 +293,8 @@ struct k892pmanalysis {
311293 histos.fill (HIST (" QAbefore/trkEta_pi" ), trketaPi);
312294 // pT QA (before cuts)
313295 histos.fill (HIST (" QAbefore/trkpT_pi" ), trkptPi);
296+ // TPC PID (before cuts)
297+ histos.fill (HIST (" QAbefore/tpcNsigmaPionQA" ), trkptPi, trk.tpcNSigmaPi ());
314298 }
315299
316300 // apply the track cut
@@ -329,6 +313,8 @@ struct k892pmanalysis {
329313 histos.fill (HIST (" QAafter/trkEta_pi" ), trketaPi);
330314 // pT QA (after cuts)
331315 histos.fill (HIST (" QAafter/trkpT_pi" ), trk.pt ());
316+ // TPC PID (after cuts)
317+ histos.fill (HIST (" QAafter/tpcNsigmaPionQA" ), trkptPi, trk.tpcNSigmaPi ());
332318 }
333319
334320 for (auto & v0 : dV0s) {
@@ -350,7 +336,7 @@ struct k892pmanalysis {
350336 // pT QA (before cuts)
351337 histos.fill (HIST (" QAbefore/trkpT_k0s" ), v0ptK0s);
352338 // K0s mass QA (before cuts)
353- histos.fill (HIST (" QAbefore/k0shortmass " ) , v0.mK0Short ());
339+ histos.fill (HIST (" QAbefore/k0shortmassPt " ), v0ptK0s , v0.mK0Short ());
354340 }
355341
356342 // apply the track cut
@@ -381,7 +367,7 @@ struct k892pmanalysis {
381367 // pt QA (after cuts)
382368 histos.fill (HIST (" QAafter/trkpT_k0s" ), v0ptK0s);
383369 // K0s mass QA (after cuts)
384- histos.fill (HIST (" QAafter/k0shortmass " ) , v0.mK0Short ());
370+ histos.fill (HIST (" QAafter/k0shortmassPt " ), v0ptK0s , v0.mK0Short ());
385371 histos.fill (HIST (" QAafter/lambda0mass" ), v0.mLambda ());
386372 histos.fill (HIST (" QAafter/antilambda0mass" ), v0.mAntiLambda ());
387373 }
0 commit comments