diff --git a/CODEOWNERS b/CODEOWNERS
index 11cf75cafd6d9b64baa24eea2c86f5c4386a7411..0e4332dfbad53c14bc1e5de42806938bb2060d46 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -132,8 +132,8 @@
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/ @elsmith @mrama @cagapopo @tfulghes @fevolle @htilquin 
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b2ll_builders.py @tmombach
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/B2ll_lines.py @tmombach
-/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py @tfulghes
-/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py @tfulghes
+/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/b_to_xtaul_rd_builder.py @tfulghes @yaz
+/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_hlt2.py @tfulghes 
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_spruce.py @tfulghes
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/rare_tau_decay_lines.py @maik
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/rare_tau_decay_builders.py @maik
@@ -144,6 +144,7 @@
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/builders/bnv_builders.py @fdevelli
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/bnv_lines_hlt2.py @fdevelli
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/lfv_lines_hlt2.py @fdevelli
+/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_tautau_hlt2.py @tfulghes @yaz
 
 # QEE
 /Hlt/Hlt2Conf/python/Hlt2Conf/lines/qee/ @wbarter @ncooke @jideng @rjhunter @olupton @yqiu @cvazquez @hyin @dzuliani
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/__init__.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/__init__.py
index 6c0bba66c4b1774a2cd3a3679e774348d25eb049..ad2cf0570d045633a35b588022a1bee00c85ca2f 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/__init__.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/__init__.py
@@ -41,6 +41,7 @@ from . import omega_rare_decay_lines
 from . import baryonic_radiative
 from . import bnv_lines_hlt2
 from . import lfv_lines_hlt2
+from . import b_to_tautau_hlt2
 
 # provide "all_lines" for correct registration by the overall HLT2 lines module
 all_lines = {}
@@ -69,10 +70,11 @@ all_lines.update(omega_rare_decay_lines.all_lines)
 all_lines.update(baryonic_radiative.all_lines)
 all_lines.update(bnv_lines_hlt2.all_lines)
 all_lines.update(lfv_lines_hlt2.all_lines)
+all_lines.update(b_to_tautau_hlt2.hlt2_lines)
 
 sprucing_lines = {}
-sprucing_lines.update(b_to_xtaul_spruce.sprucing_lines)
 sprucing_lines.update(b_to_ll_spruce.sprucing_lines)
 sprucing_lines.update(b_to_multilepton_spruce.sprucing_lines)
 sprucing_lines.update(b_to_xll_spruce.sprucing_lines)
 sprucing_lines.update(b_to_xgamma_exclusive_spruce.sprucing_lines)
+sprucing_lines.update(b_to_xtaul_spruce.sprucing_lines)
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_tautau_hlt2.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_tautau_hlt2.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c6aff7da4b9939eee89c568639e7047b4c104c2
--- /dev/null
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_tautau_hlt2.py
@@ -0,0 +1,70 @@
+###############################################################################
+# (c) Copyright 2021 CERN for the benefit of the LHCb Collaboration           #
+#                                                                             #
+# This software is distributed under the terms of the GNU General Public      #
+# Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
+#                                                                             #
+# In applying this licence, CERN does not waive the privileges and immunities #
+# granted to it by virtue of its status as an Intergovernmental Organization  #
+# or submit itself to any jurisdiction.                                       #
+###############################################################################
+'''
+Author: Ya Zhao, Tommaso Fulghesu  
+Contact: ya.zhao@cern.ch, tommaso.fulghesu@cern.ch
+Date: 01/04/2022
+'''
+#######################################################################################
+####                                                                               ####
+#### Hlt2 lines for selecting OS and SS events of B0 and B_s0 decaying into a pair ####
+#### of taus, each one decays hadronically into three pions                        ####
+####                                                                               ####
+#######################################################################################
+
+from Moore.config import register_line_builder
+from Moore.lines import Hlt2Line
+from PyConf import configurable
+from Hlt2Conf.lines.rd.builders import b_to_xtaul_rd_builder as builder
+from Hlt2Conf.lines.rd.builders.rd_prefilters import rd_prefilter, _RD_MONITORING_VARIABLES
+from GaudiKernel.SystemOfUnits import GeV
+
+hlt2_lines = {}
+
+
+@register_line_builder(hlt2_lines)
+@configurable
+def Hlt2RD_BdToTauTau_OS_Line(name="Hlt2RD_BdToTauTau_TauTo3Pi_OS",
+                              prescale=1,
+                              persistreco=True):
+    """
+    Register B -> tautau (B0 and B_s0) line
+    """
+    ditaus = builder.filter_BToTauTau(
+        ditaus=builder.make_dilepton_from_tauls(
+            parent_id="B_s0", daughter_id="tau+", tau_pt_min=1 * GeV))
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ditaus],
+        persistreco=persistreco,
+        prescale=prescale,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
+
+
+@register_line_builder(hlt2_lines)
+@configurable
+def Hlt2RD_BdToTauTau_SS_Line(name="Hlt2RD_BdToTauTau_TauTo3Pi_SS",
+                              prescale=1,
+                              persistreco=True):
+    """
+    Register B -> tautau (B0 and B_s0) line
+    """
+    ditaus = builder.filter_BToTauTau(
+        ditaus=builder.make_dilepton_from_tauls(
+            parent_id="B_s0", daughter_id="tau-", tau_pt_min=1 * GeV))
+
+    return Hlt2Line(
+        name=name,
+        algs=rd_prefilter() + [ditaus],
+        persistreco=persistreco,
+        prescale=prescale,
+        monitoring_variables=_RD_MONITORING_VARIABLES)
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 dfa6f8ea60c0c2319fd5e798f37a33e4629f8ebc..7ab9aa033544b3910a06bc50ae686960a90f7c0f 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
@@ -58,10 +58,6 @@ from Hlt2Conf.lines.rd.builders.rd_prefilters import rd_prefilter, _RD_MONITORIN
 import Functors as F
 
 hlt2_lines = {}
-PROCESS = "hlt2"
-"""
-Set persistreco=True to save the full event reconstruction for sprucing a given HLT2 line
-"""
 
 
 ## B0 -> K* tau l
@@ -73,7 +69,7 @@ def Hlt2_Bd2KstTauTau_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -111,7 +107,7 @@ def Hlt2_Bd2KstTauTau_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) (tau+->pi-pi-pi+) + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -149,7 +145,7 @@ def Hlt2_Bd2KstTauMu_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -187,7 +183,7 @@ def Hlt2_Bd2KstTauMu_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -225,7 +221,7 @@ def Hlt2_Bd2KstTauE_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) e- + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -263,7 +259,7 @@ def Hlt2_Bd2KstTauE_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (K*->K+ pi-) (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for Bd -> (K*->K+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
     kst = common_builder.make_rd_detached_kstar0s(
@@ -302,7 +298,7 @@ def Hlt2_Bd2PhiTauTau_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -327,7 +323,7 @@ def Hlt2_Bd2PhiTauTau_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -352,7 +348,7 @@ def Hlt2_Bd2PhiTauMu_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) mu+ + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -377,7 +373,7 @@ def Hlt2_Bd2PhiTauMu_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) mu- + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -402,7 +398,7 @@ def Hlt2_Bd2PhiTauE_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) e- + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) e+ + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -427,7 +423,7 @@ def Hlt2_Bd2PhiTauE_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (phi->K+ K-) (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for Bd -> (phi->K+ K-) (tau-->pi-pi-pi+) e- + CC
     """
     phi = builder.filter_rd_detached_phis()
@@ -448,12 +444,12 @@ def Hlt2_Bd2PhiTauE_SS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauTau_OS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauTau_Rho2PiPi_TauTo3Pi_OS',
+        name='Hlt2RD_BdToRhoTauTau_RhoToPiPi_TauTo3Pi_OS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -473,12 +469,12 @@ def Hlt2_Bd2RhoTauTau_OS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauTau_SS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauTau_Rho2PiPi_TauTo3Pi_SS',
+        name='Hlt2RD_BdToRhoTauTau_RhoToPiPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -498,12 +494,12 @@ def Hlt2_Bd2RhoTauTau_SS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauMu_OS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauMu_Rho2PiPi_TauTo3Pi_OS',
+        name='Hlt2RD_BdToRhoTauMu_RhoToPiPi_TauTo3Pi_OS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -523,12 +519,12 @@ def Hlt2_Bd2RhoTauMu_OS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauMu_SS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauMu_Rho2PiPi_TauTo3Pi_SS',
+        name='Hlt2RD_BdToRhoTauMu_RhoToPiPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -548,12 +544,12 @@ def Hlt2_Bd2RhoTauMu_SS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauE_OS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauE_Rho2PiPi_TauTo3Pi_OS',
+        name='Hlt2RD_BdToRhoTauE_RhoToPiPi_TauTo3Pi_OS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) e- + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -573,12 +569,12 @@ def Hlt2_Bd2RhoTauE_OS_ExclusiveLine(
 @register_line_builder(hlt2_lines)
 @configurable
 def Hlt2_Bd2RhoTauE_SS_ExclusiveLine(
-        name='Hlt2RD_BdToRhoTauE_Rho2PiPi_TauTo3Pi_SS',
+        name='Hlt2RD_BdToRhoTauE_RhoToPiPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
     HLT2 line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for Bd -> (rho->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
     rho = builder.make_rd_detached_rhos()
@@ -604,7 +600,7 @@ def Hlt2_Bd2EtapTauTau_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) (tau+->pi+pi+pi-)+ CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -629,7 +625,7 @@ def Hlt2_Bd2EtapTauTau_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -654,7 +650,7 @@ def Hlt2_Bd2EtapTauMu_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) mu+ + CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -679,7 +675,7 @@ def Hlt2_Bd2EtapTauMu_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) mu- + CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -704,7 +700,7 @@ def Hlt2_Bd2EtapTauE_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) e- + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) e+ + CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -729,7 +725,7 @@ def Hlt2_Bd2EtapTauE_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for Bd -> (eta'->pi+ pi- gamma) (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for Bd -> (eta'->pi+ pi- gamma) (tau-->pi-pi-pi+) e- + CC
     """
     etap = builder.make_rd_detached_etaps()
@@ -754,9 +750,9 @@ def Hlt2_Bd2KsTauTau_LL_OS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     
-          and for Bd -> (Kshort->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 = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="tau+")
@@ -779,9 +775,9 @@ def Hlt2_Bd2KsTauTau_LL_SS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
     
-          and for Bd -> (Kshort->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 = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="tau-")
@@ -804,9 +800,9 @@ def Hlt2_Bd2KsTauMu_LL_OS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) mu- + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) mu- + CC
     
-          and for Bd -> (Kshort->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
     ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="mu+")
@@ -829,9 +825,9 @@ def Hlt2_Bd2KsTauMu_LL_SS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) mu+ + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) mu+ + CC
     
-          and for Bd -> (Kshort->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) mu- + CC
     """
     ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="mu-")
@@ -854,9 +850,9 @@ def Hlt2_Bd2KsTauE_LL_OS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) e- + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) e- + CC
     
-          and for Bd -> (Kshort->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e+ + CC
     """
     ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="e+")
@@ -879,9 +875,9 @@ def Hlt2_Bd2KsTauE_LL_SS_ExclusiveLine(
         prescale=1,
         persistreco=True):
     """
-    HLT2 line for Bd -> (Kshort->pi+ pi-) (tau+->pi+pi+pi-) e+ + CC
+    HLT2 line for Bd -> (KS0->pi+ pi-) (tau+->pi+pi+pi-) e+ + CC
     
-          and for Bd -> (Kshort->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
+          and for Bd -> (KS0->pi+ pi-) (tau-->pi-pi-pi+) e- + CC
     """
     ks = common_builder.make_rd_ks0_lls(adocachi2cut=25., vchi2pdof_max=20.)
     dilepton = builder.make_dilepton_from_tauls(daughter_id="e-")
@@ -904,7 +900,7 @@ def Hlt2_Bu2KplusTauTau_OS_ExclusiveLine(
         name='Hlt2RD_BuToKplTauTau_TauTo3Pi_OS', prescale=1, persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -928,7 +924,7 @@ def Hlt2_Bu2KplusTauTau_SS_ExclusiveLine(
         name='Hlt2RD_BuToKplTauTau_TauTo3Pi_SS', prescale=1, persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -953,7 +949,7 @@ def Hlt2_Bu2KplusTauMu_OS_ExclusiveLine(name='Hlt2RD_BuToKplTauMu_TauTo3Pi_OS',
                                         persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) mu+ + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -978,7 +974,7 @@ def Hlt2_Bu2KplusTauMu_SS_ExclusiveLine(name='Hlt2RD_BuToKplTauMu_TauTo3Pi_SS',
                                         persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) mu- + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -1003,7 +999,7 @@ def Hlt2_Bu2KplusTauE_OS_ExclusiveLine(name='Hlt2RD_BuToKplTauE_TauTo3Pi_OS',
                                        persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) e- + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) e+ + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -1028,7 +1024,7 @@ def Hlt2_Bu2KplusTauE_SS_ExclusiveLine(name='Hlt2RD_BuToKplTauE_TauTo3Pi_SS',
                                        persistreco=True):
     """
     HLT2 line for B+ -> K+ (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for B+ -> K+ (tau-->pi-pi-pi+) e- + CC
     """
     kaon = common_builder.make_rd_has_rich_detached_kaons(
@@ -1055,7 +1051,7 @@ def Hlt2_Bu2K1plusTauTau_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1080,7 +1076,7 @@ def Hlt2_Bu2K1plusTauTau_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1105,7 +1101,7 @@ def Hlt2_Bu2K1plusTauMu_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) mu+ + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1130,7 +1126,7 @@ def Hlt2_Bu2K1plusTauMu_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) mu- + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1155,7 +1151,7 @@ def Hlt2_Bu2K1plusTauE_OS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) e- + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) e+ + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1180,7 +1176,7 @@ def Hlt2_Bu2K1plusTauE_SS_ExclusiveLine(
         persistreco=True):
     """
     HLT2 line for B+ -> (K1+->pi+pi+pi-) (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for B+ -> (K1+->pi+pi+pi-) (tau-->pi-pi-pi+) e- + CC
     """
     k1 = builder.make_rd_detached_k1s()
@@ -1502,11 +1498,11 @@ def Hlt2_Bs2EtapTauE_SS_ExclusiveLine(
 ## Lb -> K p tau l
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauTau_OS_ExclusiveLine(
-        name='Hlt2RD_LbToKpTauTau_TauTo3Pi_OS', prescale=1, persistreco=True):
+def Hlt2_Lambdab2PKTauTau_OS_ExclusiveLine(
+        name='Hlt2RD_LbToPKTauTau_TauTo3Pi_OS', prescale=1, persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) (tau+->pi+pi+pi-) + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1525,11 +1521,11 @@ def Hlt2_Lambdab2KpTauTau_OS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauTau_SS_ExclusiveLine(
-        name='Hlt2RD_LbToKpTauTau_TauTo3Pi_SS', prescale=1, persistreco=True):
+def Hlt2_Lambdab2PKTauTau_SS_ExclusiveLine(
+        name='Hlt2RD_LbToPKTauTau_TauTo3Pi_SS', prescale=1, persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) (tau-->pi-pi-pi+) + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1548,11 +1544,11 @@ def Hlt2_Lambdab2KpTauTau_SS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauMu_OS_ExclusiveLine(
-        name='Hlt2RD_LbToKpTauMu_TauTo3Pi_OS', prescale=1, persistreco=True):
+def Hlt2_Lambdab2PKTauMu_OS_ExclusiveLine(
+        name='Hlt2RD_LbToPKTauMu_TauTo3Pi_OS', prescale=1, persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) mu- + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) mu+ + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1571,11 +1567,11 @@ def Hlt2_Lambdab2KpTauMu_OS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauMu_SS_ExclusiveLine(
-        name='Hlt2RD_LbToKpTauMu_TauTo3Pi_SS', prescale=1, persistreco=True):
+def Hlt2_Lambdab2PKTauMu_SS_ExclusiveLine(
+        name='Hlt2RD_LbToPKTauMu_TauTo3Pi_SS', prescale=1, persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) mu+ + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) mu- + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1594,12 +1590,12 @@ def Hlt2_Lambdab2KpTauMu_SS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauE_OS_ExclusiveLine(name='Hlt2RD_LbToKpTauE_TauTo3Pi_OS',
+def Hlt2_Lambdab2PKTauE_OS_ExclusiveLine(name='Hlt2RD_LbToPKTauE_TauTo3Pi_OS',
                                          prescale=1,
                                          persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) e- + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) e+ + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1618,12 +1614,12 @@ def Hlt2_Lambdab2KpTauE_OS_ExclusiveLine(name='Hlt2RD_LbToKpTauE_TauTo3Pi_OS',
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2KpTauE_SS_ExclusiveLine(name='Hlt2RD_LbToKpTauE_TauTo3Pi_SS',
+def Hlt2_Lambdab2PKTauE_SS_ExclusiveLine(name='Hlt2RD_LbToPKTauE_TauTo3Pi_SS',
                                          prescale=1,
                                          persistreco=True):
     """
     HLT2 line for Lb -> p K- (tau+->pi+pi+pi-) e+ + CC
-
+    
           and for Lb -> p K- (tau-->pi-pi-pi+) e- + CC
     """
     lst = builder.make_dihadron_from_pK()
@@ -1643,13 +1639,13 @@ def Hlt2_Lambdab2KpTauE_SS_ExclusiveLine(name='Hlt2RD_LbToKpTauE_TauTo3Pi_SS',
 ## Lambda_b -> Lambda (LL) tau l
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauTau_OS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauTau_LambdaToPiP_TauTo3Pi_OS',
+def Hlt2_Lambdab2LambdaTauTau_LL_OS_ExclusiveLine(
+        name="Hlt2RD_LbToLambdaTauTau_LambdaLLToPPi_TauTo3Pi_OS",
         prescale=1,
         persistreco=True):
     """
     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 = common_builder.make_rd_lambda_lls(
@@ -1669,13 +1665,13 @@ def Hlt2_Lambdab2LambdaTauTau_OS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauTau_SS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauTau_LambdaToPiP_TauTo3Pi_SS',
+def Hlt2_Lambdab2LambdaTauTau_LL_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauTau_LambdaLLToPPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
     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 = common_builder.make_rd_lambda_lls(
@@ -1695,13 +1691,13 @@ def Hlt2_Lambdab2LambdaTauTau_SS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauMu_OS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauMu_LambdaToPiP_TauTo3Pi_OS',
+def Hlt2_Lambdab2LambdaTauMu_LL_OS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauMu_LambdaLLToPPi_TauTo3Pi_OS',
         prescale=1,
         persistreco=True):
     """
     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 = common_builder.make_rd_lambda_lls(
@@ -1721,13 +1717,13 @@ def Hlt2_Lambdab2LambdaTauMu_OS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauMu_SS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauMu_LambdaToPiP_TauTo3Pi_SS',
+def Hlt2_Lambdab2LambdaTauMu_LL_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauMu_LambdaLLToPPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
     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 = common_builder.make_rd_lambda_lls(
@@ -1747,8 +1743,8 @@ def Hlt2_Lambdab2LambdaTauMu_SS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauE_OS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauE_LambdaToPiP_TauTo3Pi_OS',
+def Hlt2_Lambdab2LambdaTauE_LL_OS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauE_LambdaLLToPPi_TauTo3Pi_OS',
         prescale=1,
         persistreco=True):
     """
@@ -1773,8 +1769,8 @@ def Hlt2_Lambdab2LambdaTauE_OS_ExclusiveLine(
 
 @register_line_builder(hlt2_lines)
 @configurable
-def Hlt2_Lambdab2LambdaTauE_SS_ExclusiveLine(
-        name='Hlt2RD_LbToLambdaTauE_LambdaToPiP_TauTo3Pi_SS',
+def Hlt2_Lambdab2LambdaTauE_LL_SS_ExclusiveLine(
+        name='Hlt2RD_LbToLambdaTauE_LambdaLLToPPi_TauTo3Pi_SS',
         prescale=1,
         persistreco=True):
     """
diff --git a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_spruce.py b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_spruce.py
index 1f29d332ce2f95301b36239682b68207e8c8b45c..dbc77fd22df82520a65b304276ecb04cace47b10 100644
--- a/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_spruce.py
+++ b/Hlt/Hlt2Conf/python/Hlt2Conf/lines/rd/b_to_xtaul_spruce.py
@@ -8,10 +8,10 @@
 # granted to it by virtue of its status as an Intergovernmental Organization  #
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
-'''                                                                                                
+'''                                                                                       
 Author: Tommaso Fulghesu
 Contact: tommaso.fulghesu@cern.ch
-Date: 07/12/2021                                                                                    
+Date: 07/12/2021                                                        
 '''
 
 ######################################################################################
@@ -408,7 +408,7 @@ def Spruce_Bd2PhiTauE_SS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauTau_OS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauTau_Rho2PiPi_TauTo3Pi_OS', prescale=1):
+        name='SpruceRD_BdToRhoTauTau_RhoToPiPi_TauTo3Pi_OS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) (tau-->pi-pi-pi+) + CC
     
@@ -430,7 +430,7 @@ def Spruce_Bd2RhoTauTau_OS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauTau_SS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauTau_Rho2PiPi_TauTo3Pi_SS', prescale=1):
+        name='SpruceRD_BdToRhoTauTau_RhoToPiPi_TauTo3Pi_SS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) (tau+->pi+pi+pi-) + CC
     
@@ -452,7 +452,7 @@ def Spruce_Bd2RhoTauTau_SS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauMu_OS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauMu_Rho2PiPi_TauTo3Pi_OS', prescale=1):
+        name='SpruceRD_BdToRhoTauMu_RhoToPiPi_TauTo3Pi_OS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) mu- + CC
     
@@ -474,7 +474,7 @@ def Spruce_Bd2RhoTauMu_OS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauMu_SS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauMu_Rho2PiPi_TauTo3Pi_SS', prescale=1):
+        name='SpruceRD_BdToRhoTauMu_RhoToPiPi_TauTo3Pi_SS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) mu+ + CC
     
@@ -496,7 +496,7 @@ def Spruce_Bd2RhoTauMu_SS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauE_OS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauE_Rho2PiPi_TauTo3Pi_OS', prescale=1):
+        name='SpruceRD_BdToRhoTauE_RhoToPiPi_TauTo3Pi_OS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) e- + CC
     
@@ -518,7 +518,7 @@ def Spruce_Bd2RhoTauE_OS_ExclusiveLine(
 @register_line_builder(sprucing_lines)
 @configurable
 def Spruce_Bd2RhoTauE_SS_ExclusiveLine(
-        name='SpruceRD_BdToRhoTauE_Rho2PiPi_TauTo3Pi_SS', prescale=1):
+        name='SpruceRD_BdToRhoTauE_RhoToPiPi_TauTo3Pi_SS', prescale=1):
     """
     Sprucing line for Bd -> (rho->pi+ pi-) (tau+->pi+pi+pi-) e+ + CC
     
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 bc36631a515cc95dcf9be1362e7c704ee4e684bc..bc0ace3e5cb98f85689f1e09877ccea2c137fbaf 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
@@ -312,3 +312,26 @@ def make_beauty2xtaul(particles,
         DecayDescriptor=descriptors,
         CombinationCut=combination_code,
         CompositeCut=vertex_code)
+
+
+def filter_BToTauTau(
+        ditaus=make_dilepton_from_tauls(parent_id="B_s0", daughter_id="tau+"),
+        name="filter_RD_B2tautau",
+        m_min=2 * GeV,
+        m_max=7 * GeV,
+        p_min=3 * GeV,
+        pt_min=1 * GeV,
+        bpvdira_min=0.995,
+        bpvfdchi2_min=225,
+        bpvipchi2_max=50,
+        chi2_max=90,
+        bpvfd_max=90 * mm):
+    pvs = make_pvs()
+    code = require_all(
+        in_range(m_min, F.MASS, m_max), F.P > p_min, F.PT > pt_min,
+        F.BPVDIRA(pvs) > bpvdira_min,
+        F.BPVFDCHI2(pvs) > bpvfdchi2_min,
+        F.BPVIPCHI2(pvs) < bpvipchi2_max,
+        F.CHI2() < chi2_max,
+        F.BPVFD(pvs) < bpvfd_max)
+    return ParticleFilter(ditaus, F.FILTER(code), name=name)