Skip to content

Commit d0626ee

Browse files
minjungkim12claude
andcommitted
Add Filter for D0 hfflag check similar to taskDplus
Following the pattern used in taskDplus, add a Filter to automatically filter D0 candidates by decay type flag at the framework level. Changes: 1. Add Filter filterD0Flag to check hfflag for D0ToPiK decay type 2. Wrap all D0 candidate types with soa::Filtered<> to apply the filter 3. Remove manual hfflag check in UPC process loop (now redundant) This ensures the hfflag filtering is applied consistently across all process functions and removes the need for manual checks in loops. The Filter is placed after using declarations and before Preslice declarations, following PWGHF struct member ordering guidelines. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 22d9e2f commit d0626ee

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

PWGHF/D2H/Tasks/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ o2physics_add_dpl_workflow(task-charm-reso-to-d-trk-reduced
7171

7272
o2physics_add_dpl_workflow(task-d0
7373
SOURCES taskD0.cxx
74-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::AnalysisCCDB O2Physics::SGCutParHolder O2Physics::EventFilteringUtils
74+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::AnalysisCCDB
7575
COMPONENT_NAME Analysis)
7676

7777
o2physics_add_dpl_workflow(task-directed-flow-charm-hadrons
@@ -81,7 +81,7 @@ o2physics_add_dpl_workflow(task-directed-flow-charm-hadrons
8181

8282
o2physics_add_dpl_workflow(task-dplus
8383
SOURCES taskDplus.cxx
84-
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::SGCutParHolder O2Physics::EventFilteringUtils
84+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore
8585
COMPONENT_NAME Analysis)
8686

8787
o2physics_add_dpl_workflow(task-ds

PWGHF/D2H/Tasks/taskD0.cxx

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -105,22 +105,24 @@ struct HfTaskD0 {
105105
SliceCache cache;
106106
Service<o2::ccdb::BasicCCDBManager> ccdb;
107107

108-
using D0Candidates = soa::Join<aod::HfCand2Prong, aod::HfSelD0>;
109-
using D0CandidatesMc = soa::Join<D0Candidates, aod::HfCand2ProngMcRec>;
110-
using D0CandidatesKF = soa::Join<D0Candidates, aod::HfCand2ProngKF>;
111-
using D0CandidatesMcKF = soa::Join<D0CandidatesKF, aod::HfCand2ProngMcRec>;
108+
using D0Candidates = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0>>;
109+
using D0CandidatesMc = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngMcRec>>;
110+
using D0CandidatesKF = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngKF>>;
111+
using D0CandidatesMcKF = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfCand2ProngKF, aod::HfCand2ProngMcRec>>;
112112

113-
using D0CandidatesMl = soa::Join<D0Candidates, aod::HfMlD0>;
114-
using D0CandidatesMlMc = soa::Join<D0CandidatesMl, aod::HfCand2ProngMcRec>;
115-
using D0CandidatesMlKF = soa::Join<D0CandidatesMl, aod::HfCand2ProngKF>;
116-
using D0CandidatesMlMcKF = soa::Join<D0CandidatesMlKF, aod::HfCand2ProngMcRec>;
113+
using D0CandidatesMl = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0>>;
114+
using D0CandidatesMlMc = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0, aod::HfCand2ProngMcRec>>;
115+
using D0CandidatesMlKF = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0, aod::HfCand2ProngKF>>;
116+
using D0CandidatesMlMcKF = soa::Filtered<soa::Join<aod::HfCand2Prong, aod::HfSelD0, aod::HfMlD0, aod::HfCand2ProngKF, aod::HfCand2ProngMcRec>>;
117117

118118
using Collisions = soa::Join<aod::Collisions, aod::EvSels>;
119119
using CollisionsCent = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs>;
120120
using CollisionsWithMcLabels = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels>;
121121
using CollisionsWithMcLabelsCent = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Ms, aod::CentFT0Cs>;
122122
using TracksSelQuality = soa::Join<aod::TracksExtra, aod::TracksWMc>;
123123

124+
Filter filterD0Flag = (o2::aod::hf_track_index::hfflag & static_cast<uint8_t>(BIT(aod::hf_cand_2prong::DecayType::D0ToPiK))) != static_cast<uint8_t>(0);
125+
124126
Preslice<aod::HfCand2Prong> candD0PerCollision = aod::hf_cand::collisionId;
125127
PresliceUnsorted<CollisionsWithMcLabels> colPerMcCollision = aod::mccollisionlabel::mcCollisionId;
126128
PresliceUnsorted<CollisionsWithMcLabelsCent> colPerMcCollisionCent = aod::mccollisionlabel::mcCollisionId;
@@ -625,9 +627,6 @@ struct HfTaskD0 {
625627
float occ{-1.f};
626628

627629
for (const auto& candidate : groupedD0Candidates) {
628-
if (!(candidate.hfflag() & 1 << aod::hf_cand_2prong::DecayType::D0ToPiK)) {
629-
continue;
630-
}
631630
if (yCandRecoMax >= 0. && std::abs(HfHelper::yD0(candidate)) > yCandRecoMax) {
632631
continue;
633632
}

0 commit comments

Comments
 (0)