From f7957c00fdc84ef556f50d21eb4b2c6532d47e8b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais?= <adrian.casais@rai.usc.es>
Date: Mon, 3 Jul 2023 16:57:30 +0200
Subject: [PATCH 01/18] Format first

---
 .../StrippingRD/StrippingDarkBoson.py         | 1694 ++++++++++-------
 1 file changed, 966 insertions(+), 728 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 536db561b..4cea3e650 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -8,17 +8,17 @@
 # granted to it by virtue of its status as an Intergovernmental Organization  #
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-'''
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+"""
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
 Author: M. Williams, D. Craik
-'''
-__author__ = ['Mike Williams', 'Dan Craik']
+"""
+__author__ = ["Mike Williams", "Dan Craik"]
 
-moduleName = 'DarkBoson'
+moduleName = "DarkBoson"
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
 import re
 from Gaudi.Configuration import *
@@ -29,913 +29,1151 @@ from PhysSelPython.Wrappers import EventSelection
 from StrippingConf.StrippingLine import StrippingLine
 from StrippingUtils.Utils import LineBuilder
 from Configurables import LoKi__VoidFilter
-from StandardParticles import StdAllNoPIDsPions, StdAllNoPIDsKaons, \
-     StdAllNoPIDsProtons, StdNoPIDsUpPions, StdAllLooseMuons, \
-     StdLooseDownMuons
+from StandardParticles import (
+    StdAllNoPIDsPions,
+    StdAllNoPIDsKaons,
+    StdAllNoPIDsProtons,
+    StdNoPIDsUpPions,
+    StdAllLooseMuons,
+    StdLooseDownMuons,
+)
 from Beauty2Charm_LoKiCuts import LoKiCuts
-from StandardParticles import StdAllLooseGammaLL, StdAllLooseGammaDD, \
-    StdAllLooseElectrons, StdLooseAllPhotons#, StdDiElectronFromTracks
+from StandardParticles import (
+    StdAllLooseGammaLL,
+    StdAllLooseGammaDD,
+    StdAllLooseElectrons,
+    StdLooseAllPhotons,
+)  # , StdDiElectronFromTracks
 from Configurables import SubstitutePID
 from copy import deepcopy
 from CommonParticles.Utils import *
-from Configurables import DiElectronMaker,ProtoParticleCALOFilter
+from Configurables import DiElectronMaker, ProtoParticleCALOFilter
 from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
 # Default configuration dictionary
 default_config = {
-    'NAME' : 'DarkBoson',
-    'BUILDERTYPE' : 'DarkBosonConf' ,
-    'STREAMS' : {
-        'Bhadron' : [
-           'StrippingB2KX2KKPiDarkBosonLine',
-           'StrippingB2KpiX2KKPiDarkBosonLine',
-           'StrippingB2KX2KKPiMDarkBosonLine',
-           'StrippingB2KpiX2KKPiMDarkBosonLine',
-           'StrippingB2KX2PiPiPiDarkBosonLine',
-           'StrippingB2KpiX2PiPiPiDarkBosonLine',
-           'StrippingB2KX2PiPiPiMDarkBosonLine',
-           'StrippingB2KpiX2PiPiPiMDarkBosonLine',
-           'StrippingB2KX2EtaPiPi23PIDarkBosonLine',
-           'StrippingB2KpiX2EtaPiPi23PIDarkBosonLine',
-           'StrippingB2KX2EtaPiPi2GGDarkBosonLine',
-           'StrippingB2KpiX2EtaPiPi2GGDarkBosonLine',
-           'StrippingB2KX24PiDarkBosonLine',
-           'StrippingB2KpiX24PiDarkBosonLine',
-           'StrippingB2KX26PiDarkBosonLine',
-           'StrippingB2KpiX26PiDarkBosonLine',
-           'StrippingB2KX22K2PiDarkBosonLine',
-           'StrippingB2KpiX22K2PiDarkBosonLine',
-           'StrippingB2KX24KDarkBosonLine',
-           'StrippingB2KpiX24KDarkBosonLine',
-           ],
-        'Dimuon' : [
-           'StrippingB2KpiX2MuMuDDDarkBosonLine',
-           'StrippingB2KpiX2MuMuDDSSDarkBosonLine',
-           #'StrippingB2KKX2MuMuDDDarkBosonLine',
-           #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
-           'StrippingB2KX2MuMuDDDarkBosonLine',
-           'StrippingB2KX2MuMuDDSSDarkBosonLine',
-           #'StrippingB2KpiX2PiPiDDDarkBosonLine',
-           #'StrippingB2KKX2PiPiDDDarkBosonLine',
-           #'StrippingB2KX2PiPiDDDarkBosonLine',
-           #'StrippingB2KX2PiPiDDSSDarkBosonLine',
-           #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-           #'StrippingB2KpiX2KKDDDarkBosonLine',
-           #'StrippingB2KKX2KKDDDarkBosonLine',
-           #'StrippingB2KX2KKDDDarkBosonLine',
-           #'StrippingB2KX2KKDDSSDarkBosonLine',
-           ],
-        'Leptonic' : [
-           'StrippingB2KpiX2MuMuDarkBosonLine',
-           'StrippingB2KpiX2MuMuSSDarkBosonLine',
-           #'StrippingB2KKX2MuMuDarkBosonLine',
-           #'StrippingB2KKX2MuMuSSDarkBosonLine',
-           'StrippingB2KX2MuMuDarkBosonLine',
-           'StrippingB2KX2MuMuSSDarkBosonLine',
-           'StrippingB2KpiX2PiPiDarkBosonLine',
-           #'StrippingB2KKX2PiPiDarkBosonLine',
-           'StrippingB2KX2PiPiDarkBosonLine',
-           'StrippingB2KX2PiPiSSDarkBosonLine',
-           #'StrippingB2RhoX2MuMuDarkBosonLine',
-           'StrippingB2KpiX2KKDarkBosonLine',
-           #'StrippingB2KKX2KKDarkBosonLine',
-           'StrippingB2KX2KKDarkBosonLine',
-           'StrippingB2KX2KKSSDarkBosonLine',
-           'StrippingB2KpiX2EEDarkBosonLine',
-           'StrippingB2KpiX2EESSDarkBosonLine',
-           #'StrippingB2KKX2EEDarkBosonLine',
-           #'StrippingB2KKX2EESSDarkBosonLine',
-           'StrippingB2KX2EEDarkBosonLine',
-           'StrippingB2KX2EESSDarkBosonLine',
-           'StrippingB2JKDarkBosonLine',
-           'StrippingB2JKstDarkBosonLine',
-           'StrippingB2KstX2GammaGammaDarkBosonLine',
-           'StrippingB2KstX2PiGammaDarkBosonLine',
-           'StrippingB2KstX2PiGammaMDarkBosonLine',
-           ]
+    "NAME": "DarkBoson",
+    "BUILDERTYPE": "DarkBosonConf",
+    "STREAMS": {
+        "Bhadron": [
+            "StrippingB2KX2KKPiDarkBosonLine",
+            "StrippingB2KpiX2KKPiDarkBosonLine",
+            "StrippingB2KX2KKPiMDarkBosonLine",
+            "StrippingB2KpiX2KKPiMDarkBosonLine",
+            "StrippingB2KX2PiPiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiPiDarkBosonLine",
+            "StrippingB2KX2PiPiPiMDarkBosonLine",
+            "StrippingB2KpiX2PiPiPiMDarkBosonLine",
+            "StrippingB2KX2EtaPiPi23PIDarkBosonLine",
+            "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine",
+            "StrippingB2KX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KX24PiDarkBosonLine",
+            "StrippingB2KpiX24PiDarkBosonLine",
+            "StrippingB2KX26PiDarkBosonLine",
+            "StrippingB2KpiX26PiDarkBosonLine",
+            "StrippingB2KX22K2PiDarkBosonLine",
+            "StrippingB2KpiX22K2PiDarkBosonLine",
+            "StrippingB2KX24KDarkBosonLine",
+            "StrippingB2KpiX24KDarkBosonLine",
+        ],
+        "Dimuon": [
+            "StrippingB2KpiX2MuMuDDDarkBosonLine",
+            "StrippingB2KpiX2MuMuDDSSDarkBosonLine",
+            #'StrippingB2KKX2MuMuDDDarkBosonLine',
+            #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
+            "StrippingB2KX2MuMuDDDarkBosonLine",
+            "StrippingB2KX2MuMuDDSSDarkBosonLine",
+            #'StrippingB2KpiX2PiPiDDDarkBosonLine',
+            #'StrippingB2KKX2PiPiDDDarkBosonLine',
+            #'StrippingB2KX2PiPiDDDarkBosonLine',
+            #'StrippingB2KX2PiPiDDSSDarkBosonLine',
+            #'StrippingB2RhoX2MuMuDDDarkBosonLine',
+            #'StrippingB2KpiX2KKDDDarkBosonLine',
+            #'StrippingB2KKX2KKDDDarkBosonLine',
+            #'StrippingB2KX2KKDDDarkBosonLine',
+            #'StrippingB2KX2KKDDSSDarkBosonLine',
+        ],
+        "Leptonic": [
+            "StrippingB2KpiX2MuMuDarkBosonLine",
+            "StrippingB2KpiX2MuMuSSDarkBosonLine",
+            #'StrippingB2KKX2MuMuDarkBosonLine',
+            #'StrippingB2KKX2MuMuSSDarkBosonLine',
+            "StrippingB2KX2MuMuDarkBosonLine",
+            "StrippingB2KX2MuMuSSDarkBosonLine",
+            "StrippingB2KpiX2PiPiDarkBosonLine",
+            #'StrippingB2KKX2PiPiDarkBosonLine',
+            "StrippingB2KX2PiPiDarkBosonLine",
+            "StrippingB2KX2PiPiSSDarkBosonLine",
+            #'StrippingB2RhoX2MuMuDarkBosonLine',
+            "StrippingB2KpiX2KKDarkBosonLine",
+            #'StrippingB2KKX2KKDarkBosonLine',
+            "StrippingB2KX2KKDarkBosonLine",
+            "StrippingB2KX2KKSSDarkBosonLine",
+            "StrippingB2KpiX2EEDarkBosonLine",
+            "StrippingB2KpiX2EESSDarkBosonLine",
+            #'StrippingB2KKX2EEDarkBosonLine',
+            #'StrippingB2KKX2EESSDarkBosonLine',
+            "StrippingB2KX2EEDarkBosonLine",
+            "StrippingB2KX2EESSDarkBosonLine",
+            "StrippingB2JKDarkBosonLine",
+            "StrippingB2JKstDarkBosonLine",
+            "StrippingB2KstX2GammaGammaDarkBosonLine",
+            "StrippingB2KstX2PiGammaDarkBosonLine",
+            "StrippingB2KstX2PiGammaMDarkBosonLine",
+        ],
     },
-    'WGs'     : [ 'RD' ],
-    'CONFIG'  : {
-    "KB" : { # K directly from B
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '2000*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1,
+    "WGs": ["RD"],
+    "CONFIG": {
+        "KB": {  # K directly from B
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "2000*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "KBhard": {  # K directly from B only for B -> KS0(pipi) K
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 36,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.2,
+        },
+        "PiB": {  # pi directly from B
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "2000*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.2,
+        },
+        "KX": {  # K from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "PiX": {  # pi from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 36,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.2,
+        },
+        "KDX": {  # K DOWN from X
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "PiDX": {  # pi DOWN from X
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.1,
+        },
+        "MuX": {  # muon from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "100*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PIDmu_MIN": -5,
+        },
+        "MuJ": {  # muon from J/psi
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PIDmu_MIN": -4,
+        },
+        "E": {  # electron cuts
+            "TRCHI2DOF_MAX": 5,
+            "MIPCHI2DV_MIN": 9,
+            "PT_MIN": "100*MeV",
+            "TRGHP_MAX": 0.4,
+            "PIDe_MIN": 0,
+        },
+        "gX": {  # gamma from X
+            "PT_MIN": "500*MeV",
+            "P_MIN": "1000*MeV",
+            "CL_MIN": "0.3",
+        },
+        "etaX": {  # eta->gg from X
+            "MM_MIN": "450*MeV",
+            "MM_MAX": "650*MeV",
+            "PT_MIN": "500*MeV",
+            "P_MIN": "2000*MeV",
+            "CL_MIN": "0.2",
+        },
+        "pizMX": {  # merged pi0 from X
+            "PT_MIN": "500*MeV",
+            "P_MIN": "3000*MeV",
+            "CL_MIN": "0.1",
+        },
+        "pizRX": {  # resolved pi0 from X
+            "PT_MIN": "500*MeV",
+            "CL_MIN": "0.1",
+        },
+        "XLL": {  # making the X for LL
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+        },
+        "XLLhard": {  # making the X for LL hard vertex for the pions
+            "VCHI2DOF_MAX": 5,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+        },
+        "XDD": {  # making X for DD
+            "VCHI2DOF_MAX": 15,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "0*MeV",
+        },
+        "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
+        "X3H": {  # making the X for 3H decays
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "500*MeV",
+            "SUMPT_MIN": "0*MeV",
+            "HAD_MINIPCHI2_MIN": 16,
+        },
+        "XETAHH": {  # making the X for eta pipi decays
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "2000*MeV",
+            "SUMPT_MIN": "0*MeV",
+            "HAD_MINIPCHI2_MIN": 16,
+        },
+        "J": {  # cuts on J/psi
+            "VCHI2DOF_MAX": 12,
+            "ADAMASS_MAX": "100*MeV",
+        },
+        "B2KX": {  # B -> K X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+            "PT_MIN": "1000*MeV",
+        },
+        "B2KXTight": {  # B -> K X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+            "PT_MIN": "3000*MeV",
+        },
+        "B2HHX": {  # B -> Kpi X, KK X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 9,
+            "PT_MIN": "1000*MeV",
+        },
+        "B2HHXTight": {  # B -> Kpi X, KK X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 9,
+            "PT_MIN": "3000*MeV",
+        },
+        "B2KstX_X2neutrals": {  # B -> Kpi X, X -> gg, gpi0
+            "SUMPT_MIN": "0*MeV",
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            #'BPVDIRA_MIN'   : 0.999,
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "PT_MIN": "3000*MeV",
+        },
+        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25},
+        "GECNTrkMax": 250,
+        "CommonRelInfoTools": [
+            {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"},
+            {"Type": "RelInfoVertexIsolationBDT", "Location": "VtxIsoInfoBDT"},
+            {
+                "Type": "RelInfoBs2MuMuBIsolations",
+                "Variables": [],
+                "Location": "BsMuMuBIsolation",
+                "tracktype": 3,
+                "makeTrackCuts": False,
+            },
+        ],
     },
-    "KBhard" : { # K directly from B only for B -> KS0(pipi) K
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 36,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.2,
-    },
-    "PiB" : { # pi directly from B
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '2000*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.2
-    },
-    "KX" : { # K from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1
-    },
-    "PiX" : { # pi from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 36,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.2
-    },
-    "KDX" : { # K DOWN from X
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1
-    },
-    "PiDX" : { # pi DOWN from X
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.1
-    },
-    "MuX" : { # muon from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '100*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PIDmu_MIN'     : -5
-    },
-    "MuJ" : { # muon from J/psi
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PIDmu_MIN'     : -4
-    },
-    "E" : { # electron cuts
-    'TRCHI2DOF_MAX' : 5,
-    'MIPCHI2DV_MIN' : 9,
-    'PT_MIN'        : '100*MeV',
-    'TRGHP_MAX'     : 0.4,
-    'PIDe_MIN'      : 0
-    },
-    "gX" : { # gamma from X
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '1000*MeV',
-    'CL_MIN'        : '0.3',
-    },
-    "etaX" : { # eta->gg from X
-    'MM_MIN'        : '450*MeV',
-    'MM_MAX'        : '650*MeV',
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '2000*MeV',
-    'CL_MIN'        : '0.2',
-    },
-    "pizMX" : { # merged pi0 from X
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '3000*MeV',
-    'CL_MIN'        : '0.1',
-    },
-    "pizRX" : { # resolved pi0 from X
-    'PT_MIN'        : '500*MeV',
-    'CL_MIN'        : '0.1',
-    },
-    "XLL" : { # making the X for LL
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '250*MeV'
-    },
-    "XLLhard" : { # making the X for LL hard vertex for the pions
-    'VCHI2DOF_MAX'  : 5,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '250*MeV'
-    },
-    "XDD" : { # making X for DD
-    'VCHI2DOF_MAX'  : 15,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '0*MeV'
-    },
-    "XGG" : { # making the X for diphoton
-    'PT_MIN'        : '2000*MeV'
-    },
-    "X3H" : { # making the X for 3H decays
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '500*MeV',
-    'SUMPT_MIN'     : '0*MeV',
-    'HAD_MINIPCHI2_MIN' : 16,
-    },
-    "XETAHH" : { # making the X for eta pipi decays
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '2000*MeV',
-    'SUMPT_MIN'     : '0*MeV',
-    'HAD_MINIPCHI2_MIN' : 16,
-    },
-    "J" : { # cuts on J/psi
-    'VCHI2DOF_MAX'  : 12,
-    'ADAMASS_MAX'   : '100*MeV',
-    },
-    "B2KX" : { # B -> K X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 25,
-    'PT_MIN'        : '1000*MeV'
-    },
-    "B2KXTight" : { # B -> K X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 25,
-    'PT_MIN'        : '3000*MeV'
-    },
-    "B2HHX" : { # B -> Kpi X, KK X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 9,
-    'PT_MIN'        : '1000*MeV'
-    },
-    "B2HHXTight" : { # B -> Kpi X, KK X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 9,
-    'PT_MIN'        : '3000*MeV'
-    },
-    "B2KstX_X2neutrals" : { # B -> Kpi X, X -> gg, gpi0
-    'SUMPT_MIN'     : '0*MeV',
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    #'BPVDIRA_MIN'   : 0.999,
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'PT_MIN'        : '3000*MeV'
-    },
-    "Prescales" : { "SS" : 0.1, "DD" : 1.0, "KK": 0.25},
-    "GECNTrkMax" : 250,
-    "CommonRelInfoTools" : [ { "Type": "RelInfoVertexIsolation", "Location":"VtxIsoInfo" },
-                             { "Type": "RelInfoVertexIsolationBDT", "Location":"VtxIsoInfoBDT" },
-                             { "Type" : "RelInfoBs2MuMuBIsolations",
-                               "Variables" : [],
-                               "Location"  : "BsMuMuBIsolation",
-                               "tracktype" : 3,
-                               "makeTrackCuts" : False, },
-                             ]
-    }
 }
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-class DarkBosonConf(LineBuilder):
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-    __configuration_keys__ = default_config['CONFIG'].keys()
 
-    def __init__(self, moduleName, default_config) :
+class DarkBosonConf(LineBuilder):
+    __configuration_keys__ = default_config["CONFIG"].keys()
 
+    def __init__(self, moduleName, default_config):
         LineBuilder.__init__(self, moduleName, default_config)
         piD = DataOnDemand(Location="Phys/StdNoPIDsDownPions/Particles")
         kD = DataOnDemand(Location="Phys/StdLooseDownKaons/Particles")
         pizM = DataOnDemand(Location="Phys/StdLooseMergedPi0/Particles")
         pizR = DataOnDemand(Location="Phys/StdLooseResolvedPi0/Particles")
         eta = DataOnDemand(Location="Phys/StdLooseResolvedEta/Particles")
-        gC = MergedSelection("gC",RequiredSelections=[StdAllLooseGammaLL,StdAllLooseGammaDD])
+        gC = MergedSelection(
+            "gC", RequiredSelections=[StdAllLooseGammaLL, StdAllLooseGammaDD]
+        )
 
         # pre-filter inputs
-        kB = filterInputs('KB',default_config['KB'],[StdAllNoPIDsKaons])
-        kBhard = filterInputs('KBhard',default_config['KBhard'],[StdAllNoPIDsKaons])
-        piB = filterInputs('PiB',default_config['PiB'],[StdAllNoPIDsPions])
-        kX = filterInputs('KX',default_config['KX'],[StdAllNoPIDsKaons])
-        piX = filterInputs('PiX',default_config['PiX'],[StdAllNoPIDsPions])
-        kDX = filterInputs('KDX',default_config['KDX'],[kD])
-        piDX = filterInputs('PiDX',default_config['PiDX'],[piD])
-        muX = filterInputs('MuX',default_config['MuX'],[StdAllLooseMuons])
-        muDX = filterInputs('MuDX',default_config['MuX'],[StdLooseDownMuons])
-        muJ = filterInputs('MuJ',default_config['MuJ'],[StdAllLooseMuons])
-
-        gX = filterInputs('gX',default_config['gX'],[StdLooseAllPhotons])
-        pizMX = filterInputs('pizMX',default_config['pizMX'],[pizM])
-        pizRX = filterInputs('pizRX',default_config['pizRX'],[pizR])
-        etaX = filterInputs('etaX',default_config['etaX'],[eta])
-
-        eta23piX = makeEta([piX,pizRX],"ForX")
+        kB = filterInputs("KB", default_config["KB"], [StdAllNoPIDsKaons])
+        kBhard = filterInputs("KBhard", default_config["KBhard"], [StdAllNoPIDsKaons])
+        piB = filterInputs("PiB", default_config["PiB"], [StdAllNoPIDsPions])
+        kX = filterInputs("KX", default_config["KX"], [StdAllNoPIDsKaons])
+        piX = filterInputs("PiX", default_config["PiX"], [StdAllNoPIDsPions])
+        kDX = filterInputs("KDX", default_config["KDX"], [kD])
+        piDX = filterInputs("PiDX", default_config["PiDX"], [piD])
+        muX = filterInputs("MuX", default_config["MuX"], [StdAllLooseMuons])
+        muDX = filterInputs("MuDX", default_config["MuX"], [StdLooseDownMuons])
+        muJ = filterInputs("MuJ", default_config["MuJ"], [StdAllLooseMuons])
+
+        gX = filterInputs("gX", default_config["gX"], [StdLooseAllPhotons])
+        pizMX = filterInputs("pizMX", default_config["pizMX"], [pizM])
+        pizRX = filterInputs("pizRX", default_config["pizRX"], [pizR])
+        etaX = filterInputs("etaX", default_config["etaX"], [eta])
+
+        eta23piX = makeEta([piX, pizRX], "ForX")
 
         # make/filter X
-        eestd = DataOnDemand(Location='Phys/StdDiElectronFromTracks/Particles')
-        ee = filterEE('OS',default_config['E'],default_config['XLL'],[eestd])
-        #eeDD = makeEEdd(config)
-        mmX = makeX('MuMu',default_config['XLL'],'KS0 -> mu+ mu-',[muX])
-        mmDDX = makeX('MuMuDD',default_config['XDD'],'KS0 -> mu+ mu-',[muDX])
-        kkX = makeX('KK',default_config['XLL'],'KS0 -> K+ K-',[kX])
-        kkDDX = makeX('KKDD',default_config['XDD'],'KS0 -> K+ K-',[kDX])
-        pipiX = makeX('PiPi',default_config['XLLhard'],'KS0 -> pi+ pi-',[piX])
-        pipiDDX = makeX('PiPiDD',default_config['XDD'],'KS0 -> pi+ pi-',[piDX])
+        eestd = DataOnDemand(Location="Phys/StdDiElectronFromTracks/Particles")
+        ee = filterEE("OS", default_config["E"], default_config["XLL"], [eestd])
+        # eeDD = makeEEdd(config)
+        mmX = makeX("MuMu", default_config["XLL"], "KS0 -> mu+ mu-", [muX])
+        mmDDX = makeX("MuMuDD", default_config["XDD"], "KS0 -> mu+ mu-", [muDX])
+        kkX = makeX("KK", default_config["XLL"], "KS0 -> K+ K-", [kX])
+        kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX])
+        pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX])
+        pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX])
         ## 4-6H modes
-        fourpiX = makeX('4Pi',  default_config['XLL'],'KS0 -> pi+ pi+ pi- pi-',[piX])
-        sixpiX  = makeX('6Pi',  default_config['XLL'],'KS0 -> pi+ pi+ pi- pi- pi0 pi0',[piX,pizRX])
-        KKpipiX = makeX('2K2Pi',default_config['XLL'],'KS0 -> K+ K- pi+ pi-',[kX,piX])
-        fourKX  = makeX('4K',   default_config['XLL'],'KS0 -> K+ K+ K- K-',[kX])
+        fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX])
+        sixpiX = makeX(
+            "6Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi- pi0 pi0", [piX, pizRX]
+        )
+        KKpipiX = makeX(
+            "2K2Pi", default_config["XLL"], "KS0 -> K+ K- pi+ pi-", [kX, piX]
+        )
+        fourKX = makeX("4K", default_config["XLL"], "KS0 -> K+ K+ K- K-", [kX])
         ## gamma modes
-        ggX   = makeX2neutrals('GammaGamma',default_config['XGG'],'pi0 -> gamma gamma',[gX])
-        pigX  = makeX2neutrals('PiGamma',   default_config['XGG'],'eta -> pi0 gamma',[gX,pizRX])
-        pigMX = makeX2neutrals('PiGammaM',  default_config['XGG'],'eta -> pi0 gamma',[gX,pizMX])
+        ggX = makeX2neutrals(
+            "GammaGamma", default_config["XGG"], "pi0 -> gamma gamma", [gX]
+        )
+        pigX = makeX2neutrals(
+            "PiGamma", default_config["XGG"], "eta -> pi0 gamma", [gX, pizRX]
+        )
+        pigMX = makeX2neutrals(
+            "PiGammaM", default_config["XGG"], "eta -> pi0 gamma", [gX, pizMX]
+        )
         ##HHH modes
-        kkpiX       = makeX('KKPi',       default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizRX])
-        kkpiMX      = makeX('KKPiM',      default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizMX])
-        pipipiX     = makeX('PiPiPi',     default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizRX])
-        pipipiMX    = makeX('PiPiPiM',    default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizMX])
-        #kkpiDDX     = makeX('KKPiDD',     default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX])
-        #kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
-        #pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
-        #pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
-        etapipiGGX  = makeX('EtaPiPi2GG', default_config['XETAHH'],'KS0 -> eta pi+ pi-',[etaX,piX])
-        etapipi3PIX = makeX('EtaPiPi23PI',default_config['XETAHH'],'KS0 -> eta pi+ pi-',[eta23piX,piX])
+        kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX])
+        kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX])
+        pipipiX = makeX(
+            "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX]
+        )
+        pipipiMX = makeX(
+            "PiPiPiM", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizMX]
+        )
+        # kkpiDDX     = makeX('KKPiDD',     default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX])
+        # kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
+        # pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
+        # pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
+        etapipiGGX = makeX(
+            "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX]
+        )
+        etapipi3PIX = makeX(
+            "EtaPiPi23PI",
+            default_config["XETAHH"],
+            "KS0 -> eta pi+ pi-",
+            [eta23piX, piX],
+        )
 
         # SS X
-        eeSS = filterEE('SS',default_config['E'],default_config['XLL'],[makeEESS()])
-        mmSSX = makeX('MuMuSS',default_config['XLL'],'[KS0 -> mu+ mu+]cc',[muX])
-        mmSSDDX = makeX('MuMuSSDD',default_config['XDD'],'[KS0 -> mu+ mu+]cc',[muDX])
-        kkSSX = makeX('KKSS',default_config['XLL'],'[KS0 -> K+ K+]cc',[kX])
-        kkSSDDX = makeX('KKSSDD',default_config['XDD'],'[KS0 -> K+ K+]cc',[kDX])
-        pipiSSX = makeX('PiPiSS',default_config['XLL'],'[KS0 -> pi+ pi+]cc',[piX])
-        pipiSSDDX = makeX('PiPiSSDD',default_config['XDD'],'[KS0 -> pi+ pi+]cc',[piDX])
-        preSS = default_config['Prescales']['SS']
-
-        preDD = default_config['Prescales']['DD']
-        preKK = default_config['Prescales']['KK']
-
-        j = makeJ(default_config['J'],[muJ])
-        kpiB = makeKst([kB,piB])
+        eeSS = filterEE("SS", default_config["E"], default_config["XLL"], [makeEESS()])
+        mmSSX = makeX("MuMuSS", default_config["XLL"], "[KS0 -> mu+ mu+]cc", [muX])
+        mmSSDDX = makeX("MuMuSSDD", default_config["XDD"], "[KS0 -> mu+ mu+]cc", [muDX])
+        kkSSX = makeX("KKSS", default_config["XLL"], "[KS0 -> K+ K+]cc", [kX])
+        kkSSDDX = makeX("KKSSDD", default_config["XDD"], "[KS0 -> K+ K+]cc", [kDX])
+        pipiSSX = makeX("PiPiSS", default_config["XLL"], "[KS0 -> pi+ pi+]cc", [piX])
+        pipiSSDDX = makeX(
+            "PiPiSSDD", default_config["XDD"], "[KS0 -> pi+ pi+]cc", [piDX]
+        )
+        preSS = default_config["Prescales"]["SS"]
+
+        preDD = default_config["Prescales"]["DD"]
+        preKK = default_config["Prescales"]["KK"]
+
+        j = makeJ(default_config["J"], [muJ])
+        kpiB = makeKst([kB, piB])
 
         # B -> K pi lines
-        self._makeBLine('B2KpiX2MuMu',['[B0 -> KS0 K+ pi-]cc'],
-                        [mmX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2MuMuDD',['[B0 -> K+ pi- KS0]cc'],
-                        [mmDDX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2EE',['[B0 -> K+ pi- KS0]cc'],
-                        [ee,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2KK',['[B0 -> K+ pi- KS0]cc'],
-                        [kkX,kB,piB],default_config['B2HHX'],preKK)
-
-        #self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2MuMu",
+            ["[B0 -> KS0 K+ pi-]cc"],
+            [mmX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EE",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [ee, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2KK",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkX, kB, piB],
+            default_config["B2HHX"],
+            preKK,
+        )
+
+        # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
         #                [kkDDX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2KKPi',['[B0 -> K+ pi- KS0]cc'],
-                        [kkpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2KKPiM',['[B0 -> K+ pi- KS0]cc'],
-                        [kkpiMX,kB,piB],default_config['B2HHX'])
-
-        #self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2KKPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKPiM",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkpiMX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [kkpiDDX,kB,piB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'],
         #                [kkpiDDMX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2PiPi',['[B0 -> K+ pi- KS0]cc'],
-                        [pipiX,kB,piB],default_config['B2HHX'],preSS)
+        self._makeBLine(
+            "B2KpiX2PiPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
-        #self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [pipiDDX,kB,piB],default_config['B2HHX'],preDD)
 
-        self._makeBLine('B2KpiX2PiPiPi',['[B0 -> K+ pi- KS0]cc'],
-                        [pipipiX,kB,piB],default_config['B2HHXTight'])
-
-        self._makeBLine('B2KpiX2PiPiPiM',['[B0 -> K+ pi- KS0]cc'],
-                        [pipipiMX,kB,piB],default_config['B2HHX'])
-
-        #self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2PiPiPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipipiX, kB, piB],
+            default_config["B2HHXTight"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2PiPiPiM",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipipiMX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [pipipiDDX,kB,piB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'],
         #                [pipipiDDMX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2EtaPiPi2GG',['[B0 -> K+ pi- KS0]cc'],
-                        [etapipiGGX,kB,piB],default_config['B2HHXTight'])
-
-        self._makeBLine('B2KpiX2EtaPiPi23PI',['[B0 -> K+ pi- KS0]cc'],
-                        [etapipi3PIX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX24Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [fourpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX26Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [sixpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX22K2Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [KKpipiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX24K',['[B0 -> K+ pi- KS0]cc'],
-                        [fourKX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2MuMuSS',['[B0 -> K+ pi- KS0]cc'],
-                        [mmSSX,kB,piB],default_config['B2HHX'],preSS)
-
-        self._makeBLine('B2KpiX2MuMuDDSS',['[B0 -> K+ pi- KS0]cc'],
-                        [mmSSDDX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2EESS',['[B0 -> K+ pi- KS0]cc'],
-                        [eeSS,kB,piB],default_config['B2HHX'],preSS)
-
-        self._makeBLine('B2KstX2GammaGamma',['[B0 -> K*(892)0 pi0]cc'],
-                        [ggX,kpiB],default_config['B2KstX_X2neutrals'])
-
-        self._makeBLine('B2KstX2PiGamma',['[B0 -> K*(892)0 eta]cc'],
-                        [pigX,kpiB],default_config['B2KstX_X2neutrals'])
-
-        self._makeBLine('B2KstX2PiGammaM',['[B0 -> K*(892)0 eta]cc'],
-                        [pigMX,kpiB],default_config['B2KstX_X2neutrals'])
+        self._makeBLine(
+            "B2KpiX2EtaPiPi2GG",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [etapipiGGX, kB, piB],
+            default_config["B2HHXTight"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EtaPiPi23PI",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [etapipi3PIX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX24Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [fourpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX26Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [sixpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX22K2Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [KKpipiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX24K",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [fourKX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EESS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [eeSS, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KstX2GammaGamma",
+            ["[B0 -> K*(892)0 pi0]cc"],
+            [ggX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
+
+        self._makeBLine(
+            "B2KstX2PiGamma",
+            ["[B0 -> K*(892)0 eta]cc"],
+            [pigX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
+
+        self._makeBLine(
+            "B2KstX2PiGammaM",
+            ["[B0 -> K*(892)0 eta]cc"],
+            [pigMX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
 
         # B -> K K lines
-        #self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'],
         #                [mmX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'],
         #                [mmDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'],
         #                [ee,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'],
         #                [mmSSX,kB],default_config['B2HHX'],preSS)
 
-        #self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'],
         #                [mmSSDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'],
         #                [eeSS,kB],default_config['B2HHX'],preSS)
 
-        #self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'],
         #                [kkX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'],
         #                [kkDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'],
         #                [pipiX,kB],default_config['B2HHX'],preDD)
 
-        #self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'],
         #                [pipiDDX,kB],default_config['B2HHX'])
 
         # B -> K lines
-        self._makeBLine('B2KX2MuMu',['[B+ -> K+ KS0]cc'],
-                        [mmX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2MuMu", ["[B+ -> K+ KS0]cc"], [mmX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2MuMuDD',['[B+ -> K+ KS0]cc'],
-                        [mmDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2MuMuDD", ["[B+ -> K+ KS0]cc"], [mmDDX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2EE',['[B+ -> K+ KS0]cc'],
-                        [ee,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2EE", ["[B+ -> K+ KS0]cc"], [ee, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2KK',['[B+ -> K+ KS0]cc'],
-                        [kkX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
         #                [kkDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2KKPi',['[B+ -> K+ KS0]cc'],
-                        [kkpiX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2KKPiM',['[B+ -> K+ KS0]cc'],
-                        [kkpiMX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKPiM", ["[B+ -> K+ KS0]cc"], [kkpiMX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'],
         #                [kkpiDDX,kB],default_config['B2KX'])
 
-        #self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'],
         #                [kkpiDDMX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPi',['[B+ -> K+ KS0]cc'],
-                        [pipiX,kBhard],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
         #                [pipiDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPiPi',['[B+ -> K+ KS0]cc'],
-                        [pipipiX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2PiPiPiM',['[B+ -> K+ KS0]cc'],
-                        [pipipiMX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiPiM", ["[B+ -> K+ KS0]cc"], [pipipiMX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDX,kB],default_config['B2KX'])
 
-        #self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDMX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2EtaPiPi2GG',['[B+ -> K+ KS0]cc'],
-                        [etapipiGGX,kB],default_config['B2KXTight'])
-
-        self._makeBLine('B2KX2EtaPiPi23PI',['[B+ -> K+ KS0]cc'],
-                        [etapipi3PIX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX24Pi',['[B+ -> K+ KS0]cc'],
-                        [fourpiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX26Pi',['[B+ -> K+ KS0]cc'],
-                        [sixpiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX22K2Pi',['[B+ -> K+ KS0]cc'],
-                        [KKpipiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX24K',['[B+ -> K+ KS0]cc'],
-                        [fourKX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX2MuMuSS',['[B+ -> K+ KS0]cc'],
-                        [mmSSX,kB],default_config['B2KX'],preSS)
-
-        self._makeBLine('B2KX2MuMuDDSS',['[B+ -> K+ KS0]cc'],
-                        [mmSSDDX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX2EESS',['[B+ -> K+ KS0]cc'],
-                        [eeSS,kB],default_config['B2KX'],preSS)
-
-        self._makeBLine('B2KX2KKSS',['[B+ -> K+ KS0]cc'],
-                        [kkSSX,kB],default_config['B2KX'],preSS)
-
-        #self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
+        self._makeBLine(
+            "B2KX2EtaPiPi2GG",
+            ["[B+ -> K+ KS0]cc"],
+            [etapipiGGX, kB],
+            default_config["B2KXTight"],
+        )
+
+        self._makeBLine(
+            "B2KX2EtaPiPi23PI",
+            ["[B+ -> K+ KS0]cc"],
+            [etapipi3PIX, kB],
+            default_config["B2KX"],
+        )
+
+        self._makeBLine(
+            "B2KX24Pi", ["[B+ -> K+ KS0]cc"], [fourpiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX26Pi", ["[B+ -> K+ KS0]cc"], [sixpiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX22K2Pi", ["[B+ -> K+ KS0]cc"], [KKpipiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX24K", ["[B+ -> K+ KS0]cc"], [fourKX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX2MuMuSS",
+            ["[B+ -> K+ KS0]cc"],
+            [mmSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX2EESS", ["[B+ -> K+ KS0]cc"], [eeSS, kB], default_config["B2KX"], preSS
+        )
+
+        self._makeBLine(
+            "B2KX2KKSS",
+            ["[B+ -> K+ KS0]cc"],
+            [kkSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
+
+        # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
         #                [kkSSDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPiSS',['[B+ -> K+ KS0]cc'],
-                        [pipiSSX,kB],default_config['B2KX'],preSS)
+        self._makeBLine(
+            "B2KX2PiPiSS",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
-        #self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
         #                [pipiSSDDX,kB],default_config['B2KX'])
 
         # B -> J/psi lines
-        self._makeBLine('B2JK',['[B+ -> J/psi(1S) K+]cc'],
-                        [j,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2JK", ["[B+ -> J/psi(1S) K+]cc"], [j, kB], default_config["B2KX"]
+        )
 
         kst = filterKst()
-        self._makeBLine('B2JKst',['[B0 -> J/psi(1S) K*(892)0]cc'],
-                        [j,kst],default_config['B2KX'])
+        self._makeBLine(
+            "B2JKst", ["[B0 -> J/psi(1S) K*(892)0]cc"], [j, kst], default_config["B2KX"]
+        )
         rho = makeRho([piB])
-        #self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX],
+        # self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX],
         #                default_config['B2HHX'])
-        #self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX],
+        # self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX],
         #                default_config['B2HHX'])
 
-
-    def _makeBLine(self,tag,dec,inputs,default_config,pre=1.0):
-        sel = makeB(tag,dec,inputs,default_config)
-        self._makeLine(tag,sel,pre)
-
-    def _makeLine(self,name,sel,pre):
-        filt = {'Code' :
-                "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\
-                " < %s )" \
-                % default_config['CONFIG']['GECNTrkMax'],
-                'Preambulo' : [ "from LoKiTracks.decorators import *",
-                                'from LoKiCore.functions    import *' ]}
+    def _makeBLine(self, tag, dec, inputs, default_config, pre=1.0):
+        sel = makeB(tag, dec, inputs, default_config)
+        self._makeLine(tag, sel, pre)
+
+    def _makeLine(self, name, sel, pre):
+        filt = {
+            "Code": "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"
+            " < %s )" % default_config["CONFIG"]["GECNTrkMax"],
+            "Preambulo": [
+                "from LoKiTracks.decorators import *",
+                "from LoKiCore.functions    import *",
+            ],
+        }
         name = name + "DarkBosonLine"
-        hlt=""
-        if name.find('KstX2PiGamma') > -1 or name.find('KstX2GammaGamma') > -1:
+        hlt = ""
+        if name.find("KstX2PiGamma") > -1 or name.find("KstX2GammaGamma") > -1:
             hlt = "HLT_PASS_RE('Hlt2Topo2Body.*Decision')"
-        elif name.find('MuMu'):
+        elif name.find("MuMu"):
             pass
         else:
             hlt = "HLT_PASS_RE('Hlt2Topo.*Body.*Decision')"
-        relInfoTools=self._getRelInfo(name)
-        #if not relInfoTools:
+        relInfoTools = self._getRelInfo(name)
+        # if not relInfoTools:
         #    relInfoTools = default_config['CONFIG']['CommonRelInfoTools']
 
-        sline = StrippingLine(name,pre,selection=sel,HLT2=hlt,checkPV=True,FILTER=filt,
-                              EnableFlavourTagging=False,
-                              RelatedInfoTools = relInfoTools ) #default_config['CONFIG']['CommonRelInfoTools'] )
+        sline = StrippingLine(
+            name,
+            pre,
+            selection=sel,
+            HLT2=hlt,
+            checkPV=True,
+            FILTER=filt,
+            EnableFlavourTagging=False,
+            RelatedInfoTools=relInfoTools,
+        )  # default_config['CONFIG']['CommonRelInfoTools'] )
         self.registerLine(sline)
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-    def _getRelInfo(self,name):
+    # \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+    def _getRelInfo(self, name):
         relInfoTools = []
-        if name.find('DD')>-1:
-            return relInfoTools ## DD lines go to DST so no relInfoTools
+        if name.find("DD") > -1:
+            return relInfoTools  ## DD lines go to DST so no relInfoTools
         decStr = self._getDecStr(name)
-        if decStr=="":
-            return relInfoTools ## decay not known
-        dls = self._getDaugLocs(decStr,"ConeIso05p")
+        if decStr == "":
+            return relInfoTools  ## decay not known
+        dls = self._getDaugLocs(decStr, "ConeIso05p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 0.5,
-          "Variables" : [],
-          "Location"  : 'ConeIso05B0',
-          "DaughterLocations" : dls, } )
-        dls = self._getDaugLocs(decStr,"ConeIso10p")
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 0.5,
+                "Variables": [],
+                "Location": "ConeIso05B0",
+                "DaughterLocations": dls,
+            }
+        )
+        dls = self._getDaugLocs(decStr, "ConeIso10p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 1.0,
-          "Variables" : [],
-          "Location"  : 'ConeIso10B0',
-          "DaughterLocations" : dls, } )
-        dls = self._getDaugLocs(decStr,"ConeIso15p")
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.0,
+                "Variables": [],
+                "Location": "ConeIso10B0",
+                "DaughterLocations": dls,
+            }
+        )
+        dls = self._getDaugLocs(decStr, "ConeIso15p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 1.5,
-          "Variables" : [],
-          "Location"  : 'ConeIso15B0',
-          "DaughterLocations" : dls, } )
-#        dls = self._getDaugLocs(name,"TrackIsoBDTp")
-#        relInfoTools.append(
-#        { "Type": "RelInfoTrackIsolationBDT",
-#          "Variables" : 0,
-#          "DaughterLocations" : dls, } )
-#        dls = self._getDaugLocs(name,"BsMuMuTrackIsop")
-#        relInfoTools.append(
-#        { "Type" : "RelInfoBs2MuMuTrackIsolations",
-#          "Variables" : [],
-#          "IsoTwoBody" : True,
-#          "DaughterLocations" : dls, } )
-        relInfoTools.extend(default_config['CONFIG']['CommonRelInfoTools'])
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.5,
+                "Variables": [],
+                "Location": "ConeIso15B0",
+                "DaughterLocations": dls,
+            }
+        )
+        #        dls = self._getDaugLocs(name,"TrackIsoBDTp")
+        #        relInfoTools.append(
+        #        { "Type": "RelInfoTrackIsolationBDT",
+        #          "Variables" : 0,
+        #          "DaughterLocations" : dls, } )
+        #        dls = self._getDaugLocs(name,"BsMuMuTrackIsop")
+        #        relInfoTools.append(
+        #        { "Type" : "RelInfoBs2MuMuTrackIsolations",
+        #          "Variables" : [],
+        #          "IsoTwoBody" : True,
+        #          "DaughterLocations" : dls, } )
+        relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"])
         return relInfoTools
 
-    def _getDaugLocs(self,decay,locName):
+    def _getDaugLocs(self, decay, locName):
         dls = {}
-        decay = decay.split('^')
-        for i in range(1,len(decay)):
-            dec="^".join([" ".join(decay[:i])," ".join(decay[i:])])
-            loc=locName+str(i)
+        decay = decay.split("^")
+        for i in range(1, len(decay)):
+            dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])])
+            loc = locName + str(i)
             dls[dec] = loc
         return dls
 
-    def _getDecStr(self,name):
+    def _getDecStr(self, name):
         decay = ""
-        if name.find('JKst')>-1:
+        if name.find("JKst") > -1:
             decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^(K*(892)0 -> ^K+ ^pi-) ]CC"
-        elif name.find('JK')>-1:
+        elif name.find("JK") > -1:
             decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K+ ]CC"
         else:
             bpart = self._getBpart(name)
             xpart = self._getXpart(name)
             if bpart and xpart:
-                decay = "".join(["[ ",bpart,"^(",xpart,") ]CC"])
-        #print "getDecStr: ",name," ",decay
+                decay = "".join(["[ ", bpart, "^(", xpart, ") ]CC"])
+        # print "getDecStr: ",name," ",decay
         return decay
 
-    def _getXpart(self,name):
-        ret=None
-        if name.find('X26Pi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) '
-        elif name.find('X24Pi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi-'
-        elif name.find('X22K2Pi')>-1:
-            ret= 'KS0 -> ^K+ ^pi+ ^K- ^pi-'
-        elif name.find('X24K')>-1:
-            ret= 'KS0 -> ^K+ ^K+ ^K- ^K-'
-        elif name.find('X2PiPiPi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi- ^pi0'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
-        elif name.find('X2KKPi')>-1:
-            ret= 'KS0 -> ^K+ ^K- ^pi0'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
-        elif name.find('X2EtaPiPi')>-1:
-            ret= 'KS0 -> ^eta ^pi+ ^pi-'
-            if name.find('2GG')>-1:
-                ret = ret.replace("eta","(eta -> ^gamma ^gamma) ")
+    def _getXpart(self, name):
+        ret = None
+        if name.find("X26Pi") > -1:
+            ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) "
+        elif name.find("X24Pi") > -1:
+            ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi-"
+        elif name.find("X22K2Pi") > -1:
+            ret = "KS0 -> ^K+ ^pi+ ^K- ^pi-"
+        elif name.find("X24K") > -1:
+            ret = "KS0 -> ^K+ ^K+ ^K- ^K-"
+        elif name.find("X2PiPiPi") > -1:
+            ret = "KS0 -> ^pi+ ^pi- ^pi0"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2KKPi") > -1:
+            ret = "KS0 -> ^K+ ^K- ^pi0"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2EtaPiPi") > -1:
+            ret = "KS0 -> ^eta ^pi+ ^pi-"
+            if name.find("2GG") > -1:
+                ret = ret.replace("eta", "(eta -> ^gamma ^gamma) ")
             else:
-                ret = ret.replace("eta","(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ")
-        elif name.find('X2MuMu')>-1:
-            ret= 'KS0 -> ^mu+ ^mu-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2EE')>-1:
-            ret= 'KS0 -> ^e+ ^e-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2PiPi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2KK')>-1:
-            ret= 'KS0 -> ^K+ ^K-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2GammaGamma')>-1:
-            ret= 'pi0 -> ^gamma ^gamma'
-        elif name.find('X2PiGamma')>-1:
-            ret= 'eta -> ^pi0 ^gamma'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
+                ret = ret.replace("eta", "(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ")
+        elif name.find("X2MuMu") > -1:
+            ret = "KS0 -> ^mu+ ^mu-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2EE") > -1:
+            ret = "KS0 -> ^e+ ^e-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2PiPi") > -1:
+            ret = "KS0 -> ^pi+ ^pi-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2KK") > -1:
+            ret = "KS0 -> ^K+ ^K-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2GammaGamma") > -1:
+            ret = "pi0 -> ^gamma ^gamma"
+        elif name.find("X2PiGamma") > -1:
+            ret = "eta -> ^pi0 ^gamma"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
         return ret
 
-    def _getBpart(self,name):
-        if name.find('B2KX')>-1:
+    def _getBpart(self, name):
+        if name.find("B2KX") > -1:
             return "Beauty -> ^K+ "
-        elif name.find('B2KpiX')>-1:
+        elif name.find("B2KpiX") > -1:
             return "Beauty -> ^K+ ^pi- "
-        elif name.find('B2KstX')>-1:
+        elif name.find("B2KstX") > -1:
             return "Beauty -> ^(K*(892)0 ->  ^K+  ^pi-) "
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-def filterInputs(which,conf,inputs):
-    keys = [key.split('_')[0] for key in conf.keys()]
-    code = LoKiCuts(keys,conf).code()
-    #code = LoKiCuts.combine(['INMUON',code])
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+def filterInputs(which, conf, inputs):
+    keys = [key.split("_")[0] for key in conf.keys()]
+    code = LoKiCuts(keys, conf).code()
+    # code = LoKiCuts.combine(['INMUON',code])
     photonCut = "(NINGENERATION( (ID=='gamma') & ((PT < 500*MeV) | (CL < 0.3)),1)==0)"
-    code = LoKiCuts.combine([photonCut,code])
-    #print "filterInputs: ", which, code
-    return Selection(which+'DarkBosonFilter',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=inputs)
-
-def filterEE(which,econf,xconf,inputs):
-    code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" \
-           % (xconf['PT_MIN'],econf['PIDe_MIN'])
-    code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" \
-            % econf['MIPCHI2DV_MIN']
-    code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf['PT_MIN']
-    code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf['TRGHP_MAX']
-    code = LoKiCuts.combine([code,LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],
-                                           xconf).code()])
-    #print "filterEE: ", code
-    sel = Selection(which+'FilterEEDarkBosonFilter',
-                    Algorithm=FilterDesktop(Code=code),
-                    RequiredSelections=inputs)
+    code = LoKiCuts.combine([photonCut, code])
+    # print "filterInputs: ", which, code
+    return Selection(
+        which + "DarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=inputs,
+    )
+
+
+def filterEE(which, econf, xconf, inputs):
+    code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" % (
+        xconf["PT_MIN"],
+        econf["PIDe_MIN"],
+    )
+    code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" % econf["MIPCHI2DV_MIN"]
+    code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf["PT_MIN"]
+    code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf["TRGHP_MAX"]
+    code = LoKiCuts.combine(
+        [code, LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], xconf).code()]
+    )
+    # print "filterEE: ", code
+    sel = Selection(
+        which + "FilterEEDarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=inputs,
+    )
     decstr = "J/psi(1S) -> e+ e-"
-    if which=='SS':
+    if which == "SS":
         decstr = "[ J/psi(1S) -> e+ e+ ]CC"
-    sub = SubstitutePID(which+'EESubPIDDarkBoson',
-                        Code="DECTREE('"+decstr+"')")
+    sub = SubstitutePID(which + "EESubPIDDarkBoson", Code="DECTREE('" + decstr + "')")
     sub.MaxChi2PerDoF = -666
-    sub.Substitutions = {decstr  : 'KS0'}
-    return Selection(which+'EESubPIDDarkBosonSel',Algorithm=sub,
-                     RequiredSelections=[sel])
+    sub.Substitutions = {decstr: "KS0"}
+    return Selection(
+        which + "EESubPIDDarkBosonSel", Algorithm=sub, RequiredSelections=[sel]
+    )
+
 
 def makeEEdd(default_config):
-    eedd = DiElectronMaker('EEDDForDarkBoson')
+    eedd = DiElectronMaker("EEDDForDarkBoson")
     eedd.Particle = "KS0"
     selector = trackSelector(eedd, trackTypes=["Downstream"])
-    eedd.addTool(ProtoParticleCALOFilter, name='Electron')
-    eedd.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>'%s'" \
-                               % default_config['PID']['E']['PIDe_MIN']]
+    eedd.addTool(ProtoParticleCALOFilter, name="Electron")
+    eedd.Electron.Selection = [
+        "RequiresDet='CALO' CombDLL(e-pi)>'%s'" % default_config["PID"]["E"]["PIDe_MIN"]
+    ]
     eedd.DiElectronMassMax = 5000
     eedd.DiElectronMassMin = 0
     eedd.DiElectronPtMin = 250
     eedd.ElectronPtMin = 100
-    eedd.ElectronPIDcut = default_config['PID']['E']['PIDe_MIN']
+    eedd.ElectronPIDcut = default_config["PID"]["E"]["PIDe_MIN"]
+
+    sel = Selection("EEDDDarkBosonSel", Algorithm=eedd)
+    code = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config["V"]).code()
+    # print 'makeEEdd', code
+    return Selection(
+        "FilterEEDDDarkBoson",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=[sel],
+    )
 
-    sel = Selection('EEDDDarkBosonSel',Algorithm=eedd)
-    code = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config['V']).code()
-    #print 'makeEEdd', code
-    return Selection('FilterEEDDDarkBoson',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=[sel])
 
 def makeEESS():
-    eess = DiElectronMaker('EESSForDarkBoson')
+    eess = DiElectronMaker("EESSForDarkBoson")
     eess.Particle = "J/psi(1S)"
     selector = trackSelector(eess, trackTypes=["Long"])
-    eess.addTool(ProtoParticleCALOFilter, name='Electron')
+    eess.addTool(ProtoParticleCALOFilter, name="Electron")
     eess.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>-2"]
     eess.DiElectronMassMax = 5000
     eess.DiElectronMassMin = 0
     eess.DiElectronPtMin = 250
     eess.ElectronPtMin = 100
     eess.OppositeSign = False
-    return Selection('EESSDarkBosonSel',Algorithm=eess)
+    return Selection("EESSDarkBosonSel", Algorithm=eess)
+
 
 def filterKst():
-    kst = DataOnDemand(Location='Phys/StdLooseDetachedKst2Kpi/Particles')
-    code = '(MIPCHI2DV(PRIMARY) > 25)'
-    return Selection('KstDarkBosonFilter',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=[kst])
+    kst = DataOnDemand(Location="Phys/StdLooseDetachedKst2Kpi/Particles")
+    code = "(MIPCHI2DV(PRIMARY) > 25)"
+    return Selection(
+        "KstDarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=[kst],
+    )
+
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-def makeX(which,default_config,dec,inputs):
-    comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config['PT_MIN']
-    if(which.find('DD') < 0):
+
+def makeX(which, default_config, dec, inputs):
+    comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config["PT_MIN"]
+    if which.find("DD") < 0:
         comboCuts += " & (ACUTDOCA(0.2*mm,''))"
     comboCuts += "& (ADOCACHI2CUT(25,''))"
-    momCuts = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config).code()
-    momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts])
-    if default_config.has_key('HAD_MINIPCHI2_MIN'):
-        momCuts += '& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \
-                   % default_config['HAD_MINIPCHI2_MIN']
-    x = CombineParticles(DecayDescriptors=[dec],
-                         CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeX:',which,comboCuts,momCuts
-    return Selection("X2"+which+"DarkBosonSel",Algorithm=x,
-                     RequiredSelections=inputs)
-
-def makeX2neutrals(which,default_config,dec,inputs):
-    #momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)"
-    momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config['PT_MIN']
-    #if(which.find('C') > -1):
+    momCuts = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config).code()
+    momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts])
+    if default_config.has_key("HAD_MINIPCHI2_MIN"):
+        momCuts += (
+            "& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)"
+            % default_config["HAD_MINIPCHI2_MIN"]
+        )
+    x = CombineParticles(
+        DecayDescriptors=[dec], CombinationCut=comboCuts, MotherCut=momCuts
+    )
+    # print 'makeX:',which,comboCuts,momCuts
+    return Selection(
+        "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs
+    )
+
+
+def makeX2neutrals(which, default_config, dec, inputs):
+    # momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)"
+    momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config["PT_MIN"]
+    # if(which.find('C') > -1):
     #    momCuts += " & (INTREE( (ID=='gamma') & (ISBASIC) )) & (INTREE( HASTRACK ))"
-    x = CombineParticles(DecayDescriptors=[dec],
-                         MotherCut=momCuts,
-                         ParticleCombiners = {"" : "MomentumCombiner:PUBLIC"},
-                         ReFitPVs=False)#True)
-    #print 'makeX2neutrals:',which,momCuts
-    return Selection("X2"+which+"DarkBosonSel",Algorithm=x,
-                     RequiredSelections=inputs)
-
-
-def makeJ(default_config,inputs):
-    comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config['ADAMASS_MAX']
+    x = CombineParticles(
+        DecayDescriptors=[dec],
+        MotherCut=momCuts,
+        ParticleCombiners={"": "MomentumCombiner:PUBLIC"},
+        ReFitPVs=False,
+    )  # True)
+    # print 'makeX2neutrals:',which,momCuts
+    return Selection(
+        "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs
+    )
+
+
+def makeJ(default_config, inputs):
+    comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config["ADAMASS_MAX"]
     comboCuts += " & (ACUTDOCA(0.2*mm,''))"
     comboCuts += "& (ADOCACHI2CUT(25,''))"
-    momCuts = LoKiCuts(['HASVERTEX','VCHI2DOF'],default_config).code()
-    momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts])
-    j = CombineParticles(DecayDescriptors=['J/psi(1S) -> mu+ mu-'],
-                         CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeJ:',comboCuts,momCuts
-    return Selection("J2MuMuDarkBosonSel",Algorithm=j,
-                     RequiredSelections=inputs)
-
-def makeRho(inputs,which=""):
+    momCuts = LoKiCuts(["HASVERTEX", "VCHI2DOF"], default_config).code()
+    momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts])
+    j = CombineParticles(
+        DecayDescriptors=["J/psi(1S) -> mu+ mu-"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeJ:',comboCuts,momCuts
+    return Selection("J2MuMuDarkBosonSel", Algorithm=j, RequiredSelections=inputs)
+
+
+def makeRho(inputs, which=""):
     comboCuts = "(AM > 550*MeV) & (AM < 1050*MeV) & ADOCACHI2CUT(25,'')"
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
     momCuts += " & (M > 600*MeV) & (M < 1000*MeV)"
-    rho = CombineParticles(DecayDescriptors=['rho(770)0 -> pi+ pi-'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeRho:',comboCuts,momCuts
-    return Selection("Rho2PiPi"+which+"DarkBosonSel",Algorithm=rho,
-                     RequiredSelections=inputs)
-
-def makeKst(inputs,which=""):
-    comboCuts = "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" #(AM < 2000*MeV)"
+    rho = CombineParticles(
+        DecayDescriptors=["rho(770)0 -> pi+ pi-"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeRho:',comboCuts,momCuts
+    return Selection(
+        "Rho2PiPi" + which + "DarkBosonSel", Algorithm=rho, RequiredSelections=inputs
+    )
+
+
+def makeKst(inputs, which=""):
+    comboCuts = (
+        "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)"  # (AM < 2000*MeV)"
+    )
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
-    kst = CombineParticles(DecayDescriptors=['[K*(892)0 -> K+ pi-]cc'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeKst:',comboCuts,momCuts
-    return Selection("Kst2KPi"+which+"DarkBosonSel",Algorithm=kst,
-                     RequiredSelections=inputs)
-
-def makeEta(inputs,which=""):
+    kst = CombineParticles(
+        DecayDescriptors=["[K*(892)0 -> K+ pi-]cc"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeKst:',comboCuts,momCuts
+    return Selection(
+        "Kst2KPi" + which + "DarkBosonSel", Algorithm=kst, RequiredSelections=inputs
+    )
+
+
+def makeEta(inputs, which=""):
     comboCuts = "(AM < 750*MeV) & (ACHI2DOCA(1,2) < 25)"
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
     momCuts += " & (M < 650*MeV)"
-    eta = CombineParticles(DecayDescriptors=['eta -> pi+ pi- pi0'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeOmega:',comboCuts,momCuts
-    return Selection("Eta2PiPiPi"+which+"DarkBosonSel",Algorithm=eta,
-                     RequiredSelections=inputs)
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-def makeB(name,decays,inputs,default_config):
-    comboCuts = LoKiCuts(['AM','SUMPT'],default_config).code()
-    momCuts = LoKiCuts(['HASVERTEX','PT','VCHI2DOF','BPVLTIME','BPVIPCHI2','BPVDIRA'],default_config).code()
+    eta = CombineParticles(
+        DecayDescriptors=["eta -> pi+ pi- pi0"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeOmega:',comboCuts,momCuts
+    return Selection(
+        "Eta2PiPiPi" + which + "DarkBosonSel", Algorithm=eta, RequiredSelections=inputs
+    )
+
+
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+def makeB(name, decays, inputs, default_config):
+    comboCuts = LoKiCuts(["AM", "SUMPT"], default_config).code()
+    momCuts = LoKiCuts(
+        ["HASVERTEX", "PT", "VCHI2DOF", "BPVLTIME", "BPVIPCHI2", "BPVDIRA"],
+        default_config,
+    ).code()
     cuts = ""
-    if default_config.has_key('BPVDIRA_MIN'):
-        cuts += '(BPVDIRA > %s)' % default_config['BPVDIRA_MIN']
+    if default_config.has_key("BPVDIRA_MIN"):
+        cuts += "(BPVDIRA > %s)" % default_config["BPVDIRA_MIN"]
     else:
-        cuts += '(BPVDIRA > 0)'
-    if default_config.has_key('HAD_MINIPCHI2_MIN'):
-        cuts += ' & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \
-                % default_config['HAD_MINIPCHI2_MIN']
-    momCuts = LoKiCuts.combine([momCuts,cuts])
-    momCuts += ' & (MM > %s) & (MM < %s)' % (default_config['AM_MIN'],default_config['AM_MAX'])
-    n=2
-    if name.find('B2KpiX') >= 0: n=3
+        cuts += "(BPVDIRA > 0)"
+    if default_config.has_key("HAD_MINIPCHI2_MIN"):
+        cuts += (
+            " & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)"
+            % default_config["HAD_MINIPCHI2_MIN"]
+        )
+    momCuts = LoKiCuts.combine([momCuts, cuts])
+    momCuts += " & (MM > %s) & (MM < %s)" % (
+        default_config["AM_MIN"],
+        default_config["AM_MAX"],
+    )
+    n = 2
+    if name.find("B2KpiX") >= 0:
+        n = 3
     alg = None
-    if n==2:
+    if n == 2:
         alg = CombineParticles(DecayDescriptors=decays)
     else:
         alg = DaVinci__N3BodyDecays(DecayDescriptors=decays)
-        alg.Combination12Cut = 'AM < %s' % default_config['AM_MAX']
+        alg.Combination12Cut = "AM < %s" % default_config["AM_MAX"]
 
     alg.ReFitPVs = True
-    alg.CombinationCut=comboCuts
-    alg.MotherCut=momCuts
-    #print 'makeB:',name,comboCuts,momCuts,decays
-    return Selection(name+"DarkBosonSel",Algorithm=alg,
-                     RequiredSelections=inputs)
+    alg.CombinationCut = comboCuts
+    alg.MotherCut = momCuts
+    # print 'makeB:',name,comboCuts,momCuts,decays
+    return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From a55261f9e87ee8dcfcdc1e86cd82f6e15aea6840 Mon Sep 17 00:00:00 2001
From: reallyblaised <blaiserd@proton.me>
Date: Fri, 30 Jun 2023 13:36:04 -0400
Subject: [PATCH 02/18] dark scalar lines into mm,kk,pipi with SS

---
 .../StrippingRD/StrippingDarkBoson.py         | 152 +++++++++++++-----
 .../StrippingRD/__init__.py                   |   3 +-
 2 files changed, 116 insertions(+), 39 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 4cea3e650..7a9b27abe 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -14,7 +14,7 @@ Dark Bosons (ALPs, inflatons, WTFs, etc)
 
 Author: M. Williams, D. Craik
 """
-__author__ = ["Mike Williams", "Dan Craik"]
+__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
 
 moduleName = "DarkBoson"
 
@@ -86,15 +86,17 @@ default_config = {
             #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
             "StrippingB2KX2MuMuDDDarkBosonLine",
             "StrippingB2KX2MuMuDDSSDarkBosonLine",
-            #'StrippingB2KpiX2PiPiDDDarkBosonLine',
+            "StrippingB2KpiX2PiPiDDDarkBosonLine",
+            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2PiPiDDDarkBosonLine',
-            #'StrippingB2KX2PiPiDDDarkBosonLine',
-            #'StrippingB2KX2PiPiDDSSDarkBosonLine',
+            "StrippingB2KX2PiPiDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-            #'StrippingB2KpiX2KKDDDarkBosonLine',
+            "StrippingB2KpiX2KKDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2KKDDDarkBosonLine',
-            #'StrippingB2KX2KKDDDarkBosonLine',
-            #'StrippingB2KX2KKDDSSDarkBosonLine',
+            "StrippingB2KX2KKDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
         ],
         "Leptonic": [
             "StrippingB2KpiX2MuMuDarkBosonLine",
@@ -103,15 +105,17 @@ default_config = {
             #'StrippingB2KKX2MuMuSSDarkBosonLine',
             "StrippingB2KX2MuMuDarkBosonLine",
             "StrippingB2KX2MuMuSSDarkBosonLine",
-            "StrippingB2KpiX2PiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2PiPiDarkBosonLine',
-            "StrippingB2KX2PiPiDarkBosonLine",
-            "StrippingB2KX2PiPiSSDarkBosonLine",
+            "StrippingB2KX2PiPiDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2RhoX2MuMuDarkBosonLine',
-            "StrippingB2KpiX2KKDarkBosonLine",
+            "StrippingB2KpiX2KKDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2KKDarkBosonLine',
-            "StrippingB2KX2KKDarkBosonLine",
-            "StrippingB2KX2KKSSDarkBosonLine",
+            "StrippingB2KX2KKDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKSSDarkBosonLine",  # NOTE: 2018 patches
             "StrippingB2KpiX2EEDarkBosonLine",
             "StrippingB2KpiX2EESSDarkBosonLine",
             #'StrippingB2KKX2EEDarkBosonLine',
@@ -310,7 +314,7 @@ default_config = {
             "AM_MAX": "5800*MeV",
             "PT_MIN": "3000*MeV",
         },
-        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25},
+        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 1.0},
         "GECNTrkMax": 250,
         "CommonRelInfoTools": [
             {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"},
@@ -447,6 +451,22 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
+        self._makeBLine(
+            "B2KpiX2MuMuSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
         self._makeBLine(
             "B2KpiX2EE",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -462,8 +482,29 @@ class DarkBosonConf(LineBuilder):
             preKK,
         )
 
-        # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
-        #                [kkDDX,kB,piB],default_config['B2HHX'])
+        self._makeBLine(
+            "B2KpiX2KKSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkDDX, kB, piB],
+            default_config["B2HHX"],
+            preKK,
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KpiX2KKPi",
@@ -490,11 +531,34 @@ class DarkBosonConf(LineBuilder):
             ["[B0 -> K+ pi- KS0]cc"],
             [pipiX, kB, piB],
             default_config["B2HHX"],
+        )
+
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiSSX, kB, piB],
+            default_config["B2HHX"],
             preSS,
         )
 
-        # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
-        #                [pipiDDX,kB,piB],default_config['B2HHX'],preDD)
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiDDX, kB, piB],
+            default_config["B2HHX"],
+            preDD,
+        )
+
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KpiX2PiPiPi",
@@ -559,18 +623,10 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMuSS",
+            "B2KpiX2MuMSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-            preSS,
-        )
-
-        self._makeBLine(
-            "B2KpiX2MuMuDDSS",
-            ["[B0 -> K+ pi- KS0]cc"],
-            [mmSSDDX, kB, piB],
-            default_config["B2HHX"],
         )
 
         self._makeBLine(
@@ -647,11 +703,16 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"]
+            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"], preKK
         )
 
-        # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
-        #                [kkDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKDD",
+            ["[B+ -> K+ KS0]cc"],
+            [kkDDX, kB],
+            default_config["B2KX"],
+            preKK,
+        )
 
         self._makeBLine(
             "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"]
@@ -671,8 +732,9 @@ class DarkBosonConf(LineBuilder):
             "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"]
         )
 
-        # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
-        #                [pipiDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiDD", ["[B+ -> K+ KS0]cc"], [pipiDDX, kB], default_config["B2KX"]
+        )
 
         self._makeBLine(
             "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"]
@@ -727,7 +789,11 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"]
+            "B2KX2MuMuDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [mmSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
         )
 
         self._makeBLine(
@@ -742,8 +808,13 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
-        #                [kkSSDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [kkSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KX2PiPiSS",
@@ -753,8 +824,13 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
-        #                [pipiSSDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
         # B -> J/psi lines
         self._makeBLine(
@@ -1176,4 +1252,4 @@ def makeB(name, decays, inputs, default_config):
     return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
 
-# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
\ No newline at end of file
diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
index 62f82fddd..f42c6b6ee 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
@@ -29,7 +29,8 @@ _selections = ('StrippingRareBaryonicMuMu',
         'StrippingB2XMuTauMuonic',
         'StrippingB2LLXBDTSS',
         'StrippingB2KstTauTau', 
-        'StrippingS2Hyperons'
+        'StrippingS2Hyperons',
+        'StrippingDarkBoson'
         )
 
 for _sel in _selections :
-- 
GitLab


From c582632cd858f01561df185ac0df714b3a71ad8a Mon Sep 17 00:00:00 2001
From: Blaise Raheem Delaney <blaise.delaney@cern.ch>
Date: Sun, 2 Jul 2023 20:48:50 +0200
Subject: [PATCH 03/18] WIP pipig line

---
 .../StrippingRD/StrippingDarkBoson.py         | 62 +++++++++++++------
 1 file changed, 42 insertions(+), 20 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 7a9b27abe..3887cc890 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -12,7 +12,7 @@
 """
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
-Author: M. Williams, D. Craik
+Author: M. Williams, D. Craik, B. Delaney
 """
 __author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
 
@@ -69,6 +69,8 @@ default_config = {
             "StrippingB2KX2EtaPiPi23PIDarkBosonLine",
             "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine",
             "StrippingB2KX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KpiX2PiPiGDarkBosonLine",
+            "StrippingB2KX2PiPiGDarkBosonLine",
             "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine",
             "StrippingB2KX24PiDarkBosonLine",
             "StrippingB2KpiX24PiDarkBosonLine",
@@ -87,16 +89,16 @@ default_config = {
             "StrippingB2KX2MuMuDDDarkBosonLine",
             "StrippingB2KX2MuMuDDSSDarkBosonLine",
             "StrippingB2KpiX2PiPiDDDarkBosonLine",
-            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",
             #'StrippingB2KKX2PiPiDDDarkBosonLine',
-            "StrippingB2KX2PiPiDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDDDarkBosonLine",
+            "StrippingB2KX2PiPiDDSSDarkBosonLine",
             #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-            "StrippingB2KpiX2KKDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDDDarkBosonLine",
+            "StrippingB2KpiX2KKDDSSDarkBosonLine",
             #'StrippingB2KKX2KKDDDarkBosonLine',
-            "StrippingB2KX2KKDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDDDarkBosonLine",
+            "StrippingB2KX2KKDDSSDarkBosonLine",
         ],
         "Leptonic": [
             "StrippingB2KpiX2MuMuDarkBosonLine",
@@ -105,17 +107,17 @@ default_config = {
             #'StrippingB2KKX2MuMuSSDarkBosonLine',
             "StrippingB2KX2MuMuDarkBosonLine",
             "StrippingB2KX2MuMuSSDarkBosonLine",
-            "StrippingB2KpiX2PiPiDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiSSDarkBosonLine",
             #'StrippingB2KKX2PiPiDarkBosonLine',
-            "StrippingB2KX2PiPiDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDarkBosonLine",
+            "StrippingB2KX2PiPiSSDarkBosonLine",
             #'StrippingB2RhoX2MuMuDarkBosonLine',
-            "StrippingB2KpiX2KKDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2KKSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDarkBosonLine",
+            "StrippingB2KpiX2KKSSDarkBosonLine",
             #'StrippingB2KKX2KKDarkBosonLine',
-            "StrippingB2KX2KKDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2KKSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDarkBosonLine",
+            "StrippingB2KX2KKSSDarkBosonLine",
             "StrippingB2KpiX2EEDarkBosonLine",
             "StrippingB2KpiX2EESSDarkBosonLine",
             #'StrippingB2KKX2EEDarkBosonLine',
@@ -408,9 +410,16 @@ class DarkBosonConf(LineBuilder):
         # kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
         # pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
         # pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
+
         etapipiGGX = makeX(
             "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX]
         )
+
+        # FIXME: X3H placeholder; might need bespoke selection
+        pipiGX = makeX(
+            "PiPiG", default_config["X3H"], "KS0 -> pi+ pi- gamma", [gX, piX]
+        )
+
         etapipi3PIX = makeX(
             "EtaPiPi23PI",
             default_config["XETAHH"],
@@ -533,7 +542,6 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiSS",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -542,7 +550,6 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiDD",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -551,7 +558,6 @@ class DarkBosonConf(LineBuilder):
             preDD,
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiDDSS",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -750,6 +756,22 @@ class DarkBosonConf(LineBuilder):
         # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDMX,kB],default_config['B2KX'])
 
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2PiPiG",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [pipiGX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2PiPiG",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiGX, kB],
+            default_config["B2KX"],
+        )
+
         self._makeBLine(
             "B2KX2EtaPiPi2GG",
             ["[B+ -> K+ KS0]cc"],
@@ -1252,4 +1274,4 @@ def makeB(name, decays, inputs, default_config):
     return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
 
-# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
\ No newline at end of file
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From f89b94bbb95d579f35f6e53e9147accc768baa81 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Tue, 11 Jul 2023 18:50:30 +0200
Subject: [PATCH 04/18] Fixing missing line

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py      | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 3887cc890..05f4b2ba1 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -1013,6 +1013,8 @@ class DarkBosonConf(LineBuilder):
             ret = "KS0 -> ^e+ ^e-"
             if name.find("SS") > -1:
                 ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2PiPiG") > -1:
+            ret = "KS0 -> ^pi+ ^pi- ^gamma"
         elif name.find("X2PiPi") > -1:
             ret = "KS0 -> ^pi+ ^pi-"
             if name.find("SS") > -1:
@@ -1027,6 +1029,7 @@ class DarkBosonConf(LineBuilder):
             ret = "eta -> ^pi0 ^gamma"
             if name.find("M") == -1:
                 ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        
         return ret
 
     def _getBpart(self, name):
-- 
GitLab


From e486e9a29fe29ded84b3e48bcec82a21bd2d0b1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Tue, 11 Jul 2023 20:46:28 +0200
Subject: [PATCH 05/18] Add kshort line

---
 .../StrippingRD/StrippingDarkBoson.py         | 64 ++++++++++++++++++-
 1 file changed, 62 insertions(+), 2 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 05f4b2ba1..9372fcca0 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -12,9 +12,9 @@
 """
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
-Author: M. Williams, D. Craik, B. Delaney
+Author: M. Williams, D. Craik, B. Delaney, A. Casais Vidal
 """
-__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
+__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney","Adrian Casais Vidal"]
 
 moduleName = "DarkBoson"
 
@@ -58,6 +58,10 @@ default_config = {
     "BUILDERTYPE": "DarkBosonConf",
     "STREAMS": {
         "Bhadron": [
+            "StrippingB2KpiX2KshortKpiDarkBosonLine",
+            "StrippingB2KpiX2KshortKpiDDDarkBosonLine",
+            "StrippingB2KX2KshortKpiDarkBosonLine",
+            "StrippingB2KX2KshortKpiDDDarkBosonLine",
             "StrippingB2KX2KKPiDarkBosonLine",
             "StrippingB2KpiX2KKPiDarkBosonLine",
             "StrippingB2KX2KKPiMDarkBosonLine",
@@ -248,6 +252,18 @@ default_config = {
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "0*MeV",
         },
+        "XKshort":{# making the X for kshort kpi decays
+            "VCHI2DOF_MAX": 5,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+        },
+        "XKshortDD":{# making the X for kshort kpi decays
+            "VCHI2DOF_MAX": 15,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+            "HAD_MINIPCHI2_MIN": 30,
+        },
         "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
         "X3H": {  # making the X for 3H decays
             "VCHI2DOF_MAX": 10,
@@ -378,6 +394,10 @@ class DarkBosonConf(LineBuilder):
         kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX])
         pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX])
         pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX])
+        
+        ksX = makeX("Kshort2PiPi", default_config["XKshort"], "KS0 -> pi+ pi-", [piX])
+        ksDDX = makeX("Kshort2PiPiDD", default_config["XKshortDD"], "KS0 -> pi+ pi-", [piDX])
+        
         ## 4-6H modes
         fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX])
         sixpiX = makeX(
@@ -400,6 +420,10 @@ class DarkBosonConf(LineBuilder):
         ##HHH modes
         kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX])
         kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX])
+
+        kshortKPiX = makeX("KshortKpi", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksX])
+        kshortKPiDDX = makeX("kshortKpiDD", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksDDX])
+
         pipipiX = makeX(
             "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX]
         )
@@ -772,6 +796,40 @@ class DarkBosonConf(LineBuilder):
             default_config["B2KX"],
         )
 
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2KshortKpi",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [kshortKPiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2KshortKpiDD",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [kshortKPiDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2KshortKpi",
+            ["[B+ -> K+ KS0]cc"],
+            [kshortKPiX, kB],
+            default_config["B2KX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2KshortKpiDD",
+            ["[B+ -> K+ KS0]cc"],
+            [kshortKPiDDX, kB],
+            default_config["B2KX"],
+        )
+
+
+
         self._makeBLine(
             "B2KX2EtaPiPi2GG",
             ["[B+ -> K+ KS0]cc"],
@@ -995,6 +1053,8 @@ class DarkBosonConf(LineBuilder):
             ret = "KS0 -> ^pi+ ^pi- ^pi0"
             if name.find("M") == -1:
                 ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2KshortKpi") > -1:
+            ret = "[KS0 -> ^(KS0 -> ^pi+ ^pi-) ^K+ ^pi-]CC"
         elif name.find("X2KKPi") > -1:
             ret = "KS0 -> ^K+ ^K- ^pi0"
             if name.find("M") == -1:
-- 
GitLab


From 5fbf76413689858f8ffbad55b1be5fe9bc518fcc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 12:25:16 +0200
Subject: [PATCH 06/18] fix typo

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 9372fcca0..1bb8393e7 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMSS",
+            "B2KpiX2MuMuSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-- 
GitLab


From 38fbcff4d3755e59994c6867ccefedfce25d0341 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 14:13:38 +0200
Subject: [PATCH 07/18] Added RelInfo tool to neutrals

---
 .../StrippingRD/StrippingDarkBoson.py         | 23 +++++++++++++++----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 1bb8393e7..d5e1c2d3e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -218,7 +218,7 @@ default_config = {
         },
         "gX": {  # gamma from X
             "PT_MIN": "500*MeV",
-            "P_MIN": "1000*MeV",
+            "P_MIN": "3000*MeV",
             "CL_MIN": "0.3",
         },
         "etaX": {  # eta->gg from X
@@ -256,13 +256,13 @@ default_config = {
             "VCHI2DOF_MAX": 5,
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "250*MeV",
-            "HAD_MINIPCHI2_MIN": 25,
+            "HAD_MINIPCHI2_MIN": 40,
         },
         "XKshortDD":{# making the X for kshort kpi decays
             "VCHI2DOF_MAX": 15,
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "250*MeV",
-            "HAD_MINIPCHI2_MIN": 30,
+            "HAD_MINIPCHI2_MIN": 40,
         },
         "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
         "X3H": {  # making the X for 3H decays
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMuSS",
+            "B2KpiX2MuMSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
@@ -993,6 +993,7 @@ class DarkBosonConf(LineBuilder):
             }
         )
         dls = self._getDaugLocs(decStr, "ConeIso15p")
+        
         relInfoTools.append(
             {
                 "Type": "RelInfoConeVariables",
@@ -1002,6 +1003,16 @@ class DarkBosonConf(LineBuilder):
                 "DaughterLocations": dls,
             }
         )
+
+        dls = self._getDaugLocs(decStr, "GammaIso",onlyGamma=True)
+        relInfoTools.append(
+            {
+                "Type": "RelInfoGammaIso",
+                "Location": "GammaIso",
+                "DaughterLocations": dls,
+            }
+        )
+
         #        dls = self._getDaugLocs(name,"TrackIsoBDTp")
         #        relInfoTools.append(
         #        { "Type": "RelInfoTrackIsolationBDT",
@@ -1016,11 +1027,13 @@ class DarkBosonConf(LineBuilder):
         relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"])
         return relInfoTools
 
-    def _getDaugLocs(self, decay, locName):
+    def _getDaugLocs(self, decay, locName,onlyGamma=False):
         dls = {}
         decay = decay.split("^")
         for i in range(1, len(decay)):
             dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])])
+            if onlyGamma and not ('^gamma' in dec or '^pi0' in dec) :
+                continue
             loc = locName + str(i)
             dls[dec] = loc
         return dls
-- 
GitLab


From c25dd2f9e1af3304c4517538862d9f64485eb980 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 14:17:24 +0200
Subject: [PATCH 08/18] fix conflicts

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index d5e1c2d3e..659d9847e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -218,7 +218,7 @@ default_config = {
         },
         "gX": {  # gamma from X
             "PT_MIN": "500*MeV",
-            "P_MIN": "3000*MeV",
+            "P_MIN": "1000*MeV",
             "CL_MIN": "0.3",
         },
         "etaX": {  # eta->gg from X
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMSS",
+            "B2KpiX2MuMuSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-- 
GitLab


From 373cb9662a1d69c49bf90683b61b090e08e0017d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais?= <adrian.casais@rai.usc.es>
Date: Mon, 3 Jul 2023 16:57:30 +0200
Subject: [PATCH 09/18] Format first

---
 .../StrippingRD/StrippingDarkBoson.py         | 1694 ++++++++++-------
 1 file changed, 966 insertions(+), 728 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 536db561b..4cea3e650 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -8,17 +8,17 @@
 # granted to it by virtue of its status as an Intergovernmental Organization  #
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-'''
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+"""
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
 Author: M. Williams, D. Craik
-'''
-__author__ = ['Mike Williams', 'Dan Craik']
+"""
+__author__ = ["Mike Williams", "Dan Craik"]
 
-moduleName = 'DarkBoson'
+moduleName = "DarkBoson"
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
 import re
 from Gaudi.Configuration import *
@@ -29,913 +29,1151 @@ from PhysSelPython.Wrappers import EventSelection
 from StrippingConf.StrippingLine import StrippingLine
 from StrippingUtils.Utils import LineBuilder
 from Configurables import LoKi__VoidFilter
-from StandardParticles import StdAllNoPIDsPions, StdAllNoPIDsKaons, \
-     StdAllNoPIDsProtons, StdNoPIDsUpPions, StdAllLooseMuons, \
-     StdLooseDownMuons
+from StandardParticles import (
+    StdAllNoPIDsPions,
+    StdAllNoPIDsKaons,
+    StdAllNoPIDsProtons,
+    StdNoPIDsUpPions,
+    StdAllLooseMuons,
+    StdLooseDownMuons,
+)
 from Beauty2Charm_LoKiCuts import LoKiCuts
-from StandardParticles import StdAllLooseGammaLL, StdAllLooseGammaDD, \
-    StdAllLooseElectrons, StdLooseAllPhotons#, StdDiElectronFromTracks
+from StandardParticles import (
+    StdAllLooseGammaLL,
+    StdAllLooseGammaDD,
+    StdAllLooseElectrons,
+    StdLooseAllPhotons,
+)  # , StdDiElectronFromTracks
 from Configurables import SubstitutePID
 from copy import deepcopy
 from CommonParticles.Utils import *
-from Configurables import DiElectronMaker,ProtoParticleCALOFilter
+from Configurables import DiElectronMaker, ProtoParticleCALOFilter
 from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
 # Default configuration dictionary
 default_config = {
-    'NAME' : 'DarkBoson',
-    'BUILDERTYPE' : 'DarkBosonConf' ,
-    'STREAMS' : {
-        'Bhadron' : [
-           'StrippingB2KX2KKPiDarkBosonLine',
-           'StrippingB2KpiX2KKPiDarkBosonLine',
-           'StrippingB2KX2KKPiMDarkBosonLine',
-           'StrippingB2KpiX2KKPiMDarkBosonLine',
-           'StrippingB2KX2PiPiPiDarkBosonLine',
-           'StrippingB2KpiX2PiPiPiDarkBosonLine',
-           'StrippingB2KX2PiPiPiMDarkBosonLine',
-           'StrippingB2KpiX2PiPiPiMDarkBosonLine',
-           'StrippingB2KX2EtaPiPi23PIDarkBosonLine',
-           'StrippingB2KpiX2EtaPiPi23PIDarkBosonLine',
-           'StrippingB2KX2EtaPiPi2GGDarkBosonLine',
-           'StrippingB2KpiX2EtaPiPi2GGDarkBosonLine',
-           'StrippingB2KX24PiDarkBosonLine',
-           'StrippingB2KpiX24PiDarkBosonLine',
-           'StrippingB2KX26PiDarkBosonLine',
-           'StrippingB2KpiX26PiDarkBosonLine',
-           'StrippingB2KX22K2PiDarkBosonLine',
-           'StrippingB2KpiX22K2PiDarkBosonLine',
-           'StrippingB2KX24KDarkBosonLine',
-           'StrippingB2KpiX24KDarkBosonLine',
-           ],
-        'Dimuon' : [
-           'StrippingB2KpiX2MuMuDDDarkBosonLine',
-           'StrippingB2KpiX2MuMuDDSSDarkBosonLine',
-           #'StrippingB2KKX2MuMuDDDarkBosonLine',
-           #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
-           'StrippingB2KX2MuMuDDDarkBosonLine',
-           'StrippingB2KX2MuMuDDSSDarkBosonLine',
-           #'StrippingB2KpiX2PiPiDDDarkBosonLine',
-           #'StrippingB2KKX2PiPiDDDarkBosonLine',
-           #'StrippingB2KX2PiPiDDDarkBosonLine',
-           #'StrippingB2KX2PiPiDDSSDarkBosonLine',
-           #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-           #'StrippingB2KpiX2KKDDDarkBosonLine',
-           #'StrippingB2KKX2KKDDDarkBosonLine',
-           #'StrippingB2KX2KKDDDarkBosonLine',
-           #'StrippingB2KX2KKDDSSDarkBosonLine',
-           ],
-        'Leptonic' : [
-           'StrippingB2KpiX2MuMuDarkBosonLine',
-           'StrippingB2KpiX2MuMuSSDarkBosonLine',
-           #'StrippingB2KKX2MuMuDarkBosonLine',
-           #'StrippingB2KKX2MuMuSSDarkBosonLine',
-           'StrippingB2KX2MuMuDarkBosonLine',
-           'StrippingB2KX2MuMuSSDarkBosonLine',
-           'StrippingB2KpiX2PiPiDarkBosonLine',
-           #'StrippingB2KKX2PiPiDarkBosonLine',
-           'StrippingB2KX2PiPiDarkBosonLine',
-           'StrippingB2KX2PiPiSSDarkBosonLine',
-           #'StrippingB2RhoX2MuMuDarkBosonLine',
-           'StrippingB2KpiX2KKDarkBosonLine',
-           #'StrippingB2KKX2KKDarkBosonLine',
-           'StrippingB2KX2KKDarkBosonLine',
-           'StrippingB2KX2KKSSDarkBosonLine',
-           'StrippingB2KpiX2EEDarkBosonLine',
-           'StrippingB2KpiX2EESSDarkBosonLine',
-           #'StrippingB2KKX2EEDarkBosonLine',
-           #'StrippingB2KKX2EESSDarkBosonLine',
-           'StrippingB2KX2EEDarkBosonLine',
-           'StrippingB2KX2EESSDarkBosonLine',
-           'StrippingB2JKDarkBosonLine',
-           'StrippingB2JKstDarkBosonLine',
-           'StrippingB2KstX2GammaGammaDarkBosonLine',
-           'StrippingB2KstX2PiGammaDarkBosonLine',
-           'StrippingB2KstX2PiGammaMDarkBosonLine',
-           ]
+    "NAME": "DarkBoson",
+    "BUILDERTYPE": "DarkBosonConf",
+    "STREAMS": {
+        "Bhadron": [
+            "StrippingB2KX2KKPiDarkBosonLine",
+            "StrippingB2KpiX2KKPiDarkBosonLine",
+            "StrippingB2KX2KKPiMDarkBosonLine",
+            "StrippingB2KpiX2KKPiMDarkBosonLine",
+            "StrippingB2KX2PiPiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiPiDarkBosonLine",
+            "StrippingB2KX2PiPiPiMDarkBosonLine",
+            "StrippingB2KpiX2PiPiPiMDarkBosonLine",
+            "StrippingB2KX2EtaPiPi23PIDarkBosonLine",
+            "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine",
+            "StrippingB2KX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KX24PiDarkBosonLine",
+            "StrippingB2KpiX24PiDarkBosonLine",
+            "StrippingB2KX26PiDarkBosonLine",
+            "StrippingB2KpiX26PiDarkBosonLine",
+            "StrippingB2KX22K2PiDarkBosonLine",
+            "StrippingB2KpiX22K2PiDarkBosonLine",
+            "StrippingB2KX24KDarkBosonLine",
+            "StrippingB2KpiX24KDarkBosonLine",
+        ],
+        "Dimuon": [
+            "StrippingB2KpiX2MuMuDDDarkBosonLine",
+            "StrippingB2KpiX2MuMuDDSSDarkBosonLine",
+            #'StrippingB2KKX2MuMuDDDarkBosonLine',
+            #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
+            "StrippingB2KX2MuMuDDDarkBosonLine",
+            "StrippingB2KX2MuMuDDSSDarkBosonLine",
+            #'StrippingB2KpiX2PiPiDDDarkBosonLine',
+            #'StrippingB2KKX2PiPiDDDarkBosonLine',
+            #'StrippingB2KX2PiPiDDDarkBosonLine',
+            #'StrippingB2KX2PiPiDDSSDarkBosonLine',
+            #'StrippingB2RhoX2MuMuDDDarkBosonLine',
+            #'StrippingB2KpiX2KKDDDarkBosonLine',
+            #'StrippingB2KKX2KKDDDarkBosonLine',
+            #'StrippingB2KX2KKDDDarkBosonLine',
+            #'StrippingB2KX2KKDDSSDarkBosonLine',
+        ],
+        "Leptonic": [
+            "StrippingB2KpiX2MuMuDarkBosonLine",
+            "StrippingB2KpiX2MuMuSSDarkBosonLine",
+            #'StrippingB2KKX2MuMuDarkBosonLine',
+            #'StrippingB2KKX2MuMuSSDarkBosonLine',
+            "StrippingB2KX2MuMuDarkBosonLine",
+            "StrippingB2KX2MuMuSSDarkBosonLine",
+            "StrippingB2KpiX2PiPiDarkBosonLine",
+            #'StrippingB2KKX2PiPiDarkBosonLine',
+            "StrippingB2KX2PiPiDarkBosonLine",
+            "StrippingB2KX2PiPiSSDarkBosonLine",
+            #'StrippingB2RhoX2MuMuDarkBosonLine',
+            "StrippingB2KpiX2KKDarkBosonLine",
+            #'StrippingB2KKX2KKDarkBosonLine',
+            "StrippingB2KX2KKDarkBosonLine",
+            "StrippingB2KX2KKSSDarkBosonLine",
+            "StrippingB2KpiX2EEDarkBosonLine",
+            "StrippingB2KpiX2EESSDarkBosonLine",
+            #'StrippingB2KKX2EEDarkBosonLine',
+            #'StrippingB2KKX2EESSDarkBosonLine',
+            "StrippingB2KX2EEDarkBosonLine",
+            "StrippingB2KX2EESSDarkBosonLine",
+            "StrippingB2JKDarkBosonLine",
+            "StrippingB2JKstDarkBosonLine",
+            "StrippingB2KstX2GammaGammaDarkBosonLine",
+            "StrippingB2KstX2PiGammaDarkBosonLine",
+            "StrippingB2KstX2PiGammaMDarkBosonLine",
+        ],
     },
-    'WGs'     : [ 'RD' ],
-    'CONFIG'  : {
-    "KB" : { # K directly from B
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '2000*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1,
+    "WGs": ["RD"],
+    "CONFIG": {
+        "KB": {  # K directly from B
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "2000*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "KBhard": {  # K directly from B only for B -> KS0(pipi) K
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 36,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.2,
+        },
+        "PiB": {  # pi directly from B
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "2000*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.2,
+        },
+        "KX": {  # K from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "PiX": {  # pi from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "250*MeV",
+            "P_MIN": "3000*MeV",
+            "MIPCHI2DV_MIN": 36,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.2,
+        },
+        "KDX": {  # K DOWN from X
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNK_MIN": 0.1,
+        },
+        "PiDX": {  # pi DOWN from X
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PROBNNpi_MIN": 0.1,
+        },
+        "MuX": {  # muon from X
+            "TRCHI2DOF_MAX": 3,
+            "PT_MIN": "100*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 9,
+            "TRGHP_MAX": 0.3,
+            "PIDmu_MIN": -5,
+        },
+        "MuJ": {  # muon from J/psi
+            "TRCHI2DOF_MAX": 4,
+            "PT_MIN": "125*MeV",
+            "P_MIN": "0*MeV",
+            "MIPCHI2DV_MIN": 25,
+            "TRGHP_MAX": 0.3,
+            "PIDmu_MIN": -4,
+        },
+        "E": {  # electron cuts
+            "TRCHI2DOF_MAX": 5,
+            "MIPCHI2DV_MIN": 9,
+            "PT_MIN": "100*MeV",
+            "TRGHP_MAX": 0.4,
+            "PIDe_MIN": 0,
+        },
+        "gX": {  # gamma from X
+            "PT_MIN": "500*MeV",
+            "P_MIN": "1000*MeV",
+            "CL_MIN": "0.3",
+        },
+        "etaX": {  # eta->gg from X
+            "MM_MIN": "450*MeV",
+            "MM_MAX": "650*MeV",
+            "PT_MIN": "500*MeV",
+            "P_MIN": "2000*MeV",
+            "CL_MIN": "0.2",
+        },
+        "pizMX": {  # merged pi0 from X
+            "PT_MIN": "500*MeV",
+            "P_MIN": "3000*MeV",
+            "CL_MIN": "0.1",
+        },
+        "pizRX": {  # resolved pi0 from X
+            "PT_MIN": "500*MeV",
+            "CL_MIN": "0.1",
+        },
+        "XLL": {  # making the X for LL
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+        },
+        "XLLhard": {  # making the X for LL hard vertex for the pions
+            "VCHI2DOF_MAX": 5,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+        },
+        "XDD": {  # making X for DD
+            "VCHI2DOF_MAX": 15,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "0*MeV",
+        },
+        "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
+        "X3H": {  # making the X for 3H decays
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "500*MeV",
+            "SUMPT_MIN": "0*MeV",
+            "HAD_MINIPCHI2_MIN": 16,
+        },
+        "XETAHH": {  # making the X for eta pipi decays
+            "VCHI2DOF_MAX": 10,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "2000*MeV",
+            "SUMPT_MIN": "0*MeV",
+            "HAD_MINIPCHI2_MIN": 16,
+        },
+        "J": {  # cuts on J/psi
+            "VCHI2DOF_MAX": 12,
+            "ADAMASS_MAX": "100*MeV",
+        },
+        "B2KX": {  # B -> K X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+            "PT_MIN": "1000*MeV",
+        },
+        "B2KXTight": {  # B -> K X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+            "PT_MIN": "3000*MeV",
+        },
+        "B2HHX": {  # B -> Kpi X, KK X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 9,
+            "PT_MIN": "1000*MeV",
+        },
+        "B2HHXTight": {  # B -> Kpi X, KK X
+            "SUMPT_MIN": "0*MeV",
+            "VCHI2DOF_MAX": 15,
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "HAD_MINIPCHI2_MIN": 9,
+            "PT_MIN": "3000*MeV",
+        },
+        "B2KstX_X2neutrals": {  # B -> Kpi X, X -> gg, gpi0
+            "SUMPT_MIN": "0*MeV",
+            "BPVIPCHI2_MAX": 10,
+            "BPVLTIME_MIN": "0.2*ps",
+            #'BPVDIRA_MIN'   : 0.999,
+            "AM_MIN": "4800*MeV",
+            "AM_MAX": "5800*MeV",
+            "PT_MIN": "3000*MeV",
+        },
+        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25},
+        "GECNTrkMax": 250,
+        "CommonRelInfoTools": [
+            {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"},
+            {"Type": "RelInfoVertexIsolationBDT", "Location": "VtxIsoInfoBDT"},
+            {
+                "Type": "RelInfoBs2MuMuBIsolations",
+                "Variables": [],
+                "Location": "BsMuMuBIsolation",
+                "tracktype": 3,
+                "makeTrackCuts": False,
+            },
+        ],
     },
-    "KBhard" : { # K directly from B only for B -> KS0(pipi) K
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 36,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.2,
-    },
-    "PiB" : { # pi directly from B
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '2000*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.2
-    },
-    "KX" : { # K from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1
-    },
-    "PiX" : { # pi from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '250*MeV',
-    'P_MIN'         : '3000*MeV',
-    'MIPCHI2DV_MIN' : 36,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.2
-    },
-    "KDX" : { # K DOWN from X
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNK_MIN'   : 0.1
-    },
-    "PiDX" : { # pi DOWN from X
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PROBNNpi_MIN'  : 0.1
-    },
-    "MuX" : { # muon from X
-    'TRCHI2DOF_MAX' : 3,
-    'PT_MIN'        : '100*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 9,
-    'TRGHP_MAX'     : 0.3,
-    'PIDmu_MIN'     : -5
-    },
-    "MuJ" : { # muon from J/psi
-    'TRCHI2DOF_MAX' : 4,
-    'PT_MIN'        : '125*MeV',
-    'P_MIN'         : '0*MeV',
-    'MIPCHI2DV_MIN' : 25,
-    'TRGHP_MAX'     : 0.3,
-    'PIDmu_MIN'     : -4
-    },
-    "E" : { # electron cuts
-    'TRCHI2DOF_MAX' : 5,
-    'MIPCHI2DV_MIN' : 9,
-    'PT_MIN'        : '100*MeV',
-    'TRGHP_MAX'     : 0.4,
-    'PIDe_MIN'      : 0
-    },
-    "gX" : { # gamma from X
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '1000*MeV',
-    'CL_MIN'        : '0.3',
-    },
-    "etaX" : { # eta->gg from X
-    'MM_MIN'        : '450*MeV',
-    'MM_MAX'        : '650*MeV',
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '2000*MeV',
-    'CL_MIN'        : '0.2',
-    },
-    "pizMX" : { # merged pi0 from X
-    'PT_MIN'        : '500*MeV',
-    'P_MIN'         : '3000*MeV',
-    'CL_MIN'        : '0.1',
-    },
-    "pizRX" : { # resolved pi0 from X
-    'PT_MIN'        : '500*MeV',
-    'CL_MIN'        : '0.1',
-    },
-    "XLL" : { # making the X for LL
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '250*MeV'
-    },
-    "XLLhard" : { # making the X for LL hard vertex for the pions
-    'VCHI2DOF_MAX'  : 5,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '250*MeV'
-    },
-    "XDD" : { # making X for DD
-    'VCHI2DOF_MAX'  : 15,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '0*MeV'
-    },
-    "XGG" : { # making the X for diphoton
-    'PT_MIN'        : '2000*MeV'
-    },
-    "X3H" : { # making the X for 3H decays
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '500*MeV',
-    'SUMPT_MIN'     : '0*MeV',
-    'HAD_MINIPCHI2_MIN' : 16,
-    },
-    "XETAHH" : { # making the X for eta pipi decays
-    'VCHI2DOF_MAX'  : 10,
-    'BPVVDCHI2_MIN' : 25,
-    'PT_MIN'        : '2000*MeV',
-    'SUMPT_MIN'     : '0*MeV',
-    'HAD_MINIPCHI2_MIN' : 16,
-    },
-    "J" : { # cuts on J/psi
-    'VCHI2DOF_MAX'  : 12,
-    'ADAMASS_MAX'   : '100*MeV',
-    },
-    "B2KX" : { # B -> K X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 25,
-    'PT_MIN'        : '1000*MeV'
-    },
-    "B2KXTight" : { # B -> K X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 25,
-    'PT_MIN'        : '3000*MeV'
-    },
-    "B2HHX" : { # B -> Kpi X, KK X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 9,
-    'PT_MIN'        : '1000*MeV'
-    },
-    "B2HHXTight" : { # B -> Kpi X, KK X
-    'SUMPT_MIN'     : '0*MeV',
-    'VCHI2DOF_MAX'  : 15,
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'HAD_MINIPCHI2_MIN' : 9,
-    'PT_MIN'        : '3000*MeV'
-    },
-    "B2KstX_X2neutrals" : { # B -> Kpi X, X -> gg, gpi0
-    'SUMPT_MIN'     : '0*MeV',
-    'BPVIPCHI2_MAX' : 10,
-    'BPVLTIME_MIN'  : '0.2*ps',
-    #'BPVDIRA_MIN'   : 0.999,
-    'AM_MIN'        : '4800*MeV',
-    'AM_MAX'        : '5800*MeV',
-    'PT_MIN'        : '3000*MeV'
-    },
-    "Prescales" : { "SS" : 0.1, "DD" : 1.0, "KK": 0.25},
-    "GECNTrkMax" : 250,
-    "CommonRelInfoTools" : [ { "Type": "RelInfoVertexIsolation", "Location":"VtxIsoInfo" },
-                             { "Type": "RelInfoVertexIsolationBDT", "Location":"VtxIsoInfoBDT" },
-                             { "Type" : "RelInfoBs2MuMuBIsolations",
-                               "Variables" : [],
-                               "Location"  : "BsMuMuBIsolation",
-                               "tracktype" : 3,
-                               "makeTrackCuts" : False, },
-                             ]
-    }
 }
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-class DarkBosonConf(LineBuilder):
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-    __configuration_keys__ = default_config['CONFIG'].keys()
 
-    def __init__(self, moduleName, default_config) :
+class DarkBosonConf(LineBuilder):
+    __configuration_keys__ = default_config["CONFIG"].keys()
 
+    def __init__(self, moduleName, default_config):
         LineBuilder.__init__(self, moduleName, default_config)
         piD = DataOnDemand(Location="Phys/StdNoPIDsDownPions/Particles")
         kD = DataOnDemand(Location="Phys/StdLooseDownKaons/Particles")
         pizM = DataOnDemand(Location="Phys/StdLooseMergedPi0/Particles")
         pizR = DataOnDemand(Location="Phys/StdLooseResolvedPi0/Particles")
         eta = DataOnDemand(Location="Phys/StdLooseResolvedEta/Particles")
-        gC = MergedSelection("gC",RequiredSelections=[StdAllLooseGammaLL,StdAllLooseGammaDD])
+        gC = MergedSelection(
+            "gC", RequiredSelections=[StdAllLooseGammaLL, StdAllLooseGammaDD]
+        )
 
         # pre-filter inputs
-        kB = filterInputs('KB',default_config['KB'],[StdAllNoPIDsKaons])
-        kBhard = filterInputs('KBhard',default_config['KBhard'],[StdAllNoPIDsKaons])
-        piB = filterInputs('PiB',default_config['PiB'],[StdAllNoPIDsPions])
-        kX = filterInputs('KX',default_config['KX'],[StdAllNoPIDsKaons])
-        piX = filterInputs('PiX',default_config['PiX'],[StdAllNoPIDsPions])
-        kDX = filterInputs('KDX',default_config['KDX'],[kD])
-        piDX = filterInputs('PiDX',default_config['PiDX'],[piD])
-        muX = filterInputs('MuX',default_config['MuX'],[StdAllLooseMuons])
-        muDX = filterInputs('MuDX',default_config['MuX'],[StdLooseDownMuons])
-        muJ = filterInputs('MuJ',default_config['MuJ'],[StdAllLooseMuons])
-
-        gX = filterInputs('gX',default_config['gX'],[StdLooseAllPhotons])
-        pizMX = filterInputs('pizMX',default_config['pizMX'],[pizM])
-        pizRX = filterInputs('pizRX',default_config['pizRX'],[pizR])
-        etaX = filterInputs('etaX',default_config['etaX'],[eta])
-
-        eta23piX = makeEta([piX,pizRX],"ForX")
+        kB = filterInputs("KB", default_config["KB"], [StdAllNoPIDsKaons])
+        kBhard = filterInputs("KBhard", default_config["KBhard"], [StdAllNoPIDsKaons])
+        piB = filterInputs("PiB", default_config["PiB"], [StdAllNoPIDsPions])
+        kX = filterInputs("KX", default_config["KX"], [StdAllNoPIDsKaons])
+        piX = filterInputs("PiX", default_config["PiX"], [StdAllNoPIDsPions])
+        kDX = filterInputs("KDX", default_config["KDX"], [kD])
+        piDX = filterInputs("PiDX", default_config["PiDX"], [piD])
+        muX = filterInputs("MuX", default_config["MuX"], [StdAllLooseMuons])
+        muDX = filterInputs("MuDX", default_config["MuX"], [StdLooseDownMuons])
+        muJ = filterInputs("MuJ", default_config["MuJ"], [StdAllLooseMuons])
+
+        gX = filterInputs("gX", default_config["gX"], [StdLooseAllPhotons])
+        pizMX = filterInputs("pizMX", default_config["pizMX"], [pizM])
+        pizRX = filterInputs("pizRX", default_config["pizRX"], [pizR])
+        etaX = filterInputs("etaX", default_config["etaX"], [eta])
+
+        eta23piX = makeEta([piX, pizRX], "ForX")
 
         # make/filter X
-        eestd = DataOnDemand(Location='Phys/StdDiElectronFromTracks/Particles')
-        ee = filterEE('OS',default_config['E'],default_config['XLL'],[eestd])
-        #eeDD = makeEEdd(config)
-        mmX = makeX('MuMu',default_config['XLL'],'KS0 -> mu+ mu-',[muX])
-        mmDDX = makeX('MuMuDD',default_config['XDD'],'KS0 -> mu+ mu-',[muDX])
-        kkX = makeX('KK',default_config['XLL'],'KS0 -> K+ K-',[kX])
-        kkDDX = makeX('KKDD',default_config['XDD'],'KS0 -> K+ K-',[kDX])
-        pipiX = makeX('PiPi',default_config['XLLhard'],'KS0 -> pi+ pi-',[piX])
-        pipiDDX = makeX('PiPiDD',default_config['XDD'],'KS0 -> pi+ pi-',[piDX])
+        eestd = DataOnDemand(Location="Phys/StdDiElectronFromTracks/Particles")
+        ee = filterEE("OS", default_config["E"], default_config["XLL"], [eestd])
+        # eeDD = makeEEdd(config)
+        mmX = makeX("MuMu", default_config["XLL"], "KS0 -> mu+ mu-", [muX])
+        mmDDX = makeX("MuMuDD", default_config["XDD"], "KS0 -> mu+ mu-", [muDX])
+        kkX = makeX("KK", default_config["XLL"], "KS0 -> K+ K-", [kX])
+        kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX])
+        pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX])
+        pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX])
         ## 4-6H modes
-        fourpiX = makeX('4Pi',  default_config['XLL'],'KS0 -> pi+ pi+ pi- pi-',[piX])
-        sixpiX  = makeX('6Pi',  default_config['XLL'],'KS0 -> pi+ pi+ pi- pi- pi0 pi0',[piX,pizRX])
-        KKpipiX = makeX('2K2Pi',default_config['XLL'],'KS0 -> K+ K- pi+ pi-',[kX,piX])
-        fourKX  = makeX('4K',   default_config['XLL'],'KS0 -> K+ K+ K- K-',[kX])
+        fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX])
+        sixpiX = makeX(
+            "6Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi- pi0 pi0", [piX, pizRX]
+        )
+        KKpipiX = makeX(
+            "2K2Pi", default_config["XLL"], "KS0 -> K+ K- pi+ pi-", [kX, piX]
+        )
+        fourKX = makeX("4K", default_config["XLL"], "KS0 -> K+ K+ K- K-", [kX])
         ## gamma modes
-        ggX   = makeX2neutrals('GammaGamma',default_config['XGG'],'pi0 -> gamma gamma',[gX])
-        pigX  = makeX2neutrals('PiGamma',   default_config['XGG'],'eta -> pi0 gamma',[gX,pizRX])
-        pigMX = makeX2neutrals('PiGammaM',  default_config['XGG'],'eta -> pi0 gamma',[gX,pizMX])
+        ggX = makeX2neutrals(
+            "GammaGamma", default_config["XGG"], "pi0 -> gamma gamma", [gX]
+        )
+        pigX = makeX2neutrals(
+            "PiGamma", default_config["XGG"], "eta -> pi0 gamma", [gX, pizRX]
+        )
+        pigMX = makeX2neutrals(
+            "PiGammaM", default_config["XGG"], "eta -> pi0 gamma", [gX, pizMX]
+        )
         ##HHH modes
-        kkpiX       = makeX('KKPi',       default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizRX])
-        kkpiMX      = makeX('KKPiM',      default_config['X3H'],'KS0 -> K+ K- pi0',[kX,pizMX])
-        pipipiX     = makeX('PiPiPi',     default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizRX])
-        pipipiMX    = makeX('PiPiPiM',    default_config['X3H'],'KS0 -> pi+ pi- pi0',[piX,pizMX])
-        #kkpiDDX     = makeX('KKPiDD',     default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX])
-        #kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
-        #pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
-        #pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
-        etapipiGGX  = makeX('EtaPiPi2GG', default_config['XETAHH'],'KS0 -> eta pi+ pi-',[etaX,piX])
-        etapipi3PIX = makeX('EtaPiPi23PI',default_config['XETAHH'],'KS0 -> eta pi+ pi-',[eta23piX,piX])
+        kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX])
+        kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX])
+        pipipiX = makeX(
+            "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX]
+        )
+        pipipiMX = makeX(
+            "PiPiPiM", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizMX]
+        )
+        # kkpiDDX     = makeX('KKPiDD',     default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizRX])
+        # kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
+        # pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
+        # pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
+        etapipiGGX = makeX(
+            "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX]
+        )
+        etapipi3PIX = makeX(
+            "EtaPiPi23PI",
+            default_config["XETAHH"],
+            "KS0 -> eta pi+ pi-",
+            [eta23piX, piX],
+        )
 
         # SS X
-        eeSS = filterEE('SS',default_config['E'],default_config['XLL'],[makeEESS()])
-        mmSSX = makeX('MuMuSS',default_config['XLL'],'[KS0 -> mu+ mu+]cc',[muX])
-        mmSSDDX = makeX('MuMuSSDD',default_config['XDD'],'[KS0 -> mu+ mu+]cc',[muDX])
-        kkSSX = makeX('KKSS',default_config['XLL'],'[KS0 -> K+ K+]cc',[kX])
-        kkSSDDX = makeX('KKSSDD',default_config['XDD'],'[KS0 -> K+ K+]cc',[kDX])
-        pipiSSX = makeX('PiPiSS',default_config['XLL'],'[KS0 -> pi+ pi+]cc',[piX])
-        pipiSSDDX = makeX('PiPiSSDD',default_config['XDD'],'[KS0 -> pi+ pi+]cc',[piDX])
-        preSS = default_config['Prescales']['SS']
-
-        preDD = default_config['Prescales']['DD']
-        preKK = default_config['Prescales']['KK']
-
-        j = makeJ(default_config['J'],[muJ])
-        kpiB = makeKst([kB,piB])
+        eeSS = filterEE("SS", default_config["E"], default_config["XLL"], [makeEESS()])
+        mmSSX = makeX("MuMuSS", default_config["XLL"], "[KS0 -> mu+ mu+]cc", [muX])
+        mmSSDDX = makeX("MuMuSSDD", default_config["XDD"], "[KS0 -> mu+ mu+]cc", [muDX])
+        kkSSX = makeX("KKSS", default_config["XLL"], "[KS0 -> K+ K+]cc", [kX])
+        kkSSDDX = makeX("KKSSDD", default_config["XDD"], "[KS0 -> K+ K+]cc", [kDX])
+        pipiSSX = makeX("PiPiSS", default_config["XLL"], "[KS0 -> pi+ pi+]cc", [piX])
+        pipiSSDDX = makeX(
+            "PiPiSSDD", default_config["XDD"], "[KS0 -> pi+ pi+]cc", [piDX]
+        )
+        preSS = default_config["Prescales"]["SS"]
+
+        preDD = default_config["Prescales"]["DD"]
+        preKK = default_config["Prescales"]["KK"]
+
+        j = makeJ(default_config["J"], [muJ])
+        kpiB = makeKst([kB, piB])
 
         # B -> K pi lines
-        self._makeBLine('B2KpiX2MuMu',['[B0 -> KS0 K+ pi-]cc'],
-                        [mmX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2MuMuDD',['[B0 -> K+ pi- KS0]cc'],
-                        [mmDDX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2EE',['[B0 -> K+ pi- KS0]cc'],
-                        [ee,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2KK',['[B0 -> K+ pi- KS0]cc'],
-                        [kkX,kB,piB],default_config['B2HHX'],preKK)
-
-        #self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2MuMu",
+            ["[B0 -> KS0 K+ pi-]cc"],
+            [mmX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EE",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [ee, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2KK",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkX, kB, piB],
+            default_config["B2HHX"],
+            preKK,
+        )
+
+        # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
         #                [kkDDX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2KKPi',['[B0 -> K+ pi- KS0]cc'],
-                        [kkpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2KKPiM',['[B0 -> K+ pi- KS0]cc'],
-                        [kkpiMX,kB,piB],default_config['B2HHX'])
-
-        #self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2KKPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKPiM",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkpiMX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # self._makeBLine('B2KpiX2KKPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [kkpiDDX,kB,piB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2KKPiDDM',['[B0 -> K+ pi- KS0]cc'],
         #                [kkpiDDMX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2PiPi',['[B0 -> K+ pi- KS0]cc'],
-                        [pipiX,kB,piB],default_config['B2HHX'],preSS)
+        self._makeBLine(
+            "B2KpiX2PiPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
-        #self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [pipiDDX,kB,piB],default_config['B2HHX'],preDD)
 
-        self._makeBLine('B2KpiX2PiPiPi',['[B0 -> K+ pi- KS0]cc'],
-                        [pipipiX,kB,piB],default_config['B2HHXTight'])
-
-        self._makeBLine('B2KpiX2PiPiPiM',['[B0 -> K+ pi- KS0]cc'],
-                        [pipipiMX,kB,piB],default_config['B2HHX'])
-
-        #self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'],
+        self._makeBLine(
+            "B2KpiX2PiPiPi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipipiX, kB, piB],
+            default_config["B2HHXTight"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2PiPiPiM",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipipiMX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # self._makeBLine('B2KpiX2PiPiPiDD',['[B0 -> K+ pi- KS0]cc'],
         #                [pipipiDDX,kB,piB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'],
+        # self._makeBLine('B2KpiX2PiPiPiDDM',['[B0 -> K+ pi- KS0]cc'],
         #                [pipipiDDMX,kB,piB],default_config['B2HHX'])
 
-        self._makeBLine('B2KpiX2EtaPiPi2GG',['[B0 -> K+ pi- KS0]cc'],
-                        [etapipiGGX,kB,piB],default_config['B2HHXTight'])
-
-        self._makeBLine('B2KpiX2EtaPiPi23PI',['[B0 -> K+ pi- KS0]cc'],
-                        [etapipi3PIX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX24Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [fourpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX26Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [sixpiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX22K2Pi',['[B0 -> K+ pi- KS0]cc'],
-                        [KKpipiX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX24K',['[B0 -> K+ pi- KS0]cc'],
-                        [fourKX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2MuMuSS',['[B0 -> K+ pi- KS0]cc'],
-                        [mmSSX,kB,piB],default_config['B2HHX'],preSS)
-
-        self._makeBLine('B2KpiX2MuMuDDSS',['[B0 -> K+ pi- KS0]cc'],
-                        [mmSSDDX,kB,piB],default_config['B2HHX'])
-
-        self._makeBLine('B2KpiX2EESS',['[B0 -> K+ pi- KS0]cc'],
-                        [eeSS,kB,piB],default_config['B2HHX'],preSS)
-
-        self._makeBLine('B2KstX2GammaGamma',['[B0 -> K*(892)0 pi0]cc'],
-                        [ggX,kpiB],default_config['B2KstX_X2neutrals'])
-
-        self._makeBLine('B2KstX2PiGamma',['[B0 -> K*(892)0 eta]cc'],
-                        [pigX,kpiB],default_config['B2KstX_X2neutrals'])
-
-        self._makeBLine('B2KstX2PiGammaM',['[B0 -> K*(892)0 eta]cc'],
-                        [pigMX,kpiB],default_config['B2KstX_X2neutrals'])
+        self._makeBLine(
+            "B2KpiX2EtaPiPi2GG",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [etapipiGGX, kB, piB],
+            default_config["B2HHXTight"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EtaPiPi23PI",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [etapipi3PIX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX24Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [fourpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX26Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [sixpiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX22K2Pi",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [KKpipiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX24K",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [fourKX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        self._makeBLine(
+            "B2KpiX2EESS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [eeSS, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KstX2GammaGamma",
+            ["[B0 -> K*(892)0 pi0]cc"],
+            [ggX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
+
+        self._makeBLine(
+            "B2KstX2PiGamma",
+            ["[B0 -> K*(892)0 eta]cc"],
+            [pigX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
+
+        self._makeBLine(
+            "B2KstX2PiGammaM",
+            ["[B0 -> K*(892)0 eta]cc"],
+            [pigMX, kpiB],
+            default_config["B2KstX_X2neutrals"],
+        )
 
         # B -> K K lines
-        #self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMu',['B0 -> K+ K- KS0'],
         #                [mmX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuDD',['B0 -> K+ K- KS0'],
         #                [mmDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2EE',['B0 -> K+ K- KS0'],
         #                [ee,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuSS',['B0 -> K+ K- KS0'],
         #                [mmSSX,kB],default_config['B2HHX'],preSS)
 
-        #self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2MuMuDDSS',['B0 -> K+ K- KS0'],
         #                [mmSSDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2EESS',['B0 -> K+ K- KS0'],
         #                [eeSS,kB],default_config['B2HHX'],preSS)
 
-        #self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2KK',['B0 -> K+ K- KS0'],
         #                [kkX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2KKDD',['B0 -> K+ K- KS0'],
         #                [kkDDX,kB],default_config['B2HHX'])
 
-        #self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2PiPi',['B0 -> K+ K- KS0'],
         #                [pipiX,kB],default_config['B2HHX'],preDD)
 
-        #self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'],
+        # self._makeBLine('B2KKX2PiPiDD',['B0 -> K+ K- KS0'],
         #                [pipiDDX,kB],default_config['B2HHX'])
 
         # B -> K lines
-        self._makeBLine('B2KX2MuMu',['[B+ -> K+ KS0]cc'],
-                        [mmX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2MuMu", ["[B+ -> K+ KS0]cc"], [mmX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2MuMuDD',['[B+ -> K+ KS0]cc'],
-                        [mmDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2MuMuDD", ["[B+ -> K+ KS0]cc"], [mmDDX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2EE',['[B+ -> K+ KS0]cc'],
-                        [ee,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2EE", ["[B+ -> K+ KS0]cc"], [ee, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2KK',['[B+ -> K+ KS0]cc'],
-                        [kkX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
         #                [kkDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2KKPi',['[B+ -> K+ KS0]cc'],
-                        [kkpiX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2KKPiM',['[B+ -> K+ KS0]cc'],
-                        [kkpiMX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKPiM", ["[B+ -> K+ KS0]cc"], [kkpiMX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKPiDD',['[B+ -> K+ KS0]cc'],
         #                [kkpiDDX,kB],default_config['B2KX'])
 
-        #self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2KKPiDDM',['[B+ -> K+ KS0]cc'],
         #                [kkpiDDMX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPi',['[B+ -> K+ KS0]cc'],
-                        [pipiX,kBhard],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
         #                [pipiDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPiPi',['[B+ -> K+ KS0]cc'],
-                        [pipipiX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"]
+        )
 
-        self._makeBLine('B2KX2PiPiPiM',['[B+ -> K+ KS0]cc'],
-                        [pipipiMX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiPiM", ["[B+ -> K+ KS0]cc"], [pipipiMX, kB], default_config["B2KX"]
+        )
 
-        #self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiPiDD',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDX,kB],default_config['B2KX'])
 
-        #self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDMX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2EtaPiPi2GG',['[B+ -> K+ KS0]cc'],
-                        [etapipiGGX,kB],default_config['B2KXTight'])
-
-        self._makeBLine('B2KX2EtaPiPi23PI',['[B+ -> K+ KS0]cc'],
-                        [etapipi3PIX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX24Pi',['[B+ -> K+ KS0]cc'],
-                        [fourpiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX26Pi',['[B+ -> K+ KS0]cc'],
-                        [sixpiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX22K2Pi',['[B+ -> K+ KS0]cc'],
-                        [KKpipiX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX24K',['[B+ -> K+ KS0]cc'],
-                        [fourKX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX2MuMuSS',['[B+ -> K+ KS0]cc'],
-                        [mmSSX,kB],default_config['B2KX'],preSS)
-
-        self._makeBLine('B2KX2MuMuDDSS',['[B+ -> K+ KS0]cc'],
-                        [mmSSDDX,kB],default_config['B2KX'])
-
-        self._makeBLine('B2KX2EESS',['[B+ -> K+ KS0]cc'],
-                        [eeSS,kB],default_config['B2KX'],preSS)
-
-        self._makeBLine('B2KX2KKSS',['[B+ -> K+ KS0]cc'],
-                        [kkSSX,kB],default_config['B2KX'],preSS)
-
-        #self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
+        self._makeBLine(
+            "B2KX2EtaPiPi2GG",
+            ["[B+ -> K+ KS0]cc"],
+            [etapipiGGX, kB],
+            default_config["B2KXTight"],
+        )
+
+        self._makeBLine(
+            "B2KX2EtaPiPi23PI",
+            ["[B+ -> K+ KS0]cc"],
+            [etapipi3PIX, kB],
+            default_config["B2KX"],
+        )
+
+        self._makeBLine(
+            "B2KX24Pi", ["[B+ -> K+ KS0]cc"], [fourpiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX26Pi", ["[B+ -> K+ KS0]cc"], [sixpiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX22K2Pi", ["[B+ -> K+ KS0]cc"], [KKpipiX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX24K", ["[B+ -> K+ KS0]cc"], [fourKX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX2MuMuSS",
+            ["[B+ -> K+ KS0]cc"],
+            [mmSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"]
+        )
+
+        self._makeBLine(
+            "B2KX2EESS", ["[B+ -> K+ KS0]cc"], [eeSS, kB], default_config["B2KX"], preSS
+        )
+
+        self._makeBLine(
+            "B2KX2KKSS",
+            ["[B+ -> K+ KS0]cc"],
+            [kkSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
+
+        # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
         #                [kkSSDDX,kB],default_config['B2KX'])
 
-        self._makeBLine('B2KX2PiPiSS',['[B+ -> K+ KS0]cc'],
-                        [pipiSSX,kB],default_config['B2KX'],preSS)
+        self._makeBLine(
+            "B2KX2PiPiSS",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiSSX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
-        #self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
+        # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
         #                [pipiSSDDX,kB],default_config['B2KX'])
 
         # B -> J/psi lines
-        self._makeBLine('B2JK',['[B+ -> J/psi(1S) K+]cc'],
-                        [j,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2JK", ["[B+ -> J/psi(1S) K+]cc"], [j, kB], default_config["B2KX"]
+        )
 
         kst = filterKst()
-        self._makeBLine('B2JKst',['[B0 -> J/psi(1S) K*(892)0]cc'],
-                        [j,kst],default_config['B2KX'])
+        self._makeBLine(
+            "B2JKst", ["[B0 -> J/psi(1S) K*(892)0]cc"], [j, kst], default_config["B2KX"]
+        )
         rho = makeRho([piB])
-        #self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX],
+        # self._makeBLine('B2RhoX2MuMu',['B0 -> rho(770)0 KS0'],[rho,mmX],
         #                default_config['B2HHX'])
-        #self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX],
+        # self._makeBLine('B2RhoX2MuMuDD',['B0 -> rho(770)0 KS0'],[rho,mmDDX],
         #                default_config['B2HHX'])
 
-
-    def _makeBLine(self,tag,dec,inputs,default_config,pre=1.0):
-        sel = makeB(tag,dec,inputs,default_config)
-        self._makeLine(tag,sel,pre)
-
-    def _makeLine(self,name,sel,pre):
-        filt = {'Code' :
-                "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\
-                " < %s )" \
-                % default_config['CONFIG']['GECNTrkMax'],
-                'Preambulo' : [ "from LoKiTracks.decorators import *",
-                                'from LoKiCore.functions    import *' ]}
+    def _makeBLine(self, tag, dec, inputs, default_config, pre=1.0):
+        sel = makeB(tag, dec, inputs, default_config)
+        self._makeLine(tag, sel, pre)
+
+    def _makeLine(self, name, sel, pre):
+        filt = {
+            "Code": "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"
+            " < %s )" % default_config["CONFIG"]["GECNTrkMax"],
+            "Preambulo": [
+                "from LoKiTracks.decorators import *",
+                "from LoKiCore.functions    import *",
+            ],
+        }
         name = name + "DarkBosonLine"
-        hlt=""
-        if name.find('KstX2PiGamma') > -1 or name.find('KstX2GammaGamma') > -1:
+        hlt = ""
+        if name.find("KstX2PiGamma") > -1 or name.find("KstX2GammaGamma") > -1:
             hlt = "HLT_PASS_RE('Hlt2Topo2Body.*Decision')"
-        elif name.find('MuMu'):
+        elif name.find("MuMu"):
             pass
         else:
             hlt = "HLT_PASS_RE('Hlt2Topo.*Body.*Decision')"
-        relInfoTools=self._getRelInfo(name)
-        #if not relInfoTools:
+        relInfoTools = self._getRelInfo(name)
+        # if not relInfoTools:
         #    relInfoTools = default_config['CONFIG']['CommonRelInfoTools']
 
-        sline = StrippingLine(name,pre,selection=sel,HLT2=hlt,checkPV=True,FILTER=filt,
-                              EnableFlavourTagging=False,
-                              RelatedInfoTools = relInfoTools ) #default_config['CONFIG']['CommonRelInfoTools'] )
+        sline = StrippingLine(
+            name,
+            pre,
+            selection=sel,
+            HLT2=hlt,
+            checkPV=True,
+            FILTER=filt,
+            EnableFlavourTagging=False,
+            RelatedInfoTools=relInfoTools,
+        )  # default_config['CONFIG']['CommonRelInfoTools'] )
         self.registerLine(sline)
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-    def _getRelInfo(self,name):
+    # \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+    def _getRelInfo(self, name):
         relInfoTools = []
-        if name.find('DD')>-1:
-            return relInfoTools ## DD lines go to DST so no relInfoTools
+        if name.find("DD") > -1:
+            return relInfoTools  ## DD lines go to DST so no relInfoTools
         decStr = self._getDecStr(name)
-        if decStr=="":
-            return relInfoTools ## decay not known
-        dls = self._getDaugLocs(decStr,"ConeIso05p")
+        if decStr == "":
+            return relInfoTools  ## decay not known
+        dls = self._getDaugLocs(decStr, "ConeIso05p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 0.5,
-          "Variables" : [],
-          "Location"  : 'ConeIso05B0',
-          "DaughterLocations" : dls, } )
-        dls = self._getDaugLocs(decStr,"ConeIso10p")
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 0.5,
+                "Variables": [],
+                "Location": "ConeIso05B0",
+                "DaughterLocations": dls,
+            }
+        )
+        dls = self._getDaugLocs(decStr, "ConeIso10p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 1.0,
-          "Variables" : [],
-          "Location"  : 'ConeIso10B0',
-          "DaughterLocations" : dls, } )
-        dls = self._getDaugLocs(decStr,"ConeIso15p")
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.0,
+                "Variables": [],
+                "Location": "ConeIso10B0",
+                "DaughterLocations": dls,
+            }
+        )
+        dls = self._getDaugLocs(decStr, "ConeIso15p")
         relInfoTools.append(
-        { "Type" : "RelInfoConeVariables",
-          "ConeAngle" : 1.5,
-          "Variables" : [],
-          "Location"  : 'ConeIso15B0',
-          "DaughterLocations" : dls, } )
-#        dls = self._getDaugLocs(name,"TrackIsoBDTp")
-#        relInfoTools.append(
-#        { "Type": "RelInfoTrackIsolationBDT",
-#          "Variables" : 0,
-#          "DaughterLocations" : dls, } )
-#        dls = self._getDaugLocs(name,"BsMuMuTrackIsop")
-#        relInfoTools.append(
-#        { "Type" : "RelInfoBs2MuMuTrackIsolations",
-#          "Variables" : [],
-#          "IsoTwoBody" : True,
-#          "DaughterLocations" : dls, } )
-        relInfoTools.extend(default_config['CONFIG']['CommonRelInfoTools'])
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.5,
+                "Variables": [],
+                "Location": "ConeIso15B0",
+                "DaughterLocations": dls,
+            }
+        )
+        #        dls = self._getDaugLocs(name,"TrackIsoBDTp")
+        #        relInfoTools.append(
+        #        { "Type": "RelInfoTrackIsolationBDT",
+        #          "Variables" : 0,
+        #          "DaughterLocations" : dls, } )
+        #        dls = self._getDaugLocs(name,"BsMuMuTrackIsop")
+        #        relInfoTools.append(
+        #        { "Type" : "RelInfoBs2MuMuTrackIsolations",
+        #          "Variables" : [],
+        #          "IsoTwoBody" : True,
+        #          "DaughterLocations" : dls, } )
+        relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"])
         return relInfoTools
 
-    def _getDaugLocs(self,decay,locName):
+    def _getDaugLocs(self, decay, locName):
         dls = {}
-        decay = decay.split('^')
-        for i in range(1,len(decay)):
-            dec="^".join([" ".join(decay[:i])," ".join(decay[i:])])
-            loc=locName+str(i)
+        decay = decay.split("^")
+        for i in range(1, len(decay)):
+            dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])])
+            loc = locName + str(i)
             dls[dec] = loc
         return dls
 
-    def _getDecStr(self,name):
+    def _getDecStr(self, name):
         decay = ""
-        if name.find('JKst')>-1:
+        if name.find("JKst") > -1:
             decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^(K*(892)0 -> ^K+ ^pi-) ]CC"
-        elif name.find('JK')>-1:
+        elif name.find("JK") > -1:
             decay = "[ Beauty -> ^(J/psi(1S) -> ^mu+ ^mu-) ^K+ ]CC"
         else:
             bpart = self._getBpart(name)
             xpart = self._getXpart(name)
             if bpart and xpart:
-                decay = "".join(["[ ",bpart,"^(",xpart,") ]CC"])
-        #print "getDecStr: ",name," ",decay
+                decay = "".join(["[ ", bpart, "^(", xpart, ") ]CC"])
+        # print "getDecStr: ",name," ",decay
         return decay
 
-    def _getXpart(self,name):
-        ret=None
-        if name.find('X26Pi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) '
-        elif name.find('X24Pi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi+ ^pi- ^pi-'
-        elif name.find('X22K2Pi')>-1:
-            ret= 'KS0 -> ^K+ ^pi+ ^K- ^pi-'
-        elif name.find('X24K')>-1:
-            ret= 'KS0 -> ^K+ ^K+ ^K- ^K-'
-        elif name.find('X2PiPiPi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi- ^pi0'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
-        elif name.find('X2KKPi')>-1:
-            ret= 'KS0 -> ^K+ ^K- ^pi0'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
-        elif name.find('X2EtaPiPi')>-1:
-            ret= 'KS0 -> ^eta ^pi+ ^pi-'
-            if name.find('2GG')>-1:
-                ret = ret.replace("eta","(eta -> ^gamma ^gamma) ")
+    def _getXpart(self, name):
+        ret = None
+        if name.find("X26Pi") > -1:
+            ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi- ^(pi0 -> ^gamma ^gamma) ^(pi0 -> ^gamma ^gamma) "
+        elif name.find("X24Pi") > -1:
+            ret = "KS0 -> ^pi+ ^pi+ ^pi- ^pi-"
+        elif name.find("X22K2Pi") > -1:
+            ret = "KS0 -> ^K+ ^pi+ ^K- ^pi-"
+        elif name.find("X24K") > -1:
+            ret = "KS0 -> ^K+ ^K+ ^K- ^K-"
+        elif name.find("X2PiPiPi") > -1:
+            ret = "KS0 -> ^pi+ ^pi- ^pi0"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2KKPi") > -1:
+            ret = "KS0 -> ^K+ ^K- ^pi0"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2EtaPiPi") > -1:
+            ret = "KS0 -> ^eta ^pi+ ^pi-"
+            if name.find("2GG") > -1:
+                ret = ret.replace("eta", "(eta -> ^gamma ^gamma) ")
             else:
-                ret = ret.replace("eta","(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ")
-        elif name.find('X2MuMu')>-1:
-            ret= 'KS0 -> ^mu+ ^mu-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2EE')>-1:
-            ret= 'KS0 -> ^e+ ^e-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2PiPi')>-1:
-            ret= 'KS0 -> ^pi+ ^pi-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2KK')>-1:
-            ret= 'KS0 -> ^K+ ^K-'
-            if name.find('SS')>-1:
-                ret = "[ "+ret[:-1]+"+ ]CC "
-        elif name.find('X2GammaGamma')>-1:
-            ret= 'pi0 -> ^gamma ^gamma'
-        elif name.find('X2PiGamma')>-1:
-            ret= 'eta -> ^pi0 ^gamma'
-            if name.find('M')==-1:
-                ret = ret.replace("pi0","(pi0 -> ^gamma ^gamma) ")
+                ret = ret.replace("eta", "(eta -> ^pi+ ^pi- ^(pi0 -> ^gamma ^gamma) ) ")
+        elif name.find("X2MuMu") > -1:
+            ret = "KS0 -> ^mu+ ^mu-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2EE") > -1:
+            ret = "KS0 -> ^e+ ^e-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2PiPi") > -1:
+            ret = "KS0 -> ^pi+ ^pi-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2KK") > -1:
+            ret = "KS0 -> ^K+ ^K-"
+            if name.find("SS") > -1:
+                ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2GammaGamma") > -1:
+            ret = "pi0 -> ^gamma ^gamma"
+        elif name.find("X2PiGamma") > -1:
+            ret = "eta -> ^pi0 ^gamma"
+            if name.find("M") == -1:
+                ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
         return ret
 
-    def _getBpart(self,name):
-        if name.find('B2KX')>-1:
+    def _getBpart(self, name):
+        if name.find("B2KX") > -1:
             return "Beauty -> ^K+ "
-        elif name.find('B2KpiX')>-1:
+        elif name.find("B2KpiX") > -1:
             return "Beauty -> ^K+ ^pi- "
-        elif name.find('B2KstX')>-1:
+        elif name.find("B2KstX") > -1:
             return "Beauty -> ^(K*(892)0 ->  ^K+  ^pi-) "
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-def filterInputs(which,conf,inputs):
-    keys = [key.split('_')[0] for key in conf.keys()]
-    code = LoKiCuts(keys,conf).code()
-    #code = LoKiCuts.combine(['INMUON',code])
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+def filterInputs(which, conf, inputs):
+    keys = [key.split("_")[0] for key in conf.keys()]
+    code = LoKiCuts(keys, conf).code()
+    # code = LoKiCuts.combine(['INMUON',code])
     photonCut = "(NINGENERATION( (ID=='gamma') & ((PT < 500*MeV) | (CL < 0.3)),1)==0)"
-    code = LoKiCuts.combine([photonCut,code])
-    #print "filterInputs: ", which, code
-    return Selection(which+'DarkBosonFilter',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=inputs)
-
-def filterEE(which,econf,xconf,inputs):
-    code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" \
-           % (xconf['PT_MIN'],econf['PIDe_MIN'])
-    code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" \
-            % econf['MIPCHI2DV_MIN']
-    code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf['PT_MIN']
-    code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf['TRGHP_MAX']
-    code = LoKiCuts.combine([code,LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],
-                                           xconf).code()])
-    #print "filterEE: ", code
-    sel = Selection(which+'FilterEEDarkBosonFilter',
-                    Algorithm=FilterDesktop(Code=code),
-                    RequiredSelections=inputs)
+    code = LoKiCuts.combine([photonCut, code])
+    # print "filterInputs: ", which, code
+    return Selection(
+        which + "DarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=inputs,
+    )
+
+
+def filterEE(which, econf, xconf, inputs):
+    code = "(ID=='J/psi(1S)') & (PT > %s) & (MINTREE('e+'==ABSID,PIDe) > %s)" % (
+        xconf["PT_MIN"],
+        econf["PIDe_MIN"],
+    )
+    code += " & (MINTREE('e+'==ABSID,MIPCHI2DV(PRIMARY)) > %s)" % econf["MIPCHI2DV_MIN"]
+    code += " & (MINTREE('e+'==ABSID,PT) > %s)" % econf["PT_MIN"]
+    code += " & (MAXTREE('e+'==ABSID,TRGHP) < %s)" % econf["TRGHP_MAX"]
+    code = LoKiCuts.combine(
+        [code, LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], xconf).code()]
+    )
+    # print "filterEE: ", code
+    sel = Selection(
+        which + "FilterEEDarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=inputs,
+    )
     decstr = "J/psi(1S) -> e+ e-"
-    if which=='SS':
+    if which == "SS":
         decstr = "[ J/psi(1S) -> e+ e+ ]CC"
-    sub = SubstitutePID(which+'EESubPIDDarkBoson',
-                        Code="DECTREE('"+decstr+"')")
+    sub = SubstitutePID(which + "EESubPIDDarkBoson", Code="DECTREE('" + decstr + "')")
     sub.MaxChi2PerDoF = -666
-    sub.Substitutions = {decstr  : 'KS0'}
-    return Selection(which+'EESubPIDDarkBosonSel',Algorithm=sub,
-                     RequiredSelections=[sel])
+    sub.Substitutions = {decstr: "KS0"}
+    return Selection(
+        which + "EESubPIDDarkBosonSel", Algorithm=sub, RequiredSelections=[sel]
+    )
+
 
 def makeEEdd(default_config):
-    eedd = DiElectronMaker('EEDDForDarkBoson')
+    eedd = DiElectronMaker("EEDDForDarkBoson")
     eedd.Particle = "KS0"
     selector = trackSelector(eedd, trackTypes=["Downstream"])
-    eedd.addTool(ProtoParticleCALOFilter, name='Electron')
-    eedd.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>'%s'" \
-                               % default_config['PID']['E']['PIDe_MIN']]
+    eedd.addTool(ProtoParticleCALOFilter, name="Electron")
+    eedd.Electron.Selection = [
+        "RequiresDet='CALO' CombDLL(e-pi)>'%s'" % default_config["PID"]["E"]["PIDe_MIN"]
+    ]
     eedd.DiElectronMassMax = 5000
     eedd.DiElectronMassMin = 0
     eedd.DiElectronPtMin = 250
     eedd.ElectronPtMin = 100
-    eedd.ElectronPIDcut = default_config['PID']['E']['PIDe_MIN']
+    eedd.ElectronPIDcut = default_config["PID"]["E"]["PIDe_MIN"]
+
+    sel = Selection("EEDDDarkBosonSel", Algorithm=eedd)
+    code = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config["V"]).code()
+    # print 'makeEEdd', code
+    return Selection(
+        "FilterEEDDDarkBoson",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=[sel],
+    )
 
-    sel = Selection('EEDDDarkBosonSel',Algorithm=eedd)
-    code = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config['V']).code()
-    #print 'makeEEdd', code
-    return Selection('FilterEEDDDarkBoson',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=[sel])
 
 def makeEESS():
-    eess = DiElectronMaker('EESSForDarkBoson')
+    eess = DiElectronMaker("EESSForDarkBoson")
     eess.Particle = "J/psi(1S)"
     selector = trackSelector(eess, trackTypes=["Long"])
-    eess.addTool(ProtoParticleCALOFilter, name='Electron')
+    eess.addTool(ProtoParticleCALOFilter, name="Electron")
     eess.Electron.Selection = ["RequiresDet='CALO' CombDLL(e-pi)>-2"]
     eess.DiElectronMassMax = 5000
     eess.DiElectronMassMin = 0
     eess.DiElectronPtMin = 250
     eess.ElectronPtMin = 100
     eess.OppositeSign = False
-    return Selection('EESSDarkBosonSel',Algorithm=eess)
+    return Selection("EESSDarkBosonSel", Algorithm=eess)
+
 
 def filterKst():
-    kst = DataOnDemand(Location='Phys/StdLooseDetachedKst2Kpi/Particles')
-    code = '(MIPCHI2DV(PRIMARY) > 25)'
-    return Selection('KstDarkBosonFilter',Algorithm=FilterDesktop(Code=code),
-                     RequiredSelections=[kst])
+    kst = DataOnDemand(Location="Phys/StdLooseDetachedKst2Kpi/Particles")
+    code = "(MIPCHI2DV(PRIMARY) > 25)"
+    return Selection(
+        "KstDarkBosonFilter",
+        Algorithm=FilterDesktop(Code=code),
+        RequiredSelections=[kst],
+    )
+
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-def makeX(which,default_config,dec,inputs):
-    comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config['PT_MIN']
-    if(which.find('DD') < 0):
+
+def makeX(which, default_config, dec, inputs):
+    comboCuts = "(AM < 5000*MeV) & (APT > %s)" % default_config["PT_MIN"]
+    if which.find("DD") < 0:
         comboCuts += " & (ACUTDOCA(0.2*mm,''))"
     comboCuts += "& (ADOCACHI2CUT(25,''))"
-    momCuts = LoKiCuts(['HASVERTEX','BPVVDCHI2','VCHI2DOF'],default_config).code()
-    momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts])
-    if default_config.has_key('HAD_MINIPCHI2_MIN'):
-        momCuts += '& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \
-                   % default_config['HAD_MINIPCHI2_MIN']
-    x = CombineParticles(DecayDescriptors=[dec],
-                         CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeX:',which,comboCuts,momCuts
-    return Selection("X2"+which+"DarkBosonSel",Algorithm=x,
-                     RequiredSelections=inputs)
-
-def makeX2neutrals(which,default_config,dec,inputs):
-    #momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)"
-    momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config['PT_MIN']
-    #if(which.find('C') > -1):
+    momCuts = LoKiCuts(["HASVERTEX", "BPVVDCHI2", "VCHI2DOF"], default_config).code()
+    momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts])
+    if default_config.has_key("HAD_MINIPCHI2_MIN"):
+        momCuts += (
+            "& (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)"
+            % default_config["HAD_MINIPCHI2_MIN"]
+        )
+    x = CombineParticles(
+        DecayDescriptors=[dec], CombinationCut=comboCuts, MotherCut=momCuts
+    )
+    # print 'makeX:',which,comboCuts,momCuts
+    return Selection(
+        "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs
+    )
+
+
+def makeX2neutrals(which, default_config, dec, inputs):
+    # momCuts = "(MINTREE('e+'==ABSID,PIDe)>0.0)"
+    momCuts = "(M < 5000*MeV) & (PT > %s)" % default_config["PT_MIN"]
+    # if(which.find('C') > -1):
     #    momCuts += " & (INTREE( (ID=='gamma') & (ISBASIC) )) & (INTREE( HASTRACK ))"
-    x = CombineParticles(DecayDescriptors=[dec],
-                         MotherCut=momCuts,
-                         ParticleCombiners = {"" : "MomentumCombiner:PUBLIC"},
-                         ReFitPVs=False)#True)
-    #print 'makeX2neutrals:',which,momCuts
-    return Selection("X2"+which+"DarkBosonSel",Algorithm=x,
-                     RequiredSelections=inputs)
-
-
-def makeJ(default_config,inputs):
-    comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config['ADAMASS_MAX']
+    x = CombineParticles(
+        DecayDescriptors=[dec],
+        MotherCut=momCuts,
+        ParticleCombiners={"": "MomentumCombiner:PUBLIC"},
+        ReFitPVs=False,
+    )  # True)
+    # print 'makeX2neutrals:',which,momCuts
+    return Selection(
+        "X2" + which + "DarkBosonSel", Algorithm=x, RequiredSelections=inputs
+    )
+
+
+def makeJ(default_config, inputs):
+    comboCuts = "(ADAMASS('J/psi(1S)') < %s)" % default_config["ADAMASS_MAX"]
     comboCuts += " & (ACUTDOCA(0.2*mm,''))"
     comboCuts += "& (ADOCACHI2CUT(25,''))"
-    momCuts = LoKiCuts(['HASVERTEX','VCHI2DOF'],default_config).code()
-    momCuts = LoKiCuts.combine(['(BPVDIRA > 0)',momCuts])
-    j = CombineParticles(DecayDescriptors=['J/psi(1S) -> mu+ mu-'],
-                         CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeJ:',comboCuts,momCuts
-    return Selection("J2MuMuDarkBosonSel",Algorithm=j,
-                     RequiredSelections=inputs)
-
-def makeRho(inputs,which=""):
+    momCuts = LoKiCuts(["HASVERTEX", "VCHI2DOF"], default_config).code()
+    momCuts = LoKiCuts.combine(["(BPVDIRA > 0)", momCuts])
+    j = CombineParticles(
+        DecayDescriptors=["J/psi(1S) -> mu+ mu-"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeJ:',comboCuts,momCuts
+    return Selection("J2MuMuDarkBosonSel", Algorithm=j, RequiredSelections=inputs)
+
+
+def makeRho(inputs, which=""):
     comboCuts = "(AM > 550*MeV) & (AM < 1050*MeV) & ADOCACHI2CUT(25,'')"
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
     momCuts += " & (M > 600*MeV) & (M < 1000*MeV)"
-    rho = CombineParticles(DecayDescriptors=['rho(770)0 -> pi+ pi-'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeRho:',comboCuts,momCuts
-    return Selection("Rho2PiPi"+which+"DarkBosonSel",Algorithm=rho,
-                     RequiredSelections=inputs)
-
-def makeKst(inputs,which=""):
-    comboCuts = "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)" #(AM < 2000*MeV)"
+    rho = CombineParticles(
+        DecayDescriptors=["rho(770)0 -> pi+ pi-"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeRho:',comboCuts,momCuts
+    return Selection(
+        "Rho2PiPi" + which + "DarkBosonSel", Algorithm=rho, RequiredSelections=inputs
+    )
+
+
+def makeKst(inputs, which=""):
+    comboCuts = (
+        "ADOCACHI2CUT(30,'') & (ADAMASS('K*(892)0') < 100*MeV)"  # (AM < 2000*MeV)"
+    )
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
-    kst = CombineParticles(DecayDescriptors=['[K*(892)0 -> K+ pi-]cc'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeKst:',comboCuts,momCuts
-    return Selection("Kst2KPi"+which+"DarkBosonSel",Algorithm=kst,
-                     RequiredSelections=inputs)
-
-def makeEta(inputs,which=""):
+    kst = CombineParticles(
+        DecayDescriptors=["[K*(892)0 -> K+ pi-]cc"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeKst:',comboCuts,momCuts
+    return Selection(
+        "Kst2KPi" + which + "DarkBosonSel", Algorithm=kst, RequiredSelections=inputs
+    )
+
+
+def makeEta(inputs, which=""):
     comboCuts = "(AM < 750*MeV) & (ACHI2DOCA(1,2) < 25)"
     momCuts = "(VFASPF(VCHI2/VDOF)<10) & (MIPCHI2DV(PRIMARY)> 16) & HASVERTEX"
     momCuts += " & (M < 650*MeV)"
-    eta = CombineParticles(DecayDescriptors=['eta -> pi+ pi- pi0'],
-                           CombinationCut=comboCuts,MotherCut=momCuts)
-    #print 'makeOmega:',comboCuts,momCuts
-    return Selection("Eta2PiPiPi"+which+"DarkBosonSel",Algorithm=eta,
-                     RequiredSelections=inputs)
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-def makeB(name,decays,inputs,default_config):
-    comboCuts = LoKiCuts(['AM','SUMPT'],default_config).code()
-    momCuts = LoKiCuts(['HASVERTEX','PT','VCHI2DOF','BPVLTIME','BPVIPCHI2','BPVDIRA'],default_config).code()
+    eta = CombineParticles(
+        DecayDescriptors=["eta -> pi+ pi- pi0"],
+        CombinationCut=comboCuts,
+        MotherCut=momCuts,
+    )
+    # print 'makeOmega:',comboCuts,momCuts
+    return Selection(
+        "Eta2PiPiPi" + which + "DarkBosonSel", Algorithm=eta, RequiredSelections=inputs
+    )
+
+
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+def makeB(name, decays, inputs, default_config):
+    comboCuts = LoKiCuts(["AM", "SUMPT"], default_config).code()
+    momCuts = LoKiCuts(
+        ["HASVERTEX", "PT", "VCHI2DOF", "BPVLTIME", "BPVIPCHI2", "BPVDIRA"],
+        default_config,
+    ).code()
     cuts = ""
-    if default_config.has_key('BPVDIRA_MIN'):
-        cuts += '(BPVDIRA > %s)' % default_config['BPVDIRA_MIN']
+    if default_config.has_key("BPVDIRA_MIN"):
+        cuts += "(BPVDIRA > %s)" % default_config["BPVDIRA_MIN"]
     else:
-        cuts += '(BPVDIRA > 0)'
-    if default_config.has_key('HAD_MINIPCHI2_MIN'):
-        cuts += ' & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)' \
-                % default_config['HAD_MINIPCHI2_MIN']
-    momCuts = LoKiCuts.combine([momCuts,cuts])
-    momCuts += ' & (MM > %s) & (MM < %s)' % (default_config['AM_MIN'],default_config['AM_MAX'])
-    n=2
-    if name.find('B2KpiX') >= 0: n=3
+        cuts += "(BPVDIRA > 0)"
+    if default_config.has_key("HAD_MINIPCHI2_MIN"):
+        cuts += (
+            " & (NINGENERATION(ISBASIC & HASTRACK & (MIPCHI2DV(PRIMARY) < %s),1)==0)"
+            % default_config["HAD_MINIPCHI2_MIN"]
+        )
+    momCuts = LoKiCuts.combine([momCuts, cuts])
+    momCuts += " & (MM > %s) & (MM < %s)" % (
+        default_config["AM_MIN"],
+        default_config["AM_MAX"],
+    )
+    n = 2
+    if name.find("B2KpiX") >= 0:
+        n = 3
     alg = None
-    if n==2:
+    if n == 2:
         alg = CombineParticles(DecayDescriptors=decays)
     else:
         alg = DaVinci__N3BodyDecays(DecayDescriptors=decays)
-        alg.Combination12Cut = 'AM < %s' % default_config['AM_MAX']
+        alg.Combination12Cut = "AM < %s" % default_config["AM_MAX"]
 
     alg.ReFitPVs = True
-    alg.CombinationCut=comboCuts
-    alg.MotherCut=momCuts
-    #print 'makeB:',name,comboCuts,momCuts,decays
-    return Selection(name+"DarkBosonSel",Algorithm=alg,
-                     RequiredSelections=inputs)
+    alg.CombinationCut = comboCuts
+    alg.MotherCut = momCuts
+    # print 'makeB:',name,comboCuts,momCuts,decays
+    return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From a8cc4eccf07bae2eda99b70dab3c91eb7ecaeb2e Mon Sep 17 00:00:00 2001
From: reallyblaised <blaiserd@proton.me>
Date: Fri, 30 Jun 2023 13:36:04 -0400
Subject: [PATCH 10/18] dark scalar lines into mm,kk,pipi with SS

---
 .../StrippingRD/StrippingDarkBoson.py         | 152 +++++++++++++-----
 .../StrippingRD/__init__.py                   |   3 +-
 2 files changed, 116 insertions(+), 39 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 4cea3e650..7a9b27abe 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -14,7 +14,7 @@ Dark Bosons (ALPs, inflatons, WTFs, etc)
 
 Author: M. Williams, D. Craik
 """
-__author__ = ["Mike Williams", "Dan Craik"]
+__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
 
 moduleName = "DarkBoson"
 
@@ -86,15 +86,17 @@ default_config = {
             #'StrippingB2KKX2MuMuDDSSDarkBosonLine',
             "StrippingB2KX2MuMuDDDarkBosonLine",
             "StrippingB2KX2MuMuDDSSDarkBosonLine",
-            #'StrippingB2KpiX2PiPiDDDarkBosonLine',
+            "StrippingB2KpiX2PiPiDDDarkBosonLine",
+            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2PiPiDDDarkBosonLine',
-            #'StrippingB2KX2PiPiDDDarkBosonLine',
-            #'StrippingB2KX2PiPiDDSSDarkBosonLine',
+            "StrippingB2KX2PiPiDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-            #'StrippingB2KpiX2KKDDDarkBosonLine',
+            "StrippingB2KpiX2KKDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2KKDDDarkBosonLine',
-            #'StrippingB2KX2KKDDDarkBosonLine',
-            #'StrippingB2KX2KKDDSSDarkBosonLine',
+            "StrippingB2KX2KKDDDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
         ],
         "Leptonic": [
             "StrippingB2KpiX2MuMuDarkBosonLine",
@@ -103,15 +105,17 @@ default_config = {
             #'StrippingB2KKX2MuMuSSDarkBosonLine',
             "StrippingB2KX2MuMuDarkBosonLine",
             "StrippingB2KX2MuMuSSDarkBosonLine",
-            "StrippingB2KpiX2PiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2PiPiDarkBosonLine',
-            "StrippingB2KX2PiPiDarkBosonLine",
-            "StrippingB2KX2PiPiSSDarkBosonLine",
+            "StrippingB2KX2PiPiDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2RhoX2MuMuDarkBosonLine',
-            "StrippingB2KpiX2KKDarkBosonLine",
+            "StrippingB2KpiX2KKDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKSSDarkBosonLine",  # NOTE: 2018 patches
             #'StrippingB2KKX2KKDarkBosonLine',
-            "StrippingB2KX2KKDarkBosonLine",
-            "StrippingB2KX2KKSSDarkBosonLine",
+            "StrippingB2KX2KKDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKSSDarkBosonLine",  # NOTE: 2018 patches
             "StrippingB2KpiX2EEDarkBosonLine",
             "StrippingB2KpiX2EESSDarkBosonLine",
             #'StrippingB2KKX2EEDarkBosonLine',
@@ -310,7 +314,7 @@ default_config = {
             "AM_MAX": "5800*MeV",
             "PT_MIN": "3000*MeV",
         },
-        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 0.25},
+        "Prescales": {"SS": 0.1, "DD": 1.0, "KK": 1.0},
         "GECNTrkMax": 250,
         "CommonRelInfoTools": [
             {"Type": "RelInfoVertexIsolation", "Location": "VtxIsoInfo"},
@@ -447,6 +451,22 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
+        self._makeBLine(
+            "B2KpiX2MuMuSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2MuMuDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
         self._makeBLine(
             "B2KpiX2EE",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -462,8 +482,29 @@ class DarkBosonConf(LineBuilder):
             preKK,
         )
 
-        # self._makeBLine('B2KpiX2KKDD',['[B0 -> K+ pi- KS0]cc'],
-        #                [kkDDX,kB,piB],default_config['B2HHX'])
+        self._makeBLine(
+            "B2KpiX2KKSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkSSX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkDDX, kB, piB],
+            default_config["B2HHX"],
+            preKK,
+        )
+
+        self._makeBLine(
+            "B2KpiX2KKDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [kkSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KpiX2KKPi",
@@ -490,11 +531,34 @@ class DarkBosonConf(LineBuilder):
             ["[B0 -> K+ pi- KS0]cc"],
             [pipiX, kB, piB],
             default_config["B2HHX"],
+        )
+
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiSSX, kB, piB],
+            default_config["B2HHX"],
             preSS,
         )
 
-        # self._makeBLine('B2KpiX2PiPiDD',['[B0 -> K+ pi- KS0]cc'],
-        #                [pipiDDX,kB,piB],default_config['B2HHX'],preDD)
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiDD",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiDDX, kB, piB],
+            default_config["B2HHX"],
+            preDD,
+        )
+
+        # 2018 patches
+        self._makeBLine(
+            "B2KpiX2PiPiDDSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [pipiSSDDX, kB, piB],
+            default_config["B2HHX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KpiX2PiPiPi",
@@ -559,18 +623,10 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMuSS",
+            "B2KpiX2MuMSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-            preSS,
-        )
-
-        self._makeBLine(
-            "B2KpiX2MuMuDDSS",
-            ["[B0 -> K+ pi- KS0]cc"],
-            [mmSSDDX, kB, piB],
-            default_config["B2HHX"],
         )
 
         self._makeBLine(
@@ -647,11 +703,16 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"]
+            "B2KX2KK", ["[B+ -> K+ KS0]cc"], [kkX, kB], default_config["B2KX"], preKK
         )
 
-        # self._makeBLine('B2KX2KKDD',['[B+ -> K+ KS0]cc'],
-        #                [kkDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKDD",
+            ["[B+ -> K+ KS0]cc"],
+            [kkDDX, kB],
+            default_config["B2KX"],
+            preKK,
+        )
 
         self._makeBLine(
             "B2KX2KKPi", ["[B+ -> K+ KS0]cc"], [kkpiX, kB], default_config["B2KX"]
@@ -671,8 +732,9 @@ class DarkBosonConf(LineBuilder):
             "B2KX2PiPi", ["[B+ -> K+ KS0]cc"], [pipiX, kBhard], default_config["B2KX"]
         )
 
-        # self._makeBLine('B2KX2PiPiDD',['[B+ -> K+ KS0]cc'],
-        #                [pipiDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiDD", ["[B+ -> K+ KS0]cc"], [pipiDDX, kB], default_config["B2KX"]
+        )
 
         self._makeBLine(
             "B2KX2PiPiPi", ["[B+ -> K+ KS0]cc"], [pipipiX, kB], default_config["B2KX"]
@@ -727,7 +789,11 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KX2MuMuDDSS", ["[B+ -> K+ KS0]cc"], [mmSSDDX, kB], default_config["B2KX"]
+            "B2KX2MuMuDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [mmSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
         )
 
         self._makeBLine(
@@ -742,8 +808,13 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # self._makeBLine('B2KX2KKDDSS',['[B+ -> K+ KS0]cc'],
-        #                [kkSSDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2KKDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [kkSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
         self._makeBLine(
             "B2KX2PiPiSS",
@@ -753,8 +824,13 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # self._makeBLine('B2KX2PiPiDDSS',['[B+ -> K+ KS0]cc'],
-        #                [pipiSSDDX,kB],default_config['B2KX'])
+        self._makeBLine(
+            "B2KX2PiPiDDSS",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiSSDDX, kB],
+            default_config["B2KX"],
+            preSS,
+        )
 
         # B -> J/psi lines
         self._makeBLine(
@@ -1176,4 +1252,4 @@ def makeB(name, decays, inputs, default_config):
     return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
 
-# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
\ No newline at end of file
diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
index 62f82fddd..f42c6b6ee 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/__init__.py
@@ -29,7 +29,8 @@ _selections = ('StrippingRareBaryonicMuMu',
         'StrippingB2XMuTauMuonic',
         'StrippingB2LLXBDTSS',
         'StrippingB2KstTauTau', 
-        'StrippingS2Hyperons'
+        'StrippingS2Hyperons',
+        'StrippingDarkBoson'
         )
 
 for _sel in _selections :
-- 
GitLab


From fb54dd0a74c7af08f07c2561c7ad233b06d561d3 Mon Sep 17 00:00:00 2001
From: Blaise Raheem Delaney <blaise.delaney@cern.ch>
Date: Sun, 2 Jul 2023 20:48:50 +0200
Subject: [PATCH 11/18] WIP pipig line

---
 .../StrippingRD/StrippingDarkBoson.py         | 62 +++++++++++++------
 1 file changed, 42 insertions(+), 20 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 7a9b27abe..3887cc890 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -12,7 +12,7 @@
 """
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
-Author: M. Williams, D. Craik
+Author: M. Williams, D. Craik, B. Delaney
 """
 __author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
 
@@ -69,6 +69,8 @@ default_config = {
             "StrippingB2KX2EtaPiPi23PIDarkBosonLine",
             "StrippingB2KpiX2EtaPiPi23PIDarkBosonLine",
             "StrippingB2KX2EtaPiPi2GGDarkBosonLine",
+            "StrippingB2KpiX2PiPiGDarkBosonLine",
+            "StrippingB2KX2PiPiGDarkBosonLine",
             "StrippingB2KpiX2EtaPiPi2GGDarkBosonLine",
             "StrippingB2KX24PiDarkBosonLine",
             "StrippingB2KpiX24PiDarkBosonLine",
@@ -87,16 +89,16 @@ default_config = {
             "StrippingB2KX2MuMuDDDarkBosonLine",
             "StrippingB2KX2MuMuDDSSDarkBosonLine",
             "StrippingB2KpiX2PiPiDDDarkBosonLine",
-            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiDDSSDarkBosonLine",
             #'StrippingB2KKX2PiPiDDDarkBosonLine',
-            "StrippingB2KX2PiPiDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2PiPiDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDDDarkBosonLine",
+            "StrippingB2KX2PiPiDDSSDarkBosonLine",
             #'StrippingB2RhoX2MuMuDDDarkBosonLine',
-            "StrippingB2KpiX2KKDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDDDarkBosonLine",
+            "StrippingB2KpiX2KKDDSSDarkBosonLine",
             #'StrippingB2KKX2KKDDDarkBosonLine',
-            "StrippingB2KX2KKDDDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2KKDDSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDDDarkBosonLine",
+            "StrippingB2KX2KKDDSSDarkBosonLine",
         ],
         "Leptonic": [
             "StrippingB2KpiX2MuMuDarkBosonLine",
@@ -105,17 +107,17 @@ default_config = {
             #'StrippingB2KKX2MuMuSSDarkBosonLine',
             "StrippingB2KX2MuMuDarkBosonLine",
             "StrippingB2KX2MuMuSSDarkBosonLine",
-            "StrippingB2KpiX2PiPiDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2PiPiDarkBosonLine",
+            "StrippingB2KpiX2PiPiSSDarkBosonLine",
             #'StrippingB2KKX2PiPiDarkBosonLine',
-            "StrippingB2KX2PiPiDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2PiPiSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2PiPiDarkBosonLine",
+            "StrippingB2KX2PiPiSSDarkBosonLine",
             #'StrippingB2RhoX2MuMuDarkBosonLine',
-            "StrippingB2KpiX2KKDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KpiX2KKSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KpiX2KKDarkBosonLine",
+            "StrippingB2KpiX2KKSSDarkBosonLine",
             #'StrippingB2KKX2KKDarkBosonLine',
-            "StrippingB2KX2KKDarkBosonLine",  # NOTE: 2018 patches
-            "StrippingB2KX2KKSSDarkBosonLine",  # NOTE: 2018 patches
+            "StrippingB2KX2KKDarkBosonLine",
+            "StrippingB2KX2KKSSDarkBosonLine",
             "StrippingB2KpiX2EEDarkBosonLine",
             "StrippingB2KpiX2EESSDarkBosonLine",
             #'StrippingB2KKX2EEDarkBosonLine',
@@ -408,9 +410,16 @@ class DarkBosonConf(LineBuilder):
         # kkpiDDMX    = makeX('KKPiDDM',    default_config['XDD'],'KS0 -> K+ K- pi0',[kDX,pizMX])
         # pipipiDDX   = makeX('PiPiPiDD',   default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizRX])
         # pipipiDDMX  = makeX('PiPiPiDDM',  default_config['XDD'],'KS0 -> pi+ pi- pi0',[piDX,pizMX])
+
         etapipiGGX = makeX(
             "EtaPiPi2GG", default_config["XETAHH"], "KS0 -> eta pi+ pi-", [etaX, piX]
         )
+
+        # FIXME: X3H placeholder; might need bespoke selection
+        pipiGX = makeX(
+            "PiPiG", default_config["X3H"], "KS0 -> pi+ pi- gamma", [gX, piX]
+        )
+
         etapipi3PIX = makeX(
             "EtaPiPi23PI",
             default_config["XETAHH"],
@@ -533,7 +542,6 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiSS",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -542,7 +550,6 @@ class DarkBosonConf(LineBuilder):
             preSS,
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiDD",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -551,7 +558,6 @@ class DarkBosonConf(LineBuilder):
             preDD,
         )
 
-        # 2018 patches
         self._makeBLine(
             "B2KpiX2PiPiDDSS",
             ["[B0 -> K+ pi- KS0]cc"],
@@ -750,6 +756,22 @@ class DarkBosonConf(LineBuilder):
         # self._makeBLine('B2KX2PiPiPiDDM',['[B+ -> K+ KS0]cc'],
         #                [pipipiDDMX,kB],default_config['B2KX'])
 
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2PiPiG",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [pipiGX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2PiPiG",
+            ["[B+ -> K+ KS0]cc"],
+            [pipiGX, kB],
+            default_config["B2KX"],
+        )
+
         self._makeBLine(
             "B2KX2EtaPiPi2GG",
             ["[B+ -> K+ KS0]cc"],
@@ -1252,4 +1274,4 @@ def makeB(name, decays, inputs, default_config):
     return Selection(name + "DarkBosonSel", Algorithm=alg, RequiredSelections=inputs)
 
 
-# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
\ No newline at end of file
+# \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From 21601adf07a26e76542b8b3445b2f6f178304920 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Tue, 11 Jul 2023 18:50:30 +0200
Subject: [PATCH 12/18] Fixing missing line

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py      | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 3887cc890..05f4b2ba1 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -1013,6 +1013,8 @@ class DarkBosonConf(LineBuilder):
             ret = "KS0 -> ^e+ ^e-"
             if name.find("SS") > -1:
                 ret = "[ " + ret[:-1] + "+ ]CC "
+        elif name.find("X2PiPiG") > -1:
+            ret = "KS0 -> ^pi+ ^pi- ^gamma"
         elif name.find("X2PiPi") > -1:
             ret = "KS0 -> ^pi+ ^pi-"
             if name.find("SS") > -1:
@@ -1027,6 +1029,7 @@ class DarkBosonConf(LineBuilder):
             ret = "eta -> ^pi0 ^gamma"
             if name.find("M") == -1:
                 ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        
         return ret
 
     def _getBpart(self, name):
-- 
GitLab


From a2798373749bba3db14419b3ec266b44f0ac0ac5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Tue, 11 Jul 2023 20:46:28 +0200
Subject: [PATCH 13/18] Add kshort line

---
 .../StrippingRD/StrippingDarkBoson.py         | 64 ++++++++++++++++++-
 1 file changed, 62 insertions(+), 2 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 05f4b2ba1..9372fcca0 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -12,9 +12,9 @@
 """
 Dark Bosons (ALPs, inflatons, WTFs, etc)
 
-Author: M. Williams, D. Craik, B. Delaney
+Author: M. Williams, D. Craik, B. Delaney, A. Casais Vidal
 """
-__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney"]
+__author__ = ["Mike Williams", "Dan Craik", "Blaise Delaney","Adrian Casais Vidal"]
 
 moduleName = "DarkBoson"
 
@@ -58,6 +58,10 @@ default_config = {
     "BUILDERTYPE": "DarkBosonConf",
     "STREAMS": {
         "Bhadron": [
+            "StrippingB2KpiX2KshortKpiDarkBosonLine",
+            "StrippingB2KpiX2KshortKpiDDDarkBosonLine",
+            "StrippingB2KX2KshortKpiDarkBosonLine",
+            "StrippingB2KX2KshortKpiDDDarkBosonLine",
             "StrippingB2KX2KKPiDarkBosonLine",
             "StrippingB2KpiX2KKPiDarkBosonLine",
             "StrippingB2KX2KKPiMDarkBosonLine",
@@ -248,6 +252,18 @@ default_config = {
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "0*MeV",
         },
+        "XKshort":{# making the X for kshort kpi decays
+            "VCHI2DOF_MAX": 5,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+            "HAD_MINIPCHI2_MIN": 25,
+        },
+        "XKshortDD":{# making the X for kshort kpi decays
+            "VCHI2DOF_MAX": 15,
+            "BPVVDCHI2_MIN": 25,
+            "PT_MIN": "250*MeV",
+            "HAD_MINIPCHI2_MIN": 30,
+        },
         "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
         "X3H": {  # making the X for 3H decays
             "VCHI2DOF_MAX": 10,
@@ -378,6 +394,10 @@ class DarkBosonConf(LineBuilder):
         kkDDX = makeX("KKDD", default_config["XDD"], "KS0 -> K+ K-", [kDX])
         pipiX = makeX("PiPi", default_config["XLLhard"], "KS0 -> pi+ pi-", [piX])
         pipiDDX = makeX("PiPiDD", default_config["XDD"], "KS0 -> pi+ pi-", [piDX])
+        
+        ksX = makeX("Kshort2PiPi", default_config["XKshort"], "KS0 -> pi+ pi-", [piX])
+        ksDDX = makeX("Kshort2PiPiDD", default_config["XKshortDD"], "KS0 -> pi+ pi-", [piDX])
+        
         ## 4-6H modes
         fourpiX = makeX("4Pi", default_config["XLL"], "KS0 -> pi+ pi+ pi- pi-", [piX])
         sixpiX = makeX(
@@ -400,6 +420,10 @@ class DarkBosonConf(LineBuilder):
         ##HHH modes
         kkpiX = makeX("KKPi", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizRX])
         kkpiMX = makeX("KKPiM", default_config["X3H"], "KS0 -> K+ K- pi0", [kX, pizMX])
+
+        kshortKPiX = makeX("KshortKpi", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksX])
+        kshortKPiDDX = makeX("kshortKpiDD", default_config["X3H"], "[KS0 -> KS0 K+ pi-]cc", [kX, piX,ksDDX])
+
         pipipiX = makeX(
             "PiPiPi", default_config["X3H"], "KS0 -> pi+ pi- pi0", [piX, pizRX]
         )
@@ -772,6 +796,40 @@ class DarkBosonConf(LineBuilder):
             default_config["B2KX"],
         )
 
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2KshortKpi",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [kshortKPiX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KpiX2KshortKpiDD",
+            ["[B0 -> K+  pi- KS0]cc"],
+            [kshortKPiDDX, kB, piB],
+            default_config["B2HHX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2KshortKpi",
+            ["[B+ -> K+ KS0]cc"],
+            [kshortKPiX, kB],
+            default_config["B2KX"],
+        )
+
+        # FIXME: not 100% sure this is correct
+        self._makeBLine(
+            "B2KX2KshortKpiDD",
+            ["[B+ -> K+ KS0]cc"],
+            [kshortKPiDDX, kB],
+            default_config["B2KX"],
+        )
+
+
+
         self._makeBLine(
             "B2KX2EtaPiPi2GG",
             ["[B+ -> K+ KS0]cc"],
@@ -995,6 +1053,8 @@ class DarkBosonConf(LineBuilder):
             ret = "KS0 -> ^pi+ ^pi- ^pi0"
             if name.find("M") == -1:
                 ret = ret.replace("pi0", "(pi0 -> ^gamma ^gamma) ")
+        elif name.find("X2KshortKpi") > -1:
+            ret = "[KS0 -> ^(KS0 -> ^pi+ ^pi-) ^K+ ^pi-]CC"
         elif name.find("X2KKPi") > -1:
             ret = "KS0 -> ^K+ ^K- ^pi0"
             if name.find("M") == -1:
-- 
GitLab


From 4b73f14c1965cb28672247bb8816a0f79f25ad80 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 12:25:16 +0200
Subject: [PATCH 14/18] fix typo

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 9372fcca0..1bb8393e7 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMSS",
+            "B2KpiX2MuMuSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-- 
GitLab


From 74272938c012e8c66d6a979768255880a51d50a2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 14:13:38 +0200
Subject: [PATCH 15/18] Added RelInfo tool to neutrals

---
 .../StrippingRD/StrippingDarkBoson.py         | 23 +++++++++++++++----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 1bb8393e7..d5e1c2d3e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -218,7 +218,7 @@ default_config = {
         },
         "gX": {  # gamma from X
             "PT_MIN": "500*MeV",
-            "P_MIN": "1000*MeV",
+            "P_MIN": "3000*MeV",
             "CL_MIN": "0.3",
         },
         "etaX": {  # eta->gg from X
@@ -256,13 +256,13 @@ default_config = {
             "VCHI2DOF_MAX": 5,
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "250*MeV",
-            "HAD_MINIPCHI2_MIN": 25,
+            "HAD_MINIPCHI2_MIN": 40,
         },
         "XKshortDD":{# making the X for kshort kpi decays
             "VCHI2DOF_MAX": 15,
             "BPVVDCHI2_MIN": 25,
             "PT_MIN": "250*MeV",
-            "HAD_MINIPCHI2_MIN": 30,
+            "HAD_MINIPCHI2_MIN": 40,
         },
         "XGG": {"PT_MIN": "2000*MeV"},  # making the X for diphoton
         "X3H": {  # making the X for 3H decays
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMuSS",
+            "B2KpiX2MuMSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
@@ -993,6 +993,7 @@ class DarkBosonConf(LineBuilder):
             }
         )
         dls = self._getDaugLocs(decStr, "ConeIso15p")
+        
         relInfoTools.append(
             {
                 "Type": "RelInfoConeVariables",
@@ -1002,6 +1003,16 @@ class DarkBosonConf(LineBuilder):
                 "DaughterLocations": dls,
             }
         )
+
+        dls = self._getDaugLocs(decStr, "GammaIso",onlyGamma=True)
+        relInfoTools.append(
+            {
+                "Type": "RelInfoGammaIso",
+                "Location": "GammaIso",
+                "DaughterLocations": dls,
+            }
+        )
+
         #        dls = self._getDaugLocs(name,"TrackIsoBDTp")
         #        relInfoTools.append(
         #        { "Type": "RelInfoTrackIsolationBDT",
@@ -1016,11 +1027,13 @@ class DarkBosonConf(LineBuilder):
         relInfoTools.extend(default_config["CONFIG"]["CommonRelInfoTools"])
         return relInfoTools
 
-    def _getDaugLocs(self, decay, locName):
+    def _getDaugLocs(self, decay, locName,onlyGamma=False):
         dls = {}
         decay = decay.split("^")
         for i in range(1, len(decay)):
             dec = "^".join([" ".join(decay[:i]), " ".join(decay[i:])])
+            if onlyGamma and not ('^gamma' in dec or '^pi0' in dec) :
+                continue
             loc = locName + str(i)
             dls[dec] = loc
         return dls
-- 
GitLab


From 6e18242c18013e89f2b1101fbe6cefad01ec9db4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 14:17:24 +0200
Subject: [PATCH 16/18] fix conflicts

---
 .../StrippingSelections/StrippingRD/StrippingDarkBoson.py     | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index d5e1c2d3e..659d9847e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -218,7 +218,7 @@ default_config = {
         },
         "gX": {  # gamma from X
             "PT_MIN": "500*MeV",
-            "P_MIN": "3000*MeV",
+            "P_MIN": "1000*MeV",
             "CL_MIN": "0.3",
         },
         "etaX": {  # eta->gg from X
@@ -653,7 +653,7 @@ class DarkBosonConf(LineBuilder):
         )
 
         self._makeBLine(
-            "B2KpiX2MuMSS",
+            "B2KpiX2MuMuSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSX, kB, piB],
             default_config["B2HHX"],
-- 
GitLab


From 9ffc0049d2f586747c8651845bbeb41ae538b341 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 15:02:23 +0200
Subject: [PATCH 17/18] remove duplicated line

---
 .../StrippingRD/StrippingDarkBoson.py                | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 659d9847e..468686baa 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -652,12 +652,12 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
-        self._makeBLine(
-            "B2KpiX2MuMuSS",
-            ["[B0 -> K+ pi- KS0]cc"],
-            [mmSSX, kB, piB],
-            default_config["B2HHX"],
-        )
+        # self._makeBLine(
+        #     "B2KpiX2MuMuSS",
+        #     ["[B0 -> K+ pi- KS0]cc"],
+        #     [mmSSX, kB, piB],
+        #     default_config["B2HHX"],
+        # )
 
         self._makeBLine(
             "B2KpiX2EESS",
-- 
GitLab


From 460b9fb2656215abcd580d3aa705ee103a903ec7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adri=C3=A1n=20Casais=20Vidal?= <adrian.casais.vidal@cern.ch>
Date: Fri, 14 Jul 2023 15:15:01 +0200
Subject: [PATCH 18/18] restore old line and remove prescales

---
 .../StrippingRD/StrippingDarkBoson.py         | 22 ++++++-------------
 1 file changed, 7 insertions(+), 15 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
index 468686baa..f230759d8 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingDarkBoson.py
@@ -484,20 +484,12 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
-        self._makeBLine(
-            "B2KpiX2MuMuSS",
-            ["[B0 -> K+ pi- KS0]cc"],
-            [mmSSX, kB, piB],
-            default_config["B2HHX"],
-            preSS,
-        )
-
         self._makeBLine(
             "B2KpiX2MuMuDDSS",
             ["[B0 -> K+ pi- KS0]cc"],
             [mmSSDDX, kB, piB],
             default_config["B2HHX"],
-            preSS,
+            #preSS,
         )
 
         self._makeBLine(
@@ -652,12 +644,12 @@ class DarkBosonConf(LineBuilder):
             default_config["B2HHX"],
         )
 
-        # self._makeBLine(
-        #     "B2KpiX2MuMuSS",
-        #     ["[B0 -> K+ pi- KS0]cc"],
-        #     [mmSSX, kB, piB],
-        #     default_config["B2HHX"],
-        # )
+        self._makeBLine(
+            "B2KpiX2MuMuSS",
+            ["[B0 -> K+ pi- KS0]cc"],
+            [mmSSX, kB, piB],
+            default_config["B2HHX"],
+        )
 
         self._makeBLine(
             "B2KpiX2EESS",
-- 
GitLab