3838#include < Framework/OutputObjHeader.h>
3939#include < Framework/runDataProcessing.h>
4040
41+ #include " TDatabasePDG.h"
4142#include < TH1.h>
4243#include < TH2.h>
4344#include < TH3.h>
@@ -495,6 +496,9 @@ struct nucleiInJets {
495496 jetHist.add <TH3>(" recInc/pt/PtParticleTypeTPCTOF" , " Pt vs ParticleType vs Centrality (TPC+TOF)" , HistType::kTH3F , {{100 , 0 .f , 10 .f }, {14 , -7 , 7 }, {100 , 0 , 100 }});
496497 jetHist.add <TH3>(" recInc/pt/PtParticleTypeTPCTOFVeto" , " Pt vs ParticleType vs Centrality (TPC+TOF Veto)" , HistType::kTH3F , {{100 , 0 .f , 10 .f }, {14 , -7 , 7 }, {100 , 0 , 100 }});
497498 jetHist.add <TH3>(" genInc/pt/PtParticleType" , " Pt vs ParticleType vs Centrality (gen)" , HistType::kTH3F , {{100 , 0 .f , 10 .f }, {14 , -7 , 7 }, {100 , 0 , 100 }});
499+
500+ jetHist.add <TH3>(" recInc/eff/tpcTrack3D" , " Pt vs ParticleType vs Centrality (tpc)" , HistType::kTH3F , {{100 , 0 .f , 10 .f }, {14 , -7 , 7 }, {100 , 0 , 100 }});
501+ jetHist.add <TH3>(" recInc/eff/tpcTofTrack3D" , " Pt vs ParticleType vs Centrality (tpc-tof)" , HistType::kTH3F , {{100 , 0 .f , 10 .f }, {14 , -7 , 7 }, {100 , 0 , 100 }});
498502 // inside jet
499503 jetHist.add <TH3>(" tracks/mc/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet" , " pT(p) vs NSigmaTPC (p) vs jet pT; #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T}" , HistType::kTH3F , {{PtAxis}, {200 , -10 , 10 }, {PtJetAxis}});
500504 jetHist.add <TH3>(" tracks/mc/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet" , " pT(#bar{p}) vs NSigmaTPC (#bar{p}) vs jet pT; #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T}" , HistType::kTH3F , {{PtAxis}, {200 , -10 , 10 }, {PtJetAxis}});
@@ -1981,6 +1985,7 @@ struct nucleiInJets {
19811985 centrality = -999 ;
19821986 }
19831987 jetHist.fill (HIST (" recInc/vertexZ" ), coll.posZ (), centrality);
1988+
19841989 for (const auto & track : tracks) {
19851990 if (!isTrackSelected (track)) {
19861991 continue ;
@@ -1989,20 +1994,85 @@ struct nucleiInJets {
19891994 continue ;
19901995 if (std::fabs (track.eta ()) > cfgtrkMaxEta)
19911996 continue ;
1997+
19921998 auto mcTrack = track.mcParticle_as <o2::aod::JMcParticles>();
19931999 if (!mcTrack.isPhysicalPrimary ())
19942000 continue ;
1995- bool isTOFAndTPCPreSel (track.hasTOF () &&
1996- (std::abs (track.tpcNSigmaPr ()) < cfgnTPCPIDPrTOF || std::abs (track.tpcNSigmaDe ()) < cfgnTPCPIDDeTOF));
19972001
1998- if ( mapPDGToValue ( mcTrack.pdgCode ()) != 0 ) {
1999- jetHist. fill ( HIST ( " recInc/pt/PtParticleTypeTPC " ), mcTrack. pt (), mapPDGToValue (mcTrack. pdgCode ()), centrality );
2002+ auto mass = TDatabasePDG::Instance ()-> GetParticle ( abs ( mcTrack.pdgCode ()))-> Mass ();
2003+ auto rapidity = RecoDecay::y (std::array{track. px ( ), track. py (), track. pz ()}, mass );
20002004
2001- if (isTOFAndTPCPreSel) {
2005+ if (rapidity > cfgtrkMaxRap)
2006+ continue ;
2007+ // Proton
2008+ if (std::abs (mcTrack.pdgCode ()) == 2212 ) { // Proton
2009+ jetHist.fill (HIST (" recInc/eff/tpcTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2010+ if (track.hasTOF ())
2011+ jetHist.fill (HIST (" recInc/eff/tpcTofTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2012+ if (std::abs (track.tpcNSigmaPr ()) < cfgnTPCPIDPr) {
2013+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPC" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2014+ }
2015+ }
2016+ // Deuteron
2017+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kDeuteron ) { // Deuteron
2018+ jetHist.fill (HIST (" recInc/eff/tpcTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2019+ if (track.hasTOF ())
2020+ jetHist.fill (HIST (" recInc/eff/tpcTofTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2021+ if (std::abs (track.tpcNSigmaDe ()) < cfgnTPCPIDDe) {
2022+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPC" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2023+ }
2024+ }
2025+ // Helium
2026+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kHelium3 ) { // Helium-3
2027+ jetHist.fill (HIST (" recInc/eff/tpcTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2028+ if (track.hasTOF ())
2029+ jetHist.fill (HIST (" recInc/eff/tpcTofTrack3D" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2030+ if (std::abs (track.tpcNSigmaHe ()) < cfgnTPCPIDHe) {
2031+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPC" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2032+ }
2033+ }
2034+
2035+ // TPCTOF and TPCTOFVeto histograms
2036+ // Proton
2037+ if (std::abs (track.tpcNSigmaPr ()) < cfgnTPCPIDPr && track.hasTOF ()) {
2038+ if (std::abs (mcTrack.pdgCode ()) == 2212 ) {
20022039 jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOF" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2003- jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2004- } else {
2005- jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2040+ if (std::abs (track.tofNSigmaPr ()) < cfgnTPCPIDPrTOF)
2041+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2042+ }
2043+ } else {
2044+ if (std::abs (track.tpcNSigmaPr ()) < cfgnTPCPIDPr) {
2045+ if (std::abs (mcTrack.pdgCode ()) == 2212 ) {
2046+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2047+ }
2048+ }
2049+ }
2050+ // Deuteron
2051+ if (std::abs (track.tpcNSigmaDe ()) < cfgnTPCPIDDe && track.hasTOF ()) {
2052+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kDeuteron ) {
2053+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOF" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2054+ if (std::abs (track.tofNSigmaDe ()) < cfgnTPCPIDDeTOF)
2055+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2056+ }
2057+ } else {
2058+ if (std::abs (track.tpcNSigmaDe ()) < cfgnTPCPIDDe) {
2059+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kDeuteron ) {
2060+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2061+ }
2062+ }
2063+ }
2064+ // Helium
2065+ if (std::abs (track.tpcNSigmaHe ()) < cfgnTPCPIDHe && track.hasTOF ()) {
2066+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kHelium3 ) {
2067+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOF" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2068+ if (std::abs (track.tofNSigmaHe ()) < cfgnTPCPIDHeTOF)
2069+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2070+ }
2071+ } else {
2072+ if (std::abs (track.tpcNSigmaHe ()) < cfgnTPCPIDHe) {
2073+ if (std::abs (mcTrack.pdgCode ()) == Pdg::kHelium3 ) {
2074+ jetHist.fill (HIST (" recInc/pt/PtParticleTypeTPCTOFVeto" ), mcTrack.pt (), mapPDGToValue (mcTrack.pdgCode ()), centrality);
2075+ }
20062076 }
20072077 }
20082078 } // track
@@ -2016,6 +2086,7 @@ struct nucleiInJets {
20162086 continue ;
20172087 if (std::fabs (mcParticle.y ()) > cfgtrkMaxRap)
20182088 continue ;
2089+
20192090 if (mapPDGToValue (mcParticle.pdgCode ()) != 0 ) {
20202091 jetHist.fill (HIST (" genInc/pt/PtParticleType" ), mcParticle.pt (), mapPDGToValue (mcParticle.pdgCode ()), centrality);
20212092 }
0 commit comments