From c00e9301e541f5d478ec8399a810457301e96b11 Mon Sep 17 00:00:00 2001 From: mariafernandatorrescabrera Date: Wed, 20 May 2026 16:20:00 -0600 Subject: [PATCH 1/2] Fix PID assignment in Xic0 and Omegac0 candidate creator --- .../candidateCreatorXic0Omegac0.cxx | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx b/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx index b2f6980d93f..2b38c9fcf4f 100644 --- a/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx +++ b/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx @@ -96,6 +96,26 @@ enum McMatchFlag : uint8_t { V0Unmatched }; +// Convert the KFParticle PDG code to the O2 track PID enum needed by getTrackParCovFromKFP() +o2::track::PID getTrackPIDFromPDG(const int pdg) +{ + switch (std::abs(pdg)) { + case 211: + return o2::track::PID::Pion; + case 321: + return o2::track::PID::Kaon; + case 2212: + return o2::track::PID::Proton; + case 3312: + return o2::track::PID::XiMinus; + case 3334: + return o2::track::PID::OmegaMinus; + default: + LOGF(fatal, "Unsupported PDG code %d in getTrackPIDFromPDG()", pdg); + return static_cast(-1); + } +} + // Reconstruction of omegac0 and xic0 candidates struct HfCandidateCreatorXic0Omegac0 { Produces rowCandToXiPi; @@ -959,12 +979,16 @@ struct HfCandidateCreatorXic0Omegac0 { omegaDauChargedTrackParCov = getTrackParCovFromKFP(kfBachKaonToOmega, o2::track::PID::Kaon, bachCharge); // Cascade bach kaon omegaDauChargedTrackParCov.setAbsCharge(1); - o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfOmegaToOmegaC, kfOmegaToOmegaC.GetPDG(), bachCharge); + auto pidCasc = getTrackPIDFromPDG(kfOmegaToOmegaC.GetPDG()); + o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfOmegaToOmegaC, pidCasc, bachCharge); trackCasc.setAbsCharge(1); - trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, kfPos.GetPDG(), 1); // V0 postive daughter + auto pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); + trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, pidV0Dau0, +1); // V0 postive daughter trackParCovV0Dau0.setAbsCharge(1); - trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, kfNeg.GetPDG(), -1); // V0 negtive daughter + + auto pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); + trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, pidV0Dau1, -1); // V0 negative daughter trackParCovV0Dau1.setAbsCharge(1); //-------------------------- V0 info--------------------------- @@ -1452,12 +1476,17 @@ struct HfCandidateCreatorXic0Omegac0 { xiDauChargedTrackParCov = getTrackParCovFromKFP(kfBachPionToXi, o2::track::PID::Pion, bachCharge); // Cascade bach pion xiDauChargedTrackParCov.setAbsCharge(1); - o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfXiToXiC, kfXiToXiC.GetPDG(), bachCharge); + + auto pidCasc = getTrackPIDFromPDG(kfXiToXiC.GetPDG()); + o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfXiToXiC, pidCasc, bachCharge); trackCasc.setAbsCharge(1); - trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, kfPos.GetPDG(), 1); // V0 postive daughter + auto pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); + trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, pidV0Dau0, +1); // V0 postive daughter trackParCovV0Dau0.setAbsCharge(1); - trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, kfNeg.GetPDG(), -1); // V0 negtive daughter + + auto pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); + trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, pidV0Dau1, -1); // V0 negative daughter trackParCovV0Dau1.setAbsCharge(1); //-------------------------- V0 info--------------------------- From 9dc3218dd8516dbb6ed86fa4de40878134c9ebe5 Mon Sep 17 00:00:00 2001 From: mariafernandatorrescabrera Date: Fri, 22 May 2026 09:54:36 -0600 Subject: [PATCH 2/2] Fix PID assignment in Xic0 and Omegac0 candidate creator --- .../candidateCreatorXic0Omegac0.cxx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx b/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx index 2b38c9fcf4f..14770e6743d 100644 --- a/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx +++ b/PWGHF/TableProducer/candidateCreatorXic0Omegac0.cxx @@ -97,7 +97,7 @@ enum McMatchFlag : uint8_t { }; // Convert the KFParticle PDG code to the O2 track PID enum needed by getTrackParCovFromKFP() -o2::track::PID getTrackPIDFromPDG(const int pdg) +o2::track::PID::ID getTrackPIDFromPDG(const int pdg) { switch (std::abs(pdg)) { case 211: @@ -106,13 +106,15 @@ o2::track::PID getTrackPIDFromPDG(const int pdg) return o2::track::PID::Kaon; case 2212: return o2::track::PID::Proton; + case 3122: + return o2::track::PID::Lambda; case 3312: return o2::track::PID::XiMinus; case 3334: return o2::track::PID::OmegaMinus; default: LOGF(fatal, "Unsupported PDG code %d in getTrackPIDFromPDG()", pdg); - return static_cast(-1); + return o2::track::PID::Pion; } } @@ -979,15 +981,15 @@ struct HfCandidateCreatorXic0Omegac0 { omegaDauChargedTrackParCov = getTrackParCovFromKFP(kfBachKaonToOmega, o2::track::PID::Kaon, bachCharge); // Cascade bach kaon omegaDauChargedTrackParCov.setAbsCharge(1); - auto pidCasc = getTrackPIDFromPDG(kfOmegaToOmegaC.GetPDG()); + o2::track::PID::ID pidCasc = getTrackPIDFromPDG(kfOmegaToOmegaC.GetPDG()); o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfOmegaToOmegaC, pidCasc, bachCharge); trackCasc.setAbsCharge(1); - auto pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); + o2::track::PID::ID pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, pidV0Dau0, +1); // V0 postive daughter trackParCovV0Dau0.setAbsCharge(1); - auto pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); + o2::track::PID::ID pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, pidV0Dau1, -1); // V0 negative daughter trackParCovV0Dau1.setAbsCharge(1); @@ -1477,15 +1479,15 @@ struct HfCandidateCreatorXic0Omegac0 { xiDauChargedTrackParCov = getTrackParCovFromKFP(kfBachPionToXi, o2::track::PID::Pion, bachCharge); // Cascade bach pion xiDauChargedTrackParCov.setAbsCharge(1); - auto pidCasc = getTrackPIDFromPDG(kfXiToXiC.GetPDG()); + o2::track::PID::ID pidCasc = getTrackPIDFromPDG(kfXiToXiC.GetPDG()); o2::track::TrackParCov trackCasc = getTrackParCovFromKFP(kfXiToXiC, pidCasc, bachCharge); trackCasc.setAbsCharge(1); - auto pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); + o2::track::PID::ID pidV0Dau0 = getTrackPIDFromPDG(kfPos.GetPDG()); trackParCovV0Dau0 = getTrackParCovFromKFP(kfPos, pidV0Dau0, +1); // V0 postive daughter trackParCovV0Dau0.setAbsCharge(1); - auto pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); + o2::track::PID::ID pidV0Dau1 = getTrackPIDFromPDG(kfNeg.GetPDG()); trackParCovV0Dau1 = getTrackParCovFromKFP(kfNeg, pidV0Dau1, -1); // V0 negative daughter trackParCovV0Dau1.setAbsCharge(1);