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 = {}