diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/algorithms_thor.py b/Hlt/Hlt2Conf/python/Hlt2Conf/algorithms_thor.py
index b870f5afe6d1b487a2668cd2ba8b49a01f4d4236..7a6b093dad0311c1e6db6612bf816264abe54994 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/algorithms_thor.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/algorithms_thor.py
@@ -13,7 +13,7 @@ from PyConf import configurable
 from PyConf.Algorithms import (
     ChargedBasicsFilter, ParticleRangeFilter, PrFilter__PV, TwoBodyCombiner,
     ThreeBodyCombiner, FourBodyCombiner, FiveBodyCombiner, SixBodyCombiner,
-    ParticleContainerMerger, MCParticleRangeFilter)
+    SevenBodyCombiner, ParticleContainerMerger, MCParticleRangeFilter)
 from Moore.persistence.particle_moving import is_particle_producer
 from RecoConf.reconstruction_objects import make_pvs
 
@@ -34,6 +34,7 @@ PARTICLE_COMBINERS = {
         4: FourBodyCombiner,
         5: FiveBodyCombiner,
         6: SixBodyCombiner,
+        7: SevenBodyCombiner,
     },
 }
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu.py
index 0c976ec37a77d2a84609b403062922b30c996611..b8a5f6b71e2d8a95863700286fc0e70b96807082 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu.py
@@ -88,7 +88,8 @@ def bstophiemu_line(name="Hlt2RD_BsToPhiEMu_PhiToKK", prescale=1):
     electrons = rdbuilder_thor.make_rd_detached_electrons(
         mipchi2dvprimary_min=9, pid=(F.PID_E > 2.))
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons()
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2.))
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e-]cc")
     dikaons = b_to_hemu_builders.make_hh(
@@ -118,8 +119,10 @@ def bdtokstemu_line(name="Hlt2RD_BdToKstEMu_KstToKpPim", prescale=1):
     electrons = rdbuilder_thor.make_rd_detached_electrons(
         mipchi2dvprimary_min=9, pid=(F.PID_E > 2.))
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons()
-    pions = rdbuilder_thor.make_rd_has_rich_detached_pions()
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2.))
+    pions = rdbuilder_thor.make_rd_has_rich_detached_pions(
+        mipchi2dvprimary_min=9)
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e-]cc")
     kstars = b_to_hemu_builders.make_hh(kaons, pions, pvs,
@@ -144,9 +147,11 @@ def lbtopkemu_line(name="Hlt2RD_LbToPKEMu", prescale=1):
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e-]cc")
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(pid=(F.PID_K > 0))
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     protons = rdbuilder_thor.make_rd_has_rich_detached_protons(
-        pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 0.))
+        mipchi2dvprimary_min=9,
+        pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 2.))
     dihadron = b_to_hemu_builders.make_hh(
         protons,
         kaons,
@@ -174,7 +179,7 @@ def butokemuSS_line(name="Hlt2RD_BuToKpEMu_SameSign", prescale=1):
         mipchi2dvprimary_min=9, pid=(F.PID_E > 2.))
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
     kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
-        mipchi2dvprimary_min=9)
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2.))
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e+]cc")
     bu = b_to_hemu_builders.make_btohemu(kaons, dileptons, pvs,
@@ -217,7 +222,8 @@ def bstophiemuSS_line(name="Hlt2RD_BsToPhiEMu_SameSign_PhiToKK", prescale=1):
     electrons = rdbuilder_thor.make_rd_detached_electrons(
         mipchi2dvprimary_min=9, pid=(F.PID_E > 2.))
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons()
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2.))
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e+]cc")
     dikaons = b_to_hemu_builders.make_hh(
@@ -248,8 +254,10 @@ def bdtokstemuSS_line(name="Hlt2RD_BdToKstEMu_SameSign_KstToKpPim",
     electrons = rdbuilder_thor.make_rd_detached_electrons(
         mipchi2dvprimary_min=9, pid=(F.PID_E > 2.))
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons()
-    pions = rdbuilder_thor.make_rd_has_rich_detached_pions()
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2.))
+    pions = rdbuilder_thor.make_rd_has_rich_detached_pions(
+        mipchi2dvprimary_min=9)
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e+]cc")
     kstars = b_to_hemu_builders.make_hh(kaons, pions, pvs,
@@ -274,9 +282,11 @@ def lbtopkemuSS_line(name="Hlt2RD_LbToPKEMu_SameSign", prescale=1):
     muons = rdbuilder_thor.make_rd_detached_muons(mipchi2dvprimary_min=9)
     dileptons = b_to_hemu_builders.make_dilepton(muons, electrons, pvs,
                                                  "[J/psi(1S) -> mu+ e+]cc")
-    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(pid=(F.PID_K > 0))
+    kaons = rdbuilder_thor.make_rd_has_rich_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     protons = rdbuilder_thor.make_rd_has_rich_detached_protons(
-        pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 0.))
+        mipchi2dvprimary_min=9,
+        pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 2.))
     dihadron = b_to_hemu_builders.make_hh(
         protons,
         kaons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu_control_modes.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu_control_modes.py
index 11e98cac73e3e423f92633fb1f4f340733ed3bcc..c6230153d332958a973f31d91ed9829fe1d707c1 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu_control_modes.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_hemu_control_modes.py
@@ -41,7 +41,8 @@ all_lines = {}
 @configurable
 def butokjpsi_mumu_line(name="Hlt2RD_BuToKpJpsi_JpsiToMuMu", prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons(mipchi2dvprimary_min=9)
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     dileptons = rdbuilder_thor.make_rd_detached_dimuon(am_max=5500 * MeV)
     bu = b_to_hemu_builders.make_btohemu(kaons, dileptons, pvs,
                                          "[B+ -> J/psi(1S) K+]cc")
@@ -76,7 +77,8 @@ def butopijpsi_mumu_line(name="Hlt2RD_BuToPipJpsi_JpsiToMuMu", prescale=1):
 def bstophijpsi_mumu_line(name="Hlt2RD_BsToPhiJpsi_PhiToKK_JpsiToMuMu",
                           prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons()
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     dileptons = rdbuilder_thor.make_rd_detached_dimuon(am_max=5500 * MeV)
     dikaons = b_to_hemu_builders.make_hh(
         kaons,
@@ -88,7 +90,7 @@ def bstophijpsi_mumu_line(name="Hlt2RD_BsToPhiJpsi_PhiToKK_JpsiToMuMu",
         m_max=1100 * MeV,
     )
     bs = b_to_hemu_builders.make_btohemu(dikaons, dileptons, pvs,
-                                         "[B+ -> J/psi(1S) phi(1020)]cc")
+                                         "B_s0 -> J/psi(1S) phi(1020)")
 
     return Hlt2Line(
         name=name,
@@ -103,13 +105,14 @@ def bstophijpsi_mumu_line(name="Hlt2RD_BsToPhiJpsi_PhiToKK_JpsiToMuMu",
 def bdtokstjpsi_mumu_line(name="Hlt2RD_BdToKstJpsi_KstToKpPim_JpsiToMuMu",
                           prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons()
-    pions = rdbuilder_thor.make_rd_detached_pions()
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
+    pions = rdbuilder_thor.make_rd_detached_pions(mipchi2dvprimary_min=9)
     dileptons = rdbuilder_thor.make_rd_detached_dimuon(am_max=5500 * MeV)
     kstars = b_to_hemu_builders.make_hh(kaons, pions, pvs,
                                         "[K*(892)0 -> K+ pi-]cc")
     bd = b_to_hemu_builders.make_btohemu(kstars, dileptons, pvs,
-                                         "[B+ -> J/psi(1S) K*(892)0]cc")
+                                         "[B0 -> J/psi(1S) K*(892)0]cc")
 
     return Hlt2Line(
         name=name,
@@ -124,8 +127,10 @@ def bdtokstjpsi_mumu_line(name="Hlt2RD_BdToKstJpsi_KstToKpPim_JpsiToMuMu",
 def lbtopkjpsi_mumu_line(name="Hlt2RD_LbToPKJpsi_JpsiToMuMu", prescale=1):
     pvs = make_pvs()
     dileptons = rdbuilder_thor.make_rd_detached_dimuon(am_max=5500 * MeV)
-    kaons = rdbuilder_thor.make_rd_detached_kaons(pid=(F.PID_K > 0))
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     protons = rdbuilder_thor.make_rd_detached_protons(
+        mipchi2dvprimary_min=9,
         pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 0.))
     dihadron = b_to_hemu_builders.make_hh(
         protons,
@@ -150,7 +155,8 @@ def lbtopkjpsi_mumu_line(name="Hlt2RD_LbToPKJpsi_JpsiToMuMu", prescale=1):
 @configurable
 def butokjpsi_ee_line(name="Hlt2RD_BuToKpJpsi_JpsiToEE", prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons(mipchi2dvprimary_min=9)
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     dileptons = rdbuilder_thor.make_rd_detached_dielectron(
         pid_e_min=2, am_max=5500 * MeV)
     bu = b_to_hemu_builders.make_btohemu(kaons, dileptons, pvs,
@@ -187,7 +193,8 @@ def butopijpsi_ee_line(name="Hlt2RD_BuToPipJpsi_JpsiToEE", prescale=1):
 def bstophijpsi_ee_line(name="Hlt2RD_BsToPhiJpsi_PhiToKK_JpsiToEE",
                         prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons()
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     dileptons = rdbuilder_thor.make_rd_detached_dielectron(
         pid_e_min=2, am_max=5500 * MeV)
     dikaons = b_to_hemu_builders.make_hh(
@@ -215,8 +222,9 @@ def bstophijpsi_ee_line(name="Hlt2RD_BsToPhiJpsi_PhiToKK_JpsiToEE",
 def bdtokstjpsi_ee_line(name="Hlt2RD_BdToKstJpsi_KstToKpPim_JpsiToEE",
                         prescale=1):
     pvs = make_pvs()
-    kaons = rdbuilder_thor.make_rd_detached_kaons()
-    pions = rdbuilder_thor.make_rd_detached_pions()
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
+    pions = rdbuilder_thor.make_rd_detached_pions(mipchi2dvprimary_min=9)
     dileptons = rdbuilder_thor.make_rd_detached_dielectron(
         pid_e_min=2, am_max=5500 * MeV)
     kstars = b_to_hemu_builders.make_hh(kaons, pions, pvs,
@@ -238,8 +246,10 @@ def lbtopkjpsi_ee_line(name="Hlt2RD_LbToPKJpsi_JpsiToEE", prescale=1):
     pvs = make_pvs()
     dileptons = rdbuilder_thor.make_rd_detached_dielectron(
         pid_e_min=2, am_max=5500 * MeV)
-    kaons = rdbuilder_thor.make_rd_detached_kaons(pid=(F.PID_K > 0))
+    kaons = rdbuilder_thor.make_rd_detached_kaons(
+        mipchi2dvprimary_min=9, pid=(F.PID_K > 2))
     protons = rdbuilder_thor.make_rd_detached_protons(
+        mipchi2dvprimary_min=9,
         pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 0.))
     dihadron = b_to_hemu_builders.make_hh(
         protons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_multilepton_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_multilepton_hlt2.py
index e8fb5ba31127944655895edde9d1ee0b6b9ba8a8..6fadfe178bf34cf7c1197e619943c9ab616c34ed 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_multilepton_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_multilepton_hlt2.py
@@ -30,6 +30,7 @@ import Functors as F
 
 from Moore.config import Hlt2Line, register_line_builder
 
+from GaudiKernel.SystemOfUnits import MeV
 from .builders.rdbuilder_thor import (
     make_rd_detached_muons, make_rd_detached_kaons, make_rd_detached_dimuon,
     make_rd_detached_dielectron, make_rd_detached_electrons)
@@ -252,7 +253,8 @@ def BTo3LLP_LLPToMuMu_LLL_line(name="Hlt2RD_BTo3LLP_LLPToMuMu_LLL",
                                prescale=1,
                                persistreco=False):
     """Bs/Bd -> X (mumu) X (mumu) X (mumu) with long muon combinations"""
-    dimuons_long = make_rd_detached_dimuon(parent_id="KS0", pidmu_muon_min=0)
+    dimuons_long = make_rd_detached_dimuon(
+        parent_id="KS0", pidmu_muon_min=0, pt_muon_min=150 * MeV)
     b = make_B26l_LLP(
         dimuons_long,
         dimuons_long,
@@ -294,8 +296,9 @@ def BuTo3LLPKp_LLPToMuMu_LLL_line(name="Hlt2RD_BuTo3LLPKp_LLPToMuMu_LLL",
                                   prescale=1,
                                   persistreco=False):
     """B+ -> X (mumu) X (mumu) X (mumu) K+ with long muon combinations"""
-    dimuons_long = make_rd_detached_dimuon(parent_id="KS0", pidmu_muon_min=0)
-    kaon = make_rd_detached_kaons(pid=(F.PID_K > 0.), mipchi2dvprimary_min=25.)
+    dimuons_long = make_rd_detached_dimuon(
+        parent_id="KS0", pidmu_muon_min=0, pt_muon_min=150 * MeV)
+    kaon = make_rd_detached_kaons(pid=(F.PID_K > 0.), mipchi2dvprimary_min=16.)
     b = make_B26lK_LLP(
         dimuons_long,
         dimuons_long,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_v0ll_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_v0ll_hlt2.py
index 759c0c5609dd3c863c6f3cd27bc89e4396b80bdc..9a7a58062837b2d997a107f82e93de8781e949d9 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_v0ll_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_v0ll_hlt2.py
@@ -58,7 +58,7 @@ B2V0ll_Selections = {
         "min_pt_e": 500 * MeV,
         "min_pt_mu": 500. * MeV,
         "max_vchi2ndof": 9.,
-        "min_probnn_mu": None,
+        "min_probnn_mu": None,  # Until ProbNNmu is working
         "min_PIDmu": 0.0,
         "IsMuon": True,
         "min_PIDe": 0.0,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_hlt2.py
index 65c696b164fa40c704a58411e5c4256c1f07cedb..1d744d6a61c9637be78ac7a683f1f9596a776236 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_hlt2.py
@@ -41,30 +41,27 @@ from Hlt2Conf.lines.rd.builders.rd_prefilters import rd_prefilter, _RD_MONITORIN
 all_lines = {}
 
 
+def make_kstar0s_with_tighter_mass():
+    return ParticleFilter(
+        make_rd_detached_kstar0s(),
+        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
+        name="rd_detached_kstar0s_mass_btoxgamma_{hash}")
+
+
+def make_rho0s_with_tighter_mass():
+    return ParticleFilter(
+        make_rd_detached_rho0(),
+        F.FILTER(F.require_all(F.MASS > 500. * MeV, F.MASS < 1850 * MeV)),
+        name="rd_detached_rho0s_mass_btoxgamma_{hash}")
+
+
 @register_line_builder(all_lines)
 def bd_to_kpigamma_gammatoeeLL_line(name="Hlt2RD_BdToKpPimGamma_GammaToEELL",
                                     persistreco=False,
                                     prescale=1.):
 
     pvs = make_pvs()
-    kpi = ParticleFilter(
-        make_rd_detached_kstar0s(
-            name="rd_detached_kstar0s_{hash}",
-            am_max=2000. * MeV,
-            k_pid=(F.PID_K > 2.),
-            pi_pid=(F.PID_K < 2.),
-            k_ipchi2_min=9.,
-            pi_ipchi2_min=9.,
-            k_p_min=2. * GeV,
-            pi_p_min=2. * GeV,
-            k_pt_min=250. * MeV,
-            pi_pt_min=250. * MeV,
-            vchi2pdof_max=10.,
-            adocachi2cut=10.,
-            kstar0_pt_min=800. * MeV,
-        ),
-        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
-        name="rd_detached_kstar0s_tightermass_{hash}")
+    kpi = make_kstar0s_with_tighter_mass()
 
     photons = make_gamma_eeLL(pvs, max_pid_e_min=2)
 
@@ -137,21 +134,7 @@ def bd_to_pipigamma_gammatoeeLL_line(name="Hlt2RD_BdToPipPimGamma_GammaToEELL",
                                      prescale=1.):
 
     pvs = make_pvs()
-    pipi = ParticleFilter(
-        make_rd_detached_rho0(
-            name="rd_detached_rho0_{hash}",
-            am_max=2000. * MeV,
-            pi_pid=(F.PID_K < 2.),
-            pi_ipchi2_min=9.,
-            pi_p_min=2. * GeV,
-            pi_pt_min=250. * MeV,
-            adocachi2cut=10.,
-            vchi2pdof_max=10.,
-            pt_min=800. * MeV,
-        ),
-        F.FILTER(F.require_all(F.MASS < 1850. * MeV)),
-        name="rd_detached_rhos_tightermass_{hash}")
-
+    pipi = make_rho0s_with_tighter_mass()
     photons = make_gamma_eeLL(pvs, max_pid_e_min=2)
 
     b = make_b2xgamma_excl(
@@ -230,24 +213,7 @@ def bd_to_kpigamma_gammatoeeDD_line(name="Hlt2RD_BdToKpPimGamma_GammaToEEDD",
                                     prescale=1.):
 
     pvs = make_pvs()
-    kpi = ParticleFilter(
-        make_rd_detached_kstar0s(
-            name="rd_detached_kstar0s_{hash}",
-            am_max=2000. * MeV,
-            k_pid=(F.PID_K > 2.),
-            pi_pid=(F.PID_K < 2.),
-            k_ipchi2_min=9.,
-            pi_ipchi2_min=9.,
-            k_p_min=2. * GeV,
-            pi_p_min=2. * GeV,
-            k_pt_min=250. * MeV,
-            pi_pt_min=250. * MeV,
-            vchi2pdof_max=10.,
-            adocachi2cut=10.,
-            kstar0_pt_min=800. * MeV,
-        ),
-        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
-        name="rd_detached_kstar0s_tightermass_{hash}")
+    kpi = make_kstar0s_with_tighter_mass()
 
     photons = make_gamma_eeDD(pvs, max_pid_e_min=2)
 
@@ -320,20 +286,7 @@ def bd_to_pipigamma_gammatoeeDD_line(name="Hlt2RD_BdToPipPimGamma_GammaToEEDD",
                                      prescale=1.):
 
     pvs = make_pvs()
-    pipi = ParticleFilter(
-        make_rd_detached_rho0(
-            name="rd_detached_rho0_{hash}",
-            am_max=2000. * MeV,
-            pi_pid=(F.PID_K < 2.),
-            pi_ipchi2_min=9.,
-            pi_p_min=2. * GeV,
-            pi_pt_min=250. * MeV,
-            adocachi2cut=10.,
-            vchi2pdof_max=10.,
-            pt_min=800. * MeV,
-        ),
-        F.FILTER(F.require_all(F.MASS < 1850. * MeV)),
-        name="rd_detached_rhos_tightermass_{hash}")
+    pipi = make_rho0s_with_tighter_mass()
 
     photons = make_gamma_eeDD(pvs, max_pid_e_min=2)
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_spruce.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_spruce.py
index a898bed0a8395a60a5bf70d1f7c7df0d064537df..84af558b58a293b2d2438fe68c2d0a42b1310966 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_spruce.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_conv_exclusive_spruce.py
@@ -43,22 +43,27 @@ from Hlt2Conf.lines.rd.builders.rad_incl_builder import (make_gamma_eeLL,
 sprucing_lines = {}
 
 
+def make_kstar0s_with_tighter_mass():
+    return ParticleFilter(
+        make_rd_detached_kstar0s(),
+        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
+        name="rd_detached_kstar0s_mass_btoxgamma_{hash}")
+
+
+def make_rho0s_with_tighter_mass():
+    return ParticleFilter(
+        make_rd_detached_rho0(),
+        F.FILTER(F.require_all(F.MASS > 500. * MeV, F.MASS < 1850 * MeV)),
+        name="rd_detached_rho0s_mass_btoxgamma_{hash}")
+
+
 @register_line_builder(sprucing_lines)
 def spruce_bd_to_kpigamma_gammatoeeLL_line(
         name="SpruceRD_BdToKpPimGamma_GammaToEELL", persistreco=False,
         prescale=1.):
 
     pvs = make_pvs()
-    kpi = ParticleFilter(
-        make_rd_detached_kstar0s(
-            name="rd_detached_kstar0s_{hash}",
-            am_max=2000. * MeV,
-            vchi2pdof_max=25.,
-            k_pid=(F.PID_K > -10.),
-            pi_pid=(F.PID_K < 10.),
-        ),
-        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
-        name="rd_detached_kstar0s_tightermass_{hash}")
+    kpi = make_kstar0s_with_tighter_mass()
 
     photons = make_gamma_eeLL(pvs)
 
@@ -125,15 +130,7 @@ def spruce_bd_to_pipigamma_gammatoeeLL_line(
         prescale=1.):
 
     pvs = make_pvs()
-    pipi = ParticleFilter(
-        make_rd_detached_rho0(
-            name="rd_detached_rho0_{hash}",
-            am_max=2000. * MeV,
-            vchi2pdof_max=25.,
-            pi_pid=(F.PID_K < 10.),
-        ),
-        F.FILTER(F.require_all(F.MASS < 1850. * MeV)),
-        name="rd_detached_rhos_tightermass_{hash}")
+    pipi = make_rho0s_with_tighter_mass()
 
     photons = make_gamma_eeLL(pvs)
 
@@ -200,16 +197,7 @@ def spruce_bd_to_kpigamma_gammatoeeDD_line(
         prescale=1.):
 
     pvs = make_pvs()
-    kpi = ParticleFilter(
-        make_rd_detached_kstar0s(
-            name="rd_detached_kstar0s_{hash}",
-            am_max=2000. * MeV,
-            vchi2pdof_max=25.,
-            k_pid=(F.PID_K > -10.),
-            pi_pid=(F.PID_K < 10.),
-        ),
-        F.FILTER(F.require_all(F.MASS > 767. * MeV, F.MASS < 1825. * MeV)),
-        name="rd_detached_kstar0s_tightermass_{hash}")
+    kpi = make_kstar0s_with_tighter_mass()
 
     photons = make_gamma_eeDD(pvs)
 
@@ -276,15 +264,7 @@ def spruce_bd_to_pipigamma_gammatoeeDD_line(
         prescale=1.):
 
     pvs = make_pvs()
-    pipi = ParticleFilter(
-        make_rd_detached_rho0(
-            name="rd_detached_rho0_{hash}",
-            am_max=2000. * MeV,
-            vchi2pdof_max=25.,
-            pi_pid=(F.PID_K < 10.),
-        ),
-        F.FILTER(F.require_all(F.MASS < 1850. * MeV)),
-        name="rd_detached_rhos_tightermass_{hash}")
+    pipi = make_rho0s_with_tighter_mass()
 
     photons = make_gamma_eeDD(pvs)
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_exclusive_hlt2.py
index 7f69f1b79a1e6ce9253c6c4954b95effeb137cb3..8f91201acd60a5a65bb8024f5f86ef58d2e547f3 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xgamma_exclusive_hlt2.py
@@ -16,23 +16,55 @@ Registration of exclusive radiative  B -> X gamma Hlt2 lines:
 author: Izaac Sanderswood
 date: 25.05.22
 
+
+Exclusive RAD lines:
+- B_s0 -> phi(1020) gamma (broad KK mass)
+- B0 -> K*(892)0 gamma  (borad Kpi mass)
+- B+ -> K_1(1270)+ gamma
+- B+ -> K phi(1020) gamma
+- B0 -> Ks pi pi gamma (LL)
+- B0 -> Ks pi pi gamma (DD)
+- B0 -> Ks K K gamma (LL)
+- B0 -> Ks K K gamma (DD)
+- B_s0 -> Ks K pi gamma (LL)
+- B_s0 -> Ks K pi gamma (DD)
+- Lambda_b0 -> Ks p pi gamma (LL)
+- Lambda_b0 -> Ks p pi gamma (DD)
+- Lambda_b0 -> p K  gamma
+- B0 -> pi pi  gamma (broad pipi mass)
+- B_c+ -> D*(2010)+ gamma
+- B_c+ -> D*_s+ gamma
+
+authors: Debashis Sahoo, Biplab Dey
+date: 15.05.2024 
+
 """
 from Moore.config import register_line_builder
 from Moore.lines import Hlt2Line
 from RecoConf.reconstruction_objects import make_pvs
 
-from GaudiKernel.SystemOfUnits import GeV, MeV
+from GaudiKernel.SystemOfUnits import GeV, MeV, ps
 import Functors as F
 from math import cos
 
+from Hlt2Conf.algorithms_thor import ParticleFilter
+
 from Hlt2Conf.lines.rd.builders.rdbuilder_thor import (
-    make_rd_detached_kstar0s, make_rd_detached_phis, make_rd_photons)
+    make_rd_detached_kstar0s, make_rd_detached_phis, make_rd_photons,
+    make_rd_detached_rho0, make_rd_detached_k1,
+    make_rd_has_rich_detached_pions, make_rd_has_rich_detached_kaons,
+    make_rd_ks0_lls, make_rd_detached_pions, make_rd_ks0_dds,
+    make_rd_detached_down_pions)
 
 from Hlt2Conf.lines.rd.builders.b_to_xgamma_exclusive_builders import (
-    make_b2xgamma_excl)
+    make_b2xgamma_excl, make_rd_detached_pK, make_PV, make_dzeros_for_rd_bc,
+    make_ds_for_rd_bc, make_dsst, make_b2xgamma_excl_bc)
 
 from Hlt2Conf.lines.rd.builders.rd_prefilters import rd_prefilter, _RD_MONITORING_VARIABLES
 
+from Hlt2Conf.lines.rd.builders import rd_isolation
+from Functors.math import in_range
+
 all_lines = {}
 
 
@@ -118,3 +150,1135 @@ def bd_to_kstgamma_line(name="Hlt2RD_BdToKstGamma",
         monitoring_variables=_RD_MONITORING_VARIABLES,
         tagging_particles=True,
     )
+
+
+@register_line_builder(all_lines)
+def bs_to_kkgamma_line(name="Hlt2RD_BsToKKGamma",
+                       persistreco=False,
+                       prescale=1.):
+
+    pvs = make_pvs()
+    # remember to also look at the definition of make_rd_detached_phis as only some cuts are changed here
+    phis = make_rd_detached_phis(
+        name="rd_BsToKKGamma_detached_phis",
+        k_p_min=2. * GeV,
+        k_pt_min=500. * MeV,
+        k_ipchi2_min=11.,
+        k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 0)),
+        phi_pt_min=1500. * MeV,
+        vchi2pdof_max=15.,
+        am_min=950. * MeV,
+        am_max=2450. * MeV)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b_s0 = make_b2xgamma_excl(
+        intermediate=phis,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B_s0 -> phi(1020) gamma",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BsToKKGamma_Combiner")
+
+    gamma_child = rd_isolation.find_in_decay(input=b_s0, id="gamma")
+
+    #Make cone isolation for parent and direct products
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B_s0"],
+        candidates=[b_s0],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["gamma"],
+        candidates=[gamma_child],
+        cut=F.require_all(
+            in_range(0., F.DR2, 0.16),
+            ~F.REQUIRE_CLOSE(F.PT() @ F.FORWARDARG0(),
+                             F.PT() @ F.FORWARDARG1()),
+            F.IS_NOT_H() @ F.FORWARDARG1() > 0.3),
+        LongTrackIso=False,
+        TTrackIso=False,
+        DownstreamTrackIso=False,
+        UpstreamTrackIso=False,
+        NeutralIso=True,
+        PiZerosIso=True,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [phis, b_s0],
+        extra_outputs=iso_parts,
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bd_to_kpigamma_line(name="Hlt2RD_BdToKpiGamma",
+                        persistreco=False,
+                        prescale=1.):
+
+    pvs = make_pvs()
+
+    # remember to also look at the definition of make_rd_detached_kstar0s as only some cuts are changed here
+    kst = make_rd_detached_kstar0s(
+        name="rd_BdToKpiGamma_detached_kstar0s",
+        pi_p_min=2. * GeV,
+        pi_pt_min=500. * MeV,
+        k_p_min=3. * GeV,
+        pi_pid=(F.PID_K < -3.),
+        k_pt_min=500. * MeV,
+        k_ipchi2_min=11.,
+        pi_ipchi2_min=11.,
+        k_pid=((F.PID_K > 3.) & ((F.PID_K - F.PID_P) > 2)),
+        kstar0_pt_min=1500. * MeV,
+        vchi2pdof_max=15.,
+        am_min=650. * MeV,
+        am_max=2350. * MeV,
+    )
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b0 = make_b2xgamma_excl(
+        intermediate=kst,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B0 -> K*(892)0 gamma]cc",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BdToKpiGamma_Combiner")
+
+    gamma_child = rd_isolation.find_in_decay(input=b0, id="gamma")
+
+    #Make cone isolation for parent and direct products
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B"],
+        candidates=[b0],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["gamma"],
+        candidates=[gamma_child],
+        cut=F.require_all(
+            in_range(0., F.DR2, 0.16),
+            ~F.REQUIRE_CLOSE(F.PT() @ F.FORWARDARG0(),
+                             F.PT() @ F.FORWARDARG1()),
+            F.IS_NOT_H() @ F.FORWARDARG1() > 0.3),
+        LongTrackIso=False,
+        TTrackIso=False,
+        DownstreamTrackIso=False,
+        UpstreamTrackIso=False,
+        NeutralIso=True,
+        PiZerosIso=True,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kst, b0],
+        extra_outputs=iso_parts,
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bu_to_kpipigamma_line(name="Hlt2RD_BuToKpipiGamma",
+                          persistreco=False,
+                          prescale=1.):
+
+    pvs = make_pvs()
+
+    # remember to also look at the definition of make_rd_detached_k1 as only some cuts are changed here
+    k1 = make_rd_detached_k1(
+        name='rd_detached_k1_{hash}',
+        make_rd_detached_pions=make_rd_has_rich_detached_pions,
+        make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
+        pi_p_min=1. * GeV,
+        pi_pt_min=300. * MeV,
+        pi_ipchi2_min=7.0,
+        pi_pid=(F.PID_K < -2),
+        k_p_min=1. * GeV,
+        k_pt_min=300. * MeV,
+        k_ipchi2_min=7.0,
+        k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 2)),
+        pt_min=1500. * MeV,
+        am_2pi_max=1500 * MeV,
+        am_kpi_max=1430 * MeV,
+        am_min=1100. * MeV,
+        am_max=1850. * MeV,
+        adocachi2_cut=10.,
+        vchi2pdof_max=9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    bu = make_b2xgamma_excl(
+        intermediate=k1,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B+ -> K_1(1270)+ gamma]cc",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=20.,
+        name="rd_BuToKpipiGamma_Combiner")
+
+    gamma_child = rd_isolation.find_in_decay(input=bu, id="gamma")
+
+    #Make cone isolation for parent and direct products
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B"],
+        candidates=[bu],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["gamma"],
+        candidates=[gamma_child],
+        cut=F.require_all(
+            in_range(0., F.DR2, 0.16),
+            ~F.REQUIRE_CLOSE(F.PT() @ F.FORWARDARG0(),
+                             F.PT() @ F.FORWARDARG1()),
+            F.IS_NOT_H() @ F.FORWARDARG1() > 0.3),
+        LongTrackIso=False,
+        TTrackIso=False,
+        DownstreamTrackIso=False,
+        UpstreamTrackIso=False,
+        NeutralIso=True,
+        PiZerosIso=True,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [k1, bu],
+        extra_outputs=iso_parts,
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def bu_to_kphigamma_line(name="Hlt2RD_BuToKPhiGamma",
+                         persistreco=True,
+                         prescale=1.):
+
+    pvs = make_pvs()
+
+    phi = make_rd_detached_phis(
+        name="rd_BuToKPhiGamma_detached_phis_{hash}",
+        make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
+        make_pvs=make_pvs,
+        am_min=990. * MeV,
+        am_max=1070. * MeV,
+        k_p_min=2. * GeV,
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=7.,
+        k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 2)),
+        phi_pt_min=500. * MeV,
+        adocachi2cut=30.,
+        vchi2pdof_max=25.)
+
+    k1680 = make_PV(
+        hadrons=phi,
+        kshort=make_rd_has_rich_detached_kaons(),
+        decay_descriptor="[K*(1680)+ -> phi(1020) K+]cc",
+        name="rd_radexcl_KPhi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1500 * MeV,
+        m_max=2800 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    bu = make_b2xgamma_excl(
+        intermediate=k1680,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B+ -> K*(1680)+ gamma]cc",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BuToKPhiGamma_Combiner")
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [phi, k1680, bu],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def bd_to_kspipigamma_LL_line(name="Hlt2RD_BdToKspipiGamma_LL",
+                              persistreco=True,
+                              prescale=1.):
+
+    pvs = make_pvs()
+    ks = ParticleFilter(
+        make_rd_ks0_lls(
+            name="rd_ks0_lls_{hash}",
+            make_pions=make_rd_detached_pions,
+            make_pvs=make_pvs,
+            mass_window_comb=50. * MeV,
+            mass_window=35. * MeV,
+            pi_p_min=2. * GeV,
+            pi_pt_min=200 * MeV,
+            pi_ipchi2_min=9.,
+            pt_min=400 * MeV,
+            adocachi2cut=30.,
+            bpvvdchi2_min=50.,
+            bpvltime_min=1. * ps,
+            vchi2pdof_max=15.),
+        F.FILTER(
+            F.require_all(F.CHILD(1, F.PID_K) < 0,
+                          F.CHILD(2, F.PID_K) < 0)),
+    )
+
+    rho0 = make_rd_detached_rho0(
+        name="rd_detached_rho0_{hash}",
+        make_rd_detached_pions=make_rd_has_rich_detached_pions,
+        pi_pt_min=200. * MeV,
+        pi_p_min=2. * GeV,
+        pi_ipchi2_min=4.0,
+        pi_pid=(F.PID_K < -3.),
+        pt_min=600. * MeV,
+        am_min=400. * MeV,
+        am_max=1500. * MeV,
+        adocachi2cut=10.,
+        vchi2pdof_max=9.)
+
+    k1 = make_PV(
+        hadrons=rho0,
+        kshort=ks,
+        decay_descriptor="K_1(1270)0 -> rho(770)0 KS0",
+        name="rd_radexcl_Kspipi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1050 * MeV,
+        m_max=1900 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b0 = make_b2xgamma_excl(
+        intermediate=k1,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B0 -> K_1(1270)0 gamma",
+        dira_min=0.999,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BdToKspipiGamma_LL_Combiner")
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, rho0, k1, b0],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bd_to_kspipigamma_DD_line(name="Hlt2RD_BdToKspipiGamma_DD",
+                              persistreco=True,
+                              prescale=1.):
+
+    pvs = make_pvs()
+
+    ks = make_rd_ks0_dds(
+        name="rd_ks0_dds_{hash}",
+        make_pions=make_rd_detached_down_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=50. * MeV,
+        mass_window=35. * MeV,
+        pi_p_min=2. * GeV,
+        pi_pt_min=200 * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    rho0 = make_rd_detached_rho0(
+        name="rd_detached_rho0_{hash}",
+        make_rd_detached_pions=make_rd_has_rich_detached_pions,
+        pi_pt_min=200. * MeV,
+        pi_p_min=2. * GeV,
+        pi_ipchi2_min=4.0,
+        pi_pid=(F.PID_K < -3.),
+        pt_min=600. * MeV,
+        am_min=400. * MeV,
+        am_max=1500. * MeV,
+        adocachi2cut=10.,
+        vchi2pdof_max=9.)
+
+    k1 = make_PV(
+        hadrons=rho0,
+        kshort=ks,
+        decay_descriptor="K_1(1270)0 -> rho(770)0 KS0",
+        name="rd_radexcl_Kspipi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1050 * MeV,
+        m_max=1900 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b0 = make_b2xgamma_excl(
+        intermediate=k1,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B0 -> K_1(1270)0 gamma",
+        dira_min=0.999,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BdToKspipiGamma_DD_Combiner")
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, rho0, k1, b0],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bd_to_kskkgamma_LL_line(name="Hlt2RD_BdToKsKKGamma_LL",
+                            persistreco=True,
+                            prescale=1.):
+
+    pvs = make_pvs()
+    ks = make_rd_ks0_lls(
+        name="rd_ks0_lls_{hash}",
+        make_pions=make_rd_detached_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=50. * MeV,
+        mass_window=35. * MeV,
+        pi_p_min=2. * GeV,
+        pi_pt_min=200. * MeV,
+        pi_ipchi2_min=9.,
+        pt_min=400 * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    phi = make_rd_detached_phis(
+        name="rd_BdToKsKKGamma_detached_phis_{hash}",
+        make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
+        make_pvs=make_pvs,
+        am_min=990. * MeV,
+        am_max=1070. * MeV,
+        k_p_min=2. * GeV,
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=4.,
+        k_pid=((F.PID_K > 0.) & ((F.PID_K - F.PID_P) > 0)),
+        phi_pt_min=500. * MeV,
+        adocachi2cut=30.,
+        vchi2pdof_max=25.)
+
+    k2 = make_PV(
+        hadrons=phi,
+        kshort=ks,
+        decay_descriptor="K*_2(1980)0 -> phi(1020) KS0",
+        name="rd_radexcl_KsKK_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1500 * MeV,
+        m_max=2800 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b0 = make_b2xgamma_excl(
+        intermediate=k2,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B0 -> K*_2(1980)0 gamma",
+        name="rd_BdToKsKKGamma_LL_Combiner",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, phi, k2, b0],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+def bd_to_kskkgamma_DD_line(name="Hlt2RD_BdToKsKKGamma_DD",
+                            persistreco=True,
+                            prescale=1.):
+
+    pvs = make_pvs()
+
+    ks = make_rd_ks0_dds(
+        name="rd_ks0_dds_{hash}",
+        make_pions=make_rd_detached_down_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=80. * MeV,
+        mass_window=64. * MeV,
+        pi_p_min=2. * GeV,
+        pi_pt_min=200. * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    phi = make_rd_detached_phis(
+        name="rd_BdToKsKKGamma_detached_phis_{hash}",
+        make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
+        make_pvs=make_pvs,
+        am_min=990. * MeV,
+        am_max=1070. * MeV,
+        k_p_min=2. * GeV,
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=4.,
+        k_pid=((F.PID_K > 0.) & ((F.PID_K - F.PID_P) > 0)),
+        phi_pt_min=500. * MeV,
+        adocachi2cut=30.,
+        vchi2pdof_max=25.)
+
+    k2 = make_PV(
+        hadrons=phi,
+        kshort=ks,
+        decay_descriptor="K*_2(1980)0 -> phi(1020) KS0",
+        name="rd_radexcl_KsKK_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1500 * MeV,
+        m_max=2800 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    b0 = make_b2xgamma_excl(
+        intermediate=k2,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B0 -> K*_2(1980)0 gamma",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BdToKsKKGamma_DD_Combiner")
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, phi, k2, b0],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bs_to_kskpigamma_LL_line(name="Hlt2RD_BsToKsKpiGamma_LL",
+                             persistreco=True,
+                             prescale=1.):
+
+    pvs = make_pvs()
+    ks = make_rd_ks0_lls(
+        name="rd_ks0_lls_{hash}",
+        make_pions=make_rd_detached_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=50. * MeV,
+        mass_window=35. * MeV,
+        pi_p_min=1. * GeV,
+        pi_pt_min=200. * MeV,
+        pi_ipchi2_min=9.,
+        pt_min=400 * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    kst = make_rd_detached_kstar0s(
+        name="rd_BsToKsKpiGamma_detached_kstar0s",
+        pi_p_min=1. * GeV,
+        pi_pt_min=200. * MeV,
+        pi_pid=(F.PID_K < -3.),
+        k_p_min=1. * GeV,
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=4.,
+        pi_ipchi2_min=4.,
+        k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 2)),
+        kstar0_pt_min=500. * MeV,
+        vchi2pdof_max=15.,
+        am_min=650. * MeV,
+        am_max=2500. * MeV,
+    )
+
+    k1 = make_PV(
+        hadrons=kst,
+        kshort=ks,
+        decay_descriptor="[phi(1680) -> K*(892)0 KS0]cc",
+        name="rd_radexcl_KsKpi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1000 * MeV,
+        m_max=3000 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    bs = make_b2xgamma_excl(
+        intermediate=k1,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B_s0 -> phi(1680) gamma]cc",
+        dira_min=0.9995,
+        name="rd_BsToKsKpiGamma_LL_Combiner",
+        bpv_ipchi2_max=12,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, kst, k1, bs],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+def bs_to_kskpigamma_DD_line(name="Hlt2RD_BsToKsKpiGamma_DD",
+                             persistreco=True,
+                             prescale=1.):
+
+    pvs = make_pvs()
+
+    ks = make_rd_ks0_dds(
+        name="rd_ks0_dds_{hash}",
+        make_pions=make_rd_detached_down_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=50. * MeV,
+        mass_window=35. * MeV,
+        pi_p_min=1. * GeV,
+        pi_pt_min=200. * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    kst = make_rd_detached_kstar0s(
+        name="rd_BsToKsKpiGamma_detached_kstar0s",
+        pi_p_min=1. * GeV,
+        pi_pt_min=200. * MeV,
+        pi_pid=(F.PID_K < -3.),
+        k_p_min=1. * GeV,
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=4.,
+        pi_ipchi2_min=4.,
+        k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 2)),
+        kstar0_pt_min=1000. * MeV,
+        vchi2pdof_max=15.,
+        am_min=650. * MeV,
+        am_max=2500. * MeV,
+    )
+
+    k1 = make_PV(
+        hadrons=kst,
+        kshort=ks,
+        decay_descriptor="[phi(1680) -> K*(892)0 KS0]cc",
+        name="rd_radexcl_KsKpi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1000 * MeV,
+        m_max=3000 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    bs = make_b2xgamma_excl(
+        intermediate=k1,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B_s0 -> phi(1680) gamma]cc",
+        dira_min=0.9995,
+        name="rd_BsToKsKpiGamma_DD_Combiner",
+        pt_min=2000 * MeV,
+        bpv_ipchi2_max=12,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, kst, k1, bs],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def lb_to_ksppigamma_LL_line(name="Hlt2RD_LbToKsppiGamma_LL",
+                             persistreco=True,
+                             prescale=1.):
+
+    pvs = make_pvs()
+    ks = make_rd_ks0_lls(
+        name="rd_ks0_lls_{hash}",
+        make_pions=make_rd_detached_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=50. * MeV,
+        mass_window=35. * MeV,
+        pi_p_min=2. * GeV,
+        pi_pt_min=200. * MeV,
+        pi_ipchi2_min=9.,
+        pt_min=400 * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    lst = ParticleFilter(
+        make_rd_detached_pK(
+            am_min=1300. * MeV,
+            am_max=2800. * MeV,
+            p_pid=F.require_all(F.PID_P > 2, (F.PID_P - F.PID_K > 2.)),
+            k_pid=(F.PID_K < -1.),  #pion
+            p_ipchi2_min=9.,
+            k_ipchi2_min=9.,
+            k_p_min=2. * GeV,
+            p_p_min=2. * GeV,
+            k_pt_min=250. * MeV,
+            p_pt_min=400. * MeV,
+            adocachi2cut=10.,
+            vchi2pdof_max=10.,
+            pK_pt_min=800. * MeV,
+        ),
+        F.FILTER(F.require_all(F.MASS > 1375. * MeV, F.MASS < 2625. * MeV)),
+        name="rd_dt_pk_{hash}")
+
+    l1800 = make_PV(
+        hadrons=lst,
+        kshort=ks,
+        decay_descriptor="[Lambda(1800)0 -> Lambda(1520)0 KS0]cc",
+        name="rd_radexcl_Ksppi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1700 * MeV,
+        m_max=3200 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    lb = make_b2xgamma_excl(
+        intermediate=l1800,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[Lambda_b0 -> Lambda(1800)0 gamma]cc",
+        name="rd_LbToKsppiGamma_LL_Combiner",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, lst, l1800, lb],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def lb_to_ksppigamma_DD_line(name="Hlt2RD_LbToKsppiGamma_DD",
+                             persistreco=True,
+                             prescale=1.):
+
+    pvs = make_pvs()
+
+    ks = make_rd_ks0_dds(
+        name="rd_ks0_dds_{hash}",
+        make_pions=make_rd_detached_down_pions,
+        make_pvs=make_pvs,
+        mass_window_comb=80. * MeV,
+        mass_window=64. * MeV,
+        pi_p_min=2. * GeV,
+        pi_pt_min=200. * MeV,
+        adocachi2cut=30.,
+        bpvvdchi2_min=50.,
+        bpvltime_min=1. * ps,
+        vchi2pdof_max=15.)
+
+    lst = ParticleFilter(
+        make_rd_detached_pK(
+            am_min=1300. * MeV,
+            am_max=2800. * MeV,
+            p_pid=F.require_all(F.PID_P > 2, (F.PID_P - F.PID_K > 2.)),
+            k_pid=(F.PID_K < 0.),  #pion
+            p_ipchi2_min=9.,
+            k_ipchi2_min=9.,
+            k_p_min=2. * GeV,
+            p_p_min=2. * GeV,
+            k_pt_min=250. * MeV,
+            p_pt_min=400. * MeV,
+            adocachi2cut=10.,
+            vchi2pdof_max=10.,
+            pK_pt_min=800. * MeV,
+        ),
+        F.FILTER(F.require_all(F.MASS > 1375. * MeV, F.MASS < 2625. * MeV)),
+        name="rd_dt_pk_{hash}")
+
+    l1800 = make_PV(
+        hadrons=lst,
+        kshort=ks,
+        decay_descriptor="[Lambda(1800)0 -> Lambda(1520)0 KS0]cc",
+        name="rd_radexcl_Ksppi_{hash}",
+        vtxchi2dof_max=16.0,
+        m_min=1700 * MeV,
+        m_max=3200 * MeV,
+        min_pt=1000 * MeV,
+        ipchi2_min=9.,
+        fdchi2_min=0.,
+        dira_min=0.9)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    lb = make_b2xgamma_excl(
+        intermediate=l1800,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[Lambda_b0 -> Lambda(1800)0 gamma]cc",
+        name="rd_LbToKsppiGamma_DD_Combiner",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ks, lst, l1800, lb],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def lb_to_pkgamma_line(name="Hlt2RD_LbTopKGamma",
+                       persistreco=False,
+                       prescale=1.):
+
+    pvs = make_pvs()
+
+    lst = ParticleFilter(
+        make_rd_detached_pK(
+            am_min=1350. * MeV,
+            am_max=2800. * MeV,
+            p_pid=F.require_all(F.PID_P > 2, (F.PID_P - F.PID_K > 2.)),
+            k_pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 0.)),
+            p_ipchi2_min=9.,
+            k_ipchi2_min=9.,
+            k_p_min=2. * GeV,
+            p_p_min=2. * GeV,
+            k_pt_min=400. * MeV,
+            p_pt_min=500. * MeV,
+            adocachi2cut=10.,
+            vchi2pdof_max=10.,
+            pK_pt_min=1300. * MeV,
+        ),
+        F.FILTER(F.require_all(F.MASS > 1375. * MeV, F.MASS < 2625. * MeV)),
+        name="rd_dt_pk_{hash}")
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    lb = make_b2xgamma_excl(
+        intermediate=lst,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[Lambda_b0 -> Lambda(1520)0 gamma]cc",
+        name="rd_LbTopKGamma_Combiner",
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+        bpv_fdchi2_min=25.,
+        comb_m_min=4500 * MeV,
+        comb_m_max=6500 * MeV,
+    )
+
+    gamma_child = rd_isolation.find_in_decay(input=lb, id="gamma")
+
+    #Make cone isolation for parent and direct products
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb"],
+        candidates=[lb],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["gamma"],
+        candidates=[gamma_child],
+        cut=F.require_all(
+            in_range(0., F.DR2, 0.16),
+            ~F.REQUIRE_CLOSE(F.PT() @ F.FORWARDARG0(),
+                             F.PT() @ F.FORWARDARG1()),
+            F.IS_NOT_H() @ F.FORWARDARG1() > 0.3),
+        LongTrackIso=False,
+        TTrackIso=False,
+        DownstreamTrackIso=False,
+        UpstreamTrackIso=False,
+        NeutralIso=True,
+        PiZerosIso=True,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [lst, lb],
+        extra_outputs=iso_parts,
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def b0_to_pipigamma_line(name="Hlt2RD_BdTopipiGamma",
+                         persistreco=False,
+                         prescale=1.):
+
+    pvs = make_pvs()
+    rho0 = make_rd_detached_rho0(
+        name="rd_detached_rho0_{hash}",
+        make_rd_detached_pions=make_rd_has_rich_detached_pions,
+        pi_pt_min=500. * MeV,
+        pi_p_min=2. * GeV,
+        pi_ipchi2_min=16.,
+        pi_pid=(F.PID_K < -5.) & (F.PID_P < 0),
+        pt_min=1200. * MeV,
+        am_min=500. * MeV,
+        am_max=4000. * MeV,
+        adocachi2cut=10.,
+        vchi2pdof_max=9.)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.6, IsNotH_min=0.4, E19_min=0.2)
+
+    bd = make_b2xgamma_excl(
+        intermediate=rho0,
+        photons=photons,
+        pvs=pvs,
+        descriptor="B0 -> rho(770)0 gamma",
+        dira_min=0.9999,
+        sum_pt_min=5. * GeV,
+        bpv_fdchi2_min=25.,
+        name="rd_BtopipiGamma_Combiner")
+
+    gamma_child = rd_isolation.find_in_decay(input=bd, id="gamma")
+
+    #Make cone isolation for parent and direct products
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B"],
+        candidates=[bd],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["gamma"],
+        candidates=[gamma_child],
+        cut=F.require_all(
+            in_range(0., F.DR2, 0.16),
+            ~F.REQUIRE_CLOSE(F.PT() @ F.FORWARDARG0(),
+                             F.PT() @ F.FORWARDARG1()),
+            F.IS_NOT_H() @ F.FORWARDARG1() > 0.3),
+        LongTrackIso=False,
+        TTrackIso=False,
+        DownstreamTrackIso=False,
+        UpstreamTrackIso=False,
+        NeutralIso=True,
+        PiZerosIso=True,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [rho0, bd],
+        extra_outputs=iso_parts,
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        tagging_particles=True,
+        pv_tracks=True,
+    )
+
+
+@register_line_builder(all_lines)
+def bc_to_dstgamma_line(name="Hlt2RD_BcToDstGamma",
+                        persistreco=True,
+                        prescale=1.):
+
+    pvs = make_pvs()
+
+    pions = make_rd_has_rich_detached_pions()
+    kaons = make_rd_has_rich_detached_kaons()
+    dzeros = make_dzeros_for_rd_bc(kaons, pions)
+
+    deltaM_min = 135.421 * MeV
+    deltaM_max = 160.421 * MeV
+
+    dst = ParticleFilter(
+        make_PV(
+            hadrons=dzeros,
+            kshort=make_rd_detached_pions(p_min=1.5 * GeV, pt_min=150. * MeV),
+            decay_descriptor="[D*(2010)+ -> D0 pi+]cc",
+            name="rd_radexcl_d0pi_{hash}",
+            vtxchi2dof_max=10.,
+            m_min=1920. * MeV,
+            m_max=2100. * MeV,
+            min_pt=1000. * MeV,
+            ipchi2_min=9.,
+            fdchi2_min=0.,
+            dira_min=0.9),
+        F.FILTER(
+            F.require_all(
+                in_range(deltaM_min, F.MASS - F.CHILD(1, F.MASS),
+                         deltaM_max)), ))
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    bc = make_b2xgamma_excl(
+        intermediate=dst,
+        photons=photons,
+        pvs=pvs,
+        descriptor="[B_c+ -> D*(2010)+ gamma]cc",
+        name="rd_BcToDstGamma_Combiner",
+        comb_m_min=5200. * MeV,
+        comb_m_max=7200. * MeV,
+        dira_min=0.9995,
+        sum_pt_min=4. * GeV,
+    )
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [dzeros, dst, bc],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
+
+
+@register_line_builder(all_lines)
+def bc_to_dsstgamma_line(name="Hlt2RD_BcToDsstGamma",
+                         persistreco=True,
+                         prescale=1.):
+
+    pions = make_rd_has_rich_detached_pions(pid=(F.PID_K < 0.))
+    kaons = make_rd_has_rich_detached_kaons(
+        pid=((F.PID_K > 2.) & ((F.PID_K - F.PID_P) > 2)))
+    ds = make_ds_for_rd_bc(kaons, kaons, pions)
+
+    photons = make_rd_photons(
+        et_min=2.5 * GeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    soft_photons = make_rd_photons(
+        et_min=500. * MeV, IsPhoton_min=0.4, IsNotH_min=0.3, E19_min=0.2)
+
+    dsst = make_dsst(
+        hadrons=ds,
+        kshort=soft_photons,
+        decay_descriptor="[D*_s+ -> D_s+ gamma]cc",
+        name="rd_radexcl_dsgamma_{hash}",
+        m_min=2010. * MeV,
+        m_max=2210. * MeV,
+        min_pt=1000. * MeV,
+    )
+
+    bc = make_b2xgamma_excl_bc(
+        intermediate=dsst,
+        photons=photons,
+        descriptor="[B_c+ -> D*_s+ gamma]cc",
+        sum_pt_min=4. * GeV,
+        name="rd_BcToDsstGamma_Combiner")
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ds, dsst, bc],
+        prescale=prescale,
+        persistreco=persistreco,
+        calo_clusters=True,
+        calo_digits=True,
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+    )
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2.py
index ee91dfb45301c56c34fe9b26548d36c5ea227638..0a779ae5e2d4193af3d6c17ec9a3a0eb695bacf2 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2.py
@@ -603,16 +603,6 @@ Btopipiee = {
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
         "bpvvdchi2_min": 36.,
-    },
-    "rhos": {
-        "pi_pid": (F.PID_K <= 4.),
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pt_min": 350. * MeV,
-        "pt_min": 250. * MeV,
-        "pi_ipchi2_min": 9.,
-        "adocachi2cut": 36.,
-        "vchi2pdof_max": 25.,
     }
 }
 
@@ -637,16 +627,6 @@ Btopipimumu = {
         "bpvvdchi2_min": 16.,
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
-    },
-    "rhos": {
-        "pi_pid": (F.PID_K <= 4.),
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pt_min": 350. * MeV,
-        "pt_min": 250. * MeV,
-        "pi_ipchi2_min": 4.,
-        "adocachi2cut": 36.,
-        "vchi2pdof_max": 25.,
     }
 }
 
@@ -657,7 +637,7 @@ def B0ToPipPimEE_line(name="Hlt2RD_B0ToPipPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Btopipiee["dielectrons"], pid_e_min=0.0, opposite_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipiee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -690,7 +670,7 @@ def B0ToPipPimEE_SameSign_line(name="Hlt2RD_B0ToPipPimEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Btopipiee["dielectrons"], pid_e_min=0.0, opposite_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipiee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -722,7 +702,7 @@ def B0ToPipPimMuMu_line(name="Hlt2RD_B0ToPipPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Btopipimumu["dimuons"], same_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipimumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -755,7 +735,7 @@ def B0ToPipPimMuMu_SameSign_line(name="Hlt2RD_B0ToPipPimMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Btopipimumu["dimuons"], same_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipimumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1012,22 +992,6 @@ BtoKPiee = {
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
         "bpvvdchi2_min": 36.,
-    },
-    "Kst0s": {
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pid": (F.PID_K < 4.),
-        "k_pid": (F.PID_K > -4.),
-        "pi_p_min": 2_000. * MeV,
-        "pi_pt_min": 250. * MeV,
-        "pi_ipchi2_min": 9.,
-        "k_p_min": 1_000. * MeV,
-        "k_pt_min": 250. * MeV,
-        "k_ipchi2_min": 9.,
-        "kstar0_pt_min": 400. * MeV,
-        "adocachi2cut": 36.,
-        "vchi2pdof_max": 25.,
-        "bpvipchi2_min": 16.,
     }
 }
 
@@ -1052,22 +1016,6 @@ BtoKPimumu = {
         "bpvvdchi2_min": 16.,
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
-    },
-    "Kst0s": {
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pid": (F.PID_K < 4.),
-        "k_pid": (F.PID_K > -4.),
-        "pi_p_min": 2_000. * MeV,
-        "pi_pt_min": 250. * MeV,
-        "pi_ipchi2_min": 4.,
-        "k_p_min": 1_000. * MeV,
-        "k_pt_min": 250. * MeV,
-        "k_ipchi2_min": 4.,
-        "kstar0_pt_min": 400. * MeV,
-        "adocachi2cut": 36.,
-        "vchi2pdof_max": 25.,
-        "bpvipchi2_min": 4.,
     }
 }
 
@@ -1078,7 +1026,7 @@ def B0ToKpPimEE_line(name="Hlt2RD_B0ToKpPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiee["dielectrons"], pid_e_min=0.0, opposite_sign=True)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPiee["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1108,7 +1056,7 @@ def B0ToKpPimEE_SameSign_line(name="Hlt2RD_B0ToKpPimEE_SameSign", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiee["dielectrons"], pid_e_min=0.0, opposite_sign=False)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPiee["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1138,7 +1086,7 @@ def B0ToKpPimMuMu_line(name="Hlt2RD_B0ToKpPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPimumu["dimuons"], same_sign=False)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPimumu["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1169,7 +1117,7 @@ def B0ToKpPimMuMu_SameSign_line(name="Hlt2RD_B0ToKpPimMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPimumu["dimuons"], same_sign=True)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPimumu["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1218,25 +1166,7 @@ BtoKPiPiee = {
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
         "bpvvdchi2_min": 36.,
-    },
-    "K1s": {
-        "pi_PIDK_max": 4.,
-        "K_PIDK_min": -4.,
-        "K_1_pt_min": 0. * MeV,
-        "pi_p_min": 1_000. * MeV,
-        "pi_pt_min": 0. * MeV,
-        "pi_ipchi2_min": 9.,
-        "K_p_min": 1_000. * MeV,
-        "K_pt_min": 0. * MeV,
-        "K_ipchi2_min": 9.,
-        "vchi2pdof_max": 9.,
-        "adocachi2_max": 36.,
-        "am_min": 0. * MeV,
-        "am_max": 4200. * MeV,
-        "K_1_min_DIRA": None,
-        "K_1_min_bpvfdchi2": 81.,
-        "bpvipchi2_min": 16.,
-    },
+    }
 }
 
 BtoKPiPimumu = {
@@ -1260,25 +1190,7 @@ BtoKPiPimumu = {
         "bpvvdchi2_min": 16.,
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
-    },
-    "K1s": {
-        "pi_PIDK_max": 4.,
-        "K_PIDK_min": -4.,
-        "K_1_pt_min": 0. * MeV,
-        "pi_p_min": 1_000. * MeV,
-        "pi_pt_min": 0. * MeV,
-        "pi_ipchi2_min": 9.,
-        "K_p_min": 1_000. * MeV,
-        "K_pt_min": 0. * MeV,
-        "K_ipchi2_min": 9.,
-        "vchi2pdof_max": 9.,
-        "adocachi2_max": 36.,
-        "am_min": 0. * MeV,
-        "am_max": 4200. * MeV,
-        "K_1_min_DIRA": None,
-        "K_1_min_bpvfdchi2": 36.,
-        "bpvipchi2_min": 9.,
-    },
+    }
 }
 
 
@@ -1288,7 +1200,7 @@ def BuToKpPipPimEE_line(name="Hlt2RD_BuToKpPipPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiPiee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPiee["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1320,7 +1232,7 @@ def BuToKpPipPimEE_SameSign_line(name="Hlt2RD_BuToKpPipPimEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiPiee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPiee["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1351,7 +1263,7 @@ def BuToKpPipPimMuMu_line(name="Hlt2RD_BuToKpPipPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPiPimumu["dimuons"], same_sign=False)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPimumu["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1383,7 +1295,7 @@ def BuToKpPipPimMuMu_SameSign_line(name="Hlt2RD_BuToKpPipPimMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPiPimumu["dimuons"], same_sign=True)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPimumu["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1433,20 +1345,7 @@ Bto3Kee = {
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
         "bpvvdchi2_min": 36.,
-    },
-    "K2s": {
-        "adocachi2_max": 36.,
-        "am_min": 0. * MeV,
-        "am_max": 4_200. * MeV,
-        "K_PIDK": (F.PID_K > -2.),
-        "K_p_min": 0. * MeV,
-        "K_pt_min": 0. * MeV,
-        "K_ipchi2_min": 9.,
-        "K_2_pt_min": 0. * MeV,
-        "vchi2pdof_max": 12.,
-        "K_2_min_bpvfdchi2": 81.,
-        "bpvipchi2_min": 16.,
-    },
+    }
 }
 
 Bto3Kmumu = {
@@ -1470,20 +1369,7 @@ Bto3Kmumu = {
         "bpvvdchi2_min": 16.,
         "am_min": 0. * MeV,
         "am_max": 5_500. * MeV,
-    },
-    "K2s": {
-        "adocachi2_max": 36.,
-        "am_min": 0. * MeV,
-        "am_max": 4_200. * MeV,
-        "K_PIDK": (F.PID_K > -2.),
-        "K_p_min": 0. * MeV,
-        "K_pt_min": 0. * MeV,
-        "K_ipchi2_min": 9.,
-        "K_2_pt_min": 0. * MeV,
-        "vchi2pdof_max": 12.,
-        "K_2_min_bpvfdchi2": 0.,
-        "bpvipchi2_min": 9.,
-    },
+    }
 }
 
 
@@ -1493,7 +1379,7 @@ def BuToKpKpKmEE_line(name="Hlt2RD_BuToKpKpKmEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Bto3Kee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kee["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1524,7 +1410,7 @@ def BuToKpKpKmEE_SameSign_line(name="Hlt2RD_BuToKpKpKmEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Bto3Kee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kee["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1554,7 +1440,7 @@ def BuToKpKpKmMuMu_line(name="Hlt2RD_BuToKpKpKmMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3Kmumu["dimuons"], same_sign=False)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kmumu["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1585,7 +1471,7 @@ def BuToKpKpKmMuMu_SameSign_line(name="Hlt2RD_BuToKpKpKmMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3Kmumu["dimuons"], same_sign=True)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kmumu["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1635,30 +1521,22 @@ Bto3hmumu = {
         "bpvvdchi2_min": 16.,
         "am_min": 0. * MeV,
         "am_max": 7_100. * MeV,
-    },
-    "K2s": {
-        "adocachi2_max": 16.,
-        "am_min": 0. * MeV,
-        "am_max": 7_100. * MeV,
-        "K_PIDK": None,
-        "K_p_min": 0. * MeV,
-        "K_pt_min": 250. * MeV,
-        "K_ipchi2_min": 9.,
-        "K_2_pt_min": 0. * MeV,
-        "vchi2pdof_max": 9.,
-        "K_2_min_bpvfdchi2": 0.,
-        "bpvipchi2_min": 4.,
-    },
+    }
 }
 
 
+def make_rd_detached_K2_for_Bc():
+    return rdbuilder_thor.make_rd_detached_K2(
+        name="make_rd_K_2_for_Bc_{hash}", am_max=7100 * MeV)
+
+
 @register_line_builder(all_lines)
 def BcToHpHpHmMuMu_line(name="Hlt2RD_BcToHpHpHmMuMu_Inclusive", prescale=1):
 
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3hmumu["dimuons"], same_sign=False)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3hmumu["K2s"])
+    K2s = make_rd_detached_K2_for_Bc()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1689,7 +1567,7 @@ def BcToHpHpHmMuMu_SameSign_line(
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3hmumu["dimuons"], same_sign=True)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3hmumu["K2s"])
+    K2s = make_rd_detached_K2_for_Bc()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -2135,21 +2013,7 @@ def B0ToKstJpsiMuMu_looseB0forK1_line(
         am_max=4430. * MeV,
     )
 
-    hadron = rdbuilder_thor.make_rd_detached_kstar0s(
-        am_min=800. * MeV,
-        am_max=1000. * MeV,
-        pi_p_min=2000. * MeV,
-        pi_pt_min=100. * MeV,
-        pi_ipchi2_min=10,
-        pi_pid=(F.PID_K < 0),
-        k_p_min=2000. * MeV,
-        k_pt_min=250. * MeV,
-        k_ipchi2_min=10.,
-        k_pid=(F.PID_K > 0),
-        kstar0_pt_min=500. * MeV,
-        adocachi2cut=9.,
-        vchi2pdof_max=9.,
-    )
+    hadron = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B0 = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -2202,21 +2066,7 @@ def B0ToKstJpsiMuMu_looseB0forK1_SameSign_line(
         same_sign=True,
     )
 
-    hadron = rdbuilder_thor.make_rd_detached_kstar0s(
-        am_min=800. * MeV,
-        am_max=1000. * MeV,
-        pi_p_min=2000. * MeV,
-        pi_pt_min=100. * MeV,
-        pi_ipchi2_min=10,
-        pi_pid=(F.PID_K < 0),
-        k_p_min=2000. * MeV,
-        k_pt_min=250. * MeV,
-        k_ipchi2_min=10.,
-        k_pid=(F.PID_K > 0),
-        kstar0_pt_min=500. * MeV,
-        adocachi2cut=9.,
-        vchi2pdof_max=9.,
-    )
+    hadron = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B0 = b_to_xll_builders.make_rd_BToXll(
         dimuons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2_mva.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2_mva.py
index 76cb893b43b221a5c414fe9489edf7868ea11d76..dac79b7ad73e3aee573a0b63f853c7d6453e2f20 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2_mva.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_hlt2_mva.py
@@ -142,13 +142,13 @@ class llx_mva_options:
         d_opt['am_min'] = 592. * MeV
         d_opt['am_max'] = 1192. * MeV
         d_opt['pi_p_min'] = 2. * GeV
-        d_opt['pi_pt_min'] = 100. * MeV
+        d_opt['pi_pt_min'] = 250. * MeV
         d_opt['pi_ipchi2_min'] = 4.
-        d_opt['pi_pid'] = (F.PID_K < 8.)
+        d_opt['pi_pid'] = (F.PID_K < 1e-5)
         d_opt['k_p_min'] = 2. * GeV
-        d_opt['k_pt_min'] = 100. * MeV
+        d_opt['k_pt_min'] = 250. * MeV
         d_opt['k_ipchi2_min'] = 4.
-        d_opt['k_pid'] = (F.PID_K > -2.)
+        d_opt['k_pid'] = (F.PID_K > 0.)
         d_opt['kstar0_pt_min'] = 0. * MeV
         d_opt['adocachi2cut'] = 30.
         d_opt['vchi2pdof_max'] = 16.
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce.py
index 4dd409efda31e9b34d97a0b441db85b308427b26..18cc6941b42ec28b454822e75e3b278bc4c0db2a 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce.py
@@ -610,7 +610,7 @@ def Spruce_B0ToPipPimEE_line(name="SpruceRD_B0ToPipPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Btopipiee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipiee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -650,7 +650,7 @@ def Spruce_B0ToPipPimEE_SameSign_line(name="SpruceRD_B0ToPipPimEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Btopipiee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipiee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -689,7 +689,7 @@ def Spruce_B0ToPipPimMuMu_line(name="SpruceRD_B0ToPipPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Btopipimumu["dimuons"], same_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipimumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -729,7 +729,7 @@ def Spruce_B0ToPipPimMuMu_SameSign_line(
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Btopipimumu["dimuons"], same_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**Btopipimumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -940,7 +940,7 @@ def Spruce_B0ToKpPimEE_line(name="SpruceRD_B0ToKpPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPiee["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -980,7 +980,7 @@ def Spruce_B0ToKpPimEE_SameSign_line(name="SpruceRD_B0ToKpPimEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPiee["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1019,7 +1019,7 @@ def Spruce_B0ToKpPimMuMu_line(name="SpruceRD_B0ToKpPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPimumu["dimuons"], same_sign=False)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPimumu["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1059,7 +1059,7 @@ def B0ToKpPimMuMu_SameSign_line(name="SpruceRD_B0ToKpPimMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPimumu["dimuons"], same_sign=True)
-    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s(**BtoKPimumu["Kst0s"])
+    Kst0s = rdbuilder_thor.make_rd_detached_kstar0s()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1105,7 +1105,7 @@ def Spruce_BuToKpPipPimEE_line(name="SpruceRD_BuToKpPipPimEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiPiee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPiee["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1130,7 +1130,7 @@ def Spruce_BuToKpPipPimEE_SameSign_line(
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoKPiPiee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPiee["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1154,7 +1154,7 @@ def Spruce_BuToKpPipPimMuMu_line(name="SpruceRD_BuToKpPipPimMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPiPimumu["dimuons"], same_sign=False)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPimumu["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1179,7 +1179,7 @@ def Spruce_BuToKpPipPimMuMu_SameSign_line(
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoKPiPimumu["dimuons"], same_sign=True)
-    K1s = rdbuilder_thor.make_rd_detached_K1(**BtoKPiPimumu["K1s"])
+    K1s = rdbuilder_thor.make_rd_detached_K1()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1210,7 +1210,7 @@ def Spruce_BuToKpKpKmEE_line(name="SpruceRD_BuToKpKpKmEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Bto3Kee["dielectrons"], pid_e_min=1.0, opposite_sign=True)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kee["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1234,7 +1234,7 @@ def Spruce_BuToKpKpKmEE_SameSign_line(name="SpruceRD_BuToKpKpKmEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **Bto3Kee["dielectrons"], pid_e_min=1.0, opposite_sign=False)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kee["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -1257,7 +1257,7 @@ def Spruce_BuToKpKpKmMuMu_line(name="SpruceRD_BuToKpKpKmMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3Kmumu["dimuons"], same_sign=False)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kmumu["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -1281,7 +1281,7 @@ def Spruce_BuToKpKpKmMuMu_SameSign_line(
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **Bto3Kmumu["dimuons"], same_sign=True)
-    K2s = rdbuilder_thor.make_rd_detached_K2(**Bto3Kmumu["K2s"])
+    K2s = rdbuilder_thor.make_rd_detached_K2()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce_hhll.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce_hhll.py
index 59956733eb0edce64e42e5eeed9f68aebe1fe17e..61086c9a645a7872762e0753d5656e0667d1f6cd 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce_hhll.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xll_spruce_hhll.py
@@ -285,18 +285,6 @@ BtoHHee = {
         "am_min": 0. * MeV,  #iddlM
         "am_max": 6_500. * MeV,  #5_500. * MeV,#iddlM
         "bpvvdchi2_min": 0.,  ##iddlM3Body
-    },
-    "rhos": {
-        "pi_pid": None,  #remove PID
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pt_min": 100. * MeV,  #350. * MeV,#iddlM
-        "pi_p_min":
-        2_000. * MeV,  #TODO this cut is here for B0 -> K+ K- ll#iddlM
-        "pt_min": 250. * MeV,  #not in iddl
-        "pi_ipchi2_min": 6.,  #9.,#iddlM
-        "adocachi2cut": 36.,  #not in iddl
-        "vchi2pdof_max": 25.,  #not in iddl
     }
 }
 
@@ -322,18 +310,6 @@ BtoHHmumu = {
         "am_min": 0. * MeV,  #iddlM
         "am_max": 6_500 * MeV,  #5_500. * MeV,#iddlM
         #IsMuon #iddlM
-    },
-    "rhos": {
-        "pi_pid": None,  #remove PID
-        "am_min": 0. * MeV,
-        "am_max": 2_600. * MeV,
-        "pi_pt_min": 100. * MeV,  #350. * MeV,
-        "pt_min": 250. * MeV,
-        "pi_p_min":
-        2_000. * MeV,  #TODO this cut is here for B0 -> K+ K- ll#iddlM
-        "pi_ipchi2_min": 6.,  #4., #iddlM
-        "adocachi2cut": 36.,  #not in iddl
-        "vchi2pdof_max": 25.,  #not in iddl
     }
 }
 
@@ -344,7 +320,7 @@ def Spruce_B0ToHpHmEE_line(name="SpruceRD_B0ToHpHmEE", prescale=1):
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoHHee["dielectrons"], opposite_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**BtoHHee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -388,7 +364,7 @@ def Spruce_B0ToHpHmEE_SameSign_line(name="SpruceRD_B0ToHpHmEE_SameSign",
     pvs = make_pvs()
     dielectrons = rdbuilder_thor.make_rd_detached_dielectron(
         **BtoHHee["dielectrons"], opposite_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**BtoHHee["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dielectrons,
@@ -431,7 +407,7 @@ def Spruce_B0ToHpHmMuMu_line(name="SpruceRD_B0ToHpHmMuMu", prescale=1):
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoHHmumu["dimuons"], same_sign=False)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**BtoHHmumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
@@ -475,7 +451,7 @@ def Spruce_B0ToHpHmMuMu_SameSign_line(name="SpruceRD_B0ToHpHmMuMu_SameSign",
     pvs = make_pvs()
     dimuons = rdbuilder_thor.make_rd_detached_dimuon(
         **BtoHHmumu["dimuons"], same_sign=True)
-    rhos = rdbuilder_thor.make_rd_detached_rho0(**BtoHHmumu["rhos"])
+    rhos = rdbuilder_thor.make_rd_detached_rho0()
 
     B = b_to_xll_builders.make_rd_BToXll(
         dimuons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py
index a3131c40e987871f411df48095ababf0bae4d85d..e6a7b2b2d9cc8068ed429843de4a24446427e97d 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py
@@ -51,7 +51,8 @@ Date: 07/12/2021
 from Moore.config import register_line_builder
 from Moore.lines import Hlt2Line
 from PyConf import configurable
-from GaudiKernel.SystemOfUnits import MeV, GeV
+from GaudiKernel.SystemOfUnits import GeV, MeV
+from Hlt2Conf.algorithms_thor import ParticleFilter
 from Hlt2Conf.lines.rd.builders import rd_isolation
 from Hlt2Conf.lines.rd.builders import b_to_xtaul_rd_builder as builder
 from Hlt2Conf.lines.rd.builders import rdbuilder_thor as common_builder
@@ -62,6 +63,20 @@ from Functors.math import in_range
 all_lines = {}
 
 
+def make_kstar0s_with_tighter_mass():
+    return ParticleFilter(
+        common_builder.make_rd_detached_kstar0s(),
+        F.FILTER(F.require_all(F.MASS > 700. * MeV, F.MASS < 1100. * MeV)),
+        name="rd_detached_kstar0s_mass_btoxtaul_{hash}")
+
+
+def make_rho0s_with_tighter_mass():
+    return ParticleFilter(
+        common_builder.make_rd_detached_rho0(),
+        F.FILTER(F.require_all(F.MASS > 500. * MeV, F.MASS < 1100 * MeV)),
+        name="rd_detached_rho0s_mass_btoxtaul_{hash}")
+
+
 ## B0 -> K* tau l
 @register_line_builder(all_lines)
 @configurable
@@ -72,20 +87,7 @@ def Hlt2_Bd2KstTauTau_OS_ExclusiveLine(
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
     decay_descriptor = "[B0 -> J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -133,20 +135,7 @@ def Hlt2_Bd2KstTauTau_SS_ExclusiveLine(
 
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
     decay_descriptor = "[B0 ->  J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -193,20 +182,7 @@ def Hlt2_Bd2KstTauMu_OS_ExclusiveLine(
 
         and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
     decay_descriptor = "[B0 -> J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -260,20 +236,7 @@ def Hlt2_Bd2KstTauMu_SS_ExclusiveLine(
 
         and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
     decay_descriptor = "[B0 ->  J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -327,20 +290,7 @@ def Hlt2_Bd2KstTauE_OS_ExclusiveLine(
 
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="e+")
     decay_descriptor = "[B0 ->  J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -394,20 +344,7 @@ def Hlt2_Bd2KstTauE_SS_ExclusiveLine(
 
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
-    kst = common_builder.make_rd_detached_kstar0s(
-        pi_p_min=2 * GeV,
-        pi_pt_min=250 * MeV,
-        k_p_min=2 * GeV,
-        k_pt_min=250 * MeV,
-        pi_ipchi2_min=9.,
-        k_ipchi2_min=9.,
-        pi_pid=(F.PID_K < 2),
-        k_pid=(F.PID_K > 8),
-        am_min=700 * MeV,
-        am_max=1100 * MeV,
-        kstar0_pt_min=1 * GeV,
-        adocachi2cut=20.,
-        vchi2pdof_max=6.)
+    kst = make_kstar0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="e-")
     decay_descriptor = "[B0 ->  J/psi(1S) K*(892)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -698,7 +635,7 @@ def Hlt2_Bd2RhoTauTau_OS_ExclusiveLine(
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -733,7 +670,7 @@ def Hlt2_Bd2RhoTauTau_SS_ExclusiveLine(
 
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -768,7 +705,7 @@ def Hlt2_Bd2RhoTauMu_OS_ExclusiveLine(
 
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -810,7 +747,7 @@ def Hlt2_Bd2RhoTauMu_SS_ExclusiveLine(
 
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -852,7 +789,7 @@ def Hlt2_Bd2RhoTauE_OS_ExclusiveLine(
 
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="e+")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -894,7 +831,7 @@ def Hlt2_Bd2RhoTauE_SS_ExclusiveLine(
 
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
-    rho = builder.filter_rd_detached_rho0()
+    rho = make_rho0s_with_tighter_mass()
     dilepton = builder.make_dilepton_from_tauls(child_id="e-")
     decay_descriptor = "[B0 ->  J/psi(1S) rho(770)0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1162,7 +1099,7 @@ def Hlt2_Bd2EtapTauE_SS_ExclusiveLine(
         monitoring_variables=_RD_MONITORING_VARIABLES)
 
 
-## B0 -> Ks0 tau l
+## B0 -> Ks0 (LL) tau l
 @register_line_builder(all_lines)
 @configurable
 def Hlt2_Bd2KsTauTau_LL_OS_ExclusiveLine(
@@ -1172,7 +1109,7 @@ def Hlt2_Bd2KsTauTau_LL_OS_ExclusiveLine(
     """
     HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1207,7 +1144,7 @@ def Hlt2_Bd2KsTauTau_LL_SS_ExclusiveLine(
 
           and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1242,7 +1179,7 @@ def Hlt2_Bd2KsTauMu_LL_OS_ExclusiveLine(
 
           and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1284,7 +1221,7 @@ def Hlt2_Bd2KsTauMu_LL_SS_ExclusiveLine(
 
           and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1326,7 +1263,7 @@ def Hlt2_Bd2KsTauE_LL_OS_ExclusiveLine(
 
           and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
     dilepton = builder.make_dilepton_from_tauls(child_id="e+")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -1368,7 +1305,244 @@ def Hlt2_Bd2KsTauE_LL_SS_ExclusiveLine(
 
           and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
-    ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
+    ks = builder.filter_rd_ks0s()
+    dilepton = builder.make_dilepton_from_tauls(child_id="e-")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    e_child = rd_isolation.find_in_decay(input=b2xtaul, id="e-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["e"],
+        candidates=[e_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+## B0 -> Ks0 (DD) tau l
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauTau_DD_OS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauTau_KsDDToPiPi_TauTo3Pi_OS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauTau_DD_SS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauTau_KsDDToPiPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
+
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauMu_DD_OS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauMu_KsDDToPiPi_TauTo3Pi_OS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) mu- + CC
+
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    mu_child = rd_isolation.find_in_decay(input=b2xtaul, id="mu-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["mu"],
+        candidates=[mu_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauMu_DD_SS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauMu_KsDDToPiPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) mu+ + CC
+
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    mu_child = rd_isolation.find_in_decay(input=b2xtaul, id="mu-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["mu"],
+        candidates=[mu_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauE_DD_OS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauE_KsDDToPiPi_TauTo3Pi_OS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) e- + CC
+
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="e+")
+    decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
+    b2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, ks], descriptors=decay_descriptor)
+
+    ks_child = rd_isolation.find_in_decay(input=b2xtaul, id="KS0")
+
+    tau_child = rd_isolation.find_in_decay(input=b2xtaul, id="tau+")
+
+    e_child = rd_isolation.find_in_decay(input=b2xtaul, id="e-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["B", "Kshort", "tau"],
+        candidates=[b2xtaul, ks_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["e"],
+        candidates=[e_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, ks, b2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Bd2KsTauE_DD_SS_ExclusiveLine(
+        name='Hlt2RD_BdToKsTauE_KsDDToPiPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) e+ + CC
+
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
+    """
+    ks = builder.filter_rd_ks0s(use_down_track=True)
     dilepton = builder.make_dilepton_from_tauls(child_id="e-")
     decay_descriptor = "[B0 ->  J/psi(1S) KS0]cc"
     b2xtaul = builder.make_beauty2xtaul(
@@ -2104,8 +2278,7 @@ def Hlt2_Lambdab2LambdaTauTau_LL_OS_ExclusiveLine(
     """
     HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
     decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
@@ -2140,8 +2313,7 @@ def Hlt2_Lambdab2LambdaTauTau_LL_SS_ExclusiveLine(
 
           and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
     dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
     decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
@@ -2176,8 +2348,7 @@ def Hlt2_Lambdab2LambdaTauMu_LL_OS_ExclusiveLine(
 
           and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
     decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
@@ -2219,8 +2390,7 @@ def Hlt2_Lambdab2LambdaTauMu_LL_SS_ExclusiveLine(
 
           and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) mu- + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
     dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
     decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
@@ -2262,8 +2432,7 @@ def Hlt2_Lambdab2LambdaTauE_LL_OS_ExclusiveLine(
 
           and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) e+ + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
     dilepton = builder.make_dilepton_from_tauls(child_id="e+")
     decay_descriptor = "[Lambda_b0 -> J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
@@ -2305,8 +2474,244 @@ def Hlt2_Lambdab2LambdaTauE_LL_SS_ExclusiveLine(
 
           and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) e- + CC
     """
-    lambda0 = common_builder.make_rd_lambda_lls(
-        pi_ipchi2_min=9., adocachi2cut=25., vchi2pdof_max=20.)
+    lambda0 = builder.filter_rd_lambdas()
+    dilepton = builder.make_dilepton_from_tauls(child_id="e-")
+    decay_descriptor = "[Lambda_b0 -> J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    e_child = rd_isolation.find_in_decay(input=lb2xtaul, id="e-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["e"],
+        candidates=[e_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+## Lambda_b -> Lambda (DD) tau l
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauTau_DD_OS_ExclusiveLine(
+        name="Hlt2RD_LbToLambdaTauTau_LambdaDDToPPi_TauTo3Pi_OS",
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="tau+")
+    decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauTau_DD_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauTau_LambdaDDToPPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
+
+          and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="tau-")
+    decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauMu_DD_OS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauMu_LambdaDDToPPi_TauTo3Pi_OS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) mu- + CC
+
+          and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) mu+ + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="mu+")
+    decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    mu_child = rd_isolation.find_in_decay(input=lb2xtaul, id="mu-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["mu"],
+        candidates=[mu_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauMu_DD_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauMu_LambdaDDToPPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) mu+ + CC
+
+          and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) mu- + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="mu-")
+    decay_descriptor = "[Lambda_b0 ->  J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    mu_child = rd_isolation.find_in_decay(input=lb2xtaul, id="mu-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["mu"],
+        candidates=[mu_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauE_DD_OS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauE_LambdaDDToPPi_TauTo3Pi_OS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) e- + CC
+
+          and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) e+ + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
+    dilepton = builder.make_dilepton_from_tauls(child_id="e+")
+    decay_descriptor = "[Lambda_b0 -> J/psi(1S) Lambda0]cc"
+    lb2xtaul = builder.make_beauty2xtaul(
+        particles=[dilepton, lambda0], descriptors=decay_descriptor)
+
+    lambda0_child = rd_isolation.find_in_decay(input=lb2xtaul, id="Lambda0")
+
+    tau_child = rd_isolation.find_in_decay(input=lb2xtaul, id="tau+")
+
+    e_child = rd_isolation.find_in_decay(input=lb2xtaul, id="e-")
+
+    iso_parts = rd_isolation.select_parts_for_isolation(
+        names=["Lb", "L0", "tau"],
+        candidates=[lb2xtaul, lambda0_child, tau_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.FIND_IN_TREE()))
+
+    iso_parts += rd_isolation.select_parts_for_isolation(
+        names=["e"],
+        candidates=[e_child],
+        cut=F.require_all(in_range(0., F.DR2, 0.25), ~F.SHARE_TRACKS()))
+
+    return Hlt2Line(
+        name=name,
+        prescale=prescale,
+        persistreco=persistreco,
+        algs=rd_prefilter() + [dilepton, lambda0, lb2xtaul],
+        extra_outputs=iso_parts,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(all_lines)
+@configurable
+def Hlt2_Lambdab2LambdaTauE_DD_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauE_LambdaDDToPPi_TauTo3Pi_SS',
+        prescale=1,
+        persistreco=False):
+    """
+    HLT2 line for Lb -> (L0->p pi-) (tau+->pi+pi+pi-) e+ + CC
+
+          and for Lb -> (L0->p pi-) (tau-->pi-pi-pi+) e- + CC
+    """
+    lambda0 = builder.filter_rd_lambdas(use_down_tracks=True)
     dilepton = builder.make_dilepton_from_tauls(child_id="e-")
     decay_descriptor = "[Lambda_b0 -> J/psi(1S) Lambda0]cc"
     lb2xtaul = builder.make_beauty2xtaul(
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic.py
index 8a41e6276132801fe0bf6f3f650ddf082a189025..46c8efb9a13f25e9fe447b8ad7c4b3fe1aba019b 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic.py
@@ -111,7 +111,6 @@ def Hlt2RD_LbToL0PipPimMuMu_LL(name="Hlt2RD_LbToL0PipPimMuMu_LL", prescale=1):
     dipion = make_dipion_for_lb(am_max=5770. * MeV)
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipimumu_ll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=lambdas,
@@ -141,7 +140,6 @@ def Hlt2RD_LbToPpKS0PimMuMu_LL(name="Hlt2RD_LbToPpKS0PimMuMu_LL", prescale=1):
     ks0 = make_rd_ks0_lls()
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkspimumu_ll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=protons,
@@ -166,7 +164,6 @@ def Hlt2RD_XibmToXimMuMu_LLL(name="Hlt2RD_XibmToXimMuMu_LLL", prescale=1):
         am_min=200. * MeV, am_max=5800. * MeV, **dimuon_cuts)
     xis = make_xim_to_lambda_pi_lll(name="xim_lll", pvs=pvs)
     xib = make_bhadron(
-        name="xib_to_ximumu_lll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xis,
@@ -190,7 +187,6 @@ def Hlt2RD_OmegabmToOmegamMuMu_LLL(name="Hlt2RD_OmegabmToOmegamMuMu_LLL",
         am_min=200. * MeV, am_max=6000. * MeV, **dimuon_cuts)
     omegas = make_omegam_to_lambda_k_lll(name="omegam_lll", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_omegamumu_lll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=omegas,
@@ -214,7 +210,6 @@ def Hlt2RD_OmegabmToXimMuMu_LLL(name="Hlt2RD_OmegabmToXimMuMu_LLL",
         am_min=200. * MeV, am_max=6300. * MeV, **dimuon_cuts)
     xim = make_xim_to_lambda_pi_lll(name="xim_lll", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_ximmumu_lll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xim,
@@ -245,7 +240,6 @@ def Hlt2RD_LbToL0PipPimEE_LL(name="Hlt2RD_LbToL0PipPimEE_LL", prescale=1):
     dipion = make_dipion_for_lb()
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipiee_ll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=lambdas,
@@ -275,7 +269,6 @@ def Hlt2RD_LbToPpKS0PimEE_LL(name="Hlt2RD_LbToPpKS0PimEE_LL", prescale=1):
     ks0 = make_rd_ks0_lls()
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkspiee_ll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=protons,
@@ -300,7 +293,6 @@ def Hlt2RD_XibmToXimEE_LLL(name="Hlt2RD_XibmToXimEE_LLL", prescale=1):
 
     xis = make_xim_to_lambda_pi_lll(name="xim_lll", pvs=pvs)
     xib = make_bhadron(
-        name="xib_to_xiee_lll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=xis,
@@ -324,7 +316,6 @@ def Hlt2RD_OmegabmToOmegamEE_LLL(name="Hlt2RD_OmegabmToOmegamEE_LLL",
     make_dielectron = make_rd_detached_dielectron(
         am_min=0 * MeV, am_max=5500 * MeV, **dielectron_cuts)
     omegab = make_bhadron(
-        name="omegab_to_omegaee_lll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=omegas,
@@ -350,7 +341,6 @@ def Hlt2RD_XibmToXimMuMu_DDL(name="Hlt2RD_XibmToXimMuMu_DDL", prescale=1):
         am_min=200. * MeV, am_max=5700. * MeV, **dimuon_cuts)
     xis = make_xim_to_lambda_pi_ddl(name="xim_ddl", pvs=pvs)
     xib = make_bhadron(
-        name="xib_to_ximumu_ddl",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xis,
@@ -374,7 +364,6 @@ def Hlt2RD_OmegabmToOmegamMuMu_DDL(name="Hlt2RD_OmegabmToOmegamMuMu_DDL",
         am_min=200. * MeV, am_max=5300. * MeV, **dimuon_cuts)
     omegas = make_omegam_to_lambda_k_ddl(name="omegam_ddl", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_omegamumu_ddl",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=omegas,
@@ -398,7 +387,6 @@ def Hlt2RD_OmegabmToXimMuMu_DDL(name="Hlt2RD_OmegabmToXimMuMu_DDL",
         am_min=200. * MeV, am_max=6300. * MeV, **dimuon_cuts)
     xim = make_xim_to_lambda_pi_ddl(name="xim_ddl", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_ximmumu_ddl",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xim,
@@ -422,7 +410,6 @@ def Hlt2RD_XibmToXimEE_DDL(name="Hlt2RD_XibmToXimEE_DDL", prescale=1):
 
     xis = make_xim_to_lambda_pi_ddl(name="xim_ddl", pvs=pvs)
     xib = make_bhadron(
-        name="xib_to_xiee_ddl",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=xis,
@@ -446,7 +433,6 @@ def Hlt2RD_OmegabmToOmegamEE_DDL(name="Hlt2RD_OmegabmToOmegamEE_DDL",
         am_min=0 * MeV, am_max=5500 * MeV, **dielectron_cuts)
     omegas = make_omegam_to_lambda_k_ddl(name="omegam_ddl", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_omegaee_ddl",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=omegas,
@@ -476,7 +462,6 @@ def Hlt2RD_LbToL0PipPimMuMu_DD(name="Hlt2RD_LbToL0PipPimMuMu_DD",
     dipion = make_dipion_for_lb(am_max=5770. * MeV)
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipimumu_dd",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=lambdas,
@@ -506,7 +491,6 @@ def Hlt2RD_LbToPpKS0PimMuMu_DD(name="Hlt2RD_LbToPpKS0PimMuMu_DD", prescale=1):
     ks0 = make_rd_ks0_dds()
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkspimumu_ll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=protons,
@@ -531,7 +515,6 @@ def Hlt2RD_XibmToXimMuMu_DDD(name="Hlt2RD_XibmToXimMuMu_DDD", prescale=1):
         am_min=200. * MeV, am_max=5600. * MeV, **dimuon_cuts)
     xis = make_xim_to_lambda_pi_ddd(name="xim_ddd", pvs=pvs)
     xib = make_bhadron(
-        name="xib_to_ximumu_ddd",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xis,
@@ -555,7 +538,6 @@ def Hlt2RD_OmegabmToOmegamMuMu_DDD(name="Hlt2RD_OmegabmToOmegamMuMu_DDD",
         am_min=200. * MeV, am_max=5700. * MeV, **dimuon_cuts)
     omegas = make_omegam_to_lambda_k_ddd(name="omegam_ddd", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_omegamumu_ddd",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=omegas,
@@ -579,7 +561,6 @@ def Hlt2RD_OmegabmToXimMuMu_DDD(name="Hlt2RD_OmegabmToXimMuMu_DDD",
         am_min=200. * MeV, am_max=6300. * MeV, **dimuon_cuts)
     xim = make_xim_to_lambda_pi_ddd(name="xim_ddd", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_ximmumu_ddd",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron=xim,
@@ -605,7 +586,6 @@ def Hlt2RD_LbToL0PipPimEE_DD(name="Hlt2RD_LbToL0PipPimEE_DD", prescale=1):
     dipion = make_dipion_for_lb()
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipiee_dd",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=lambdas,
@@ -635,7 +615,6 @@ def Hlt2RD_LbToPpKS0PimEE_DD(name="Hlt2RD_LbToPpKS0PimEE_DD", prescale=1):
     ks0 = make_rd_ks0_dds()
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkpipiee_dd",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=protons,
@@ -660,7 +639,6 @@ def Hlt2RD_XibmToXimEE_DDD(name="Hlt2RD_XibmToXimEE_DDD", prescale=1):
     make_dielectron = make_rd_detached_dielectron(
         am_min=0 * MeV, am_max=5500 * MeV, **dielectron_cuts)
     xib = make_bhadron(
-        name="xib_to_xiee_ddd",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=xis,
@@ -686,7 +664,6 @@ def Hlt2RD_OmegabmToOmegamEE_DDD(name="Hlt2RD_OmegabmToOmegamEE_DDD",
 
     omegas = make_omegam_to_lambda_k_ddd(name="omegam_ddd", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_omegaee_ddd",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=omegas,
@@ -709,7 +686,6 @@ def Hlt2RD_OmegabmToXimEE_DDD(name="Hlt2RD_OmegabmToXimEE_DDD", prescale=1):
         am_min=0 * MeV, am_max=5500 * MeV, **dielectron_cuts)
     xim = make_xim_to_lambda_pi_ddd(name="xim_ddd", pvs=pvs)
     omegab = make_bhadron(
-        name="omegab_to_ximee_ddd",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron=xim,
@@ -741,7 +717,6 @@ def Hlt2RD_LbToPpPimMuMu(name="Hlt2RD_LbToPpPimMuMu", prescale=1):
     pions = make_rd_has_rich_detached_pions(**detached_pions_cuts)
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipimumu_ll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=protons,
@@ -786,7 +761,6 @@ def Hlt2RD_LbToPpKmPipPimMuMu(name="Hlt2RD_LbToPpKmPipPimMuMu", prescale=1):
         mipchi2dvprimary_min=9, pt_min=500 * MeV)
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkpipimumu_ll",
         pvs=pvs,
         dilepton=make_dimuon,
         hadron1=protons,
@@ -814,7 +788,6 @@ def Hlt2RD_LbToPpKmPipPimEE(name="Hlt2RD_LbToPpKmPipPimEE", prescale=1):
     kaons = make_rd_has_rich_detached_kaons(**detached_protons_cuts)
 
     lb0 = make_bhadron_4body(
-        name="lb0_to_pkpipiee_ll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=protons,
@@ -841,7 +814,6 @@ def Hlt2RD_LbToPpPimEE(name="Hlt2RD_LbToPpPimEE", prescale=1):
     pions = make_rd_has_rich_detached_pions(**detached_pions_cuts)
 
     lb0 = make_bhadron_3body(
-        name="lb0_to_l0pipimumu_ll",
         pvs=pvs,
         dilepton=make_dielectron,
         hadron1=protons,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic_radiative.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic_radiative.py
index 54b4f4c5a7c240874c5e3c0c26ed109a1ed28281..5e0afc07c7172ad5de556ae41776364de91066a7 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic_radiative.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/baryonic_radiative.py
@@ -31,7 +31,8 @@ from Hlt2Conf.lines.rd.builders.baryonic_builders import (
 
 from Hlt2Conf.lines.rd.builders.baryonic_radiative_builders import (
     make_rd_xibm, make_rd_obm, make_rd_lb_to_lgamma_LL,
-    filter_lambdasLL_for_lb_to_lg, LB_TMVA_BDT)
+    make_rd_lb_to_lgamma_DD, filter_lambdasLL_for_lb_to_lg,
+    filter_lambdasDD_for_lb_to_lg, LB_TMVA_BDT)
 
 from Hlt2Conf.lines.rd.builders.rdbuilder_thor import make_rd_photons
 
@@ -79,6 +80,39 @@ def lb_to_lgamma_ll_line(name='Hlt2RD_LbToLambdaGamma_LL',
     )
 
 
+@configurable
+@register_line_builder(all_lines)
+def lb_to_lgamma_dd_line(name='Hlt2RD_LbToLambdaGamma_DD',
+                         prescale=0.8,
+                         prefilter=rd_prefilter):
+    """Lambda_b0 -> Lambda gamma line"""
+
+    pvs = make_pvs()
+
+    lambda_dd = filter_lambdasDD_for_lb_to_lg(pvs=pvs)
+    photons = make_rd_photons(
+        et_min=2. * GeV,
+        e_min=5. * GeV,
+        IsPhoton_min=0.4,
+        IsNotH_min=0.3,
+        E19_min=0.2)
+
+    lb_dd = make_rd_lb_to_lgamma_DD(Lambda=lambda_dd, gamma=photons, pvs=pvs)
+
+    lb_dd_mva = ParticleFilter(
+        lb_dd, Cut=F.FILTER(LB_TMVA_BDT(
+            pvs=pvs,
+            topo="DD",
+        ) > 0.6))
+
+    return Hlt2Line(
+        name=name,
+        algs=prefilter() + [lb_dd_mva],
+        monitoring_variables=_RD_MONITORING_VARIABLES,
+        prescale=prescale,
+    )
+
+
 @register_line_builder(all_lines)
 def xibtoxigamma_xitolpi_lll_line(name='Hlt2RD_XibmToXimGamma_XimToL0Pim_LLL',
                                   prescale=0.1):
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_exclusive_hlt2.py
index 93334b3860af6f2307164721ebd15e33eee3d621..c6db274067e74f984346ee50fcc0cccae90673af 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_exclusive_hlt2.py
@@ -203,7 +203,7 @@ def bstophietau_tautomu_line(name='Hlt2RD_BsToKKTauE_TauToMu', prescale=1):
 
 @register_line_builder(all_lines)
 def bstophietau_tautomu_same_sign_kaons_sskmu_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_SSK_SSKmu', prescale=0.7):
+        name='Hlt2RD_BsToKKTauE_TauToMu_SSK_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -240,7 +240,7 @@ def bstophietau_tautomu_same_sign_kaons_sskmu_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautomu_same_sign_kaons_oskmu_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_SSK_OSKmu', prescale=0.7):
+        name='Hlt2RD_BsToKKTauE_TauToMu_SSK_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -277,7 +277,7 @@ def bstophietau_tautomu_same_sign_kaons_oskmu_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_same_sign_muons_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_SSl', prescale=0.7):
+        name='Hlt2RD_BsToKKTauE_TauToMu_SSl', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -310,7 +310,7 @@ def bstophimutau_tautomu_same_sign_muons_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautomu_fakemuon_from_tau_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_FakeMuonFromTau', prescale=0.03):
+        name='Hlt2RD_BsToKKTauE_TauToMu_FakeMuonFromTau', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -341,7 +341,7 @@ def bstophietau_tautomu_fakemuon_from_tau_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautomu_fakemuon_from_b_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_FakeMuonFromB', prescale=0.003):
+        name='Hlt2RD_BsToKKTauE_TauToMu_FakeMuonFromB', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -378,7 +378,7 @@ def bstophietau_tautomu_fakemuon_from_b_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautomu_fakekaon_line(
-        name='Hlt2RD_BsToKKTauE_TauToMu_FakeKaon', prescale=0.1):
+        name='Hlt2RD_BsToKKTauE_TauToMu_FakeKaon', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -476,7 +476,7 @@ def lbtopketau_tautomu_ospmu_line(name='Hlt2RD_LbToPKTauE_TauToMu_OSpmu',
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_same_sign_pk_sspmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_SSpK_SSpmu', prescale=0.7):
+        name='Hlt2RD_LbToPKTauE_TauToMu_SSpK_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -515,7 +515,7 @@ def lbtopketau_tautomu_same_sign_pk_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_same_sign_pk_ospmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_SSpK_OSpmu', prescale=0.7):
+        name='Hlt2RD_LbToPKTauE_TauToMu_SSpK_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -554,7 +554,7 @@ def lbtopketau_tautomu_same_sign_pk_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_same_sign_muons_sspmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_SSl_SSpmu', prescale=0.5):
+        name='Hlt2RD_LbToPKTauE_TauToMu_SSl_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -588,7 +588,7 @@ def lbtopketau_tautomu_same_sign_muons_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_same_sign_muons_ospmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_SSl_OSpmu', prescale=0.75):
+        name='Hlt2RD_LbToPKTauE_TauToMu_SSl_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -623,7 +623,7 @@ def lbtopketau_tautomu_same_sign_muons_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakemuon_from_tau_sspmu_line(
         name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromTau_SSpmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -658,7 +658,7 @@ def lbtopketau_tautomu_fakemuon_from_tau_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakemuon_from_tau_ospmu_line(
         name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromTau_OSpmu',
-        prescale=0.005):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -692,7 +692,7 @@ def lbtopketau_tautomu_fakemuon_from_tau_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakemuon_from_b_sspmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromB_SSpmu', prescale=0.015):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromB_SSpmu', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -732,7 +732,7 @@ def lbtopketau_tautomu_fakemuon_from_b_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakemuon_from_b_ospmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromB_OSpmu', prescale=0.015):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeMuonFromB_OSpmu', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -772,7 +772,7 @@ def lbtopketau_tautomu_fakemuon_from_b_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakeproton_sspmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeProton_SSpmu', prescale=0.1):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeProton_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -812,7 +812,7 @@ def lbtopketau_tautomu_fakeproton_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakeproton_ospmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeProton_OSpmu', prescale=0.15):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeProton_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -852,7 +852,7 @@ def lbtopketau_tautomu_fakeproton_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakekaon_sspmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeKaon_SSpmu', prescale=0.3):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeKaon_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -891,7 +891,7 @@ def lbtopketau_tautomu_fakekaon_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautomu_fakekaon_ospmu_line(
-        name='Hlt2RD_LbToPKTauE_TauToMu_FakeKaon_OSpmu', prescale=0.3):
+        name='Hlt2RD_LbToPKTauE_TauToMu_FakeKaon_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -990,7 +990,7 @@ def bdtokstetau_tautomu_oskmu_line(name='Hlt2RD_BdToKPiTauE_TauToMu_OSKmu',
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_same_sign_kpi_sskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_SSKpi_SSKmu', prescale=0.5):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_SSKpi_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1029,7 +1029,7 @@ def bdtokstetau_tautomu_same_sign_kpi_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_same_sign_kpi_oskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_SSKpi_OSKmu', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_SSKpi_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1068,7 +1068,7 @@ def bdtokstetau_tautomu_same_sign_kpi_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_same_sign_muons_sskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_SSl_SSKmu', prescale=0.5):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_SSl_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1102,7 +1102,7 @@ def bdtokstetau_tautomu_same_sign_muons_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_same_sign_muons_oskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_SSl_OSKmu', prescale=0.7):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_SSl_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1110,7 +1110,7 @@ def bdtokstetau_tautomu_same_sign_muons_oskmu_line(
         **kwargs_muons_from_tau)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
     kstes = btosetau_exclusive.make_kste(
-        kaons, pions, electrons, pvs, decay_descriptor="[B0 -> K+ pi- mu-]cc")
+        kaons, pions, electrons, pvs, decay_descriptor="[B0 -> K+ pi- e-]cc")
     bd = btosmutau_exclusive.make_bd(
         kstes,
         muons_from_tau,
@@ -1137,7 +1137,7 @@ def bdtokstetau_tautomu_same_sign_muons_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakemuon_from_tau_sskmu_line(
         name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromTau_SSKmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1172,7 +1172,7 @@ def bdtokstetau_tautomu_fakemuon_from_tau_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakemuon_from_tau_oskmu_line(
         name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromTau_OSKmu',
-        prescale=0.005):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1206,7 +1206,8 @@ def bdtokstetau_tautomu_fakemuon_from_tau_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakemuon_from_b_sskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromB_SSKmu', prescale=0.015):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromB_SSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1246,7 +1247,8 @@ def bdtokstetau_tautomu_fakemuon_from_b_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakemuon_from_b_oskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromB_OSKmu', prescale=0.003):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeMuonFromB_OSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1286,7 +1288,7 @@ def bdtokstetau_tautomu_fakemuon_from_b_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakekaon_sskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeKaon_SSKmu', prescale=0.15):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeKaon_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1326,7 +1328,7 @@ def bdtokstetau_tautomu_fakekaon_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakekaon_oskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeKaon_OSKmu', prescale=0.15):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakeKaon_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1366,7 +1368,7 @@ def bdtokstetau_tautomu_fakekaon_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakepion_sskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakePion_SSKmu', prescale=0.3):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakePion_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1405,7 +1407,7 @@ def bdtokstetau_tautomu_fakepion_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautomu_fakepion_oskmu_line(
-        name='Hlt2RD_BdToKPiTauE_TauToMu_FakePion_OSKmu', prescale=0.3):
+        name='Hlt2RD_BdToKPiTauE_TauToMu_FakePion_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1502,7 +1504,7 @@ def butoketau_tautomu_sskmu_line(name='Hlt2RD_BuToKTauE_TauToMu_SSKmu',
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_same_sign_muons_oskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_SSl_OSKmu', prescale=0.3):
+        name='Hlt2RD_BuToKTauE_TauToMu_SSl_OSKmu', prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -1535,7 +1537,7 @@ def butoketau_tautomu_same_sign_muons_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_same_sign_muons_sskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_SSl_SSKmu', prescale=0.75):
+        name='Hlt2RD_BuToKTauE_TauToMu_SSl_SSKmu', prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -1568,7 +1570,8 @@ def butoketau_tautomu_same_sign_muons_sskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakemuon_from_tau_oskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromTau_OSKmu', prescale=0.002):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromTau_OSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1602,7 +1605,8 @@ def butoketau_tautomu_fakemuon_from_tau_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakemuon_from_tau_sskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromTau_SSKmu', prescale=0.005):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromTau_SSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1636,7 +1640,7 @@ def butoketau_tautomu_fakemuon_from_tau_sskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakemuon_from_b_oskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromB_OSKmu', prescale=0.015):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromB_OSKmu', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -1674,7 +1678,7 @@ def butoketau_tautomu_fakemuon_from_b_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakemuon_from_b_sskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromB_SSKmu', prescale=0.015):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeMuonFromB_SSKmu', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons_from_tau = rdbuilder_thor.make_rd_detached_muons(
@@ -1712,7 +1716,7 @@ def butoketau_tautomu_fakemuon_from_b_sskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakekaon_oskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeKaon_OSKmu', prescale=0.05):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeKaon_OSKmu', prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
@@ -1750,7 +1754,7 @@ def butoketau_tautomu_fakekaon_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautomu_fakekaon_sskmu_line(
-        name='Hlt2RD_BuToKTauE_TauToMu_FakeKaon_SSKmu', prescale=0.15):
+        name='Hlt2RD_BuToKTauE_TauToMu_FakeKaon_SSKmu', prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_tau_to_e_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_tau_to_e_exclusive_hlt2.py
index 5369b172b16d8bab5100c616216baf1d4385a3ba..1e1a12425c4baf73aa2b2959692feb1bfb86c825 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_tau_to_e_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosetau_tau_to_e_exclusive_hlt2.py
@@ -201,7 +201,7 @@ def bstophietau_tautoe_line(name='Hlt2RD_BsToKKTauE_TauToE', prescale=1):
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_same_sign_kaons_sske_line(
-        name='Hlt2RD_BsToKKTauE_TauToE_SSK_SSKe', prescale=0.1):
+        name='Hlt2RD_BsToKKTauE_TauToE_SSK_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -238,7 +238,7 @@ def bstophietau_tautoe_same_sign_kaons_sske_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_same_sign_kaons_oske_line(
-        name='Hlt2RD_BsToKKTauE_TauToE_SSK_OSKe', prescale=0.1):
+        name='Hlt2RD_BsToKKTauE_TauToE_SSK_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -275,7 +275,7 @@ def bstophietau_tautoe_same_sign_kaons_oske_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_same_sign_electrons_line(
-        name='Hlt2RD_BsToKKTauE_TauToE_SSe', prescale=0.2):
+        name='Hlt2RD_BsToKKTauE_TauToE_SSe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -308,7 +308,7 @@ def bstophietau_tautoe_same_sign_electrons_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_fakeelectron_from_tau_line(
-        name='Hlt2RD_BsToKKTauE_TauToE_FakeelectronFromTau', prescale=0.015):
+        name='Hlt2RD_BsToKKTauE_TauToE_FakeelectronFromTau', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -339,7 +339,7 @@ def bstophietau_tautoe_fakeelectron_from_tau_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_fakeelectron_from_b_line(
-        name='Hlt2RD_BsToKKTauE_TauToE_FakeelectronFromB', prescale=0.015):
+        name='Hlt2RD_BsToKKTauE_TauToE_FakeelectronFromB', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -376,7 +376,7 @@ def bstophietau_tautoe_fakeelectron_from_b_line(
 
 @register_line_builder(all_lines)
 def bstophietau_tautoe_fakekaon_line(name='Hlt2RD_BsToKKTauE_TauToE_FakeKaon',
-                                     prescale=0.03):
+                                     prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -480,7 +480,7 @@ def lbtopketau_tautoe_ospe_line(name='Hlt2RD_LbToPKTauE_TauToE_OSpe',
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_same_sign_pk_sspe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_SSpK_SSpe', prescale=0.1):
+        name='Hlt2RD_LbToPKTauE_TauToE_SSpK_SSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -519,7 +519,7 @@ def lbtopketau_tautoe_same_sign_pk_sspe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_same_sign_pk_ospe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_SSpK_OSpe', prescale=0.2):
+        name='Hlt2RD_LbToPKTauE_TauToE_SSpK_OSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -558,7 +558,7 @@ def lbtopketau_tautoe_same_sign_pk_ospe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_same_sign_electrons_sspe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_SSe_SSpe', prescale=0.3):
+        name='Hlt2RD_LbToPKTauE_TauToE_SSe_SSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -592,7 +592,7 @@ def lbtopketau_tautoe_same_sign_electrons_sspe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_same_sign_electrons_ospe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_SSe_OSpe', prescale=0.5):
+        name='Hlt2RD_LbToPKTauE_TauToE_SSe_OSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -627,7 +627,7 @@ def lbtopketau_tautoe_same_sign_electrons_ospe_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeelectron_from_tau_sspe_line(
         name='Hlt2RD_LbToPKTauE_TauToE_FakeelectronFromTau_SSpe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -662,7 +662,7 @@ def lbtopketau_tautoe_fakeelectron_from_tau_sspe_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeelectron_from_tau_ospe_line(
         name='Hlt2RD_LbToPKTauE_TauToE_FakeelectronFromTau_OSpe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -697,7 +697,7 @@ def lbtopketau_tautoe_fakeelectron_from_tau_ospe_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeelectron_from_b_sspe_line(
         name='Hlt2RD_LbToPKTauE_TauToE_FakeelectronFromB_SSpe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -738,7 +738,7 @@ def lbtopketau_tautoe_fakeelectron_from_b_sspe_line(
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeelectron_from_b_ospe_line(
         name='Hlt2RD_LbToPKTauE_TauToE_FakeelectronFromB_OSpe',
-        prescale=0.005):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -778,7 +778,7 @@ def lbtopketau_tautoe_fakeelectron_from_b_ospe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeproton_sspe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_FakeProton_SSpe', prescale=0.05):
+        name='Hlt2RD_LbToPKTauE_TauToE_FakeProton_SSpe', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -818,7 +818,7 @@ def lbtopketau_tautoe_fakeproton_sspe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakeproton_ospe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_FakeProton_OSpe', prescale=0.05):
+        name='Hlt2RD_LbToPKTauE_TauToE_FakeProton_OSpe', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -858,7 +858,7 @@ def lbtopketau_tautoe_fakeproton_ospe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakekaon_sspe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_FakeKaon_SSpe', prescale=0.15):
+        name='Hlt2RD_LbToPKTauE_TauToE_FakeKaon_SSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -897,7 +897,7 @@ def lbtopketau_tautoe_fakekaon_sspe_line(
 
 @register_line_builder(all_lines)
 def lbtopketau_tautoe_fakekaon_ospe_line(
-        name='Hlt2RD_LbToPKTauE_TauToE_FakeKaon_OSpe', prescale=0.2):
+        name='Hlt2RD_LbToPKTauE_TauToE_FakeKaon_OSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -996,7 +996,7 @@ def bdtokstetau_tautoe_oske_line(name='Hlt2RD_BdToKPiTauE_TauToE_OSKe',
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_same_sign_kpi_sske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_SSKpi_SSKe', prescale=0.3):
+        name='Hlt2RD_BdToKPiTauE_TauToE_SSKpi_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1035,7 +1035,7 @@ def bdtokstetau_tautoe_same_sign_kpi_sske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_same_sign_kpi_oske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_SSKpi_OSKe', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauE_TauToE_SSKpi_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1074,7 +1074,7 @@ def bdtokstetau_tautoe_same_sign_kpi_oske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_same_sign_electrons_sske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_SSe_SSKe', prescale=0.5):
+        name='Hlt2RD_BdToKPiTauE_TauToE_SSe_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1108,7 +1108,7 @@ def bdtokstetau_tautoe_same_sign_electrons_sske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_same_sign_electrons_oske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_SSe_OSKe', prescale=0.2):
+        name='Hlt2RD_BdToKPiTauE_TauToE_SSe_OSKe', prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1143,7 +1143,7 @@ def bdtokstetau_tautoe_same_sign_electrons_oske_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakeelectron_from_tau_sske_line(
         name='Hlt2RD_BdToKPiTauE_TauToE_FakeelectronFromTau_SSKe',
-        prescale=0.01):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1178,7 +1178,7 @@ def bdtokstetau_tautoe_fakeelectron_from_tau_sske_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakeelectron_from_tau_oske_line(
         name='Hlt2RD_BdToKPiTauE_TauToE_FakeelectronFromTau_OSKe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1213,7 +1213,7 @@ def bdtokstetau_tautoe_fakeelectron_from_tau_oske_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakeelectron_from_b_sske_line(
         name='Hlt2RD_BdToKPiTauE_TauToE_FakeelectronFromB_SSKe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1254,7 +1254,7 @@ def bdtokstetau_tautoe_fakeelectron_from_b_sske_line(
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakeelectron_from_b_oske_line(
         name='Hlt2RD_BdToKPiTauE_TauToE_FakeelectronFromB_OSKe',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1294,7 +1294,7 @@ def bdtokstetau_tautoe_fakeelectron_from_b_oske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakekaon_sske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_FakeKaon_SSKe', prescale=0.05):
+        name='Hlt2RD_BdToKPiTauE_TauToE_FakeKaon_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1334,7 +1334,7 @@ def bdtokstetau_tautoe_fakekaon_sske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakekaon_oske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_FakeKaon_OSKe', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauE_TauToE_FakeKaon_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1374,7 +1374,7 @@ def bdtokstetau_tautoe_fakekaon_oske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakepion_sske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_FakePion_SSKe', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauE_TauToE_FakePion_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1413,7 +1413,7 @@ def bdtokstetau_tautoe_fakepion_sske_line(
 
 @register_line_builder(all_lines)
 def bdtokstetau_tautoe_fakepion_oske_line(
-        name='Hlt2RD_BdToKPiTauE_TauToE_FakePion_OSKe', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauE_TauToE_FakePion_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1510,7 +1510,7 @@ def butoketau_tautoe_sske_line(name='Hlt2RD_BuToKTauE_TauToE_SSKe',
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_same_sign_electrons_oske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_SSe_OSKe', prescale=0.2):
+        name='Hlt2RD_BuToKTauE_TauToE_SSe_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1543,7 +1543,7 @@ def butoketau_tautoe_same_sign_electrons_oske_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_same_sign_electrons_sske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_SSe_SSKe', prescale=0.1):
+        name='Hlt2RD_BuToKTauE_TauToE_SSe_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1577,7 +1577,7 @@ def butoketau_tautoe_same_sign_electrons_sske_line(
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakeelectron_from_tau_oske_line(
         name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromTau_OSKe',
-        prescale=0.01):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1612,7 +1612,7 @@ def butoketau_tautoe_fakeelectron_from_tau_oske_line(
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakeelectron_from_tau_sske_line(
         name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromTau_SSKe',
-        prescale=0.003):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1646,7 +1646,8 @@ def butoketau_tautoe_fakeelectron_from_tau_sske_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakeelectron_from_b_oske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromB_OSKe', prescale=0.005):
+        name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromB_OSKe',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1684,7 +1685,8 @@ def butoketau_tautoe_fakeelectron_from_b_oske_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakeelectron_from_b_sske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromB_SSKe', prescale=0.01):
+        name='Hlt2RD_BuToKTauE_TauToE_FakeelectronFromB_SSKe',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1722,7 +1724,7 @@ def butoketau_tautoe_fakeelectron_from_b_sske_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakekaon_oske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_FakeKaon_OSKe', prescale=0.01):
+        name='Hlt2RD_BuToKTauE_TauToE_FakeKaon_OSKe', prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
@@ -1760,7 +1762,7 @@ def butoketau_tautoe_fakekaon_oske_line(
 
 @register_line_builder(all_lines)
 def butoketau_tautoe_fakekaon_sske_line(
-        name='Hlt2RD_BuToKTauE_TauToE_FakeKaon_SSKe', prescale=0.05):
+        name='Hlt2RD_BuToKTauE_TauToE_FakeKaon_SSKe', prescale=0.0001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_exclusive_hlt2.py
index 18cca6f8a2288abfd2b1eaf7f18595ebd78bbd92..bc5f0f3bf2822d05484ee1a26e592bbdc09c2675 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_exclusive_hlt2.py
@@ -217,7 +217,7 @@ def bstophimutau_tautomu_line(name='Hlt2RD_BsToKKTauMu_TauToMu',
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_same_sign_kaons_sskmu_line(
         name='Hlt2RD_BsToKKTauMu_TauToMu_SSK_SSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -257,7 +257,7 @@ def bstophimutau_tautomu_same_sign_kaons_sskmu_line(
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_same_sign_kaons_oskmu_line(
         name='Hlt2RD_BsToKKTauMu_TauToMu_SSK_OSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -296,7 +296,7 @@ def bstophimutau_tautomu_same_sign_kaons_oskmu_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_same_sign_muons_line(
-        name='Hlt2RD_BsToKKTauMu_TauToMu_SSMu', prescale=0.75,
+        name='Hlt2RD_BsToKKTauMu_TauToMu_SSMu', prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -332,7 +332,7 @@ def bstophimutau_tautomu_same_sign_muons_line(
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_fakemuon_from_tau_line(
         name='Hlt2RD_BsToKKTauMu_TauToMu_FakeMuFromTau',
-        prescale=0.015,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -366,7 +366,7 @@ def bstophimutau_tautomu_fakemuon_from_tau_line(
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_fakemuon_from_b_line(
         name='Hlt2RD_BsToKKTauMu_TauToMu_FakeMuFromB',
-        prescale=0.008,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -405,7 +405,7 @@ def bstophimutau_tautomu_fakemuon_from_b_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautomu_fakekaon_line(name='Hlt2RD_BsToKKTauMu_TauToMu_FakeK',
-                                       prescale=0.3,
+                                       prescale=0.001,
                                        persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -510,7 +510,7 @@ def lbtopkmutau_tautomu_ospmu_line(name='Hlt2RD_LbToPKTauMu_TauToMu_OSPMu',
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_same_sign_pk_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_SSPK_SSPMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -552,7 +552,7 @@ def lbtopkmutau_tautomu_same_sign_pk_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_same_sign_pk_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_SSPK_OSPMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -594,7 +594,7 @@ def lbtopkmutau_tautomu_same_sign_pk_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_same_sign_muons_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_SSMu_SSPMu',
-        prescale=0.75,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -631,7 +631,7 @@ def lbtopkmutau_tautomu_same_sign_muons_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_same_sign_muons_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_SSMu_OSPMu',
-        prescale=0.4,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -668,7 +668,7 @@ def lbtopkmutau_tautomu_same_sign_muons_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakemuon_from_tau_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeMuFromTau_SSPMu',
-        prescale=0.015,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -705,7 +705,7 @@ def lbtopkmutau_tautomu_fakemuon_from_tau_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakemuon_from_tau_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeMuFromTau_OSPMu',
-        prescale=0.015,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -742,7 +742,7 @@ def lbtopkmutau_tautomu_fakemuon_from_tau_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakemuon_from_b_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeMuFromB_SSPMu',
-        prescale=0.015,
+        prescale=0.00001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -785,7 +785,7 @@ def lbtopkmutau_tautomu_fakemuon_from_b_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakemuon_from_b_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeMuFromB_OSPMu',
-        prescale=0.005,
+        prescale=0.00001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -828,7 +828,7 @@ def lbtopkmutau_tautomu_fakemuon_from_b_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakeproton_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeP_SSPMu',
-        prescale=0.3,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
@@ -871,7 +871,7 @@ def lbtopkmutau_tautomu_fakeproton_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakeproton_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeP_OSPMu',
-        prescale=0.3,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
@@ -914,7 +914,7 @@ def lbtopkmutau_tautomu_fakeproton_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakekaon_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeK_SSPMu',
-        prescale=0.15,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -956,7 +956,7 @@ def lbtopkmutau_tautomu_fakekaon_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautomu_fakekaon_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToMu_FakeK_OSPMu',
-        prescale=0.3,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -1062,7 +1062,7 @@ def bdtokstmutau_tautomu_oskmu_line(name='Hlt2RD_BdToKPiTauMu_TauToMu_OSKMu',
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_same_sign_kpi_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_SSKPi_SSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1104,7 +1104,7 @@ def bdtokstmutau_tautomu_same_sign_kpi_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_same_sign_kpi_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_SSKPi_OSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1146,7 +1146,7 @@ def bdtokstmutau_tautomu_same_sign_kpi_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_same_sign_muons_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_SSMu_SSKMu',
-        prescale=0.5,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1183,7 +1183,7 @@ def bdtokstmutau_tautomu_same_sign_muons_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_same_sign_muons_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_SSMu_OSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1220,7 +1220,7 @@ def bdtokstmutau_tautomu_same_sign_muons_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakemuon_from_tau_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeMuFromTau_SSKMu',
-        prescale=0.005,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1257,7 +1257,7 @@ def bdtokstmutau_tautomu_fakemuon_from_tau_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakemuon_from_tau_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeMuFromTau_OSKMu',
-        prescale=0.008,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1294,7 +1294,7 @@ def bdtokstmutau_tautomu_fakemuon_from_tau_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakemuon_from_b_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeMuFromB_SSKMu',
-        prescale=0.008,
+        prescale=0.00001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1337,7 +1337,7 @@ def bdtokstmutau_tautomu_fakemuon_from_b_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakemuon_from_b_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeMuFromB_OSKMu',
-        prescale=0.01,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1380,7 +1380,7 @@ def bdtokstmutau_tautomu_fakemuon_from_b_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakekaon_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeK_SSKMu',
-        prescale=0.05,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -1423,7 +1423,7 @@ def bdtokstmutau_tautomu_fakekaon_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakekaon_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakeK_OSKMu',
-        prescale=0.15,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -1466,7 +1466,7 @@ def bdtokstmutau_tautomu_fakekaon_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakepion_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakePi_SSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1508,7 +1508,7 @@ def bdtokstmutau_tautomu_fakepion_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautomu_fakepion_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToMu_FakePi_OSKMu',
-        prescale=0.75,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -1610,7 +1610,7 @@ def butokmutau_tautomu_sskmu_line(name='Hlt2RD_BuToKTauMu_TauToMu_SSKMu',
 @register_line_builder(all_lines)
 def butokmutau_tautomu_same_sign_muons_oskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_SSMu_OSKMu',
-        prescale=0.2,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1645,7 +1645,7 @@ def butokmutau_tautomu_same_sign_muons_oskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_same_sign_muons_sskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_SSMu_SSKMu',
-        prescale=0.2,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1680,7 +1680,7 @@ def butokmutau_tautomu_same_sign_muons_sskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakemuon_from_tau_oskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeMuFromTau_OSKMu',
-        prescale=0.005,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1716,7 +1716,7 @@ def butokmutau_tautomu_fakemuon_from_tau_oskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakemuon_from_tau_sskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeMuFromTau_SSKMu',
-        prescale=0.005,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1752,7 +1752,7 @@ def butokmutau_tautomu_fakemuon_from_tau_sskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakemuon_from_b_oskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeMuFromB_OSKMu',
-        prescale=0.003,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1793,7 +1793,7 @@ def butokmutau_tautomu_fakemuon_from_b_oskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakemuon_from_b_sskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeMuFromB_SSKMu',
-        prescale=0.003,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1834,7 +1834,7 @@ def butokmutau_tautomu_fakemuon_from_b_sskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakekaon_oskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeK_OSKMu',
-        prescale=0.05,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -1874,7 +1874,7 @@ def butokmutau_tautomu_fakekaon_oskmu_line(
 @register_line_builder(all_lines)
 def butokmutau_tautomu_fakekaon_sskmu_line(
         name='Hlt2RD_BuToKTauMu_TauToMu_FakeK_SSKMu',
-        prescale=0.1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_tau_to_e_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_tau_to_e_exclusive_hlt2.py
index 00a6046a80c0fbeb3c4b949bb35bf17a354bddba..7b581761f9b58e7931c0083c7feed7c09d8dbf71 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_tau_to_e_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btosmutau_tau_to_e_exclusive_hlt2.py
@@ -205,7 +205,7 @@ def bstophimutau_tautoe_line(name='Hlt2RD_BsToKKTauMu_TauToE', prescale=1):
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_same_sign_kaons_sskmu_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_SSK_SSKmu', prescale=0.8):
+        name='Hlt2RD_BsToKKTauMu_TauToE_SSK_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -242,7 +242,7 @@ def bstophimutau_tautoe_same_sign_kaons_sskmu_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_same_sign_kaons_oskmu_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_SSK_OSKmu', prescale=0.4):
+        name='Hlt2RD_BsToKKTauMu_TauToE_SSK_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -279,7 +279,7 @@ def bstophimutau_tautoe_same_sign_kaons_oskmu_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_same_sign_leptons_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_SSl', prescale=0.75):
+        name='Hlt2RD_BsToKKTauMu_TauToE_SSl', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -312,7 +312,7 @@ def bstophimutau_tautoe_same_sign_leptons_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_fakeelectron_from_tau_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_FakeMuonFromTau', prescale=0.03):
+        name='Hlt2RD_BsToKKTauMu_TauToE_FakeMuonFromTau', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -343,7 +343,7 @@ def bstophimutau_tautoe_fakeelectron_from_tau_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_fakemuon_from_b_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_FakeMuonFromB', prescale=0.02):
+        name='Hlt2RD_BsToKKTauMu_TauToE_FakeMuonFromB', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -380,7 +380,7 @@ def bstophimutau_tautoe_fakemuon_from_b_line(
 
 @register_line_builder(all_lines)
 def bstophimutau_tautoe_fakekaon_line(
-        name='Hlt2RD_BsToKKTauMu_TauToE_FakeKaon', prescale=0.05):
+        name='Hlt2RD_BsToKKTauMu_TauToE_FakeKaon', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -484,7 +484,7 @@ def lbtopkmutau_tautoe_ospmu_line(name='Hlt2RD_LbToPKTauMu_TauToE_OSpmu',
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_same_sign_pk_sspmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_SSpK_SSpmu', prescale=0.2):
+        name='Hlt2RD_LbToPKTauMu_TauToE_SSpK_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -523,7 +523,7 @@ def lbtopkmutau_tautoe_same_sign_pk_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_same_sign_pk_ospmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_SSpK_OSpmu', prescale=0.1):
+        name='Hlt2RD_LbToPKTauMu_TauToE_SSpK_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -562,7 +562,7 @@ def lbtopkmutau_tautoe_same_sign_pk_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_same_sign_leptons_sspmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_SSl_SSpmu', prescale=0.2):
+        name='Hlt2RD_LbToPKTauMu_TauToE_SSl_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -596,7 +596,7 @@ def lbtopkmutau_tautoe_same_sign_leptons_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_same_sign_leptons_ospmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_SSl_OSpmu', prescale=0.2):
+        name='Hlt2RD_LbToPKTauMu_TauToE_SSl_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -631,7 +631,7 @@ def lbtopkmutau_tautoe_same_sign_leptons_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakeelectron_from_tau_sspmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromTau_SSpmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -666,7 +666,7 @@ def lbtopkmutau_tautoe_fakeelectron_from_tau_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakeelectron_from_tau_ospmu_line(
         name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromTau_OSpmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -700,7 +700,7 @@ def lbtopkmutau_tautoe_fakeelectron_from_tau_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakemuon_from_b_sspmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromB_SSpmu', prescale=0.015):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromB_SSpmu', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -740,7 +740,7 @@ def lbtopkmutau_tautoe_fakemuon_from_b_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakemuon_from_b_ospmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromB_OSpmu', prescale=0.015):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeMuonFromB_OSpmu', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -780,7 +780,7 @@ def lbtopkmutau_tautoe_fakemuon_from_b_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakeproton_sspmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeProton_SSpmu', prescale=0.08):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeProton_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -820,7 +820,7 @@ def lbtopkmutau_tautoe_fakeproton_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakeproton_ospmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeProton_OSpmu', prescale=0.05):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeProton_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -860,7 +860,7 @@ def lbtopkmutau_tautoe_fakeproton_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakekaon_sspmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeKaon_SSpmu', prescale=0.15):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeKaon_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -899,7 +899,7 @@ def lbtopkmutau_tautoe_fakekaon_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopkmutau_tautoe_fakekaon_ospmu_line(
-        name='Hlt2RD_LbToPKTauMu_TauToE_FakeKaon_OSpmu', prescale=0.01):
+        name='Hlt2RD_LbToPKTauMu_TauToE_FakeKaon_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -1006,7 +1006,7 @@ def bdtokstmutau_tautoe_oskmu_line(name='Hlt2RD_BdToKPiTauMu_TauToE_OSKmu',
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_same_sign_kpi_sskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_SSKpi_SSKmu', prescale=0.5):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_SSKpi_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1046,7 +1046,7 @@ def bdtokstmutau_tautoe_same_sign_kpi_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_same_sign_kpi_oskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_SSKpi_OSKmu', prescale=0.5):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_SSKpi_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1086,7 +1086,7 @@ def bdtokstmutau_tautoe_same_sign_kpi_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_same_sign_leptons_sskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_SSl_SSKmu', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_SSl_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1121,7 +1121,7 @@ def bdtokstmutau_tautoe_same_sign_leptons_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_same_sign_leptons_oskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_SSl_OSKmu', prescale=0.3):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_SSl_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1157,7 +1157,7 @@ def bdtokstmutau_tautoe_same_sign_leptons_oskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakeelectron_from_tau_sskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromTau_SSKmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1193,7 +1193,7 @@ def bdtokstmutau_tautoe_fakeelectron_from_tau_sskmu_line(
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakeelectron_from_tau_oskmu_line(
         name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromTau_OSKmu',
-        prescale=0.015):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1228,7 +1228,8 @@ def bdtokstmutau_tautoe_fakeelectron_from_tau_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakemuon_from_b_sskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromB_SSKmu', prescale=0.01):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromB_SSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1269,7 +1270,8 @@ def bdtokstmutau_tautoe_fakemuon_from_b_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakemuon_from_b_oskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromB_OSKmu', prescale=0.008):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeMuonFromB_OSKmu',
+        prescale=0.00001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1310,7 +1312,7 @@ def bdtokstmutau_tautoe_fakemuon_from_b_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakekaon_sskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeKaon_SSKmu', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeKaon_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1351,7 +1353,7 @@ def bdtokstmutau_tautoe_fakekaon_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakekaon_oskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeKaon_OSKmu', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakeKaon_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1392,7 +1394,7 @@ def bdtokstmutau_tautoe_fakekaon_oskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakepion_sskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakePion_SSKmu', prescale=0.1):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakePion_SSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1432,7 +1434,7 @@ def bdtokstmutau_tautoe_fakepion_sskmu_line(
 
 @register_line_builder(all_lines)
 def bdtokstmutau_tautoe_fakepion_oskmu_line(
-        name='Hlt2RD_BdToKPiTauMu_TauToE_FakePion_OSKmu', prescale=0.15):
+        name='Hlt2RD_BdToKPiTauMu_TauToE_FakePion_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1500,7 +1502,7 @@ def butokmutau_tautoe_oskmu_line(name='Hlt2RD_BuToKTauMu_TauToE_OSKmu',
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_sskmu_line(name='Hlt2RD_BuToKTauMu_TauToE_SSKmu',
-                                 prescale=0.3):
+                                 prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1528,7 +1530,7 @@ def butokmutau_tautoe_sskmu_line(name='Hlt2RD_BuToKTauMu_TauToE_SSKmu',
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_same_sign_leptons_oskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_SSl_OSKmu', prescale=0.05):
+        name='Hlt2RD_BuToKTauMu_TauToE_SSl_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1560,7 +1562,7 @@ def butokmutau_tautoe_same_sign_leptons_oskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_same_sign_leptons_sskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_SSl_SSKmu', prescale=0.1):
+        name='Hlt2RD_BuToKTauMu_TauToE_SSl_SSKmu', prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1592,7 +1594,7 @@ def butokmutau_tautoe_same_sign_leptons_sskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakeelectron_from_tau_oskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromTau_OSKmu', prescale=0.005):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromTau_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons_for_bu)
@@ -1625,7 +1627,8 @@ def butokmutau_tautoe_fakeelectron_from_tau_oskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakeelectron_from_tau_sskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromTau_SSKmu', prescale=0.005):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromTau_SSKmu',
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons_for_bu)
@@ -1658,7 +1661,7 @@ def butokmutau_tautoe_fakeelectron_from_tau_sskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakemuon_from_b_oskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromB_OSKmu', prescale=0.005):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromB_OSKmu', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1696,7 +1699,7 @@ def butokmutau_tautoe_fakemuon_from_b_oskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakemuon_from_b_sskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromB_SSKmu', prescale=0.005):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeMuonFromB_SSKmu', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons_from_tau = rdbuilder_thor.make_rd_detached_electrons(
@@ -1734,7 +1737,7 @@ def butokmutau_tautoe_fakemuon_from_b_sskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakekaon_oskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeKaon_OSKmu', prescale=0.02):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeKaon_OSKmu', prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
@@ -1771,7 +1774,7 @@ def butokmutau_tautoe_fakekaon_oskmu_line(
 
 @register_line_builder(all_lines)
 def butokmutau_tautoe_fakekaon_sskmu_line(
-        name='Hlt2RD_BuToKTauMu_TauToE_FakeKaon_SSKmu', prescale=0.03):
+        name='Hlt2RD_BuToKTauMu_TauToE_FakeKaon_SSKmu', prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_ee_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_ee_exclusive_hlt2.py
index 6e683c7f9b9d71738221c5642d4ca1e2e25e20d2..63e21e0074ce6d2952696e16c042f65e17034231 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_ee_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_ee_exclusive_hlt2.py
@@ -186,7 +186,7 @@ def bstophitautau_tautoe_line(name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE',
 
 @register_line_builder(all_lines)
 def bstophitautau_tautoe_same_sign_kaons_line(
-        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_SSK', prescale=0.75):
+        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_SSK', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -223,7 +223,7 @@ def bstophitautau_tautoe_same_sign_kaons_line(
 
 @register_line_builder(all_lines)
 def bstophitautau_tautoe_same_sign_electrons_line(
-        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_SSe', prescale=0.5):
+        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_SSe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -259,7 +259,7 @@ def bstophitautau_tautoe_same_sign_electrons_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautoe_fakeelectron_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_FakeElectron',
-        prescale=0.04):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -295,7 +295,7 @@ def bstophitautau_tautoe_fakeelectron_line(
 
 @register_line_builder(all_lines)
 def bstophitautau_tautoe_fakekaon_line(
-        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_FakeKaon', prescale=0.15):
+        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToE_FakeKaon', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -359,7 +359,7 @@ def lbtopktautau_tautoe_line(name='Hlt2RD_LbToPKTauTau_TauToE', prescale=1):
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_same_sign_pK_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_SSpK', prescale=0.2):
+        name='Hlt2RD_LbToPKTauTau_TauToE_SSpK', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -396,7 +396,7 @@ def lbtopktautau_tautoe_same_sign_pK_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_same_sign_electrons_sspe_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_SSe_SSpe', prescale=1):
+        name='Hlt2RD_LbToPKTauTau_TauToE_SSe_SSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -431,7 +431,7 @@ def lbtopktautau_tautoe_same_sign_electrons_sspe_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_same_sign_electrons_ospe_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_SSe_OSpe', prescale=1):
+        name='Hlt2RD_LbToPKTauTau_TauToE_SSe_OSpe', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -466,7 +466,7 @@ def lbtopktautau_tautoe_same_sign_electrons_ospe_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_fakeelectron_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_FakeElectron', prescale=0.05):
+        name='Hlt2RD_LbToPKTauTau_TauToE_FakeElectron', prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -502,7 +502,7 @@ def lbtopktautau_tautoe_fakeelectron_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_fakeproton_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_FakeProton', prescale=0.1):
+        name='Hlt2RD_LbToPKTauTau_TauToE_FakeProton', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -539,7 +539,7 @@ def lbtopktautau_tautoe_fakeproton_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautoe_fakekaon_line(
-        name='Hlt2RD_LbToPKTauTau_TauToE_FakeKaon', prescale=0.1):
+        name='Hlt2RD_LbToPKTauTau_TauToE_FakeKaon', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -638,7 +638,7 @@ def bdtoksttautau_tautoe_same_sign_Kpi_line(
 
 @register_line_builder(all_lines)
 def bdtoksttautau_tautoe_same_sign_electrons_sske_line(
-        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_SSe_SSKe', prescale=1):
+        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_SSe_SSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -674,7 +674,7 @@ def bdtoksttautau_tautoe_same_sign_electrons_sske_line(
 
 @register_line_builder(all_lines)
 def bdtoksttautau_tautoe_same_sign_electrons_oske_line(
-        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_SSe_OSKe', prescale=0.1):
+        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_SSe_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -711,7 +711,7 @@ def bdtoksttautau_tautoe_same_sign_electrons_oske_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautoe_fakeelectron_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_FakeElectron',
-        prescale=0.01):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -748,7 +748,7 @@ def bdtoksttautau_tautoe_fakeelectron_line(
 
 @register_line_builder(all_lines)
 def bdtoksttautau_tautoe_fakekaon_line(
-        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_FakeKaon', prescale=0.2):
+        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_FakeKaon', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -786,7 +786,7 @@ def bdtoksttautau_tautoe_fakekaon_line(
 
 @register_line_builder(all_lines)
 def bdtoksttautau_tautoe_fakepion_line(
-        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_FakePion', prescale=0.5):
+        name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToE_FakePion', prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -937,7 +937,7 @@ def bstokstksttautau_tautoe_same_sign_electrons_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautoe_fakeelectron_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToE_FakeElectron',
-        prescale=0.5):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1000,7 +1000,7 @@ def butoktautau_tautoe_line(name='Hlt2RD_BuToKTauTau_TauToE', prescale=0.15):
 
 @register_line_builder(all_lines)
 def butoktautau_tautoe_same_sign_electrons_oske_line(
-        name='Hlt2RD_BuToKTauTau_TauToE_SSe_OSKe', prescale=0.05):
+        name='Hlt2RD_BuToKTauTau_TauToE_SSe_OSKe', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -1031,7 +1031,7 @@ def butoktautau_tautoe_same_sign_electrons_oske_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautoe_same_sign_electrons_sske_line(
-        name='Hlt2RD_BuToKTauTau_TauToE_SSe_SSKe', prescale=0.1):
+        name='Hlt2RD_BuToKTauTau_TauToE_SSe_SSKe', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -1062,7 +1062,7 @@ def butoktautau_tautoe_same_sign_electrons_sske_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautoe_fakeelectron_line(
-        name='Hlt2RD_BuToKTauTau_TauToE_FakeElectron', prescale=0.01):
+        name='Hlt2RD_BuToKTauTau_TauToE_FakeElectron', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -1094,7 +1094,7 @@ def butoktautau_tautoe_fakeelectron_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautoe_fakekaon_line(name='Hlt2RD_BuToKTauTau_TauToE_FakeKaon',
-                                     prescale=0.03):
+                                     prescale=0.0001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_exclusive_hlt2.py
index 2460c3bcc3fff250d0ffb58d9445a791f1a58a37..5b2194191f6154a3bee3aa1886ea3640bc54a0bd 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_exclusive_hlt2.py
@@ -179,7 +179,7 @@ def bstophitautau_tautomu_line(name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu',
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_same_sign_kaons_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_SSK',
-        prescale=1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -216,7 +216,7 @@ def bstophitautau_tautomu_same_sign_kaons_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_same_sign_muons_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_SSMu',
-        prescale=0.1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -253,7 +253,7 @@ def bstophitautau_tautomu_same_sign_muons_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_fakemuon_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_FakeMu',
-        prescale=0.02,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -285,7 +285,7 @@ def bstophitautau_tautomu_fakemuon_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_fakekaon_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_FakeK',
-        prescale=0.2,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -379,7 +379,7 @@ def lbtopktautau_tautomu_same_sign_pK_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_same_sign_muons_sspmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_SSMu_SSPMu',
-        prescale=0.1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -417,7 +417,7 @@ def lbtopktautau_tautomu_same_sign_muons_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_same_sign_muons_ospmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_SSMu_OSPMu',
-        prescale=0.1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -455,7 +455,7 @@ def lbtopktautau_tautomu_same_sign_muons_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_fakemuon_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_FakeMu',
-        prescale=0.02,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -487,7 +487,8 @@ def lbtopktautau_tautomu_fakemuon_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_fakeproton_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_FakeP', prescale=0.1,
+        name='Hlt2RD_LbToPKTauTau_TauToMu_FakeP',
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
@@ -518,7 +519,8 @@ def lbtopktautau_tautomu_fakeproton_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_fakekaon_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_FakeK', prescale=0.2,
+        name='Hlt2RD_LbToPKTauTau_TauToMu_FakeK',
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
@@ -615,7 +617,7 @@ def bdtoksttautau_tautomu_same_sign_Kpi_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_same_sign_muons_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_SSMu_SSKMu',
-        prescale=0.5,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -653,7 +655,7 @@ def bdtoksttautau_tautomu_same_sign_muons_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_same_sign_muons_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_SSMu_OSKMu',
-        prescale=0.5,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -691,7 +693,7 @@ def bdtoksttautau_tautomu_same_sign_muons_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_fakemuon_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_FakeMu',
-        prescale=0.008,
+        prescale=0.00001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -724,7 +726,7 @@ def bdtoksttautau_tautomu_fakemuon_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_fakekaon_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_FakeK',
-        prescale=0.1,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -756,7 +758,7 @@ def bdtoksttautau_tautomu_fakekaon_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_fakepion_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_FakePi',
-        prescale=1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
@@ -821,7 +823,7 @@ def bstokstksttautau_tautomu_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_same_sign_kstar_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_SSKst',
-        prescale=1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -860,7 +862,7 @@ def bstokstksttautau_tautomu_same_sign_kstar_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_same_sign_muons_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_SSMu',
-        prescale=1,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -904,7 +906,7 @@ def bstokstksttautau_tautomu_same_sign_muons_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_fakemuon_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_FakeMu',
-        prescale=0.1,
+        prescale=0.01,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -968,7 +970,7 @@ def butoktautau_tautomu_line(name='Hlt2RD_BuToKTauTau_TauToMu',
 @register_line_builder(all_lines)
 def butoktautau_tautomu_same_sign_muons_oskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_SSMu_OSKMu',
-        prescale=0.3,
+        prescale=0.001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1001,7 +1003,7 @@ def butoktautau_tautomu_same_sign_muons_oskmu_line(
 @register_line_builder(all_lines)
 def butoktautau_tautomu_same_sign_muons_sskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_SSMu_SSKMu',
-        prescale=0.3,
+        prescale=0.0001,
         persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1033,7 +1035,7 @@ def butoktautau_tautomu_same_sign_muons_sskmu_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_fakemuon_line(name='Hlt2RD_BuToKTauTau_TauToMu_FakeMu',
-                                      prescale=0.01,
+                                      prescale=0.00001,
                                       persistreco=False):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
@@ -1060,7 +1062,7 @@ def butoktautau_tautomu_fakemuon_line(name='Hlt2RD_BuToKTauTau_TauToMu_FakeMu',
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_fakekaon_line(name='Hlt2RD_BuToKTauTau_TauToMu_FakeK',
-                                      prescale=0.1,
+                                      prescale=0.001,
                                       persistreco=False):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_mue_exclusive_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_mue_exclusive_hlt2.py
index 0359fad30aa287c149aeb2e19a0367328c1380bc..d4fd57c528972a70addfe3119ebb782a4faac8b0 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_mue_exclusive_hlt2.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/btostautau_mue_exclusive_hlt2.py
@@ -161,7 +161,7 @@ kwargs_electrons_reverse_pid = {
 
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_line(
-        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE', prescale=0.1):
+        name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE', prescale=1):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -192,7 +192,7 @@ def bstophitautau_tautomu_tautoe_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_same_sign_kaons_sskmu_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_SSK_SSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -229,7 +229,7 @@ def bstophitautau_tautomu_tautoe_same_sign_kaons_sskmu_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_same_sign_kaons_oskmu_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_SSK_OSKmu',
-        prescale=0.5):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -267,7 +267,7 @@ def bstophitautau_tautomu_tautoe_same_sign_kaons_oskmu_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_same_sign_mues_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_SSemu',
-        prescale=0.5):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -304,7 +304,7 @@ def bstophitautau_tautomu_tautoe_same_sign_mues_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_fakemuon_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_FakeMuon',
-        prescale=0.004):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_muons = rdbuilder_thor.make_rd_detached_muons(
@@ -341,7 +341,7 @@ def bstophitautau_tautomu_tautoe_fakemuon_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_fakeelectron_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_FakeElectron',
-        prescale=0.04):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -378,7 +378,7 @@ def bstophitautau_tautomu_tautoe_fakeelectron_line(
 @register_line_builder(all_lines)
 def bstophitautau_tautomu_tautoe_fakekaon_line(
         name='Hlt2RD_BsToPhiTauTau_PhiToKK_TauToMu_TauToE_FakeKaon',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
@@ -412,7 +412,7 @@ def bstophitautau_tautomu_tautoe_fakekaon_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_sspmu_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpmu', prescale=0.1):
+        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpmu', prescale=1):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -475,7 +475,7 @@ def lbtopktautau_tautomu_tautoe_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_same_sign_pK_sspmu_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpK_SSpmu', prescale=1):
+        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpK_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -512,7 +512,7 @@ def lbtopktautau_tautomu_tautoe_same_sign_pK_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_same_sign_pK_ospmu_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpK_OSpmu', prescale=1):
+        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSpK_OSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -550,7 +550,7 @@ def lbtopktautau_tautomu_tautoe_same_sign_pK_ospmu_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_same_sign_emus_sspmu_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSemu_SSpmu', prescale=1):
+        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSemu_SSpmu', prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -587,7 +587,8 @@ def lbtopktautau_tautomu_tautoe_same_sign_emus_sspmu_line(
 
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_same_sign_emus_ospmu_line(
-        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSemu_OSpmu', prescale=0.1):
+        name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_SSemu_OSpmu',
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -625,7 +626,7 @@ def lbtopktautau_tautomu_tautoe_same_sign_emus_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakemuon_sspmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeMuon_SSpmu',
-        prescale=0.01):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -663,7 +664,7 @@ def lbtopktautau_tautomu_tautoe_fakemuon_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakemuon_ospmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeMuon_OSpmu',
-        prescale=0.04):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -702,7 +703,7 @@ def lbtopktautau_tautomu_tautoe_fakemuon_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakeelectron_sspmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeElectron_SSpmu',
-        prescale=0.02):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -740,7 +741,7 @@ def lbtopktautau_tautomu_tautoe_fakeelectron_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakeelectron_ospmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeElectron_OSpmu',
-        prescale=0.02):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
@@ -779,7 +780,7 @@ def lbtopktautau_tautomu_tautoe_fakeelectron_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakeproton_sspmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeProton_SSpmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -813,7 +814,7 @@ def lbtopktautau_tautomu_tautoe_fakeproton_sspmu_line(
 
 def lbtopktautau_tautomu_tautoe_fakeproton_ospmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeProton_OSpmu',
-        prescale=0.05):
+        prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(
         **kwargs_protons_reverse_pid)
@@ -849,7 +850,7 @@ def lbtopktautau_tautomu_tautoe_fakeproton_ospmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakekaon_sspmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeKaon_SSpmu',
-        prescale=0.1):
+        prescale=0.0001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -883,7 +884,7 @@ def lbtopktautau_tautomu_tautoe_fakekaon_sspmu_line(
 @register_line_builder(all_lines)
 def lbtopktautau_tautomu_tautoe_fakekaon_ospmu_line(
         name='Hlt2RD_LbToPKTauTau_TauToMu_TauToE_FakeKaon_OSpmu',
-        prescale=0.4):
+        prescale=0.001):
     pvs = make_pvs()
     protons = rdbuilder_thor.make_rd_detached_protons(**kwargs_protons)
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_reverse_pid)
@@ -918,7 +919,7 @@ def lbtopktautau_tautomu_tautoe_fakekaon_ospmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_SSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -950,7 +951,7 @@ def bdtoksttautau_tautomu_tautoe_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_OSKmu',
-        prescale=0.2):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -983,7 +984,7 @@ def bdtoksttautau_tautomu_tautoe_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_same_sign_Kpi_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_SSKpi_SSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1021,7 +1022,7 @@ def bdtoksttautau_tautomu_tautoe_same_sign_Kpi_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_same_sign_Kpi_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_SSKpi_OSKmu',
-        prescale=0.5):
+        prescale=0.00001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1060,7 +1061,7 @@ def bdtoksttautau_tautomu_tautoe_same_sign_Kpi_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_same_sign_mues_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_SSmue_SSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1098,7 +1099,7 @@ def bdtoksttautau_tautomu_tautoe_same_sign_mues_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_same_sign_mues_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_SSmue_OSKmu',
-        prescale=0.2):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1136,7 +1137,7 @@ def bdtoksttautau_tautomu_tautoe_same_sign_mues_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakemuon_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeMuon_SSKmu',
-        prescale=0.02):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1174,7 +1175,7 @@ def bdtoksttautau_tautomu_tautoe_fakemuon_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakemuon_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeMuon_OSKmu',
-        prescale=0.02):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1213,7 +1214,7 @@ def bdtoksttautau_tautomu_tautoe_fakemuon_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakeelectron_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeElectron_SSKmu',
-        prescale=0.02):
+        prescale=0.01):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1251,7 +1252,7 @@ def bdtoksttautau_tautomu_tautoe_fakeelectron_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakeelectron_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeElectron_OSKmu',
-        prescale=0.02):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1290,7 +1291,7 @@ def bdtoksttautau_tautomu_tautoe_fakeelectron_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakekaon_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeKaon_SSKmu',
-        prescale=0.4):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1325,7 +1326,7 @@ def bdtoksttautau_tautomu_tautoe_fakekaon_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakekaon_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakeKaon_OSKmu',
-        prescale=0.05):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_kstar_reverse_pid)
@@ -1361,7 +1362,7 @@ def bdtoksttautau_tautomu_tautoe_fakekaon_oskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakepion_sskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakePion_SSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1395,7 +1396,7 @@ def bdtoksttautau_tautomu_tautoe_fakepion_sskmu_line(
 @register_line_builder(all_lines)
 def bdtoksttautau_tautomu_tautoe_fakepion_oskmu_line(
         name='Hlt2RD_BdToKstTauTau_KstToKPi_TauToMu_TauToE_FakePion_OSKmu',
-        prescale=0.1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_kstar)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions_reverse_pid)
@@ -1466,7 +1467,7 @@ def bstokstksttautau_tautomu_tautoe_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_tautoe_same_sign_kstar_sskstmu_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_TauToE_SSKst_SSKstmu',
-        prescale=1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1508,7 +1509,7 @@ def bstokstksttautau_tautomu_tautoe_same_sign_kstar_sskstmu_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_tautoe_same_sign_kstar_oskstmu_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_TauToE_SSKst_OSKstmu',
-        prescale=1):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1598,7 +1599,7 @@ def bstokstksttautau_tautomu_tautoe_same_sign_mues_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_tautoe_fakemuon_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_TauToE_FakeMuon',
-        prescale=0.01):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1641,7 +1642,7 @@ def bstokstksttautau_tautomu_tautoe_fakemuon_line(
 @register_line_builder(all_lines)
 def bstokstksttautau_tautomu_tautoe_fakeelectron_line(
         name='Hlt2RD_BsToKstKstTauTau_KstToKPi_TauToMu_TauToE_FakeElectron',
-        prescale=0.01):
+        prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons)
     pions = rdbuilder_thor.make_rd_detached_pions(**kwargs_pions)
@@ -1739,7 +1740,7 @@ def butoktautau_tautomu_tautoe_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_same_sign_mues_oskmu_line(
-        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_SSmue_OSKmu', prescale=0.05):
+        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_SSmue_OSKmu', prescale=0.001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -1771,7 +1772,7 @@ def butoktautau_tautomu_tautoe_same_sign_mues_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_same_sign_mues_sskmu_line(
-        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_SSmue_SSKmu', prescale=0.5):
+        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_SSmue_SSKmu', prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     muons = rdbuilder_thor.make_rd_detached_muons(**kwargs_muons)
@@ -1804,7 +1805,7 @@ def butoktautau_tautomu_tautoe_same_sign_mues_sskmu_line(
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakemuon_sskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeMuon_SSKmu',
-        prescale=0.01):
+        prescale=0.0001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -1837,7 +1838,7 @@ def butoktautau_tautomu_tautoe_fakemuon_sskmu_line(
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakemuon_oskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeMuon_OSKmu',
-        prescale=0.01):
+        prescale=0.00001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     electrons = rdbuilder_thor.make_rd_detached_electrons(**kwargs_electrons)
@@ -1871,7 +1872,7 @@ def butoktautau_tautomu_tautoe_fakemuon_oskmu_line(
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakeelectron_sskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeElectron_SSKmu',
-        prescale=0.005):
+        prescale=0.00001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     fake_electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1904,7 +1905,7 @@ def butoktautau_tautomu_tautoe_fakeelectron_sskmu_line(
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakeelectron_oskmu_line(
         name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeElectron_OSKmu',
-        prescale=0.01):
+        prescale=0.00001):
     pvs = make_pvs()
     kaons = rdbuilder_thor.make_rd_detached_kaons(**kwargs_kaons_for_bu)
     fake_electrons = rdbuilder_thor.make_rd_detached_electrons(
@@ -1937,7 +1938,8 @@ def butoktautau_tautomu_tautoe_fakeelectron_oskmu_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakekaon_sskmu_line(
-        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeKaon_SSKmu', prescale=0.1):
+        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeKaon_SSKmu',
+        prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
@@ -1968,7 +1970,8 @@ def butoktautau_tautomu_tautoe_fakekaon_sskmu_line(
 
 @register_line_builder(all_lines)
 def butoktautau_tautomu_tautoe_fakekaon_oskmu_line(
-        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeKaon_OSKmu', prescale=0.1):
+        name='Hlt2RD_BuToKTauTau_TauToMu_TauToE_FakeKaon_OSKmu',
+        prescale=0.001):
     pvs = make_pvs()
     fake_kaons = rdbuilder_thor.make_rd_detached_kaons(
         **kwargs_kaons_for_bu_reverse_pid)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/RpK_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/RpK_builders.py
index ea010930d1be8deb14bce141941a939a8dc3aa66..23927867e7256dbfef152198f684e28d1d9c38b6 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/RpK_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/RpK_builders.py
@@ -65,9 +65,11 @@ def make_dihadron_from_pK(name="HLT2RD_DiHadronFromPK_Builder_{hash}",
         descriptor = "[Lambda(1520)0 -> p+ K-]cc"
 
     protons = make_rd_has_rich_detached_protons(
-        mipchi2dvprimary_min=9, pt_min=300 * MeV)
+        mipchi2dvprimary_min=16,
+        pt_min=300 * MeV,
+        pid=F.require_all(F.PID_P > 4., F.PID_P - F.PID_K > 2.))
     kaons = make_rd_has_rich_detached_kaons(
-        mipchi2dvprimary_min=9, pt_min=300 * MeV)
+        mipchi2dvprimary_min=16, pt_min=300 * MeV, pid=(F.PID_K > 2.))
 
     combination_code = F.require_all(F.PT > min_pt, F.MASS < max_mass,
                                      F.MAXSDOCACHI2CUT(max_docachi2))
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xgamma_exclusive_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xgamma_exclusive_builders.py
index bd86d38d82a2daa2f9e526d313f1d0041552c85d..49f0e504b120a254ce27bd3e0e323c5eedbf724d 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xgamma_exclusive_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xgamma_exclusive_builders.py
@@ -13,6 +13,12 @@ exclusive B -> hh gamma builder
 
 author: Izaac Sanderswood
 date: 25.05.22
+
+###
+Exclusive builders for Bc
+authors: Debashis Sahoo, Biplab Dey
+date: 15.05.2024
+
 """
 from GaudiKernel.SystemOfUnits import MeV
 import Functors as F
@@ -112,3 +118,120 @@ def make_rd_detached_pK(
                             DecayDescriptor=descriptor,
                             CombinationCut=combination_code,
                             CompositeCut=vertex_code)
+
+
+@configurable
+def make_PV(hadrons,
+            kshort,
+            decay_descriptor,
+            name="rd_radexcl_PV_{hash}",
+            vtxchi2dof_max=16.0,
+            m_min=1000 * MeV,
+            m_max=2000 * MeV,
+            min_pt=1000 * MeV,
+            ipchi2_min=9.,
+            fdchi2_min=0.,
+            dira_min=0.9):
+    combination_code = F.require_all(
+        in_range(m_min, F.MASS, m_max), F.PT > min_pt)
+    pvs = make_pvs()
+    vertex_code = F.require_all(F.CHI2DOF < vtxchi2dof_max,
+                                F.BPVIPCHI2(pvs) > ipchi2_min,
+                                F.BPVFDCHI2(pvs) > fdchi2_min,
+                                F.BPVDIRA(pvs) > dira_min)
+
+    return ParticleCombiner(
+        name=name,
+        Inputs=[hadrons, kshort],
+        DecayDescriptor=decay_descriptor,
+        CombinationCut=combination_code,
+        CompositeCut=vertex_code)
+
+
+def make_dzeros_for_rd_bc(particle1, particle2):
+    descriptor = "[D0 -> K- pi+]cc"
+    name = 'rd_D0ToKmPip_{hash}'
+    return ParticleCombiner(
+        [particle1, particle2],
+        DecayDescriptor=descriptor,
+        name=name,
+        CombinationCut=F.require_all(
+            in_range(1700 * MeV, F.MASS, 2000 * MeV),
+            F.MAX(F.PT) > 1200 * MeV,
+            F.PT > 1 * GeV,
+        ),
+        CompositeCut=F.require_all(
+            in_range(1764 * MeV, F.MASS, 1964 * MeV), F.CHI2DOF < 16.,
+            F.BPVFDCHI2(make_pvs()) > 25.),
+    )
+
+
+def make_ds_for_rd_bc(particle1, particle2, particle3):
+    descriptor = "[D_s+ -> K+ K- pi+]cc"
+    name = 'rd_DsToKpKmPip_{hash}'
+
+    pvs = make_pvs()
+
+    return ParticleCombiner(
+        [particle1, particle2, particle3],
+        DecayDescriptor=descriptor,
+        name=name,
+        CombinationCut=F.require_all(
+            in_range(1910 * MeV, F.MASS, 2030 * MeV),
+            F.MAX(F.PT) > 1000 * MeV,
+            F.PT > 1 * GeV,
+        ),
+        CompositeCut=F.require_all(
+            in_range(1920 * MeV, F.MASS, 2020 * MeV),
+            F.CHI2DOF < 16.,
+            F.BPVDIRA(pvs) > 0.999,
+        ),
+    )
+
+
+@configurable
+def make_dsst(
+        hadrons,
+        kshort,
+        decay_descriptor,
+        name="rd_radexcl_PV_{hash}",
+        m_min=1000 * MeV,
+        m_max=2500 * MeV,
+        min_pt=1000 * MeV,
+):
+    combination_code = F.require_all(
+        in_range(m_min, F.MASS, m_max), F.PT > min_pt)
+
+    return ParticleCombiner(
+        ParticleCombiner="ParticleAdder",
+        name=name,
+        Inputs=[hadrons, kshort],
+        DecayDescriptor=decay_descriptor,
+        CombinationCut=combination_code,
+    )
+
+
+@configurable
+def make_b2xgamma_excl_bc(
+        intermediate,
+        photons,
+        descriptor,
+        name,
+        comb_m_min=5000 * MeV,
+        comb_m_max=7400 * MeV,
+        pt_min=2000 * MeV,
+        sum_pt_min=0 * MeV,
+):
+    combination_code = F.require_all(
+        F.PT > pt_min,
+        F.CHILD(1, F.SUM(F.PT)) + F.CHILD(2, F.PT) > sum_pt_min,
+        in_range(comb_m_min, F.MASS, comb_m_max),
+    )
+
+    return ParticleCombiner(
+        ParticleCombiner="ParticleAdder",
+        name=name,
+        Inputs=[intermediate, photons],
+        DecayDescriptor=descriptor,
+        CombinationCut=combination_code,
+    )
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py
index a0e43989976c9d184e8c54d55145cde712395718..95018985e2dd93195042b1ad3b7256f358b8c092 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py
@@ -33,7 +33,8 @@ from Hlt2Conf.lines.rd.builders.rdbuilder_thor import (
     make_rd_detached_muons, make_rd_detached_electrons, make_rd_detached_phis,
     make_rd_detached_rho0, make_rd_detached_etaprime, make_rd_detached_k1,
     make_rd_tauons_hadronic_decay, make_rd_has_rich_detached_kaons,
-    make_rd_has_rich_detached_protons)
+    make_rd_has_rich_detached_protons, make_rd_ks0_lls, make_rd_ks0_dds,
+    make_rd_lambda_lls, make_rd_lambda_dds)
 
 
 @configurable
@@ -169,6 +170,48 @@ def filter_rd_detached_k1(name='rd_detached_k1_{hash}',
     return ParticleFilter(k1, name=name + "_{hash}", Cut=F.FILTER(code))
 
 
+@configurable
+def filter_rd_ks0s(name='rd_ks0_{hash}',
+                   adocachi2cut=25.,
+                   vchi2pdof_max=20.,
+                   use_down_track=False):
+    """
+    Filter Ks0 built in rdbuilder_thor
+    Select ll or dd builder
+    """
+    if use_down_track:
+        ks0 = make_rd_ks0_dds(
+            adocachi2cut=adocachi2cut, vchi2pdof_max=vchi2pdof_max)
+    else:
+        ks0 = make_rd_ks0_lls(
+            adocachi2cut=adocachi2cut, vchi2pdof_max=vchi2pdof_max)
+
+    return ks0
+
+
+@configurable
+def filter_rd_lambdas(name='filter_rd_lambda_{hash}',
+                      pi_ipchi2_min=9.,
+                      adocachi2cut=25.,
+                      vchi2pdof_max=20.,
+                      use_down_tracks=False):
+    """
+    Filter the Lambda0 built in rdbuilder_thor
+    Select ll or dd builder
+    """
+    if use_down_tracks:
+        lambda0 = make_rd_lambda_dds(
+            pi_ipchi2_min=pi_ipchi2_min,
+            adocachi2cut=adocachi2cut,
+            vchi2pdof_max=vchi2pdof_max)
+    else:
+        lambda0 = make_rd_lambda_lls(
+            pi_ipchi2_min=pi_ipchi2_min,
+            adocachi2cut=adocachi2cut,
+            vchi2pdof_max=vchi2pdof_max)
+    return lambda0
+
+
 def filter_BToTauTau(
         ditaus,
         name='filter_RD_B2tautau_{hash}',
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_builders.py
index ac986d24dbdaab4a5937a482db86e563f061932e..40806b65ade117447a1c367bb821e7d30266be97 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_builders.py
@@ -411,7 +411,6 @@ def make_bhadron(pvs,
                  dilepton,
                  hadron,
                  descriptor,
-                 name,
                  min_mass=4800 * MeV,
                  max_mass=6900 * MeV,
                  pt_min=2500 * MeV,
@@ -423,10 +422,10 @@ def make_bhadron(pvs,
                  vtx_sep_min=None,
                  daughter_index=2):
     '''Builder for b-baryon decaying to light baryon and dilepton.'''
-    name = "make_bhadron_for_" + name + "_{hash}"
+    name = "RD_bbaryon_{hash}"
     combination_cut = F.require_all(
-        in_range(min_mass * 0.9, F.MASS, max_mass * 1.1), F.PT > 0.9 * pt_min,
-        F.MAXSDOCACHI2CUT(docachi2_max))
+        in_range(min_mass - 100 * MeV, F.MASS, max_mass + 100 * MeV),
+        F.PT > 0.9 * pt_min, F.MAXSDOCACHI2CUT(docachi2_max))
 
     composite_cut = F.require_all(
         in_range(min_mass, F.MASS, max_mass), F.PT > pt_min,
@@ -453,7 +452,6 @@ def make_bhadron_3body(pvs,
                        hadron1,
                        hadron2,
                        descriptor,
-                       name,
                        min_mass=4800 * MeV,
                        max_mass=6900 * MeV,
                        pt_min=2500 * MeV,
@@ -465,11 +463,11 @@ def make_bhadron_3body(pvs,
                        vtx_sep_min=None,
                        daughter_index=2):
     '''Builder for b-baryon decaying to light baryon, one or two pions (dipion) and dilepton.'''
-    name = "make_bhadron_for_" + name + "_{hash}"
+    name = "RD_bbaryon_3body_{hash}"
 
     combination_cut = require_all(
-        in_range(min_mass * 0.9, F.MASS, max_mass * 1.1), F.PT > 0.9 * pt_min,
-        F.MAXSDOCACHI2CUT(docachi2_max))
+        in_range(min_mass - 100 * MeV, F.MASS, max_mass + 100 * MeV),
+        F.PT > 0.9 * pt_min, F.MAXSDOCACHI2CUT(docachi2_max))
 
     composite_cut = require_all(
         in_range(min_mass, F.MASS, max_mass), F.PT > pt_min,
@@ -497,7 +495,6 @@ def make_bhadron_4body(pvs,
                        hadron2,
                        hadron3,
                        descriptor,
-                       name,
                        min_mass=4800 * MeV,
                        max_mass=6900 * MeV,
                        pt_min=2500 * MeV,
@@ -509,11 +506,11 @@ def make_bhadron_4body(pvs,
                        vtx_sep_min=None,
                        daughter_index=2):
     '''Builder for b-hadron decaying to two hadrons, pion or two pions (dipion) and dilepton.'''
-    name = "make_bhadron_for_" + name + "_{hash}"
+    name = "RD_bbaryon_4body_{hash}"
 
     combination_cut = require_all(
-        in_range(min_mass * 0.9, F.MASS, max_mass * 1.1), F.PT > 0.9 * pt_min,
-        F.MAXSDOCACHI2CUT(docachi2_max))
+        in_range(min_mass - 100 * MeV, F.MASS, max_mass + 100 * MeV),
+        F.PT > 0.9 * pt_min, F.MAXSDOCACHI2CUT(docachi2_max))
 
     composite_cut = require_all(
         in_range(min_mass, F.MASS, max_mass), F.PT > pt_min,
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_radiative_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_radiative_builders.py
index 7ed7217f949de68b694ac2b15fb9bfecd741ab0d..af4ba2156398848ed5b8aa9870fa42253d4efaa4 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_radiative_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/baryonic_radiative_builders.py
@@ -22,7 +22,7 @@ import Functors as F
 from Functors.math import in_range
 
 from Hlt2Conf.algorithms_thor import ParticleCombiner, ParticleFilter
-from Hlt2Conf.standard_particles import make_LambdaLL
+from Hlt2Conf.standard_particles import make_LambdaLL, make_LambdaDD
 
 from PyConf import configurable
 
@@ -156,6 +156,36 @@ def filter_lambdasLL_for_lb_to_lg(
     return ParticleFilter(make_LambdaLL(), F.FILTER(code))
 
 
+@configurable
+def filter_lambdasDD_for_lb_to_lg(
+        pvs,
+        trghostprob_max=0.4,
+        PIDp_min=0,
+        p_pt_min=800.0 * MeV,  # Can decrease down to 800 MeV
+        p_ipchi2_min=10,  #Can increase up to 8 or 10
+        pi_pt_min=150.0 * MeV,
+        pi_ipchi2_min=10,  #Can increase up to 8 or 10
+        L0_pt_min=0.75 * GeV,
+        L0_p_min=7.0 * GeV,
+        vz_min=300 * mm,
+        vz_max=2300 * mm,
+        vchi2=25):
+
+    code = F.require_all(
+        F.NINTREE(
+            F.require_all(F.ISBASICPARTICLE,
+                          F.GHOSTPROB < trghostprob_max)) == 2,
+        F.MINTREE(F.IS_ABS_ID('pi+'), F.PT) > pi_pt_min,
+        F.MINTREE(F.IS_ABS_ID('p+'), F.PT) > p_pt_min,
+        F.MINTREE(F.IS_ABS_ID('pi+'), F.MINIPCHI2(pvs)) > pi_ipchi2_min,
+        F.MINTREE(F.IS_ABS_ID('p+'), F.MINIPCHI2(pvs)) > p_ipchi2_min,
+        F.MINTREE(F.IS_ABS_ID('p+'), F.PID_P) > PIDp_min, F.CHI2 < vchi2,
+        in_range(vz_min, F.END_VZ, vz_max), F.PT > L0_pt_min, F.P > L0_p_min,
+        F.TWOBODY_TILT("Y") > 0)
+
+    return ParticleFilter(make_LambdaDD(), F.FILTER(code))
+
+
 # define Lb->LG builders
 @configurable
 def make_rd_lb_to_lgamma_LL(Lambda,
@@ -182,3 +212,33 @@ def make_rd_lb_to_lgamma_LL(Lambda,
         CombinationCut=combination_cut,
         CompositeCut=vertex_cut,
         name=name)
+
+
+@configurable
+def make_rd_lb_to_lgamma_DD(
+        Lambda,
+        gamma,
+        pvs,
+        Lb_UM=6119.6 * MeV,
+        Lb_LM=5119.6 * MeV,
+        Lb_PT_Min=1500 * MeV,
+        Lb_Sum_PT_Min=1500.0 * MeV,
+):
+    """Make the Lb --> Lambda Gamma candidate"""
+
+    # mass window around the Lb mass
+    combination_cut = F.require_all(
+        in_range(Lb_LM, F.MASS, Lb_UM),
+        F.SUM(F.PT) > Lb_Sum_PT_Min)
+
+    mother_cut = F.require_all(
+        in_range(Lb_LM, F.MASS, Lb_UM),
+        F.PT > Lb_PT_Min,
+    )
+
+    return ParticleCombiner(
+        Inputs=[Lambda, gamma],
+        DecayDescriptor="[Lambda_b0 -> Lambda0 gamma]cc",
+        ParticleCombiner="MomentumCombiner",
+        CombinationCut=combination_cut,
+        CompositeCut=mother_cut)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/qqbar_to_ll_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/qqbar_to_ll_builders.py
index 2e29d4d1919a1cd4b9956d5b98293e08a6bc27a0..df6e088477c716057f128c4ade64c9243b2e6a68 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/qqbar_to_ll_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/qqbar_to_ll_builders.py
@@ -18,40 +18,50 @@ make_prompt_tautau : For Upsilon(1S) -> tau+ tau-
     - Invariant mass : [7500, 13000] MeV
     - Cos(opening angle) > 0.95
     - PT > 1.5 GeV
+    - Logarithm of vertex separation chi2: ~CHI2>-1.5
     - Tau cuts :
-      - Invariant MAss : [1200, 2000] MeV
-      - PID_K < -1.0
+      - Invariant Mass : [900, 1700] MeV
+      - PID_K <= 0.0
+      - Invariant Mass of neutral two-pion combinations: [200, 1500] MeV
+      - P > 3 GeV
 
 make_prompt_etau : For Upsilon(1S) -> e+ tau-
-    - Invariant mass : [8000, 12000] MeV
+    - Invariant mass : [7500, 12000] MeV
     - Cos(opening angle) > 0.95
     - PT > 2.5 GeV
     - Tau cuts :
-      - Invariant MAss : [1200, 2000] MeV
-      - PID_K < -1.0
+      - Invariant Mass : [900, 1700] MeV
+      - Invariant Mass of neutral two-pion combinations: [200, 1500] MeV
+      - PID_K <= 0.0
+      - P > 3 GeV
     - electron cuts:
-      - PID_E > 2.5
+      - PID_E > 3
       - PT > 1.5 GeV
+      - P > 3 GeV
 
 make_prompt_mutau: For Upsilon(1S) -> mu+ tau-
-    - Invariant mass : [7000, 13000] MeV
+    - Invariant mass : [7500, 13000] MeV
     - PT > 1 GeV
     - Tau cuts :
-      - Invariant MAss : [1000, 2000] MeV
-      - PID_K < 0.0
+      - Invariant Mass : [900, 1700] MeV
+      - PID_K <= 0.0
+      - Invariant Mass of neutral two-pion combinations: [200, 1500] MeV
+      - P > 3 GeV
     - muon cuts:
-      - PID_MU > 2.0
+      - PID_MU > 2.0, ISMUON
+      - P > 3 GeV
 
 make_upsilons_to_upsilons : For Upsilon(2S) -> Upsilon(1S) pi+ pi-
-    - Invariant mass : [7000, 13000] MeV
+    - Invariant mass : [8000, 13000] MeV
     - PT > 1 GeV
     - Pion cuts :
-      - PID_K < 0.0
+      - PID_K <= 0.0
       - PT > 250 MeV
 """
 
 from __future__ import absolute_import, division, print_function
 from PyConf import configurable
+from PyConf.Tools import ParticleVertexFitter
 from GaudiKernel.SystemOfUnits import GeV, MeV
 from RecoConf.reconstruction_objects import make_pvs
 
@@ -63,7 +73,8 @@ from Hlt2Conf.lines.rd.builders.rdbuilder_thor import (
     make_rd_tauons_hadronic_decay,
     make_rd_prompt_electrons,
 )
-from Hlt2Conf.algorithms_thor import ParticleCombiner
+from Hlt2Conf.lines.rd.builders.b_to_xtaul_rd_builder import get_taus_log_vtxsepchi2
+from Hlt2Conf.algorithms_thor import ParticleCombiner, ParticleFilter
 
 import Functors as F
 from Functors.math import in_range
@@ -71,33 +82,43 @@ from Functors.math import in_range
 
 @configurable
 def make_prompt_tautau(
+        *,  # we do not allow positional arguments
+        parent_id:
+        str,  # this is a keyword argument that must always be provided   
         name="prompt_tautau_builder_{hash}",
         min_dilepton_mass=7500.0 * MeV,
         max_dilepton_mass=13000.0 * MeV,
         min_dilepton_pt=1.5 * GeV,
-        max_ipchi2_tautau=10,
-        max_adocachi2=30.0,
-        parent_id="Upsilon(1S)",
+        max_ipchi2_tautau=9,
+        max_adocachi2=25.0,
         min_bpvvdchi2=0.0,  # must be 0 for a prompt builder
         cos_tautauangle=0.95,
+        taus_log_vtxsepchi2_min=-1.,
+        min_p_tau=6. * GeV,
 ):
     pvs = make_pvs()
     descriptor = "{} -> tau+ tau-".format(parent_id)
-    taus = make_rd_tauons_hadronic_decay(
-        pi_pt_min=300 * MeV,
-        pi_ipchi2_min=3.0,
-        best_pi_pt_min=800 * MeV,
-        best_pi_ipchi2_min=5.0,
-        pi_pid=F.PID_K < -1.0,
-        am_min=1200 * MeV,
-        am_max=2000 * MeV,
-        vchi2pdof_max=12.0,
-    )
+    taus = ParticleFilter(
+        make_rd_tauons_hadronic_decay(
+            pi_pt_min=300 * MeV,
+            pi_p_min=6000 * MeV,
+            pi_ipchi2_min=3.0,
+            best_pi_pt_min=800 * MeV,
+            best_pi_ipchi2_min=5.0,
+            pi_pid=F.PID_K <= 0.0,
+            am_min=900 * MeV,
+            am_max=1700 * MeV,
+            am_2pi_min=200 * MeV,
+            am_2pi_max=1500 * MeV,
+            vchi2pdof_max=6.0,
+        ),
+        F.FILTER(F.P > min_p_tau),
+        name="prompt_tau_builder_{hash}")
 
     combination_code = F.require_all(
         F.MAXSDOCACHI2CUT(max_adocachi2),
         F.ALV(1, 2) > cos_tautauangle,
-    )
+        get_taus_log_vtxsepchi2() > taus_log_vtxsepchi2_min)
     vertex_code = F.require_all(
         F.BPVFDCHI2(pvs) > min_bpvvdchi2,
         in_range(min_dilepton_mass, F.MASS, max_dilepton_mass),
@@ -119,17 +140,21 @@ def make_prompt_tautau(
 
 @configurable
 def make_prompt_etau(
+        *,  # we do not allow positional arguments
+        parent_id:
+        str,  # this is a keyword argument that must always be provided   
         name="prompt_etau_builder",
         min_dilepton_mass=8000.0 * MeV,
         max_dilepton_mass=12000.0 * MeV,
         min_dilepton_pt=2.5 * GeV,
         max_ipchi2_etau=9,
-        parent_id="Upsilon(1S)",
-        min_pid_e=2.5,
+        min_pid_e=3.,
         min_pt_e=1.5 * GeV,
+        min_p_e=6 * GeV,
         max_adocachi2=20.0,
         min_bpvvdchi2=0.0,  # must be 0 for a prompt builder
         cos_etauangle=0.95,
+        min_p_tau=6 * GeV,
 ):
     """
     Make the detached electron-tau pair, opposite-sign for now.
@@ -137,18 +162,24 @@ def make_prompt_etau(
     pvs = make_pvs()
     descriptor = "[{} -> tau- e+]cc".format(parent_id)
     # taus = make_upsilon_taus()
-    taus = make_rd_tauons_hadronic_decay(
-        pi_pt_min=350 * MeV,
-        pi_ipchi2_min=3.0,
-        best_pi_pt_min=800 * MeV,
-        best_pi_ipchi2_min=5.0,
-        pi_pid=F.PID_K < -1.0,
-        am_min=1200 * MeV,
-        am_max=2000 * MeV,
-        vchi2pdof_max=12.0,
-    )
+    taus = ParticleFilter(
+        make_rd_tauons_hadronic_decay(
+            pi_pt_min=350 * MeV,
+            pi_p_min=6000 * MeV,
+            pi_ipchi2_min=3.0,
+            best_pi_pt_min=800 * MeV,
+            best_pi_ipchi2_min=5.0,
+            pi_pid=F.PID_K <= 0.0,
+            am_min=900 * MeV,
+            am_max=1700 * MeV,
+            am_2pi_min=200 * MeV,
+            am_2pi_max=1500 * MeV,
+            vchi2pdof_max=6.0,
+        ),
+        F.FILTER(F.P > min_p_tau),
+        name="prompt_tau_builder_{hash}")
     electrons = make_rd_prompt_electrons(
-        pt_min=min_pt_e, pid=(F.PID_E > min_pid_e))
+        pt_min=min_pt_e, p_min=min_p_e, pid=(F.PID_E > min_pid_e))
     combination_code = F.require_all(
         F.MAXSDOCACHI2CUT(max_adocachi2),
         F.ALV(1, 2) > cos_etauangle,
@@ -174,41 +205,51 @@ def make_prompt_etau(
 
 @configurable
 def make_prompt_mutau(
+        *,  # we do not allow positional arguments
+        parent_id:
+        str,  # this is a keyword argument that must always be provided   
         name="prompt_mutau_builder",
         min_dilepton_mass=7000.0 * MeV,
         max_dilepton_mass=13000.0 * MeV,
         min_dilepton_pt=1.0 * GeV,
         max_ipchi2_mutau=50,
-        parent_id="Upsilon(1S)",
         min_PIDmu=2.0,
         IsMuon=True,
         min_pt_mu=0.0 * GeV,
+        min_p_mu=5.0 * GeV,
         max_adocachi2=30.0,
         min_bpvvdchi2=0.0,  # must be 0 for a prompt builder
-):
+        min_p_tau=5.0 * GeV):
     """
     Make the detached muon-tau pair, opposite-sign for now.
     """
     pvs = make_pvs()
     descriptor = "[{} -> mu+ tau-]cc".format(parent_id)
-    taus = make_rd_tauons_hadronic_decay(
-        pi_pt_min=250 * MeV,
-        pi_ipchi2_min=6.0,
-        best_pi_pt_min=800 * MeV,
-        best_pi_ipchi2_min=9.0,
-        pi_pid=F.PID_K < 0.0,
-        am_min=1000 * MeV,
-        am_max=2000 * MeV,
-        vchi2pdof_max=16.0,
-    )
+    taus = ParticleFilter(
+        make_rd_tauons_hadronic_decay(
+            pi_pt_min=350 * MeV,  #possible tighter
+            pi_p_min=6000 * MeV,
+            pi_ipchi2_min=6.0,  #possible tighter
+            best_pi_pt_min=800 * MeV,  #possible tighter 
+            best_pi_ipchi2_min=9.0,
+            pi_pid=F.PID_K <= 0.0,
+            am_min=900 * MeV,  #raja suggestion
+            am_max=1700 * MeV,
+            am_2pi_min=200 * MeV,
+            am_2pi_max=1500 * MeV,
+            vchi2pdof_max=6.0,
+        ),
+        F.FILTER(F.P > min_p_tau),
+        name="prompt_tau_builder_{hash}")
 
     if IsMuon:
         muons = make_rd_prompt_muons(
             pt_min=min_pt_mu,
+            p_min=min_p_mu,
             pid=F.require_all(F.PID_MU > min_PIDmu, F.ISMUON))
     else:
         muons = make_rd_prompt_muons(
-            pt_min=min_pt_mu, pid=(F.PID_MU > min_PIDmu))
+            pt_min=min_pt_mu, p_min=min_p_mu, pid=(F.PID_MU > min_PIDmu))
     combination_code = F.MAXSDOCACHI2CUT(max_adocachi2)
     vertex_code = F.require_all(
         F.BPVFDCHI2(pvs) > min_bpvvdchi2,
@@ -235,13 +276,16 @@ def make_upsilons_to_upsilons(
         max_dilepton_mass=13000.0 * MeV,
         min_dilepton_pt=1.0 * GeV,
         min_bpvvdchi2=0.0,  # must be 0 for a prompt builder
-        max_adocachi2=30.0,
+        max_adocachi2=25.0,
         minipchi2=0,  # must be 0 for a prompt builder
         # pion cut
-        pi_pt_min=250 * MeV,
-        pi_ipchi2_min=0.0,  # check if you want to filter on MINIPCHI2(pvs) < 0. or MINIPCHI2(pvs) < 1.
-        pi_pid=F.PID_K < 0.0,
-):
+        pi_pt_min=500 * MeV,
+        pi_ipchi2_min=0.0,  # check if you want to filter on MINIPCHI2(pvs) > 0. or MINIPCHI2(pvs) > 1.
+        pi_pid=F.PID_K <= 0,
+        max_vchi2ndof=9.,
+        useDTFMassConstraint=False):
+    # The `make_rd_detached_pions` function is used to create a filter for selecting detached pions
+    # based on certain criteria. Here is an explanation of the parameters used in this function:
     pion = make_rd_detached_pions(
         pt_min=pi_pt_min, mipchi2dvprimary_min=pi_ipchi2_min, pid=pi_pid)
 
@@ -254,14 +298,22 @@ def make_upsilons_to_upsilons(
     vertex_code = F.require_all(
         in_range(min_dilepton_mass, F.MASS, max_dilepton_mass),
         F.PT > min_dilepton_pt,
-        F.BPVFDCHI2(pvs) > min_bpvvdchi2,
-    )
-
-    upsilon2s = ParticleCombiner(
-        [upsilon1s, pion, pion],
-        name=name,
-        DecayDescriptor="[Upsilon(2S) -> Upsilon(1S) pi+ pi-]cc",
-        CombinationCut=combination_code,
-        CompositeCut=vertex_code,
-    )
+        F.BPVFDCHI2(pvs) > min_bpvvdchi2, F.CHI2DOF < max_vchi2ndof)
+    if useDTFMassConstraint:
+        # Might be useful expecially for rate reductions
+        upsilon2s = ParticleCombiner(
+            [upsilon1s, pion, pion],
+            name=name,
+            DecayDescriptor="Upsilon(2S) -> Upsilon(1S) pi+ pi-",
+            CombinationCut=combination_code,
+            CompositeCut=vertex_code,
+            ParticleCombiner=ParticleVertexFitter(
+                MassConstraints=["Upsilon(1S)"]))
+    else:
+        upsilon2s = ParticleCombiner(
+            [upsilon1s, pion, pion],
+            name=name,
+            DecayDescriptor="Upsilon(2S) -> Upsilon(1S) pi+ pi-",
+            CombinationCut=combination_code,
+            CompositeCut=vertex_code)
     return upsilon2s
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rare_tau_decay_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rare_tau_decay_builders.py
index f9c5337cbafaf49587fabca0bfcf5e57071f81d0..461937e8eaf3ebf98d69c16cbf9e8aaae7b98b3b 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rare_tau_decay_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rare_tau_decay_builders.py
@@ -68,7 +68,8 @@ def _make_tau_to_2body(particle1,
                        max_mass=1978 * MeV,
                        max_vtxchi2dof=9,
                        min_flightdist=100 * micrometer,
-                       max_ipchi2=16):
+                       max_ipchi2=16,
+                       min_pt=0. * MeV):
     """
     Builder for tau decaying to two particles.
     """
@@ -80,7 +81,8 @@ def _make_tau_to_2body(particle1,
 
     vertex_code = F.require_all(F.CHI2DOF < max_vtxchi2dof,
                                 F.BPVIPCHI2(pvs) < max_ipchi2,
-                                F.BPVLTIME(pvs) * c_light > min_flightdist)
+                                F.BPVLTIME(pvs) * c_light > min_flightdist,
+                                F.PT > min_pt)
 
     return ParticleCombiner([particle1, particle2],
                             name=name,
@@ -99,47 +101,40 @@ def _make_tau_to_nmu(muons,
                      min_mass=1378 * MeV,
                      max_mass=2178 * MeV,
                      max_vtxchi2dof=25,
+                     max_doca12=500 * micrometer,
                      min_flightdist=100 * micrometer,
                      max_ipchi2=16):
     """
     Builder for tau decaying to five, seven or nine muons with at least three
     muons fulfilling PID requirements
     """
-    if n_muons not in {5, 7, 9}:
-        raise ConfigurationError("Parameter n_muons must be 5, 7 or 9")
-
     pvs = make_pvs()
 
-    dimuons = ParticleCombiner([muons_loose, muons_loose],
-                               name="HLT2RD_TauToNMu_TwoMuonCombiner",
-                               DecayDescriptor="Xu0 -> mu+ mu-",
-                               CombinationCut=F.MASS < max_mass)
-
     vertex_code = F.require_all(F.CHI2DOF < max_vtxchi2dof,
                                 F.BPVIPCHI2(pvs) < max_ipchi2,
                                 F.BPVLTIME(pvs) * c_light > min_flightdist)
     combination_code = in_range(min_mass, F.MASS, max_mass)
+    combination12_code = F.MAXDOCACUT(max_doca12)
 
-    if n_muons > 5:
-        pentamuons = ParticleCombiner(
-            [muons, muons, muons, muons_loose, muons_loose],
-            name="HLT2RD_TauToNMu_FiveMuonCombiner",
-            DecayDescriptor="[Xu+ -> mu+ mu+ mu+ mu- mu-]cc",
-            CombinationCut=F.MASS < max_mass)
-
-        return ParticleCombiner(
-            [pentamuons] + int((n_muons - 5) / 2) * [dimuons],
-            name=name,
-            DecayDescriptor=descriptor,
-            CombinationCut=combination_code,
-            CompositeCut=vertex_code)
-    else:
+    if n_muons == 5:
         return ParticleCombiner(
             [muons, muons, muons, muons_loose, muons_loose],
             name=name,
             DecayDescriptor=descriptor,
+            Combination12Cut=combination12_code,
             CombinationCut=combination_code,
             CompositeCut=vertex_code)
+    elif n_muons == 7:
+        return ParticleCombiner([
+            muons, muons, muons, muons, muons_loose, muons_loose, muons_loose
+        ],
+                                name=name,
+                                DecayDescriptor=descriptor,
+                                Combination12Cut=combination12_code,
+                                CombinationCut=combination_code,
+                                CompositeCut=vertex_code)
+    else:
+        raise ConfigurationError("Parameter n_muons must be 5 or 7")
 
 
 @configurable
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rdbuilder_thor.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rdbuilder_thor.py
index f512b7de90edfaef5fc9e3556639745c0f0cb207..050e9e8ecf9b42cbc8713d5d83b95e4adc634b40 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rdbuilder_thor.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rdbuilder_thor.py
@@ -48,7 +48,7 @@ make_rd_{prompt,detached}_mue - mue (same- or opposite-sign) combination
 make_rd_tauons_hadronic_decay - tau->3pi builder
 make_rd_detached_dihadron - hh builder (same- or opposite-sign)
 """
-from GaudiKernel.SystemOfUnits import GeV, MeV, ps
+from GaudiKernel.SystemOfUnits import GeV, MeV, ps, micrometer
 from RecoConf.reconstruction_objects import make_pvs
 
 import Functors as F
@@ -167,7 +167,7 @@ def make_rd_detached_pions(
         p_min=2. * GeV,
         pt_min=250. * MeV,
         mipchi2dvprimary_min=4.,  #TBC
-        pid=(F.PID_K <= 2.)):
+        pid=(F.PID_K <= 1e-5)):
     """
     Return RD detached pions.
     """
@@ -443,7 +443,8 @@ def make_rd_resolved_pi0s(
         name="rd_resolved_pi0s_{hash}",
         make_particles=make_resolved_pi0s,
         pt_min=250. * MeV,
-        cl_min=0.,
+        is_photon_max=0.5,
+        is_not_h_min=0.5,
         # photon_args={
         #     'ConfLevelCut': 0.1,
         #     'PtCut': 250. * MeV
@@ -456,7 +457,8 @@ def make_rd_resolved_pi0s(
     #
     # return ParticleFilter(
     #     make_particles(photon_args=photon_args), Code=code, name=name)
-    code = F.PT > pt_min
+    code = F.require_all(F.PT > pt_min, F.IS_PHOTON < is_photon_max,
+                         F.IS_NOT_H > is_not_h_min)
     return ParticleFilter(make_particles(), F.FILTER(code))
 
 
@@ -486,7 +488,7 @@ def make_rd_ks0_lls(
         mass_window=35. * MeV,
         pi_p_min=2. * GeV,
         pi_pt_min=0. * GeV,  # has to be 0 !!!
-        pi_ipchi2_min=9.,
+        pi_ipchi2_min=16.,
         pt_min=0 * MeV,
         adocachi2cut=30.,
         bpvvdchi2_min=4.,
@@ -573,7 +575,7 @@ def make_rd_lambda_lls(
         p_pt_min=0.,  # recommended to be small
         pi_pt_min=0.,  # has to be 0 !!!
         pi_ipchi2_min=6.,
-        p_ipchi2_min=9.,
+        p_ipchi2_min=16.,
         adocachi2cut=30.,
         bpvvdchi2_min=4.,
         bpvltime_min=1. * ps,
@@ -623,7 +625,7 @@ def make_rd_lambda_dds(
         p_pt_min=0.,  # recommended to be small
         pi_pt_min=0.,  # has to be 0 !!!
         pi_ipchi2_min=6,
-        p_ipchi2_min=9,
+        p_ipchi2_min=16,
         adocachi2cut=30.,
         bpvvdchi2_min=4.,
         bpvltime_min=1. * ps,
@@ -671,7 +673,7 @@ def make_Kstps_with_pi0s(
         min_ipchi2_k=4.,
         Kstp_PT=0.,
         Kstp_max_vtxchi2=36.,
-        PIDK_K_min=-4.,
+        PIDK_K_min=0.,
         pt_K_min=250. * MeV,
         p_K_min=1_000. * MeV,
         pt_pi_min=250. * MeV,
@@ -722,19 +724,23 @@ def make_rd_detached_kstar0s(
         make_rd_detached_pions=make_rd_has_rich_detached_pions,
         make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
         make_pvs=make_pvs,
-        am_min=592. * MeV,
-        am_max=1192. * MeV,
+        am_min=0 * MeV,
+        am_max=2600. * MeV,
         pi_p_min=2. * GeV,
-        pi_pt_min=100. * MeV,
-        pi_ipchi2_min=4.,
-        pi_pid=(F.PID_K < 8.),
+        pi_pt_min=250. * MeV,
+        pi_ipchi2_min=9.,
+        # if the RICH can not distinguish between kaons and pions then
+        # the PID will be set to zero, and most often these will correspond
+        # to real pions
+        pi_pid=F.PID_K < 1e-5,
         k_p_min=2. * GeV,
-        k_pt_min=100. * MeV,
-        k_ipchi2_min=4.,
-        k_pid=(F.PID_K > -2.),
+        k_pt_min=250. * MeV,
+        k_ipchi2_min=9.,
+        k_pid=(F.PID_K > 2.),
         kstar0_pt_min=400. * MeV,
         adocachi2cut=30.,
-        vchi2pdof_max=25.,
+        maxdoca=500 * micrometer,
+        vchi2pdof_max=16.,
         bpvipchi2_min=None,
         same_sign=False):
     '''
@@ -755,7 +761,8 @@ def make_rd_detached_kstar0s(
     descriptor = '[K*(892)0 -> K+ pi-]cc'
     if same_sign: descriptor = '[K*(892)0 -> K+ pi+]cc'
     combination_code = F.require_all(
-        in_range(am_min, F.MASS, am_max), F.MAXSDOCACHI2CUT(adocachi2cut))
+        in_range(am_min, F.MASS, am_max), F.MAXSDOCACHI2CUT(adocachi2cut),
+        F.MAXSDOCACUT(maxdoca))
     vertex_code = F.require_all(F.CHI2DOF < vchi2pdof_max,
                                 F.PT > kstar0_pt_min)
 
@@ -810,15 +817,19 @@ def make_rd_detached_phis(
 def make_rd_detached_rho0(
         name="rd_detached_rho0_{hash}",
         make_rd_detached_pions=make_rd_has_rich_detached_pions,
-        pi_pt_min=150. * MeV,
+        pi_pt_min=250. * MeV,
         pi_p_min=0. * MeV,
-        pi_ipchi2_min=4.0,
-        pi_pid=(F.PID_K < 0.),
+        pi_ipchi2_min=9.0,
+        # if the RICH can not distinguish between kaons and pions then
+        # the PID will be set to zero, and most often these will correspond
+        # to real pions
+        pi_pid=F.PID_K < 1e-5,
         pt_min=600. * MeV,
-        am_min=500. * MeV,
-        am_max=1100. * MeV,
+        am_min=0. * MeV,
+        am_max=2600. * MeV,
         adocachi2cut=10.,
-        vchi2pdof_max=9.,
+        maxdocacut=500 * micrometer,
+        vchi2pdof_max=16.,
 ):
     '''
     Build pi+pi- candidates. Approximately corresponding to the Run2
@@ -833,7 +844,7 @@ def make_rd_detached_rho0(
     DecayDescriptor = 'rho(770)0 -> pi+ pi-'
     combination_code = F.require_all(
         in_range(am_min, F.MASS, am_max), F.PT > pt_min,
-        F.MAXSDOCACHI2CUT(adocachi2cut))
+        F.MAXSDOCACHI2CUT(adocachi2cut), F.MAXSDOCACUT(maxdocacut))
 
     vertex_code = (F.CHI2DOF < vchi2pdof_max)
     return ParticleCombiner([pions, pions],
@@ -850,14 +861,15 @@ def make_rd_detached_etaprime(
         pi_p_min=1. * GeV,
         pi_pt_min=150. * MeV,
         pi_ipchi2_min=4.0,
-        pi_pid=(F.PID_K < 0.),
+        pi_pid=(F.PID_K < 2.),
         pt_min=500. * MeV,
         am_min=700. * MeV,
         am_max=1300. * MeV,
+        am12_min=500 * MeV,
+        am12_max=1200 * MeV,
         e_gamma_min=100 * MeV,
         et_gamma_min=400 * GeV,
-        adocachi2_cut=10.,
-        vchi2pdof_max=9):
+        adocachi2_cut=10.):
     """
     Build pi+pi-gamma candidates.
     """
@@ -869,8 +881,8 @@ def make_rd_detached_etaprime(
     photons = make_rd_photons(et_min=et_gamma_min, e_min=e_gamma_min)
     descriptor = '[eta_prime -> pi+ pi- gamma]cc'
     combination_code = in_range(am_min, F.MASS, am_max)
-    combination12_code = F.MAXSDOCACHI2CUT(adocachi2_cut)
-    vertex_code = F.require_all(F.PT > pt_min, F.CHI2DOF < vchi2pdof_max)
+    combination12_code = in_range(am12_min, F.MASS, am12_max)
+    vertex_code = F.require_all(F.PT > pt_min)
 
     return ParticleCombiner(
         Inputs=[pions, pions, photons],
@@ -888,19 +900,19 @@ def make_rd_detached_k1(name='rd_detached_k1_{hash}',
                         make_rd_detached_kaons=make_rd_has_rich_detached_kaons,
                         pi_p_min=1. * GeV,
                         pi_pt_min=150. * MeV,
-                        pi_ipchi2_min=4.0,
+                        pi_ipchi2_min=9.0,
                         pi_pid=(F.PID_K < 0.),
                         k_p_min=1. * GeV,
                         k_pt_min=150. * MeV,
-                        k_ipchi2_min=4.0,
+                        k_ipchi2_min=9.0,
                         k_pid=(F.PID_K > -2.),
                         pt_min=500. * MeV,
                         am_kpi_max=1450 * MeV,
                         am_2pi_max=1450 * MeV,
-                        am_min=1000. * MeV,
-                        am_max=1600. * MeV,
+                        am_min=0. * MeV,
+                        am_max=4200. * MeV,
                         adocachi2_cut=10.,
-                        vchi2pdof_max=9):
+                        vchi2pdof_max=16):
     """
     Build K1(1270)->Kpipi candidates
     """
@@ -1346,13 +1358,13 @@ def make_rd_detached_K1(
         low_factor=0.5,
         high_factor=1.5,
         pi_p_min=1_000. * MeV,
-        pi_pt_min=0. * MeV,
-        pi_ipchi2_min=9.,
+        pi_pt_min=400. * MeV,
+        pi_ipchi2_min=25.,
         pi_PIDK_max=-2.,
         K_p_min=1_000. * MeV,
-        K_pt_min=0. * MeV,
-        K_ipchi2_min=9.,
-        K_PIDK_min=-2.,
+        K_pt_min=400. * MeV,
+        K_ipchi2_min=25.,
+        K_PIDK_min=2.,
         K_1_min_bpvfdchi2=0.,
         K_1_pt_min=0. * MeV,
         vchi2pdof_max=25.,
@@ -1411,18 +1423,19 @@ def make_rd_detached_K1(
 def make_rd_detached_K2(
         name="make_rd_detached_K_2_{hash}",
         Descriptor="[K_2(1770)+ -> K+ K+ K-]cc",
-        adocachi2_max=25.,
-        am_min=500. * MeV,
+        adocachi2_max=16.,
+        maxdoca=300 * micrometer,
+        am_min=0. * MeV,
         am_max=4200. * MeV,
-        low_factor=0.5,
-        high_factor=1.5,
-        K_p_min=1_000. * MeV,
-        K_pt_min=0. * MeV,
+        low_factor=0.8,
+        high_factor=1.2,
+        K_p_min=2_000. * MeV,
+        K_pt_min=400. * MeV,
         K_ipchi2_min=9.,
-        K_PIDK=(F.PID_K > -2.),
+        K_PIDK=(F.PID_K > 5.),
         K_2_min_bpvfdchi2=0.,
         K_2_pt_min=0. * MeV,
-        vchi2pdof_max=25.,
+        vchi2pdof_max=12.,
         K_2_min_DIRA=None,
         bpvipchi2_min=9.,
 ):
@@ -1439,8 +1452,7 @@ def make_rd_detached_K2(
 
     two_body_combination_code = F.require_all(
         in_range(low_factor * am_min, F.MASS, high_factor * am_max),
-        F.MAXSDOCACHI2CUT(adocachi2_max),
-    )
+        F.MAXSDOCACHI2CUT(adocachi2_max), F.MAXSDOCACUT(maxdoca))
 
     combination_code = F.require_all(
         in_range(low_factor * am_min, F.MASS, high_factor * am_max),
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/strange_builders.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/strange_builders.py
index 8421023120e6b11c88636a0dfe981ac44fd71b40..8ce92ec7396f6c1ffdb681856dee5e9368ddd044 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/strange_builders.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/strange_builders.py
@@ -351,6 +351,50 @@ def tight_requirements_for_decay_products():
     )
 
 
+@requirements_builder
+def loose_requirements_for_protons_from_sigma():
+    return dict(
+        p_min=3 * GeV,
+        pt_min=80 * MeV,
+        track_chi2dof_max=9.,
+        ip_min=0.1 * mm,
+        ipchi2_min=9.,
+    )
+
+
+@requirements_builder
+def requirements_for_protons_from_sigma():
+    return loose_requirements_for_protons_from_sigma(
+        p_min=3 * GeV,
+        pt_min=1000 * MeV,
+        track_chi2dof_max=9.,
+        ip_min=0.1 * mm,
+        ipchi2_min=9.,
+    )
+
+
+@requirements_builder
+def tight_requirements_for_protons_from_sigma():
+    return requirements_for_protons_from_sigma(
+        p_min=3 * GeV,
+        pt_min=1000 * MeV,
+        track_chi2dof_max=9.,
+        ip_min=2. * mm,
+        ipchi2_min=25.,
+    )
+
+
+@requirements_builder
+def requirements_for_muons_from_sigma():
+    return dict(
+        p_min=3 * GeV,
+        pt_min=80 * MeV,
+        track_chi2dof_max=9.,
+        ip_min=0.5 * mm,
+        ipchi2_min=9.,
+    )
+
+
 #
 # Requirements on the vertex for any combination involving a neutral particle. These
 # selections can not contain vertexing requirements unless the combination involves
@@ -371,6 +415,11 @@ def tight_requirements_for_neutral_combination_no_vertex():
     return requirements_for_neutral_combination_no_vertex()
 
 
+@requirements_builder
+def requirements_for_sigma_decay_neutral_combination_no_vertex():
+    return dict(pt_min=1000 * MeV, )
+
+
 #
 # Requirements on the vertex for any loose combination
 #
@@ -394,6 +443,18 @@ def requirements_for_combination():
     )
 
 
+@requirements_builder
+def requirements_for_sigma_combination():
+    return loose_requirements_for_combination(
+        docachi2_max=100.,
+        doca_max=1. * mm,
+        vchi2pdof_max=25.,
+        dira_min=0.99,
+        lifetime_min=0.006 * ns,
+        pt_min=500 * MeV,
+    )
+
+
 @requirements_builder
 def tight_requirements_for_combination():
     return requirements_for_combination(
@@ -412,6 +473,9 @@ def tight_requirements_for_combination():
 default_additional_requirements_for_prompt_combination = dict(
     ip_max=0.4 * mm, bpvvdrho_min=3. * mm, dira_min=0.999, ipchi2_max=25.)
 
+default_additional_requirements_for_prompt_sigma_combination = dict(
+    ip_max=0.4 * mm, bpvvdrho_min=3. * mm, ipchi2_max=25.)
+
 
 @requirements_builder
 def loose_requirements_for_prompt_combination():
@@ -425,6 +489,12 @@ def requirements_for_prompt_combination():
         **default_additional_requirements_for_prompt_combination)
 
 
+@requirements_builder
+def requirements_for_prompt_sigma_combination():
+    return requirements_for_sigma_combination(
+        **default_additional_requirements_for_prompt_sigma_combination)
+
+
 @requirements_builder
 def tight_requirements_for_prompt_combination():
     return tight_requirements_for_combination(
@@ -570,6 +640,16 @@ def make_tight_muons(pid_mu_min=5., **kwargs):
         **tight_requirements_for_decay_products(**kwargs))
 
 
+@configurable
+def make_muons_for_sigma(*, pid_mu_min=-3, **kwargs):
+    return filter_decay_products(
+        make_loose_muons(),
+        pid_mu_min=pid_mu_min,
+        name='MuonsForSigmaDecays_{hash}',
+        is_muon=True,
+        **requirements_for_muons_from_sigma(**kwargs))
+
+
 @configurable
 def make_loose_pions(**kwargs):
     return filter_decay_products(
@@ -681,8 +761,8 @@ def make_merged_neutral_pions(
         *,
         mass_window=60 * MeV,
         pt_min=2 * GeV,
-        is_not_h_min=0.2,
-        is_photon_max=0.8,
+        is_not_h_min=0.5,
+        is_photon_max=0.5,
 ):
     return filter_decay_products(
         standard_particles.make_merged_pi0s(
@@ -708,14 +788,48 @@ def make_protons(*, pid_p_min=0, pid_p_over_k_min=0, **kwargs):
 
 
 @configurable
-def make_tight_protons(*, pid_p_min=+10, pid_p_over_k_min=+10, **kwargs):
+def make_tight_protons(*,
+                       pt_min=500 * MeV,
+                       pid_p_min=+10,
+                       pid_p_over_k_min=+10,
+                       **kwargs):
     return filter_decay_products(
         make_protons(),
         pid_p_min=pid_p_min,
         pid_p_over_k_min=pid_p_over_k_min,
         name='TightProtonsForStrangeDecays_{hash}',
-        **kwargs,
-        **tight_requirements_for_decay_products(**kwargs))
+        **tight_requirements_for_decay_products(pt_min=pt_min, **kwargs))
+
+
+@configurable
+def make_loose_protons_for_sigma(*, pid_p_min=0, pid_p_over_k_min=0, **kwargs):
+    return filter_decay_products(
+        standard_particles.make_long_protons(),
+        pid_p_min=pid_p_min,
+        pid_p_over_k_min=pid_p_over_k_min,
+        name='LooseProtonsForSigmaDecays_{hash}',
+        **loose_requirements_for_protons_from_sigma(**kwargs))
+
+
+@configurable
+def make_protons_for_sigma(*, pid_p_min=5, pid_p_over_k_min=0, **kwargs):
+    return filter_decay_products(
+        make_loose_protons_for_sigma(),
+        pid_p_min=pid_p_min,
+        pid_p_over_k_min=pid_p_over_k_min,
+        name='ProtonsForSigmaDecays_{hash}',
+        **requirements_for_protons_from_sigma(**kwargs))
+
+
+@configurable
+def make_tight_protons_for_sigma(*, pid_p_min=10, pid_p_over_k_min=0,
+                                 **kwargs):
+    return filter_decay_products(
+        make_protons_for_sigma(),
+        pid_p_min=pid_p_min,
+        pid_p_over_k_min=pid_p_over_k_min,
+        name='TightProtonsForSigmaDecays_{hash}',
+        **tight_requirements_for_protons_from_sigma(**kwargs))
 
 
 #
@@ -782,6 +896,15 @@ def kplus_mass_bounds(mass_min=460 * MeV, mass_max=660 * MeV):
     return mass_min, mass_max
 
 
+@configurable
+def kplus_semileptonic_mass_bounds(mass_min=0. * MeV, mass_max=660 * MeV):
+    """
+    Allow to define the same mass bounds for lines that select semileptonic
+    K+ decays
+    """
+    return mass_min, mass_max
+
+
 @configurable
 def lambda0_mass_bounds(mass_min=1000 * MeV, mass_max=1200 * MeV):
     """ Allow to define the same mass bounds for many lines that select Lambda0 decays """
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/qqbar_to_ll.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/qqbar_to_ll.py
index 4ebd9e0d65f598ebeda4663b3bc64206ef6c4eb8..7d349bbb66552edce0a94e8e9f23aa8942644d4e 100755
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/qqbar_to_ll.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/qqbar_to_ll.py
@@ -41,11 +41,8 @@ from PyConf import configurable
 from Moore.config import register_line_builder
 from Moore.lines import Hlt2Line
 from Hlt2Conf.lines.rd.builders.rdbuilder_thor import (
-    make_rd_detached_mue,
-    make_rd_prompt_mue,
-    make_rd_prompt_dielectrons,
-    make_rd_prompt_dimuons,
-)
+    make_rd_detached_mue, make_rd_prompt_mue, make_rd_prompt_dielectrons,
+    make_rd_prompt_dimuons)
 from Hlt2Conf.lines.rd.builders.qqbar_to_ll_builders import (
     make_prompt_tautau,
     make_prompt_etau,
@@ -56,6 +53,7 @@ from Hlt2Conf.lines.rd.builders.rd_prefilters import (
     rd_prefilter,
     _VRD_MONITORING_VARIABLES,
 )
+
 import Functors as F
 from Hlt2Conf.lines.rd.builders.rd_isolation import parent_isolation_output
 
@@ -211,10 +209,11 @@ def upsilon_to_mue_ss_line(name="Hlt2RD_UpsilonToMuE_SS",
 @register_line_builder(all_lines)
 @configurable
 def upsilonToTauTau_Line(name="Hlt2RD_UpsilonToTauTau",
-                         prescale=0.1,
+                         prescale=1,
                          persistreco=False):
     """
-    Definiton of [Upsilon(1S) -> tau- tau+]CC
+    Definiton of Upsilon(1S) -> tau- tau+
+    As both taus are done with make_rd_tauons_hadronic_decay , there is no need of []]cc anywhere
     """
 
     tautau = make_prompt_tautau(
@@ -237,7 +236,7 @@ def upsilonToTauTau_Line(name="Hlt2RD_UpsilonToTauTau",
 @register_line_builder(all_lines)
 @configurable
 def upsilonToeTau_Line(name="Hlt2RD_UpsilonToTauE",
-                       prescale=0.1,
+                       prescale=1,
                        persistreco=False):
     etau = make_prompt_etau(
         # name="Hlt2RD_UpsilonToTauE_Builder",
@@ -258,7 +257,7 @@ def upsilonToeTau_Line(name="Hlt2RD_UpsilonToTauE",
 @register_line_builder(all_lines)
 @configurable
 def upsilonTomuTau_Line(name="Hlt2RD_UpsilonToTauMu",
-                        prescale=0.1,
+                        prescale=1,
                         persistreco=False):
     mutau = make_prompt_mutau(
         # name="Hlt2RD_UpsilonToTauMu_Builder",
@@ -268,8 +267,7 @@ def upsilonTomuTau_Line(name="Hlt2RD_UpsilonToTauMu",
         min_dilepton_pt=1.0 * GeV,
         min_pt_mu=1000 * MeV,
         # pi_pt_min=150 * MeV,
-        IsMuon=True,
-    )
+        IsMuon=True)
 
     return Hlt2Line(
         name=name,
@@ -456,10 +454,11 @@ def jpsi_to_ee_line(name="Hlt2RD_JpsiToEE", prescale=0.001, persistreco=False):
 def upsilon_to_ee_line(name="Hlt2RD_UpsilonToEE",
                        prescale=0.1,
                        persistreco=False):
+    #TODO : tightened it ? Maybe a cut on momentum ?
     ee = make_rd_prompt_dielectrons(
         parent_id="Upsilon(1S)",
         same_sign=False,
-        PIDe_min=2.0,
+        PIDe_min=3.0,
         pt_e_min=1.0 * GeV,
         min_dilepton_pt=1.0 * GeV,
         min_dilepton_mass=8000 * MeV,
@@ -484,7 +483,6 @@ def upsilon_to_mumu_line(name="Hlt2RD_UpsilonToMuMu",
     # make_rd_detached_dimuons instead of make_rd_prompt_dimuons
     # in the line just below
     mumu = make_rd_prompt_dimuons(
-        name="Hlt2RD_UpsilonToMuMu_Builder",
         parent_id="Upsilon(1S)",
         same_sign=False,
         pid=F.require_all(F.PID_MU > 3.0, F.ISMUON),
@@ -513,10 +511,19 @@ def upsilon_to_mumu_line(name="Hlt2RD_UpsilonToMuMu",
 @configurable
 def upsilon2_to_upsilon1pipi_tautau_line(
         name="Hlt2RD_Upsilon2ToUpsilon1PiPi_Upsilon1ToTauTau",
-        prescale=0.1,
+        prescale=1,
         persistreco=False):
-    upsilons1s = make_prompt_tautau()
-    upsilons2s = make_upsilons_to_upsilons(upsilons1s)
+
+    upsilons1s = make_prompt_tautau(
+        parent_id="Upsilon(1S)",
+        min_dilepton_mass=8000.0 * MeV,
+        max_dilepton_mass=12000.0 * MeV,
+        min_dilepton_pt=1.0 * GeV,
+        # pi_pt_min=150 * MeV,
+    )
+
+    upsilons2s = make_upsilons_to_upsilons(
+        upsilons1s, useDTFMassConstraint=False)
     return Hlt2Line(
         name=name,
         algs=rd_prefilter() + [upsilons1s, upsilons2s
@@ -532,8 +539,21 @@ def upsilon2_to_upsilon1pipi_mumu_line(
         name="Hlt2RD_Upsilon2ToUpsilon1PiPi_Upsilon1ToMuMu",
         prescale=1,
         persistreco=False):
-    upsilons1s = make_rd_prompt_dimuons()
-    upsilons2s = make_upsilons_to_upsilons(upsilons1s)
+    ## TODO : is it fine? should it be softened ? just copied from ->mumu
+    upsilons1s = make_rd_prompt_dimuons(
+        parent_id="Upsilon(1S)",
+        same_sign=False,
+        pid=F.require_all(F.PID_MU > 3.0, F.ISMUON),
+        pt_dimuon_min=1000.0 * MeV,
+        pt_muon_min=1000.0 * MeV,
+        p_muon_min=1000.0 * MeV,
+        adocachi2cut_max=30.0,
+        vchi2pdof_max=16.0,
+        am_min=7000.0 * MeV,
+        am_max=12000.0 * MeV,
+    )
+    upsilons2s = make_upsilons_to_upsilons(
+        upsilons1s, useDTFMassConstraint=False)
     return Hlt2Line(
         name=name,
         algs=rd_prefilter() + [upsilons1s, upsilons2s
@@ -550,8 +570,18 @@ def upsilon2_to_upsilon1pipi_ee_line(
         name="Hlt2RD_Upsilon2ToUpsilon1PiPi_Upsilon1ToEE",
         prescale=1,
         persistreco=False):
-    upsilons1s = make_rd_prompt_dielectrons()
-    upsilons2s = make_upsilons_to_upsilons(upsilons1s)
+    #TODO : tightened it ? Maybe a cut on momentum ?
+    upsilons1s = make_rd_prompt_dielectrons(
+        parent_id="Upsilon(1S)",
+        same_sign=False,
+        PIDe_min=3.0,
+        pt_e_min=1.0 * GeV,
+        min_dilepton_pt=1.0 * GeV,
+        min_dilepton_mass=8000 * MeV,
+        max_dilepton_mass=12000 * MeV,
+    )
+    upsilons2s = make_upsilons_to_upsilons(
+        upsilons1s, useDTFMassConstraint=False)
     return Hlt2Line(
         name=name,
         algs=rd_prefilter() + [upsilons1s, upsilons2s
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/rare_tau_decay_lines.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/rare_tau_decay_lines.py
index 66690db78776c446262eb2b1880cb6cb456b1a88..4fce3491466c9ba38d8b11d7557a51c484ecaf4c 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/rare_tau_decay_lines.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/rare_tau_decay_lines.py
@@ -56,10 +56,16 @@ def tau_to_mumumu_line(name="Hlt2RD_TauToMuMuMu",
                        prescale=1,
                        persistreco=False):
     descriptor = "[tau+ -> mu+ mu+ mu-]cc"
-    muons = make_rd_detached_muons(
-        **track_cuts, pid=F.require_all(F.ISMUON, (F.PID_MU > 2)))
+    muons = make_rd_detached_muons(**track_cuts, pid=(F.PID_MU > 2))
     tau = _make_tau_to_3body(
-        muons, muons, muons, descriptor, name="Hlt2RD_TauToMuMuMu_Builder")
+        muons,
+        muons,
+        muons,
+        descriptor,
+        pid_cut=F.ISMUON,
+        min_particle_with_pid=2,
+        name="Hlt2RD_TauToMuMuMu_Builder_{hash}",
+        max_ipchi2=225)
     return Hlt2Line(
         name=name,
         algs=rd_prefilter() + [tau],
@@ -256,30 +262,31 @@ def tau_to_pmumu_line(name="Hlt2RD_TauToPMuMu",
 
 @register_line_builder(all_lines)
 @configurable
-def tau_to_phimu_line(name="Hlt2RD_TauToPhiMu",
-                      prescale=0.1,
-                      persistreco=False):
+def tau_to_phimu_line(name="Hlt2RD_TauToPhiMu", prescale=1, persistreco=False):
     """
     Modified by Domenico Riccardi
     Contact: domenico.riccardi@cern.ch
     """
     descriptor = "[tau+ -> phi(1020) mu+]cc"
-    muons = make_rd_detached_muons(**track_cuts, pid=F.ISMUON)
+    muons = make_rd_detached_muons(
+        **track_cuts, pid=F.require_all(F.ISMUON, (F.PID_MU > -5)))
     phis = make_rd_detached_phis(
-        am_min=990 * MeV,
-        am_max=1050 * MeV,
+        am_min=1000 * MeV,
+        am_max=1040 * MeV,
         k_pt_min=300 * MeV,
         k_ipchi2_min=4,
         k_pid=(F.PID_K > 4),
-        vchi2pdof_max=12)
+        vchi2pdof_max=4)
     tau = _make_tau_to_2body(
         phis,
         muons,
         descriptor,
         name="Hlt2RD_TauToPhiMu_Builder",
-        min_mass=1627 * MeV,
+        min_mass=1670 * MeV,
         max_mass=2040 * MeV,
-        max_ipchi2=30,
+        max_ipchi2=25,
+        max_vtxchi2dof=4,
+        min_pt=3000. * MeV,
     )
 
     return Hlt2Line(
@@ -316,7 +323,7 @@ def tau_to_5mu_line(name="Hlt2RD_TauTo5Mu", prescale=1, persistreco=False):
 @register_line_builder(all_lines)
 @configurable
 def tau_to_7mu_line(name="Hlt2RD_TauTo7Mu", prescale=1, persistreco=False):
-    descriptor = "[tau+ -> Xu+ Xu0]cc"
+    descriptor = "[tau+ -> mu+ mu+ mu+ mu+ mu- mu- mu-]cc"
     muons = make_rd_detached_muons(
         **track_cuts, pid=F.require_all(F.ISMUON, (F.PID_MU > 2)))
     muons_loose = make_rd_detached_muons(**track_cuts, pid=F.ISMUON)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/strange.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/strange.py
index 3e560eeebb543917464a47ba4161bb8b8308b8d3..05e77427cc48fc4278118b9352eee8827a3b5291 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/strange.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/strange.py
@@ -16,22 +16,33 @@ Lines to study strange decays:
 * KS0 -> l+(pi+) l-(pi-) l'+ l'-
 * [KS0 -> pi+ l- nu_l~]cc
 * [K+ -> pi+ l+ l-]cc
+* [K+ -> pi- l+ l+]cc
+* [K+ -> pi+ mu± e±]cc
+* [K+ -> pi+ [mu+ e-]cc]cc
 * [Lambda0 -> p l- nu_l~]cc
-* [Sigma+ -> p l(')+ l-]cc
+* [Lambda0 -> p pi e e]cc
+* [Lambda0 -> p pi]cc
+* [Lambda0 -> p pi gamma]cc
+* [Sigma+ -> p l+ l-]cc , [Sigma+ -> p~- mu+ mu+]cc
+* [Sigma+ -> p+ pi0]cc  , [Sigma+ -> p gamma]cc
+* [Sigma+ -> p+ [mu+ e-]cc]cc
+* Sigma+ -> p+ e+ e- e+ e- , Sigma+ -> p+ mu+ mu- e+ e-
 * [Xi0 -> p pi-]cc
 * [Xi- -> p pi- pi-]cc
-* [Xi- -> Lambda0 l- \nu_l~]cc
+* [Xi- -> Lambda0 l- nu_l~]cc
 * [Omega- -> Lambda0 pi-]cc
-* [Omega- -> Xi- l+ l-]cc
-* [Omega- -> Xi- pi+ pi-]cc
-* [Omega- -> Xi- gamma]cc
 
 Contacts:
 
 - Miguel Ramos Pernas (miguel.ramos.pernas@cern.ch)
 - Sergio Arguedas Cuendis (sergio.arguedas.cuendis@cern.ch)
 - Frank Xiangyu Liu (frank.liu@monash.edu)
+- Francesca Dordei (francesca.dordei@cern.ch)
+- Francesco Dettori (francesco.dettori@cern.ch)
+- Daniele Provenzano (daniele.provenzano@cern.ch)
+
 """
+
 from Hlt2Conf.lines.rd.builders.rd_prefilters import rd_prefilter
 from Hlt2Conf.lines.rd.builders import strange_builders
 from Moore.config import register_line_builder
@@ -248,7 +259,7 @@ def ks02emu_ss_line(name="Hlt2RD_KS0ToEMu_SS", prescale=1):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -285,7 +296,7 @@ def ks02ee_ss_line(name="Hlt2RD_KS0ToEE_SS", prescale=1):
 
 @register_line_builder(control_lines)
 @configurable
-def ks02pimu_line(name="Hlt2RD_KS0ToPiMu", prescale=1e-1):
+def ks02pimu_line(name="Hlt2RD_KS0ToPiMu", prescale=1e-2):
     """
     Select [KS0 -> pi+ mu- (nu_mu~)]cc candidates
     """
@@ -488,7 +499,7 @@ def ks02pipiee_line(name="Hlt2RD_KS0ToPiPiEE_Loose", prescale=1):
 
 @register_line_builder(control_lines)
 @configurable
-def lambda02ppi_line(name="Hlt2RD_Lambda0ToPPi", prescale=1e-5):
+def lambda02ppi_line(name="Hlt2RD_Lambda0ToPPi", prescale=1e-3):
     """ Control mode for analyses using Lambda0 decays """
     l0 = strange_builders.build_lambda0()
     return Hlt2Line(
@@ -507,7 +518,7 @@ def lambda02ppi_line(name="Hlt2RD_Lambda0ToPPi", prescale=1e-5):
 
 @register_line_builder(control_lines)
 @configurable
-def lambda02ppi_DS_line(name="Hlt2RD_Lambda0ToPPi_Downstream", prescale=1):
+def lambda02ppi_DS_line(name="Hlt2RD_Lambda0ToPPi_Downstream", prescale=1e-3):
     """ Control mode for analyses using downstream Lambda0 decays """
     l0 = strange_builders.build_downstream_lambda0()
     return Hlt2Line(
@@ -525,7 +536,7 @@ def lambda02ppi_DS_line(name="Hlt2RD_Lambda0ToPPi_Downstream", prescale=1):
 
 @register_line_builder(control_lines)
 @configurable
-def lambda02ppi_tight_line(name="Hlt2RD_Lambda0ToPPi_Tight", prescale=1e-3):
+def lambda02ppi_tight_line(name="Hlt2RD_Lambda0ToPPi_Tight", prescale=1e-1):
     """ Control mode for analyses using Lambda0 decays """
     l0 = strange_builders.build_tight_lambda0()
     return Hlt2Line(
@@ -545,7 +556,7 @@ def lambda02ppi_tight_line(name="Hlt2RD_Lambda0ToPPi_Tight", prescale=1e-3):
 @register_line_builder(control_lines)
 @configurable
 def lambda02ppi_tight_DS_line(name="Hlt2RD_Lambda0ToPPi_Tight_Downstream",
-                              prescale=1):
+                              prescale=1e-2):
     """ Control mode for analyses using downstream Lambda0 decays """
     l0 = strange_builders.build_tight_downstream_lambda0()
     return Hlt2Line(
@@ -561,54 +572,6 @@ def lambda02ppi_tight_DS_line(name="Hlt2RD_Lambda0ToPPi_Tight_Downstream",
     )
 
 
-@register_line_builder(control_lines)
-@configurable
-def sigmaplus2ppi0_resolved_line(name="Hlt2RD_SigmaPlusToPPi0Resolved",
-                                 prescale=1e-3):
-    """ Normalization mode for Sigma+ decays """
-    protons = strange_builders.make_protons()
-    pi0 = strange_builders.make_resolved_neutral_pions()
-    sigma = strange_builders.make_combination(
-        '[Sigma+ -> p+ pi0]cc', [protons, pi0],
-        mass_range=strange_builders.sigma_mass_bounds(),
-        build_requirements=strange_builders.
-        requirements_for_neutral_combination_no_vertex,
-        can_reco_vertex=False,
-        name=f'{name}_Combiner')
-    return Hlt2Line(
-        name=name,
-        algs=rd_prefilter() + [sigma],
-        prescale=prescale,
-        monitoring_variables=strange_builders.
-        MONITORING_VARIABLES_CONTROL_NO_VERTEX,
-        raw_banks=['VP', 'Calo'],
-    )
-
-
-@register_line_builder(control_lines)
-@configurable
-def sigmaplus2ppi0_merged_line(name="Hlt2RD_SigmaPlusToPPi0Merged",
-                               prescale=1):
-    """ Normalization mode for Sigma+ decays """
-    protons = strange_builders.make_protons()
-    pi0 = strange_builders.make_merged_neutral_pions()
-    sigma = strange_builders.make_combination(
-        '[Sigma+ -> p+ pi0]cc', [protons, pi0],
-        mass_range=strange_builders.sigma_mass_bounds(),
-        build_requirements=strange_builders.
-        requirements_for_neutral_combination_no_vertex,
-        can_reco_vertex=False,
-        name=f'{name}_Combiner')
-    return Hlt2Line(
-        name=name,
-        algs=rd_prefilter() + [sigma],
-        prescale=prescale,
-        monitoring_variables=strange_builders.
-        MONITORING_VARIABLES_CONTROL_NO_VERTEX,
-        raw_banks=['VP', 'Calo'],
-    )
-
-
 @register_line_builder(control_lines)
 @configurable
 def xi02l0pi0_resolved_line(name="Hlt2RD_Xi0ToLambdaPi0Resolved_Tight",
@@ -934,7 +897,7 @@ def ks02emu_line(name="Hlt2RD_KS0ToEMu"):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -970,6 +933,7 @@ def ks02ee_line(name="Hlt2RD_KS0ToEE"):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
+        raw_banks=['Calo'],
     )
 
 
@@ -1171,7 +1135,7 @@ def ks02mumuee_line(name="Hlt2RD_KS0ToMuMuEE_Loose"):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -1208,6 +1172,7 @@ def ks02eeee_line(name="Hlt2RD_KS0ToEEEE_Loose"):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -1240,7 +1205,7 @@ def ks02mumuemu_line(name="Hlt2RD_KS0ToMuMuEMu_Loose"):
             {
                 'KS0': ks0
             }, tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -1324,7 +1289,7 @@ def ks02mumuee_intermediate_neutral_line(
                 'X02': x02
             },
             tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -1368,6 +1333,7 @@ def ks02eeee_intermediate_neutral_line(
                 'KS0': ks0,
                 'X0': x0
             }, tracks_with_velo_segment=True),
+        raw_banks=['Calo'],
     )
 
 
@@ -1420,7 +1386,7 @@ def ks02mumuemu_intermediate_neutral_line(
                 'X02': x02
             },
             tracks_with_velo_segment=True),
-        raw_banks=['Muon'],
+        raw_banks=['Muon', 'Calo'],
     )
 
 
@@ -1460,6 +1426,34 @@ def kplus2pimumu_line(name="Hlt2RD_KpToPiMuMu"):
     )
 
 
+@register_line_builder(signal_lines)
+@configurable
+def kplus2piminusmumu_line(name="Hlt2RD_KpToPiMinusMuMu"):
+    """
+    Select [K+ -> pi- mu+ mu+]cc candidates
+
+    """
+    pions = strange_builders.make_pions()
+    muons = strange_builders.make_muons()
+    kplus = strange_builders.make_combination(
+        '[K+ -> mu+ mu+ pi-]cc', [muons, muons, pions],
+        build_requirements=strange_builders.
+        requirements_for_prompt_combination,
+        mass_range=strange_builders.kplus_mass_bounds(),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kplus],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Kplus': kplus
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Muon'],
+    )
+
+
 @register_line_builder(signal_lines)
 @configurable
 def kplus2piee_line(name="Hlt2RD_KpToPiEE"):
@@ -1492,7 +1486,131 @@ def kplus2piee_line(name="Hlt2RD_KpToPiEE"):
             {
                 'Kplus': kplus
             }, tracks_with_velo_segment=True),
-        raw_banks=['VP'],
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def kplus2piminusee_line(name="Hlt2RD_KpToPiMinusEE"):
+    """
+    Select [K+ -> pi- e+ e+]cc candidates
+    """
+    pions = strange_builders.make_pions()
+    mass_min, mass_max = strange_builders.kplus_mass_bounds()
+    dielectron = strange_builders.make_dielectron(
+        SHORT_LIVED,
+        mass_range=(strange_builders.dielectron_min_mass(), mass_max),
+        opposite_sign=False,
+        electron_builder=strange_builders.make_electrons)
+    kplus = strange_builders.make_combination(
+        f'[K+ -> {SHORT_LIVED} pi-]cc', [dielectron, pions],
+        build_requirements=strange_builders.
+        loose_requirements_for_prompt_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kplus],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Kplus': kplus
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def Kplus2piemu_line(name="Hlt2RD_KpToPiEMu"):
+    """
+    Select [K+ -> pi+ [mu+ e-]cc]cc candidates
+
+    """
+    pions = strange_builders.make_pions()
+    muons = strange_builders.make_muons()
+    electrons = strange_builders.make_electrons(add_brem=True)
+    mass_min, mass_max = strange_builders.kplus_mass_bounds()
+    x0 = strange_builders.make_combination(
+        f'[{SHORT_LIVED} -> mu+ e-]cc', [muons, electrons],
+        build_requirements=strange_builders.NO_REQUIREMENTS,
+        mass_range=(0., mass_max),
+        name=f'{name}_IntermediateNeutral_Combiner')
+    kplus = strange_builders.make_combination(
+        f'[K+ -> pi+ {SHORT_LIVED}]cc', [pions, x0],
+        build_requirements=strange_builders.
+        requirements_for_prompt_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kplus],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Kplus': kplus
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Muon', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def kplus2pipimunu_line(name="Hlt2RD_KpToPiPiMuNu"):
+    """
+    Select [K+ -> pi+ pi- mu+ nu_mu]cc candidates
+
+    """
+    pions = strange_builders.make_pions()
+    muons = strange_builders.make_muons(pid_mu_min=10.)
+    kplus = strange_builders.make_combination(
+        '[K+ -> mu+ pi+ pi-]cc', [muons, pions, pions],
+        build_requirements=strange_builders.
+        requirements_for_detached_combination,
+        mass_range=strange_builders.kplus_semileptonic_mass_bounds(),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kplus],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Kplus': kplus
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Muon'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def kplus2pipienu_line(name="Hlt2RD_KpToPiPiENu", prescale=1e-1):
+    """
+    Select [K+ -> pi+ pi- e+ nu_e]cc candidates
+
+    """
+    pions = strange_builders.make_pions()
+    electrons = strange_builders.make_electrons(pid_e_min=10.)
+    kplus = strange_builders.make_combination(
+        '[K+ -> e+ pi+ pi-]cc', [electrons, pions, pions],
+        build_requirements=strange_builders.
+        requirements_for_detached_combination,
+        mass_range=strange_builders.kplus_semileptonic_mass_bounds(),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [kplus],
+        prescale=prescale,
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Kplus': kplus
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Calo'],
     )
 
 
@@ -1579,7 +1697,8 @@ def lambda02ppiee_line(name="Hlt2RD_Lambda0ToPPiEE_Tight"):
 
     dielectron = strange_builders.make_dielectron(
         SHORT_LIVED,
-        mass_range=(strange_builders.dielectron_min_mass(), mass_max),
+        # the small phase-space available forces us to start at zero
+        mass_range=(0., mass_max),
         electron_builder=strange_builders.make_tight_electrons)
 
     l0 = strange_builders.make_combination(
@@ -1598,6 +1717,39 @@ def lambda02ppiee_line(name="Hlt2RD_Lambda0ToPPiEE_Tight"):
             {
                 'Lambda0': l0
             }, tracks_with_velo_segment=True),
+        raw_banks=['Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def lambda02ppigamma_line(name="Hlt2RD_Lambda0ToPPiGamma", prescale=1e-1):
+    """
+    Select [Lambda0 -> p+ pi- gamma]cc candidates
+
+    """
+    protons = strange_builders.make_protons()
+    pions = strange_builders.make_pions()
+    mass_min, mass_max = strange_builders.lambda0_mass_bounds()
+    photons = strange_builders.make_tight_photons()
+    l0 = strange_builders.make_combination(
+        '[Lambda0 -> p+ pi- gamma]cc', [protons, pions, photons],
+        build_requirements=strange_builders.
+        requirements_for_detached_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [l0],
+        prescale=prescale,
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Lambda0': l0
+            }, tracks_with_velo_segment=True),
+        raw_banks=['Calo'],
     )
 
 
@@ -1618,12 +1770,40 @@ def sigmaplus2pmumu_line(name="Hlt2RD_SigmaPlusToPMuMu"):
     - Hlt2RD_SigmaPlusToPPi0Merged_Tight => normalization
     - Hlt2RD_KpToPiPiPi => control
     """
-    protons = strange_builders.make_protons()
-    muons = strange_builders.make_muons()
+    protons = strange_builders.make_loose_protons_for_sigma()
+    muons = strange_builders.make_muons_for_sigma()
     sigma = strange_builders.make_combination(
         '[Sigma+ -> p+ mu+ mu-]cc', [protons, muons, muons],
         build_requirements=strange_builders.
-        requirements_for_prompt_combination,
+        requirements_for_prompt_sigma_combination,
+        mass_range=strange_builders.sigma_mass_bounds(),
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Sigmaplus': sigma
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Muon'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2antipmumu_line(name="Hlt2RD_SigmaPlusToAntiPMuMu"):
+    """
+    Select [Sigma+ -> p~- mu+ mu+]cc candidates
+
+    """
+    protons = strange_builders.make_loose_protons_for_sigma()
+    muons = strange_builders.make_muons_for_sigma()
+    sigma = strange_builders.make_combination(
+        '[Sigma+ -> p~- mu+ mu+]cc', [protons, muons, muons],
+        build_requirements=strange_builders.
+        requirements_for_prompt_sigma_combination,
         mass_range=strange_builders.sigma_mass_bounds(),
         name=f'{name}_Combiner')
     return Hlt2Line(
@@ -1651,10 +1831,8 @@ def sigmaplus2pee_line(name="Hlt2RD_SigmaPlusToPEE"):
     - Hlt2RD_SigmaPlusToPPi0Merged_Tight => normalization
     - Hlt2RD_KpToPiPiPi => control
     """
-    protons = strange_builders.make_protons()
-
+    protons = strange_builders.make_loose_protons_for_sigma()
     mass_min, mass_max = strange_builders.sigma_mass_bounds()
-
     dielectron = strange_builders.make_dielectron(
         SHORT_LIVED,
         mass_range=(strange_builders.dielectron_min_mass(), mass_max),
@@ -1663,7 +1841,7 @@ def sigmaplus2pee_line(name="Hlt2RD_SigmaPlusToPEE"):
     sigma = strange_builders.make_combination(
         f'[Sigma+ -> p+ {SHORT_LIVED}]cc', [protons, dielectron],
         build_requirements=strange_builders.
-        requirements_for_prompt_combination,
+        requirements_for_prompt_sigma_combination,
         mass_range=(mass_min, mass_max),
         name=f'{name}_Combiner')
 
@@ -1676,7 +1854,67 @@ def sigmaplus2pee_line(name="Hlt2RD_SigmaPlusToPEE"):
             {
                 'Sigmaplus': sigma
             }, tracks_with_velo_segment=True),
-        raw_banks=['VP'],
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2pee_detached_line(name="Hlt2RD_SigmaPlusToPEE_Detached"):
+    """
+    Select [Sigma+ -> p+ (gamma -> e+ e-)]cc candidates
+
+    """
+    protons = strange_builders.make_protons_for_sigma()
+    mass_min, mass_max = strange_builders.sigma_mass_bounds()
+    gamma = strange_builders.build_loose_dielectron_intermediate_neutral(
+        LONG_LIVED_ALT, mass_max=mass_max)
+
+    sigma = strange_builders.make_combination(
+        f'[Sigma+ -> p+ {LONG_LIVED_ALT}]cc', [protons, gamma],
+        build_requirements=strange_builders.
+        requirements_for_prompt_sigma_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Sigmaplus': sigma,
+                'Gamma': gamma
+            },
+            tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2pgamma_line(name="Hlt2RD_SigmaPlusToPGamma", prescale=1e-3):
+    """
+    Select [Sigma+ -> p+ gamma]cc candidates
+    Normalization mode for Sigma+ decays
+    """
+    protons = strange_builders.make_tight_protons_for_sigma()
+    photons = strange_builders.make_tight_photons()
+    sigma = strange_builders.make_combination(
+        '[Sigma+ -> p+ gamma]cc', [protons, photons],
+        mass_range=strange_builders.sigma_mass_bounds(),
+        build_requirements=strange_builders.
+        requirements_for_sigma_decay_neutral_combination_no_vertex,
+        can_reco_vertex=False,
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        prescale=prescale,
+        monitoring_variables=strange_builders.
+        MONITORING_VARIABLES_SEARCH_NO_VERTEX,
+        raw_banks=['VP', 'Calo'],
     )
 
 
@@ -1692,8 +1930,8 @@ def sigmaplus2pemu_line(name="Hlt2RD_SigmaPlusToPEMu"):
     - Hlt2RD_SigmaPlusToPPi0Merged_Tight => normalization
     - Hlt2RD_KpToPiPiPi => control
     """
-    protons = strange_builders.make_protons()
-    muons = strange_builders.make_muons()
+    protons = strange_builders.make_loose_protons_for_sigma()
+    muons = strange_builders.make_muons_for_sigma()
     electrons = strange_builders.make_electrons(add_brem=True)
     mass_min, mass_max = strange_builders.sigma_mass_bounds()
     x0 = strange_builders.make_combination(
@@ -1704,7 +1942,7 @@ def sigmaplus2pemu_line(name="Hlt2RD_SigmaPlusToPEMu"):
     sigma = strange_builders.make_combination(
         f'[Sigma+ -> p+ {SHORT_LIVED}]cc', [protons, x0],
         build_requirements=strange_builders.
-        requirements_for_prompt_combination,
+        requirements_for_prompt_sigma_combination,
         mass_range=(mass_min, mass_max),
         name=f'{name}_Combiner')
     return Hlt2Line(
@@ -1716,7 +1954,114 @@ def sigmaplus2pemu_line(name="Hlt2RD_SigmaPlusToPEMu"):
             {
                 'Sigmaplus': sigma
             }, tracks_with_velo_segment=True),
-        raw_banks=['VP', 'Muon'],
+        raw_banks=['VP', 'Muon', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2peeee_line(name="Hlt2RD_SigmaPlusToPEEEE"):
+    """
+    Select Sigma+ -> p+ e+ e- e+ e- candidates
+    """
+    protons = strange_builders.make_loose_protons_for_sigma()
+    mass_min, mass_max = strange_builders.sigma_mass_bounds()
+    electrons = strange_builders.make_electrons()
+    sigma = strange_builders.make_combination(
+        'Sigma+ -> p+ e+ e+ e- e-',
+        [protons, electrons, electrons, electrons, electrons],
+        build_requirements=strange_builders.
+        requirements_for_prompt_sigma_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Sigmaplus': sigma
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2pmumuee_line(name="Hlt2RD_SigmaPlusToPMuMuEE"):
+    """
+    Select Sigma+ -> p+ mu+ mu- e+ e- candidates
+    """
+    protons = strange_builders.make_loose_protons_for_sigma()
+    mass_min, mass_max = strange_builders.sigma_mass_bounds()
+    muons = strange_builders.make_muons_for_sigma()
+    electrons = strange_builders.make_electrons()
+    sigma = strange_builders.make_combination(
+        'Sigma+ -> p+ mu+ mu- e+ e-',
+        [protons, muons, muons, electrons, electrons],
+        build_requirements=strange_builders.
+        requirements_for_prompt_sigma_combination,
+        mass_range=(mass_min, mass_max),
+        name=f'{name}_Combiner')
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
+        extra_outputs=strange_builders.
+        define_impact_parameter_chi2_based_isolation(
+            {
+                'Sigmaplus': sigma
+            }, tracks_with_velo_segment=True),
+        raw_banks=['VP', 'Muon', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2ppi0_resolved_line(name="Hlt2RD_SigmaPlusToPPi0Resolved",
+                                 prescale=1e-3):
+    """ Normalization mode for Sigma+ decays """
+    protons = strange_builders.make_tight_protons_for_sigma()
+    pi0 = strange_builders.make_resolved_neutral_pions()
+    sigma = strange_builders.make_combination(
+        '[Sigma+ -> p+ pi0]cc', [protons, pi0],
+        mass_range=strange_builders.sigma_mass_bounds(),
+        build_requirements=strange_builders.
+        requirements_for_sigma_decay_neutral_combination_no_vertex,
+        can_reco_vertex=False,
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        prescale=prescale,
+        monitoring_variables=strange_builders.
+        MONITORING_VARIABLES_SEARCH_NO_VERTEX,
+        raw_banks=['VP', 'Calo'],
+    )
+
+
+@register_line_builder(signal_lines)
+@configurable
+def sigmaplus2ppi0_merged_line(name="Hlt2RD_SigmaPlusToPPi0Merged"):
+    """ Normalization mode for Sigma+ decays """
+    protons = strange_builders.make_loose_protons_for_sigma()
+    pi0 = strange_builders.make_merged_neutral_pions()
+    sigma = strange_builders.make_combination(
+        '[Sigma+ -> p+ pi0]cc', [protons, pi0],
+        mass_range=strange_builders.sigma_mass_bounds(),
+        build_requirements=strange_builders.
+        requirements_for_sigma_decay_neutral_combination_no_vertex,
+        can_reco_vertex=False,
+        name=f'{name}_Combiner')
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [sigma],
+        monitoring_variables=strange_builders.
+        MONITORING_VARIABLES_SEARCH_NO_VERTEX,
+        raw_banks=['VP', 'Calo'],
     )
 
 
@@ -1759,7 +2104,7 @@ def xi02ppi_line(name="Hlt2RD_Xi0ToPPi_Tight"):
 
 @register_line_builder(signal_lines)
 @configurable
-def xi02ppi_DS_line(name="Hlt2RD_Xi0ToPPi_Tight_Downstream"):
+def xi02ppi_DS_line(name="Hlt2RD_Xi0ToPPi_Tight_Downstream", prescale=1e-1):
     """
     Select [Xi0 -> p+ pi-]cc downstream candidates
 
@@ -1780,6 +2125,7 @@ def xi02ppi_DS_line(name="Hlt2RD_Xi0ToPPi_Tight_Downstream"):
     return Hlt2Line(
         name=name,
         algs=rd_prefilter() + [xi],
+        prescale=prescale,
         monitoring_variables=strange_builders.MONITORING_VARIABLES_SEARCH,
         extra_outputs=strange_builders.
         define_impact_parameter_chi2_based_isolation({
@@ -1917,7 +2263,7 @@ def ximinus2l0e_line(name="Hlt2RD_XiMinusToLambdaE_Tight"):
             {
                 'Ximinus': xi
             }, tracks_with_velo_segment=True),
-        raw_banks=['VP'],
+        raw_banks=['VP', 'Calo'],
     )
 
 
@@ -2099,7 +2445,7 @@ def omegaminus2xiee_line(name="Hlt2RD_OmegaMinusToXiMinusEE"):
                 'Lambda0': l0,
             },
             tracks_with_velo_segment=True),
-        raw_banks=['VP'],
+        raw_banks=['VP', 'Calo'],
     )
 
 
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/standard_particles.py b/Hlt/Hlt2Conf/python/Hlt2Conf/standard_particles.py
index 8837358e7d6da6c8ee739c4384fc5bc3e543fbd1..18f5848b73742cd823455cc20cf9e3db59c324c8 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/standard_particles.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/standard_particles.py
@@ -938,7 +938,7 @@ def make_detached_mue_with_brem(name='std_make_detached_mue_with_brem_{hash}',
     pvs = pv_maker()
 
     electrons = filter_leptons_loose(
-        particles=make_long_electrons_no_brem(),
+        particles=make_long_electrons_with_brem(),
         lepton='electron',
         fake=bool(fake_electrons),
         pt_min=min_pt_e,