diff --git a/Hlt/Hlt2Conf/options/examples/b_to_open_charm/hlt2_b2oc_all_lines.py b/Hlt/Hlt2Conf/options/examples/b_to_open_charm/hlt2_b2oc_all_lines.py
index b1ae8935dd96abf129958faee1367425a08e259a..b2ae395d79a4097e3da85b6681570773e618b924 100644
--- a/Hlt/Hlt2Conf/options/examples/b_to_open_charm/hlt2_b2oc_all_lines.py
+++ b/Hlt/Hlt2Conf/options/examples/b_to_open_charm/hlt2_b2oc_all_lines.py
@@ -47,8 +47,8 @@ from Hlt2Conf.lines.b_to_open_charm import all_lines
 # Uncomment the following lines to configure input data from grid locations
 
 #input_files = [
-#    # MinBias 30000000 AFTER Hlt1
-#    'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/Upgrade/LDST/00075219/0000/00075219_00000001_1.ldst',
+# Hlt1 filtered Upgrade DsK MC
+#    'root://eoslhcb.cern.ch//eos/lhcb/grid/prod/lhcb/MC/Upgrade/LDST/00075807/0000/00075807_00000001_1.ldst',
 #]
 #options.input_files = input_files
 #options.input_type = 'ROOT'
diff --git a/Hlt/Hlt2Conf/options/sprucing/spruce_hlt2filter.py b/Hlt/Hlt2Conf/options/sprucing/spruce_hlt2filter.py
index e29494ec0bcc18677644232ef8e0a50119aa7687..4e4da9dcc3c76461da9ee572ef2b866dd03cb3a8 100644
--- a/Hlt/Hlt2Conf/options/sprucing/spruce_hlt2filter.py
+++ b/Hlt/Hlt2Conf/options/sprucing/spruce_hlt2filter.py
@@ -42,7 +42,7 @@ load_hlt2_configuration("hlt2_2or3bodytopo_realtime.tck.json")
 
 
 def Sprucing_line_1(name='Spruce_filteronTopo2_Line'):
-    line_alg = b_to_dh.make_BdToDsmK_DsmToHHH(process='spruce')
+    line_alg = b_to_dh.make_BdToDsmK_DsmToKpKmPim(process='spruce')
     return SpruceLine(
         name=name,
         algs=upfront_reconstruction() + [line_alg],
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dd.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dd.py
index 177073f5e11e896b3eb19729c154770c190618d7..a6ad32759d80f10042339392ae5680da19a58ea8 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dd.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dd.py
@@ -12,9 +12,13 @@
 * Definition of B2OC B2DD lines
 """
 from __future__ import absolute_import, division, print_function
+from GaudiKernel.SystemOfUnits import GeV, MeV
 
 from Hlt2Conf.algorithms import ParticleContainersMerger
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter
+
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
 
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
@@ -190,112 +194,167 @@ def make_BdToD0D0_D0ToHHOrHHHH(process):
 
 
 @check_process
-def make_BuToD0Dp_D0ToHH_DpToHHH(process):
+def make_BuToD0Dp_D0ToHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            pi_pidk_max=None, k_pidk_min=None, am_min=1769.62, am_max=1969.62)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=64.)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, bpvvdchi2_min=64.)
+    b = b_builder.make_b2dd(
         particles=[dzero, dp], descriptors=['B+ -> D0 D+', 'B- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Dsp_D0ToHH_DspToHHH(process):
+def make_BuToD0Dsp_D0ToHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            pi_pidk_max=None, k_pidk_min=None, am_min=1868.47, am_max=2068.47)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=64.)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, bpvvdchi2_min=64.)
+    b = b_builder.make_b2dd(
         particles=[dp, dzero], descriptors=['B+ -> D_s+ D0', 'B- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Dp_D0ToHHHH_DpToHHH(process):
+def make_BuToD0Dp_D0ToHHHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            pi_pidk_max=None, k_pidk_min=None, am_min=1769.62, am_max=1969.62)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=64.)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, bpvvdchi2_min=64.)
+    b = b_builder.make_b2dd(
         particles=[dzero, dp], descriptors=['B+ -> D0 D+', 'B- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Dsp_D0ToHHHH_DspToHHH(process):
+def make_BuToD0Dsp_D0ToHHHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            pi_pidk_max=None, k_pidk_min=None, am_min=1868.47, am_max=2068.47)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=64.)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, bpvvdchi2_min=64.)
+    b = b_builder.make_b2dd(
         particles=[dp, dzero], descriptors=['B+ -> D_s+ D0', 'B- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToDstD0_DstToD0Pi_D0ToHH_D0ToHH(process):
+def make_BuToDstD0_DstToD0Pi_D0ToHH_D0ToHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     if process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=64.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_b2dstd(
         particles=[dst, dzero],
         descriptors=['B+ -> D*(2010)+ D0', 'B- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH(process):
+def make_BuToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero1 = d_builder.make_dzero_to_hhhh(
+        dzero1 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
         dzero2 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     if process == 'hlt2':
-        dzero1 = d_builder.make_dzero_to_hhhh()
-        dzero2 = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_b2x(
+        dzero1 = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=64.)
+        dzero2 = d_builder.make_dzero_to_hh(bpvvdchi2_min=64.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_b2dstd(
         particles=[dst, dzero1],
         descriptors=['B+ -> D*(2010)+ D0', 'B- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH(process):
+def make_BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dzero2 = d_builder.make_dzero_to_hhhh(
+        dzero2 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
     if process == 'hlt2':
-        dzero1 = d_builder.make_dzero_to_hh()
-        dzero2 = d_builder.make_dzero_to_hhhh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_b2x(
+        dzero1 = d_builder.make_dzero_to_hh(bpvvdchi2_min=64.)
+        dzero2 = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=64.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_b2dstd(
         particles=[dst, dzero1],
         descriptors=['B+ -> D*(2010)+ D0', 'B- -> D*(2010)+ D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH(process):
+def make_BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=64.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_b2dstd(
         particles=[dst, dzero],
         descriptors=['B+ -> D*(2010)+ D0', 'B- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
@@ -305,176 +364,237 @@ def make_BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH(process):
 
 
 @check_process
-def make_BcToD0Dp_D0ToHH_DpToHHH(process):
+def make_BcToD0Dp_D0ToHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            bpvvdchi2_min=49., am_min=1769.62, am_max=1969.62)
+    b = b_builder.make_bc2dd(
         particles=[dzero, dp], descriptors=['B_c+ -> D0 D+', 'B_c- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dsp_D0ToHH_DspToHHH(process):
+def make_BcToD0Dsp_D0ToHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            bpvvdchi2_min=49., am_min=1868.47, am_max=2068.47)
+    b = b_builder.make_bc2dd(
         particles=[dp, dzero],
         descriptors=['B_c+ -> D_s+ D0', 'B_c- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dp_D0ToHHHH_DpToHHH(process):
+def make_BcToD0Dp_D0ToHHHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            bpvvdchi2_min=49., am_min=1769.62, am_max=1969.62)
+    b = b_builder.make_bc2dd(
         particles=[dzero, dp], descriptors=['B_c+ -> D0 D+', 'B_c- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dsp_D0ToHHHH_DspToHHH(process):
+def make_BcToD0Dsp_D0ToHHHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            bpvvdchi2_min=49., am_min=1868.47, am_max=2068.47)
+    b = b_builder.make_bc2dd(
         particles=[dp, dzero],
         descriptors=['B_c+ -> D_s+ D0', 'B_c- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dp_D0ToKsDDHH_DpToHHH(process):
+def make_BcToD0Dp_D0ToKsDDHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_DD())
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_DD())
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            bpvvdchi2_min=49., am_min=1769.62, am_max=1969.62)
+    b = b_builder.make_bc2dd(
         particles=[dzero, dp], descriptors=['B_c+ -> D0 D+', 'B_c- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dsp_D0ToKsDDHH_DspToHHH(process):
+def make_BcToD0Dsp_D0ToKsDDHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_DD())
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_DD())
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            bpvvdchi2_min=49., am_min=1868.47, am_max=2068.47)
+    b = b_builder.make_bc2dd(
         particles=[dp, dzero],
         descriptors=['B_c+ -> D_s+ D0', 'B_c- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dp_D0ToKsLLHH_DpToHHH(process):
+def make_BcToD0Dp_D0ToKsLLHH_DpToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dp = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            am_min=1769.62, am_max=1969.62, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_LL())
-        dp = d_builder.make_dplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_LL())
+        dp = d_builder.make_dplus_to_kpipi_or_kkpi(
+            bpvvdchi2_min=49., am_min=1769.62, am_max=1969.62)
+    b = b_builder.make_bc2dd(
         particles=[dzero, dp], descriptors=['B_c+ -> D0 D+', 'B_c- -> D0 D-'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToD0Dsp_D0ToKsLLHH_DspToHHH(process):
+def make_BcToD0Dsp_D0ToKsLLHH_DspToHHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dp = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            am_min=1868.47, am_max=2068.47, pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_LL())
-        dp = d_builder.make_dsplus_to_hhh()
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_LL())
+        dp = d_builder.make_dsplus_to_kpkmpip(
+            bpvvdchi2_min=49., am_min=1868.47, am_max=2068.47)
+    b = b_builder.make_bc2dd(
         particles=[dp, dzero],
         descriptors=['B_c+ -> D_s+ D0', 'B_c- -> D_s- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero1 = d_builder.make_dzero_to_hhhh(
+        dzero1 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
         dzero2 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero1 = d_builder.make_dzero_to_hhhh()
-        dzero2 = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+        dzero1 = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+        dzero2 = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
-        dzero2 = d_builder.make_dzero_to_hhhh(
+        dzero2 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero1 = d_builder.make_dzero_to_hh()
-        dzero2 = d_builder.make_dzero_to_hhhh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+        dzero1 = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+        dzero2 = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)+ D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsLLHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsLLHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL(),
@@ -483,17 +603,26 @@ def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsLLHH(process):
         dzero2 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero1 = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_LL())
-        dzero2 = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_LL())
+        dzero2 = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsDDHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsDDHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD(),
@@ -502,64 +631,101 @@ def make_BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsDDHH(process):
         dzero2 = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero1 = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_DD())
-        dzero2 = d_builder.make_dzero_to_hh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_DD())
+        dzero2 = d_builder.make_dzero_to_hh(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH(process, MVACut=0.2):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_dzero_to_kpipipi(
+            pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_bc2x(
+        dzero = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsLLHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsLLHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dzero2 = d_builder.make_dzero_to_hhhh(
+        dzero2 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero1 = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_LL())
-        dzero2 = d_builder.make_dzero_to_hhhh()
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_LL())
+        dzero2 = d_builder.make_dzero_to_kpipipi(bpvvdchi2_min=49.)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsDDHH(process):
+def make_BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsDDHH(process, MVACut=0.2):
     if process == 'spruce':
         dzero1 = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD(),
             pi_pidk_max=None,
             k_pidk_min=None)
-        dzero2 = d_builder.make_dzero_to_hhhh(
+        dzero2 = d_builder.make_dzero_to_kpipipi(
             pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         dzero1 = d_builder.make_dzero_to_kshh(
-            k_shorts=basic_builder.make_ks_DD())
-        dzero2 = d_builder.make_dzero_to_hhhh(
-            pi_pidk_max=None, k_pidk_min=None)
-    dst = d_builder.make_dstar_to_dzeropi(dzero2)
-    line_alg = b_builder.make_bc2x(
+            bpvvdchi2_min=49., k_shorts=basic_builder.make_ks_DD())
+        dzero2 = d_builder.make_dzero_to_kpipipi(
+            bpvvdchi2_min=49., pi_pidk_max=None, k_pidk_min=None)
+    dst = d_builder.make_dstar_to_dzeropi(
+        dzero2,
+        deltamass_max=180 * MeV,
+        bpvvdchi2_min=0,
+        soft_pi_pidk_max=None,
+        soft_pi_p_min=0 * GeV,
+        soft_pi_pt_min=0 * MeV,
+        soft_pi_mipchi2_min=0)
+    b = b_builder.make_bc2dstd(
         particles=[dst, dzero1],
         descriptors=['B_c+ -> D*(2010)+ D0', 'B_c- -> D*(2010)- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_ddh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_ddh.py
index 850b98d6303659e75f5733bafe5db37fb7512425..98ca33da094df5b16e0ff42a41632cb069ddd59a 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_ddh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_ddh.py
@@ -13,19 +13,20 @@
 """
 from __future__ import absolute_import, division, print_function
 
-from GaudiKernel.SystemOfUnits import GeV, picosecond
-
 from Hlt2Conf.algorithms import ParticleContainersMerger
 
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
+
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
 
 @check_process
-def make_BdToD0D0Kst_D0ToHHOrHHHH(process):
+def make_BdToD0D0Kst_D0ToHHOrHHHH(process, MVACut=0.5):
     if process == 'spruce':
         kst = basic_builder.make_kstar0(am_min=600, am_max=1600)
         dzero_hh = d_builder.make_dzero_to_hh(
@@ -33,16 +34,17 @@ def make_BdToD0D0Kst_D0ToHHOrHHHH(process):
         dzero_hhhh = d_builder.make_dzero_to_hhhh(
             pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        kst = basic_builder.make_kstar0(am_min=600, am_max=1600)
-        dzero_hh = d_builder.make_dzero_to_hh()
-        dzero_hhhh = d_builder.make_dzero_to_hhhh()
+        kst = basic_builder.make_kstar0(am_min=600, am_max=1600, k_pidk_min=-2)
+        dzero_hh = d_builder.make_dzero_to_hh(k_pidk_min=-2)
+        dzero_hhhh = d_builder.make_dzero_to_hhhh(k_pidk_min=-2)
     d = ParticleContainersMerger([dzero_hh, dzero_hhhh],
                                  name='B2OCD02HHorHHHHMerger')
-    line_alg = b_builder.make_b2x(
+    b = b_builder.make_b2cch(
         particles=[d, d, kst],
-        descriptors=['B0 -> D0 D0 K*(892)0', 'B0 -> D0 D0 K*(892)~0'],
-        sum_pt_min=6 * GeV,
-        bpvltime_min=0.3 * picosecond)
+        descriptors=['B0 -> D0 D0 K*(892)0', 'B0 -> D0 D0 K*(892)~0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
+
     return line_alg
 
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dh.py
index 6778ef56cfc144ffefda8fa2377b7b4c2069651f..8bde1a3dc2f64145496978eec1b9045d63046421 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dh.py
@@ -21,12 +21,13 @@ every function returns a line_alg
 from __future__ import absolute_import, division, print_function
 
 from Hlt2Conf import standard_particles
-from GaudiKernel.SystemOfUnits import MeV, GeV, picosecond  # will be needed once the full set of lines is back
+from GaudiKernel.SystemOfUnits import MeV, GeV, picosecond, mm  # will be needed once the full set of lines is back
 
-from Hlt2Conf.lines.b_to_open_charm.filters import b_bdt_filter, b_to_dh_bdt_filter
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter, b_bdt_filter  #, b_to_dh_bdt_filter
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
-from RecoConf.reconstruction_objects import make_pvs
+from RecoConf.reconstruction_objects import make_pvs as make_pvs_v1
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
 
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
@@ -38,58 +39,100 @@ from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
 
 @check_process
-def make_BdToDsmK_DsmToHHH(process):
+def make_BdToDsmK_DsmToKpKmPim(process):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
-        d = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        d = d_builder.make_dsplus_to_kpkmpip(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        kaon = basic_builder.make_tight_kaons()
-        d = d_builder.make_dsplus_to_hhh()
+        kaon = basic_builder.make_tight_kaons(k_pidk_min=0)
+        d = d_builder.make_dsplus_to_kpkmpip()
     line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['[B0 -> D_s- K+]cc'])
+        particles=[d, kaon],
+        descriptors=['[B0 -> D_s- K+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     return line_alg
 
 
 @check_process
-def make_BdToDsmPi_DsmToHHH(process):
+def make_BdToDsmPi_DsmToKpKmPim(process):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
-        d = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
+        d = d_builder.make_dsplus_to_kpkmpip(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        pion = basic_builder.make_tight_pions()
-        d = d_builder.make_dsplus_to_hhh()
+        pion = basic_builder.make_tight_pions(pi_pidk_max=0)
+        d = d_builder.make_dsplus_to_kpkmpip()
     line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['[B0 -> D_s- pi+]cc'])
+        particles=[d, pion],
+        descriptors=['[B0 -> D_s- pi+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     return line_alg
 
 
 @check_process
-def make_BdToDmPi_DmToPimPimKp(process, MVACut=-1.):
+def make_BdToDsmPi_DsmToKpKmPim_Turcal(process):  # request from Vava
+    pion = basic_builder.make_tight_pions(pi_pidk_max=None)
+    d = d_builder.make_dsplus_to_kpkmpip()
+    line_alg = b_builder.make_b2x(
+        particles=[d, pion],
+        descriptors=['[B0 -> D_s- pi+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
+    return line_alg
+
+
+@check_process
+def make_BdToDmPi_DmToPimPimKp(process):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
         d = d_builder.make_dplus_to_kmpippip(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        pion = basic_builder.make_tight_pions()
+        pion = basic_builder.make_tight_pions(pi_pidk_max=0)
         d = d_builder.make_dplus_to_kmpippip()
-    b = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['[B0 -> D- pi+]cc'])
-    pvs = make_pvs()
-    line_alg = b_to_dh_bdt_filter(b, pvs, MVACut)
+    line_alg = b_builder.make_b2x(
+        particles=[d, pion],
+        descriptors=['[B0 -> D- pi+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     return line_alg
 
 
 @check_process
-def make_BdToDmK_DmToPimPimKp(process, MVACut=-1.):
+def make_BdToDmK_DmToPimPimKp(process, MVACut=0.):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
         d = d_builder.make_dplus_to_kmpippip(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
-        kaon = basic_builder.make_tight_kaons()
+        kaon = basic_builder.make_tight_kaons(k_pidk_min=0)
         d = d_builder.make_dplus_to_kmpippip()
     b = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['[B0 -> D- K+]cc'])
+        particles=[d, kaon],
+        descriptors=['[B0 -> D- K+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     pvs = make_pvs()
-    line_alg = b_to_dh_bdt_filter(b, pvs, MVACut)
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
@@ -104,12 +147,14 @@ def make_BdToDsstmK_DsstmToDsmGamma_DsmToHHH(process):
     dsst = d_builder.make_dsst_to_dsplusgamma(ds)
     line_alg = b_builder.make_b2x(
         particles=[dsst, kaon],
-        descriptors=['B0 -> D*_s- K+', 'B0 -> D*_s+ K-'])
+        descriptors=['B0 -> D*_s- K+', 'B0 -> D*_s+ K-'],
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     return line_alg
 
 
 @check_process
-def make_BdToDsstmPi_DsstmToDsmGamma_DsmToHHH(process, MVACut):
+def make_BdToDsstmPi_DsstmToDsmGamma_DsmToHHH(process):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
         ds = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
@@ -117,11 +162,9 @@ def make_BdToDsstmPi_DsstmToDsmGamma_DsmToHHH(process, MVACut):
         pion = basic_builder.make_tight_pions()
         ds = d_builder.make_dsplus_to_hhh()
     dsst = d_builder.make_dsst_to_dsplusgamma(ds)
-    b = b_builder.make_b2x(
+    line_alg = b_builder.make_b2x(
         particles=[dsst, pion],
         descriptors=['B0 -> D*_s- pi+', 'B0 -> D*_s+ pi-'])
-    pvs = make_pvs()
-    line_alg = b_to_dh_bdt_filter(b, pvs, MVACut, with_neutrals=True)
     return line_alg
 
 
@@ -131,44 +174,60 @@ def make_BdToDsstmPi_DsstmToDsmGamma_DsmToHHH(process, MVACut):
 
 
 @check_process
-def make_BuToD0K_D0ToHH(process):
+def make_BuToD0K_D0ToHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
     elif process == 'hlt2':
         kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToHH(process):
+def make_BuToD0Pi_D0ToHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
         pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToHHWS(process):
+def make_BuToD0K_D0ToHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToHHWS(process):
+def make_BuToD0Pi_D0ToHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -292,82 +351,114 @@ def make_BuToD0K_D0ToHHPi0MergedWS(process):
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHH(process):
+def make_BuToD0Pi_D0ToKsLLHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHH(process):
+def make_BuToD0Pi_D0ToKsDDHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHH(process):
+def make_BuToD0K_D0ToKsLLHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHH(process):
+def make_BuToD0K_D0ToKsDDHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHHWS(process):
+def make_BuToD0Pi_D0ToKsLLHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHHWS(process):
+def make_BuToD0Pi_D0ToKsDDHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHHWS(process):
+def make_BuToD0K_D0ToKsLLHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHHWS(process):
+def make_BuToD0K_D0ToKsDDHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -379,122 +470,146 @@ def make_BuToD0K_D0ToKsDDHHWS(process):
 
 
 @check_process
-def make_BuToD0Pi_PartialD0ToKsLLHH(process):
+def make_BuToD0Pi_PartialD0ToKsLLHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion],
         descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_PartialD0ToKsDDHH(process):
+def make_BuToD0Pi_PartialD0ToKsDDHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion],
         descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_PartialD0ToKsLLHH(process):
+def make_BuToD0K_PartialD0ToKsLLHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon],
         descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_PartialD0ToKsDDHH(process):
+def make_BuToD0K_PartialD0ToKsDDHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon],
         descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_PartialD0ToKsLLHHWS(process):
+def make_BuToD0Pi_PartialD0ToKsLLHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion],
         descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_PartialD0ToKsDDHHWS(process):
+def make_BuToD0Pi_PartialD0ToKsDDHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion],
         descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_PartialD0ToKsLLHHWS(process):
+def make_BuToD0K_PartialD0ToKsLLHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon],
         descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_PartialD0ToKsDDHHWS(process):
+def make_BuToD0K_PartialD0ToKsDDHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(),
         pi_pidk_max=20,
         k_pidk_min=-10,
         am_min=1000 * MeV)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon],
         descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
-        am_min=4500 * MeV)
+        am_min=4500 * MeV,
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -504,7 +619,7 @@ def make_BuToD0K_PartialD0ToKsDDHHWS(process):
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsLLHH(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -512,14 +627,17 @@ def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsLLHH(process):
     dzero = d_builder.make_dzero_to_kshh(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -528,14 +646,17 @@ def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsLLHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -544,14 +665,17 @@ def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsLLHH(process):
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsLLHH(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
     elif process == 'hlt2':
@@ -559,14 +683,17 @@ def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsLLHH(process):
     dzero = d_builder.make_dzero_to_kshh(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
     elif process == 'hlt2':
@@ -575,14 +702,17 @@ def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsLLHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsLLHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -591,14 +721,17 @@ def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsLLHH(process):
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsDDHH(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -606,14 +739,17 @@ def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsDDHH(process):
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -622,14 +758,17 @@ def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsDDHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         pion = basic_builder.make_tight_pions(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -638,14 +777,17 @@ def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsDDHH(process):
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsDDHH(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(k_pidk_min=None)
     elif process == 'hlt2':
@@ -653,14 +795,17 @@ def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsDDHH(process):
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -669,14 +814,17 @@ def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHH(process, MVAcut=0.7):
     if process == 'spruce':
         kaon = basic_builder.make_tight_kaons(pi_pidk_max=None)
     elif process == 'hlt2':
@@ -685,161 +833,200 @@ def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHH(process):
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsLLHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsLLHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsLLHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsLLHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsLLHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsLLHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsLLHHWS(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsLLHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsLLHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsLLHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsLLHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsLLHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsDDHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToKsDDHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsDDHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToKsDDHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsDDHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToKsDDHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsDDHHWS(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToKsDDHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsDDHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToKsDDHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -849,38 +1036,54 @@ def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToKsDDHHWS(process):
 
 
 @check_process
-def make_BuToD0K_D0ToHHHH(process):
+def make_BuToD0K_D0ToHHHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
-    d = d_builder.make_dzero_to_hhhh()
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToHHHH(process):
+def make_BuToD0Pi_D0ToHHHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
-    d = d_builder.make_dzero_to_hhhh()
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToHHHHWS(process):
+def make_BuToD0K_D0ToHHHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToHHHHWS(process):
+def make_BuToD0Pi_D0ToHHHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -890,90 +1093,122 @@ def make_BuToD0Pi_D0ToHHHHWS(process):
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsLLPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_LL(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLPi0Merged(process):
+def make_BuToD0Pi_D0ToKsLLPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_LL(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsDDPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_DD(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDPi0Merged(process):
+def make_BuToD0Pi_D0ToKsDDPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_DD(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLPi0Resolved(process):
+def make_BuToD0K_D0ToKsLLPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_LL(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLPi0Merged(process):
+def make_BuToD0K_D0ToKsLLPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_LL(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDPi0Resolved(process):
+def make_BuToD0K_D0ToKsDDPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_DD(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDPi0Merged(process):
+def make_BuToD0K_D0ToKsDDPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kspi0(
         k_shorts=basic_builder.make_ks_DD(), pi0=pi0)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -983,7 +1218,7 @@ def make_BuToD0K_D0ToKsDDPi0Merged(process):
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHHPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsLLHHPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -991,13 +1226,17 @@ def make_BuToD0Pi_D0ToKsLLHHPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHHPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsDDHHPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1005,13 +1244,17 @@ def make_BuToD0Pi_D0ToKsDDHHPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHHPi0Resolved(process):
+def make_BuToD0K_D0ToKsLLHHPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1019,13 +1262,17 @@ def make_BuToD0K_D0ToKsLLHHPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHHPi0Resolved(process):
+def make_BuToD0K_D0ToKsDDHHPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1033,13 +1280,17 @@ def make_BuToD0K_D0ToKsDDHHPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHHPi0Merged(process):
+def make_BuToD0Pi_D0ToKsLLHHPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1047,13 +1298,17 @@ def make_BuToD0Pi_D0ToKsLLHHPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHHPi0Merged(process):
+def make_BuToD0Pi_D0ToKsDDHHPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1061,13 +1316,17 @@ def make_BuToD0Pi_D0ToKsDDHHPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHHPi0Merged(process):
+def make_BuToD0K_D0ToKsLLHHPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1075,13 +1334,17 @@ def make_BuToD0K_D0ToKsLLHHPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHHPi0Merged(process):
+def make_BuToD0K_D0ToKsDDHHPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0(
@@ -1089,13 +1352,17 @@ def make_BuToD0K_D0ToKsDDHHPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHHWSPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsLLHHWSPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1103,13 +1370,17 @@ def make_BuToD0Pi_D0ToKsLLHHWSPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHHWSPi0Resolved(process):
+def make_BuToD0Pi_D0ToKsDDHHWSPi0Resolved(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1117,13 +1388,17 @@ def make_BuToD0Pi_D0ToKsDDHHWSPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHHWSPi0Resolved(process):
+def make_BuToD0K_D0ToKsLLHHWSPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1131,13 +1406,17 @@ def make_BuToD0K_D0ToKsLLHHWSPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHHWSPi0Resolved(process):
+def make_BuToD0K_D0ToKsDDHHWSPi0Resolved(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1145,13 +1424,17 @@ def make_BuToD0K_D0ToKsDDHHWSPi0Resolved(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsLLHHWSPi0Merged(process):
+def make_BuToD0Pi_D0ToKsLLHHWSPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1159,13 +1442,17 @@ def make_BuToD0Pi_D0ToKsLLHHWSPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0Pi_D0ToKsDDHHWSPi0Merged(process):
+def make_BuToD0Pi_D0ToKsDDHHWSPi0Merged(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1173,13 +1460,17 @@ def make_BuToD0Pi_D0ToKsDDHHWSPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, pion], descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, pion],
+        descriptors=['B+ -> D0 pi+', 'B- -> D0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsLLHHWSPi0Merged(process):
+def make_BuToD0K_D0ToKsLLHHWSPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1187,13 +1478,17 @@ def make_BuToD0K_D0ToKsLLHHWSPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0K_D0ToKsDDHHWSPi0Merged(process):
+def make_BuToD0K_D0ToKsDDHHWSPi0Merged(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
     d = d_builder.make_dzero_to_kshhpi0_ws(
@@ -1201,8 +1496,12 @@ def make_BuToD0K_D0ToKsDDHHWSPi0Merged(process):
         pi0=pi0,
         pi_pidk_max=20,
         k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
-        particles=[d, kaon], descriptors=['B+ -> D0 K+', 'B- -> D0 K-'])
+    line_alg = b_builder.make_loose_mass_b2x(
+        particles=[d, kaon],
+        descriptors=['B+ -> D0 K+', 'B- -> D0 K-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -1212,142 +1511,178 @@ def make_BuToD0K_D0ToKsDDHHWSPi0Merged(process):
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHH(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToHH(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHWS(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -1357,142 +1692,178 @@ def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHWS(process):
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHHH(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHHH(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHHH(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHH(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Gamma_D0ToHHHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Resolved_D0ToHHHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHHHWS(process):
+def make_BuToDst0Pi_Dst0ToD0Pi0Merged_D0ToHHHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, pion],
-        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'])
+        descriptors=['B+ -> D*(2007)0 pi+', 'B- -> D*(2007)0 pi-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHHHWS(process):
+def make_BuToDst0K_Dst0ToD0Gamma_D0ToHHHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_resolved_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHHWS(process):
+def make_BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     pi0 = basic_builder.make_merged_pi0s()
     dzerost = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzerost, kaon],
-        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'])
+        descriptors=['B+ -> D*(2007)0 K+', 'B- -> D*(2007)0 K-'],
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -1509,8 +1880,8 @@ def make_BdToDsmK_DsmToHHH_Test(process, MVACut=-1.):
         d = d_builder.make_dsplus_to_hhh()
     b = b_builder.make_b2x(
         particles=[d, kaon], descriptors=['[B0 -> D_s- K+]cc'])
-    pvs = make_pvs()
-    line_alg = b_bdt_filter(b, pvs, MVACut)
+    pvs_v1 = make_pvs_v1()
+    line_alg = b_bdt_filter(b, pvs_v1, MVACut)
     return line_alg
 
 
@@ -1542,6 +1913,10 @@ def make_BcToD0K_D0ToHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, kaon],
         descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.1 * picosecond)
     return line_alg
 
@@ -1554,6 +1929,10 @@ def make_BcToD0Pi_D0ToHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, pion],
         descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.1 * picosecond)
     return line_alg
 
@@ -1564,7 +1943,12 @@ def make_BcToD0K_D0ToHHWS(process):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1574,7 +1958,12 @@ def make_BcToD0Pi_D0ToHHWS(process):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1590,7 +1979,12 @@ def make_BcToD0Pi_D0ToKsLLHH(process):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1601,7 +1995,12 @@ def make_BcToD0Pi_D0ToKsDDHH(process):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1612,7 +2011,12 @@ def make_BcToD0K_D0ToKsLLHH(process):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1623,7 +2027,12 @@ def make_BcToD0K_D0ToKsDDHH(process):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1634,7 +2043,12 @@ def make_BcToD0Pi_D0ToKsLLHHWS(process):
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1645,7 +2059,12 @@ def make_BcToD0Pi_D0ToKsDDHHWS(process):
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1656,7 +2075,12 @@ def make_BcToD0K_D0ToKsLLHHWS(process):
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1667,7 +2091,12 @@ def make_BcToD0K_D0ToKsDDHHWS(process):
     d = d_builder.make_dzero_to_kshh_ws(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1684,6 +2113,10 @@ def make_BcToD0K_D0ToHHHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, kaon],
         descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.2 * picosecond)
     return line_alg
 
@@ -1696,6 +2129,10 @@ def make_BcToD0Pi_D0ToHHHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, pion],
         descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.2 * picosecond)
     return line_alg
 
@@ -1706,7 +2143,12 @@ def make_BcToD0K_D0ToHHHHWS(process):
     kaon = basic_builder.make_tight_kaons()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kaon], descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'])
+        particles=[d, kaon],
+        descriptors=['B_c+ -> D0 K+', 'B_c- -> D0 K-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1716,7 +2158,12 @@ def make_BcToD0Pi_D0ToHHHHWS(process):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
     line_alg = b_builder.make_bc2x(
-        particles=[d, pion], descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'])
+        particles=[d, pion],
+        descriptors=['B_c+ -> D0 pi+', 'B_c- -> D0 pi-'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1726,7 +2173,12 @@ def make_BcToDsmKst0_DsmToHHH(process):
     kzerost = basic_builder.make_kstar0()
     d = d_builder.make_dsplus_to_hhh()
     line_alg = b_builder.make_bc2x(
-        particles=[d, kzerost], descriptors=['[B_c- -> D_s- K*(892)~0]cc'])
+        particles=[d, kzerost],
+        descriptors=['[B_c- -> D_s- K*(892)~0]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1736,7 +2188,12 @@ def make_BcToDmKst0_DmToHHH(process):
     kzerost = basic_builder.make_kstar0()
     d = d_builder.make_dplus_to_hhh()
     line_alg = b_builder.make_bc2x(
-        particles=[d, kzerost], descriptors=['[B_c- -> D- K*(892)~0]cc'])
+        particles=[d, kzerost],
+        descriptors=['[B_c- -> D- K*(892)~0]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1750,7 +2207,12 @@ def make_BcToDsmKst0_DsmToHHHWS(process):
         am_min=1868.35 * MeV,
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kzerost], descriptors=['[B_c- -> D_s- K*(892)~0]cc'])
+        particles=[d, kzerost],
+        descriptors=['[B_c- -> D_s- K*(892)~0]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1764,7 +2226,12 @@ def make_BcToDmKst0_DmToHHHWS(process):
         am_min=1769.66 * MeV,
         am_max=1969.66 * MeV)
     line_alg = b_builder.make_bc2x(
-        particles=[d, kzerost], descriptors=['[B_c- -> D- K*(892)~0]cc'])
+        particles=[d, kzerost],
+        descriptors=['[B_c- -> D- K*(892)~0]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1776,6 +2243,10 @@ def make_BcToDsmPhi_DsmToHHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, phi],
         descriptors=['B_c- -> D_s- phi(1020)', 'B_c+ -> D_s+ phi(1020)'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.1 * picosecond)
     return line_alg
 
@@ -1788,6 +2259,10 @@ def make_BcToDmPhi_DmToHHH(process):
     line_alg = b_builder.make_bc2x(
         particles=[d, phi],
         descriptors=['B_c- -> D- phi(1020)', 'B_c+ -> D+ phi(1020)'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV,
         bpvltime_min=0.1 * picosecond)
     return line_alg
 
@@ -1803,7 +2278,11 @@ def make_BcToDsmKsLL_DsmToHHH(process):
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
         particles=[d, k_shorts],
-        descriptors=['B_c- -> D_s- KS0', 'B_c+ -> D_s+ KS0'])
+        descriptors=['B_c- -> D_s- KS0', 'B_c+ -> D_s+ KS0'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1818,7 +2297,11 @@ def make_BcToDmKsLL_DmToHHH(process):
         am_max=1969.66 * MeV)
     line_alg = b_builder.make_bc2x(
         particles=[d, k_shorts],
-        descriptors=['B_c- -> D- KS0', 'B_c+ -> D+ KS0'])
+        descriptors=['B_c- -> D- KS0', 'B_c+ -> D+ KS0'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1829,7 +2312,11 @@ def make_BcToDsmKsDD_DsmToHHH(process):
     d = d_builder.make_dsplus_to_hhh()
     line_alg = b_builder.make_bc2x(
         particles=[d, k_shorts],
-        descriptors=['B_c- -> D_s- KS0', 'B_c+ -> D_s+ KS0'])
+        descriptors=['B_c- -> D_s- KS0', 'B_c+ -> D_s+ KS0'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1840,7 +2327,11 @@ def make_BcToDmKsDD_DmToHHH(process):
     d = d_builder.make_dplus_to_hhh()
     line_alg = b_builder.make_bc2x(
         particles=[d, k_shorts],
-        descriptors=['B_c- -> D- KS0', 'B_c+ -> D+ KS0'])
+        descriptors=['B_c- -> D- KS0', 'B_c+ -> D+ KS0'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1855,7 +2346,11 @@ def make_BcToDsmF0_DsmToHHH(process):
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
         particles=[d, f0980],
-        descriptors=['B_c- -> D_s- f_0(980)', 'B_c+ -> D_s+ f_0(980)'])
+        descriptors=['B_c- -> D_s- f_0(980)', 'B_c+ -> D_s+ f_0(980)'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -1870,5 +2365,9 @@ def make_BcToDmF0_DmToHHH(process):
         am_max=1969.66 * MeV)
     line_alg = b_builder.make_bc2x(
         particles=[d, f0980],
-        descriptors=['B_c- -> D- f_0(980)', 'B_c+ -> D+ f_0(980)'])
+        descriptors=['B_c- -> D- f_0(980)', 'B_c+ -> D+ f_0(980)'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhh.py
index 0bcf3a8f4901b1d03afb2ad7d2ca14f8774e5825..53a9bbe011615defe0e2ea3ebf7ec92d76143640 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhh.py
@@ -13,7 +13,11 @@
 """
 from __future__ import absolute_import, division, print_function
 
-from GaudiKernel.SystemOfUnits import GeV, picosecond
+from GaudiKernel.SystemOfUnits import GeV, mm
+
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter
+
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
 
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
@@ -28,7 +32,7 @@ from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
 ### 2-body lines ###
 @check_process
-def make_BdToD0PiPi_D0ToHH(process):
+def make_BdToD0PiPi_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         d = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
@@ -37,13 +41,15 @@ def make_BdToD0PiPi_D0ToHH(process):
         d = d_builder.make_tight_dzero_to_hh()
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. pi+pi- combination
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[pion, pion, d], descriptors=['B0 -> pi+ pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0PiPiWS_D0ToHH(process):
+def make_BdToD0PiPiWS_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         d = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
@@ -52,14 +58,16 @@ def make_BdToD0PiPiWS_D0ToHH(process):
         d = d_builder.make_tight_dzero_to_hh()
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. pi+pi- combination
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[pion, pion, d],
         descriptors=['B0 -> pi+ pi+ D0', 'B0 -> pi- pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KPi_D0ToHH(process):
+def make_BdToD0KPi_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
@@ -68,14 +76,16 @@ def make_BdToD0KPi_D0ToHH(process):
         pion = basic_builder.make_soft_pions(pi_pidk_max=0)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, pion, d],
         descriptors=['B0 -> K+ pi- D0', 'B0 -> K- pi+ D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KPiWS_D0ToHH(process):
+def make_BdToD0KPiWS_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
@@ -84,36 +94,42 @@ def make_BdToD0KPiWS_D0ToHH(process):
         pion = basic_builder.make_soft_pions(pi_pidk_max=0)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, pion, d],
         descriptors=['B0 -> K+ pi+ D0', 'B0 -> K- pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KK_D0ToHH(process):
+def make_BdToD0KK_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
         d = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, kaon, d], descriptors=['B0 -> K+ K- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KKWS_D0ToHH(process):
+def make_BdToD0KKWS_D0ToHH(process, MVACut=0.3):
     if process == 'spruce':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
         d = d_builder.make_dzero_to_hh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, kaon, d],
         descriptors=['B0 -> K+ K+ D0', 'B0 -> K- K- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
@@ -156,7 +172,7 @@ def make_BdToDstpKsLLPi_DstpToD0Pi_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_ll, pion, dst],
         descriptors=['[B0 -> KS0 pi- D*(2010)+]cc'])
     return line_alg
@@ -174,7 +190,7 @@ def make_BdToDstpKsDDPi_DstpToD0Pi_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_dd, pion, dst],
         descriptors=['[B0 -> KS0 pi- D*(2010)+]cc'])
     return line_alg
@@ -192,7 +208,7 @@ def make_BdToDstpKsLLK_DstpToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_ll, kaon, dst],
         descriptors=['[B0 -> KS0 K- D*(2010)+]cc'])
     return line_alg
@@ -210,7 +226,7 @@ def make_BdToDstpKsDDK_DstpToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_dd, kaon, dst],
         descriptors=['[B0 -> KS0 K- D*(2010)+]cc'])
     return line_alg
@@ -218,7 +234,7 @@ def make_BdToDstpKsDDK_DstpToD0Pi_D0ToHH(process):
 
 ### 4-body lines ###
 @check_process
-def make_BdToD0PiPi_D0ToHHHH(process):
+def make_BdToD0PiPi_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         d = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
@@ -227,13 +243,15 @@ def make_BdToD0PiPi_D0ToHHHH(process):
         d = d_builder.make_tight_dzero_to_hhhh()
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. pi+pi- combination
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[pion, pion, d], descriptors=['B0 -> pi+ pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0PiPiWS_D0ToHHHH(process):
+def make_BdToD0PiPiWS_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         d = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
@@ -242,14 +260,16 @@ def make_BdToD0PiPiWS_D0ToHHHH(process):
         d = d_builder.make_tight_dzero_to_hhhh()
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. pi+pi- combination
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[pion, pion, d],
         descriptors=['B0 -> pi+ pi+ D0', 'B0 -> pi- pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KPi_D0ToHHHH(process):
+def make_BdToD0KPi_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
@@ -258,15 +278,16 @@ def make_BdToD0KPi_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions(pi_pidk_max=0)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hhhh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, pion, d],
-        descriptors=['B0 -> K+ pi- D0', 'B0 -> K- pi+ D0'],
-        sum_pt_min=6 * GeV)
+        descriptors=['B0 -> K+ pi- D0', 'B0 -> K- pi+ D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KPiWS_D0ToHHHH(process):
+def make_BdToD0KPiWS_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
@@ -275,36 +296,42 @@ def make_BdToD0KPiWS_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions(pi_pidk_max=0)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hhhh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, pion, d],
         descriptors=['B0 -> K+ pi+ D0', 'B0 -> K- pi- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KK_D0ToHHHH(process):
+def make_BdToD0KK_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
         d = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hhhh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, kaon, d], descriptors=['B0 -> K+ K- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToD0KKWS_D0ToHHHH(process):
+def make_BdToD0KKWS_D0ToHHHH(process, MVACut=0.5):
     if process == 'spruce':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
         d = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
     elif process == 'hlt2':
         kaon = basic_builder.make_soft_kaons(k_pidk_min=0)
         d = d_builder.make_tight_dzero_to_hhhh()
-    line_alg = b_builder.make_b2chh(
+    b = b_builder.make_b2chh(
         particles=[kaon, kaon, d],
         descriptors=['B0 -> K+ K+ D0', 'B0 -> K- K- D0'])
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
@@ -349,7 +376,7 @@ def make_BdToDstpKsLLK_DstpToD0Pi_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_ll, kaon, dst],
         descriptors=['[B0 -> KS0 K- D*(2010)+]cc'])
     return line_alg
@@ -367,7 +394,7 @@ def make_BdToDstpKsDDK_DstpToD0Pi_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_dd, kaon, dst],
         descriptors=['[B0 -> KS0 K- D*(2010)+]cc'])
     return line_alg
@@ -385,7 +412,7 @@ def make_BdToDstpKsLLPi_DstpToD0Pi_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hhhh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_ll, pion, dst],
         descriptors=['[B0 -> KS0 pi- D*(2010)+]cc'])
     return line_alg
@@ -403,7 +430,7 @@ def make_BdToDstpKsDDPi_DstpToD0Pi_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hhhh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[ks_dd, pion, dst],
         descriptors=['[B0 -> KS0 pi- D*(2010)+]cc'])
     return line_alg
@@ -748,7 +775,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -764,7 +791,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -780,7 +807,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -799,7 +826,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -817,7 +844,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -835,7 +862,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -852,7 +879,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -868,7 +895,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -884,7 +911,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -904,7 +931,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -922,7 +949,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -940,7 +967,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToHH(process):
         dzero = d_builder.make_dzero_to_hh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -961,7 +988,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -977,7 +1004,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -993,7 +1020,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1012,7 +1039,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1030,7 +1057,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1048,7 +1075,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1065,7 +1092,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1081,7 +1108,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToHHHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1097,7 +1124,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToHHHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hhhh()
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1117,7 +1144,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1135,7 +1162,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1153,7 +1180,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToHHHH(process):
         dzero = d_builder.make_dzero_to_hhhh()
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1178,7 +1205,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1198,7 +1225,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1218,7 +1245,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1241,7 +1268,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1263,7 +1290,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1285,7 +1312,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1306,7 +1333,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1326,7 +1353,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1346,7 +1373,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToKsLLHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_LL())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1370,7 +1397,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1392,7 +1419,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1414,7 +1441,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToKsLLHH(process):
             k_shorts=basic_builder.make_ks_LL())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1439,7 +1466,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1459,7 +1486,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1479,7 +1506,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1502,7 +1529,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1524,7 +1551,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1546,7 +1573,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1567,7 +1594,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1587,7 +1614,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1607,7 +1634,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToKsDDHH(process):
         dzero = d_builder.make_dzero_to_kshh(
             k_shorts=basic_builder.make_ks_DD())
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1631,7 +1658,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1653,7 +1680,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1675,7 +1702,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToKsDDHH(process):
             k_shorts=basic_builder.make_ks_DD())
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1699,7 +1726,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1718,7 +1745,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1737,7 +1764,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1757,7 +1784,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1776,7 +1803,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1795,7 +1822,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1815,7 +1842,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1834,7 +1861,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1853,7 +1880,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1874,7 +1901,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -1893,7 +1920,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -1912,7 +1939,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved(process):
         pi0 = basic_builder.make_resolved_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -1936,7 +1963,7 @@ def make_BdToDst0KPi_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -1955,7 +1982,7 @@ def make_BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -1974,7 +2001,7 @@ def make_BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -1996,7 +2023,7 @@ def make_BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi- D*(2007)0', 'B0 -> K- pi+ D*(2007)0'])
     return line_alg
@@ -2017,7 +2044,7 @@ def make_BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi- D*(2007)0'])
     return line_alg
@@ -2038,7 +2065,7 @@ def make_BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero], descriptors=['B0 -> K+ K- D*(2007)0'])
     return line_alg
 
@@ -2058,7 +2085,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -2077,7 +2104,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -2096,7 +2123,7 @@ def make_BdToDst0KKWS_Dst0ToD0Gamma_D0ToHHPi0Merged(process):
         pi0 = basic_builder.make_merged_pi0s()
         dzero = d_builder.make_dzero_to_hhpi0(pi0)
         dstzero = d_builder.make_dzerost_to_dzerogamma(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -2119,7 +2146,7 @@ def make_BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dstzero],
         descriptors=['B0 -> K+ pi+ D*(2007)0', 'B0 -> K- pi- D*(2007)0'])
     return line_alg
@@ -2140,7 +2167,7 @@ def make_BdToDst0PiPiWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dstzero],
         descriptors=['B0 -> pi+ pi+ D*(2007)0', 'B0 -> pi- pi- D*(2007)0'])
     return line_alg
@@ -2161,7 +2188,7 @@ def make_BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged(process):
         dzero = d_builder.make_dzero_to_hhpi0(pi0_merged)
         pi0 = basic_builder.make_resolved_pi0s()
         dstzero = d_builder.make_dzerost_to_dzeropi0(dzero, pi0)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dstzero],
         descriptors=['B0 -> K+ K+ D*(2007)0', 'B0 -> K- K- D*(2007)0'])
     return line_alg
@@ -2400,7 +2427,7 @@ def make_BuToDstmPiPi_DstmToD0Pi_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dst],
         descriptors=['[B+ -> pi+ pi+ D*(2010)-]cc'])
     return line_alg
@@ -2418,7 +2445,7 @@ def make_BuToDstmKPi_DstmToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dst],
         descriptors=['[B+ -> K+ pi+ D*(2010)-]cc'])
     return line_alg
@@ -2434,7 +2461,7 @@ def make_BuToDstmKK_DstmToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dst], descriptors=['[B+ -> K+ K+ D*(2010)-]cc'])
     return line_alg
 
@@ -2449,7 +2476,7 @@ def make_BuToDstpPiPi_DstpToD0Pi_D0ToHH(process):
         pion = basic_builder.make_soft_pions()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[pion, pion, dst],
         descriptors=['[B+ -> pi+ pi- D*(2010)+]cc'])
     return line_alg
@@ -2467,7 +2494,7 @@ def make_BuToDstpKPi_DstpToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, pion, dst],
         descriptors=[
             '[B+ -> K+ pi- D*(2010)+]cc', '[B+ -> K- pi+ D*(2010)+]cc'
@@ -2485,7 +2512,7 @@ def make_BuToDstpKK_DstpToD0Pi_D0ToHH(process):
         kaon = basic_builder.make_soft_kaons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[kaon, kaon, dst], descriptors=['[B+ -> K+ K- D*(2010)+]cc'])
     return line_alg
 
@@ -2500,7 +2527,7 @@ def make_BuToDstpPbarP_DstpToD0Pi_D0ToHH(process):
         proton = basic_builder.make_soft_protons()
         dzero = d_builder.make_dzero_to_hh()
         dst = d_builder.make_dstar_to_dzeropi(dzero)
-    line_alg = b_builder.make_b2chh(
+    line_alg = b_builder.make_b2cstarhh(
         particles=[proton, proton, dst],
         descriptors=['[B+ -> p+ p~- D*(2010)+]cc'])
     return line_alg
@@ -2512,46 +2539,58 @@ def make_BuToDstpPbarP_DstpToD0Pi_D0ToHH(process):
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToHH(process):
+def make_BuToD0KsLLPi_D0ToHH(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    dzero = d_builder.make_tight_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToHH(process):
+def make_BuToD0KsDDPi_D0ToHH(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
-    dzero = d_builder.make_tight_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToHHWS(process):
+def make_BuToD0KsLLPi_D0ToHHWS(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    dzero = d_builder.make_tight_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToHHWS(process):
+def make_BuToD0KsDDPi_D0ToHHWS(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
-    dzero = d_builder.make_tight_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -2561,98 +2600,122 @@ def make_BuToD0KsDDPi_D0ToHHWS(process):
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToKsLLHH(process):
+def make_BuToD0KsLLPi_D0ToKsLLHH(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToKsLLHH(process):
+def make_BuToD0KsDDPi_D0ToKsLLHH(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToKsDDHH(process):
+def make_BuToD0KsLLPi_D0ToKsDDHH(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToKsDDHH(process):
+def make_BuToD0KsDDPi_D0ToKsDDHH(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
     dzero = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToKsLLHHWS(process):
+def make_BuToD0KsLLPi_D0ToKsLLHHWS(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
     dzero = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToKsLLHHWS(process):
+def make_BuToD0KsDDPi_D0ToKsLLHHWS(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
     dzero = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToKsDDHHWS(process):
+def make_BuToD0KsLLPi_D0ToKsDDHHWS(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
     dzero = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToKsDDHHWS(process):
+def make_BuToD0KsDDPi_D0ToKsDDHHWS(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
     dzero = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    pion = basic_builder.make_soft_pions()
-    line_alg = b_builder.make_b2x(
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -2662,50 +2725,58 @@ def make_BuToD0KsDDPi_D0ToKsDDHHWS(process):
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToHHHH(process):
+def make_BuToD0KsLLPi_D0ToHHHH(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
-    dzero = d_builder.make_tight_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToHHHH(process):
+def make_BuToD0KsDDPi_D0ToHHHH(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
-    dzero = d_builder.make_tight_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
         descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
-        sum_pt_min=6 * GeV,
-        bpvltime_min=0.3 * picosecond)
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsLLPi_D0ToHHHHWS(process):
+def make_BuToD0KsLLPi_D0ToHHHHWS(process, MVAcut=0.7):
     ks_ll = basic_builder.make_ks_LL()
-    dzero = d_builder.make_tight_dzero_to_hhhh_ws(
-        pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_ll, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KsDDPi_D0ToHHHHWS(process):
+def make_BuToD0KsDDPi_D0ToHHHHWS(process, MVAcut=0.7):
     ks_dd = basic_builder.make_ks_DD()
-    dzero = d_builder.make_tight_dzero_to_hhhh_ws(
-        pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions(pi_pidk_max=0)
-    line_alg = b_builder.make_b2x(
+    dzero = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
+    pion = basic_builder.make_tight_pions()
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[dzero, ks_dd, pion],
-        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'])
+        descriptors=['B+ -> D0 KS0 pi+', 'B- -> D0 KS0 pi-'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -2715,90 +2786,114 @@ def make_BuToD0KsDDPi_D0ToHHHHWS(process):
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToHH(process):
+def make_BuToD0KPi0Resolved_D0ToHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToHH(process):
+def make_BuToD0KPi0Merged_D0ToHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToHH(process):
+def make_BuToD0PiPi0Resolved_D0ToHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToHH(process):
+def make_BuToD0PiPi0Merged_D0ToHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToHHWS(process):
+def make_BuToD0KPi0Resolved_D0ToHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToHHWS(process):
+def make_BuToD0KPi0Merged_D0ToHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToHHWS(process):
+def make_BuToD0PiPi0Resolved_D0ToHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToHHWS(process):
+def make_BuToD0PiPi0Merged_D0ToHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -2808,194 +2903,242 @@ def make_BuToD0PiPi0Merged_D0ToHHWS(process):
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToKsDDHH(process):
+def make_BuToD0KPi0Resolved_D0ToKsDDHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToKsDDHH(process):
+def make_BuToD0KPi0Merged_D0ToKsDDHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToKsDDHH(process):
+def make_BuToD0PiPi0Resolved_D0ToKsDDHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToKsDDHH(process):
+def make_BuToD0PiPi0Merged_D0ToKsDDHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_DD(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToKsLLHH(process):
+def make_BuToD0KPi0Resolved_D0ToKsLLHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToKsLLHH(process):
+def make_BuToD0KPi0Merged_D0ToKsLLHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToKsLLHH(process):
+def make_BuToD0PiPi0Resolved_D0ToKsLLHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToKsLLHH(process):
+def make_BuToD0PiPi0Merged_D0ToKsLLHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh(
         k_shorts=basic_builder.make_ks_LL(), pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToKsDDHHWS(process):
+def make_BuToD0KPi0Resolved_D0ToKsDDHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToKsDDHHWS(process):
+def make_BuToD0KPi0Merged_D0ToKsDDHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToKsDDHHWS(process):
+def make_BuToD0PiPi0Resolved_D0ToKsDDHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToKsDDHHWS(process):
+def make_BuToD0PiPi0Merged_D0ToKsDDHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToKsLLHHWS(process):
+def make_BuToD0KPi0Resolved_D0ToKsLLHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToKsLLHHWS(process):
+def make_BuToD0KPi0Merged_D0ToKsLLHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToKsLLHHWS(process):
+def make_BuToD0PiPi0Resolved_D0ToKsLLHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToKsLLHHWS(process):
+def make_BuToD0PiPi0Merged_D0ToKsLLHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_kshh_ws(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -3005,90 +3148,114 @@ def make_BuToD0PiPi0Merged_D0ToKsLLHHWS(process):
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToHHHH(process):
+def make_BuToD0KPi0Resolved_D0ToHHHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToHHHH(process):
+def make_BuToD0KPi0Merged_D0ToHHHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToHHHH(process):
+def make_BuToD0PiPi0Resolved_D0ToHHHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToHHHH(process):
+def make_BuToD0PiPi0Merged_D0ToHHHH(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Resolved_D0ToHHHHWS(process):
+def make_BuToD0KPi0Resolved_D0ToHHHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPi0Merged_D0ToHHHHWS(process):
+def make_BuToD0KPi0Merged_D0ToHHHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    kaon = basic_builder.make_soft_kaons()
+    kaon = basic_builder.make_tight_kaons()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pi0],
-        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'])
+        descriptors=['B+ -> D0 K+ pi0', 'B- -> D0 K- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Resolved_D0ToHHHHWS(process):
+def make_BuToD0PiPi0Resolved_D0ToHHHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_resolved_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPi0Merged_D0ToHHHHWS(process):
+def make_BuToD0PiPi0Merged_D0ToHHHHWS(process, MVAcut=0.7):
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    pion = basic_builder.make_soft_pions()
+    pion = basic_builder.make_tight_pions()
     pi0 = basic_builder.make_merged_pi0s()
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pi0],
-        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'])
+        descriptors=['B+ -> D0 pi+ pi0', 'B- -> D0 pi- pi0'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhhh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhhh.py
index 29fa19bc76c415a78b7d0db300e2094ee6629903..c26741c5f6fbbbb873a4f4026e39e047f715bc7a 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhhh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dhhh.py
@@ -13,17 +13,18 @@
 """
 from __future__ import absolute_import, division, print_function
 
-from GaudiKernel.SystemOfUnits import GeV, picosecond
+from GaudiKernel.SystemOfUnits import GeV, mm, picosecond
 
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
-from RecoConf.reconstruction_objects import make_pvs
+from RecoConf.reconstruction_objects import make_pvs as make_pvs_v1
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
 
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
-from Hlt2Conf.lines.b_to_open_charm.filters import b_to_d0hhh_bdt_filter
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter, b_to_d0hhh_bdt_filter
 
 
 @check_process
@@ -95,15 +96,15 @@ def make_BuToD0PiPiPi_D0ToHH(process, MVACut=-0.7):
         pion = basic_builder.make_pions(pi_pidk_max=None)
     elif process == 'hlt2':
         pion = basic_builder.make_pions()
-    d = d_builder.make_tight_dzero_to_hh()
+    d = d_builder.make_tight_dzero_to_hh(pi_pidk_max=5, k_pidk_min=-5)
     line = b_builder.make_b2chhh(
         particles=[pion, pion, pion, d],
         descriptors=['B+ -> pi+ pi+ pi- D0', 'B- ->  pi- pi- pi+ D0'])
     #track_code = "(NINGENERATION( ((ABSID=='pi+')|(ABSID=='K+')) & (PT<250*MeV), 1 ) <= {ntracks})".format(
     #    ntracks=1)
     #line_alg_filt = ParticleFilter(line, Code=track_code)
-    pvs = make_pvs()
-    line_alg = b_to_d0hhh_bdt_filter(line, pvs, MVACut)
+    pvs_v1 = make_pvs_v1()
+    line_alg = b_to_d0hhh_bdt_filter(line, pvs_v1, MVACut)
     return line_alg
 
 
@@ -124,31 +125,37 @@ def make_BuToD0KPiPi_D0ToHH(process, MVACut=-0.7):
     #track_code = track_code + "& (NINGENERATION( (ABSID=='K+') & (PIDK<-5), 1 ) <= {kpidfail})".format(
     #    kpidfail=0)
     #line_alg_filt = ParticleFilter(line, Code=track_code)
-    pvs = make_pvs()
-    line_alg = b_to_d0hhh_bdt_filter(line, pvs, MVACut)
+    pvs_v1 = make_pvs_v1()
+    line_alg = b_to_d0hhh_bdt_filter(line, pvs_v1, MVACut)
 
     return line_alg
 
 
 # WS lines:
 @check_process
-def make_BuToD0KPiPi_D0ToHHWS(process):
+def make_BuToD0KPiPi_D0ToHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pion, pion],
-        descriptors=['B+ -> D0 K+ pi- pi+', 'B- -> D0 K- pi- pi+'])
+        descriptors=['B+ -> D0 K+ pi- pi+', 'B- -> D0 K- pi- pi+'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPiPi_D0ToHHWS(process):
+def make_BuToD0PiPiPi_D0ToHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pion, pion],
-        descriptors=['B+ -> D0 pi+ pi+ pi-', 'B- -> D0 pi- pi- pi+'])
+        descriptors=['B+ -> D0 pi+ pi+ pi-', 'B- -> D0 pi- pi- pi+'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -158,46 +165,56 @@ def make_BuToD0PiPiPi_D0ToHHWS(process):
 
 
 @check_process
-def make_BuToD0KPiPi_D0ToHHHH(process):
+def make_BuToD0KPiPi_D0ToHHHH(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pion = basic_builder.make_tight_pions()
-    d = d_builder.make_dzero_to_hhhh()
-    line_alg = b_builder.make_b2x(
+    d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pion, pion],
         descriptors=['B+ -> D0 K+ pi- pi+', 'B- -> D0 K- pi- pi+'],
-        bpvltime_min=0.8 * picosecond)
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPiPi_D0ToHHHH(process):
+def make_BuToD0PiPiPi_D0ToHHHH(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
-    d = d_builder.make_dzero_to_hhhh()
-    line_alg = b_builder.make_b2x(
+    d = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pion, pion],
         descriptors=['B+ -> D0 pi+ pi+ pi-', 'B- -> D0 pi- pi- pi+'],
-        bpvltime_min=0.8 * picosecond)
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0KPiPi_D0ToHHHHWS(process):
+def make_BuToD0KPiPi_D0ToHHHHWS(process, MVAcut=0.7):
     kaon = basic_builder.make_tight_kaons()
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, kaon, pion, pion],
-        descriptors=['B+ -> D0 K+ pi- pi+', 'B- -> D0 K- pi- pi+'])
+        descriptors=['B+ -> D0 K+ pi- pi+', 'B- -> D0 K- pi- pi+'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BuToD0PiPiPi_D0ToHHHHWS(process):
+def make_BuToD0PiPiPi_D0ToHHHHWS(process, MVAcut=0.7):
     pion = basic_builder.make_tight_pions()
     d = d_builder.make_dzero_to_hhhh_ws(pi_pidk_max=20, k_pidk_min=-10)
-    line_alg = b_builder.make_b2x(
+    line_alg = b_builder.make_loose_mass_b2x(
         particles=[d, pion, pion, pion],
-        descriptors=['B+ -> D0 pi+ pi+ pi-', 'B- -> D0 pi- pi- pi+'])
+        descriptors=['B+ -> D0 pi+ pi+ pi-', 'B- -> D0 pi- pi- pi+'],
+        bcvtx_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
@@ -222,8 +239,8 @@ def make_BuToD0KKPi_D0ToKPi(process, MVACut=-0.7):
     #track_code = track_code + "& (NINGENERATION( (ABSID=='K+') & (PIDK<-5), 1 ) <= {kpidfail})".format(
     #    kpidfail=1)
     #line_alg_filt = ParticleFilter(line, Code=track_code)
-    pvs = make_pvs()
-    line_alg = b_to_d0hhh_bdt_filter(line, pvs, MVACut)
+    pvs_v1 = make_pvs_v1()
+    line_alg = b_to_d0hhh_bdt_filter(line, pvs_v1, MVACut)
 
     return line_alg
 
@@ -248,8 +265,8 @@ def make_BuToD0PbarPPi_D0ToKPi(process, MVACut=-0.9):
     #track_code = track_code + "& (NINGENERATION( (ABSID=='p+') & (PIDp<-5), 1 ) <= {ppidfail})".format(
     #    ppidfail=0)
     #line_alg_filt = ParticleFilter(line, Code=track_code)
-    pvs = make_pvs()
-    line_alg = b_to_d0hhh_bdt_filter(line, pvs, MVACut)
+    pvs_v1 = make_pvs_v1()
+    line_alg = b_to_d0hhh_bdt_filter(line, pvs_v1, MVACut)
 
     return line_alg
 
@@ -336,36 +353,45 @@ def make_BdToDmPbarPPi_DmToPimPimKp(process):
 # Only Ds -> KKPi
 ############################################################################################
 @check_process
-def make_BdToDsmPiPiPi_DsmToKmKpPim(process):
-    if process == 'spruce':
-        pion = basic_builder.make_pions(pi_pidk_max=None)
-    elif process == 'hlt2':
-        pion = basic_builder.make_pions()
+def make_BdToDsmPiPiPi_DsmToKmKpPim(process, MVACut=0.2):
+    pion = basic_builder.make_pions()
     d = d_builder.make_dsplus_to_kpkmpip()
-    line_alg = b_builder.make_b2chhh(
+    b = b_builder.make_b2chhh(
         particles=[pion, pion, pion, d],
-        descriptors=['[B0 -> pi+ pi+ pi- D_s-]cc'])
+        descriptors=['[B0 -> pi+ pi+ pi- D_s-]cc'],
+        vtx_chi2pdof_max=7,
+        bpvdira_min=0.99994,
+        hhh_am_max=3.5 * GeV,
+        sum_pt_min=5.5 * GeV,
+        bpvltime_min=0.3 * picosecond,
+        bcvtx_sep_min=0.)
     #track_code = "(NINGENERATION( ((ABSID=='pi+')|(ABSID=='K+')) & (PT<250*MeV), 1 ) <= {ntracks})".format(
     #    ntracks=1)
     #line_alg = ParticleFilter(line, Code=track_code)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
 @check_process
-def make_BdToDsmKPiPi_DsmToKmKpPim(process):
-    if process == 'spruce':
-        pion = basic_builder.make_pions(pi_pidk_max=None)
-        kaon = basic_builder.make_kaons(k_pidk_min=None)
-    elif process == 'hlt2':
-        pion = basic_builder.make_pions()
-        kaon = basic_builder.make_kaons(k_pidk_min=5)
+def make_BdToDsmKPiPi_DsmToKmKpPim(process, MVACut=0.2):
+    pion = basic_builder.make_pions()
+    kaon = basic_builder.make_kaons(k_pidk_min=5)
     d = d_builder.make_dsplus_to_kpkmpip()
-    line_alg = b_builder.make_b2chhh(
+    b = b_builder.make_b2chhh(
         particles=[kaon, pion, pion, d],
-        descriptors=['[B0 -> K+ pi- pi+ D_s-]cc'])
+        descriptors=['[B0 -> K+ pi- pi+ D_s-]cc'],
+        vtx_chi2pdof_max=7,
+        bpvdira_min=0.99994,
+        hhh_am_max=3.5 * GeV,
+        sum_pt_min=5.5 * GeV,
+        bpvltime_min=0.3 * picosecond,
+        bcvtx_sep_min=0.)
     #track_code = "(NINGENERATION( ((ABSID=='pi+')|(ABSID=='K+')) & (PT<250*MeV), 1 ) <= {ntracks})".format(
     #    ntracks=1)
     #line_alg = ParticleFilter(line, Code=track_code)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(b, pvs, MVACut)
     return line_alg
 
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dll.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dll.py
index 9e90970d859f7edadfc021bbe3af2b60937702e9..7ebb8735d66161613ed47798bea97c52b3435edc 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dll.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dll.py
@@ -37,7 +37,12 @@ def make_BcToDsmMupMum_DsmToHHH(process):
         am_min=1868.35 * MeV,
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
-        particles=[d, muon, muon], descriptors=['[B_c- -> D_s- mu+ mu-]cc'])
+        particles=[d, muon, muon],
+        descriptors=['[B_c- -> D_s- mu+ mu-]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -50,7 +55,12 @@ def make_BcToDspMumMum_DspToHHH(process):
         am_min=1868.35 * MeV,
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
-        particles=[d, muon, muon], descriptors=['[B_c- -> D_s+ mu- mu-]cc'])
+        particles=[d, muon, muon],
+        descriptors=['[B_c- -> D_s+ mu- mu-]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
 
 
@@ -63,5 +73,10 @@ def make_BcToDsmMumMumWS_DsmToHHH(process):
         am_min=1868.35 * MeV,
         am_max=2068.35 * MeV)
     line_alg = b_builder.make_bc2x(
-        particles=[d, muon, muon], descriptors=['[B_c- -> D_s- mu- mu-]cc'])
+        particles=[d, muon, muon],
+        descriptors=['[B_c- -> D_s- mu- mu-]cc'],
+        am_min=5800 * MeV,
+        am_max=6700 * MeV,
+        am_min_vtx=5800 * MeV,
+        am_max_vtx=6700 * MeV)
     return line_alg
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dmunu.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dmunu.py
index 88209a645d04c509ace7086c58b0676ae42cbb67..8b35b3a3960cf5f51b062bc1ca19689c94547ed5 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dmunu.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dmunu.py
@@ -20,54 +20,83 @@ every function returns a line_alg
 
 from __future__ import absolute_import, division, print_function
 
+from GaudiKernel.SystemOfUnits import MeV
+
+from Hlt2Conf.lines.b_to_open_charm.filters import b_sigmanet_filter
+
+from RecoConf.reconstruction_objects import make_pvs_v2 as make_pvs
+
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
+from GaudiKernel.SystemOfUnits import mm
+
 ##############################################
 # B0->D*munu, D*->D0pi
 ##############################################
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHH(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHH(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     dzero = d_builder.make_dzero_to_kshh(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_LL())
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHH(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHH(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     dzero = d_builder.make_dzero_to_kshh(
         pi_pidk_max=20, k_pidk_min=-10, k_shorts=basic_builder.make_ks_DD())
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToHHHH(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToHHHH(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=20, k_pidk_min=-10)
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Resolved(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Resolved(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     pi0 = basic_builder.make_resolved_pi0s()
     dzero = d_builder.make_dzero_to_kshhpi0(
@@ -78,12 +107,19 @@ def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Resolved(process):
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Resolved(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Resolved(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     pi0 = basic_builder.make_resolved_pi0s()
     dzero = d_builder.make_dzero_to_kshhpi0(
@@ -94,12 +130,19 @@ def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Resolved(process):
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Merged(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Merged(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     pi0 = basic_builder.make_merged_pi0s()
     dzero = d_builder.make_dzero_to_kshhpi0(
@@ -110,12 +153,19 @@ def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Merged(process):
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
 
 
 @check_process
-def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Merged(process):
+def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Merged(process, MVAcut=0.7):
     muon = basic_builder.make_muons()
     pi0 = basic_builder.make_merged_pi0s()
     dzero = d_builder.make_dzero_to_kshhpi0(
@@ -126,5 +176,12 @@ def make_BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Merged(process):
     dzerost = d_builder.make_dstar_to_dzeropi(dzero)
     line_alg = b_builder.make_b2x(
         particles=[dzerost, muon],
-        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'])
+        descriptors=['B0 -> D*(2010)- mu+', 'B0 -> D*(2010)+ mu-'],
+        am_min=2500 * MeV,
+        am_max=5000 * MeV,
+        am_min_vtx=2500 * MeV,
+        am_max_vtx=5000 * MeV,
+        bcvtx_fromdst_sep_min=0 * mm)
+    pvs = make_pvs()
+    line_alg = b_sigmanet_filter(line_alg, pvs, MVAcut)
     return line_alg
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dx_ltu.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dx_ltu.py
index f77dda41aec27e8e821384f6bdb89bd0600bc4f9..847d7f392be862fdb8aaf366026c0f0c62729f9e 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dx_ltu.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/b_to_dx_ltu.py
@@ -15,17 +15,25 @@ from __future__ import absolute_import, division, print_function
 
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
+from GaudiKernel.SystemOfUnits import MeV, GeV
+
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 
 
 @check_process
-def make_BdToDsmK_DsmToHHH_LTU(process):
-    kaon = basic_builder.make_tight_kaons()
-    d = d_builder.make_dsplus_to_hhh()
+def make_BdToDsmK_DsmToKpKmPim_LTU(process):
+    kaon = basic_builder.make_tight_kaons(k_pidk_min=0)
+    d = d_builder.make_dsplus_to_kpkmpip()
     line_alg = b_builder.make_lifetime_unbiased_b2x(
-        particles=[d, kaon], descriptors=['[B0 -> D_s- K+]cc'])
+        particles=[d, kaon],
+        descriptors=['[B0 -> D_s- K+]cc'],
+        am_min=5000 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV)
     return line_alg
 
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_h.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_h.py
index d05c2d4cc53fdf885a7146ad031116e99cb9c013..d412200ebddecad70854c9289d0abc6019633d1f 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_h.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_h.py
@@ -15,6 +15,8 @@ from __future__ import absolute_import, division, print_function
 
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
+from GaudiKernel.SystemOfUnits import MeV, GeV, picosecond
+
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import cbaryon_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
@@ -25,11 +27,17 @@ from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 ##############################################
 @check_process
 def make_LbToLcpPi_LcpToPKPi(process):
-    pion = basic_builder.make_tight_pions()
+    pion = basic_builder.make_tight_pions(pi_pidk_max=0)
     cbaryon = cbaryon_builder.make_lc_to_pkpi()
     line_alg = b_builder.make_lb(
         particles=[cbaryon, pion],
-        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'],
+        am_min=5350 * MeV,
+        am_max=7000 * MeV,
+        am_min_vtx=5350 * MeV,
+        am_max_vtx=7000 * MeV,
+        sum_pt_min=6 * GeV,
+        bpvltime_min=0.3 * picosecond)
     return line_alg
 
 
@@ -78,6 +86,136 @@ def make_LbToLcpPiWS_LcpToPPiPi(process):
     return line_alg
 
 
+# Lb -> Lc h, Lc -> Lambda h
+@check_process
+def make_LbToLcpK_LcpToLambdaLLK(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_lambdak(
+        lm=basic_builder.make_lambda_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpK_LcpToLambdaDDK(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_lambdak(
+        lm=basic_builder.make_lambda_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpK_LcpToLambdaLLPi(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_lambdapi(
+        lm=basic_builder.make_lambda_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpK_LcpToLambdaDDPi(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_lambdapi(
+        lm=basic_builder.make_lambda_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToLambdaLLK(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_lambdak(
+        lm=basic_builder.make_lambda_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToLambdaDDK(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_lambdak(
+        lm=basic_builder.make_lambda_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToLambdaLLPi(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_lambdapi(
+        lm=basic_builder.make_lambda_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToLambdaDDPi(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_lambdapi(
+        lm=basic_builder.make_lambda_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
+# Lb -> Lc h, Lc -> p KS
+@check_process
+def make_LbToLcpK_LcpToPKsLL(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_pks(ks=basic_builder.make_ks_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpK_LcpToPKsDD(process):
+    kaon = basic_builder.make_tight_kaons()
+    cbaryon = cbaryon_builder.make_lc_to_pks(ks=basic_builder.make_ks_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, kaon],
+        descriptors=['[Lambda_b0 -> Lambda_c+ K-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToPKsLL(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_pks(ks=basic_builder.make_ks_LL())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
+@check_process
+def make_LbToLcpPi_LcpToPKsDD(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_lc_to_pks(ks=basic_builder.make_ks_DD())
+    line_alg = b_builder.make_lb(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Lambda_c+ pi-]cc'])
+    return line_alg
+
+
 ##############################################
 # Form the Lb -> Xic+ K-
 ##############################################
@@ -117,6 +255,18 @@ def make_XibmToXic0Pi_Xic0ToPKKPi(process):
     return line_alg
 
 
+##############################################
+# Form the Xib- -> Xic0 Pi+
+##############################################
+@check_process
+def make_XibmToXic0PiWS_Xic0ToPKKPi(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_xic0_to_pkkpi()
+    line_alg = b_builder.make_xib(
+        particles=[cbaryon, pion], descriptors=['[Xi_b- -> Xi_c0 pi+]cc'])
+    return line_alg
+
+
 ##############################################
 # Form the Omegab- -> Omegac0 Pi-
 ##############################################
@@ -131,6 +281,68 @@ def make_OmbmToOmc0Pi_Omc0ToPKKPi(process):
     return line_alg
 
 
+##############################################
+# Form the Omegab- -> Omegac0 Pi+ (WS)
+##############################################
+@check_process
+def make_OmbmToOmc0PiWS_Omc0ToPKKPi(process):
+    pion = basic_builder.make_tight_pions()
+    cbaryon = cbaryon_builder.make_omegac0_to_pkkpi()
+    line_alg = b_builder.make_omegab(
+        particles=[cbaryon, pion],
+        descriptors=['[Omega_b- -> Omega_c0 pi+]cc'],
+    )
+    return line_alg
+
+
+##############################################
+# Form the Omegab- -> Omegac0 Pi- Gamma
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################
+@check_process
+def make_OmbmToOmc0PiGamma_Omc0ToPKKPi(process):
+    pion = basic_builder.make_tightpid_tight_pions()
+    cbaryon = cbaryon_builder.make_omegac0_to_pkkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Omega_c0 pi-]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    gamma = basic_builder.make_photons(et_min=2000 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, gamma],
+        descriptor='[Omega_b- -> Lambda_b0 gamma]cc',
+    )
+    return line_alg
+
+
+##############################################
+# Form the Omegab- -> Omegac0 Pi+ Gamma (WS)
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################
+@check_process
+def make_OmbmToOmc0PiGammaWS_Omc0ToPKKPi(process):
+    pion = basic_builder.make_tightpid_tight_pions()
+    cbaryon = cbaryon_builder.make_omegac0_to_pkkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Omega_c0 pi+]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    gamma = basic_builder.make_photons(et_min=2000 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, gamma],
+        descriptor='[Omega_b- -> Lambda_b0 gamma]cc',
+    )
+    return line_alg
+
+
 ##############################################
 # Form the Lb->LcK
 ##############################################
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hh.py
index 9a035b8814d58096b859dfa9ddf504cd661c58a1..aee3495c4198ee11d73658fda98458ebb6c2e366 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hh.py
@@ -15,7 +15,7 @@ from __future__ import absolute_import, division, print_function
 
 from Hlt2Conf.lines.b_to_open_charm.utils import check_process
 
-from GaudiKernel.SystemOfUnits import GeV, picosecond
+from GaudiKernel.SystemOfUnits import GeV, MeV, picosecond
 
 from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import cbaryon_builder
@@ -106,6 +106,146 @@ def make_Ombc0ToXic0KmPip_Xic0ToPKKPi(process):
     return line_alg
 
 
+##############################################################
+# Form the Omega_b- -> Xi_c+ K- Pi-, Xi_c+ --> p K- pi+
+##############################################################
+@check_process
+def make_OmbmToXicpKPi_XicpToPKPi(process):
+    if process == 'spruce':
+        pion = basic_builder.make_tightpid_tight_pions(pi_pidk_max=None)
+        kaon = basic_builder.make_tightpid_tight_kaons(k_pidk_min=None)
+    elif process == 'hlt2':
+        pion = basic_builder.make_tightpid_tight_pions(pi_pidk_max=-1)
+        kaon = basic_builder.make_tightpid_tight_kaons(k_pidk_min=1)
+    cbaryon = cbaryon_builder.make_tight_xicp_to_pkpi()
+    line_alg = b_builder.make_omegab(
+        particles=[cbaryon, kaon, pion],
+        descriptors=['[Omega_b- -> Xi_c+ K- pi-]cc'])
+    return line_alg
+
+
+##############################################################
+# Form the Omega_b- -> Xi_c+ K- Pi+, Xi_c+ --> p K- pi+ (WS)
+##############################################################
+@check_process
+def make_OmbmToXicpKPiWS_XicpToPKPi(process):
+    if process == 'spruce':
+        pion = basic_builder.make_tightpid_tight_pions(pi_pidk_max=None)
+        kaon = basic_builder.make_tightpid_tight_kaons(k_pidk_min=None)
+    elif process == 'hlt2':
+        pion = basic_builder.make_tightpid_tight_pions()
+        kaon = basic_builder.make_tightpid_tight_kaons()
+    cbaryon = cbaryon_builder.make_tight_xicp_to_pkpi()
+    line_alg = b_builder.make_omegab(
+        particles=[cbaryon, kaon, pion],
+        descriptors=['[Omega_b- -> Xi_c+ K- pi+]cc'])
+    return line_alg
+
+
+##############################################################
+# Form the Omega_b- -> Xi_c+ K- Pi- Gamma, Xi_c+ --> p K- pi+
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################################
+@check_process
+def make_OmbmToXicpKPiGamma_XicpToPKPi(process):
+    if process == 'spruce':
+        pion = basic_builder.make_tightpid_tight_pions(pi_pidk_max=None)
+        kaon = basic_builder.make_tightpid_tight_kaons(k_pidk_min=None)
+    elif process == 'hlt2':
+        pion = basic_builder.make_tightpid_tight_pions()
+        kaon = basic_builder.make_tightpid_tight_kaons()
+    cbaryon = cbaryon_builder.make_tight_xicp_to_pkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, kaon, pion],
+        descriptors=['[Lambda_b0 -> Xi_c+ K- pi-]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    gamma = basic_builder.make_photons(et_min=2000 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, gamma],
+        descriptor='[Omega_b- -> Lambda_b0 gamma]cc')
+    return line_alg
+
+
+##############################################################
+# Form the Omega_b- -> Xi_c+ K- Pi+ Gamma, Xi_c+ --> p K- pi+ (WS)
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################################
+@check_process
+def make_OmbmToXicpKPiGammaWS_XicpToPKPi(process):
+    if process == 'spruce':
+        pion = basic_builder.make_tightpid_tight_pions(pi_pidk_max=None)
+        kaon = basic_builder.make_tightpid_tight_kaons(k_pidk_min=None)
+    elif process == 'hlt2':
+        pion = basic_builder.make_tightpid_tight_pions()
+        kaon = basic_builder.make_tightpid_tight_kaons()
+    cbaryon = cbaryon_builder.make_tight_xicp_to_pkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, kaon, pion],
+        descriptors=['[Lambda_b0 -> Xi_c+ K- pi+]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    gamma = basic_builder.make_photons(et_min=2000 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, gamma],
+        descriptor='[Omega_b- -> Lambda_b0 gamma]cc')
+    return line_alg
+
+
+##############################################
+# Form the Omegab- -> Omegac0 Pi- Pi0
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################
+@check_process
+def make_OmbmToOmc0PiPi0Resolved_Omc0ToPKKPi(process):
+    pion = basic_builder.make_tightpid_tight_pions()
+    cbaryon = cbaryon_builder.make_omegac0_to_pkkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Omega_c0 pi-]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    pi0 = basic_builder.make_resolved_pi0s(pt_min=1500 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, pi0],
+        descriptor='[Omega_b- -> Lambda_b0 pi0]cc',
+    )
+    return line_alg
+
+
+##############################################
+# Form the Omegab- -> Omegac0 Pi+ Pi0 (WS)
+# 1. Hadronic part to obtain a vertex, and require
+# it to have a non-negiligble b-decay lifetime to
+# control the rate.
+# 2. Add the neutral state to cut on the mass window.
+##############################################
+@check_process
+def make_OmbmToOmc0PiPi0ResolvedWS_Omc0ToPKKPi(process):
+    pion = basic_builder.make_tightpid_tight_pions()
+    cbaryon = cbaryon_builder.make_omegac0_to_pkkpi()
+    hadronic = b_builder.make_loose_omegab(
+        particles=[cbaryon, pion],
+        descriptors=['[Lambda_b0 -> Omega_c0 pi+]cc'],
+        am_min=0. * MeV,
+        am_min_vtx=0. * MeV)
+    pi0 = basic_builder.make_resolved_pi0s(pt_min=1500 * MeV)
+    line_alg = b_builder.make_omegab_with_neutral(
+        particles=[hadronic, pi0],
+        descriptor='[Omega_b- -> Lambda_b0 pi0]cc',
+    )
+    return line_alg
+
+
 ##############################################
 # XibToLchh lines
 ##############################################
@@ -149,6 +289,26 @@ def make_XibmToLcpKPi_LcpToPKPi(process):
     return line_alg
 
 
+##############################################################
+# Form the Xi_b-(Om_b-) --> Lc+ K- pi+, Lc+ --> p K- pi+
+##############################################################
+@check_process
+def make_XibmToLcpKPiWS_LcpToPKPi(process):
+    if process == 'spruce':
+        pion = basic_builder.make_soft_pions(pi_pidk_max=None)
+        kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
+        lc = cbaryon_builder.make_lc_to_pkpi(
+            pi_pidk_max=None, k_pidk_min=None, p_pidp_min=None)
+    elif process == 'hlt2':
+        pion = basic_builder.make_soft_pions()
+        kaon = basic_builder.make_soft_kaons()
+        lc = cbaryon_builder.make_lc_to_pkpi()
+    line_alg = b_builder.make_xib2chh(
+        particles=[kaon, pion, lc],
+        descriptors=['[Xi_b- -> K- pi+ Lambda_c+]cc'])
+    return line_alg
+
+
 ##############################################################
 # Form the Xi_b-(Om_b-) --> Lc+ K- K-, Lc+ --> p K- pi+
 ##############################################################
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hhh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hhh.py
index 1b39cae4990d97ef253765c7939746bef3a13abc..11e5c69cfe64bc72805b23e7d01fedb5a3eaca44 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hhh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_cbaryon_hhh.py
@@ -310,6 +310,22 @@ def make_OmbmToOmc0PiPiPi_Omc0ToPKKPi(process):
     return line_alg
 
 
+####################################################################
+# Form the Omega_b- -> Omega_c0 Pi- Pi+ Pi+, Omega_c0 --> p K- K- pi+
+####################################################################
+@check_process
+def make_OmbmToOmc0PiPiPiWS_Omc0ToPKKPi(process):
+    pion = basic_builder.make_pions()
+    cbaryon = cbaryon_builder.make_tight_omegac0_to_pkkpi()
+    line_alg = b_builder.make_omegab2omegachhh(
+        particles=[pion, pion, pion, cbaryon],
+        descriptors=['[Omega_b- -> pi- pi+ pi+ Omega_c0]cc'])
+    #track_code = "(NINGENERATION( ((ABSID=='pi+')|(ABSID=='K+')) & (PT<250*MeV), 1 ) <= {ntracks})".format(
+    #    ntracks=1)
+    #line_alg = ParticleFilter(line, Code=track_code)
+    return line_alg
+
+
 ####################################################################
 # Form the Omega_b- -> Omega_c0 K- Pi+ Pi-, Omega_c0 --> p K- K- pi+
 ####################################################################
@@ -363,3 +379,31 @@ def make_OmbmToOmc0PbarPPi_Omc0ToPKKPi(process):
     #    ppidfail=1)
     #line_alg = ParticleFilter(line, Code=track_code)
     return line_alg
+
+
+####################################################################
+# Form the Omega_b- -> Xi_c0 K- Pi+ Pi-, Xi_c0 --> p K- K- pi+
+####################################################################
+@check_process
+def make_OmbmToXic0KmPipPim_Omc0ToPKKPi(process):
+    pion = basic_builder.make_pions()
+    kaon = basic_builder.make_kaons()
+    cbaryon = cbaryon_builder.make_tight_xic0_to_pkkpi()
+    line_alg = b_builder.make_omegab2omegachhh(
+        particles=[kaon, pion, pion, cbaryon],
+        descriptors=['[Omega_b- -> K- pi+ pi- Xi_c0]cc'])
+    return line_alg
+
+
+####################################################################
+# Form the Omega_b- -> Xi_c0 K- Pi+ Pi+, Xi_c0 --> p K- K- pi+ (WS)
+####################################################################
+@check_process
+def make_OmbmToXic0KmPipPimWS_Omc0ToPKKPi(process):
+    pion = basic_builder.make_pions()
+    kaon = basic_builder.make_kaons()
+    cbaryon = cbaryon_builder.make_tight_xic0_to_pkkpi()
+    line_alg = b_builder.make_omegab2omegachhh(
+        particles=[kaon, pion, pion, cbaryon],
+        descriptors=['[Omega_b- -> K- pi+ pi+ Xi_c0]cc'])
+    return line_alg
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_d.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_d.py
index 16ce4ef0a0f0b6c7efaf951419b6916914825e87..bf463df53747df29ecd982d98c0ddf9f224bfc32 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_d.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_d.py
@@ -20,6 +20,47 @@ from Hlt2Conf.lines.b_to_open_charm.builders import b_builder
 from Hlt2Conf.lines.b_to_open_charm.builders import d_builder
 
 
+# Form the Lb -> Lambda D0, D0 -> Ks h h
+@check_process
+def make_LbToLambdaLLD0_D0ToKsLLHH(process):
+    lm = basic_builder.make_lambda_LL()
+    dz = d_builder.make_dzero_to_kshh(k_shorts=basic_builder.make_ks_LL())
+    line_alg = b_builder.make_xibc(
+        particles=[lm, dz],
+        descriptors=['Lambda_b0 -> Lambda0 D0', 'Lambda_b~0 -> Lambda~0 D0'])
+    return line_alg
+
+
+@check_process
+def make_LbToLambdaLLD0_D0ToKsDDHH(process):
+    lm = basic_builder.make_lambda_LL()
+    dz = d_builder.make_dzero_to_kshh(k_shorts=basic_builder.make_ks_DD())
+    line_alg = b_builder.make_xibc(
+        particles=[lm, dz],
+        descriptors=['Lambda_b0 -> Lambda0 D0', 'Lambda_b~0 -> Lambda~0 D0'])
+    return line_alg
+
+
+@check_process
+def make_LbToLambdaDDD0_D0ToKsLLHH(process):
+    lm = basic_builder.make_lambda_DD()
+    dz = d_builder.make_dzero_to_kshh(k_shorts=basic_builder.make_ks_LL())
+    line_alg = b_builder.make_xibc(
+        particles=[lm, dz],
+        descriptors=['Lambda_b0 -> Lambda0 D0', 'Lambda_b~0 -> Lambda~0 D0'])
+    return line_alg
+
+
+@check_process
+def make_LbToLambdaDDD0_D0ToKsDDHH(process):
+    lm = basic_builder.make_lambda_DD()
+    dz = d_builder.make_dzero_to_kshh(k_shorts=basic_builder.make_ks_DD())
+    line_alg = b_builder.make_xibc(
+        particles=[lm, dz],
+        descriptors=['Lambda_b0 -> Lambda0 D0', 'Lambda_b~0 -> Lambda~0 D0'])
+    return line_alg
+
+
 ###########################################################
 # Form the Xi_bc0 -> D0 p,  D0 --> K- pi+
 # NB: Here, D0 == K- pi+ AND K+ pi-
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_dh.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_dh.py
index 53d8b5c7757811eba5b371c5a6c0cac3de549191..0210a7f810dfcb2736e62bfc9c60b78146ce5f93 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_dh.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/bbaryon_to_lightbaryon_dh.py
@@ -109,19 +109,25 @@ def make_LbToD0PK_D0ToHH(process):
 @check_process
 def make_LbToD0PPi_D0ToHHHH(process):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_tight_dzero_to_hhhh(
+            pi_pidk_max=None, k_pidk_min=None)
         proton = basic_builder.make_soft_protons(p_pidp_min=None)
         pion = basic_builder.make_soft_pions(pi_pidk_max=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        proton = basic_builder.make_tightpid_soft_protons()
-        pion = basic_builder.make_tightpid_soft_pions()
+        dzero = d_builder.make_dzero_to_hhhh(
+            am_min=1.82 * GeV, am_max=1.9 * GeV)
+        proton = basic_builder.make_soft_protons(
+            p_pidp_min=3, p_min=10 * GeV, pt_min=0.5 * GeV)
+        pion = basic_builder.make_soft_pions(
+            pi_pidk_max=2, p_min=3.5 * GeV, pt_min=0.25 * GeV)
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. h+h- combination
     line_alg = b_builder.make_lb2chh(
         particles=[proton, pion, dzero],
         descriptors=['Lambda_b0 -> p+ pi- D0', 'Lambda_b~0 -> p~- pi+ D0'],
         sum_pt_min=6 * GeV,
+        am_min=5.5 * GeV,
+        am_max=5.75 * GeV,
         bpvltime_min=0.3 * picosecond)
     return line_alg
 
@@ -168,19 +174,26 @@ def make_LbToD0PPiWS_D0ToHHHH(process):
 @check_process
 def make_LbToD0PK_D0ToHHHH(process):
     if process == 'spruce':
-        dzero = d_builder.make_dzero_to_hhhh(pi_pidk_max=None, k_pidk_min=None)
+        dzero = d_builder.make_tight_dzero_to_hhhh(
+            pi_pidk_max=None, k_pidk_min=None)
         proton = basic_builder.make_soft_protons(p_pidp_min=None)
         kaon = basic_builder.make_soft_kaons(k_pidk_min=None)
     elif process == 'hlt2':
-        dzero = d_builder.make_dzero_to_hhhh()
-        proton = basic_builder.make_tightpid_soft_protons()
-        kaon = basic_builder.make_tightpid_soft_kaons()
+        #dzero = d_builder.make_tight_dzero_to_hhhh()
+        dzero = d_builder.make_dzero_to_hhhh(
+            am_min=1.82 * GeV, am_max=1.9 * GeV)
+        proton = basic_builder.make_soft_protons(
+            p_pidp_min=3, p_min=10 * GeV, pt_min=0.5 * GeV)
+        kaon = basic_builder.make_soft_kaons(
+            k_pidk_min=-2, p_min=3.5 * GeV, pt_min=0.25 * GeV)
     # note the order we write the decay descriptor in because the b2chh builder makes a
     # cut on the 1,2 i.e. h+h- combination
     line_alg = b_builder.make_lb2chh(
         particles=[proton, kaon, dzero],
         descriptors=['Lambda_b0 -> p+ K- D0', 'Lambda_b~0 -> p~- K+ D0'],
         sum_pt_min=6 * GeV,
+        am_min=5.5 * GeV,
+        am_max=5.75 * GeV,
         bpvltime_min=0.3 * picosecond)
     return line_alg
 
@@ -493,7 +506,7 @@ def make_XibmToDmPPi_DmToHHH(process):
     if process == 'spruce':
         d = d_builder.make_dplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
         proton = basic_builder.make_soft_protons(p_pidp_min=None)
-        pion = basic_builder.make_soft_pions(p_pidp_min=None)
+        pion = basic_builder.make_soft_pions(pi_pidk_max=None)
     elif process == 'hlt2':
         d = d_builder.make_dplus_to_hhh()
         proton = basic_builder.make_tightpid_soft_protons()
@@ -537,7 +550,7 @@ def make_XibmToDsmPPi_DsmToHHH(process):
     if process == 'spruce':
         ds = d_builder.make_dsplus_to_hhh(pi_pidk_max=None, k_pidk_min=None)
         proton = basic_builder.make_soft_protons(p_pidp_min=None)
-        pion = basic_builder.make_soft_pions(p_pidp_min=None)
+        pion = basic_builder.make_soft_pions(pi_pidk_max=None)
     elif process == 'hlt2':
         ds = d_builder.make_dsplus_to_hhh()
         proton = basic_builder.make_tightpid_soft_protons()
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/b_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/b_builder.py
index 0469f510695c36934827786d6ecb7cba959e80ba..333146e9f342e1f8604eb17350b62aa8b33d4a8e 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/b_builder.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/b_builder.py
@@ -37,7 +37,9 @@ def _make_b2x(
         vtx_chi2pdof_max=20.,  # was 10 in Run1+2
         bpvipchi2_max=25.,
         bpvltime_min=0.2 * picosecond,
-        bpvdira_min=0.999):
+        bpvdira_min=0.999,
+        bcvtx_sep_min=None,
+        bcvtx_fromdst_sep_min=None):
     '''
     Default B decay maker: defines default cuts and B mass range.
     '''
@@ -51,6 +53,13 @@ def _make_b2x(
         F.BPVLTIME(pvs) > bpvltime_min,
         F.BPVDIRA(pvs) > bpvdira_min)
 
+    if bcvtx_sep_min is not None:
+        vertex_code &= F.CHILD(1, F.END_VZ) - F.END_VZ > bcvtx_sep_min
+
+    if bcvtx_fromdst_sep_min is not None:
+        vertex_code &= F.CHILD(1, F.CHILD(
+            1, F.END_VZ)) - F.END_VZ > bcvtx_fromdst_sep_min
+
     return ParticleCombiner(
         particles,
         name=name,
@@ -73,6 +82,31 @@ def make_b2x(particles, descriptors, name='B2OCB2XMerger', **decay_arguments):
     return ParticleContainersMerger(b_hadrons, name=name)
 
 
+@configurable
+def make_loose_mass_b2x(particles,
+                        descriptors,
+                        name='B2OCB2XLooseMassMerger',
+                        am_min=4850 * MeV,
+                        am_max=6000 * MeV,
+                        am_min_vtx=4850 * MeV,
+                        am_max_vtx=6000 * MeV,
+                        **decay_arguments):
+    assert len(descriptors) > 0
+    b_hadrons = []
+    for descriptor in descriptors:
+        b_hadrons.append(
+            _make_b2x(
+                particles=particles,
+                descriptor=descriptor,
+                name=name,
+                am_min=am_min,
+                am_max=am_max,
+                am_min_vtx=am_min_vtx,
+                am_max_vtx=am_max_vtx,
+                **decay_arguments))
+    return ParticleContainersMerger(b_hadrons, name=name)
+
+
 @configurable
 def _make_lifetime_unbiased_b2x(particles,
                                 descriptor,
@@ -127,7 +161,7 @@ def _make_b2chh(
         am_max=6000 * MeV,
         am_min_vtx=5000 * MeV,
         am_max_vtx=6000 * MeV,
-        sum_pt_min=5 * GeV,
+        sum_pt_min=5.5 * GeV,
         vtx_chi2pdof_max=20,  # was 10 in Run1+2
         bpvipchi2_max=9,
         bpvltime_min=0.2 * picosecond,
@@ -136,15 +170,17 @@ def _make_b2chh(
         hh_am_max=5.2 * GeV,
         hh_adoca12_max=0.5 * mm,
         hbach_pt_min=500 * MeV,
-        hbach_p_min=5 * GeV):
+        hbach_p_min=5 * GeV,
+        bcvtx_sep_min=-0.5 * mm):
     '''
     Specialised 3-body B decay maker
     '''
 
     combination12_code = require_all(F.MASS < hh_am_max,
+                                     F.MAX(F.P) > hbach_p_min,
+                                     F.MAX(F.PT) > hbach_pt_min,
                                      F.SUM(F.PT) > hh_asumpt_min,
                                      F.DOCA(1, 2) < hh_adoca12_max)
-    # missing: AHASCHILD(ISBASIC & HASTRACK & (PT > {hbach_pt_min}) & (P > {hbach_p_min}) )"
 
     combination_code = require_all(
         in_range(am_min, F.MASS, am_max),
@@ -153,6 +189,7 @@ def _make_b2chh(
     pvs = make_pvs()
     vertex_code = require_all(
         in_range(am_min_vtx, F.MASS, am_max_vtx), F.CHI2DOF < vtx_chi2pdof_max,
+        F.CHILD(3, F.END_VZ) - F.END_VZ > bcvtx_sep_min,
         F.BPVIPCHI2(pvs) < bpvipchi2_max,
         F.BPVLTIME(pvs) > bpvltime_min,
         F.BPVDIRA(pvs) > bpvdira_min)
@@ -183,6 +220,85 @@ def make_b2chh(particles,
     return ParticleContainersMerger(b_hadrons, name=name)
 
 
+@configurable
+def _make_b2cch(
+        particles,
+        descriptor,
+        name="B2OCB2DDHCombiner",
+        am_min=5000 * MeV,
+        am_max=5800 * MeV,
+        am_min_vtx=5000 * MeV,
+        am_max_vtx=5800 * MeV,
+        sum_pt_min=5.5 * GeV,
+        vtx_chi2pdof_max=20,  # was 10 in Run1+2
+        bpvipchi2_max=9,
+        bpvltime_min=0.2 * picosecond,
+        bpvdira_min=0.99995,
+        hbach_pt_min=500 * MeV,
+        hbach_p_min=5 * GeV,
+        bcvtx_sep_min=-0.5 * mm):
+    '''
+    Specialised 3-body double charm B decay maker
+    '''
+
+    combination_code = require_all(
+        in_range(am_min, F.MASS, am_max),
+        F.SUM(F.PT) > sum_pt_min)
+
+    pvs = make_pvs()
+    vertex_code = require_all(
+        in_range(am_min_vtx, F.MASS, am_max_vtx), F.CHI2DOF < vtx_chi2pdof_max,
+        F.CHILD(1, F.END_VZ) - F.END_VZ > bcvtx_sep_min,
+        F.CHILD(2, F.END_VZ) - F.END_VZ > bcvtx_sep_min,
+        F.BPVIPCHI2(pvs) < bpvipchi2_max,
+        F.BPVLTIME(pvs) > bpvltime_min,
+        F.BPVDIRA(pvs) > bpvdira_min)
+
+    return ParticleCombiner(
+        particles,
+        name=name,
+        DecayDescriptor=descriptor,
+        CombinationCut=combination_code,
+        CompositeCut=vertex_code)
+
+
+''' for iteration on descriptors elements '''
+
+
+@configurable
+def make_b2cch(particles,
+               descriptors,
+               name='B2OCB2CCHMerger',
+               **decay_arguments):
+    assert len(descriptors) > 0
+    b_hadrons = []
+    for descriptor in descriptors:
+        b_hadrons.append(
+            _make_b2cch(
+                particles=particles, descriptor=descriptor, **decay_arguments))
+    return ParticleContainersMerger(b_hadrons, name=name)
+
+
+@configurable
+def make_b2cstarhh(particles,
+                   descriptors,
+                   name='B2OCB2CHHMerger',
+                   bcvtx_sep_min=-1000 * mm,
+                   sum_pt_min=5. * GeV,
+                   **decay_arguments):
+    assert len(descriptors) > 0
+    b_hadrons = []
+    for descriptor in descriptors:
+        b_hadrons.append(
+            _make_b2chh(
+                particles=particles,
+                descriptor=descriptor,
+                bcvtx_sep_min=bcvtx_sep_min,
+                sum_pt_min=sum_pt_min,
+                **decay_arguments))
+    return ParticleContainersMerger(b_hadrons, name=name)
+
+
 @configurable
 def _make_b2chhh(
         particles,
@@ -201,7 +317,8 @@ def _make_b2chhh(
         hhh_am_max=4.0 * GeV,
         adoca_max=0.6 * mm,
         hbach_pt_min=500 * MeV,
-        hbach_p_min=5 * GeV):
+        hbach_p_min=5 * GeV,
+        bcvtx_sep_min=None):
     '''
     Specialised 4-body Hb --> (h h h) H_c  decay maker
     '''
@@ -228,6 +345,9 @@ def _make_b2chhh(
         F.BPVLTIME(pvs) > bpvltime_min,
         F.BPVDIRA(pvs) > bpvdira_min)
 
+    if bcvtx_sep_min is not None:
+        vertex_code &= F.CHILD(4, F.END_VZ) - F.END_VZ > bcvtx_sep_min
+
     return ParticleCombiner(
         particles,
         name=name,
@@ -258,6 +378,114 @@ def make_b2chhh(particles,
 ''' b hadrons builders using the make_b2x and make_b2chhh defined above '''
 
 
+@configurable
+def _make_b2dd(
+        particles,
+        descriptor,
+        name="B2OCB2DDCombiner",
+        am_min=4800 * MeV,
+        am_max=5650 * MeV,
+        am_min_vtx=4800 * MeV,
+        am_max_vtx=5650 * MeV,
+        sum_pt_min=5 * GeV,
+        vtx_chi2pdof_max=15.,  # was 10 in Run1+2
+        bpvipchi2_max=15.,
+        bpvltime_min=0.05 * picosecond,
+        bpvdira_min=0.999,
+        bcvtx_sep_min=-1 * mm):
+    '''
+    Specialised B->DD builder
+    '''
+    combination_code = require_all(
+        in_range(am_min, F.MASS, am_max),
+        F.CHILD(1, F.SUM(F.PT)) + F.CHILD(2, F.SUM(F.PT)) > sum_pt_min)
+    pvs = make_pvs()
+    vertex_code = require_all(
+        in_range(am_min_vtx, F.MASS, am_max_vtx), F.CHI2DOF < vtx_chi2pdof_max,
+        F.BPVIPCHI2(pvs) < bpvipchi2_max,
+        F.BPVLTIME(pvs) > bpvltime_min,
+        F.BPVDIRA(pvs) > bpvdira_min)
+
+    if bcvtx_sep_min is not None:
+        vertex_code &= F.CHILD(1, F.END_VZ) - F.END_VZ > bcvtx_sep_min
+        vertex_code &= F.CHILD(2, F.END_VZ) - F.END_VZ > bcvtx_sep_min
+
+    return ParticleCombiner(
+        particles,
+        name=name,
+        DecayDescriptor=descriptor,
+        CombinationCut=combination_code,
+        CompositeCut=vertex_code)
+
+
+@configurable
+def make_b2dd(particles, descriptors, name='B2OCB2DDMerger',
+              **decay_arguments):
+    assert len(descriptors) > 0
+    b_hadrons = []
+    for descriptor in descriptors:
+        b_hadrons.append(
+            _make_b2dd(
+                particles=particles, descriptor=descriptor, **decay_arguments))
+    return ParticleContainersMerger(b_hadrons, name=name)
+
+
+@configurable
+def _make_b2dstd(
+        particles,
+        descriptor,
+        name="B2OCB2DstDCombiner",
+        am_min=4800 * MeV,
+        am_max=5650 * MeV,
+        am_min_vtx=4800 * MeV,
+        am_max_vtx=5650 * MeV,
+        sum_pt_min=5 * GeV,
+        vtx_chi2pdof_max=15.,  # was 10 in Run1+2
+        bpvipchi2_max=15.,
+        bpvltime_min=0.05 * picosecond,
+        bpvdira_min=0.999,
+        bcvtx_sep_min=-1 * mm):
+    '''
+    Specialised B->D*D builder
+    '''
+    combination_code = require_all(
+        in_range(am_min, F.MASS, am_max),
+        F.CHILD(1, F.CHILD(1, F.SUM(F.PT))) + F.CHILD(2, F.SUM(F.PT)) >
+        sum_pt_min)
+    pvs = make_pvs()
+    vertex_code = require_all(
+        in_range(am_min_vtx, F.MASS, am_max_vtx), F.CHI2DOF < vtx_chi2pdof_max,
+        F.BPVIPCHI2(pvs) < bpvipchi2_max,
+        F.BPVLTIME(pvs) > bpvltime_min,
+        F.BPVDIRA(pvs) > bpvdira_min)
+
+    if bcvtx_sep_min is not None:
+        vertex_code &= F.CHILD(1, F.CHILD(1,
+                                          F.END_VZ)) - F.END_VZ > bcvtx_sep_min
+        vertex_code &= F.CHILD(2, F.END_VZ) - F.END_VZ > bcvtx_sep_min
+
+    return ParticleCombiner(
+        particles,
+        name=name,
+        DecayDescriptor=descriptor,
+        CombinationCut=combination_code,
+        CompositeCut=vertex_code)
+
+
+@configurable
+def make_b2dstd(particles,
+                descriptors,
+                name='B2OCB2DstDMerger',
+                **decay_arguments):
+    assert len(descriptors) > 0
+    b_hadrons = []
+    for descriptor in descriptors:
+        b_hadrons.append(
+            _make_b2dstd(
+                particles=particles, descriptor=descriptor, **decay_arguments))
+    return ParticleContainersMerger(b_hadrons, name=name)
+
+
 @configurable
 def make_bc2x(particles,
               descriptors,
@@ -287,6 +515,52 @@ def make_bc2x(particles,
         bpvdira_min=bpvdira_min)
 
 
+@configurable
+def make_bc2dd(particles,
+               descriptors,
+               name="B2OCBC2DDCombiner",
+               am_min=5050 * MeV,
+               am_max=6700 * MeV,
+               am_min_vtx=5050 * MeV,
+               am_max_vtx=6700 * MeV,
+               sum_pt_min=5.5 * GeV,
+               **decay_arguments):
+
+    return make_b2dd(
+        particles=particles,
+        descriptors=descriptors,
+        name=name,
+        am_min=am_min,
+        am_max=am_max,
+        am_min_vtx=am_min_vtx,
+        am_max_vtx=am_max_vtx,
+        sum_pt_min=sum_pt_min,
+        **decay_arguments)
+
+
+@configurable
+def make_bc2dstd(particles,
+                 descriptors,
+                 name="B2OCBC2DstDCombiner",
+                 am_min=5050 * MeV,
+                 am_max=6700 * MeV,
+                 am_min_vtx=5050 * MeV,
+                 am_max_vtx=6700 * MeV,
+                 sum_pt_min=5.5 * GeV,
+                 **decay_arguments):
+
+    return make_b2dstd(
+        particles=particles,
+        descriptors=descriptors,
+        name=name,
+        am_min=am_min,
+        am_max=am_max,
+        am_min_vtx=am_min_vtx,
+        am_max_vtx=am_max_vtx,
+        sum_pt_min=sum_pt_min,
+        **decay_arguments)
+
+
 @configurable
 def make_lb(particles,
             descriptors,
@@ -434,6 +708,27 @@ def make_omegab(particles,
         **decay_arguments)
 
 
+@configurable
+def make_loose_omegab(particles,
+                      descriptors,
+                      name="B2OCOmegab2XLooseCombiner",
+                      am_min=5400 * MeV,
+                      am_max=6800 * MeV,
+                      am_min_vtx=5500 * MeV,
+                      am_max_vtx=6700 * MeV,
+                      **decay_arguments):
+
+    return make_b2x(
+        particles=particles,
+        descriptors=descriptors,
+        name=name,
+        am_min=am_min,
+        am_max=am_max,
+        am_min_vtx=am_min_vtx,
+        am_max_vtx=am_max_vtx,
+        **decay_arguments)
+
+
 @configurable
 def make_omegab2omegachhh(particles,
                           descriptors,
@@ -484,3 +779,46 @@ def make_xibc(
         bpvipchi2_max=bpvipchi2_max,
         bpvltime_min=bpvltime_min,
         bpvdira_min=bpvdira_min)
+
+
+@configurable
+def make_bhadron_neutral_adder(particles,
+                               descriptor,
+                               name="B2OCBhadronNeutralAdder",
+                               am_min=5050 * MeV,
+                               am_max=5650 * MeV,
+                               am_min_vtx=5050 * MeV,
+                               am_max_vtx=5650 * MeV):
+
+    combination_code = in_range(am_min, F.MASS, am_max)
+
+    vertex_code = in_range(am_min_vtx, F.MASS, am_max_vtx)
+
+    return ParticleCombiner(
+        particles,
+        name=name,
+        DecayDescriptor=descriptor,
+        CombinationCut=combination_code,
+        CompositeCut=vertex_code,
+        ParticleCombiner="ParticleAdder")
+
+
+@configurable
+def make_omegab_with_neutral(particles,
+                             descriptor,
+                             name="B2OCOmegab2XNeutralCombiner",
+                             am_min=5400 * MeV,
+                             am_max=6800 * MeV,
+                             am_min_vtx=5500 * MeV,
+                             am_max_vtx=6700 * MeV,
+                             **decay_arguments):
+
+    return make_bhadron_neutral_adder(
+        particles=particles,
+        descriptor=descriptor,
+        name=name,
+        am_min=am_min,
+        am_max=am_max,
+        am_min_vtx=am_min_vtx,
+        am_max_vtx=am_max_vtx,
+        **decay_arguments)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/basic_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/basic_builder.py
index d0ac9eafaf7fdaf3096f5b5fd2d5b239a8e82e36..2c00ccc6ed4437a47622fdf2685a962b0a4694d9 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/basic_builder.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/basic_builder.py
@@ -47,10 +47,16 @@ def filter_particles(make_particles,
 
 
 @configurable
-def make_pions(pi_pidk_max=5., p_min=2 * GeV, pt_min=250 * MeV):
+def make_pions(pi_pidk_max=5.,
+               p_min=2 * GeV,
+               pt_min=250 * MeV,
+               **decay_arguments):
     """Return pions filtered by thresholds common to B2OC decay product selections."""
     pions = filter_particles(
-        make_particles=make_has_rich_long_pions, p_min=p_min, pt_min=pt_min)
+        make_particles=make_has_rich_long_pions,
+        p_min=p_min,
+        pt_min=pt_min,
+        **decay_arguments)
     if pi_pidk_max is not None:
         code = F.PID_K < pi_pidk_max
         pions = ParticleFilter(pions, F.FILTER(code))
@@ -244,6 +250,7 @@ def make_twobody(particles,
                  adoca12_max=0.5 * mm,
                  vchi2pdof_max=10,
                  bpvvdchi2_min=36,
+                 bpvipchi2_min=0,
                  bpvdira_min=0):
     """
     A generic 2body decay maker.
@@ -266,6 +273,7 @@ def make_twobody(particles,
     pvs = make_pvs()
     vertex_code = require_all(F.CHI2DOF < vchi2pdof_max,
                               F.BPVFDCHI2(pvs) > bpvvdchi2_min,
+                              F.BPVIPCHI2(pvs) > bpvipchi2_min,
                               F.BPVDIRA(pvs) > bpvdira_min,
                               in_range(am_min, F.MASS, am_max))
 
@@ -290,6 +298,7 @@ def make_threebody(particles,
                    adoca23_max=0.5 * mm,
                    vchi2pdof_max=10,
                    bpvvdchi2_min=36,
+                   bpvipchi2_min=0,
                    bpvdira_min=0):
     """
     A generic 3body decay maker. Makes use of ThreeBodyCombiner
@@ -320,6 +329,7 @@ def make_threebody(particles,
     pvs = make_pvs()
     vertex_code = require_all(F.CHI2DOF < vchi2pdof_max,
                               F.BPVFDCHI2(pvs) > bpvvdchi2_min,
+                              F.BPVIPCHI2(pvs) > bpvipchi2_min,
                               F.BPVDIRA(pvs) > bpvdira_min,
                               in_range(am_min, F.MASS, am_max))
     return ParticleCombiner(
@@ -347,6 +357,7 @@ def make_fourbody(particles,
                   adoca34_max=0.5 * mm,
                   vchi2pdof_max=10,
                   bpvvdchi2_min=36,
+                  bpvipchi2_min=0,
                   bpvdira_min=0):
     """
     A generic 4body decay maker. Makes use of N4BodyCombinerWithPVs
@@ -378,6 +389,7 @@ def make_fourbody(particles,
     pvs = make_pvs()
     vertex_code = require_all(F.CHI2DOF < vchi2pdof_max,
                               F.BPVFDCHI2(pvs) > bpvvdchi2_min,
+                              F.BPVIPCHI2(pvs) > bpvipchi2_min,
                               F.BPVDIRA(pvs) > bpvdira_min,
                               in_range(am_min, F.MASS, am_max))
     return ParticleCombiner(
@@ -410,11 +422,9 @@ def make_selected_ks(input_ks,
     '''
     pvs = make_pvs()
     code = require_all(
-        #F.MAXDOCACHI2CUT(adocachi2cut), # not available for ParticleFilter
-        F.CHI2DOF <
-        chi2vx)  # for a two body decay the NDOF of the vertex fit is just 1
-    # missing: NINTREE((ABSID=="pi+") & (P > {pi_pmin}))>1.5
-    #          NINTREE((ABSID=="pi+") & (MIPCHI2DV(PRIMARY) > {pi_mipchi2pv}))>1.5
+        F.MAXDOCACHI2CUT(adocachi2cut), F.CHI2DOF < chi2vx,
+        F.MIN(F.P) > pi_pmin,
+        F.MIN(F.MINIPCHI2(pvs)) > pi_mipchi2pv)
     if bpvvdchi2_min is not None:
         code = require_all(code, F.BPVFDCHI2(pvs) > bpvvdchi2_min)
     return ParticleFilter(input_ks, F.FILTER(code), name=name)
@@ -504,6 +514,8 @@ def make_kstar0(name="B2OCKstarCombiner",
                 make_pvs=make_pvs,
                 am_min=742 * MeV,
                 am_max=1042 * MeV,
+                pi_pidk_max=5,
+                k_pidk_min=-5,
                 pi_p_min=2 * GeV,
                 pi_pt_min=100 * MeV,
                 k_p_min=2 * GeV,
@@ -517,8 +529,9 @@ def make_kstar0(name="B2OCKstarCombiner",
     "HH" cuts.
     '''
 
-    pions = make_pions(p_min=pi_p_min, pt_min=pi_pt_min)
-    kaons = make_kaons(p_min=k_p_min, pt_min=k_pt_min)
+    pions = make_pions(
+        pi_pidk_max=pi_pidk_max, p_min=pi_p_min, pt_min=pi_pt_min)
+    kaons = make_kaons(k_pidk_min=k_pidk_min, p_min=k_p_min, pt_min=k_pt_min)
     descriptor = '[K*(892)0 -> pi- K+]cc'
     combination_code = require_all(
         in_range(am_min, F.MASS, am_max),
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/cbaryon_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/cbaryon_builder.py
index 068144942fc20e6dc94959f1d2484df90cc0892e..13c050349f993825328094f9fbd48d4a043ff539 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/cbaryon_builder.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/cbaryon_builder.py
@@ -27,8 +27,8 @@ from . import d_builder
 
 
 @configurable
-def make_lc_to_pkpi(am_min=2236 * MeV,
-                    am_max=2336 * MeV,
+def make_lc_to_pkpi(am_min=2260 * MeV,
+                    am_max=2320 * MeV,
                     pi_pidk_max=5,
                     k_pidk_min=-5,
                     p_pidp_min=-5,
@@ -64,8 +64,8 @@ def make_lc_to_pkpi(am_min=2236 * MeV,
 
 
 @configurable
-def make_lc_to_pkk(am_min=2236 * MeV,
-                   am_max=2336 * MeV,
+def make_lc_to_pkk(am_min=2260 * MeV,
+                   am_max=2320 * MeV,
                    k_pidk_min=-5,
                    p_pidp_min=-5,
                    k_p_min=2 * GeV,
@@ -96,8 +96,8 @@ def make_lc_to_pkk(am_min=2236 * MeV,
 
 
 @configurable
-def make_lc_to_ppipi(am_min=2236 * MeV,
-                     am_max=2336 * MeV,
+def make_lc_to_ppipi(am_min=2260 * MeV,
+                     am_max=2320 * MeV,
                      pi_pidk_max=5,
                      p_pidp_min=-5,
                      pi_p_min=2 * GeV,
@@ -127,6 +127,90 @@ def make_lc_to_ppipi(am_min=2236 * MeV,
         **decay_arguments)
 
 
+@configurable
+def make_lc_to_lambdapi(lm,
+                        am_min=2236 * MeV,
+                        am_max=2336 * MeV,
+                        pi_pidk_max=5,
+                        pi_p_min=2 * GeV,
+                        pi_pt_min=250 * MeV,
+                        **decay_arguments):
+    """
+    Return a Lambda_c+ -> Lambda0 pi+ decay maker.
+
+    Parameters
+    ----------
+    **decay_arguments : keyword arguments are passed on to the HC->3body
+                        maker
+    """
+    pions = basic_builder.make_pions(
+        pi_pidk_max=pi_pidk_max, p_min=pi_p_min, pt_min=pi_pt_min)
+
+    return basic_builder.make_twobody(
+        particles=[lm, pions],
+        descriptor="[Lambda_c+ -> Lambda0 pi+]cc",
+        am_min=am_min,
+        am_max=am_max,
+        name="B2OCLc2LambdaPiCombiner",
+        **decay_arguments)
+
+
+@configurable
+def make_lc_to_lambdak(lm,
+                       am_min=2236 * MeV,
+                       am_max=2336 * MeV,
+                       k_pidk_min=-5,
+                       k_p_min=2 * GeV,
+                       k_pt_min=250 * MeV,
+                       **decay_arguments):
+    """
+    Return a Lambda_c+ -> Lambda0 K+ decay maker.
+
+    Parameters
+    ----------
+    **decay_arguments : keyword arguments are passed on to the HC->3body
+                        maker
+    """
+    kaons = basic_builder.make_kaons(
+        k_pidk_min=k_pidk_min, p_min=k_p_min, pt_min=k_pt_min)
+
+    return basic_builder.make_twobody(
+        particles=[lm, kaons],
+        descriptor="[Lambda_c+ -> Lambda0 K+]cc",
+        am_min=am_min,
+        am_max=am_max,
+        name="B2OCLc2LambdaKCombiner",
+        **decay_arguments)
+
+
+@configurable
+def make_lc_to_pks(ks,
+                   am_min=2236 * MeV,
+                   am_max=2336 * MeV,
+                   p_pidp_min=-5,
+                   p_p_min=2 * GeV,
+                   p_pt_min=250 * MeV,
+                   **decay_arguments):
+    """
+    Return a Lambda_c+ -> p KS decay maker.
+
+    Parameters
+    ----------
+    **decay_arguments : keyword arguments are passed on to the HC->3body
+                        maker
+    """
+    protons = basic_builder.make_protons(
+        p_pidp_min=p_pidp_min, p_min=p_p_min, pt_min=p_pt_min)
+
+    return basic_builder.make_twobody(
+        particles=[protons, ks],
+        descriptor="[Lambda_c+ -> p+ KS0]cc",
+        am_min=am_min,
+        am_max=am_max,
+        name="B2OCLc2PKSCombiner",
+        **decay_arguments)
+
+
 @configurable
 def make_xicp_to_pkpi(am_min=2418 * MeV,
                       am_max=2518 * MeV,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/d_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/d_builder.py
index 08f5846c0f768b07a370f76093440f58f07e0e77..06f8a3770bfbba64e511af5e916fdee01d6a486b 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/d_builder.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/builders/d_builder.py
@@ -191,12 +191,14 @@ def make_tight_dzero_to_kpi(**decay_arguments):
 
 
 @configurable
-def make_tight_dzero_to_hh(**decay_arguments):
+def make_tight_dzero_to_hh(pi_pidk_max=2, k_pidk_min=-2, **decay_arguments):
     """ tighter D0's for B->D0 hhh """
     return make_dzero_to_hh(
         name='B2OCD02HHTightCombiner',
         am_min=1805 * MeV,
         am_max=1925 * MeV,
+        pi_pidk_max=pi_pidk_max,
+        k_pidk_min=k_pidk_min,
         **decay_arguments)
 
 
@@ -287,12 +289,14 @@ def make_dzero_to_hh_ws(name='B2OCD02HHWSCombiner',
 
 
 @configurable
-def make_tight_dzero_to_hh_ws(**decay_arguments):
+def make_tight_dzero_to_hh_ws(pi_pidk_max=2, k_pidk_min=-2, **decay_arguments):
     """ tighter D0's for B->D0 hh """
     return make_dzero_to_hh_ws(
         name='B2OCD02HHWSTightCombiner',
         am_min=1805 * MeV,
         am_max=1925 * MeV,
+        pi_pidk_max=pi_pidk_max,
+        k_pidk_min=k_pidk_min,
         **decay_arguments)
 
 
@@ -1098,12 +1102,14 @@ def make_dzero_to_hhhh(name='B2OCD02HHHHCombiner',
 
 
 @configurable
-def make_tight_dzero_to_hhhh(**decay_arguments):
+def make_tight_dzero_to_hhhh(pi_pidk_max=2, k_pidk_min=-2, **decay_arguments):
     """ tighter D0's for B->D0 hh """
     return make_dzero_to_hhhh(
         name='B2OCD02HHHHTightCombiner',
         am_min=1805 * MeV,
         am_max=1925 * MeV,
+        pi_pidk_max=pi_pidk_max,
+        k_pidk_min=k_pidk_min,
         **decay_arguments)
 
 
@@ -1222,12 +1228,16 @@ def make_dzero_to_hhhh_ws(name='B2OCD02HHHHWSCombiner',
 
 
 @configurable
-def make_tight_dzero_to_hhhh_ws(**decay_arguments):
+def make_tight_dzero_to_hhhh_ws(pi_pidk_max=2,
+                                k_pidk_min=-2,
+                                **decay_arguments):
     """ tighter D0's for B->D0 hh """
     return make_dzero_to_hhhh_ws(
         name='B2OCD02HHHHWSTightCombiner',
         am_min=1805 * MeV,
         am_max=1925 * MeV,
+        pi_pidk_max=pi_pidk_max,
+        k_pidk_min=k_pidk_min,
         **decay_arguments)
 
 
@@ -1428,7 +1438,11 @@ def make_dstar_to_dzeropi(dzero,
                           deltamass_min=90 * MeV,
                           vchi2pdof_max=10,
                           bpvvdchi2_min=36,
-                          bpvdira_min=0):
+                          bpvdira_min=0,
+                          soft_pi_pidk_max=5.,
+                          soft_pi_p_min=2 * GeV,
+                          soft_pi_pt_min=250 * MeV,
+                          soft_pi_mipchi2_min=4):
     """
     Return D*+ maker for tagging a D0 with a soft pion.
 
@@ -1448,7 +1462,11 @@ def make_dstar_to_dzeropi(dzero,
         F.BPVDIRA(pvs) > bpvdira_min,
         in_range(_D0_M + deltamass_min, F.MASS, _D0_M + deltamass_max))
 
-    soft_pions = basic_builder.make_pions()
+    soft_pions = basic_builder.make_pions(
+        pi_pidk_max=soft_pi_pidk_max,
+        p_min=soft_pi_p_min,
+        pt_min=soft_pi_pt_min,
+        mipchi2_min=soft_pi_mipchi2_min)
 
     dstp_to_dzeropip = ParticleCombiner([dzero, soft_pions],
                                         name='B2OCDstp2D0PipCombiner',
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/filters.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/filters.py
index a7523c0e55d05ecc6fc71c93926cdb91a7c6c2d7..b14ae52ba064f4d1b25d749f3033e12dd617a271 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/filters.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/filters.py
@@ -16,7 +16,13 @@
 """
 from __future__ import absolute_import, division, print_function
 
-from Hlt2Conf.algorithms import require_all, ParticleFilterWithTMVA
+from Hlt2Conf.algorithms import require_all as require_all_loki
+from Hlt2Conf.algorithms import ParticleFilterWithTMVA
+
+import Functors as F
+import Functors.math as fmath
+
+from Hlt2Conf.algorithms_thor import require_all, ParticleFilter
 
 
 def b_bdt_filter(particles, pvs, MVACut=-0.2):
@@ -29,8 +35,9 @@ def b_bdt_filter(particles, pvs, MVACut=-0.2):
         "log_B_IPCHI2_OWNPV": "log(BPVIPCHI2())",
         "log_B_IP_OWNPV": "log(BPVIP())"
     }
-    code = require_all("VALUE('LoKi::Hybrid::DictValue/BeautyBDT')>{MVACut}"
-                       ).format(MVACut=MVACut)
+    code = require_all_loki(
+        "VALUE('LoKi::Hybrid::DictValue/BeautyBDT')>{MVACut}").format(
+            MVACut=MVACut)
     return ParticleFilterWithTMVA(
         name="B2OCBBDTFilter",
         particles=particles,
@@ -61,8 +68,8 @@ def b_to_dh_bdt_filter(particles, pvs, MVACut=-0.2, with_neutrals=False):
         "log_D_MINIPCHI2": log_D_MINIPCHI2_var,
         "log_Bac_MINIPCHI2": "log(CHILD(MIPCHI2DV(PRIMARY),2))"
     }
-    code = require_all("VALUE('LoKi::Hybrid::DictValue/B2DHBDT')>{MVACut}"
-                       ).format(MVACut=MVACut)
+    code = require_all_loki("VALUE('LoKi::Hybrid::DictValue/B2DHBDT')>{MVACut}"
+                            ).format(MVACut=MVACut)
     return ParticleFilterWithTMVA(
         name="B2OCB2DHBDTFilter",
         particles=particles,
@@ -111,8 +118,9 @@ def b_to_d0hhh_bdt_filter(particles, pvs, MVACut=-0.9):
         "log_Max_D0dau_IPCHI2_OWNPV":
         "log(max(CHILD(MIPCHI2DV(PRIMARY),4,1),CHILD(MIPCHI2DV(PRIMARY),4,2)))"
     }
-    code = require_all("VALUE('LoKi::Hybrid::DictValue/B2D0HHHBDT')>{MVACut}"
-                       ).format(MVACut=MVACut)
+    code = require_all_loki(
+        "VALUE('LoKi::Hybrid::DictValue/B2D0HHHBDT')>{MVACut}").format(
+            MVACut=MVACut)
     return ParticleFilterWithTMVA(
         name="B2OCB2D0HHHBDTFilter",
         particles=particles,
@@ -121,3 +129,37 @@ def b_to_d0hhh_bdt_filter(particles, pvs, MVACut=-0.9):
         mva_name="B2D0HHHBDT",
         xml_file=BDTWeightsFile,
         bdt_vars=BDTVars)
+
+
+def b_sigmanet_filter(particles, pvs, MVACut=0.):
+
+    mva = (F.MVA(
+        MVAType='SigmaNet',
+        Config={
+            'File':
+            "${PARAMFILESROOT}/data/Hlt2B2OC_B_SigmaNet_Run3.json",
+            'Name':
+            "B2OC_SigmaNet_Generic",
+            'Lambda':
+            "2.0",
+            'NLayers':
+            "3",
+            'InputSize':
+            "6",
+            'Monotone_Constraints':
+            '[1,-1,-1,-1,-1,-1]',
+            'Variables':
+            'log_B_PT,B_ETA,log_B_DIRA,log_B_ENDVERTEX_CHI2,log_B_IPCHI2_OWNPV,log_B_IP_OWNPV',
+        },
+        Inputs={
+            "log_B_PT": fmath.log(F.PT),
+            "B_ETA": F.ETA,
+            "log_B_DIRA": fmath.log(1. - F.BPVDIRA(pvs)),
+            "log_B_ENDVERTEX_CHI2": fmath.log(F.CHI2DOF),
+            "log_B_IPCHI2_OWNPV": fmath.log(F.BPVIPCHI2(pvs)),
+            "log_B_IP_OWNPV": fmath.log(F.BPVIP(pvs)),
+        }) > MVACut)
+
+    code = require_all(mva)
+
+    return ParticleFilter(particles, F.FILTER(code))
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/hlt2_b2oc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/hlt2_b2oc.py
index 60fb489006af27924d242508974dda1034d4a745..9de9fa05ec6a0ff7bcb056f6e8301fa885c99df7 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/hlt2_b2oc.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/hlt2_b2oc.py
@@ -29,12 +29,17 @@ from __future__ import absolute_import, division, print_function
 
 from Moore.config import HltLine, register_line_builder
 
-from Hlt2Conf.standard_particles import make_long_pions, make_up_pions
+###from RecoConf.hlt1_tracking import default_ft_decoding_version
 
-from Hlt2Conf.lines.b_to_open_charm.utils import update_makers, check_overlap
+from RecoConf.reconstruction_objects import make_pvs
+
+from PyConf.Algorithms import GetFlavourTaggingParticles
+
+from Hlt2Conf.standard_particles import make_has_rich_long_pions
+
+from Hlt2Conf.lines.b_to_open_charm.utils import update_makers
 
 from Hlt2Conf.lines.b_to_open_charm import prefilters
-from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 
 from Hlt2Conf.lines.b_to_open_charm import b_to_dh
 from Hlt2Conf.lines.b_to_open_charm import b_to_dx_ltu
@@ -84,6 +89,8 @@ update_makers(line_makers, bbaryon_to_lightbaryon_dh)
 update_makers(line_makers, bbaryon_to_lightbaryon_dd)
 update_makers(line_makers, bbaryon_to_lightbaryon_ddh)
 
+###default_ft_decoding_version.global_bind(value=6)
+
 ############################################
 # Define functions for line booking        #
 # Make it possible to register lines       #
@@ -139,20 +146,18 @@ def make_flavor_tagging_hlt2_lines(line_dict=hlt2_lines,
                            maker_name='make_%s' % decay,
                            prescale=1):
             line_alg = line_makers[maker_name](process=PROCESS)
-            LongT = basic_builder.get_particles_WithPVs(
-                make_long_pions, mipchi2_min=0)
-            UpstreamT = basic_builder.get_particles_WithPVs(
-                make_up_pions, mipchi2_min=0)
-            LongALL = basic_builder.get_particles_WithPVs(make_long_pions)
-            UpstreamALL = basic_builder.get_particles_WithPVs(make_up_pions)
+            pvs = make_pvs()
+            longPions = make_has_rich_long_pions()
+            longTaggingParticles = GetFlavourTaggingParticles(
+                BCandidates=line_alg,
+                TaggingParticles=longPions,
+                PrimaryVertices=pvs)
+
             return HltLine(
                 name=name,
                 prescale=prescale,
                 algs=prefilters.b2oc_prefilters() + [line_alg],
-                extra_outputs=[("LongTracks", LongT),
-                               ("UpstreamTracks", UpstreamT),
-                               ("LongTracksOS", LongALL),
-                               ("UpstreamTracksOS", UpstreamALL)])
+                extra_outputs=[('LongTaggingParticles', longTaggingParticles)])
 
 
 # lines need isolation info, currently the same as default
@@ -200,14 +205,9 @@ def make_mva_filtered_hlt2_lines(line_dict=hlt2_lines,
 
 # default lines without any further configuration
 default_lines = [
-    # lines from b_to_dh
-    'BdToDsmK_DsmToHHH',
-
-    # commented out due to Rec#208
-    #'BdToDsstmPi_DsstmToDsmGamma_DsmToHHH',
-    #'BdToDsstmK_DsstmToDsmGamma_DsmToHHH',
     'BuToD0Pi_D0ToHH',
     'BuToD0K_D0ToHH',
+    ###'BdToDsmPi_DsmToKpKmPim_Turcal',
 
     # commented out due to Rec#208
     #'BuToD0Pi_D0ToKsLLPi0Resolved',
@@ -219,13 +219,9 @@ default_lines = [
     #'BuToD0K_D0ToKsLLPi0Merged',
     #'BuToD0K_D0ToKsDDPi0Merged',
     'BuToD0Pi_D0ToKsLLHH',
-    'BuToD0Pi_D0ToKsDDHH',
+    #'BuToD0Pi_D0ToKsDDHH',
     'BuToD0K_D0ToKsLLHH',
-    'BuToD0K_D0ToKsDDHH',
-    'BuToD0Pi_PartialD0ToKsLLHH',
-    'BuToD0Pi_PartialD0ToKsDDHH',
-    'BuToD0K_PartialD0ToKsLLHH',
-    'BuToD0K_PartialD0ToKsDDHH',
+    #'BuToD0K_D0ToKsDDHH',
 
     # commented out due to Rec#208
     #'BuToD0K_D0ToHHPi0Resolved',
@@ -274,113 +270,46 @@ default_lines = [
     #'BuToDst0K_Dst0ToD0Gamma_D0ToHHHH',
     #'BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHH',
     #'BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHH',
-    'BcToD0Pi_D0ToHH',
-    'BcToD0K_D0ToHH',
-    'BcToD0Pi_D0ToKsLLHH',
-    'BcToD0Pi_D0ToKsDDHH',
-    'BcToD0K_D0ToKsLLHH',
-    'BcToD0K_D0ToKsDDHH',
-    'BcToD0Pi_D0ToHHHH',
-    'BcToD0K_D0ToHHHH',
-    'BcToDmKst0_DmToHHH',
-    'BcToDsmKst0_DsmToHHH',
-    #'BcToDmPhi_DmToHHH',
-    #'BcToDsmPhi_DsmToHHH',
-    'BcToDmKsLL_DmToHHH',
-    'BcToDmKsDD_DmToHHH',
-    'BcToDsmKsLL_DsmToHHH',
-    'BcToDsmKsDD_DsmToHHH',
-    'BcToDmF0_DmToHHH',
-    'BcToDsmF0_DsmToHHH',
 
     # lines from b_to_dhh
-    'BdToD0PiPi_D0ToHH',
     'BdToD0KPi_D0ToHH',
-    'BdToD0KK_D0ToHH',
-    'BdToD0PiPi_D0ToKsLLHH',
-    'BdToD0PiPi_D0ToKsDDHH',
     'BdToD0KPi_D0ToKsLLHH',
-    'BdToD0KPi_D0ToKsDDHH',
-    'BdToD0KK_D0ToKsLLHH',
-    'BdToD0KK_D0ToKsDDHH',
+    #'BdToD0KPi_D0ToKsDDHH',
 
     # commented out due to Rec#208
-    #'BdToD0PiPi_D0ToHHPi0Resolved',
-    #'BdToD0PiPi_D0ToHHPi0Merged',
     #'BdToD0KPi_D0ToHHPi0Resolved',
     #'BdToD0KPi_D0ToHHPi0Merged',
-    #'BdToD0KK_D0ToHHPi0Resolved',
-    #'BdToD0KK_D0ToHHPi0Merged',
-    'BdToD0PiPi_D0ToHHHH',
     'BdToD0KPi_D0ToHHHH',
-    'BdToD0KK_D0ToHHHH',
     'BdToD0PbarP_D0ToHHHH',
-    'BdToDsmKsLLPi_DsmToHHH',
-    'BdToDsmKsDDPi_DsmToHHH',
-    'BdToDmKsLLPi_DmToHHH',
-    'BdToDmKsDDPi_DmToHHH',
 
     # commented out due to Rec#208
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHH',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToHH',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHH',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHH',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHH',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHH',
 
     # commented out due to Rec#208
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsLLHH',
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsDDHH',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToKsLLHH',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToKsDDHH',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToKsLLHH',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToKsDDHH',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsLLHH',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsDDHH',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToKsLLHH',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToKsDDHH',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsLLHH',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsDDHH',
 
     # commented out due to Rec#208
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Resolved',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToHHPi0Resolved',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Resolved',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved',
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Merged',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToHHPi0Merged',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Merged',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged',
 
     # commented out due to Rec#208
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHHH',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToHHHH',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHHH',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHHH',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHHHH',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHHH',
 
     # commented out due to Rec#208
     #'BdToDsstmKsLLPi_DsstmToDsmGamma_DsmToHHH',
     #'BdToDsstmKsDDPi_DsstmToDsmGamma_DsmToHHH',
     'BuToDmPiPi_DmToHHH',
     'BuToDpPiPi_DpToHHH',
-    'BuToDmKPi_DmToHHH',
-    'BuToDpKPi_DpToHHH',
     'BuToDmKK_DmToHHH',
-    'BuToDpKK_DpToHHH',
-    'BuToDpPbarP_DpToHHH',
     'BuToDsmPiPi_DsmToHHH',
-    'BuToDspPiPi_DspToHHH',
-    'BuToDsmKPi_DsmToHHH',
-    'BuToDspKPi_DspToHHH',
     'BuToDsmKK_DsmToHHH',
-    'BuToDspKK_DspToHHH',
-    'BuToDspPbarP_DspToHHH',
     'BuToDstmPiPi_DstmToD0Pi_D0ToHH',
     'BuToDstpPiPi_DstpToD0Pi_D0ToHH',
     'BuToDstmKPi_DstmToD0Pi_D0ToHH',
@@ -388,14 +317,6 @@ default_lines = [
     'BuToDstmKK_DstmToD0Pi_D0ToHH',
     'BuToDstpKK_DstpToD0Pi_D0ToHH',
     'BuToDstpPbarP_DstpToD0Pi_D0ToHH',
-    'BuToD0KsLLPi_D0ToHH',
-    'BuToD0KsDDPi_D0ToHH',
-    'BuToD0KsLLPi_D0ToKsLLHH',
-    'BuToD0KsDDPi_D0ToKsLLHH',
-    'BuToD0KsLLPi_D0ToKsDDHH',
-    'BuToD0KsDDPi_D0ToKsDDHH',
-    'BuToD0KsLLPi_D0ToHHHH',
-    'BuToD0KsDDPi_D0ToHHHH',
 
     # commented out because pi0 builder crash hlt2_pp_thor test
     #'BuToD0PiPi0Resolved_D0ToHH',
@@ -419,28 +340,13 @@ default_lines = [
     #'BuToD0KPi0Resolved_D0ToHHHH',
     #'BuToD0KPi0Merged_D0ToHHHH',
 
-    # lines from b_to_dll
-    'BcToDsmMupMum_DsmToHHH',
-    'BcToDspMumMum_DspToHHH',
-
     # lines from b_to_dmunu
     'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHH',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHH',
+    #'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHH',
     'BdToDstmMuNu_DstmToD0Pi_D0ToHHHH',
 
     # lines from b_to_dhhh
-    'BdToDmPiPiPi_DmToPimPimKp',
-    'BdToDmKPiPi_DmToPimPimKp',
-    'BdToDmKKPi_DmToPimPimKp',
-    'BdToDmPbarPPi_DmToPimPimKp',
     'BdToDsmKKPi_DsmToKmKpPim',
-    'BdToDsmPbarPPi_DsmToKmKpPim',
-    'BuToD0PiPiPi_D0ToKsLLHH',
-    'BuToD0PiPiPi_D0ToKsDDHH',
-    'BuToD0KPiPi_D0ToKsLLHH',
-    'BuToD0KPiPi_D0ToKsDDHH',
-    'BuToD0PiPiPi_D0ToHHHH',
-    'BuToD0KPiPi_D0ToHHHH',
 
     # lines from b_to_dd
     'BuToD0Dp_D0ToHH_DpToHHH',
@@ -451,30 +357,39 @@ default_lines = [
     'BuToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH',
     'BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH',
     'BuToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH',
+    'BcToD0Dp_D0ToHH_DpToHHH',
+    'BcToD0Dp_D0ToHHHH_DpToHHH',
+    'BcToD0Dp_D0ToKsLLHH_DpToHHH',
+    #'BcToD0Dp_D0ToKsDDHH_DpToHHH',
+    'BcToD0Dsp_D0ToHH_DspToHHH',
+    'BcToD0Dsp_D0ToHHHH_DspToHHH',
+    'BcToD0Dsp_D0ToKsLLHH_DspToHHH',
+    #'BcToD0Dsp_D0ToKsDDHH_DspToHHH',
+    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToHH',
+    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH',
+    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsLLHH',
+    #'BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsDDHH',
+    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH',
+    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH',
+    #'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsDDHH',
+    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsLLHH',
 
     # lines from b_to_ddh
     'BdToD0D0Kst_D0ToHHOrHHHH',
     'BdToDstD0K_DstToD0Pi_D0ToHH_D0ToHH',
 
     # lines from b_to_ddh_standalone
-    'BdToD0DPi_D0ToKPiOrKPiPiPi_DToHHH',
-    'BdToD0DK_D0ToKPiOrKPiPiPi_DToHHH',
     'BdToD0D0KsLL_D0ToKPiOrKPiPiPi',
-    'BdToD0D0KsDD_D0ToKPiOrKPiPiPi',
-    'BdToD0D0Phi_D0ToKPiOrKPiPiPi',
+    #'BdToD0D0KsDD_D0ToKPiOrKPiPiPi',
     'BdToDpDmKsLL_DpToHHH',
-    'BdToDpDmKsDD_DpToHHH',
+    #'BdToDpDmKsDD_DpToHHH',
     'BdToDpDmKst_DpToHHH',
     'BdToDpDmPhi_DpToHHH',
-    'BdToDsDPhi_DsToHHH_DToHHH',
-    'BdToDspDmRho0_DspToHHH_DmToHHH',
-    'BdToDsD0Pi_DsToHHH_D0ToKPiOrKPiPiPi',
-    'BdToDspDsmKst_DspToHHH',
     'BdToDspDsmPhi_DspToHHH',
     'BdToDstD0Pi_DstToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
     'BdToDstD0K_DstToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
     'BdToDstDmKSLL_DstToD0Pi_D0ToKPiOrKPiPiPi_DmToHHH',
-    'BdToDstDmKsDD_DstToD0Pi_D0ToKPiOrKPiPiPi_DmToHHH',
+    #'BdToDstDmKsDD_DstToD0Pi_D0ToKPiOrKPiPiPi_DmToHHH',
     'BdToDstpDmKst_DstpToD0Pi_D0ToKPiOrKPiPiPi_DmToHHH',
     'BdToDstmDpKst_DstmToD0Pi_D0ToKPiOrKPiPiPi_DpToHHH',
     #'BdToDst0DK_Dst0ToD0Gamma_D0ToKPiOrKPiPiPi_DToHHH',
@@ -486,25 +401,17 @@ default_lines = [
     #'BdToDst0DsPi_Dst0ToD0Pi0Resolved_D0ToKPiOrKPiPiPi_DsToHHH',
     #'BdToDst0DsPi_Dst0ToD0Pi0Merged_D0ToKPiOrKPiPiPi_DsToHHH',
     'BdToDstpDstmKsLL_DstpToD0Pi_D0ToKPiorKPiPiPi',
-    'BdToDstpDstmKsDD_DstpToD0Pi_D0ToKPiorKPiPiPi',
+    #'BdToDstpDstmKsDD_DstpToD0Pi_D0ToKPiorKPiPiPi',
     'BdToDstpDstmPhi_DstpToD0Pi_D0ToKPiOrKPiPiPi',
     #'BdToDsstpD0Pi_DsstpToDspGamma_DspToHHH_D0ToKPiOrKPiPiPi',
-    'BuToD0D0Pi_D0ToKPiOrKPiPiPi',
-    'BuToD0D0K_D0ToKPiOrKPiPiPi',
     'BuToDpDmPi_DpToHHH',
     'BuToDpDmK_DpToHHH',
-    'BuToDspDmPi_DspToHHH_DmToHHH',
-    'BuToDspDsmPi_DsToHHH',
-    'BuToDspDsmK_DspToHHH',
     'BuToD0DpKsLL_D0ToKPiOrKPiPiPi_DpToHHH',
-    'BuToD0DpKsDD_D0ToKPiOrKPiPiPi_DpToHHH',
-    'BuToD0DpKst_D0ToKPiOrKPiPiPi_DpToHHH',
-    'BuToDsD0Phi_DsToHHH_D0ToKPiOrKPiPiPi',
-    'BuToDspD0Rho0_DspToHHH_D0ToKPiOrKPiPiPi',
+    #'BuToD0DpKsDD_D0ToKPiOrKPiPiPi_DpToHHH',
     'BuToDstDPi_DstToD0Pi_D0ToKPiOrKPiPiPi_DToHHH',
     'BuToDstDK_DstToD0Pi_D0ToKPiOrKPiPiPi_DToHHH',
     'BuToDstpD0KsLL_DstpToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
-    'BuToDstpD0KsDD_DstpToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
+    #'BuToDstpD0KsDD_DstpToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
     'BuToDstpD0Kst_DstpToD0Pi_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
     'BuToDstmDspPi_DstmToD0Pi_D0ToKPiOrKPiPiPi_DspToHHH',
     #'BuToDst0D0K_Dst0ToD0Gamma_D0ToKPiOrKPiPiPi_D0ToKPiOrKPiPiPi',
@@ -518,8 +425,6 @@ default_lines = [
     # lines from b_to_cbaryon_hh
     'BdToXic0PPi_Xic0ToPKKPi',
     'BdToXic0PK_Xic0ToPKKPi',
-    'BdToOmc0PPi_Omc0ToPKKPi',
-    'BdToOmc0PK_Omc0ToPKKPi',
     'BuToLcmPPi_LcmToPKPi',
     'BuToLcpPPi_LcpToPKPi',
     'BuToLcmPK_LcmToPKPi',
@@ -539,23 +444,34 @@ default_lines = [
     'LbToLcpPi_LcpToPKPi',
     'LbToLcpPi_LcpToPKK',
     'LbToLcpK_LcpToPKPi',
+    'LbToLcpPi_LcpToLambdaLLPi',
+    #'LbToLcpPi_LcpToLambdaDDPi',
+    'LbToLcpPi_LcpToLambdaLLK',
+    #'LbToLcpPi_LcpToLambdaDDK',
+    'LbToLcpK_LcpToLambdaLLPi',
+    #'LbToLcpK_LcpToLambdaDDPi',
+    'LbToLcpK_LcpToLambdaLLK',
+    #'LbToLcpK_LcpToLambdaDDK',
+    'LbToLcpPi_LcpToPKsLL',
+    #'LbToLcpPi_LcpToPKsDD',
+    'LbToLcpK_LcpToPKsLL',
+    #'LbToLcpK_LcpToPKsDD',
     'LbToXicpK_XicpToPKPi',
     'Xib0ToXicpPi_XicpToPKPi',
     'Xib0ToXicpK_XicpToPKPi',
     'XibmToXic0Pi_Xic0ToPKKPi',
+    'XibmToXic0PiWS_Xic0ToPKKPi',
     'XibmToXic0K_Xic0ToPKKPi',
     'OmbmToOmc0Pi_Omc0ToPKKPi',
     'OmbmToOmc0K_Omc0ToPKKPi',
     'Xibc0ToXiccpPi_XiccpToXic0Pi_Xic0ToPKKPi',
     'Xibc0ToXiccpPi_XiccpToLcpKmPip_LcpToPKPi',
     'Xibc0ToXiccpPi_XiccpToPDpKm_DpToPipPipKm',
-    'Xibc0ToXicpPi_XicpToPKPi',
     'Xibc0ToLcpPi_LcpToPKPi',
     'Xibc0ToLcpK_LcpToPKPi',
     'XibcpToXiccppPi_XiccppToXicpPi_XicpToPKPi',
     'XibcpToXiccppPi_XiccppToLcpKPiPi_LcpToPKPi',
     'XibcpToXic0Pi_Xic0ToPKKPi',
-    'Ombc0ToXicpK_XicpToPKPi',
 
     # lines from bbaryon_to_cbaryon_hh
     'LbToXic0PiPi_Xic0ToPKKPi',
@@ -564,31 +480,18 @@ default_lines = [
     'LbToOmc0PiPi_Omc0ToPKKPi',
     'LbToOmc0KPi_Omc0ToPKKPi',
     'LbToOmc0KK_Omc0ToPKKPi',
-    'LbToLcpKsLLK_LcpToPKPi',
-    'LbToLcpKsDDK_LcpToPKPi',
     'XibmToLcpPiPi_LcpToPKPi',
     'XibmToLcpKPi_LcpToPKPi',
     'XibmToLcpKK_LcpToPKPi',
     'XibmToXicpPiPi_XicpToPKPi',
     'XibmToXicpKPi_XicpToPKPi',
-    'XibmToXicpKK_XicpToPKPi',
     'Xibc0ToXic0PiPi_Xic0ToPKKPi',
-    'XibcpToLcpPiPi_LcpToPKPi',
-    'XibcpToLcpKmPip_LcpToPKPi',
-    'XibcpToXicpPiPi_XicpToPKPi',
     'Ombc0ToXic0KmPip_Xic0ToPKKPi',
+    'OmbmToXicpKPi_XicpToPKPi',
 
     # lines from bbaryon_to_cbaryon_hhh
-    'LbToLcpPiPiPi_LcpToPPiPi',
-    'LbToLcpPiPiPi_LcpToPKPi',
     'LbToLcpPiPiPi_LcpToPKK',
     'LbToLcpKPiPi_LcpToPKPi',
-    'LbToLcpKKPi_LcpToPKPi',
-    'LbToLcpPbarPPi_LcpToPKPi',
-    'Xib0ToXicpPiPiPi_XicpToPKPi',
-    'Xib0ToXicpKPiPi_XicpToPKPi',
-    'Xib0ToXicpKKPi_XicpToPKPi',
-    'Xib0ToXicpPbarPPi_XicpToPKPi',
     'XibmToXic0PiPiPi_Xic0ToPKKPi',
     'XibmToXic0KPiPi_Xic0ToPKKPi',
     'XibmToXic0KKPi_Xic0ToPKKPi',
@@ -597,6 +500,8 @@ default_lines = [
     'OmbmToOmc0KPiPi_Omc0ToPKKPi',
     'OmbmToOmc0KKPi_Omc0ToPKKPi',
     'OmbmToOmc0PbarPPi_Omc0ToPKKPi',
+    'OmbmToXic0KmPipPim_Omc0ToPKKPi',
+    'OmbmToXic0KmPipPimWS_Omc0ToPKKPi',
 
     # lines from bbaryon_to_cbaryon_d
     'LbToLcpDm_LcpToPKPi_DmToPimPimKp',
@@ -605,44 +510,34 @@ default_lines = [
     'Ombc0ToXic0D0_Xic0ToPKKPi_D0ToKPi',
 
     # lines from bbaryon_to_lightbaryon_d
+    'LbToLambdaLLD0_D0ToKsLLHH',
+    #'LbToLambdaLLD0_D0ToKsDDHH',
+    #'LbToLambdaDDD0_D0ToKsLLHH',
+    #'LbToLambdaDDD0_D0ToKsDDHH',
     'LbToXimDsp_DspToKKPi_XimToLambdaLLPi',
-    'LbToXimDsp_DspToKKPi_XimToLambdaDDPi',
-    'LbToDsmP_DsmToHHH',
+    #'LbToXimDsp_DspToKKPi_XimToLambdaDDPi',
     'Xib0ToXimDp_DpToKPiPi_XimToLambdaLLPi',
-    'Xib0ToXimDp_DpToKPiPi_XimToLambdaDDPi',
+    #'Xib0ToXimDp_DpToKPiPi_XimToLambdaDDPi',
     'XibmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaLLPi',
-    'XibmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
+    #'XibmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
     'OmbmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaLLPi',
-    'OmbmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
+    #'OmbmToXimD0_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
     'OmbmToOmmD0_D0ToKPiOrKPiPiPi_OmmToLambdaLLK',
-    'OmbmToOmmD0_D0ToKPiOrKPiPiPi_OmmToLambdaDDK',
-    'XibcpToPD0_D0ToKPi',
+    #'OmbmToOmmD0_D0ToKPiOrKPiPiPi_OmmToLambdaDDK',
 
     # lines from bbaryon_to_lightbaryon_dh
-    'LbToD0PPi_D0ToHH',
-    'LbToD0PK_D0ToHH',
     'LbToD0PPi_D0ToKsLLHH',
-    'LbToD0PPi_D0ToKsDDHH',
+    #'LbToD0PPi_D0ToKsDDHH',
     'LbToD0PK_D0ToKsLLHH',
-    'LbToD0PK_D0ToKsDDHH',
+    #'LbToD0PK_D0ToKsDDHH',
     'LbToD0PPi_D0ToHHHH',
     'LbToD0PK_D0ToHHHH',
-    'XibmToDmPPi_DmToHHH',
-    'XibmToDmPK_DmToHHH',
-    'XibmToDsmPPi_DsmToHHH',
-    'XibmToDsmPK_DsmToHHH',
     'XibmToDstmPPi_DstmToD0Pi_D0ToHH',
     'XibmToDstmPK_DstmToD0Pi_D0ToHH',
     'LbToXimD0Kp_D0ToKPiOrKPiPiPi_XimToLambdaLLPi',
-    'LbToXimD0Kp_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
+    #'LbToXimD0Kp_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
     'Xib0ToXimD0Pip_D0ToKPiOrKPiPiPi_XimToLambdaLLPi',
-    'Xib0ToXimD0Pip_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
-    'Xibc0ToPD0K_D0ToKPi',
-    'XibcpToPDpK_DpToKmPipPip',
-
-    # lines from bbaryon_to_lightbaryon_dd
-    'LbToD0DsmP_D0ToKPiOrKPiPiPi_DsmToHHH',
-    'XibcpToPD0D0_D0ToKPi',
+    #'Xib0ToXimD0Pip_D0ToKPiOrKPiPiPi_XimToLambdaDDPi',
 
     # lines from bbaryon_to_lightbaryon_ddh
     'LbToDpDmPK_DpToHHH',
@@ -654,13 +549,9 @@ prescaled_lines = {
     'BuToD0Pi_D0ToHHWS': 0.1,
     'BuToD0K_D0ToHHWS': 0.1,
     'BuToD0Pi_D0ToKsLLHHWS': 0.1,
-    'BuToD0Pi_D0ToKsDDHHWS': 0.1,
+    #'BuToD0Pi_D0ToKsDDHHWS': 0.1,
     'BuToD0K_D0ToKsLLHHWS': 0.1,
-    'BuToD0K_D0ToKsDDHHWS': 0.1,
-    'BuToD0Pi_PartialD0ToKsLLHHWS': 0.1,
-    'BuToD0Pi_PartialD0ToKsDDHHWS': 0.1,
-    'BuToD0K_PartialD0ToKsLLHHWS': 0.1,
-    'BuToD0K_PartialD0ToKsDDHHWS': 0.1,
+    #'BuToD0K_D0ToKsDDHHWS': 0.1,
 
     # commented out due to Rec#208
     #'BuToD0Pi_D0ToHHPi0ResolvedWS': 0.1,
@@ -709,42 +600,24 @@ prescaled_lines = {
     #'BuToDst0K_Dst0ToD0Gamma_D0ToHHHHWS': 0.1,
     #'BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHHWS': 0.1,
     #'BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHHWS': 0.1,
-    'BcToD0Pi_D0ToHHWS': 0.1,
-    'BcToD0K_D0ToHHWS': 0.1,
-    'BcToD0Pi_D0ToKsLLHHWS': 0.1,
-    'BcToD0Pi_D0ToKsDDHHWS': 0.1,
-    'BcToD0K_D0ToKsLLHHWS': 0.1,
-    'BcToD0K_D0ToKsDDHHWS': 0.1,
-    'BcToD0Pi_D0ToHHHHWS': 0.1,
-    'BcToD0K_D0ToHHHHWS': 0.1,
-    'BcToDmKst0_DmToHHHWS': 0.1,
-    'BcToDsmKst0_DsmToHHHWS': 0.1,
 
     # lines from b_to_dx_ltu
-    'BdToDsmK_DsmToHHH_LTU': 0.1,
+    'BdToDsmK_DsmToKpKmPim_LTU': 0.01,
 
     # lines from b_to_dhh
     'BdToD0PiPiWS_D0ToHH': 0.1,
     'BdToD0KPiWS_D0ToHH': 0.1,
     'BdToD0KKWS_D0ToHH': 0.1,
     'BdToD0PiPiWS_D0ToKsLLHH': 0.1,
-    'BdToD0PiPiWS_D0ToKsDDHH': 0.1,
+    #'BdToD0PiPiWS_D0ToKsDDHH': 0.1,
     'BdToD0KPiWS_D0ToKsLLHH': 0.1,
-    'BdToD0KPiWS_D0ToKsDDHH': 0.1,
+    #'BdToD0KPiWS_D0ToKsDDHH': 0.1,
     'BdToD0KKWS_D0ToKsLLHH': 0.1,
-    'BdToD0KKWS_D0ToKsDDHH': 0.1,
+    #'BdToD0KKWS_D0ToKsDDHH': 0.1,
     'BdToD0PiPiWS_D0ToHHHH': 0.1,
     'BdToD0KPiWS_D0ToHHHH': 0.1,
     'BdToD0KKWS_D0ToHHHH': 0.1,
     'BdToD0PbarPWS_D0ToHHHH': 0.1,
-    'BuToD0KsLLPi_D0ToHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToHHWS': 0.1,
-    'BuToD0KsLLPi_D0ToKsLLHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToKsLLHHWS': 0.1,
-    'BuToD0KsLLPi_D0ToKsDDHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToKsDDHHWS': 0.1,
-    'BuToD0KsLLPi_D0ToHHHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToHHHHWS': 0.1,
 
     # commented out due to Rec#208
     #'BdToD0PiPiWS_D0ToHHPi0Resolved': 0.1,
@@ -818,32 +691,31 @@ prescaled_lines = {
     #'BdToDst0KPiWS_Dst0ToD0Pi0Resolved_D0ToHHHH': 0.1,
     #'BdToDst0KKWS_Dst0ToD0Pi0Resolved_D0ToHHHH': 0.1,
 
-    # lines from b_to_dll
-    'BcToDsmMumMumWS_DsmToHHH': 0.1,
-
     # lines from b_to_dhhh
-    'BuToD0KPiPi_D0ToHHWS': 0.1,
-    'BuToD0PiPiPi_D0ToHHWS': 0.1,
-    'BuToD0KPiPi_D0ToHHHHWS': 0.1,
-    'BuToD0PiPiPi_D0ToHHHHWS': 0.1,
 
     # lines from bbaryon_to_cbaryon_h
     'LbToLcpPiWS_LcpToPPiPi': 0.1,
     'LbToLcpPiWS_LcpToPKK': 0.1,
+    'OmbmToOmc0PiWS_Omc0ToPKKPi': 0.1,
+
+    # lines from bbaryon_to_cbaryon_hh
+    'XibmToLcpKPiWS_LcpToPKPi': 0.1,
+    'OmbmToXicpKPiWS_XicpToPKPi': 0.1,
 
     # lines from bbaryon_to_cbaryon_hhh
     'LbToLcpPiPiPiWS_LcpToPPiPi': 0.1,
     'LbToLcpPiPiPiWS_LcpToPKK': 0.1,
+    'OmbmToOmc0PiPiPiWS_Omc0ToPKKPi': 0.1,
 
     # lines from bbaryon_to_lightbaryon_dh
     'LbToD0PPi_D0ToKsLLHHWS': 0.1,
-    'LbToD0PPi_D0ToKsDDHHWS': 0.1,
+    #'LbToD0PPi_D0ToKsDDHHWS': 0.1,
     'LbToD0PK_D0ToKsLLHHWS': 0.1,
-    'LbToD0PK_D0ToKsDDHHWS': 0.1,
+    #'LbToD0PK_D0ToKsDDHHWS': 0.1,
     'LbToD0PPiWS_D0ToKsLLHH': 0.1,
-    'LbToD0PPiWS_D0ToKsDDHH': 0.1,
+    #'LbToD0PPiWS_D0ToKsDDHH': 0.1,
     'LbToD0PKWS_D0ToKsLLHH': 0.1,
-    'LbToD0PKWS_D0ToKsDDHH': 0.1,
+    #'LbToD0PKWS_D0ToKsDDHH': 0.1,
     'LbToD0PPi_D0ToHHHHWS': 0.1,
     'LbToD0PK_D0ToHHHHWS': 0.1,
     'LbToD0PPiWS_D0ToHHHH': 0.1,
@@ -853,7 +725,57 @@ prescaled_lines = {
 # lines need flavor tagging
 flavor_tagging_lines = [
     # lines from b_to_dh
-    'BdToDsmPi_DsmToHHH',
+    'BdToDsmPi_DsmToKpKmPim',
+    'BdToDsmK_DsmToKpKmPim',
+
+    # commented out due to Rec#208
+    #'BdToDsstmPi_DsstmToDsmGamma_DsmToKpKmPim',
+    #'BdToDsstmK_DsstmToDsmGamma_DsmToKpKmPim',
+    'BdToDmPi_DmToPimPimKp',
+
+    # lines from b_to_dhh
+    'BdToD0KK_D0ToHH',
+    'BdToD0KK_D0ToHHHH',
+
+    # commented out due to Rec#208
+    #'BdToD0KK_D0ToHHPi0Resolved',
+    #'BdToD0KK_D0ToHHPi0Merged',
+    'BdToD0KK_D0ToKsLLHH',
+    #'BdToD0KK_D0ToKsDDHH',
+    'BdToD0PiPi_D0ToHH',
+    'BdToD0PiPi_D0ToHHHH',
+
+    # commented out due to Rec#208
+    #'BdToD0PiPi_D0ToHHPi0Resolved',
+    #'BdToD0PiPi_D0ToHHPi0Merged',
+    'BdToD0PiPi_D0ToKsLLHH',
+    #'BdToD0PiPi_D0ToKsDDHH',
+
+    # commented out due to Rec#208
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHH',
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHHH',
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Merged',
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHHPi0Resolved',
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToKsDDHH',
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToKsLLHH',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHH',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHHH',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsDDHH',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToKsLLHH',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHH',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHHH',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Merged',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHHPi0Resolved',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsDDHH',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToKsLLHH',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHH',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHHH',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Merged',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHHPi0Resolved',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsDDHH',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToKsLLHH',
 ]
 
 # lines need isolation variables
@@ -862,14 +784,14 @@ isolation_lines = []
 # lines need to be filtered by a MVA algorithm
 mva_filtered_lines = {
     # lines from b_to_dh
-    'BdToDmPi_DmToPimPimKp': -1.,
-    'BdToDmK_DmToPimPimKp': -1.,
+    'BdToDmK_DmToPimPimKp': 0.,
 
     # lines from b_to_dhhh
-    'BuToD0PiPiPi_D0ToHH': -0.7,
-    'BuToD0KPiPi_D0ToHH': -0.7,
-    'BuToD0KKPi_D0ToKPi': -0.7,
-    'BuToD0PbarPPi_D0ToKPi': -0.9,
+    # commented out due to missing ThOr implementantion of TMVA
+    #'BuToD0PiPiPi_D0ToHH': -0.7,
+    #'BuToD0KPiPi_D0ToHH': -0.7,
+    #'BuToD0KKPi_D0ToKPi': -0.7,
+    #'BuToD0PbarPPi_D0ToKPi': -0.9,
 }
 
 ################################
@@ -877,12 +799,6 @@ mva_filtered_lines = {
 # with generic functions       #
 ################################
 
-lines_list = [
-    default_lines,
-    list(prescaled_lines.keys()), flavor_tagging_lines, isolation_lines,
-    list(mva_filtered_lines.keys())
-]
-check_overlap(lines_list)
 make_default_hlt2_lines(
     line_dict=hlt2_lines, line_makers=line_makers, default_lines=default_lines)
 make_prescaled_hlt2_lines(
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/spruce_b2oc.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/spruce_b2oc.py
index c47a5523dbc9e7f64c6c44f45582de975206ae0e..553f3c62348924e00ed5ea2c87708d6f5ece18d7 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/spruce_b2oc.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/spruce_b2oc.py
@@ -29,23 +29,31 @@ from __future__ import absolute_import, division, print_function
 
 from Moore.config import SpruceLine, register_line_builder
 
-from Hlt2Conf.standard_particles import make_long_pions, make_up_pions
+from RecoConf.reconstruction_objects import make_pvs
 
-from Hlt2Conf.lines.b_to_open_charm.utils import update_makers, check_overlap
+from PyConf.Algorithms import GetFlavourTaggingParticles
+
+from Hlt2Conf.standard_particles import make_has_rich_long_pions
+
+from Hlt2Conf.lines.b_to_open_charm.utils import update_makers
 
 from Hlt2Conf.lines.b_to_open_charm import prefilters
-from Hlt2Conf.lines.b_to_open_charm.builders import basic_builder
 
 from Hlt2Conf.lines.b_to_open_charm import b_to_dh
 from Hlt2Conf.lines.b_to_open_charm import b_to_dx_ltu
+from Hlt2Conf.lines.b_to_open_charm import b_to_dll
 from Hlt2Conf.lines.b_to_open_charm import b_to_dhh
 from Hlt2Conf.lines.b_to_open_charm import b_to_dmunu
 from Hlt2Conf.lines.b_to_open_charm import b_to_dhhh
 from Hlt2Conf.lines.b_to_open_charm import b_to_dd
 from Hlt2Conf.lines.b_to_open_charm import b_to_ddh_standalone
 from Hlt2Conf.lines.b_to_open_charm import b_to_cbaryon_hh
+from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_cbaryon_h
 from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_cbaryon_hh
+from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_cbaryon_hhh
 from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_cbaryon_dh
+from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_lightbaryon_d
+from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_lightbaryon_dh
 from Hlt2Conf.lines.b_to_open_charm import bbaryon_to_lightbaryon_dd
 
 PROCESS = 'spruce'
@@ -58,14 +66,19 @@ sprucing_lines = {}
 line_makers = {}
 update_makers(line_makers, b_to_dh)
 update_makers(line_makers, b_to_dx_ltu)
+update_makers(line_makers, b_to_dll)
 update_makers(line_makers, b_to_dhh)
 update_makers(line_makers, b_to_dmunu)
 update_makers(line_makers, b_to_dhhh)
 update_makers(line_makers, b_to_dd)
 update_makers(line_makers, b_to_ddh_standalone)
 update_makers(line_makers, b_to_cbaryon_hh)
+update_makers(line_makers, bbaryon_to_cbaryon_h)
 update_makers(line_makers, bbaryon_to_cbaryon_hh)
+update_makers(line_makers, bbaryon_to_cbaryon_hhh)
 update_makers(line_makers, bbaryon_to_cbaryon_dh)
+update_makers(line_makers, bbaryon_to_lightbaryon_d)
+update_makers(line_makers, bbaryon_to_lightbaryon_dh)
 update_makers(line_makers, bbaryon_to_lightbaryon_dd)
 
 ############################################
@@ -123,20 +136,18 @@ def make_flavor_tagging_sprucing_lines(line_dict=sprucing_lines,
                                maker_name='make_%s' % decay,
                                prescale=1):
             line_alg = line_makers[maker_name](process=PROCESS)
-            LongT = basic_builder.get_particles_WithPVs(
-                make_long_pions, mipchi2_min=0)
-            UpstreamT = basic_builder.get_particles_WithPVs(
-                make_up_pions, mipchi2_min=0)
-            LongALL = basic_builder.get_particles_WithPVs(make_long_pions)
-            UpstreamALL = basic_builder.get_particles_WithPVs(make_up_pions)
+            pvs = make_pvs()
+            longPions = make_has_rich_long_pions()
+            longTaggingParticles = GetFlavourTaggingParticles(
+                BCandidates=line_alg,
+                TaggingParticles=longPions,
+                PrimaryVertices=pvs)
+
             return SpruceLine(
                 name=name,
                 prescale=prescale,
                 algs=prefilters.b2oc_prefilters() + [line_alg],
-                extra_outputs=[("LongTracks", LongT),
-                               ("UpstreamTracks", UpstreamT),
-                               ("LongTracksOS", LongALL),
-                               ("UpstreamTracksOS", UpstreamALL)])
+                extra_outputs=[('LongTaggingParticles', longTaggingParticles)])
 
 
 # lines need isolation info, currently the same as default
@@ -185,13 +196,9 @@ def make_mva_filtered_sprucing_lines(line_dict=sprucing_lines,
 # default lines without any further configuration
 default_lines = [
     # lines from b_to_dh
-    'BdToDsmPi_DsmToHHH',
-    'BdToDsmK_DsmToHHH',
 
     # commented out due to Rec#208
     #'BdToDsstmK_DsstmToDsmGamma_DsmToHHH',
-    'BuToD0Pi_D0ToHH',
-    'BuToD0K_D0ToHH',
 
     # commented out due to Rec#208
     #'BuToD0Pi_D0ToKsLLPi0Resolved',
@@ -202,16 +209,10 @@ default_lines = [
     #'BuToD0K_D0ToKsDDPi0Resolved',
     #'BuToD0K_D0ToKsLLPi0Merged',
     #'BuToD0K_D0ToKsDDPi0Merged',
-    'BuToD0Pi_D0ToKsLLHH',
-    'BuToD0Pi_D0ToKsDDHH',
-    'BuToD0K_D0ToKsLLHH',
-    'BuToD0K_D0ToKsDDHH',
     'BuToD0Pi_PartialD0ToKsLLHH',
-    'BuToD0Pi_PartialD0ToKsDDHH',
+    #'BuToD0Pi_PartialD0ToKsDDHH',
     'BuToD0K_PartialD0ToKsLLHH',
-    'BuToD0K_PartialD0ToKsDDHH',
-    'BuToD0Pi_D0ToHHHH',
-    'BuToD0K_D0ToHHHH',
+    #'BuToD0K_PartialD0ToKsDDHH',
 
     # commented out due to Rec#208
     #'BuToD0Pi_D0ToKsLLHHPi0Resolved',
@@ -252,54 +253,60 @@ default_lines = [
     #'BuToDst0K_Dst0ToD0Gamma_D0ToHHHH',
     #'BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHH',
     #'BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHH',
+    'BcToD0Pi_D0ToHH',
+    'BcToD0K_D0ToHH',
+    'BcToD0Pi_D0ToKsLLHH',
+    #'BcToD0Pi_D0ToKsDDHH',
+    'BcToD0K_D0ToKsLLHH',
+    #'BcToD0K_D0ToKsDDHH',
+    'BcToD0Pi_D0ToHHHH',
+    'BcToD0K_D0ToHHHH',
+    'BcToDmKst0_DmToHHH',
+    'BcToDsmKst0_DsmToHHH',
+    'BcToDmPhi_DmToHHH',
+    'BcToDsmPhi_DsmToHHH',
+    'BcToDmKsLL_DmToHHH',
+    #'BcToDmKsDD_DmToHHH',
+    'BcToDsmKsLL_DsmToHHH',
+    #'BcToDsmKsDD_DsmToHHH',
+    'BcToDmF0_DmToHHH',
+    'BcToDsmF0_DsmToHHH',
+
+    # lines from b_to_dll
+    'BcToDsmMupMum_DsmToHHH',
+    'BcToDspMumMum_DspToHHH',
 
     # lines from b_to_dhh
-    'BdToD0PiPi_D0ToHH',
     'BdToD0KPi_D0ToHH',
-    'BdToD0KK_D0ToHH',
     'BdToD0PiPiWS_D0ToHH',
     'BdToD0KPiWS_D0ToHH',
     'BdToD0KKWS_D0ToHH',
-    'BdToD0PiPi_D0ToKsLLHH',
-    'BdToD0PiPi_D0ToKsDDHH',
     'BdToD0KPi_D0ToKsLLHH',
-    'BdToD0KPi_D0ToKsDDHH',
-    'BdToD0KK_D0ToKsLLHH',
-    'BdToD0KK_D0ToKsDDHH',
+    #'BdToD0KPi_D0ToKsDDHH',
     'BdToD0PiPiWS_D0ToKsLLHH',
-    'BdToD0PiPiWS_D0ToKsDDHH',
+    #'BdToD0PiPiWS_D0ToKsDDHH',
     'BdToD0KPiWS_D0ToKsLLHH',
-    'BdToD0KPiWS_D0ToKsDDHH',
+    #'BdToD0KPiWS_D0ToKsDDHH',
     'BdToD0KKWS_D0ToKsLLHH',
-    'BdToD0KKWS_D0ToKsDDHH',
-    'BdToD0PiPi_D0ToHHHH',
+    #'BdToD0KKWS_D0ToKsDDHH',
     'BdToD0KPi_D0ToHHHH',
-    'BdToD0KK_D0ToHHHH',
     'BdToD0PiPiWS_D0ToHHHH',
     'BdToD0KPiWS_D0ToHHHH',
     'BdToD0KKWS_D0ToHHHH',
-    'BdToDsmKsLLPi_DsmToHHH',
-    'BdToDsmKsDDPi_DsmToHHH',
-    'BdToDmKsLLPi_DmToHHH',
-    'BdToDmKsDDPi_DmToHHH',
     'BdToD0PbarP_D0ToHH',
     'BdToD0PbarPWS_D0ToHH',
     'BdToDstpKsLLPi_DstpToD0Pi_D0ToHH',
-    'BdToDstpKsDDPi_DstpToD0Pi_D0ToHH',
+    #'BdToDstpKsDDPi_DstpToD0Pi_D0ToHH',
     'BdToDstpKsLLK_DstpToD0Pi_D0ToHH',
-    'BdToDstpKsDDK_DstpToD0Pi_D0ToHH',
+    #'BdToDstpKsDDK_DstpToD0Pi_D0ToHH',
     'BdToDstpKsLLPi_DstpToD0Pi_D0ToHHHH',
-    'BdToDstpKsDDPi_DstpToD0Pi_D0ToHHHH',
+    #'BdToDstpKsDDPi_DstpToD0Pi_D0ToHHHH',
     'BdToDstpKsLLK_DstpToD0Pi_D0ToHHHH',
-    'BdToDstpKsDDK_DstpToD0Pi_D0ToHHHH',
+    #'BdToDstpKsDDK_DstpToD0Pi_D0ToHHHH',
 
     # commented out due to Rec#208
-    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHH',
-    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHH',
     #'BdToDst0KPi_Dst0ToD0Gamma_D0ToHH',
     #'BdToDst0KPi_Dst0ToD0Pi0Resolved_D0ToHH',
-    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHH',
-    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHH',
 
     # commented out due to Rec#208
     #'BdToDsstmKsLLPi_DsstmToDsmGamma_DsmToHHH',
@@ -308,26 +315,30 @@ default_lines = [
     'BuToDmKPi_DmToHHH',
     'BuToDmKK_DmToHHH',
     'BuToD0KsLLPi_D0ToHH',
-    'BuToD0KsDDPi_D0ToHH',
+    #'BuToD0KsDDPi_D0ToHH',
     'BuToD0KsLLPi_D0ToKsLLHH',
-    'BuToD0KsDDPi_D0ToKsLLHH',
-    'BuToD0KsLLPi_D0ToKsDDHH',
-    'BuToD0KsDDPi_D0ToKsDDHH',
+    #'BuToD0KsDDPi_D0ToKsLLHH',
+    #'BuToD0KsLLPi_D0ToKsDDHH',
+    #'BuToD0KsDDPi_D0ToKsDDHH',
     'BuToD0KsLLPi_D0ToHHHH',
-    'BuToD0KsDDPi_D0ToHHHH',
+    #'BuToD0KsDDPi_D0ToHHHH',
+    'BuToDspPiPi_DspToHHH',
+    'BuToDspPbarP_DspToHHH',
+    'BuToDspKPi_DspToHHH',
+    'BuToDspKK_DspToHHH',
+    'BuToDsmKPi_DsmToHHH',
+    'BuToDpPbarP_DpToHHH',
+    'BuToDpKPi_DpToHHH',
+    'BuToDpKK_DpToHHH',
+    'BdToDmKsLLPi_DmToHHH',
 
     # lines from b_to_dmunu
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHH',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHH',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToHHHH',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Resolved',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Resolved',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Merged',
-    'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Merged',
+    #'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Resolved',
+    #'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Resolved',
+    #'BdToDstmMuNu_DstmToD0Pi_D0ToKsLLHHPi0Merged',
+    #'BdToDstmMuNu_DstmToD0Pi_D0ToKsDDHHPi0Merged',
 
     # lines from b_to_dhhh
-    'BdToDsmPiPiPi_DsmToKmKpPim',
-    'BdToDsmKPiPi_DsmToKmKpPim',
     'BdToDstpPiPiPi_DstpToD0Pi_D0ToHH',
     'BdToDstpKPiPi_DstpToD0Pi_D0ToHH',
     'BdToDstpKKPi_DstpToD0Pi_D0ToHH',
@@ -342,35 +353,13 @@ default_lines = [
     'BdToDstpPbarPK_DstpToD0Pi_D0ToHHHH',
     'BuToD0PiPiPi_D0ToHHHH',
     'BuToD0KPiPi_D0ToHHHH',
-
-    # lines from b_to_dd
-    'BdToD0D0_D0ToHHOrHHHH',
-    'BdToDpDm_DpToHHH',
-    'BdToDspDm_DspToHHH_DmToHHH',
-    'BdToDspDsm_DspToHHH',
-    'BdToDstpDm_DstpToD0Pi_D0ToHH_DmToHHH',
-    'BdToDstpDm_DstpToD0Pi_D0ToHHHH_DmToHHH',
-    'BdToDstpDsm_DstpToD0Pi_D0ToHH_DsmToHHH',
-    'BdToDstpDsm_DstpToD0Pi_D0ToHHHH_DsmToHHH',
-    'BdToDstpDstm_DstpToD0Pi_D0ToHH',
-    'BdToDstpDstm_DstpToD0Pi_D0ToHHHH',
-    'BdToDstpDstm_DstpToD0Pi_D0ToHH_D0ToHHHH',
-    'BcToD0Dp_D0ToHH_DpToHHH',
-    'BcToD0Dp_D0ToHHHH_DpToHHH',
-    'BcToD0Dp_D0ToKsLLHH_DpToHHH',
-    'BcToD0Dp_D0ToKsDDHH_DpToHHH',
-    'BcToD0Dsp_D0ToHH_DspToHHH',
-    'BcToD0Dsp_D0ToHHHH_DspToHHH',
-    'BcToD0Dsp_D0ToKsLLHH_DspToHHH',
-    'BcToD0Dsp_D0ToKsDDHH_DspToHHH',
-    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToHH',
-    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToHHHH',
-    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsLLHH',
-    'BcToDstD0_DstToD0Pi_D0ToHH_D0ToKsDDHH',
-    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHH',
-    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToHHHH',
-    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsDDHH',
-    'BcToDstD0_DstToD0Pi_D0ToHHHH_D0ToKsLLHH',
+    'BuToD0PiPiPi_D0ToKsLLHH',
+    #'BuToD0PiPiPi_D0ToKsDDHH',
+    'BuToD0KPiPi_D0ToKsLLHH',
+    #'BuToD0KPiPi_D0ToKsDDHH',
+    'BdToDsmPbarPPi_DsmToKmKpPim',
+    'BdToDmPbarPPi_DmToPimPimKp',
+    'BdToDmKKPi_DmToPimPimKp',
 
     # lines from b_to_ddh_standalone
     'BdToD0D0Phi_D0ToKPiOrKPiPiPi',
@@ -383,10 +372,26 @@ default_lines = [
     'BuToDsD0Phi_DsToHHH_D0ToKPiOrKPiPiPi',
     'BuToDspDmPi_DspToHHH_DmToHHH',
     'BuToDstmDspPi_DstmToD0Pi_D0ToKPiOrKPiPiPi_DspToHHH',
+    'BuToDspDsmPi_DsToHHH',
+    'BuToDspDsmK_DspToHHH',
+    'BuToDspD0Rho0_DspToHHH_D0ToKPiOrKPiPiPi',
+    'BuToD0DpKst_D0ToKPiOrKPiPiPi_DpToHHH',
+    'BuToD0D0Pi_D0ToKPiOrKPiPiPi',
+    'BuToD0D0K_D0ToKPiOrKPiPiPi',
+    'BdToDspDsmKst_DspToHHH',
+    'BdToDspDmRho0_DspToHHH_DmToHHH',
+    'BdToD0DPi_D0ToKPiOrKPiPiPi_DToHHH',
+    'BdToD0DK_D0ToKPiOrKPiPiPi_DToHHH',
 
     # lines from b_to_cbaryon_hh
     'BuToLcmPPi_LcmToPKPi',
     'BuToLcmPK_LcmToPKPi',
+    'BdToOmc0PPi_Omc0ToPKKPi',
+    'BdToOmc0PK_Omc0ToPKKPi',
+
+    # lines from bbaryon_to_cbaryon_h
+    'Xibc0ToXicpPi_XicpToPKPi',
+    'Ombc0ToXicpK_XicpToPKPi',
 
     # lines from bbaryon_to_cbaryon_hh
     'XibmToLcpPiPi_LcpToPKPi',
@@ -395,6 +400,21 @@ default_lines = [
     'XibmToXicpPiPi_XicpToPKPi',
     'XibmToXicpKPi_XicpToPKPi',
     'XibmToXicpKK_XicpToPKPi',
+    'XibcpToXicpPiPi_XicpToPKPi',
+    'XibcpToLcpPiPi_LcpToPKPi',
+    'XibcpToLcpKmPip_LcpToPKPi',
+    'Xib0ToXicpPiPiPi_XicpToPKPi',
+    'LbToLcpKsLLK_LcpToPKPi',
+    #'LbToLcpKsDDK_LcpToPKPi',
+
+    # lines from bbaryon_to_cbaryon_hhh
+    'Xib0ToXicpPbarPPi_XicpToPKPi',
+    'Xib0ToXicpKPiPi_XicpToPKPi',
+    'Xib0ToXicpKKPi_XicpToPKPi',
+    'LbToLcpPiPiPi_LcpToPPiPi',
+    'LbToLcpPiPiPi_LcpToPKPi',
+    'LbToLcpPbarPPi_LcpToPKPi',
+    'LbToLcpKKPi_LcpToPKPi',
 
     # lines from bbaryon_to_cbaryon_dh
     'Xibc0ToLcpD0Pi_LcpToPKPi_D0ToKPi',
@@ -402,32 +422,40 @@ default_lines = [
     'Xib0ToXicpD0K_XicpToPKPi_D0ToKPiPiPi',
     'Ombc0ToLcpD0K_LcpToPKPi_D0ToKPi',
 
+    # lines from bbaryon_to_lightbaryon_d
+    'XibcpToPD0_D0ToKPi',
+    'LbToDsmP_DsmToHHH',
+
+    # lines from bbaryon_to_lightbaryon_dh
+    'XibmToDmPK_DmToHHH',
+    'XibmToDmPPi_DmToHHH',
+    'XibmToDsmPK_DsmToHHH',
+    'XibmToDsmPPi_DsmToHHH',
+    'XibcpToPDpK_DpToKmPipPip',
+    'Xibc0ToPD0K_D0ToKPi',
+    'LbToD0PPi_D0ToHH',
+    'LbToD0PK_D0ToHH',
+
     # lines from bbaryon_to_lightbaryon_dd
     'LbToDpDmLambdaLL_DpToHHH',
-    'LbToDpDmLambdaDD_DpToHHH',
+    #'LbToDpDmLambdaDD_DpToHHH',
     'LbToD0D0LambdaLL_D0ToKPiOrKPiPiPi',
-    'LbToD0D0LambdaDD_D0ToKPiOrKPiPiPi',
+    #'LbToD0D0LambdaDD_D0ToKPiOrKPiPiPi',
     'LbToDstDLambdaLL_DstToD0Pi_D0ToHH_DToHHH',
-    'LbToDstDLambdaDD_DstToD0Pi_D0ToHH_DToHHH',
+    #'LbToDstDLambdaDD_DstToD0Pi_D0ToHH_DToHHH',
     'LbToDstDLambdaLL_DstToD0Pi_D0ToKPiPiPi_DToHHH',
-    'LbToDstDLambdaDD_DstToD0Pi_D0ToKPiPiPi_DToHHH',
+    #'LbToDstDLambdaDD_DstToD0Pi_D0ToKPiPiPi_DToHHH',
+    'XibcpToPD0D0_D0ToKPi',
+    'LbToD0DsmP_D0ToKPiOrKPiPiPi_DsmToHHH',
 ]
 
 # lines need non-default prescale value
 prescaled_lines = {
     # lines from b_to_dh
-    'BuToD0Pi_D0ToHHWS': 0.1,
-    'BuToD0K_D0ToHHWS': 0.1,
-    'BuToD0Pi_D0ToKsLLHHWS': 0.1,
-    'BuToD0Pi_D0ToKsDDHHWS': 0.1,
-    'BuToD0K_D0ToKsLLHHWS': 0.1,
-    'BuToD0K_D0ToKsDDHHWS': 0.1,
     'BuToD0Pi_PartialD0ToKsLLHHWS': 0.1,
-    'BuToD0Pi_PartialD0ToKsDDHHWS': 0.1,
+    #'BuToD0Pi_PartialD0ToKsDDHHWS': 0.1,
     'BuToD0K_PartialD0ToKsLLHHWS': 0.1,
-    'BuToD0K_PartialD0ToKsDDHHWS': 0.1,
-    'BuToD0Pi_D0ToHHHHWS': 0.1,
-    'BuToD0K_D0ToHHHHWS': 0.1,
+    #'BuToD0K_PartialD0ToKsDDHHWS': 0.1,
 
     # commented out due to Rec#208
     #'BuToD0Pi_D0ToKsLLHHWSPi0Resolved': 0.1,
@@ -468,20 +496,33 @@ prescaled_lines = {
     #'BuToDst0K_Dst0ToD0Gamma_D0ToHHHHWS': 0.1,
     #'BuToDst0K_Dst0ToD0Pi0Resolved_D0ToHHHHWS': 0.1,
     #'BuToDst0K_Dst0ToD0Pi0Merged_D0ToHHHHWS': 0.1,
+    'BcToD0Pi_D0ToHHWS': 0.1,
+    'BcToD0K_D0ToHHWS': 0.1,
+    'BcToD0Pi_D0ToKsLLHHWS': 0.1,
+    #'BcToD0Pi_D0ToKsDDHHWS': 0.1,
+    'BcToD0K_D0ToKsLLHHWS': 0.1,
+    #'BcToD0K_D0ToKsDDHHWS': 0.1,
+    'BcToD0Pi_D0ToHHHHWS': 0.1,
+    'BcToD0K_D0ToHHHHWS': 0.1,
+    'BcToDmKst0_DmToHHHWS': 0.1,
+    'BcToDsmKst0_DsmToHHHWS': 0.1,
+
+    # lines from b_to_dll
+    'BcToDsmMumMumWS_DsmToHHH': 0.1,
 
     # lines from b_to_dx_ltu
-    'BdToDsmK_DsmToHHH_LTU': 0.1,
+    'BdToDsmK_DsmToKpKmPim_LTU': 0.01,
     'BdToDsmKPiPi_DsmToKmKpPim_LTU': 0.04,
 
     # lines from b_to_dhh
     'BuToD0KsLLPi_D0ToHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToHHWS': 0.1,
+    #'BuToD0KsDDPi_D0ToHHWS': 0.1,
     'BuToD0KsLLPi_D0ToKsLLHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToKsLLHHWS': 0.1,
-    'BuToD0KsLLPi_D0ToKsDDHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToKsDDHHWS': 0.1,
+    #'BuToD0KsDDPi_D0ToKsLLHHWS': 0.1,
+    #'BuToD0KsLLPi_D0ToKsDDHHWS': 0.1,
+    #'BuToD0KsDDPi_D0ToKsDDHHWS': 0.1,
     'BuToD0KsLLPi_D0ToHHHHWS': 0.1,
-    'BuToD0KsDDPi_D0ToHHHHWS': 0.1,
+    #'BuToD0KsDDPi_D0ToHHHHWS': 0.1,
 
     # commented out because pi0 builder crash hlt2_pp_thor test
     #'BuToD0PiPi0Resolved_D0ToHH': 0.1,
@@ -532,10 +573,70 @@ prescaled_lines = {
     'BuToD0KPiPi_D0ToHHWS': 0.1,
     'BuToD0PiPiPi_D0ToHHHHWS': 0.1,
     'BuToD0KPiPi_D0ToHHHHWS': 0.1,
+
+    # lines of beauty -> charm + charged hadron(s) + neutral decays
+    # prescale for now. When photon CL and AM12 get available we will further optimize the selection
+    #'OmbmToOmc0PiGammaWS_Omc0ToPKKPi': 0.5,
+    #'OmbmToOmc0PiGamma_Omc0ToPKKPi': 0.5,
+    #'OmbmToOmc0PiPi0ResolvedWS_Omc0ToPKKPi': 0.1,
+    #'OmbmToOmc0PiPi0Resolved_Omc0ToPKKPi': 0.1,
+    #'OmbmToXicpKPiGammaWS_XicpToPKPi': 0.5,
+    #'OmbmToXicpKPiGamma_XicpToPKPi': 0.5,
 }
 
 # lines need flavor tagging
-flavor_tagging_lines = []
+flavor_tagging_lines = {
+    # lines from b_to_dh
+    'BdToDsmPi_DsmToKpKmPim',
+    'BdToDsmK_DsmToKpKmPim',
+
+    # commented out due to Rec#208
+    #'BdToDsstmPi_DsstmToDsmGamma_DsmToHHH',
+    #'BdToDsstmK_DsstmToDsmGamma_DsmToHHH',
+    'BdToDmPi_DmToPimPimKp',
+
+    # lines from b_to_dhh
+    'BdToD0KK_D0ToHH',
+    'BdToD0KK_D0ToHHHH',
+
+    # commented out due to Rec#208
+    'BdToD0KK_D0ToKsLLHH',
+    #'BdToD0KK_D0ToKsDDHH',
+    'BdToD0PiPi_D0ToHH',
+    'BdToD0PiPi_D0ToHHHH',
+
+    # commented out due to Rec#208
+    'BdToD0PiPi_D0ToKsLLHH',
+    #'BdToD0PiPi_D0ToKsDDHH',
+
+    # commented out due to Rec#208
+    #'BdToDst0KK_Dst0ToD0Gamma_D0ToHH',
+    #'BdToDst0KK_Dst0ToD0Pi0Resolved_D0ToHH',
+    #'BdToDst0PiPi_Dst0ToD0Gamma_D0ToHH',
+    #'BdToDst0PiPi_Dst0ToD0Pi0Resolved_D0ToHH',
+    #'BdToDmKsDDPi_DmToHHH',
+    'BdToDsmKsLLPi_DsmToHHH',
+    #'BdToDsmKsDDPi_DsmToHHH',
+
+    # lines from b_to_dhhh
+    'BdToDsmKPiPi_DsmToKmKpPim',
+    'BdToDsmPiPiPi_DsmToKmKpPim',
+    'BdToDmKPiPi_DmToPimPimKp',
+    'BdToDmPiPiPi_DmToPimPimKp',
+
+    # lines from b_to_dd
+    'BdToD0D0_D0ToHHOrHHHH',
+    'BdToDpDm_DpToHHH',
+    'BdToDspDm_DspToHHH_DmToHHH',
+    'BdToDspDsm_DspToHHH',
+    'BdToDstpDm_DstpToD0Pi_D0ToHHHH_DmToHHH',
+    'BdToDstpDm_DstpToD0Pi_D0ToHH_DmToHHH',
+    'BdToDstpDsm_DstpToD0Pi_D0ToHHHH_DsmToHHH',
+    'BdToDstpDsm_DstpToD0Pi_D0ToHH_DsmToHHH',
+    'BdToDstpDstm_DstpToD0Pi_D0ToHH',
+    'BdToDstpDstm_DstpToD0Pi_D0ToHHHH',
+    'BdToDstpDstm_DstpToD0Pi_D0ToHH_D0ToHHHH',
+}
 
 # lines need isolation variables
 isolation_lines = []
@@ -543,11 +644,7 @@ isolation_lines = []
 # lines need to be filtered by a MVA algorithm
 mva_filtered_lines = {
     # lines from b_to_dh
-    'BdToDmPi_DmToPimPimKp': -1.,
     'BdToDmK_DmToPimPimKp': -1.,
-
-    # commented out due to Rec#208
-    #'BdToDsstmPi_DsstmToDsmGamma_DsmToHHH': -1.,
 }
 
 ####################################
@@ -555,12 +652,6 @@ mva_filtered_lines = {
 # with generic functions           #
 ####################################
 
-lines_list = [
-    default_lines,
-    list(prescaled_lines.keys()), flavor_tagging_lines, isolation_lines,
-    list(mva_filtered_lines.keys())
-]
-check_overlap(lines_list)
 make_default_sprucing_lines(
     line_dict=sprucing_lines,
     line_makers=line_makers,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/utils.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/utils.py
index fdbe282529c358bb3ef65bfc2c5ad7401e0a435e..ff64cb5bbebddd8c5174c8c7132858b2e90538d8 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/utils.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/b_to_open_charm/utils.py
@@ -12,14 +12,12 @@
 
 check_process: make sure the `process` argument is 'hlt2' or 'spruce'
 update_makers: read and store line makers in dictionaries
-check_overlap: check if one line is defined more than once in different categories
 
 """
 
 from __future__ import absolute_import, division, print_function
 
 from inspect import getmembers, isfunction
-from itertools import combinations
 
 from PyConf.utilities import ConfigurationError
 
@@ -53,12 +51,3 @@ def update_makers(line_makers, line_module):
         for k, v in dict(getmembers(line_module, isfunction)).items()
         if k.startswith('make')
     })
-
-
-def check_overlap(line_list):
-    comb_list = list(combinations(line_list, 2))
-    for comb_tuple in comb_list:
-        overlap = list(set(comb_tuple[0]) & set(comb_tuple[1]))
-        if bool(overlap):
-            raise ConfigurationError('Lines declared more than once: ' +
-                                     str(overlap))
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/test/spruce_test.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/test/spruce_test.py
index b38a9fce2ae7eb6471d64bd9bd3ac10412aafc0a..1635dee9c5d60b9012137c026045ef7f46f958af 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/test/spruce_test.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/test/spruce_test.py
@@ -41,7 +41,7 @@ sprucing_lines = {}
 
 
 def Test_sprucing_line(name='SpruceTest_Line', prescale=1):
-    line_alg = b_to_dh.make_BdToDsmK_DsmToHHH(process=PROCESS)
+    line_alg = b_to_dh.make_BdToDsmK_DsmToKpKmPim(process=PROCESS)
     return SpruceLine(
         name=name,
         prescale=prescale,
@@ -50,7 +50,7 @@ def Test_sprucing_line(name='SpruceTest_Line', prescale=1):
 
 def Test_extraoutputs_sprucing_line(name='SpruceTest_ExtraOutputs_Line',
                                     prescale=1):
-    line_alg = b_to_dh.make_BdToDsmK_DsmToHHH(process=PROCESS)
+    line_alg = b_to_dh.make_BdToDsmK_DsmToKpKmPim(process=PROCESS)
     LongT = basic_builder.get_particles_WithPVs(make_long_pions, mipchi2_min=0)
     return SpruceLine(
         name=name,
@@ -61,7 +61,7 @@ def Test_extraoutputs_sprucing_line(name='SpruceTest_ExtraOutputs_Line',
 
 def Test_persistreco_sprucing_line(name='SpruceTest_PersistReco_Line',
                                    prescale=1):
-    line_alg = b_to_dh.make_BdToDsmK_DsmToHHH(process=PROCESS)
+    line_alg = b_to_dh.make_BdToDsmK_DsmToKpKmPim(process=PROCESS)
     return SpruceLine(
         name=name,
         prescale=prescale,
diff --git a/Hlt/Hlt2Conf/tests/qmtest/sprucing.qms/test_spruce_all_lines_analytics.qmt b/Hlt/Hlt2Conf/tests/qmtest/sprucing.qms/test_spruce_all_lines_analytics.qmt
index adc63f328659ee5223c117aecd8ebb2d6c0e65ce..4e2ee98b434c6653ed4e4fd5016f1ea965c77dc2 100644
--- a/Hlt/Hlt2Conf/tests/qmtest/sprucing.qms/test_spruce_all_lines_analytics.qmt
+++ b/Hlt/Hlt2Conf/tests/qmtest/sprucing.qms/test_spruce_all_lines_analytics.qmt
@@ -84,7 +84,7 @@ log_results(table_headers + table)
 
 
 for i in range(0, len(names)):
-    if float(dstdata[i]) &gt; 60000:
+    if float(dstdata[i]) &gt; 80000:
         causes.append('DstData RawBank of line {} is on average {} bytes!! This is big!\n'.format(names[i], dstdata[i]))
 
 </text></argument>