From bfd6a9c14cd2a691c1c4daf924f820df83e17294 Mon Sep 17 00:00:00 2001 From: Monalisa Melo Date: Sun, 12 Jul 2026 22:59:32 +0200 Subject: [PATCH 1/3] [PWGJE] Fix Ds MC jet matching and apply filtered jet tables --- PWGJE/Tasks/jetDsSpecSubs.cxx | 43 +++++++++++++---------------------- 1 file changed, 16 insertions(+), 27 deletions(-) diff --git a/PWGJE/Tasks/jetDsSpecSubs.cxx b/PWGJE/Tasks/jetDsSpecSubs.cxx index 6189fd60e1f..9195cee0275 100644 --- a/PWGJE/Tasks/jetDsSpecSubs.cxx +++ b/PWGJE/Tasks/jetDsSpecSubs.cxx @@ -75,7 +75,7 @@ struct JetDsSpecSubs { using DsDataJets = soa::Join; using DsMCDJets = soa::Join; - using DsMCPJets = soa::Join; + using DsMCPJets = soa::Join; // Slices for access to proper HF MCD jet collision that is associated to MCCollision PresliceUnsorted collisionsPerMCCollisionPreslice = aod::jmccollisionlb::mcCollisionId; @@ -96,9 +96,14 @@ struct JetDsSpecSubs { static constexpr float epsilon = 1.e-6f; // Filters - // Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * 100.0f); + Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * 100.0f); // Filter collisionFilter = nabs(aod::jcollision::posZ) < vertexZCut; + // Filtered jet tables + using FilteredDsDataJets = soa::Filtered; + using FilteredDsMCDJets = soa::Filtered; + using FilteredDsMCPJets = soa::Filtered; + //============= // Histograms //============= @@ -293,7 +298,7 @@ struct JetDsSpecSubs { // DATA process //============== - void processDataChargedSubstructure(aod::JetCollision const& collision, soa::Join const& jets, + void processDataChargedSubstructure(aod::JetCollision const& collision, FilteredDsDataJets const& jets, aod::CandidatesDsData const&, aod::JetTracks const&) { registry.fill(HIST("h_collision_counter_data"), 2.0); @@ -306,10 +311,6 @@ struct JetDsSpecSubs { registry.fill(HIST("h_collision_counter_data"), 3.0); for (const auto& jet : jets) { - const float jetRadius = jet.r() / 100.f; - if (std::abs(jetRadius - jetR.value) > epsilon) { - continue; - } registry.fill(HIST("h_dsjet_counter_data"), 0.5); // DsChargedJets entries registry.fill(HIST("h_jet_pt_data"), jet.pt()); @@ -395,8 +396,8 @@ struct JetDsSpecSubs { MCPJetsPerMCCollissionPreslice const& jetmcppreslice, aod::JetMcCollisions const& mccollisions, aod::JetCollisionsMCD const& collisions, - DsMCDJets const& mcdjets, - DsMCPJets const& mcpjets, + FilteredDsMCDJets const& mcdjets, + FilteredDsMCPJets const& mcpjets, DsCandidatesMCD const& /*mcdCandidates*/, DsCandidatesMCP const& /*mcpCandidates*/, aod::JetTracks const& tracks) @@ -430,10 +431,6 @@ struct JetDsSpecSubs { // Detector-level Ds-tagged jets associated with the current reconstructed collision const auto dsmcdJetsPerCollision = mcdjets.sliceBy(jetmcdpreslice, collision.globalIndex()); for (const auto& mcdjet : dsmcdJetsPerCollision) { - const float mcdjetRadius = mcdjet.r() / 100.f; - if (std::abs(mcdjetRadius - jetR.value) > epsilon) { - continue; - } // Detector-level jet found in a matched collision registry.fill(HIST("McEffJet"), getValFromBin(BinMCJetCntr::DetectorLevelJetInMCCollision)); @@ -441,11 +438,7 @@ struct JetDsSpecSubs { auto mcdDscand = mcdjet.template candidates_first_as(); // Check if it's prompt - int origin = 0; - - if (mcdDscand.originMcRec() != RecoDecay::OriginType::Prompt) { - origin = 1; - } + int origin = (mcdDscand.originMcRec() != RecoDecay::OriginType::Prompt) ? 1 : 0; // Check whether a matched particle-level jet exists if (mcdjet.has_matchedJetCand()) { @@ -488,10 +481,6 @@ struct JetDsSpecSubs { // Particle level const auto dsmcpJetsPerMCCollision = mcpjets.sliceBy(jetmcppreslice, mccollision.globalIndex()); for (const auto& mcpjet : dsmcpJetsPerMCCollision) { - const float mcpjetRadius = mcpjet.r() / 100.f; - if (std::abs(mcpjetRadius - jetR.value) > epsilon) { - continue; - } registry.fill(HIST("McEffJet"), getValFromBin(BinMCJetCntr::ParticleLevelJetInMCCollision)); @@ -538,16 +527,16 @@ struct JetDsSpecSubs { void processMonteCarloEfficiencyDs(aod::JetMcCollisions const& mccollisions, aod::JetCollisionsMCD const& collisions, - DsMCDJets const& mcdjets, - DsMCPJets const& mcpjets, + FilteredDsMCDJets const& mcdjets, + FilteredDsMCPJets const& mcpjets, DsCandidatesMCD const& mcdDscand, DsCandidatesMCP const& mcpDscand, aod::JetTracks const& jettracks) { analyseMonteCarloEfficiency, Preslice, - DsMCDJets, - DsMCPJets, + FilteredDsMCDJets, + FilteredDsMCPJets, DsCandidatesMCD, DsCandidatesMCP>(dsMCDJetsPerEXPCollisionPreslice, dsMCPJetsPerMCCollisionPreslice, @@ -564,4 +553,4 @@ struct JetDsSpecSubs { WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask(cfgc)}; -} +} \ No newline at end of file From 5251f843d794993e66dd63fff365e74ece18fcc0 Mon Sep 17 00:00:00 2001 From: Monalisa Melo Date: Sun, 12 Jul 2026 23:08:41 +0200 Subject: [PATCH 2/3] [PWGJE] Add missing newline at end of jetDsSpecSubs.cxx --- PWGJE/Tasks/jetDsSpecSubs.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PWGJE/Tasks/jetDsSpecSubs.cxx b/PWGJE/Tasks/jetDsSpecSubs.cxx index 9195cee0275..d5c04d0a1a4 100644 --- a/PWGJE/Tasks/jetDsSpecSubs.cxx +++ b/PWGJE/Tasks/jetDsSpecSubs.cxx @@ -553,4 +553,4 @@ struct JetDsSpecSubs { WorkflowSpec defineDataProcessing(ConfigContext const& cfgc) { return WorkflowSpec{adaptAnalysisTask(cfgc)}; -} \ No newline at end of file +} From 7fcad12fc44db2670247e3f54ab9f7c0d9f27de0 Mon Sep 17 00:00:00 2001 From: Monalisa Melo Date: Sun, 12 Jul 2026 23:17:17 +0200 Subject: [PATCH 3/3] [PWGJE] Remove unused constant --- PWGJE/Tasks/jetDsSpecSubs.cxx | 1 - 1 file changed, 1 deletion(-) diff --git a/PWGJE/Tasks/jetDsSpecSubs.cxx b/PWGJE/Tasks/jetDsSpecSubs.cxx index d5c04d0a1a4..c088dfb6437 100644 --- a/PWGJE/Tasks/jetDsSpecSubs.cxx +++ b/PWGJE/Tasks/jetDsSpecSubs.cxx @@ -94,7 +94,6 @@ struct JetDsSpecSubs { std::vector eventSelectionBits; int trackSelection = -1; - static constexpr float epsilon = 1.e-6f; // Filters Filter jetCuts = aod::jet::pt > jetPtMin&& aod::jet::r == nround(jetR.node() * 100.0f); // Filter collisionFilter = nabs(aod::jcollision::posZ) < vertexZCut;