Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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