@@ -75,6 +75,9 @@ std::shared_ptr<TH1> hDecayChannel;
7575std::shared_ptr<TH1> hIsMatterGen;
7676std::shared_ptr<TH1> hIsMatterGenTwoBody;
7777std::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
7982float 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