Skip to content

Commit

Permalink
PWGLF: add hLnnCandLoss and QA purity plots (AliceO2Group#8228)
Browse files Browse the repository at this point in the history
  • Loading branch information
mapalhares authored Oct 31, 2024
1 parent c8eb93c commit 27edab7
Showing 1 changed file with 39 additions and 4 deletions.
43 changes: 39 additions & 4 deletions PWGLF/TableProducer/Nuspex/lnnRecoTask.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ std::shared_ptr<TH1> hDecayChannel;
std::shared_ptr<TH1> hIsMatterGen;
std::shared_ptr<TH1> hIsMatterGenTwoBody;
std::shared_ptr<TH2> hDCAxy3H;
std::shared_ptr<TH1> hLnnCandLoss;
std::shared_ptr<TH2> hNSigma3HTPC_preselection;
std::shared_ptr<TH2> hNSigma3HTOF_preselection;

float alphaAP(std::array<float, 3> const& momB, std::array<float, 3> const& momC)
{
Expand Down Expand Up @@ -151,6 +154,7 @@ struct lnnRecoTask {
Configurable<float> TPCRigidityMin3H{"TPCRigidityMin3H", 0.2, "Minimum rigidity of the triton candidate"};
Configurable<float> nSigmaCutMinTPC{"nSigmaCutMinTPC", -5, "triton dEdx cut (n sigma)"};
Configurable<float> nSigmaCutMaxTPC{"nSigmaCutMaxTPC", 5, "triton dEdx cut (n sigma)"};
Configurable<float> nSigmaCutTOF{"nSigmaCutMinTOF", 3, "triton TOF cut (n sigma)"};
Configurable<float> nTPCClusMin3H{"nTPCClusMin3H", 80, "triton NTPC clusters cut"};
Configurable<float> ptMinTOF{"ptMinTOF", 0.8, "minimum pt for TOF cut"};
Configurable<float> TrTOFMass2Cut{"TrTOFMass2Cut", 5.5, "minimum Triton mass square to TOF"};
Expand Down Expand Up @@ -186,9 +190,9 @@ struct lnnRecoTask {
ConfigurableAxis nSigmaBins{"nSigmaBins", {200, -5.f, 5.f}, "Binning for n sigma"};
ConfigurableAxis zVtxBins{"zVtxBins", {100, -20.f, 20.f}, "Binning for n sigma"};
ConfigurableAxis centBins{"centBins", {100, 0.f, 100.f}, "Binning for centrality"};
ConfigurableAxis TritMomBins{"TritMomBins", {100, 0.f, 5.f}, "Binning for Triton TPC momentum"};
ConfigurableAxis TritMomBins{"TritMomBins", {100, -5.f, 5.f}, "Binning for Triton momentum"};
ConfigurableAxis MassTOFBins{"MassTOFBins", {400, 2.0f, 12.f}, "Binning for Triton Mass TOF"};
ConfigurableAxis PtTritonBins{"PtTritonBins", {200, -5.f, 5.f}, "Binning for Triton pt positive values"};
ConfigurableAxis PtTritonBins{"PtTritonBins", {200, -5.f, 5.f}, "Binning for Triton p values"};
ConfigurableAxis PtPosTritonBins{"PtPosTritonBins", {200, 0.f, 5.f}, "Binning for Triton pt positive values"};
ConfigurableAxis BetaBins{"BetaBins", {550, 0.f, 1.1f}, "Binning for Beta"};
ConfigurableAxis DCAxyBins{"DCAxyBins", {550, -5.f, 5.f}, "Binning for DCAxy"};
Expand Down Expand Up @@ -235,7 +239,7 @@ struct lnnRecoTask {
const AxisSpec nSigma3HAxis{nSigmaBins, "n_{#sigma}({}^{3}H)"};
const AxisSpec zVtxAxis{zVtxBins, "z_{vtx} (cm)"};
const AxisSpec centAxis{centBins, "Centrality"};
const AxisSpec TritMomAxis{TritMomBins, "#it{p}^{TPC}({}^{3}H)"};
const AxisSpec TritMomAxis{TritMomBins, "#it{p}({}^{3}H)"};
const AxisSpec PtTrAxis{PtTritonBins, "#it{p_T}({}^{3}H)"};
const AxisSpec PtPosTrAxis{PtPosTritonBins, "#it{p_T}({}^{3}H)"};
const AxisSpec MassTOFAxis{MassTOFBins, "{m}^{2}/{z}^{2}"};
Expand All @@ -251,9 +255,21 @@ struct lnnRecoTask {
h3HSignalPtTOF = qaRegistry.add<TH2>("h3HSignalPtTOF", "; #it{p}_{T}({}^{3}H) (GeV/#it{c}); #beta (TOF)", HistType::kTH2F, {PtTrAxis, BetaAxis});
hDCAxy3H = qaRegistry.add<TH2>("hDCAxy3H", "; #it{p}_{T}({}^{3}H) (GeV/#it{c}); #it{DCA}_{xy} 3H", HistType::kTH2F, {PtPosTrAxis, DCAxyAxis});
hEvents = qaRegistry.add<TH1>("hEvents", ";Events; ", HistType::kTH1D, {{2, -0.5, 1.5}});
hLnnCandLoss = qaRegistry.add<TH1>("hLnnCandLoss", ";CandLoss; ", HistType::kTH1D, {{7, -0.5, 6.5}});
hNSigma3HTPC_preselection = qaRegistry.add<TH2>("hNSigma3HTPC_preselection", "#it{p}/z (GeV/#it{c}); n#sigma_{TPC}(^{3}H)", HistType::kTH2F, {rigidityAxis, nSigma3HAxis});
hNSigma3HTOF_preselection = qaRegistry.add<TH2>("hNSigma3HTOF_preselection", "; Signed p({}^{3}H) (GeV/#it{c^2}); n#sigma_{TOF} ({}^{3}H)", HistType::kTH2F, {TritMomAxis, nSigma3HAxis});

hEvents->GetXaxis()->SetBinLabel(1, "All");
hEvents->GetXaxis()->SetBinLabel(2, "sel8");
hLnnCandLoss->GetYaxis()->SetTitle("#it{N}_{candidates}");
hLnnCandLoss->GetXaxis()->SetTitle("Cuts");
hLnnCandLoss->GetXaxis()->SetBinLabel(1, "Initial LnnCandidates");
hLnnCandLoss->GetXaxis()->SetBinLabel(2, "not 3H");
hLnnCandLoss->GetXaxis()->SetBinLabel(3, "not anti3H");
hLnnCandLoss->GetXaxis()->SetBinLabel(4, "#it{p}_{Tmin}");
hLnnCandLoss->GetXaxis()->SetBinLabel(5, "!isLnnMass");
hLnnCandLoss->GetXaxis()->SetBinLabel(6, "DCA #it{V}_{0} daughter");
hLnnCandLoss->GetXaxis()->SetBinLabel(7, "cosPA");
if (doprocessMC) {
hDecayChannel = qaRegistry.add<TH1>("hDecayChannel", ";Decay channel; ", HistType::kTH1D, {{2, -0.5, 1.5}});
hDecayChannel->GetXaxis()->SetBinLabel(1, "2-body");
Expand Down Expand Up @@ -361,6 +377,16 @@ struct lnnRecoTask {
float alpha = alphaAP(momPos, momNeg);
lnnCandidate lnnCand;
lnnCand.isMatter = alpha > 0;
hLnnCandLoss->Fill(0.);
if ((lnnCand.isMatter && !is3H) || (!lnnCand.isMatter && !isAnti3H)) {
if (lnnCand.isMatter && !is3H) {
hLnnCandLoss->Fill(1.);
}
if (!lnnCand.isMatter && !isAnti3H) {
hLnnCandLoss->Fill(2.);
}
continue;
}
auto& h3track = lnnCand.isMatter ? posTrack : negTrack;
auto& h3Rigidity = lnnCand.isMatter ? posRigidity : negRigidity;

Expand Down Expand Up @@ -392,9 +418,14 @@ struct lnnRecoTask {

float beta = -1.f;
if (h3track.pt() >= ptMinTOF) {
hNSigma3HTPC_preselection->Fill(h3track.tpcInnerParam(), lnnCand.nSigma3H);
if (!h3track.hasTOF()) {
continue;
}
hNSigma3HTOF_preselection->Fill(h3track.p(), h3track.tofNSigmaTr());
if (std::abs(h3track.tofNSigmaTr()) > nSigmaCutTOF) {
continue;
}
beta = h3track.beta();
lnnCand.mass2TrTOF = h3track.mass() * h3track.mass();
if (lnnCand.mass2TrTOF < TrTOFMass2Cut) {
Expand Down Expand Up @@ -436,6 +467,7 @@ struct lnnRecoTask {

float lnnPt = std::hypot(lnnMom[0], lnnMom[1]);
if (lnnPt < ptMin) {
hLnnCandLoss->Fill(3.);
continue;
}

Expand All @@ -447,19 +479,22 @@ struct lnnRecoTask {
isLNNMass = true;
}
if (!isLNNMass) {
hLnnCandLoss->Fill(4.);
continue;
}

// V0, primary vertex and poiting angle
lnnCand.dcaV0dau = std::sqrt(fitter.getChi2AtPCACandidate());
if (lnnCand.dcaV0dau > dcav0dau) {
hLnnCandLoss->Fill(5.);
continue;
}

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

double cosPA = RecoDecay::cpa(primVtx, lnnCand.decVtx, lnnMom);
if (cosPA < v0cospa) {
hLnnCandLoss->Fill(6.);
continue;
}

Expand Down Expand Up @@ -488,7 +523,7 @@ struct lnnRecoTask {
hDCAxy3H->Fill(h3track.pt(), h3track.dcaXY());
if (h3track.hasTOF()) {
h3HSignalPtTOF->Fill(chargeFactor * h3track.pt(), beta);
hNsigma3HSelTOF->Fill(chargeFactor * h3track.pt(), h3track.tofNSigmaTr());
hNsigma3HSelTOF->Fill(chargeFactor * h3track.p(), h3track.tofNSigmaTr());
h3HMassPtTOF->Fill(chargeFactor * h3track.pt(), lnnCand.mass2TrTOF);
}
}
Expand Down

0 comments on commit 27edab7

Please sign in to comment.