Skip to content

Commit 447d5a1

Browse files
authored
PWGHF: Add Perfect PID case for D0 PID performance (#142)
1 parent b626834 commit 447d5a1

3 files changed

Lines changed: 27 additions & 6 deletions

File tree

PWGHF/DataModel/HFCandidateSelectionTables.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,15 @@ namespace hf_selcandidate_d0_ALICE3_Barrel
3535
{
3636
DECLARE_SOA_COLUMN(IsSelHFFlag, isSelHFFlag, int); //!
3737
DECLARE_SOA_COLUMN(IsSelD0NoPID, isSelD0NoPID, int); //!
38+
DECLARE_SOA_COLUMN(IsSelD0PerfectPID, isSelD0PerfectPID, int); //!
3839
DECLARE_SOA_COLUMN(IsSelD0TOFPID, isSelD0TOFPID, int); //!
3940
DECLARE_SOA_COLUMN(IsSelD0RICHPID, isSelD0RICHPID, int); //!
4041
DECLARE_SOA_COLUMN(IsSelD0TOFplusRICHPID, isSelD0TOFplusRICHPID, int); //!
4142
} // namespace hf_selcandidate_d0_ALICE3_Barrel
4243
DECLARE_SOA_TABLE(HFSelD0CandidateALICE3Barrel, "AOD", "HFSELD0CANDA3B", //!
4344
hf_selcandidate_d0_ALICE3_Barrel::IsSelHFFlag,
4445
hf_selcandidate_d0_ALICE3_Barrel::IsSelD0NoPID,
46+
hf_selcandidate_d0_ALICE3_Barrel::IsSelD0PerfectPID,
4547
hf_selcandidate_d0_ALICE3_Barrel::IsSelD0TOFPID,
4648
hf_selcandidate_d0_ALICE3_Barrel::IsSelD0RICHPID,
4749
hf_selcandidate_d0_ALICE3_Barrel::IsSelD0TOFplusRICHPID);

PWGHF/TableProducer/HFD0CandidateSelectorALICE3Barrel.cxx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ struct HFD0CandidateSelectorALICE3Barrel {
189189
return true;
190190
}
191191

192-
using Trks = soa::Join<aod::BigTracksPID, aod::Tracks, aod::RICHTracksIndex, aod::TracksExtra>;
192+
using Trks = soa::Join<aod::BigTracksPID, aod::Tracks, aod::RICHTracksIndex, aod::McTrackLabels, aod::TracksExtra>;
193193
void process(aod::HfCandProng2 const& candidates, Trks const& barreltracks, const aod::McParticles& mcParticles, const aod::RICHs&, const aod::FRICHs&)
194194
{
195195

@@ -198,19 +198,20 @@ struct HFD0CandidateSelectorALICE3Barrel {
198198
// selection flag
199199
int statusHFFlag = 0;
200200
int statusD0NoPID = 0;
201+
int statusD0PerfectPID = 0;
201202
int statusD0TOFPID = 0;
202203
int statusD0RICHPID = 0;
203204
int statusD0TOFplusRICHPID = 0;
204205

205206
if (!(candidate.hfflag() & 1 << DecayType::D0ToPiK)) {
206-
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
207+
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0PerfectPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
207208
continue;
208209
}
209210
statusHFFlag = 1;
210211

211212
// conjugate-independent topological selection
212213
if (!selectionTopol(candidate)) {
213-
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
214+
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0PerfectPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
214215
continue;
215216
}
216217

@@ -224,10 +225,15 @@ struct HFD0CandidateSelectorALICE3Barrel {
224225
bool topolD0bar = selectionTopolConjugate(candidate, trackNeg, trackPos);
225226

226227
if (!topolD0 && !topolD0bar) {
227-
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
228+
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0PerfectPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
228229
continue;
229230
}
230231

232+
const auto mcParticlePositive = trackPos.mcParticle();
233+
const auto mcParticleNegative = trackNeg.mcParticle();
234+
int pdgPositive = mcParticlePositive.pdgCode();
235+
int pdgNegative = mcParticleNegative.pdgCode();
236+
//std::cout << "barrel= " << pdgPositive <<"\t"<< pdgNegative << "\n";
231237
float nsigmaTOFNegKaon = -5000.0;
232238
float nsigmaRICHNegKaon = -5000.0;
233239
float nsigmaTOFPosPion = -5000.0;
@@ -261,14 +267,16 @@ struct HFD0CandidateSelectorALICE3Barrel {
261267

262268
if (topolD0) {
263269
statusD0NoPID = 1;
270+
if (pdgPositive == 211 && pdgNegative == -321)
271+
statusD0PerfectPID = 1;
264272
if ((std::abs(nsigmaTOFPosPion) < 3.0 && std::abs(nsigmaTOFNegKaon) < 3.0))
265273
statusD0TOFPID = 1;
266274
if ((std::abs(nsigmaRICHPosPion) < 3.0 && std::abs(nsigmaRICHNegKaon) < 3.0))
267275
statusD0RICHPID = 1;
268276
if (selectPionTOFplusRICH && selectKaonTOFplusRICH)
269277
statusD0TOFplusRICHPID = 1;
270278
}
271-
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
279+
hfSelD0CandidateALICE3Barrel(statusHFFlag, statusD0NoPID, statusD0PerfectPID, statusD0TOFPID, statusD0RICHPID, statusD0TOFplusRICHPID);
272280
}
273281
}
274282
};

PWGHF/Tasks/taskD0ALICE3Barrel.cxx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ struct TaskD0ALICE3BarrelMC {
5252
{"hMassReflBkgD0RICHPID", "2-prong candidates (checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}},
5353
{"hMassSigBkgD0TOFplusRICHPID", "2-prong candidates (not checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0, 4.0}}}},
5454
{"hMassSigD0TOFplusRICHPID", "2-prong candidates (matched);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}},
55-
{"hMassBkgD0TOFplusRICHPID", "2-prong candidates (checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}}}};
55+
{"hMassBkgD0TOFplusRICHPID", "2-prong candidates (checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}},
56+
{"hMassSigBkgD0PerfectPID", "2-prong candidates (not checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0, 4.0}}}},
57+
{"hMassSigD0PerfectPID", "2-prong candidates (matched);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}},
58+
{"hMassBkgD0PerfectPID", "2-prong candidates (checked);#it{m}_{inv} (GeV/#it{c}^{2}); #it{p}_{T}; #it{y}", {HistType::kTH3F, {{120, 1.5848, 2.1848}, {150, 0., 30.}, {8, 0., 4.}}}}}};
5659

5760
Filter filterSelectCandidates = (aod::hf_selcandidate_d0_ALICE3_Barrel::isSelHFFlag >= 1);
5861

@@ -109,6 +112,14 @@ struct TaskD0ALICE3BarrelMC {
109112
registry.fill(HIST("hMassBkgD0TOFplusRICHPID"), massD0, ptCandidate, rapidityCandidate);
110113
}
111114
}
115+
if (candidate.isSelD0PerfectPID() >= 1) {
116+
registry.fill(HIST("hMassSigBkgD0PerfectPID"), massD0, ptCandidate, rapidityCandidate);
117+
if (candidate.flagMCMatchRec() == (1 << DecayType::D0ToPiK)) {
118+
registry.fill(HIST("hMassSigD0PerfectPID"), massD0, ptCandidate, rapidityCandidate);
119+
} else {
120+
registry.fill(HIST("hMassBkgD0PerfectPID"), massD0, ptCandidate, rapidityCandidate);
121+
}
122+
}
112123
}
113124

114125
for (auto& particle : particlesMC) {

0 commit comments

Comments
 (0)