From c160ff2925a334fe2ed4a45e7709ec253625d61f Mon Sep 17 00:00:00 2001 From: Marta Razza Date: Wed, 23 Sep 2026 17:43:00 +0200 Subject: [PATCH] PWGHF: add TPC pi/K/p veto study for TOF mismatch in deuteron-from-Lb task --- PWGHF/D2H/Tasks/taskDeuteronFromLb.cxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/PWGHF/D2H/Tasks/taskDeuteronFromLb.cxx b/PWGHF/D2H/Tasks/taskDeuteronFromLb.cxx index c54acf42d0e..d50ee5c5c1b 100644 --- a/PWGHF/D2H/Tasks/taskDeuteronFromLb.cxx +++ b/PWGHF/D2H/Tasks/taskDeuteronFromLb.cxx @@ -88,7 +88,7 @@ struct HfTaskDeuteronFromLb { using CollisionCandidates = o2::soa::Join; using MCTrackCandidates = o2::soa::Join; using MCCollisionCandidates = o2::soa::Join; - using TrackCandidates = o2::soa::Join; + using TrackCandidates = o2::soa::Join; Preslice trackIndicesPerCollision = o2::aod::track_association::collisionId; @@ -139,6 +139,7 @@ struct HfTaskDeuteronFromLb { qaHistos.add("Data/etaAntideuteron", "etaAntideuteron", {HistType::kTH1F, {{100, -1.0f, 1.0f, "eta #bar{d}"}}}); qaHistos.add("Data/hVtxZ", "Z-Vertex distribution after selection;Z (cm)", HistType::kTH1F, {{100, -50, 50}}); qaHistos.add("Data/hnSigmaTOFVsPtPurity", "n#sigma TOF vs p_{T} for #bar{d} hypothesis for Data-driven purity check; p_{T} (GeV/c); n#sigma TOF", {HistType::kTH2D, {ptAxis, nSigmaAxis}}); + qaHistos.add("Data/hnSigmaTOFVsPtPurityVeto", "n#sigma TOF vs p_{T} for #bar{d} hypothesis for Data-driven purity check with TPC veto for pi,K,p; p_{T} (GeV/c); n#sigma TOF", {HistType::kTH2D, {ptAxis, nSigmaAxis}}); qaHistos.add("Data/hnSigmaTPCVsPtPurity", "n#sigma TPC vs p_{T} for #bar{d} hypothesis for Data-driven purity check; p_{T} (GeV/c); n#sigma TPC", {HistType::kTH2D, {ptAxis, nSigmaAxis}}); qaHistos.add("Data/hnSigmaITSVsPt", "n#sigma ITS vs p_{T} for #bar{d} hypothesis, used to clean up the TPC/TOF purity sample; p_{T} (GeV/c); n#sigma ITS", {HistType::kTH2D, {ptAxis, nSigmaAxis}}); // MC generated-level histograms @@ -295,6 +296,11 @@ struct HfTaskDeuteronFromLb { qaHistos.fill(HIST("Data/hnSigmaITSVsPt"), track.pt(), track.itsNSigmaDe()); + const bool isTPCDeClean = isTPCDe && + std::abs(track.tpcNSigmaPi()) > cfgTPCNsigma && + std::abs(track.tpcNSigmaKa()) > cfgTPCNsigma && + std::abs(track.tpcNSigmaPr()) > cfgTPCNsigma; + if (track.pt() < ptThresholdforPID) { if (isITSDe) { qaHistos.fill(HIST("Data/hnSigmaTPCVsPtPurity"), track.pt(), track.tpcNSigmaDe()); @@ -303,6 +309,9 @@ struct HfTaskDeuteronFromLb { if (isTPCDe && track.hasTOF()) { qaHistos.fill(HIST("Data/hnSigmaTOFVsPtPurity"), track.pt(), track.tofNSigmaDe()); } + if (isTPCDeClean && track.hasTOF()) { + qaHistos.fill(HIST("Data/hnSigmaTOFVsPtPurityVeto"), track.pt(), track.tofNSigmaDe()); + } } if (track.pt() < ptThresholdforPID && isTPCDe && isITSDe) {