diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/bTohh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/bTohh.py index e95f3a80ead5acca948201fed9b0aa7a12baaf7e..dfe9fbda12159bc8e960269abbb67c419fdca1de 100755 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/bTohh.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/bTohh.py @@ -65,6 +65,45 @@ def make_BuToPipPi0(process): return line_alg +@check_process +def make_BuToKpPi0_Dalitz(process): + kaons = basic_builder.make_kaons() + dalitz_pi0s = basic_builder.make_dalitz_pi0s( + p_min=1000 * MeV, + pt_min=500 * MeV, + am_min=20 * MeV, + am_max=250 * MeV, + gamma_is_not_H=0.05, + gamma_is_photon=0.2, + min_ipchi2=16, + ) + + line_alg = b_builder.make_b2Kpi0_dalitz( + particles=[kaons, dalitz_pi0s], + descriptor="[B+ -> K+ pi0]cc", + ) + return line_alg + + +@check_process +def make_BuToPipPi0_Dalitz(process): + pips = basic_builder.make_pions() + dalitz_pi0s = basic_builder.make_dalitz_pi0s( + p_min=1000 * MeV, + pt_min=500 * MeV, + am_min=20 * MeV, + am_max=250 * MeV, + gamma_is_not_H=0.05, + gamma_is_photon=0.2, + min_ipchi2=16, + ) + line_alg = b_builder.make_b2Kpi0_dalitz( + particles=[pips, dalitz_pi0s], + descriptor="[B+ -> pi+ pi0]cc", + ) + return line_alg + + @check_process def make_BuToL0barPp_LL(process): if process == "spruce": diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/builders/b_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/builders/b_builder.py index 91c1a7870b2ca63c5c2106d36403aae5f87b3891..4d70414ab4b73594250d68191ab5a251d6ddd0ae 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/builders/b_builder.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/builders/b_builder.py @@ -475,6 +475,49 @@ def make_b2Kpi( ) +@configurable +def make_b2Kpi0_dalitz( + particles, + descriptor, + mass_min=4700 * MeV, + mass_max=6200 * MeV, + pt_min=1500 * MeV, + pt_sum_min=2000 * MeV, + docachi2_max=25.0, + vchi2pdof_max=10.0, + ipchi2_max=25.0, + bpvfdchi2_min=25.0, + dira_min=0.999, + bpvltime_min=0.2 * picosecond, +): + """Builder for two-body b-decays to hadron and dalitz pi0.""" + name = "BNOC_b2Kpi0_dalitz_2body_{hash}" + + combination_cut = require_all( + in_range(mass_min - 100 * MeV, F.MASS, mass_max + 100 * MeV), + F.PT > pt_min, + F.CHILD(1, F.PT) + F.CHILD(2, F.PT) > pt_sum_min, + F.MAXSDOCACHI2CUT(docachi2_max), + ) + + composite_cut = require_all( + in_range(mass_min, F.MASS, mass_max), + F.CHI2DOF < vchi2pdof_max, + F.OWNPVDIRA > dira_min, + F.OWNPVIPCHI2 < ipchi2_max, + F.OWNPVFDCHI2 > bpvfdchi2_min, + F.OWNPVLTIME > bpvltime_min, + ) + + return ParticleCombiner( + Inputs=particles, + name=name, + DecayDescriptor=descriptor, + CombinationCut=combination_cut, + CompositeCut=composite_cut, + ) + + ############################################## # For BuToKSh lines # ############################################## diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/spruce_bnoc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/spruce_bnoc.py index a60dad2aa2d7fdc8b28a935d00656a61c6a6102c..6eb5f7dac95a3f61900120ad4eb374cbb1f61175 100644 --- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/spruce_bnoc.py +++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/bnoc/spruce_bnoc.py @@ -251,6 +251,8 @@ spruce_hlt2_extra_filters = { "XibmToSigma0Km_DD": ["Hlt2Topo2BodyDecision", "Hlt2Topo3BodyDecision"], "XibmToSigma0Pim_LL": ["Hlt2Topo2BodyDecision", "Hlt2Topo3BodyDecision"], "XibmToSigma0Pim_DD": ["Hlt2Topo2BodyDecision", "Hlt2Topo3BodyDecision"], + "BuToKpPi0_Dalitz": ["Hlt2Topo2BodyDecision", "Hlt2Topo3BodyDecision"], + "BuToPipPi0_Dalitz": ["Hlt2Topo2BodyDecision", "Hlt2Topo3BodyDecision"], } for decay, hlt2_lines in spruce_hlt2_extra_filters.items(): @@ -641,6 +643,22 @@ isolation_lines = { "PiZerosIso": True, }, }, + "BuToKpPi0_Dalitz": { + "iso_kwargs": { + "name": "B+", + "coneangle": 1.0, + "NeutralIso": True, + "PiZerosIso": True, + }, + }, + "BuToPipPi0_Dalitz": { + "iso_kwargs": { + "name": "B+", + "coneangle": 1.0, + "NeutralIso": True, + "PiZerosIso": True, + }, + }, } prescale_lines = {}