1515// ==============================================================================
1616#include " PWGLF/DataModel/LFLnnTables.h"
1717
18- #include " PID/PIDTOF.h"
19- #include " PID/TPCPIDResponse.h"
2018#include " Common/Core/RecoDecay.h"
2119#include " Common/Core/trackUtilities.h"
2220#include " Common/DataModel/Centrality.h"
3028#include " DCAFitter/DCAFitterN.h"
3129#include " DataFormatsParameters/GRPMagField.h"
3230#include " DataFormatsParameters/GRPObject.h"
33- #include " MathUtils/BetheBlochAleph.h"
3431#include " DetectorsBase/GeometryManager.h"
3532#include " DetectorsBase/Propagator.h"
3633#include " Framework/ASoAHelpers.h"
3734#include " Framework/AnalysisDataModel.h"
3835#include " Framework/AnalysisTask.h"
3936#include " Framework/runDataProcessing.h"
37+ #include " MathUtils/BetheBlochAleph.h"
38+ #include " PID/PIDTOF.h"
39+ #include " PID/TPCPIDResponse.h"
4040#include " ReconstructionDataFormats/Track.h"
4141
4242#include < algorithm>
@@ -59,7 +59,7 @@ namespace
5959constexpr double BetheBlochDefault[1 ][6 ]{{-1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 , -1 .e32 }};
6060static const std::vector<std::string> betheBlochParNames{" p0" , " p1" , " p2" , " p3" , " p4" , " resolution" };
6161static const std::vector<std::string> nucleiName{" 3H" };
62- // Histograms for QA lnn-task
62+ // Histograms for QA lnn-task
6363std::shared_ptr<TH1> hEvents;
6464std::shared_ptr<TH1> hZvtx;
6565std::shared_ptr<TH1> hCentFT0A;
@@ -136,7 +136,6 @@ struct LnnCandidate {
136136 float genPhiPi () const { return std::atan2 (gMomPi [1 ], gMomPi [0 ]); }
137137 float genEtaPi () const { return std::asinh (gMomPi [2 ] / genPtPi ()); }
138138
139-
140139 int posTrackID;
141140 int negTrackID;
142141 float dcaV0dau = -10 ;
@@ -220,10 +219,10 @@ struct lnnRecoTask {
220219
221220 // PDG codes
222221 Configurable<int > h3DauPdg{" h3DauPdg" , 1000010030 , " PDG Triton" }; // PDG Triton
223- Configurable<int > piDauPdg{" piDauPdg" , 211 , " PDG Pi" }; // PDG Pi
224- Configurable<int > lnnPdg{" lnnPdg" , 1010000030 , " PDG Lnn" }; // PDG Lnn
222+ Configurable<int > piDauPdg{" piDauPdg" , 211 , " PDG Pi" }; // PDG Pi
223+ Configurable<int > lnnPdg{" lnnPdg" , 1010000030 , " PDG Lnn" }; // PDG Lnn
225224
226- // Histogram configuration QA lnn-task
225+ // Histogram configuration QA lnn-task
227226 ConfigurableAxis rigidityBins{" rigidityBins" , {200 , -10 .f , 10 .f }, " Binning for rigidity" };
228227 ConfigurableAxis dEdxBins{" dEdxBins" , {5000 , 0 .f , 1000 .f }, " Binning for dE/dx" };
229228 ConfigurableAxis nSigmaBins{" nSigmaBins" , {200 , -5 .f , 5 .f }, " Binning for n#sigma_{TPC}" };
@@ -312,7 +311,7 @@ struct lnnRecoTask {
312311 h2FT0CnClusTPCtoPiBfSel = qaRegistry.add <TH2>(" QATracks/h2FT0CnClusTPCtoPiBfSel" , " ;FT0C (%);N_{clus}^{TPC}" , HistType::kTH2F , {centAxis, tpcNClusAxis});
313312 h2FT0Cchi2NClTPCtoTrBfSel = qaRegistry.add <TH2>(" QATracks/h2FT0Cchi2NClTPCtoTrBfSel" , " ;FT0C (%);{#Chi}^{2}/N_{clus}^{TPC} " , HistType::kTH2F , {centAxis, tpcChi2NClusAxis});
314313 h2FT0Cchi2NClITStoTrBfSel = qaRegistry.add <TH2>(" QATracks/h2FT0Cchi2NClITStoTrBfSel" , " ;FT0C (%);{#Chi}^{2}/N_{clus}^{ITS}" , HistType::kTH2F , {centAxis, itsChi2NClusAxis});
315- // QA its-tpc and its-tpc-tof studies
314+ // QA its-tpc and its-tpc-tof studies
316315 h2FT0CptTrBfSelItsTpc = qaRegistry.add <TH2>(" QATracks/itstpc/h2FT0CptTrBfSelItsTpc" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, tPtAxis});
317316 h2FT0CptTrBfSelItsTpcTof = qaRegistry.add <TH2>(" QATracks/itstpctof/h2FT0CptTrBfSelItsTpcTof" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, tPtAxis});
318317 h2FT0CptPiBfSelItsTpc = qaRegistry.add <TH2>(" QATracks/itstpc/h2FT0CptPiBfSelItsTpc" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, tPtAxis});
@@ -337,20 +336,20 @@ struct lnnRecoTask {
337336 hIsMatterGen = qaRegistry.add <TH1>(" MC/hIsMatterGen" , " ;; " , HistType::kTH1D , {{2 , -0.5 , 1.5 }});
338337 hIsMatterGen->GetXaxis ()->SetBinLabel (1 , " Matter" );
339338 hIsMatterGen->GetXaxis ()->SetBinLabel (2 , " Antimatter" );
340- // QA for generated mother candidate and daughter particles
341- h2FT0CptGenCandMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CptGenCandMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
342- h2FT0CetaGenCandMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenCandMC" ," ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
343- h2FT0CPtGenTrStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CPtGenTrStrMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
344- h2FT0CetaGenTrStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenTrStrMC" ," ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
345- h2FT0CPtGenPiStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CPtGenPiStrMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
346- h2FT0CetaGenPiStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenPiStrMC" ," ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
347- // QA for generated mother candidate and daughter particles which were reconstructed
348- h2FT0CptRecCandMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CptRecCandMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" ,HistType::kTH2F ,{centAxis,candPtAxis});
349- h2FT0CetaRecCandMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecCandMC" ," ;FT0C (%);#eta" ,HistType::kTH2F ,{centAxis,candEtaAxis});
350- h2FT0CPtRecTrStrMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CPtRecTrStrMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" ,HistType::kTH2F ,{centAxis,candPtAxis});
351- h2FT0CetaRecTrStrMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecTrStrMC" ," ;FT0C (%);#eta" ,HistType::kTH2F ,{centAxis,candEtaAxis});
352- h2FT0CPtRecPiStrMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CPtRecPiStrMC" ," ;FT0C (%);#it{p}_{T} (GeV/#it{c})" ,HistType::kTH2F ,{centAxis,candPtAxis});
353- h2FT0CetaRecPiStrMC= qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecPiStrMC" ," ;FT0C (%);#eta" ,HistType::kTH2F ,{centAxis,candEtaAxis});
339+ // QA for generated mother candidate and daughter particles
340+ h2FT0CptGenCandMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CptGenCandMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
341+ h2FT0CetaGenCandMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenCandMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
342+ h2FT0CPtGenTrStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CPtGenTrStrMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
343+ h2FT0CetaGenTrStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenTrStrMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
344+ h2FT0CPtGenPiStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CPtGenPiStrMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
345+ h2FT0CetaGenPiStrMC = qaRegistry.add <TH2>(" MC/QAGenSV/h2FT0CetaGenPiStrMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
346+ // QA for generated mother candidate and daughter particles which were reconstructed
347+ h2FT0CptRecCandMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CptRecCandMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
348+ h2FT0CetaRecCandMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecCandMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
349+ h2FT0CPtRecTrStrMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CPtRecTrStrMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
350+ h2FT0CetaRecTrStrMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecTrStrMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
351+ h2FT0CPtRecPiStrMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CPtRecPiStrMC" , " ;FT0C (%);#it{p}_{T} (GeV/#it{c})" , HistType::kTH2F , {centAxis, candPtAxis});
352+ h2FT0CetaRecPiStrMC = qaRegistry.add <TH2>(" MC/QARecSV/h2FT0CetaRecPiStrMC" , " ;FT0C (%);#eta" , HistType::kTH2F , {centAxis, candEtaAxis});
354353 }
355354 hZvtx = qaRegistry.add <TH1>(" hZvtx" , " ;z_{vtx} (cm); " , HistType::kTH1D , {{100 , -20 , 20 }});
356355 hCentFT0A = qaRegistry.add <TH1>(" hCentFT0A" , " ;Centrality; " , HistType::kTH1D , {{100 , 0 , 100 }});
@@ -466,7 +465,7 @@ struct lnnRecoTask {
466465 auto & pitrack = lnnCand.isMatter ? negTrack : posTrack;
467466 auto & h3Rigidity = lnnCand.isMatter ? posRigidity : negRigidity;
468467
469- // fill QA track histogram studies before selection
468+ // fill QA track histogram studies before selection
470469 h2FT0CnClusTPCtoTrBfSel->Fill (collision.centFT0C (), h3track.tpcNClsFound ());
471470 h2FT0CnClusTPCtoPiBfSel->Fill (collision.centFT0C (), pitrack.tpcNClsFound ());
472471 h2FT0Cchi2NClTPCtoTrBfSel->Fill (collision.centFT0C (), h3track.tpcChi2NCl ());
@@ -477,13 +476,13 @@ struct lnnRecoTask {
477476 bool passedTrTrackTOF = h3track.hasTOF ();
478477 bool passedPiTrackITS = pitrack.hasITS ();
479478
480- if (passedTrTrackITS) {
479+ if (passedTrTrackITS) {
481480 h2FT0CptTrBfSelItsTpc->Fill (collision.centFT0C (), h3track.pt ());
482481 }
483482 if (passedTrTrackITS && passedTrTrackTOF) {
484483 h2FT0CptTrBfSelItsTpcTof->Fill (collision.centFT0C (), h3track.pt ());
485484 }
486- if (passedPiTrackITS) {
485+ if (passedPiTrackITS) {
487486 h2FT0CptPiBfSelItsTpc->Fill (collision.centFT0C (), pitrack.pt ());
488487 }
489488 }
@@ -623,18 +622,18 @@ struct lnnRecoTask {
623622 hNsigma3HSelTOF->Fill (chargeFactor * h3track.p (), h3track.tofNSigmaTr ());
624623 h3HMassPtTOF->Fill (chargeFactor * h3track.pt (), lnnCand.mass2TrTOF );
625624 }
626- if (doTrackQA && lnnCand.isReco ) {
625+ if (doTrackQA && lnnCand.isReco ) {
627626 bool passedTrTrackITS = h3track.hasITS ();
628627 bool passedTrTrackTOF = h3track.hasTOF ();
629628 bool passedPiTrackITS = pitrack.hasITS ();
630629
631- if (passedTrTrackITS) {
630+ if (passedTrTrackITS) {
632631 h2FT0CptTrSelItsTpc->Fill (collision.centFT0C (), h3track.pt ());
633632 }
634633 if (passedTrTrackITS && passedTrTrackTOF) {
635634 h2FT0CptTrSelItsTpcTof->Fill (collision.centFT0C (), h3track.pt ());
636635 }
637- if (passedPiTrackITS) {
636+ if (passedPiTrackITS) {
638637 h2FT0CptPiSelItsTpc->Fill (collision.centFT0C (), pitrack.pt ());
639638 }
640639 }
@@ -664,7 +663,7 @@ struct lnnRecoTask {
664663 continue ;
665664
666665 // Checking primary and second vertex with MC simulations
667-
666+
668667 constexpr std::size_t kposVtxDim = 3 ;
669668 std::array<float , kposVtxDim> posPrimVtx = {posMother.vx (), posMother.vy (), posMother.vz ()};
670669 constexpr std::size_t ksecVtxDim = 3 ;
@@ -674,9 +673,9 @@ struct lnnRecoTask {
674673
675674 bool isTrTrack = (mcTrackPos.pdgCode () == h3DauPdg);
676675
677- lnnCand.gMom3H = isTrTrack? mcTrackPos.pVector () : mcTrackNeg.pVector ();
676+ lnnCand.gMom3H = isTrTrack ? mcTrackPos.pVector () : mcTrackNeg.pVector ();
678677
679- lnnCand.gMomPi = isTrTrack? mcTrackNeg.pVector () : mcTrackPos.pVector ();
678+ lnnCand.gMomPi = isTrTrack ? mcTrackNeg.pVector () : mcTrackPos.pVector ();
680679
681680 for (int i = 0 ; i < 3 ; i++) {
682681 lnnCand.gDecVtx [i] = secVtx[i] - posPrimVtx[i];
@@ -886,7 +885,7 @@ struct lnnRecoTask {
886885 lnnCand.posTrackID = -1 ;
887886 lnnCand.negTrackID = -1 ;
888887 lnnCand.isSignal = true ;
889- // // Fill 2D map for generated daughter particles which the mother candidate has only signal
888+ // // Fill 2D map for generated daughter particles which the mother candidate has only signal
890889 h2FT0CptGenCandMC->Fill (cent, lnnCand.genPt ());
891890 h2FT0CetaGenCandMC->Fill (cent, lnnCand.genEta ());
892891 outputMCTable (-1 , collisionFT0Ccent[mcPart.mcCollisionId ()], -1 ,
@@ -912,4 +911,5 @@ WorkflowSpec
912911{
913912 return WorkflowSpec{
914913 adaptAnalysisTask<lnnRecoTask>(cfgc)};
915- }
914+ }
915+
0 commit comments