diff --git a/PWGLF/Tasks/Nuspex/AngularCorrelationsInJets.cxx b/PWGLF/Tasks/Nuspex/AngularCorrelationsInJets.cxx index 6d751cde7c1..da2c47fa790 100644 --- a/PWGLF/Tasks/Nuspex/AngularCorrelationsInJets.cxx +++ b/PWGLF/Tasks/Nuspex/AngularCorrelationsInJets.cxx @@ -34,6 +34,7 @@ #include "PWGJE/Core/JetBkgSubUtils.h" #include "TVector2.h" #include "TVector3.h" +#include "TPDGCode.h" using namespace o2; using namespace o2::framework; @@ -75,10 +76,8 @@ struct AngularCorrelationsInJets { Configurable fProtonTPCTOFpT{"protonTPCTOFswitchpT", 0.7, "[proton] pT for switch in TPC/TOF nsigma"}; Configurable fProtonTPCnsigLowYield{"protonTPCnsigmaLowPtYield", 4.0, "[proton] max TPC nsigma with low pT for yield"}; Configurable fProtonTPCnsigHighYield{"protonTPCnsigmaHighPtYield", 4.0, "[proton] max TPC nsigma with high pT for yield"}; - Configurable fProtonTPCnsigLowCF{"protonTPCnsigmaLowPtCF", 2.0, "[proton] max TPC nsigma with low pT for CF"}; - Configurable fProtonTPCnsigHighCF{"protonTPCnsigmaHighPtCF", 3.0, "[proton] max TPC nsigma with high pT for CF"}; Configurable fProtonTOFnsigYield{"protonTOFnsigmaHighPtYield", 4.0, "[proton] max TOF nsigma with high pT yield"}; - Configurable fProtonTOFnsigCF{"protonTOFnsigmaHighPtCF", 4.0, "[proton] max TOF nsigma for CF"}; + Configurable fProtonNsigma{"protonNsigma", 2.0, "[proton] max combined nsigma for CF (sqrt(nsigTPC^2 + nsigTOF^2))"}; // Antiproton Cuts Configurable fAntiprotonDCAxyYield{"antiprotonDCAxyYield", 0.05, "[antiproton] DCAxy cut for yield"}; @@ -88,10 +87,8 @@ struct AngularCorrelationsInJets { Configurable fAntiprotonTPCTOFpT{"antiprotonTPCTOFswitchpT", 0.7, "[antiproton] pT for switch in TPC/TOF nsigma"}; Configurable fAntiprotonTPCnsigLowYield{"antiprotonTPCnsigmaLowPtYield", 4.0, "[antiproton] max TPC nsigma with low pT for yield"}; Configurable fAntiprotonTPCnsigHighYield{"antiprotonTPCnsigmaHighPtYield", 4.0, "[antiproton] max TPC nsigma with high pT for yield"}; - Configurable fAntiprotonTPCnsigLowCF{"antiprotonTPCnsigmaLowPtCF", 2.0, "[antiproton] max TPC nsigma with low pT for CF"}; - Configurable fAntiprotonTPCnsigHighCF{"antiprotonTPCnsigmaHighPtCF", 3.0, "[antiproton] max TPC nsigma with high pT for CF"}; Configurable fAntiprotonTOFnsigYield{"antiprotonTOFnsigmaHighPtYield", 4.0, "[antiproton] min TOF nsigma with high pT for yield"}; - Configurable fAntiprotonTOFnsigCF{"antiprotonTOFnsigmaHighPtCF", 4.0, "[antiproton] max TOF nsigma for CF"}; + Configurable fAntiprotonNsigma{"antiprotonNsigma", 2.0, "[antiproton] max combined nsigma for CF (sqrt(nsigTPC^2 + nsigTOF^2))"}; // Nuclei Cuts Configurable fNucleiDCAxyYield{"nucleiDCAxyYield", 0.05, "[nuclei] DCAxy cut for yield"}; @@ -101,10 +98,8 @@ struct AngularCorrelationsInJets { Configurable fNucleiTPCTOFpT{"nucleiTPCTOFswitchpT", 0.7, "[nuclei] pT for switch in TPC/TOF nsigma"}; Configurable fNucleiTPCnsigLowYield{"nucleiTPCnsigmaLowPtYield", 4.0, "[nuclei] max TPC nsigma with low pT for yield"}; Configurable fNucleiTPCnsigHighYield{"nucleiTPCnsigmaHighPtYield", 4.0, "[nuclei] max TPC nsigma with high pT for yield"}; - Configurable fNucleiTPCnsigLowCF{"nucleiTPCnsigmaLowPtCF", 2.0, "[nuclei] max TPC nsigma with low pT for CF"}; - Configurable fNucleiTPCnsigHighCF{"nucleiTPCnsigmaHighPtCF", 3.0, "[nuclei] max TPC nsigma with high pT for CF"}; Configurable fNucleiTOFnsigYield{"nucleiTOFnsigmaHighPtYield", 4.0, "[nuclei] min TOF nsigma with high pT for yield"}; - Configurable fNucleiTOFnsigCF{"nucleiTOFnsigmaHighPtCF", 4.0, "[nuclei] max TOF nsigma for CF"}; + Configurable fNucleiNsigma{"nucleiNsigma", 2.0, "[nuclei] max combined nsigma for CF (sqrt(nsigTPC^2 + nsigTOF^2))"}; // Antinuclei Cuts Configurable fAntinucleiDCAxyYield{"antinucleiDCAxyYield", 0.05, "[antinuclei] DCAxy cut for yield"}; @@ -114,27 +109,31 @@ struct AngularCorrelationsInJets { Configurable fAntinucleiTPCTOFpT{"antinucleiTPCTOFswitchpT", 0.7, "[antinuclei] pT for switch in TPC/TOF nsigma"}; Configurable fAntinucleiTPCnsigLowYield{"antinucleiTPCnsigmaLowPtYield", 4.0, "[antinuclei] max TPC nsigma with low pT for yield"}; Configurable fAntinucleiTPCnsigHighYield{"antinucleiTPCnsigmaHighPtYield", 4.0, "[antinuclei] max TPC nsigma with high pT for yield"}; - Configurable fAntinucleiTPCnsigLowCF{"antinucleiTPCnsigmaLowPtCF", 2.0, "[antinuclei] max TPC nsigma with low pT for CF"}; - Configurable fAntinucleiTPCnsigHighCF{"antinucleiTPCnsigmaHighPtCF", 3.0, "[antinuclei] max TPC nsigma with high pT for CF"}; Configurable fAntinucleiTOFnsigYield{"antinucleiTOFnsigmaHighPtYield", 4.0, "[antinuclei] min TOF nsigma with high pT for yield"}; - Configurable fAntinucleiTOFnsigCF{"antinucleiTOFnsigmaHighPtCF", 4.0, "[antinuclei] max TOF nsigma for CF"}; + Configurable fAntinucleiNsigma{"antinucleiNsigma", 2.0, "[nuclei] max combined nsigma for CF (sqrt(nsigTPC^2 + nsigTOF^2))"}; + Configurable fDeuteronAnalysis{"deuteronAnalysis", true, "true [false]: analyse (anti)deuterons [(anti)helium-3]"}; Configurable fUseTOFMass{"useTOFmass", true, "use TOF mass instead of pion mass if available"}; - Configurable fBufferSize{"trackBufferSize", 2000, "Number of mixed-event tracks being stored"}; + Configurable fBufferSize{"trackBufferSize", 200, "Number of mixed-event tracks being stored"}; // QC Configurables - Configurable fZVtx{"zVtx", 9999, "max zVertex"}; + Configurable fZVtx{"zVtx", 10.0, "max zVertex"}; Configurable fRmax{"Rmax", 0.4, "Maximum radius for jet and UE regions"}; Service ccdb; int mRunNumber; using FullTracksRun2 = soa::Join; + aod::TrackSelectionExtension, aod::TracksDCA, aod::pidTPCFullPr, aod::pidTPCFullDe, aod::pidTPCFullHe, aod::pidTOFFullPr, aod::pidTOFFullDe, aod::pidTOFFullHe, aod::pidTOFmass, aod::pidTOFbeta, aod::pidTPCEl, aod::pidTPCMu, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCTr, aod::pidTPCAl>; using FullTracksRun3 = soa::Join; + aod::TracksDCA, aod::pidTPCFullPr, aod::pidTPCFullDe, aod::pidTPCFullHe, aod::pidTOFFullPr, aod::pidTOFFullDe, aod::pidTOFFullHe, aod::pidTOFmass, aod::pidTOFbeta, aod::pidTPCEl, aod::pidTPCMu, aod::pidTPCPi, aod::pidTPCKa, aod::pidTPCTr, aod::pidTPCAl>; + // using McTracksRun2 = soa::Join; + // using McTracksRun3 = soa::Join; using BCsWithRun2Info = soa::Join; + // using McCollisions = soa::Join::iterator; Filter prelimTrackCuts = (aod::track::itsChi2NCl < fMaxChi2ITS && aod::track::tpcChi2NCl < fMaxChi2TPC && @@ -144,11 +143,15 @@ struct AngularCorrelationsInJets { Preslice perCollisionFullTracksRun2 = o2::aod::track::collisionId; Preslice perCollisionFullTracksRun3 = o2::aod::track::collisionId; + // PreSlice perCollisionMcTracksRun2 = o2::aod::track::collisionId; + // PreSlice perCollisionMcTracksRun3 = o2::aod::track::collisionId; AxisSpecs axisSpecs; HistogramRegistry registryData{"dataOutput", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; + // HistogramRegistry registryMC("MCOutput", {}, OutputObjHandlingPolicy::AnalysisObject, false, true); HistogramRegistry registryQA{"dataQA", {}, OutputObjHandlingPolicy::AnalysisObject, false, true}; + // HistogramRegistry registryMCQA("MCQA", {}, OutputObjHandlingPolicy::AnalysisObject, false, true); JetBkgSubUtils bkgSub; @@ -196,6 +199,10 @@ struct AngularCorrelationsInJets { registryQA.add("hPtJetAntinuclei_20", "Antinuclei p_{T} for jet p_{T} < 20 GeV", HistType::kTH1D, {axisSpecs.ptAxisPos}); registryQA.add("hPtJetAntinuclei_30", "Antinuclei p_{T} for jet p_{T} < 30 GeV", HistType::kTH1D, {axisSpecs.ptAxisPos}); registryQA.add("hPtJetAntinuclei_50", "Antinuclei p_{T} for jet p_{T} < 50 GeV", HistType::kTH1D, {axisSpecs.ptAxisPos}); + registryQA.add("hPtJetProtonVsTotalJet", "Proton p_{T} vs. jet p_{T}", HistType::kTH2D, {axisSpecs.ptAxisPos, {1000, 0, 500}}); + registryQA.add("hPtJetAntiprotonVsTotalJet", "Antiproton p_{T} vs. jet p_{T}", HistType::kTH2D, {axisSpecs.ptAxisPos, {1000, 0, 500}}); + registryQA.add("hPtJetNucleiVsTotalJet", "Nuclei p_{T} vs. jet p_{T}", HistType::kTH2D, {axisSpecs.ptAxisPos, {1000, 0, 500}}); + registryQA.add("hPtJetAntinucleiVsTotalJet", "Antinuclei p_{T} vs. jet p_{T}", HistType::kTH2D, {axisSpecs.ptAxisPos, {1000, 0, 500}}); // nSigma registryData.add("hTPCsignal", "TPC signal", HistType::kTH2F, {{1000, -100, 100, "#it{p} [GeV/#it{c}]"}, {5000, 0, 5000, "d#it{E}/d#it{X} (a.u.)"}}); @@ -315,7 +322,7 @@ struct AngularCorrelationsInJets { } template - bool selectTrack(T const& track) + bool selectTrack(T const& track) // preliminary track selections { if (track.tpcNClsCrossedRows() < fMinRatioCrossedRowsTPC * track.tpcNClsFindable() || track.tpcNClsCrossedRows() < fMinNCrossedRowsTPC || @@ -333,9 +340,26 @@ struct AngularCorrelationsInJets { return true; } + template + bool singleSpeciesTPCNSigma(T const& track, int species) // make cut configurable + { // reject any track that has nsigma < 3 for more than 1 species + if (track.tpcNSigmaStoreEl() < 3.0 || track.tpcNSigmaStoreMu() < 3.0 || track.tpcNSigmaStorePi() < 3.0 || track.tpcNSigmaStoreKa() < 3.0 || track.tpcNSigmaStoreTr() < 3.0 || track.tpcNSigmaStoreAl() < 3.0) + return false; + switch (species) { + case 1: // (anti)proton + return (track.tpcNSigmaPr() < 3.0 && track.tpcNSigmaDe() > 3.0 && track.tpcNSigmaHe() > 3.0); + case 2: // (anti)deuteron + return (track.tpcNSigmaDe() < 3.0 && track.tpcNSigmaPr() > 3.0 && track.tpcNSigmaHe() > 3.0); + case 3: // (anti)helium-3 + return (track.tpcNSigmaHe() < 3.0 && track.tpcNSigmaDe() > 3.0 && track.tpcNSigmaPr() > 3.0); + } + } + template bool isProton(const T& track, bool tightCuts) { + // if (doprocessMCRun3) + // return (track.mcParticle().pdgCode() == 2212); if (track.sign() < 0) return false; @@ -347,20 +371,15 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaProtonCF"), track.pt(), track.tpcNSigmaPr()); - - // TPC - if (track.pt() < fProtonTPCTOFpT && TMath::Abs(track.tpcNSigmaPr()) > fProtonTPCnsigLowCF) - return false; - if (track.pt() > fProtonTPCTOFpT && TMath::Abs(track.tpcNSigmaPr()) > fProtonTPCnsigHighCF) - return false; - registryData.fill(HIST("hTOFnsigmaProtonCF"), track.pt(), track.tofNSigmaPr()); - // TOF - if (track.hasTOF()) { - if (track.pt() > fProtonTPCTOFpT && TMath::Abs(track.tofNSigmaPr()) > fProtonTOFnsigCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaPr() : 999; + if ((track.pt() < fProtonTPCTOFpT && (TMath::Abs(track.tpcNSigmaPr()) > fProtonNsigma)) || (track.pt() > fProtonTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaPr() * track.tpcNSigmaPr() + tofNsigma * tofNsigma) > fProtonNsigma))) + if (TMath::Sqrt(track.tpcNSigmaPr() * track.tpcNSigmaPr() + tofNsigma * tofNsigma) > fProtonNsigma) return false; - } + if (!singleSpeciesTPCNSigma(track, 1)) + return false; } else { // for yields // DCA if (TMath::Abs(track.dcaXY()) > fProtonDCAxyYield) @@ -391,6 +410,8 @@ struct AngularCorrelationsInJets { template bool isAntiproton(const T& track, bool tightCuts) { + // if (doprocessMCRun3) + // return (track.mcParticle().pdgCode() == -2212); if (track.sign() > 0) return false; @@ -402,20 +423,14 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaAntiprotonCF"), track.pt(), track.tpcNSigmaPr()); + registryData.fill(HIST("hTOFnsigmaAntiprotonCF"), track.pt(), track.tofNSigmaPr()); - // TPC - if (track.pt() < fAntiprotonTPCTOFpT && TMath::Abs(track.tpcNSigmaPr()) > fAntiprotonTPCnsigLowCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaPr() : 999; + if ((track.pt() < fAntiprotonTPCTOFpT && (TMath::Abs(track.tpcNSigmaPr()) > fAntiprotonNsigma)) || (track.pt() > fAntiprotonTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaPr() * track.tpcNSigmaPr() + tofNsigma * tofNsigma) > fAntiprotonNsigma))) return false; - if (track.pt() > fAntiprotonTPCTOFpT && TMath::Abs(track.tpcNSigmaPr()) > fAntiprotonTPCnsigHighCF) + if (!singleSpeciesTPCNSigma(track, 1)) return false; - - registryData.fill(HIST("hTOFnsigmaAntiprotonCF"), track.pt(), track.tofNSigmaPr()); - - // TOF - if (track.hasTOF()) { - if (track.pt() > fAntiprotonTPCTOFpT && TMath::Abs(track.tofNSigmaPr()) > fAntiprotonTOFnsigCF) - return false; - } } else { // for yields // DCA if (TMath::Abs(track.dcaXY()) > fAntiprotonDCAxyYield) @@ -446,6 +461,8 @@ struct AngularCorrelationsInJets { template bool isNucleus(const T& track, bool tightCuts) { + // if (doprocessMCRun3) + // return (track.mcParticle().pdgCode() == (fDeuteronAnalysis) ? 1000010020 : 1000020030); if (track.sign() < 0) return false; if (fDeuteronAnalysis) { @@ -457,20 +474,14 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaNucleiCF"), track.pt(), track.tpcNSigmaDe()); + registryData.fill(HIST("hTOFnsigmaNucleiCF"), track.pt(), track.tofNSigmaDe()); - // TPC - if (track.pt() < fNucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaDe()) > fNucleiTPCnsigLowCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaDe() : 999; + if ((track.pt() < fNucleiTPCTOFpT && (TMath::Abs(track.tpcNSigmaDe()) > fNucleiNsigma)) || (track.pt() > fNucleiTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaDe() * track.tpcNSigmaDe() + tofNsigma * tofNsigma) > fNucleiNsigma))) return false; - if (track.pt() > fNucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaDe()) > fNucleiTPCnsigHighCF) + if (!singleSpeciesTPCNSigma(track, 2)) return false; - - registryData.fill(HIST("hTOFnsigmaNucleiCF"), track.pt(), track.tofNSigmaDe()); - - // TOF - if (track.hasTOF()) { - if (track.pt() > fNucleiTPCTOFpT && TMath::Abs(track.tofNSigmaDe()) > fNucleiTOFnsigCF) - return false; - } } else { // for yields // DCA if (TMath::Abs(track.dcaXY()) > fNucleiDCAxyYield) @@ -503,20 +514,14 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaNucleiCF"), track.pt(), track.tpcNSigmaHe()); + registryData.fill(HIST("hTOFnsigmaNucleiCF"), track.pt(), track.tofNSigmaHe()); - // TPC - if (track.pt() < fNucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaHe()) > fNucleiTPCnsigLowCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaHe() : 999; + if ((track.pt() < fNucleiTPCTOFpT && (TMath::Abs(track.tpcNSigmaHe()) > fNucleiNsigma)) || (track.pt() > fNucleiTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaHe() * track.tpcNSigmaHe() + tofNsigma * tofNsigma) > fNucleiNsigma))) return false; - if (track.pt() > fNucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaHe()) > fNucleiTPCnsigHighCF) + if (!singleSpeciesTPCNSigma(track, 3)) return false; - - registryData.fill(HIST("hTOFnsigmaNucleiCF"), track.pt(), track.tofNSigmaHe()); - - // TOF - if (track.hasTOF()) { - if (track.pt() > fNucleiTPCTOFpT && TMath::Abs(track.tofNSigmaHe()) > fNucleiTOFnsigCF) - return false; - } } else { // for yields // DCA if (TMath::Abs(track.dcaXY()) > fNucleiDCAxyYield) @@ -548,6 +553,8 @@ struct AngularCorrelationsInJets { template bool isAntinucleus(const T& track, bool tightCuts) { + // if (doprocessMCRun3) + // return (track.mcParticle().pdgCode() == (fDeuteronAnalysis) ? -1000010020 : -1000020030); if (track.sign() > 0) return false; @@ -560,17 +567,13 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaAntinucleiCF"), track.pt(), track.tpcNSigmaDe()); - - // TPC - if (track.pt() < fAntinucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaDe()) > fAntinucleiTPCnsigLowCF) - return false; - if (track.pt() > fAntinucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaDe()) > fAntinucleiTPCnsigHighCF) - return false; - registryData.fill(HIST("hTOFnsigmaAntinucleiCF"), track.pt(), track.tofNSigmaDe()); - // TOF - if (track.pt() > fAntinucleiTPCTOFpT && TMath::Abs(track.tofNSigmaDe()) > fAntinucleiTOFnsigCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaDe() : 999; + if ((track.pt() < fAntinucleiTPCTOFpT && (TMath::Abs(track.tpcNSigmaDe()) > fAntinucleiNsigma)) || (track.pt() > fAntinucleiTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaDe() * track.tpcNSigmaDe() + tofNsigma * tofNsigma) > fAntinucleiNsigma))) + return false; + if (!singleSpeciesTPCNSigma(track, 2)) return false; } else { // for yields // DCA @@ -602,17 +605,13 @@ struct AngularCorrelationsInJets { return false; registryData.fill(HIST("hTPCnsigmaAntinucleiCF"), track.pt(), track.tpcNSigmaHe()); - - // TPC - if (track.pt() < fAntinucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaHe()) > fAntinucleiTPCnsigLowCF) - return false; - if (track.pt() > fAntinucleiTPCTOFpT && TMath::Abs(track.tpcNSigmaHe()) > fAntinucleiTPCnsigHighCF) - return false; - registryData.fill(HIST("hTOFnsigmaAntinucleiCF"), track.pt(), track.tofNSigmaHe()); - // TOF - if (track.pt() > fAntinucleiTPCTOFpT && TMath::Abs(track.tofNSigmaHe()) > fAntinucleiTOFnsigCF) + // nsigma + double tofNsigma = track.hasTOF() ? track.tofNSigmaHe() : 999; + if ((track.pt() < fAntinucleiTPCTOFpT && (TMath::Abs(track.tpcNSigmaHe()) > fAntinucleiNsigma)) || (track.pt() > fAntinucleiTPCTOFpT && (TMath::Sqrt(track.tpcNSigmaHe() * track.tpcNSigmaHe() + tofNsigma * tofNsigma) > fAntinucleiNsigma))) + return false; + if (!singleSpeciesTPCNSigma(track, 3)) return false; } else { // for yields // DCA @@ -640,7 +639,7 @@ struct AngularCorrelationsInJets { return true; } - void setTrackBuffer(const auto& tempBuffer, auto& buffer) + void setTrackBuffer(const auto& tempBuffer, auto& buffer) // refresh track buffer { for (const auto& pair : tempBuffer) { if (static_cast(buffer.size()) == fBufferSize) { @@ -652,7 +651,7 @@ struct AngularCorrelationsInJets { } } - void fillMixedEventDeltas(const auto& track, const auto& buffer, int particleType, const TVector3 jetAxis) + void fillMixedEventDeltas(const auto& track, const auto& buffer, int particleType, const TVector3 jetAxis) // correlate tracks from current event with tracks from buffer, i.e. other events { if (buffer.size() == 0) return; @@ -876,7 +875,7 @@ struct AngularCorrelationsInJets { if (Delta > maxRadius) maxRadius = Delta; } - registryQA.fill(HIST("hMaxRadiusVsPt"), jet.pt(), maxRadius); // no entries - weird! + registryQA.fill(HIST("hMaxRadiusVsPt"), jet.pt(), maxRadius); // QA for comparison with nuclei_in_jets TVector3 pJet(0., 0., 0.); @@ -978,6 +977,7 @@ struct AngularCorrelationsInJets { continue; if (isProton(jetParticle, false)) { // collect protons in jet registryData.fill(HIST("hPtJetProton"), jetParticle.pt()); + registryQA.fill(HIST("hPtJetProtonVsTotalJet"), jetParticle.pt(), subtractedJetPerp.pt()); if (subtractedJetPerp.pt() < 15) { registryQA.fill(HIST("hPtJetProton_15"), jetParticle.pt()); } else if (subtractedJetPerp.pt() < 20) { @@ -987,8 +987,6 @@ struct AngularCorrelationsInJets { } else if (subtractedJetPerp.pt() < 50) { registryQA.fill(HIST("hPtJetProton_50"), jetParticle.pt()); } - if (jetParticle.hasTOF()) - registryData.fill(HIST("hTOFnsigmaProton"), jetParticle.pt(), jetParticle.tofNSigmaPr()); registryData.fill(HIST("hTrackProtocol"), 4); // # protons if (isProton(jetParticle, true)) { registryData.fill(HIST("hTrackProtocol"), 5); // # high purity protons @@ -997,6 +995,7 @@ struct AngularCorrelationsInJets { } } else if (isAntiproton(jetParticle, false)) { // collect antiprotons in jet registryData.fill(HIST("hPtJetAntiproton"), jetParticle.pt()); + registryQA.fill(HIST("hPtJetAntiprotonVsTotalJet"), jetParticle.pt(), subtractedJetPerp.pt()); if (subtractedJetPerp.pt() < 15) { registryQA.fill(HIST("hPtJetAntiproton_15"), jetParticle.pt()); } else if (subtractedJetPerp.pt() < 20) { @@ -1006,9 +1005,6 @@ struct AngularCorrelationsInJets { } else if (subtractedJetPerp.pt() < 50) { registryQA.fill(HIST("hPtJetAntiproton_50"), jetParticle.pt()); } - registryData.fill(HIST("hTPCnsigmaAntiproton"), jetParticle.pt(), jetParticle.tpcNSigmaPr()); - if (jetParticle.hasTOF()) - registryData.fill(HIST("hTOFnsigmaAntiproton"), jetParticle.pt(), jetParticle.tofNSigmaPr()); registryData.fill(HIST("hTrackProtocol"), 6); // # antiprotons if (isAntiproton(jetParticle, true)) { registryData.fill(HIST("hTrackProtocol"), 7); // # high purity antiprotons @@ -1017,6 +1013,7 @@ struct AngularCorrelationsInJets { } } else if (isNucleus(jetParticle, false)) { // collect nuclei in jet registryData.fill(HIST("hPtJetNuclei"), jetParticle.pt()); + registryQA.fill(HIST("hPtJetNucleiVsTotalJet"), jetParticle.pt(), subtractedJetPerp.pt()); if (subtractedJetPerp.pt() < 15) { registryQA.fill(HIST("hPtJetNuclei_15"), jetParticle.pt()); } else if (subtractedJetPerp.pt() < 20) { @@ -1026,18 +1023,6 @@ struct AngularCorrelationsInJets { } else if (subtractedJetPerp.pt() < 50) { registryQA.fill(HIST("hPtJetNuclei_50"), jetParticle.pt()); } - if (fDeuteronAnalysis) { - registryData.fill(HIST("hTPCnsigmaNuclei"), jetParticle.pt(), jetParticle.tpcNSigmaDe()); - } else { - registryData.fill(HIST("hTPCnsigmaNuclei"), jetParticle.pt(), jetParticle.tpcNSigmaHe()); - } - if (jetParticle.hasTOF()) { - if (fDeuteronAnalysis) { - registryData.fill(HIST("hTOFnsigmaNuclei"), jetParticle.pt(), jetParticle.tofNSigmaDe()); - } else { - registryData.fill(HIST("hTOFnsigmaNuclei"), jetParticle.pt(), jetParticle.tofNSigmaHe()); - } - } registryData.fill(HIST("hTrackProtocol"), 8); // # nuclei if (isNucleus(jetParticle, true)) { registryData.fill(HIST("hTrackProtocol"), 9); // # high purity nuclei @@ -1046,6 +1031,7 @@ struct AngularCorrelationsInJets { } } else if (isAntinucleus(jetParticle, false)) { registryData.fill(HIST("hPtJetAntinuclei"), jetParticle.pt()); + registryQA.fill(HIST("hPtJetAntinucleiVsTotalJet"), jetParticle.pt(), subtractedJetPerp.pt()); if (subtractedJetPerp.pt() < 15) { registryQA.fill(HIST("hPtJetAntinuclei_15"), jetParticle.pt()); } else if (subtractedJetPerp.pt() < 20) { @@ -1055,18 +1041,6 @@ struct AngularCorrelationsInJets { } else if (subtractedJetPerp.pt() < 50) { registryQA.fill(HIST("hPtJetAntinuclei_50"), jetParticle.pt()); } - if (fDeuteronAnalysis) { - registryData.fill(HIST("hTPCnsigmaAntinuclei"), jetParticle.pt(), jetParticle.tpcNSigmaDe()); - } else { - registryData.fill(HIST("hTPCnsigmaAntinuclei"), jetParticle.pt(), jetParticle.tpcNSigmaHe()); - } - if (jetParticle.hasTOF()) { - if (fDeuteronAnalysis) { - registryData.fill(HIST("hTOFnsigmaAntinuclei"), jetParticle.pt(), jetParticle.tofNSigmaDe()); - } else { - registryData.fill(HIST("hTOFnsigmaAntinuclei"), jetParticle.pt(), jetParticle.tofNSigmaHe()); - } - } registryData.fill(HIST("hTrackProtocol"), 10); // # antinuclei if (isAntinucleus(jetParticle, true)) { registryData.fill(HIST("hTrackProtocol"), 11); // # high purity antinuclei @@ -1144,10 +1118,6 @@ struct AngularCorrelationsInJets { mass = 0.139; } - // if (track.pt() > fMinLeadingPt) { - // leadingID = track.globalIndex(); - // } - if (track.tpcNClsFindable() != 0) { registryQA.fill(HIST("hRatioCrossedRowsTPC"), track.pt(), track.tpcNClsCrossedRows() / track.tpcNClsFindable()); } @@ -1246,6 +1216,24 @@ struct AngularCorrelationsInJets { } } PROCESS_SWITCH(AngularCorrelationsInJets, processRun3, "process Run 3 data", false); + + // void processMCRun3(McCollisions const& collisions, soa::Filtered const& tracks) + // { + // for (const auto& collision : collisions) { + // registryMC.fill(HIST("hEventProtocol"), 0); + // if (!collision.sel8()) + // continue; + // registryMC.fill(HIST("hNumberOfEvents"), 0); + // registryMC.fill(HIST("hEventProtocol"), 1); + // if (TMath::Abs(collision.posZ()) > fZVtx) + // continue; + + // auto slicedTracks = tracks.sliceBy(perCollisionMcTracksRun3, collision.globalIndex()); + + // fillHistograms(slicedTracks); + // } + // } + // PROCESS_SWITCH(AngularCorrelationsInJets, processMCRun3, "process Run 3 MC", false); }; WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)