Skip to content

Commit 27edab7

Browse files
authored
PWGLF: add hLnnCandLoss and QA purity plots (#8228)
1 parent c8eb93c commit 27edab7

File tree

1 file changed

+39
-4
lines changed

1 file changed

+39
-4
lines changed

PWGLF/TableProducer/Nuspex/lnnRecoTask.cxx

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ std::shared_ptr<TH1> hDecayChannel;
7575
std::shared_ptr<TH1> hIsMatterGen;
7676
std::shared_ptr<TH1> hIsMatterGenTwoBody;
7777
std::shared_ptr<TH2> hDCAxy3H;
78+
std::shared_ptr<TH1> hLnnCandLoss;
79+
std::shared_ptr<TH2> hNSigma3HTPC_preselection;
80+
std::shared_ptr<TH2> hNSigma3HTOF_preselection;
7881

7982
float alphaAP(std::array<float, 3> const& momB, std::array<float, 3> const& momC)
8083
{
@@ -151,6 +154,7 @@ struct lnnRecoTask {
151154
Configurable<float> TPCRigidityMin3H{"TPCRigidityMin3H", 0.2, "Minimum rigidity of the triton candidate"};
152155
Configurable<float> nSigmaCutMinTPC{"nSigmaCutMinTPC", -5, "triton dEdx cut (n sigma)"};
153156
Configurable<float> nSigmaCutMaxTPC{"nSigmaCutMaxTPC", 5, "triton dEdx cut (n sigma)"};
157+
Configurable<float> nSigmaCutTOF{"nSigmaCutMinTOF", 3, "triton TOF cut (n sigma)"};
154158
Configurable<float> nTPCClusMin3H{"nTPCClusMin3H", 80, "triton NTPC clusters cut"};
155159
Configurable<float> ptMinTOF{"ptMinTOF", 0.8, "minimum pt for TOF cut"};
156160
Configurable<float> TrTOFMass2Cut{"TrTOFMass2Cut", 5.5, "minimum Triton mass square to TOF"};
@@ -186,9 +190,9 @@ struct lnnRecoTask {
186190
ConfigurableAxis nSigmaBins{"nSigmaBins", {200, -5.f, 5.f}, "Binning for n sigma"};
187191
ConfigurableAxis zVtxBins{"zVtxBins", {100, -20.f, 20.f}, "Binning for n sigma"};
188192
ConfigurableAxis centBins{"centBins", {100, 0.f, 100.f}, "Binning for centrality"};
189-
ConfigurableAxis TritMomBins{"TritMomBins", {100, 0.f, 5.f}, "Binning for Triton TPC momentum"};
193+
ConfigurableAxis TritMomBins{"TritMomBins", {100, -5.f, 5.f}, "Binning for Triton momentum"};
190194
ConfigurableAxis MassTOFBins{"MassTOFBins", {400, 2.0f, 12.f}, "Binning for Triton Mass TOF"};
191-
ConfigurableAxis PtTritonBins{"PtTritonBins", {200, -5.f, 5.f}, "Binning for Triton pt positive values"};
195+
ConfigurableAxis PtTritonBins{"PtTritonBins", {200, -5.f, 5.f}, "Binning for Triton p values"};
192196
ConfigurableAxis PtPosTritonBins{"PtPosTritonBins", {200, 0.f, 5.f}, "Binning for Triton pt positive values"};
193197
ConfigurableAxis BetaBins{"BetaBins", {550, 0.f, 1.1f}, "Binning for Beta"};
194198
ConfigurableAxis DCAxyBins{"DCAxyBins", {550, -5.f, 5.f}, "Binning for DCAxy"};
@@ -235,7 +239,7 @@ struct lnnRecoTask {
235239
const AxisSpec nSigma3HAxis{nSigmaBins, "n_{#sigma}({}^{3}H)"};
236240
const AxisSpec zVtxAxis{zVtxBins, "z_{vtx} (cm)"};
237241
const AxisSpec centAxis{centBins, "Centrality"};
238-
const AxisSpec TritMomAxis{TritMomBins, "#it{p}^{TPC}({}^{3}H)"};
242+
const AxisSpec TritMomAxis{TritMomBins, "#it{p}({}^{3}H)"};
239243
const AxisSpec PtTrAxis{PtTritonBins, "#it{p_T}({}^{3}H)"};
240244
const AxisSpec PtPosTrAxis{PtPosTritonBins, "#it{p_T}({}^{3}H)"};
241245
const AxisSpec MassTOFAxis{MassTOFBins, "{m}^{2}/{z}^{2}"};
@@ -251,9 +255,21 @@ struct lnnRecoTask {
251255
h3HSignalPtTOF = qaRegistry.add<TH2>("h3HSignalPtTOF", "; #it{p}_{T}({}^{3}H) (GeV/#it{c}); #beta (TOF)", HistType::kTH2F, {PtTrAxis, BetaAxis});
252256
hDCAxy3H = qaRegistry.add<TH2>("hDCAxy3H", "; #it{p}_{T}({}^{3}H) (GeV/#it{c}); #it{DCA}_{xy} 3H", HistType::kTH2F, {PtPosTrAxis, DCAxyAxis});
253257
hEvents = qaRegistry.add<TH1>("hEvents", ";Events; ", HistType::kTH1D, {{2, -0.5, 1.5}});
258+
hLnnCandLoss = qaRegistry.add<TH1>("hLnnCandLoss", ";CandLoss; ", HistType::kTH1D, {{7, -0.5, 6.5}});
259+
hNSigma3HTPC_preselection = qaRegistry.add<TH2>("hNSigma3HTPC_preselection", "#it{p}/z (GeV/#it{c}); n#sigma_{TPC}(^{3}H)", HistType::kTH2F, {rigidityAxis, nSigma3HAxis});
260+
hNSigma3HTOF_preselection = qaRegistry.add<TH2>("hNSigma3HTOF_preselection", "; Signed p({}^{3}H) (GeV/#it{c^2}); n#sigma_{TOF} ({}^{3}H)", HistType::kTH2F, {TritMomAxis, nSigma3HAxis});
254261

255262
hEvents->GetXaxis()->SetBinLabel(1, "All");
256263
hEvents->GetXaxis()->SetBinLabel(2, "sel8");
264+
hLnnCandLoss->GetYaxis()->SetTitle("#it{N}_{candidates}");
265+
hLnnCandLoss->GetXaxis()->SetTitle("Cuts");
266+
hLnnCandLoss->GetXaxis()->SetBinLabel(1, "Initial LnnCandidates");
267+
hLnnCandLoss->GetXaxis()->SetBinLabel(2, "not 3H");
268+
hLnnCandLoss->GetXaxis()->SetBinLabel(3, "not anti3H");
269+
hLnnCandLoss->GetXaxis()->SetBinLabel(4, "#it{p}_{Tmin}");
270+
hLnnCandLoss->GetXaxis()->SetBinLabel(5, "!isLnnMass");
271+
hLnnCandLoss->GetXaxis()->SetBinLabel(6, "DCA #it{V}_{0} daughter");
272+
hLnnCandLoss->GetXaxis()->SetBinLabel(7, "cosPA");
257273
if (doprocessMC) {
258274
hDecayChannel = qaRegistry.add<TH1>("hDecayChannel", ";Decay channel; ", HistType::kTH1D, {{2, -0.5, 1.5}});
259275
hDecayChannel->GetXaxis()->SetBinLabel(1, "2-body");
@@ -361,6 +377,16 @@ struct lnnRecoTask {
361377
float alpha = alphaAP(momPos, momNeg);
362378
lnnCandidate lnnCand;
363379
lnnCand.isMatter = alpha > 0;
380+
hLnnCandLoss->Fill(0.);
381+
if ((lnnCand.isMatter && !is3H) || (!lnnCand.isMatter && !isAnti3H)) {
382+
if (lnnCand.isMatter && !is3H) {
383+
hLnnCandLoss->Fill(1.);
384+
}
385+
if (!lnnCand.isMatter && !isAnti3H) {
386+
hLnnCandLoss->Fill(2.);
387+
}
388+
continue;
389+
}
364390
auto& h3track = lnnCand.isMatter ? posTrack : negTrack;
365391
auto& h3Rigidity = lnnCand.isMatter ? posRigidity : negRigidity;
366392

@@ -392,9 +418,14 @@ struct lnnRecoTask {
392418

393419
float beta = -1.f;
394420
if (h3track.pt() >= ptMinTOF) {
421+
hNSigma3HTPC_preselection->Fill(h3track.tpcInnerParam(), lnnCand.nSigma3H);
395422
if (!h3track.hasTOF()) {
396423
continue;
397424
}
425+
hNSigma3HTOF_preselection->Fill(h3track.p(), h3track.tofNSigmaTr());
426+
if (std::abs(h3track.tofNSigmaTr()) > nSigmaCutTOF) {
427+
continue;
428+
}
398429
beta = h3track.beta();
399430
lnnCand.mass2TrTOF = h3track.mass() * h3track.mass();
400431
if (lnnCand.mass2TrTOF < TrTOFMass2Cut) {
@@ -436,6 +467,7 @@ struct lnnRecoTask {
436467

437468
float lnnPt = std::hypot(lnnMom[0], lnnMom[1]);
438469
if (lnnPt < ptMin) {
470+
hLnnCandLoss->Fill(3.);
439471
continue;
440472
}
441473

@@ -447,19 +479,22 @@ struct lnnRecoTask {
447479
isLNNMass = true;
448480
}
449481
if (!isLNNMass) {
482+
hLnnCandLoss->Fill(4.);
450483
continue;
451484
}
452485

453486
// V0, primary vertex and poiting angle
454487
lnnCand.dcaV0dau = std::sqrt(fitter.getChi2AtPCACandidate());
455488
if (lnnCand.dcaV0dau > dcav0dau) {
489+
hLnnCandLoss->Fill(5.);
456490
continue;
457491
}
458492

459493
std::array<float, 3> primVtx = {collision.posX(), collision.posY(), collision.posZ()};
460494

461495
double cosPA = RecoDecay::cpa(primVtx, lnnCand.decVtx, lnnMom);
462496
if (cosPA < v0cospa) {
497+
hLnnCandLoss->Fill(6.);
463498
continue;
464499
}
465500

@@ -488,7 +523,7 @@ struct lnnRecoTask {
488523
hDCAxy3H->Fill(h3track.pt(), h3track.dcaXY());
489524
if (h3track.hasTOF()) {
490525
h3HSignalPtTOF->Fill(chargeFactor * h3track.pt(), beta);
491-
hNsigma3HSelTOF->Fill(chargeFactor * h3track.pt(), h3track.tofNSigmaTr());
526+
hNsigma3HSelTOF->Fill(chargeFactor * h3track.p(), h3track.tofNSigmaTr());
492527
h3HMassPtTOF->Fill(chargeFactor * h3track.pt(), lnnCand.mass2TrTOF);
493528
}
494529
}

0 commit comments

Comments
 (0)