diff --git a/PWGJE/Tasks/nucleiInJets.cxx b/PWGJE/Tasks/nucleiInJets.cxx index deb07124d3c..49b0db30e2c 100644 --- a/PWGJE/Tasks/nucleiInJets.cxx +++ b/PWGJE/Tasks/nucleiInJets.cxx @@ -15,6 +15,7 @@ #include "PWGJE/DataModel/Jet.h" #include "PWGJE/DataModel/JetReducedData.h" #include "PWGLF/DataModel/LFParticleIdentification.h" +#include "PWGLF/Utils/inelGt.h" #include "Common/Core/RecoDecay.h" #include "Common/Core/Zorro.h" @@ -182,6 +183,7 @@ struct nucleiInJets { // using EventTable = soa::Join; using EventTable = aod::JetCollisions; using EventTableMC = soa::Join; + using JetCollWithLabel = o2::soa::Join::iterator; using TrackCandidates = soa::Join; @@ -210,6 +212,7 @@ struct nucleiInJets { Zorro zorro; OutputObj zorroSummary{"zorroSummary"}; Service ccdb; + Service pdgDB; TRandom3 randUniform; void init(o2::framework::InitContext&) { @@ -260,6 +263,9 @@ struct nucleiInJets { // jet property jetHist.add("jet/h1JetPt", "jet_{p_{T}}", kTH1F, {PtJetAxis}); + jetHist.add("jet/h1JetPtBkgSub", "jet_{p_{T}} background subtracted", kTH1F, {PtJetAxis}); + jetHist.add("jet/h2JetPtVsBkgRho", "jet_{p_{T}} vs background #rho; jet_{p_{T}} (GeV/c); #rho (GeV/c/area)", kTH2F, {PtJetAxis, {100, 0, 20}}); + jetHist.add("jet/h1BkgRho", "Background #rho; #rho (GeV/c/area); Entries", kTH1F, {{100, 0, 20}}); jetHist.add("jet/h1JetEvents", "NumbeOfJetEvents", kTH1F, {{1, 0, 1}}); jetHist.add("jet/h1JetEta", "jet_{#eta}", kTH1F, {{100, -1.0, 1.0}}); jetHist.add("jet/h1JetPhi", "jet_{#phi}", kTH1F, {{80, -1.0, 7.}}); @@ -299,6 +305,12 @@ struct nucleiInJets { jetHist.add("tracks/antiPion/h3PtVsPionNSigmaTPCVsPtJet_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}}); jetHist.add("tracks/kaon/h3PtVsKaonNSigmaTPCVsPtJet_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}}); jetHist.add("tracks/antiKaon/h3PtVsKaonNSigmaTPCVsPtJet_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}}); + + // Background subtracted versions + jetHist.add("tracks/pion/h3PtVsPionNSigmaTPCVsPtJetBkgSub_jet", "pT(p) vs NSigmaTPC (p) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiPion/h3PtVsPionNSigmaTPCVsPtJetBkgSub_jet", "pT(p) vs NSigmaTPC (p) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/kaon/h3PtVsKaonNSigmaTPCVsPtJetBkgSub_jet", "pT(p) vs NSigmaTPC (p) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiKaon/h3PtVsKaonNSigmaTPCVsPtJetBkgSub_jet", "pT(p) vs NSigmaTPC (p) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); } jetHist.add("tracks/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}}); jetHist.add("tracks/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}}); @@ -309,6 +321,16 @@ struct nucleiInJets { jetHist.add("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet", "pT(Tr) vs NSigmaTPC (Tr) vs jet pT; #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T}", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); jetHist.add("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet", "pT(#bar{Tr}) vs NSigmaTPC (#bar{Tr}) vs jet pT; #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T}", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + // Background subtracted versions + jetHist.add("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJetBkgSub_jet", "pT(p) vs NSigmaTPC (p) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJetBkgSub_jet", "pT(#bar{p}) vs NSigmaTPC (#bar{p}) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJetBkgSub_jet", "pT(d) vs NSigmaTPC (d) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJetBkgSub_jet", "pT(#bar{d}) vs NSigmaTPC (#bar{d}) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJetBkgSub_jet", "pT(He) vs NSigmaTPC (He) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJetBkgSub_jet", "pT(#bar{He}) vs NSigmaTPC (#bar{He}) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJetBkgSub_jet", "pT(Tr) vs NSigmaTPC (Tr) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + jetHist.add("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJetBkgSub_jet", "pT(#bar{Tr}) vs NSigmaTPC (#bar{Tr}) vs jet pT (Bkg Sub); #it{p}_{T} (GeV/#it{c}; NSigmaTPC; p^{jet}_{T} (Bkg Sub)", HistType::kTH3F, {{PtAxis}, {200, -10, 10}, {PtJetAxis}}); + if (cEnableProtonQA) { jetHist.add("tracks/proton/dca/after/hDCAxyVsPtProton_jet", "DCAxy vs Pt (p)", HistType::kTH2F, {{dcaxyAxis}, {PtAxis}}); jetHist.add("tracks/antiProton/dca/after/hDCAxyVsPtantiProton_jet", "DCAxy vs Pt (#bar{p})", HistType::kTH2F, {{dcaxyAxis}, {PtAxis}}); @@ -346,25 +368,46 @@ struct nucleiInJets { jetHist.add("tracks/h2TOFbetaVsP", "TOF #beta vs #it{p}/Z; #it{p}/Z (GeV/#it{c}); TOF #beta", HistType::kTH2F, {{250, -5.f, 5.f}, {betaAxis}}); // TOF hist - jetHist.add("tracks/proton/h2TOFmassProtonVsPt_jet", "h2TOFmassProtonVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/antiProton/h2TOFmassantiProtonVsPt_jet", "h2TOFmassantiProtonVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/proton/h2TOFmass2ProtonVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massPrAxis}, {250, 0., 5.}}); - jetHist.add("tracks/antiProton/h2TOFmass2antiProtonVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massPrAxis}, {250, 0., 5.}}); - - jetHist.add("tracks/deuteron/h2TOFmassDeuteronVsPt_jet", "h2TOFmassDeuteronVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/antiDeuteron/h2TOFmassantiDeuteronVsPt_jet", "h2TOFmassantiDeuteronVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/deuteron/h2TOFmass2DeuteronVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massDeAxis}, {250, 0., 5.}}); - jetHist.add("tracks/antiDeuteron/h2TOFmass2antiDeuteronVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massDeAxis}, {250, 0., 5.}}); - - jetHist.add("tracks/triton/h2TOFmassTritonVsPt_jet", "h2TOFmassTritonVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/antiTriton/h2TOFmassantiTritonVsPt_jet", "h2TOFmassantiTritonVsPt_jet; TOFmass; #it{p}_{T} (GeV)", HistType::kTH2F, {{80, 0.4, 4.}, {50, 0., 5.}}); - jetHist.add("tracks/triton/h2TOFmass2TritonVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massTrAxis}, {250, 0., 5.}}); - jetHist.add("tracks/antiTriton/h2TOFmass2antiTritonVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV)", HistType::kTH2F, {{massTrAxis}, {250, 0., 5.}}); - - jetHist.add("tracks/helium/h2TOFmassHeliumVsPt_jet", "h2TOFmassHeliumVsPt_jet; TOFmass; #it{p}_{T}/z (GeV)", HistType::kTH2F, {{180, 0.4, 4.}, {ptZHeAxis}}); - jetHist.add("tracks/antiHelium/h2TOFmassantiHeliumVsPt_jet", "h2TOFmassantiHeliumVsPt_jet; TOFmass; #it{p}_{T}/z (GeV)", HistType::kTH2F, {{180, 0.4, 4.}, {ptZHeAxis}}); - jetHist.add("tracks/helium/h2TOFmass2HeliumVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}t; TOFmass2; #it{p}_{T}/z (GeV)", HistType::kTH2F, {{massHeAxis}, {ptZHeAxis}}); - jetHist.add("tracks/antiHelium/h2TOFmass2antiHeliumVsPt_jet", "#Delta M^{2} (t) vs #it{p}_{T}; TOFmass2; #it{p}_{T}/z (GeV)", HistType::kTH2F, {{massHeAxis}, {ptZHeAxis}}); + jetHist.add("tracks/proton/h3TOFmassProtonVsPtVsJetPt_jet", "h3TOFmassProtonVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPt_jet", "h3TOFmassantiProtonVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/proton/h3TOFmass2ProtonVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massPrAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massPrAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPt_jet", "h3TOFmassDeuteronVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiDeuteron/h3TOFmassantiDeuteronVsPtVsJetPt_jet", "h3TOFmassantiDeuteronVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massDeAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiDeuteron/h3TOFmass2antiDeuteronVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massDeAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/triton/h3TOFmassTritonVsPtVsJetPt_jet", "h3TOFmassTritonVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiTriton/h3TOFmassantiTritonVsPtVsJetPt_jet", "h3TOFmassantiTritonVsPtVsJetPt_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/triton/h3TOFmass2TritonVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massTrAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiTriton/h3TOFmass2antiTritonVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massTrAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/helium/h3TOFmassHeliumVsPtVsJetPt_jet", "h3TOFmassHeliumVsPtVsJetPt_jet; TOFmass; #it{p}_{T}/z (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{180, 0.4, 4.}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/antiHelium/h3TOFmassantiHeliumVsPtVsJetPt_jet", "h3TOFmassantiHeliumVsPtVsJetPt_jet; TOFmass; #it{p}_{T}/z (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{180, 0.4, 4.}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/helium/h3TOFmass2HeliumVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T}/z (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massHeAxis}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/antiHelium/h3TOFmass2antiHeliumVsPtVsJetPt_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T}; TOFmass2; #it{p}_{T}/z (GeV); jet #it{p}_{T} (GeV)", HistType::kTH3F, {{massHeAxis}, {ptZHeAxis}, {PtJetAxis}}); + + // Background subtracted versions + jetHist.add("tracks/proton/h3TOFmassProtonVsPtVsJetPtBkgSub_jet", "h3TOFmassProtonVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPtBkgSub_jet", "h3TOFmassantiProtonVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/proton/h3TOFmass2ProtonVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massPrAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massPrAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPtBkgSub_jet", "h3TOFmassDeuteronVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiDeuteron/h3TOFmassantiDeuteronVsPtVsJetPtBkgSub_jet", "h3TOFmassantiDeuteronVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massDeAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiDeuteron/h3TOFmass2antiDeuteronVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massDeAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/triton/h3TOFmassTritonVsPtVsJetPtBkgSub_jet", "h3TOFmassTritonVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiTriton/h3TOFmassantiTritonVsPtVsJetPtBkgSub_jet", "h3TOFmassantiTritonVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{80, 0.4, 4.}, {50, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/triton/h3TOFmass2TritonVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massTrAxis}, {250, 0., 5.}, {PtJetAxis}}); + jetHist.add("tracks/antiTriton/h3TOFmass2antiTritonVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T} (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massTrAxis}, {250, 0., 5.}, {PtJetAxis}}); + + jetHist.add("tracks/helium/h3TOFmassHeliumVsPtVsJetPtBkgSub_jet", "h3TOFmassHeliumVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T}/z (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{180, 0.4, 4.}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/antiHelium/h3TOFmassantiHeliumVsPtVsJetPtBkgSub_jet", "h3TOFmassantiHeliumVsPtVsJetPtBkgSub_jet; TOFmass; #it{p}_{T}/z (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{180, 0.4, 4.}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/helium/h3TOFmass2HeliumVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T}/z (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massHeAxis}, {ptZHeAxis}, {PtJetAxis}}); + jetHist.add("tracks/antiHelium/h3TOFmass2antiHeliumVsPtVsJetPtBkgSub_jet", "#Delta M^{2} (t) vs #it{p}_{T} vs jet #it{p}_{T} (Bkg Sub); TOFmass2; #it{p}_{T}/z (GeV); jet #it{p}_{T} (Bkg Sub) (GeV)", HistType::kTH3F, {{massHeAxis}, {ptZHeAxis}, {PtJetAxis}}); // TOF hist nSigma if (addpik) { @@ -510,6 +553,23 @@ struct nucleiInJets { jetHist.add("recInc/pt/PtParticleTypeTPCTOFVeto", "Pt vs ParticleType vs Centrality (TPC+TOF Veto)", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); jetHist.add("genInc/pt/PtParticleType", "Pt vs ParticleType vs Centrality (gen)", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); + // Event and signal loss analysis histograms (inclusive) + jetHist.add("eventLoss/hEventStatistics", "Event Statistics for Loss Analysis", kTH1F, {{10, 0.f, 10.f}}); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(1, "All Generated"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(2, "Gen |Vz|<10"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(3, "Gen True INEL>0"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(4, "Has Reco Coll"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(5, "Pass Sel8"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(6, "Pass |Vz|<10"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(7, "Pass rec INEL>0"); + jetHist.get(HIST("eventLoss/hEventStatistics"))->GetXaxis()->SetBinLabel(8, "EvSelPassedRecINELgt0"); + + // Signal loss histograms (only the ones that are actually used) + jetHist.add("eventLoss/signalLoss/h3GenParticlesPtVsEtaVsCent_INELgt0", "Generated Particles p_{T} vs #eta vs Centrality", HistType::kTH3F, {{100, 0.f, 10.f}, {100, -1.5f, 1.5f}, {100, 0, 100}}); + jetHist.add("eventLoss/signalLoss/h3GenParticleTypeVsPtVsCent_INELgt0", "Generated Particle Type vs p_{T} vs Centrality", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); + jetHist.add("eventLoss/signalLoss/h3GenParticlesPtVsEtaVsCent_TrueINELgt0", "Generated Particles p_{T} vs #eta vs Centrality (INEL>0)", HistType::kTH3F, {{100, 0.f, 10.f}, {100, -1.5f, 1.5f}, {100, 0, 100}}); + jetHist.add("eventLoss/signalLoss/h3GenParticleTypeVsPtVsCent_TrueINELgt0", "Generated Particle Type vs p_{T} vs Centrality (INEL>0)", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); + jetHist.add("recInc/eff/tpcTrack3D", "Pt vs ParticleType vs Centrality (tpc)", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); jetHist.add("recInc/eff/tpcTofTrack3D", "Pt vs ParticleType vs Centrality (tpc-tof)", HistType::kTH3F, {{100, 0.f, 10.f}, {14, -7, 7}, {100, 0, 100}}); @@ -732,7 +792,7 @@ struct nucleiInJets { int nEvents = 0; template - void fillTrackInfo(const TracksType& trk, const JetType& jets, std::vector& leadingJetPtEtaPhi) + void fillTrackInfo(const TracksType& trk, const JetType& jets, std::vector& leadingJetPtEtaPhi, float backgroundRho = -1.0f) { if (!isTrackSelected(trk)) return; @@ -783,54 +843,102 @@ struct nucleiInJets { if (addTOFplots && trk.hasTOF()) { jetHist.fill(HIST("tracks/h2TOFbetaVsP_Jet"), trk.p() / (1.f * trk.sign()), trk.beta()); } + + // Calculate background subtracted jet pt + float jetArea = M_PI * cfgjetR * cfgjetR; + float jetPtBkgSub = jetPt; + if (backgroundRho > 0) { + jetPtBkgSub = jetPt - backgroundRho * jetArea; + } + if (trk.sign() > 0) { // particle info if (addpik) { jetHist.fill(HIST("tracks/pion/h3PtVsPionNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPi(), jetPt); jetHist.fill(HIST("tracks/kaon/h3PtVsKaonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaKa(), jetPt); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/pion/h3PtVsPionNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPi(), jetPtBkgSub); + jetHist.fill(HIST("tracks/kaon/h3PtVsKaonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaKa(), jetPtBkgSub); + } } if (useTOFNsigmaPreSel && trk.hasTOF()) { - if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); - if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); - if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); - if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); + } } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); + } } else if (!useTOFNsigmaPreSel && useTOFVeto) { if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/proton/h3PtVsProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/deuteron/h3PtVsDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/helium/h3PtVsHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/triton/h3PtVsTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); } } @@ -853,14 +961,25 @@ struct nucleiInJets { if (addTOFplots && trk.hasTOF()) { if (!useTPCpreSel) { - jetHist.fill(HIST("tracks/proton/h2TOFmassProtonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/proton/h2TOFmass2ProtonVsPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt()); - jetHist.fill(HIST("tracks/deuteron/h2TOFmassDeuteronVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/deuteron/h2TOFmass2DeuteronVsPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt()); - jetHist.fill(HIST("tracks/triton/h2TOFmassTritonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/triton/h2TOFmass2TritonVsPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt()); - jetHist.fill(HIST("tracks/helium/h2TOFmassHeliumVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/helium/h2TOFmass2HeliumVsPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt()); + jetHist.fill(HIST("tracks/proton/h3TOFmassProtonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/proton/h3TOFmass2ProtonVsPtVsJetPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/triton/h3TOFmassTritonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/triton/h3TOFmass2TritonVsPtVsJetPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/helium/h3TOFmassHeliumVsPtVsJetPt_jet"), massTOF, trk.pt() / 2.0, jetPt); + jetHist.fill(HIST("tracks/helium/h3TOFmass2HeliumVsPtVsJetPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPt); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/proton/h3TOFmassProtonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/proton/h3TOFmass2ProtonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/triton/h3TOFmassTritonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/triton/h3TOFmass2TritonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/helium/h3TOFmassHeliumVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt() / 2.0, jetPtBkgSub); + jetHist.fill(HIST("tracks/helium/h3TOFmass2HeliumVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPtBkgSub); + } jetHist.fill(HIST("tracks/proton/h2TofNsigmaProtonVsPt_jet"), trk.tofNSigmaPr(), trk.pt()); jetHist.fill(HIST("tracks/deuteron/h2TofNsigmaDeuteronVsPt_jet"), trk.tofNSigmaDe(), trk.pt()); jetHist.fill(HIST("tracks/helium/h2TofNsigmaHeliumVsPt_jet"), trk.tofNSigmaHe(), trk.pt()); @@ -869,25 +988,41 @@ struct nucleiInJets { jetHist.fill(HIST("tracks/deuteron/h3TpcNsigmaTofNsigmaDeuteronVsPt_jet"), trk.tpcNSigmaDe(), trk.tofNSigmaDe(), trk.pt()); } else { if (std::abs(trk.tpcNSigmaPr()) < cfgnTPCPIDPr) { - jetHist.fill(HIST("tracks/proton/h2TOFmassProtonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/proton/h2TOFmass2ProtonVsPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt()); + jetHist.fill(HIST("tracks/proton/h3TOFmassProtonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/proton/h3TOFmass2ProtonVsPtVsJetPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPt); + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/proton/h3TOFmassProtonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/proton/h3TOFmass2ProtonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPtBkgSub); + } jetHist.fill(HIST("tracks/proton/h2TofNsigmaProtonVsPt_jet"), trk.tofNSigmaPr(), trk.pt()); jetHist.fill(HIST("tracks/proton/h3TpcNsigmaTofNsigmaProtonVsPt_jet"), trk.tpcNSigmaPr(), trk.tofNSigmaPr(), trk.pt()); } if (std::abs(trk.tpcNSigmaDe()) < cfgnTPCPIDDe) { - jetHist.fill(HIST("tracks/deuteron/h2TOFmassDeuteronVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/deuteron/h2TOFmass2DeuteronVsPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt()); + jetHist.fill(HIST("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPt); + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/deuteron/h3TOFmassDeuteronVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/deuteron/h3TOFmass2DeuteronVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPtBkgSub); + } jetHist.fill(HIST("tracks/deuteron/h2TofNsigmaDeuteronVsPt_jet"), trk.tofNSigmaDe(), trk.pt()); jetHist.fill(HIST("tracks/deuteron/h3TpcNsigmaTofNsigmaDeuteronVsPt_jet"), trk.tpcNSigmaDe(), trk.tofNSigmaDe(), trk.pt()); } if (std::abs(trk.tpcNSigmaTr()) < cfgnTPCPIDTr) { - jetHist.fill(HIST("tracks/triton/h2TOFmassTritonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/triton/h2TOFmass2TritonVsPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt()); + jetHist.fill(HIST("tracks/triton/h3TOFmassTritonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/triton/h3TOFmass2TritonVsPtVsJetPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPt); + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/triton/h3TOFmassTritonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/triton/h3TOFmass2TritonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPtBkgSub); + } jetHist.fill(HIST("tracks/triton/h2TofNsigmaTritonVsPt_jet"), trk.tofNSigmaTr(), trk.pt()); } if (std::abs(trk.tpcNSigmaHe()) < cfgnTPCPIDHe) { - jetHist.fill(HIST("tracks/helium/h2TOFmassHeliumVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/helium/h2TOFmass2HeliumVsPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt()); + jetHist.fill(HIST("tracks/helium/h3TOFmassHeliumVsPtVsJetPt_jet"), massTOF, trk.pt() / 2.0, jetPt); + jetHist.fill(HIST("tracks/helium/h3TOFmass2HeliumVsPtVsJetPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPt); + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/helium/h3TOFmassHeliumVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt() / 2.0, jetPtBkgSub); + jetHist.fill(HIST("tracks/helium/h3TOFmass2HeliumVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPtBkgSub); + } jetHist.fill(HIST("tracks/helium/h2TofNsigmaHeliumVsPt_jet"), trk.tofNSigmaHe(), trk.pt()); } } @@ -903,50 +1038,90 @@ struct nucleiInJets { if (addpik) { jetHist.fill(HIST("tracks/antiPion/h3PtVsPionNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPi(), jetPt); jetHist.fill(HIST("tracks/antiKaon/h3PtVsKaonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaKa(), jetPt); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/antiPion/h3PtVsPionNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPi(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiKaon/h3PtVsKaonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaKa(), jetPtBkgSub); + } } if (useTOFNsigmaPreSel && trk.hasTOF()) { - if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) + if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); - if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); - if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); - if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); + } + if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); + } } else if (!useTOFNsigmaPreSel && !useTOFVeto) { jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); + } } else if (!useTOFNsigmaPreSel && useTOFVeto) { if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaPr()) < cfgnTPCPIDPrTOF) { jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiProton/h3PtVsantiProtonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaPr(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaDe()) < cfgnTPCPIDDeTOF) { jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiDeuteron/h3PtVsantiDeuteronNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaDe(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaHe()) < cfgnTPCPIDHeTOF) { jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiHelium/h3PtVsantiHeliumNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaHe(), jetPtBkgSub); } if (trk.hasTOF()) { if (std::abs(trk.tofNSigmaTr()) < cfgnTPCPIDTrTOF) { jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); } } else { jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJet_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPt); + if (backgroundRho > 0) + jetHist.fill(HIST("tracks/antiTriton/h3PtVsantiTritonNSigmaTPCVsPtJetBkgSub_jet"), trk.pt(), trk.tpcNSigmaTr(), jetPtBkgSub); } } @@ -969,25 +1144,40 @@ struct nucleiInJets { if (addTOFplots && trk.hasTOF()) { if (!useTPCpreSel) { - jetHist.fill(HIST("tracks/antiProton/h2TOFmassantiProtonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/antiProton/h2TOFmass2antiProtonVsPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt()); + jetHist.fill(HIST("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPt); jetHist.fill(HIST("tracks/antiProton/h2TofNsigmaantiProtonVsPt_jet"), trk.tofNSigmaPr(), trk.pt()); jetHist.fill(HIST("tracks/antiProton/h3TpcNsigmaTofNsigmaantiProtonVsPt_jet"), trk.tpcNSigmaPr(), trk.tofNSigmaPr(), trk.pt()); - jetHist.fill(HIST("tracks/antiDeuteron/h2TOFmassantiDeuteronVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/antiDeuteron/h2TOFmass2antiDeuteronVsPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt()); + jetHist.fill(HIST("tracks/antiDeuteron/h3TOFmassantiDeuteronVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/antiDeuteron/h3TOFmass2antiDeuteronVsPtVsJetPt_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPt); jetHist.fill(HIST("tracks/antiDeuteron/h2TofNsigmaantiDeuteronVsPt_jet"), trk.tofNSigmaDe(), trk.pt()); jetHist.fill(HIST("tracks/antiDeuteron/h3TpcNsigmaTofNsigmaantiDeuteronVsPt_jet"), trk.tpcNSigmaDe(), trk.tofNSigmaDe(), trk.pt()); - jetHist.fill(HIST("tracks/antiTriton/h2TOFmassantiTritonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/antiTriton/h2TOFmass2antiTritonVsPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt()); + jetHist.fill(HIST("tracks/antiTriton/h3TOFmassantiTritonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/antiTriton/h3TOFmass2antiTritonVsPtVsJetPt_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPt); jetHist.fill(HIST("tracks/antiTriton/h2TofNsigmaantiTritonVsPt_jet"), trk.tofNSigmaTr(), trk.pt()); - jetHist.fill(HIST("tracks/antiHelium/h2TOFmassantiHeliumVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/antiHelium/h2TOFmass2antiHeliumVsPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt()); + jetHist.fill(HIST("tracks/antiHelium/h3TOFmassantiHeliumVsPtVsJetPt_jet"), massTOF, trk.pt() / 2.0, jetPt); + jetHist.fill(HIST("tracks/antiHelium/h3TOFmass2antiHeliumVsPtVsJetPt_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPt); jetHist.fill(HIST("tracks/antiHelium/h2TofNsigmaantiHeliumVsPt_jet"), trk.tofNSigmaHe(), trk.pt()); + // Background subtracted versions + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiDeuteron/h3TOFmassantiDeuteronVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiDeuteron/h3TOFmass2antiDeuteronVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassDeuteron * MassDeuteron, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiTriton/h3TOFmassantiTritonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiTriton/h3TOFmass2antiTritonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassTriton * MassTriton, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiHelium/h3TOFmassantiHeliumVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt() / 2.0, jetPtBkgSub); + jetHist.fill(HIST("tracks/antiHelium/h3TOFmass2antiHeliumVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassHelium3 * MassHelium3, trk.pt() / 2.0, jetPtBkgSub); + } } else { if (std::abs(trk.tpcNSigmaPr()) < cfgnTPCPIDPr) { - jetHist.fill(HIST("tracks/antiProton/h2TOFmassantiProtonVsPt_jet"), massTOF, trk.pt()); - jetHist.fill(HIST("tracks/antiProton/h2TOFmass2antiProtonVsPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt()); + jetHist.fill(HIST("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPt_jet"), massTOF, trk.pt(), jetPt); + jetHist.fill(HIST("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPt_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPt); + if (backgroundRho > 0) { + jetHist.fill(HIST("tracks/antiProton/h3TOFmassantiProtonVsPtVsJetPtBkgSub_jet"), massTOF, trk.pt(), jetPtBkgSub); + jetHist.fill(HIST("tracks/antiProton/h3TOFmass2antiProtonVsPtVsJetPtBkgSub_jet"), massTOF * massTOF - MassProton * MassProton, trk.pt(), jetPtBkgSub); + } jetHist.fill(HIST("tracks/antiProton/h2TofNsigmaantiProtonVsPt_jet"), trk.tofNSigmaPr(), trk.pt()); jetHist.fill(HIST("tracks/antiProton/h3TpcNsigmaTofNsigmaantiProtonVsPt_jet"), trk.tpcNSigmaPr(), trk.tofNSigmaPr(), trk.pt()); } @@ -1275,7 +1465,7 @@ struct nucleiInJets { //////////////////////////////////////// } - void processJetTracksData(soa::Join::iterator const& collision, + void processJetTracksData(soa::Join::iterator const& collision, chargedJetstrack const& chargedjets, soa::Join const& tracks, TrackCandidates const&, aod::JBCs const&) { auto bc = collision.bc_as(); @@ -1297,11 +1487,24 @@ struct nucleiInJets { int nJets = 0; std::vector leadingJetWithPtEtaPhi(3); float leadingJetPt = -1.0f; + float backgroundRho = collision.rho(); // Get background rho from collision + + // Fill background rho histogram once per event + jetHist.fill(HIST("jet/h1BkgRho"), backgroundRho); + for (const auto& chargedjet : chargedjets) { jetHist.fill(HIST("jet/h1JetPt"), chargedjet.pt()); jetHist.fill(HIST("jet/h1JetEta"), chargedjet.eta()); jetHist.fill(HIST("jet/h1JetPhi"), chargedjet.phi()); + // Calculate background subtracted jet pt + float jetArea = M_PI * cfgjetR * cfgjetR; // Assuming circular jet area + float jetPtBkgSub = chargedjet.pt() - backgroundRho * jetArea; + + // Fill background corrected histograms + jetHist.fill(HIST("jet/h1JetPtBkgSub"), jetPtBkgSub); + jetHist.fill(HIST("jet/h2JetPtVsBkgRho"), chargedjet.pt(), backgroundRho); + if (chargedjet.pt() > leadingJetPt) { leadingJetWithPtEtaPhi[0] = chargedjet.pt(); leadingJetWithPtEtaPhi[1] = chargedjet.eta(); @@ -1322,11 +1525,11 @@ struct nucleiInJets { jetHist.fill(HIST("jet/h1JetEvents"), 0.5); for (const auto& track : tracks) { auto trk = track.track_as(); - fillTrackInfo(trk, chargedjets, leadingJetWithPtEtaPhi); + fillTrackInfo(trk, chargedjets, leadingJetWithPtEtaPhi, backgroundRho); } } - void processJetTracksDataLfPid(soa::Join::iterator const& collision, + void processJetTracksDataLfPid(soa::Join::iterator const& collision, chargedJetstrack const& chargedjets, soa::Join const& tracks, TrackCandidatesLfPid const&, aod::JBCs const&) { auto bc = collision.bc_as(); @@ -1349,10 +1552,24 @@ struct nucleiInJets { int nJets = 0; std::vector leadingJetWithPtEtaPhi(3); float leadingJetPt = -1.0f; + float backgroundRho = collision.rho(); // Get background rho from collision + + // Fill background rho histogram once per event + jetHist.fill(HIST("jet/h1BkgRho"), backgroundRho); + for (const auto& chargedjet : chargedjets) { jetHist.fill(HIST("jet/h1JetPt"), chargedjet.pt()); jetHist.fill(HIST("jet/h1JetEta"), chargedjet.eta()); jetHist.fill(HIST("jet/h1JetPhi"), chargedjet.phi()); + + // Calculate background subtracted jet pt + float jetArea = M_PI * cfgjetR * cfgjetR; // Assuming circular jet area + float jetPtBkgSub = chargedjet.pt() - backgroundRho * jetArea; + + // Fill background corrected histograms + jetHist.fill(HIST("jet/h1JetPtBkgSub"), jetPtBkgSub); + jetHist.fill(HIST("jet/h2JetPtVsBkgRho"), chargedjet.pt(), backgroundRho); + if (chargedjet.pt() > leadingJetPt) { leadingJetWithPtEtaPhi[0] = chargedjet.pt(); leadingJetWithPtEtaPhi[1] = chargedjet.eta(); @@ -1373,7 +1590,7 @@ struct nucleiInJets { jetHist.fill(HIST("jet/h1JetEvents"), 0.5); for (auto& track : tracks) { auto trk = track.track_as(); - fillTrackInfo(trk, chargedjets, leadingJetWithPtEtaPhi); + fillTrackInfo(trk, chargedjets, leadingJetWithPtEtaPhi, backgroundRho); } } @@ -1426,7 +1643,7 @@ struct nucleiInJets { auto rapidityData = [&](float m2z) { const float rap = trk.rapidity(m2z); - return rap > std::abs(cfgtrkMaxRap); + return rap < std::abs(cfgtrkMaxRap); }; auto prRapidityWithinRange = rapidityData(o2::constants::physics::MassProton); @@ -1576,14 +1793,8 @@ struct nucleiInJets { jetHist.fill(HIST("mcpJet/vertexZ"), collision.posZ()); - bool INELgt0 = false; - for (const auto& mcParticle : mcParticles) { - if (std::fabs(mcParticle.eta()) < cfgtrkMaxEta) { - INELgt0 = true; - break; - } - } - if (!INELgt0) // not true INEL + // Use PWGLF INEL>0 functionality + if (!o2::pwglf::isINELgt0mc(mcParticles, pdgDB)) return; jetHist.fill(HIST("mcpJet/eventStat"), 3.5); @@ -1634,16 +1845,7 @@ struct nucleiInJets { return; jetHist.fill(HIST("mcdJet/eventStat"), 2.5); - bool INELgt0 = false; - for (const auto& track : tracks) { - if (std::fabs(track.eta()) < cfgtrkMaxEta) { - INELgt0 = true; - break; - } - } - if (!INELgt0) - return; - jetHist.fill(HIST("mcdJet/eventStat"), 3.5); + int nJets = 0; std::vector leadingJetWithPtEtaPhi(3); float leadingJetPt = -1.0f; @@ -1709,7 +1911,7 @@ struct nucleiInJets { } Preslice> perMCCol = aod::jmcparticle::mcCollisionId; - void processRecMatched(aod::JetCollisionMCD const& collision, JetMCDetTable const& mcdjets, + void processRecMatched(JetCollWithLabel const& collision, JetMCDetTable const& mcdjets, soa::Join const& tracks, JetMCPartTable const&, TrackCandidatesMC const&, aod::JetParticles const& particleTracks, aod::JMcCollisions const&) { @@ -1719,15 +1921,6 @@ struct nucleiInJets { return; jetHist.fill(HIST("recmatched/vertexZ"), collision.posZ()); - bool INELgt0 = false; - for (const auto& track : tracks) { - if (std::fabs(track.eta()) < cfgtrkMaxEta) { - INELgt0 = true; - break; - } - } - if (!INELgt0) - return; std::vector mcdJetPt{}; std::vector mcdJetPhi{}; @@ -2121,8 +2314,9 @@ struct nucleiInJets { if (std::fabs(track.dcaXY()) > dcaXYPtDepCut(track.pt()) && useDcaxyPtDepCut) continue; - auto mass = TDatabasePDG::Instance()->GetParticle(abs(mcTrack.pdgCode()))->Mass(); - auto rapidity = RecoDecay::y(std::array{track.px(), track.py(), track.pz()}, mass); + // auto mass = TDatabasePDG::Instance()->GetParticle(abs(mcTrack.pdgCode()))->Mass(); + // auto rapidity = RecoDecay::y(std::array{track.px(), track.py(), track.pz()}, mass); + auto rapidity = mcTrack.y(); if (std::abs(rapidity) > cfgtrkMaxRap) continue; @@ -2215,6 +2409,103 @@ struct nucleiInJets { } // mc particles } + // Process function for event and signal loss analysis (inclusive) + void processEventSignalLoss(aod::JetMcCollision const& mcCollision, + soa::SmallGroups> const& recoColls, + aod::JetParticles const& mcParticles, + TrackCandidates const&) + { + + // Fill generated event statistics + jetHist.fill(HIST("eventLoss/hEventStatistics"), 0.5); // All Generated + + // Check if we have a reconstructed collision + bool hasRecoColl = false; + bool passSel8 = false; + bool passVz = false; + bool passINELgt0 = false; + bool isSel8 = false; + + float centrality = -999; + switch (centralityType) { + case 0: // FT0M + centrality = mcCollision.centFT0M(); + break; + case 1: // FT0C + centrality = mcCollision.multFT0C(); + break; + case 2: // V0A + centrality = mcCollision.multFV0A(); + break; + default: + centrality = -999; + } + + // Check INEL>0 at MC level using PWGLF functionality + bool mcINELgt0 = o2::pwglf::isINELgt0mc(mcParticles, pdgDB); + if (mcCollision.posZ() < 10) { + jetHist.fill(HIST("eventLoss/hEventStatistics"), 1.5); + if (mcINELgt0) { + jetHist.fill(HIST("eventLoss/hEventStatistics"), 2.5); + } + } + + for (const auto& recoColl : recoColls) { + hasRecoColl = true; + if (jetderiveddatautilities::selectCollision(recoColl, jetderiveddatautilities::initialiseEventSelectionBits("sel8"))) + isSel8 = true; + jetHist.fill(HIST("eventLoss/hEventStatistics"), 3.5); // Has Reco Coll + + if (isSel8) { + passSel8 = true; + jetHist.fill(HIST("eventLoss/hEventStatistics"), 4.5); // Pass Sel8 + } + + if (std::abs(recoColl.posZ()) < 10.0) { + passVz = true; + jetHist.fill(HIST("eventLoss/hEventStatistics"), 5.5); // Pass |Vz|<10 + } + + if (mcINELgt0) { + passINELgt0 = true; + jetHist.fill(HIST("eventLoss/hEventStatistics"), 6.5); // Pass rec INEL>0 + } + + break; // Only first reco collision + } + + // Final selection (all cuts passed) + if (hasRecoColl && passSel8 && passVz && passINELgt0) { + jetHist.fill(HIST("eventLoss/hEventStatistics"), 7.5); // Final Selection + } + + auto mcParticles_perColl = mcParticles.sliceBy(perMCCol, mcCollision.globalIndex()); + for (const auto& mcParticle : mcParticles_perColl) { + if (!mcParticle.isPhysicalPrimary()) + continue; + + // Apply kinematic cuts similar to track selection + if (std::fabs(mcParticle.eta()) > cfgtrkMaxEta) + continue; + + int particleType = mapPDGToValue(mcParticle.pdgCode()); + if (particleType == 0) + continue; // Only interested particles + + // Fill INEL>0 specific histograms + if (mcINELgt0) { + jetHist.fill(HIST("eventLoss/signalLoss/h3GenParticlesPtVsEtaVsCent_TrueINELgt0"), mcParticle.pt(), mcParticle.eta(), centrality); + jetHist.fill(HIST("eventLoss/signalLoss/h3GenParticleTypeVsPtVsCent_TrueINELgt0"), mcParticle.pt(), particleType, centrality); + } + + // Fill generated particle histograms (rec events) + if (hasRecoColl && passSel8 && passVz && passINELgt0) { + jetHist.fill(HIST("eventLoss/signalLoss/h3GenParticlesPtVsEtaVsCent_INELgt0"), mcParticle.pt(), mcParticle.eta(), centrality); + jetHist.fill(HIST("eventLoss/signalLoss/h3GenParticleTypeVsPtVsCent_INELgt0"), mcParticle.pt(), particleType, centrality); + } + } + } + PROCESS_SWITCH(nucleiInJets, processJetTracksData, "nuclei in Jets data", true); PROCESS_SWITCH(nucleiInJets, processJetTracksDataLfPid, "nuclei in Jets data", false); PROCESS_SWITCH(nucleiInJets, processDataInc, "nuclei-data", false); @@ -2223,6 +2514,7 @@ struct nucleiInJets { PROCESS_SWITCH(nucleiInJets, processMCGen, "nuclei in Jets MC particlelevel Jets", false); PROCESS_SWITCH(nucleiInJets, processRecMatched, "nuclei in Jets rec matched", false); PROCESS_SWITCH(nucleiInJets, processGenMatched, "nuclei in Jets gen matched", false); + PROCESS_SWITCH(nucleiInJets, processEventSignalLoss, "Event and signal loss analysis (inclusive)", false); }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)