Skip to content

Commit b52eadb

Browse files
AlessandroSturnioloAlessandroSturniolo
andauthored
K*(892)pm analysis: implemented new TH2F QA plots for primary pion candidate TPC PID and K0short mass vs Pt (#7022)
Co-authored-by: AlessandroSturniolo <a.sturniolo@cern.ch>
1 parent 476f7dc commit b52eadb

1 file changed

Lines changed: 18 additions & 32 deletions

File tree

PWGLF/Tasks/Resonances/k892pmanalysis.cxx

Lines changed: 18 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)