From 16a2de41557175863ef300c72796bf427411f217 Mon Sep 17 00:00:00 2001 From: dajones2 Date: Thu, 4 Dec 2025 15:25:04 +0000 Subject: [PATCH 1/3] PWGJE: Consistency between inclusive and recoil response --- PWGJE/Tasks/jetHadronRecoil.cxx | 132 ++++++++++++++++++++------------ 1 file changed, 82 insertions(+), 50 deletions(-) diff --git a/PWGJE/Tasks/jetHadronRecoil.cxx b/PWGJE/Tasks/jetHadronRecoil.cxx index 259d35ef33b..608e7c0b8c1 100644 --- a/PWGJE/Tasks/jetHadronRecoil.cxx +++ b/PWGJE/Tasks/jetHadronRecoil.cxx @@ -202,15 +202,15 @@ struct JetHadronRecoil { } if (doprocessJetsMCPMCDMatched || doprocessJetsMCPMCDMatchedWithRhoSubtraction || doprocessJetsMCPMCDMatchedWeighted || doprocessJetsMCPMCDMatchedWeightedWithRhoSubtraction || doprocessRecoilJetsMCPMCDMatched || doprocessRecoilJetsMCPMCDMatchedWeighted || doprocessRecoilJetsMCPMCDMatchedWeightedWithRhoSubtraction) { - registry.add("hPtMatched", "p_{T} matching;p_{T,det};p_{T,part}", {HistType::kTH2F, {{500, -100, 400}, {400, 0, 400}}}, doSumw); - registry.add("hPhiMatched", "#phi matching;#phi_{det};#phi_{part}", {HistType::kTH2F, {{100, 0.0, o2::constants::math::TwoPI}, {100, 0.0, o2::constants::math::TwoPI}}}, doSumw); - registry.add("hPhiMatched2d", "#phi matching 2d;#phi;p_{T}", {HistType::kTH2F, {{100, 0.0, o2::constants::math::TwoPI}, {400, 0, 400}}}, doSumw); + registry.add("hPtMatched", "p_{T} matching;p_{T,det};p_{T,part}", {HistType::kTH2F, {ptAxisDet, ptAxisPart}}, doSumw); + registry.add("hPhiMatched", "#phi matching;#phi_{det};#phi_{part}", {HistType::kTH2F, {phiAxisDet, phiAxisPart}}, doSumw); + registry.add("hPhiMatched2d", "#phi matching 2d;#phi;p_{T}", {HistType::kTH2F, {phiAxisPart, ptAxisPart}}, doSumw); registry.add("hDeltaRMatched", "#DeltaR matching;#DeltaR_{det};#DeltaR_{part}", {HistType::kTH2F, {dRAxisDet, dRAxisPart}}, doSumw); registry.add("hPtMatched1d", "p_{T} matching 1d;p_{T,part}", {HistType::kTH1F, {{400, 0, 400}}}, doSumw); registry.add("hDeltaRMatched1d", "#DeltaR matching 1d;#DeltaR_{part}", {HistType::kTH1F, {dRAxisPart}}, doSumw); - registry.add("hPtResolution", "p_{T} resolution;p_{T,part};Relative Resolution", {HistType::kTH2F, {{400, 0, 400}, {1000, -5.0, 5.0}}}, doSumw); - registry.add("hPhiResolution", "#phi resolution;#p_{T,part};Resolution", {HistType::kTH2F, {{400, 0, 400}, {1000, -7.0, 7.0}}}, doSumw); - registry.add("hDeltaRResolution", "#DeltaR Resolution;p_{T,part};Resolution", {HistType::kTH2F, {{400, 0, 400}, {1000, -0.15, 0.15}}}, doSumw); + registry.add("hPtResolution", "p_{T} resolution;p_{T,part};Relative Resolution", {HistType::kTH2F, {ptAxisPart, {100, -5.0, 5.0}}}, doSumw); + registry.add("hPhiResolution", "#phi resolution;#p_{T,part};Resolution", {HistType::kTH2F, {ptAxisPart, {100, -7.0, 7.0}}}, doSumw); + registry.add("hDeltaRResolution", "#DeltaR Resolution;p_{T,part};Resolution", {HistType::kTH2F, {ptAxisPart, {100, -0.15, 0.15}}}, doSumw); registry.add("hFullMatching", "Full 6D matching;p_{T,det};p_{T,part};#phi_{det};#phi_{part};#DeltaR_{det};#DeltaR_{part}", {HistType::kTHnSparseD, {ptAxisDet, ptAxisPart, phiAxisDet, phiAxisPart, dRAxisDet, dRAxisPart}}, doSumw); } } @@ -614,11 +614,11 @@ struct JetHadronRecoil { } template - void fillMatchedHistograms(T const& jetsBase, U const&, X const& tracks, Y const& particles, float weight = 1.0, float rho = 0.0, float pTHat = 999.0) + void fillMatchedHistograms(T const&, U const& jetsTag, X const& tracks, Y const& particles, float weight = 1.0, float rho = 0.0, float pTHat = 999.0) { - for (const auto& jetBase : jetsBase) { + for (const auto& jetTag : jetsTag) { - if (jetBase.pt() > pTHatMaxMCD * pTHat) { + if (jetTag.pt() > pTHatMaxMCP * pTHat) { if (outlierRejectEvent) { return; } else { @@ -626,11 +626,11 @@ struct JetHadronRecoil { } } - double dR = getWTAaxisDifference(jetBase, tracks); + double dR = getWTAaxisDifference(jetTag, particles); - if (jetBase.has_matchedJetGeo()) { - for (const auto& jetTag : jetBase.template matchedJetGeo_as>()) { - if (jetTag.pt() > pTHatMaxMCP * pTHat) { + if (jetTag.has_matchedJetGeo() && jetTag.has_matchedJetPt()) { + for (const auto& jetBase : jetTag.template matchedJetGeo_as>()) { + if (jetBase.pt() > pTHatMaxMCD * pTHat) { if (outlierRejectEvent) { return; } else { @@ -638,7 +638,7 @@ struct JetHadronRecoil { } } - double dRp = getWTAaxisDifference(jetTag, particles); + double dRp = getWTAaxisDifference(jetBase, tracks); registry.fill(HIST("hPtMatched"), jetBase.pt() - (rho * jetBase.area()), jetTag.pt(), weight); registry.fill(HIST("hPhiMatched"), jetBase.phi(), jetTag.phi(), weight); @@ -923,98 +923,130 @@ struct JetHadronRecoil { } PROCESS_SWITCH(JetHadronRecoil, processMCPWeighted, "process MC particle level with event weights", false); - void processJetsMCPMCDMatched(soa::Filtered>::iterator const& collision, + void processJetsMCPMCDMatched(aod::JetMcCollisions::iterator const& mccollision, + soa::SmallGroups const& collisions, soa::Filtered> const& mcdjets, - aod::JetTracks const& tracks, - aod::JetParticles const& particles, - aod::JetMcCollisions const&, + soa::Filtered const& particles, + soa::Filtered const& tracks, soa::Filtered> const& mcpjets) { - if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + if (std::abs(mccollision.posZ()) > vertexZCut) { return; } - if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + if (skipMBGapEvents && mccollision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) { return; } - if (!collision.has_mcCollision()) { + if (mccollision.ptHard() < pTHatMinEvent) { return; } - if (collision.mcCollision().ptHard() < pTHatMinEvent) { + if (collisions.size() < 1) { return; } - registry.fill(HIST("hZvtxSelected"), collision.posZ()); + for (auto const& collision : collisions) { + if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + return; + } + if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + return; + } + } + registry.fill(HIST("hZvtxSelected"), mccollision.posZ()); fillMatchedHistograms(mcdjets, mcpjets, tracks, particles); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatched, "process MC matched (inc jets)", false); - void processJetsMCPMCDMatchedWithRhoSubtraction(soa::Filtered>::iterator const& collision, + void processJetsMCPMCDMatchedWithRhoSubtraction(soa::Join::iterator const& mccollision, + soa::SmallGroups const& collisions, soa::Filtered> const& mcdjets, - aod::JetTracks const& tracks, - aod::JetParticles const& particles, - aod::JetMcCollisions const&, + soa::Filtered const& tracks, + soa::Filtered const& particles, soa::Filtered> const& mcpjets) { - if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + if (std::abs(mccollision.posZ()) > vertexZCut) { return; } - if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + if (skipMBGapEvents && mccollision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) { return; } - if (!collision.has_mcCollision()) { + if (mccollision.ptHard() < pTHatMinEvent) { return; } - if (collision.mcCollision().ptHard() < pTHatMinEvent) { + if (collisions.size() < 1) { return; } - registry.fill(HIST("hZvtxSelected"), collision.posZ()); + for (auto const& collision : collisions) { + if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + return; + } + if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + return; + } + } + registry.fill(HIST("hZvtxSelected"), mccollision.posZ()); fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, 0.0, collision.mcCollision().ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWithRhoSubtraction, "process MC matched (inc jets) with rho subtraction", false); - void processJetsMCPMCDMatchedWeighted(soa::Filtered>::iterator const& collision, + void processJetsMCPMCDMatchedWeighted(aod::JetMcCollisions::iterator const& mccollision, + soa::SmallGroups const& collisions, soa::Filtered> const& mcdjets, - aod::JetTracks const& tracks, - aod::JetParticles const& particles, - aod::JetMcCollisions const&, + soa::Filtered const& tracks, + soa::Filtered const& particles, soa::Filtered> const& mcpjets) { - if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + if (std::abs(mccollision.posZ()) > vertexZCut) { return; } - if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + if (skipMBGapEvents && mccollision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) { return; } - if (!collision.has_mcCollision()) { + if (mccollision.ptHard() < pTHatMinEvent) { return; } - if (collision.mcCollision().ptHard() < pTHatMinEvent) { + if (collisions.size() < 1) { return; } - registry.fill(HIST("hZvtxSelected"), collision.posZ()); + for (auto const& collision : collisions) { + if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + return; + } + if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + return; + } + } + registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight()); fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), 0.0, collision.mcCollision().ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeighted, "process MC matched with event weights (inc jets)", false); - void processJetsMCPMCDMatchedWeightedWithRhoSubtraction(soa::Filtered>::iterator const& collision, + void processJetsMCPMCDMatchedWeightedWithRhoSubtraction(soa::Join::iterator const& mccollision, + soa::SmallGroups const& collisions, soa::Filtered> const& mcdjets, - aod::JetTracks const& tracks, - aod::JetParticles const& particles, - aod::JetMcCollisions const&, + soa::Filtered const& tracks, + soa::Filtered const& particles, soa::Filtered> const& mcpjets) { - if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + if (std::abs(mccollision.posZ()) > vertexZCut) { return; } - if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + if (skipMBGapEvents && mccollision.subGeneratorId() == jetderiveddatautilities::JCollisionSubGeneratorId::mbGap) { return; } - if (!collision.has_mcCollision()) { + if (mccollision.ptHard() < pTHatMinEvent) { return; } - if (collision.mcCollision().ptHard() < pTHatMinEvent) { + if (collisions.size() < 1) { return; } - registry.fill(HIST("hZvtxSelected"), collision.posZ()); + for (auto const& collision : collisions) { + if (!jetderiveddatautilities::selectCollision(collision, eventSelectionBits)) { + return; + } + if (!jetderiveddatautilities::selectTrigger(collision, triggerMaskBits)) { + return; + } + } + registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight()); fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), collision.rho(), collision.mcCollision().ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeightedWithRhoSubtraction, "process MC matched with event weights (inc jets) and rho subtraction", false); From 019e873b94ee429c097d36fd6a9c6a5803a6515e Mon Sep 17 00:00:00 2001 From: dajones2 Date: Thu, 4 Dec 2025 19:14:33 +0000 Subject: [PATCH 2/3] fixing bugs --- PWGJE/Tasks/jetHadronRecoil.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PWGJE/Tasks/jetHadronRecoil.cxx b/PWGJE/Tasks/jetHadronRecoil.cxx index 608e7c0b8c1..89de0285855 100644 --- a/PWGJE/Tasks/jetHadronRecoil.cxx +++ b/PWGJE/Tasks/jetHadronRecoil.cxx @@ -983,7 +983,7 @@ struct JetHadronRecoil { } } registry.fill(HIST("hZvtxSelected"), mccollision.posZ()); - fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, 0.0, collision.mcCollision().ptHard()); + fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, 1.0, 0.0, mccollision.ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWithRhoSubtraction, "process MC matched (inc jets) with rho subtraction", false); @@ -1015,7 +1015,7 @@ struct JetHadronRecoil { } } registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight()); - fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), 0.0, collision.mcCollision().ptHard()); + fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), 0.0, mccollision.ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeighted, "process MC matched with event weights (inc jets)", false); @@ -1047,7 +1047,7 @@ struct JetHadronRecoil { } } registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight()); - fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, collision.mcCollision().weight(), collision.rho(), collision.mcCollision().ptHard()); + fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), collision.rho(), mccollision.ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeightedWithRhoSubtraction, "process MC matched with event weights (inc jets) and rho subtraction", false); From 31a30230e4d1e0f192cd6fe8607d8144ac818654 Mon Sep 17 00:00:00 2001 From: dajones2 Date: Fri, 5 Dec 2025 15:04:48 +0000 Subject: [PATCH 3/3] fixing bugs --- PWGJE/Tasks/jetHadronRecoil.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGJE/Tasks/jetHadronRecoil.cxx b/PWGJE/Tasks/jetHadronRecoil.cxx index 89de0285855..0433e863ea2 100644 --- a/PWGJE/Tasks/jetHadronRecoil.cxx +++ b/PWGJE/Tasks/jetHadronRecoil.cxx @@ -1047,7 +1047,7 @@ struct JetHadronRecoil { } } registry.fill(HIST("hZvtxSelected"), mccollision.posZ(), mccollision.weight()); - fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), collision.rho(), mccollision.ptHard()); + fillMatchedHistograms(mcdjets, mcpjets, tracks, particles, mccollision.weight(), mccollision.rho(), mccollision.ptHard()); } PROCESS_SWITCH(JetHadronRecoil, processJetsMCPMCDMatchedWeightedWithRhoSubtraction, "process MC matched with event weights (inc jets) and rho subtraction", false);