From c0d37c52376f1cd15c6e826234b7f6e907c33e6e Mon Sep 17 00:00:00 2001 From: apalasciano Date: Fri, 16 Oct 2026 17:26:02 +0200 Subject: [PATCH] [PWGHF] complete B-meson selections to match triggers --- .../TableProducer/dataCreatorCharmHadPiReduced.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx index 49076dc9217..0080ceb0715 100644 --- a/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx +++ b/PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx @@ -202,6 +202,7 @@ struct HfDataCreatorCharmHadPiReduced { struct : o2::framework::ConfigurableGroup { Configurable cpaMin{"cpaMin", 0., "Minimum cosine of pointing angle for B candidates"}; Configurable decLenMin{"decLenMin", 0., "Minimum decay length for B candidates"}; + Configurable impParProductMax{"impParProductMax", 10., "Maximum product of the impact parameters of the B daughters (cm^2)"}; } bhadronConfigurations; // HF flags struct : o2::framework::ConfigurableGroup { @@ -1034,8 +1035,9 @@ struct HfDataCreatorCharmHadPiReduced { /// \param momentum is the B meson momentum /// \param secondaryVertex is the reconstructed secondary vertex /// \param collision is the reconstructed collision + /// \param impParProduct is the product of the impact parameters of the B daughters template - bool isBHadronSelected(const T1& momentum, const T2& secondaryVertex, const T3& collision) + bool isBHadronSelected(const T1& momentum, const T2& secondaryVertex, const T3& collision, const float impParProduct) { // B candidate CPA if (RecoDecay::cpa(std::array{collision.posX(), collision.posY(), collision.posZ()}, secondaryVertex, momentum) < bhadronConfigurations.cpaMin) { @@ -1047,6 +1049,11 @@ struct HfDataCreatorCharmHadPiReduced { return false; } + // B candidate product of daughter impact parameters + if (impParProduct > bhadronConfigurations.impParProductMax) { + return false; + } + return true; } @@ -1364,7 +1371,10 @@ struct HfDataCreatorCharmHadPiReduced { df2.getTrack(0).getPxPyPzGlo(pVecDHad); df2.getTrack(1).getPxPyPzGlo(pVecDau); pVecBHad = RecoDecay::pVec(pVecDHad, pVecDau); - if (!isBHadronSelected(pVecBHad, secondaryVertexBHad, collision)) { + o2::track::TrackParCov trackParCovCharmHadAtPv = trackParCovCharmHad; + std::array dcaCharmHad{}; + o2::base::Propagator::Instance()->propagateToDCABxByBz({collision.posX(), collision.posY(), collision.posZ()}, trackParCovCharmHadAtPv, 2.f, noMatCorr, &dcaCharmHad); + if (!isBHadronSelected(pVecBHad, secondaryVertexBHad, collision, dcaCharmHad[0] * dcaPion[0])) { continue; } // fill Pion tracks table