From f8dcf29bc30f0f5d0a455ebaf9c62a3f1f2885e4 Mon Sep 17 00:00:00 2001
From: bshi <boan.shi@cern.ch>
Date: Thu, 13 Jul 2023 21:35:26 +0800
Subject: [PATCH 1/3] build Xicb2Xic0Pim Line

---
 .../StrippingB2OC/Beauty2Charm_Lb2XBuilder.py |  306 +-
 .../StrippingB2OC/StrippingBeauty2Charm.py    | 4799 ++++++++++-------
 2 files changed, 3051 insertions(+), 2054 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
index a288b2f4d..7e3d4de8c 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
@@ -20,19 +20,80 @@ from Beauty2Charm_Utils import *
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
+class XimBuilder(object):
+    '''Produces all Xim baryons for the Beauty2Charm module.'''
+
+    def __init__(self, pions, kaons, protons, lambda0, config_Xim):
+        
+				#selections written in StrippingBeauty2Charm.py
+        self.pions = pions
+        self.kaons = kaons
+        self.protons = protons
+        self.lambda0 = lambda0
+        self.config_Xim = config_Xim #Xi- selections written in StrippingBeauty2Charm.py
+        
+				#Xi-
+        self.xim_lmd0pim_LL = [self._makeXim2Lmd0Pim("LL")]
+        self.xim_lmd0pim_DD = [self._makeXim2Lmd0Pim("DD")]
+		
+    def _makeXim2Lmd0Pim(self, lmd):
+        '''Makes Xi- -> Lambda0 Pim + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xim['MASS_WINDOW'])
+        # Pre vertex fit
+        comboCuts = [
+            "(ADAMASS('Xi-') < %s*%s) " % (dm + 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xim).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        # Post vertex fit
+        momCuts = [
+            "(ADMASS('Xi-') < %s*%s) " % (dm + 40, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi- -> Lambda0 pi-", "Xi~+ -> Lambda~0 pi+"])
+        return Selection(
+            'Xim2Lambda0Pim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections= self.lambda0[lmd] + [self.pions])
+
+
+#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
 
 class LcBuilder(object):
     '''Produces all Lambda_c baryons for the Beauty2Charm module.'''
 
-    def __init__(self, pions, kaons, protons, lambda0, config, config_pid):
+    def __init__(self, pions, kaons, protons, lambda0, ks, xim, config, config_Xic0, config_pid):
         self.pions = pions
         self.kaons = kaons
         self.protons = protons
         self.lambda0 = lambda0
+        self.ks = ks
+        self.xim_lmd0pim_LL = xim.xim_lmd0pim_LL
+        self.xim_lmd0pim_DD = xim.xim_lmd0pim_DD
         self.config = config
         self.pkpi = [self._makeLc2phh()]
         self.pkk = [self._makeLc2phh("PKK")]
         self.ppipi = [self._makeLc2phh("PPiPi")]
+        self.xic_pkpi = [self._makeXic2pKpi()]
+        self.xic0_pkkpi = [self._makeXic02pKKpi()]
+        self.omegac0_pkkpi = [self._makeOmegac02pKKpi()]
+        self.config_Xic0 = config_Xic0
+        
+				# Xic0_XimPip
+        self.xic0_ximpip_LL = [self._makeXic02XimPip("LL")]
+        self.xic0_ximpip_DD = [self._makeXic02XimPip("DD")]
+        # xic0_Lambda0kmpip
+        self.xic0_lmd0kmpip_LL = [self._makeXic02Lambda0KmPip("LL")]
+        self.xic0_lmd0kmpip_DD = [self._makeXic02Lambda0KmPip("DD")]
+        # xic0_PKsKm
+        self.xic0_pkskm_LL = [self._makeXic02PKsKm("LL")]
+        self.xic0_pkskm_DD = [self._makeXic02PKsKm("DD")]
+
+				# Filter with tighter PID
         self.lambdapiLL = [self._makeLc2Lambdapi("LL")]
         self.lambdapiDD = [self._makeLc2Lambdapi("DD")]
         self.xic_pkpi = [self._makeXic2pKpi()]
@@ -240,6 +301,79 @@ class LcBuilder(object):
             Algorithm=cp,
             RequiredSelections=[self.pions, self.kaons, self.protons])
 
+    def _makeXic02XimPip(self, lmd):
+        '''Makes Xi_c0 -> Xi- pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm + 30, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> Xi- pi+", "Xi_c~0 -> Xi~+ pi-"])
+        used_xim = self.xim_lmd0pim_DD
+        if "LL" in lmd:
+            used_xim = self.xim_lmd0pim_LL
+        else:
+            pass
+        return Selection(
+            'Xic02XimPip' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xim + [self.pions])
+    
+    def _makeXic02Lambda0KmPip(self, lmd):
+        '''Makes Xi_c0 -> Lambda0 K- Pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 70, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> Lambda0 K- pi+", "Xi_c~0 -> Lambda~0 K+ pi-"])
+        return Selection(
+            'Xic02Lambda0KmPip' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.lambda0[lmd] + [self.kaons] + [self.pions])
+		
+    def _makeXic02PKsKm(self, ks):
+        '''Makes Xi_c0 -> p Ks K- + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 90, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 110, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> p+ KS0 K-", "Xi_c~0 -> p~- KS0 K+"])
+        return Selection(
+            'Xic02PKsKm' + ks + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.ks[ks] + [self.protons, self.kaons])
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
@@ -438,9 +572,6 @@ class LcstarBuilder(object):
             Algorithm=cp,
             RequiredSelections=inputs[mode])
 
-
-
-
 class XiccBuilder(object):
     '''Produces Xi_cc baryons for the Beauty2Charm module.'''
 
@@ -613,7 +744,6 @@ class LooseXiccBuilder(object):
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-
 class XibcBuilder(object):
     '''Makes all Xibc -> X lines.'''
 
@@ -851,18 +981,28 @@ class Lb2XBuilder(object):
 
     def __init__(self, lc, lcstar, xicc, d, hh, topoPions, topoPions_PID, topoKaons,
                  topoKaons_PID, topoProtons, topoProtons_PID, pions, kaons, ks,
-                 hhh, dst, lambda0, config):
+                 hhh, dst, lambda0, config, config_xibm):
 
         self.lc = lc.pkpi
         self.lc_pkk = lc.pkk
         self.lc_ppipi = lc.ppipi
-        self.lc_lambdapiLL = lc.lambdapiLL
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        self.xic0_ximpip_LL = lc.xic0_ximpip_LL
+        self.xic0_ximpip_DD = lc.xic0_ximpip_DD
+        self.xic0_lmd0kmpip_LL = lc.xic0_lmd0kmpip_LL
+        self.xic0_lmd0kmpip_DD = lc.xic0_lmd0kmpip_DD
+        self.xic0_pkskm_LL = lc.xic0_pkskm_LL
+        self.xic0_pkskm_DD = lc.xic0_pkskm_DD
+        
+				self.lc_lambdapiLL = lc.lambdapiLL
         self.lc_lambdapiDD = lc.lambdapiDD
         self.lcstar2595 = lcstar.lcstar2595
         self.lcstar2625 = lcstar.lcstar2625
         self.xic = lc.xic_pkpi
         self.xic0 = lc.xic0_pkkpi
-        self.omegac0 = lc.omegac0_pkkpi
+        
+				self.omegac0 = lc.omegac0_pkkpi
         self.lc_tight = lc.pkpi_tight_win  #tight Lc
         self.xic_tight = lc.xic_pkpi_tight_win  #tight Xic
         self.xic_tightest = lc.xic_pkpi_tightest_win  #tight Xic
@@ -892,6 +1032,7 @@ class Lb2XBuilder(object):
         self.protons_pid = [topoProtons_PID]
         self.ks = ks
         self.config = deepcopy(config)
+				self.config_xibm = config_xibm
         self.config['AM_MIN'] = '5200*MeV'
         self.lines = []
         # Lb -> Lc+- H-+ (+WS)
@@ -918,13 +1059,21 @@ class Lb2XBuilder(object):
         ### Xib0 -> Xic+ HHH- (+WS) (HHH = 3pi, Kpipi)
         self._makeXib02XicHHH()
         ###Xib- -> Xic0 HHH- (+WS) (HHH = 3pi, Kpipi)
-        self._makeXib02Xic0PiPiFullDST()
-        ###Xib0 -> Xic0 pipi (!!+WS)
         self._makeXib2Xic0HHH()
         ### Xb- -> Lc+ D(s)- K-
         self._makeXib2LcDK()
         ### Xb- -> Lc+ Ds- K- Pi+
         self._makeXib02LcDsKPi()
+        ### Xb- -> Xic0 Pim,,Xic0 -> Xim Pip 
+        self._makeXibm2Xic0Pim2XimPipPim("LL")
+        self._makeXibm2Xic0Pim2XimPipPim("DD")
+        ### Xb- -> Xic0 Pim,,Xic0 -> Lambda0 Km pip 
+        self._makeXibm2Xic0Pim2Lambda0KmPipPim("LL")
+        self._makeXibm2Xic0Pim2Lambda0KmPipPim("DD")
+        ### Xb- -> Xic0 Pim,,Xic0 -> p Ks Km 
+        self._makeXibm2Xic0Pim2PKsKmPim("LL")
+        self._makeXibm2Xic0Pim2PKsKmPim("DD")
+        
         ### B- -> Lc+ Ds- pbar
         self._makeB2LcDspbar()
 
@@ -972,10 +1121,7 @@ class Lb2XBuilder(object):
         ### bc baryon -> Lc HHHH (+WS)
         self._makeX2LcKPiPiPi()
         ### Xib,Omega_b -> Lc HH (+WS)
-        self._makeXib2XicHHFullDST()
-	### Xib->XicHH FullDST
-	self._makeXib2XicHH()
-	### Xib->XicHH
+        self._makeXib2XicHH()
 
         # Lb -> Lc D* (+WS)
         self._makeLb2LcDst()
@@ -1294,7 +1440,6 @@ class Lb2XBuilder(object):
         ws = makeB2XSels(decays, dname, inputs, config)
         self.lines.append(ProtoLine(ws, 1.0))
 
- 
     def _makeB2Lcpbar(self):
         '''Make RS and WS B -> Lc pbar + cc.'''
         protons = self.protons
@@ -1458,6 +1603,87 @@ class Lb2XBuilder(object):
         self.lines.append(ProtoLine(rs, 1.0))
         self.lines.append(ProtoLine(ws, 0.1))
 
+    def _makeXibm2Xic0Pim2XimPipPim(self, lmd):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Xi- pi+ + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 90, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_ximpip_DD
+        if "LL" in lmd:
+            used_xic0 = self.xic0_ximpip_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2XimPipPim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+    
+    def _makeXibm2Xic0Pim2Lambda0KmPipPim(self, lmd):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Lmd0 K- pi+ + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_lmd0kmpip_DD
+        if "LL" in lmd:
+            used_xic0 = self.xic0_lmd0kmpip_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2Lambda0KmPipPim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+		
+    def _makeXibm2Xic0Pim2PKsKmPim(self, ks):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> p Ks K- + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_pkskm_DD
+        if "LL" in ks:
+            used_xic0 = self.xic0_pkskm_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2PKsKmPim' + ks + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+    
     def _makeXib02XicHHH(self):
         '''Make RS and WS Xi_b0 -> Xi_c+ HHH (HHH=3pi,Kpipi) + cc.'''
         pipipi = self.hhh.pipipi
@@ -1483,26 +1709,6 @@ class Lb2XBuilder(object):
         self.lines.append(ProtoLine(rs, 1.0))
         self.lines.append(ProtoLine(ws, 0.1))
 
-    def _makeXib02Xic0PiPiFullDST(self):
-        '''Make RS and WS Xi_b0 -> Xi_c0 pipi cc.'''
-        pions = self.pions
-        decays = {
-            'Xib02Xic0PiPi': ["[Xi_b0 -> Xi_c0 pi+ pi-]cc"]
-        }
-        inputs = {
-            'Xib02Xic0PiPi': self.xic0 + pions,
-        }
-        rs = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
-        decays = {
-            'Xib02Xic0PiPiWS': ["[Xi_b0 -> Xi_c0 pi+ pi+]cc"],
-        }
-        inputs = {
-            'Xib02Xic0PiPiWS': self.xic0 + pions,
-        }
-        ws = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-    
     def _makeXib2Xic0HHH(self):
         '''Make RS and WS Xi_b- -> Xi_c0 HHH- (HHH=3pi,Kpipi) + cc.'''
         pipipi = self.hhh.pipipi
@@ -2006,6 +2212,7 @@ class Lb2XBuilder(object):
         inputs = {'X2LcKPiPiPiWS': self.lc + pipipi + kaons}
         ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
         self.lines.append(ProtoLine(ws, 0.1))
+
     def _makeXib2XicHH(self):
         '''Makes RS + WS Xib -> Lc HH + c.c.'''
         pions = self.pions
@@ -2034,35 +2241,6 @@ class Lb2XBuilder(object):
         }
         ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
         self.lines.append(ProtoLine(ws, 0.1))
-   
-    def _makeXib2XicHHFullDST(self):
-        '''Makes RS + WS Xib -> Lc HH + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        decays = {
-            'Xib2XicPiPi': ["[Xi_b- -> Xi_c+ pi- pi-]cc"],
-            'Xib2XicKPi': ["[Xi_b- -> Xi_c+ K- pi-]cc"],
-            'Xib2XicKK': ["[Xi_b- -> Xi_c+ K- K-]cc"]
-        }
-        inputs = {
-            'Xib2XicPiPi': self.xic + pions,
-            'Xib2XicKPi': self.xic + kaons + pions,
-            'Xib2XicKK': self.xic + kaons
-        }
-        rs = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {
-            'Xib2XicPiPiWS': ["[Xi_b- -> Xi_c+ pi+ pi+]cc"],
-            'Xib2XicKPiWS': ["[Xi_b- -> Xi_c+ K+ pi+]cc"],
-            'Xib2XicKKWS': ["[Xi_b- -> Xi_c+ K+ K+]cc"]
-        }
-        inputs = {
-            'Xib2XicPiPiWS': self.xic + pions,
-            'Xib2XicKPiWS': self.xic + kaons + pions,
-            'Xib2XicKKWS': self.xic + kaons
-        }
-        ws = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
 
     def _makeXib2LcDK(self):
         '''Makes RS + WS Xib -> Lc+ D(s)- K- + c.c.'''
diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
index e8e66f05f..a66f22a3e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
@@ -1,6 +1,5 @@
 ###############################################################################
 # (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration      #
-#                                                                             #
 # This software is distributed under the terms of the GNU General Public      #
 # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
 #                                                                             #
@@ -9,2008 +8,2828 @@
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-'''
-B->DX, Lb -> LcX, etc.
 
-Author: M. Williams
-'''
-__author__ = ['Mike Williams']
+from copy import deepcopy
+from Gaudi.Configuration import *
+from GaudiConfUtils.ConfigurableGenerators import CombineParticles
+from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays, DaVinci__N4BodyDecays
+from PhysSelPython.Wrappers import Selection
+from Beauty2Charm_LoKiCuts import LoKiCuts
+from Beauty2Charm_Utils import *
+
+#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+class XimBuilder(object):
+    '''Produces all Xim baryons for the Beauty2Charm module.'''
+
+    def __init__(self, pions, kaons, protons, lambda0, config_Xim):
+        
+				#selections written in StrippingBeauty2Charm.py
+        self.pions = pions
+        self.kaons = kaons
+        self.protons = protons
+        self.lambda0 = lambda0
+        self.config_Xim = config_Xim #Xi- selections written in StrippingBeauty2Charm.py
+        
+				#Xi-
+        self.xim_lmd0pim_LL = [self._makeXim2Lmd0Pim("LL")]
+        self.xim_lmd0pim_DD = [self._makeXim2Lmd0Pim("DD")]
+		
+    def _makeXim2Lmd0Pim(self, lmd):
+        '''Makes Xi- -> Lambda0 Pim + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xim['MASS_WINDOW'])
+        # Pre vertex fit
+        comboCuts = [
+            "(ADAMASS('Xi-') < %s*%s) " % (dm + 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xim).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        # Post vertex fit
+        momCuts = [
+            "(ADMASS('Xi-') < %s*%s) " % (dm + 40, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi- -> Lambda0 pi-", "Xi~+ -> Lambda~0 pi+"])
+        return Selection(
+            'Xim2Lambda0Pim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections= self.lambda0[lmd] + [self.pions])
 
-__all__ = ('Beauty2CharmConf', 'default_config')
 
-moduleName = 'Beauty2Charm'
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-import re
-from Gaudi.Configuration import *
-from GaudiConfUtils.ConfigurableGenerators import FilterDesktop
-from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection
-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,
-                               StdLooseMuons, StdNoPIDsUpKaons,
-                               StdLooseResolvedPi0, StdLooseMergedPi0)
-from StandardParticles import StdLooseAllPhotons, StdVeryLooseAllPhotons
-from Beauty2Charm_DBuilder import *
-from Beauty2Charm_HHBuilder import *
-from Beauty2Charm_HHHBuilder import *
-from Beauty2Charm_B2DXBuilder import *
-from Beauty2Charm_Lb2XBuilder import *
-from Beauty2Charm_LTUnbiased import *
-from Beauty2Charm_Bc2DDBuilder import *
-from Beauty2Charm_Bc2BXBuilder import *
-from Beauty2Charm_Bc2DXBuilder import *
+
+class LcBuilder(object):
+    '''Produces all Lambda_c baryons for the Beauty2Charm module.'''
+
+    def __init__(self, pions, kaons, protons, lambda0, ks, xim, config, config_Xic0, config_pid):
+        self.pions = pions
+        self.kaons = kaons
+        self.protons = protons
+        self.lambda0 = lambda0
+        self.ks = ks
+        self.xim_lmd0pim_LL = xim.xim_lmd0pim_LL
+        self.xim_lmd0pim_DD = xim.xim_lmd0pim_DD
+        self.config = config
+        self.pkpi = [self._makeLc2phh()]
+        self.pkk = [self._makeLc2phh("PKK")]
+        self.ppipi = [self._makeLc2phh("PPiPi")]
+        self.xic_pkpi = [self._makeXic2pKpi()]
+        self.xic0_pkkpi = [self._makeXic02pKKpi()]
+        self.omegac0_pkkpi = [self._makeOmegac02pKKpi()]
+        self.config_Xic0 = config_Xic0
+        
+				# Xic0_XimPip
+        self.xic0_ximpip_LL = [self._makeXic02XimPip("LL")]
+        self.xic0_ximpip_DD = [self._makeXic02XimPip("DD")]
+        # xic0_Lambda0kmpip
+        self.xic0_lmd0kmpip_LL = [self._makeXic02Lambda0KmPip("LL")]
+        self.xic0_lmd0kmpip_DD = [self._makeXic02Lambda0KmPip("DD")]
+        # xic0_PKsKm
+        self.xic0_pkskm_LL = [self._makeXic02PKsKm("LL")]
+        self.xic0_pkskm_DD = [self._makeXic02PKsKm("DD")]
+
+				# Filter with tighter PID
+        self.lambdapiLL = [self._makeLc2Lambdapi("LL")]
+        self.lambdapiDD = [self._makeLc2Lambdapi("DD")]
+        self.xic_pkpi = [self._makeXic2pKpi()]
+        self.xic0_pkkpi = [self._makeXic02pKKpi()]
+        self.omegac0_pkkpi = [self._makeOmegac02pKKpi()]
+
+        # Filter with tighter PID
+        self.pkpi_tight = [
+            filterPID('LC2PKPITIGHTER3PID', self.pkpi, config_pid['TIGHTER3'])
+        ]
+        self.xic_pkpi_tight = [
+            filterPID('XIC2PKPITIGHTER3PID', self.xic_pkpi,
+                      config_pid['TIGHTER3'])
+        ]
+        self.omegac0_pkkpi_tight = [
+            filterPID('OMC02PKKPITIGHTER3PID', self.omegac0_pkkpi,
+                      config_pid['TIGHTER3'])
+        ]
+
+        # Now apply tighter mass window
+        mCutLc = "ADMASS('Lambda_c+') < 60.0"
+        mCutXic = "ADMASS('Xi_c+') < 60.0"
+        mCutXicTight = "ADMASS('Xi_c+') < 50.0"
+        mCutOmegac = "ADMASS('Omega_c0') < 60.0"
+        self.pkpi_tight_win = [
+            filterSelection('LC2PKPITIGHTER3PIDMWIN', mCutLc, self.pkpi_tight)
+        ]
+        self.xic_pkpi_tight_win = [
+            filterSelection('XIC2PKPITIGHTER3PIDMWIN', mCutXic,
+                            self.xic_pkpi_tight)
+        ]
+        self.xic_pkpi_tightest_win = [
+            filterSelection('XIC2PKPITIGHTEST3PIDMWIN', mCutXicTight,
+                            self.xic_pkpi_tight)
+        ]
+        self.omegac0_pkkpi_tight_win = [
+            filterSelection('OMC02PKPITIGHTER3PIDMWIN', mCutOmegac,
+                            self.omegac0_pkkpi_tight)
+        ]
+
+    def _makeLc2phh(self,mode="PKPi"):
+        '''Makes Lc -> p h h' + cc
+           mode:
+               "PKPi" : Lc -> p K pi
+               "PKK"  : Lc -> p K K
+               "PPiPi": Lc -> p pi pi
+        '''
+        decays = {
+            "PKPi" : "[Lambda_c+ -> p+ K- pi+]cc",
+            "PKK"  : "[Lambda_c+ -> p+ K- K+]cc",
+            "PPiPi": "[Lambda_c+ -> p+ pi- pi+]cc"
+        }
+        inputs = {
+            "PKPi" : [self.pions, self.kaons, self.protons],
+            "PKK"  : [self.kaons, self.protons],
+            "PPiPi": [self.pions, self.protons]
+        }
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N3BodyDecays(
+            Combination12Cut=comboCuts12,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=[decays[mode]])
+        return Selection(
+            "Lc2%sBeauty2Charm" % mode,
+            Algorithm=cp,
+            RequiredSelections=inputs[mode])
+
+    def _makeLc2Lambdapi(self, lambda0):
+        '''Makes Lambda_c+ -> Lambda0 pi+'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+
+        decays = {'Lc2Lambdapi' + lambda0: ["[Lambda_c+ -> Lambda0 pi+]cc"]}
+        inputs = {
+            'Lc2Lambdapi' + lambda0:
+            self.lambda0[lambda0] + [self.pions],
+        }
+        mode = 'Lc2Lambdapi' + lambda0
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=decays[mode])
+        return Selection(
+            "%sBeauty2Charm" % mode,
+            Algorithm=cp,
+            RequiredSelections=inputs[mode])
+
+    def _makeXic2pKpi(self):
+        '''Makes Xic -> p K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c+') < %s*%s) " % (dm + 10, units),
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N3BodyDecays(
+            Combination12Cut=comboCuts12,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_c+ -> p+ K- pi+]cc"])
+        return Selection(
+            'Xic2PKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeXic02pKKpi(self):
+        '''Makes Xic0 -> p K K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 10, units),
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
+        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts123 = LoKiCuts.combine(comboCuts123)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N4BodyDecays(
+            Combination12Cut=comboCuts12,
+            Combination123Cut=comboCuts123,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_c0 -> p+ K- K- pi+]cc"])
+        return Selection(
+            'Xic02PKKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeOmegac02pKKpi(self):
+        '''Makes Omegac0 -> p K K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Omega_c0') < %s*%s) " % (dm + 10, units),
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
+        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts123 = LoKiCuts.combine(comboCuts123)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Omega_c0') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N4BodyDecays(
+            Combination12Cut=comboCuts12,
+            Combination123Cut=comboCuts123,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Omega_c0 -> p+ K- K- pi+]cc"])
+        return Selection(
+            'Omegac02PKKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeXic02XimPip(self, lmd):
+        '''Makes Xi_c0 -> Xi- pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm + 30, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> Xi- pi+", "Xi_c~0 -> Xi~+ pi-"])
+        used_xim = self.xim_lmd0pim_DD
+        if "LL" in lmd:
+            used_xim = self.xim_lmd0pim_LL
+        else:
+            pass
+        return Selection(
+            'Xic02XimPip' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xim + [self.pions])
+    
+    def _makeXic02Lambda0KmPip(self, lmd):
+        '''Makes Xi_c0 -> Lambda0 K- Pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 50, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 70, units)
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> Lambda0 K- pi+", "Xi_c~0 -> Lambda~0 K+ pi-"])
+        return Selection(
+            'Xic02Lambda0KmPip' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.lambda0[lmd] + [self.kaons] + [self.pions])
+		
+    def _makeXic02PKsKm(self, ks):
+        '''Makes Xi_c0 -> p Ks K- + cc'''
+        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 90, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 110, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_c0 -> p+ KS0 K-", "Xi_c~0 -> p~- KS0 K+"])
+        return Selection(
+            'Xic02PKsKm' + ks + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.ks[ks] + [self.protons, self.kaons])
+
+#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+class LooseLcBuilder(object):
+    '''Produces Loose Lambda_c baryons for the Beauty2Charm module.'''
+
+    def __init__(self, pions, kaons, protons, config):
+        self.pions = pions
+        self.kaons = kaons
+        self.protons = protons
+        self.config = config
+        self.pkpi = [self._makeLooseLc2pKpi()]
+        self.xic_pkpi = [self._makeLooseXic2pKpi()]
+        self.xic0_pkkpi = [self._makeLooseXic02pKKpi()]
+        self.omegac0_pkkpi = [self._makeLooseOmegac02pKKpi()]
+
+    def _makeLooseLc2pKpi(self):
+        '''Makes Lc -> p K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
+            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 2)",
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N3BodyDecays(
+            Combination12Cut=comboCuts12,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Lambda_c+ -> p+ K- pi+]cc"])
+        return Selection(
+            'LooseLc2PKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeLooseXic2pKpi(self):
+        '''Makes Xic -> p K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c+') < %s*%s) " % (dm + 10, units),
+            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 2)",
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N3BodyDecays(
+            Combination12Cut=comboCuts12,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_c+ -> p+ K- pi+]cc"])
+        return Selection(
+            'LooseXic2PKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeLooseXic02pKKpi(self):
+        '''Makes Xic0 -> p K K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 10, units),
+            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 3)",
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
+        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts123 = LoKiCuts.combine(comboCuts123)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_c0') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N4BodyDecays(
+            Combination12Cut=comboCuts12,
+            Combination123Cut=comboCuts123,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_c0 -> p+ K- K- pi+]cc"])
+        return Selection(
+            'LooseXic02PKKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+    def _makeLooseOmegac02pKKpi(self):
+        '''Makes Omegac0 -> p K K pi + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Omega_c0') < %s*%s) " % (dm + 10, units),
+            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 3)",
+            hasTopoChild()
+        ]
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
+        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
+        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts123 = LoKiCuts.combine(comboCuts123)
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Omega_c0') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = DaVinci__N4BodyDecays(
+            Combination12Cut=comboCuts12,
+            Combination123Cut=comboCuts123,
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Omega_c0 -> p+ K- K- pi+]cc"])
+        return Selection(
+            'LooseOmegac02PKKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=[self.pions, self.kaons, self.protons])
+
+
+#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+class LcstarBuilder(object):
+    '''Produces Lambda_c star baryons for the Beauty2Charm module'''
+    def __init__(self, lc, pions, config):
+        self.lc = lc.pkpi
+        self.pions = pions
+        self.config = config
+        self.lcstar2595 = [self._makeLcstar2Lcpipi("Lcstar2595")]
+        self.lcstar2625 = [self._makeLcstar2Lcpipi("Lcstar2625")]
+
+    def _makeLcstar2Lcpipi(self, mode):
+        '''Makes Lambda_c(2595)+ -> Lambda_c+ pi+ pi-'''
+        '''Makes Lambda_c(2625)+ -> Lambda_c+ pi+ pi-'''
+        decays = {
+            "Lcstar2595" : "[Lambda_c(2595)+ -> Lambda_c+ pi+ pi-]cc",
+            "Lcstar2625" : "[Lambda_c(2625)+ -> Lambda_c+ pi+ pi-]cc",
+        }
+        inputs = {
+            "Lcstar2595" : self.lc+[self.pions],
+            "Lcstar2625" : self.lc+[self.pions],
+        }
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = {
+            "Lcstar2595":[
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Lambda_c(2595)+') < %s*%s) " % (dm + 10, units),],
+            "Lcstar2625":[
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Lambda_c(2625)+') < %s*%s) " % (dm + 10, units),],
+        }
+        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
+        comboCuts[mode].append(LoKiCuts(['ADOCA13'], self.config).code())
+        comboCuts[mode].append(LoKiCuts(['ADOCA23'], self.config).code())
+        comboCuts12 = LoKiCuts.combine(comboCuts12)
+        comboCuts[mode] = LoKiCuts.combine(comboCuts[mode])
+        momCuts = {
+            "Lcstar2595": [
+            "(ADMASS('Lambda_c(2595)+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()],
+            "Lcstar2625": [
+            "(ADMASS('Lambda_c(2625)+') < %s*%s) " % (dm, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()],
+        }
+        momCuts[mode] = LoKiCuts.combine(momCuts[mode])
+        cp = DaVinci__N3BodyDecays(
+            Combination12Cut=comboCuts12,
+            CombinationCut=comboCuts[mode],
+            MotherCut=momCuts[mode],
+            DecayDescriptors=[decays[mode]])
+        return Selection(
+            "Lc2%sBeauty2Charm" % mode,
+            Algorithm=cp,
+            RequiredSelections=inputs[mode])
+
+class XiccBuilder(object):
+    '''Produces Xi_cc baryons for the Beauty2Charm module.'''
+
+    def __init__(self, lc, pions, config):
+        self.lc = lc.pkpi
+        self.pions = pions
+        self.config = config
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        self.xiccpp = [self._makeXiccpp2Xicpi()]
+        self.xiccp = [self._makeXiccp2Xic0pi()]
+        self.sigmacpp = [self._makeSigmacpp2LcPi()]
+
+    def _makeXiccpp2Xicpi(self):
+        '''Makes Xi_cc++-> Xi_c+ pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_cc++') < %s*%s) " % (dm + 410, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_cc++') < %s*%s) " % (dm + 400, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_cc++ -> Xi_c+ pi+]cc"])
+        return Selection(
+            'Xiccpp2XicPiXic2PKPiPBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.xic + [self.pions])
+
+    def _makeXiccp2Xic0pi(self):
+        '''Makes Xi_cc+ -> Xi_c0 pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_cc+ -> Xi_c0 pi+]cc"])
+        return Selection(
+            'Xiccp2Xic0PiXic02PKKPiPBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.xic0 + [self.pions])
+
+    def _makeSigmacpp2LcPi(self):
+        '''Makes Sigma_c++-> Lc+ pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Sigma_c++') < %s*%s) " % (dm + 150, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Sigma_c++') < %s*%s) " % (dm + 120, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Sigma_c++ -> Lambda_c+ pi+]cc"])
+        return Selection(
+            'Sigmacpp2LcPiLc2PKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.lc + [self.pions])
+
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-# Default configuration dictionary
-default_config = {
-    'NAME': 'Beauty2Charm',
-    'BUILDERTYPE': 'Beauty2CharmConf',
-    'CONFIG': {
-        "ALL":
-        {  # Cuts made on all charged input particles in all lines (expt. upstream)
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'TRGHP_MAX': 0.4
-        },
-        "PIDPION": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDK_MAX': 20.,
-            'TRGHP_MAX': 0.4
-        },
-        "PIDKAON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDK_MIN': -10.,
-            'TRGHP_MAX': 0.4
-        },
-        "PIDPROTON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDp_MIN': -10.,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xc_PION": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 1.0,
-            'PIDK_MAX': 10.,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xc_KAON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '150*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 1.0,
-            'PIDK_MIN': -5.0,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xc_PROTON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '400*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 1.0,
-            'PIDp_MIN': -5.0,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xb_PION": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '300*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDK_MAX': 10.,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xb_KAON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '300*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDK_MIN': -5.0,
-            'TRGHP_MAX': 0.4
-        },
-        "Xibc_Xb_PROTON": {
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '300*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.,
-            'PIDp_MIN': -5.0,
-            'TRGHP_MAX': 0.4
-        },
-        "UPSTREAM": {  # Cuts made on all upstream particles
-            'TRCHI2DOF_MAX': 4.,
-            'PT_MIN': '100*MeV',
-            'P_MIN': '1000*MeV',
-            'MIPCHI2DV_MIN': 4.
-        },
-        "KS0": {  # Cuts made on all K shorts
-            'PT_MIN': '250*MeV',
-            'BPVVDCHI2_MIN': 36,
-            'MM_MIN': '467.*MeV',
-            'MM_MAX': '527.*MeV'
-        },
-        "VLKS0_LL": {  # cuts for StdVeryLooseKsLL
-            'PT_MIN': '0*MeV',
-            'BPVVDCHI2_MIN': 36,
-            'MM_MIN': '467.*MeV',
-            'MM_MAX': '527.*MeV'
-        },
-        "Lambda0": {  # Cuts made on all Lambda0's
-            'PT_MIN': '250*MeV',
-            'BPVVDCHI2_MIN': 36,
-            'MM_MIN': '1086.*MeV',
-            'MM_MAX': '1146.*MeV'
-        },
-        "Pi0": {  # Cuts made on all pi0's
-            'PT_MIN': '500*MeV',
-            'P_MIN': '1000*MeV',
-            'CHILDCL1_MIN': 0.25,
-            'CHILDCL2_MIN': 0.25,
-            'FROM_B_P_MIN': '2000*MeV',
-            'TIGHT_PT_MIN': '1500*MeV'
-        },
-        "gamma": {  # Cuts made on all photons
-            'PT_MIN': '400*MeV',
-            'CL_MIN': 0.25,
-            'ISNOTE_MIN': -999.0,
-            'PT_VLAPH': '145*MeV'
-        },
-        "D2X": {  # Cuts made on all D's and Lc's used in all lines
-            'ASUMPT_MIN': '1800*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'ADOCA13_MAX': '0.5*mm',
-            'ADOCA23_MAX': '0.5*mm',
-            'ADOCA14_MAX': '0.5*mm',
-            'ADOCA24_MAX': '0.5*mm',
-            'ADOCA34_MAX': '0.5*mm',
-            'ADOCA15_MAX': '0.5*mm',
-            'ADOCA25_MAX': '0.5*mm',
-            'ADOCA35_MAX': '0.5*mm',
-            'ADOCA45_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 10,
-            'BPVVDCHI2_MIN': 36,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '100*MeV'
-        },
-        "Lcstar": {  # Cuts made on all Lcstar's used in all lines
-            'ASUMPT_MIN': '1800*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'ADOCA13_MAX': '0.5*mm',
-            'ADOCA23_MAX': '0.5*mm',
-            'ADOCA14_MAX': '0.5*mm',
-            'ADOCA24_MAX': '0.5*mm',
-            'ADOCA34_MAX': '0.5*mm',
-            'ADOCA15_MAX': '0.5*mm',
-            'ADOCA25_MAX': '0.5*mm',
-            'ADOCA35_MAX': '0.5*mm',
-            'ADOCA45_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 10,
-            'BPVVDCHI2_MIN': 36,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '500*MeV'
-        },
-        "LC_FOR_XIBC": {  # Cuts made on Lc's/Xic(0) used in Xibc lines
-            'ASUMPT_MIN': '1800*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'ADOCA13_MAX': '0.5*mm',
-            'ADOCA23_MAX': '0.5*mm',
-            'ADOCA14_MAX': '0.5*mm',
-            'ADOCA24_MAX': '0.5*mm',
-            'ADOCA34_MAX': '0.5*mm',
-            'ADOCA15_MAX': '0.5*mm',
-            'ADOCA25_MAX': '0.5*mm',
-            'ADOCA35_MAX': '0.5*mm',
-            'ADOCA45_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 8,
-            'BPVVDCHI2_MIN': 36,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '50*MeV'
-        },
-        "D2X_FOR_DDX": {  # Cuts made on all D's and Lc's used in B->DDX lines
-            'ASUMPT_MIN': '1800*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'ADOCA13_MAX': '0.5*mm',
-            'ADOCA23_MAX': '0.5*mm',
-            'ADOCA14_MAX': '0.5*mm',
-            'ADOCA24_MAX': '0.5*mm',
-            'ADOCA34_MAX': '0.5*mm',
-            'ADOCA15_MAX': '0.5*mm',
-            'ADOCA25_MAX': '0.5*mm',
-            'ADOCA35_MAX': '0.5*mm',
-            'ADOCA45_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 8,
-            'BPVVDCHI2_MIN': 50,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '100*MeV'
-        },
-        "B2X": {  # Cuts made on all B's and Lb's used in all lines
-            'SUMPT_MIN': '5000*MeV',
-            'VCHI2DOF_MAX': 10,
-            'BPVIPCHI2_MAX': 25,
-            'BPVLTIME_MIN': '0.2*ps',
-            'BPVDIRA_MIN': 0.999,
-            'AM_MIN': '4750*MeV',  # Lb->X sets this to 5200*MeV
-            'AM_MAX': '7000*MeV',  # B->Dh+-h0 sets this to 5800*MeV
-            'B2CBBDT_MIN': 0.05
-        },
-        "Bc2DD": {  # Cuts made on Bc -> DD lines
-            'SUMPT_MIN': '5000*MeV',
-            'VCHI2DOF_MAX': 10,
-            'BPVIPCHI2_MAX': 20,
-            'BPVLTIME_MIN': '0.05*ps',
-            'BPVDIRA_MIN': 0.999,
-            'AM_MIN': '4800*MeV',
-            'AM_MAX': '6800*MeV',
-            'B2CBBDT_MIN': -999.9
-        },
-        "Xibc": {  # Cuts made on Xibc -> Xc hh, LcD0, Xicc h lines
-            'SUMPT_MIN': '5000*MeV',
-            'VCHI2DOF_MAX': 8,
-            'BPVIPCHI2_MAX': 20,
-            'BPVLTIME_MIN': '0.05*ps',
-            'BPVDIRA_MIN': 0.99,
-            'AM_MIN': '5500*MeV',
-            'AM_MAX': '9000*MeV',
-            'B2CBBDT_MIN': -999.9
-        },
-        "XiccMu": {  # Cuts made on Xibc -> Xc hh, LcD0, Xicc h lines
-            'SUMPT_MIN': '4000*MeV',
-            'VCHI2DOF_MAX': 10,
-            'BPVIPCHI2_MAX': 200,
-            'BPVLTIME_MIN': '0.0*ps',
-            'BPVDIRA_MIN': 0.99,
-            'AM_MIN': '3000*MeV',
-            'AM_MAX': '8000*MeV',
-            'B2CBBDT_MIN': -999.9
-        },
-        "Bc2BX": {  # Cuts made on Bc -> BHH lines
-            'SUMPT_MIN': '1000*MeV',
-            'VCHI2DOF_MAX': 10,
-            'BPVIPCHI2_MAX': 25,
-            'BPVLTIME_MIN': '0.05*ps',
-            'BPVDIRA_MIN': 0.999,
-            'AM_MIN': '6000*MeV',
-            'AM_MAX': '7200*MeV',
-            'DZ1_MIN': '-1.5*mm',
-            'B2CBBDT_MIN': -999.9
-        },
-        "Bc2DX": {  # Cuts made on Bc -> DX lines
-            'SUMPT_MIN': '5000*MeV',
-            'VCHI2DOF_MAX': 10,
-            'BPVIPCHI2_MAX': 25,
-            'BPVLTIME_MIN': '0.05*ps',
-            'BPVDIRA_MIN': 0.999,
-            'AM_MIN': '5800*MeV',
-            'AM_MAX': '6800*MeV',
-            'B2CBBDT_MIN': -999.9
-        },
-        "Dstar": {  # Cuts made on all D*'s used in all lines
-            'ADOCA12_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 10,
-            'BPVVDCHI2_MIN': 36,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '600*MeV',  # was 50MeV
-            'DELTAMASS_MAX': '200*MeV',
-            'DELTAMASSLOOSE_MAX': '250*MeV',
-            'DM_DSPH_MAX': '250*MeV',
-            'DM_DSPH_MIN': '80*MeV'
-        },
-        "HH": {  # Cuts for rho, K*, phi, XHH Dalitz analyese, etc.
-            'MASS_WINDOW': {
-                'KST': '150*MeV',
-                'RHO': '150*MeV',
-                'PHI': '150*MeV',
-                'SIGMA': '150*MeV'
-            },
-            'DAUGHTERS': {
-                'PT_MIN': '100*MeV',
-                'P_MIN': '2000*MeV'
-            },
-            'ADOCA12_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 16,
-            'BPVVDCHI2_MIN': 16,
-            'BPVDIRA_MIN': 0,
-            'ASUMPT_MIN': '1000*MeV',
-            'pP_MIN': '5000*MeV'  # for pH only (obviously)
-        },
-        "HHH": {  # Cuts for PiPiPi, KPiPi analyese, etc.
-            'MASS_WINDOW': {
-                'A1': '3500*MeV',
-                'K1': '4000*MeV',
-                'PPH': '3600*MeV',
-                'PHH': '4000*MeV'
-            },
-            'KDAUGHTERS': {
-                'PT_MIN': '100*MeV',
-                'P_MIN': '2000*MeV',
-                'PIDK_MIN': '-2'
-            },
-            'PiDAUGHTERS': {
-                'PT_MIN': '100*MeV',
-                'P_MIN': '2000*MeV',
-                'PIDK_MAX': '10'
-            },
-            'pDAUGHTERS': {
-                'PT_MIN': '100*MeV',
-                'P_MIN': '2000*MeV',
-                'PIDp_MIN': '-2'
-            },
-            'ADOCA12_MAX': '0.40*mm',
-            'ADOCA13_MAX': '0.40*mm',
-            'ADOCA23_MAX': '0.40*mm',
-            'ADOCA14_MAX': '0.40*mm',
-            'ADOCA24_MAX': '0.40*mm',
-            'ADOCA34_MAX': '0.40*mm',
-            'VCHI2DOF_MAX': 8,
-            'BPVVDCHI2_MIN': 16,
-            'BPVDIRA_MIN': 0.98,
-            'ASUMPT_MIN': '1250*MeV',
-            'MIPCHI2DV_MIN': 0.0,
-            'BPVVDRHO_MIN': '0.1*mm',
-            'BPVVDZ_MIN': '2.0*mm',
-            'PTMIN1': '300*MeV',
-            'PID': {
-                'TIGHTERPI': {
-                    'P': {
-                        'PIDp_MIN': -10
-                    },
-                    'PI': {
-                        'PIDK_MAX': 8
-                    },
-                    'K': {
-                        'PIDK_MIN': -10
-                    }
-                },
-                'REALTIGHTK': {
-                    'P': {
-                        'PIDp_MIN': -10
-                    },
-                    'PI': {
-                        'PIDK_MAX': 10
-                    },
-                    'K': {
-                        'PIDK_MIN': 4
-                    }
-                }
-            }
-        },
-        'PID': {
-            'P': {
-                'PIDp_MIN': -10
-            },
-            'PI': {
-                'PIDK_MAX': 20
-            },
-            'K': {
-                'PIDK_MIN': -10
-            },
-            'TIGHT': {
-                'P': {
-                    'PIDp_MIN': -5
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': -5
-                }
-            },
-            'TIGHTER': {
-                'P': {
-                    'PIDp_MIN': 0
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': 0
-                }
-            },
-            'TIGHTPI': {
-                'P': {
-                    'PIDp_MIN': -10
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': -10
-                }
-            },
-            'TIGHTER1': {
-                'P': {
-                    'PIDp_MIN': 0
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': -1
-                }
-            },
-            'TIGHTER2': {
-                'P': {
-                    'PIDp_MIN': 5
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': 0
-                }
-            },
-            'TIGHTER3': {
-                'P': {
-                    'PIDp_MIN': 0
-                },
-                'PI': {
-                    'PIDK_MAX': 10
-                },
-                'K': {
-                    'PIDK_MIN': -10
-                }
-            },
-            'SPECIAL': {
-                'P': {
-                    'PIDp_MIN': -5
-                },
-                'PI': {
-                    'PIDK_MAX': 5
-                },
-                'K': {
-                    'PIDK_MIN': 5
-                }
-            },
-            'SPECIALPI': {
-                'P': {
-                    'PIDp_MIN': -10
-                },
-                'PI': {
-                    'PIDK_MAX': 12
-                },
-                'K': {
-                    'PIDK_MIN': -10
-                }
-            }
-        },
-        'FlavourTagging': [
-            'B02DstarMuNuDst2D0Pi_D2HHHHBeauty2CharmLine',
-            'B02DstarMuNuWSDst2D0Pi_D2HHHHBeauty2CharmLine',
-            'B02DstarMuNuDst2D0Pi_D2HHHHWSBeauty2CharmLine',
-            'B02DstarMuNuWSDst2D0Pi_D2HHHHWSBeauty2CharmLine',
-            'B2D0PiPiPiD2HHPIDBeauty2CharmLine',
-            'B02DKD2Pi0HHHMergedBeauty2CharmLine',
-            'B02DKD2Pi0HHHResolvedBeauty2CharmLine',
-            'B02DPiD2Pi0HHHMergedBeauty2CharmLine',
-            'B02DPiD2Pi0HHHResolvedBeauty2CharmLine',
-            'B02D0KKD2HHBeauty2CharmLine',
-            'B02D0KPiD2HHBeauty2CharmLine',
-            'B02DHHWSD2HHBeauty2CharmLine',
-            'B02D0PPbarD2HHBeauty2CharmLine',
-            'B02D0PPbarWSD2HHBeauty2CharmLine',
-            'B02D0KKD2HHWSBeauty2CharmLine',
-            'B02D0PiPiD2HHWSBeauty2CharmLine',
-            'B02D0KPiD2HHWSBeauty2CharmLine',
-            'B02DHHWSD2HHWSBeauty2CharmLine',
-            'B02D0KSDDD2HHBeauty2CharmLine',
-            'B02D0KSLLD2HHBeauty2CharmLine',
-            'B02DKD2PhiMuNuBeauty2CharmLine',
-            'B02DPiD2PhiMuNuBeauty2CharmLine',
-            'B02DKWSD2PhiMuNuBeauty2CharmLine',
-            'B02DPiWSD2PhiMuNuBeauty2CharmLine',
-            #'B02DKD2HHHBeauty2CharmLine',
-            #'B02DPiD2HHHBeauty2CharmLine',
-            #'B02DKWSD2HHHBeauty2CharmLine',
-            #'B02DPiWSD2HHHBeauty2CharmLine',
-            'B02DKD2HHHUPBeauty2CharmLine',
-            #'B02DPiD2HHHUPBeauty2CharmLine',
-            #'B02DKWSD2HHHUPBeauty2CharmLine',
-            #'B02DPiWSD2HHHUPBeauty2CharmLine',
-            #'B02DPiNoIPD2HHHCFPIDBeauty2CharmLine',
-            'B02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine',
-            #'B02DPiNoIPDs2HHHPIDBeauty2CharmLine',
-            'B02DPiWSNoIPDs2HHHPIDBeauty2CharmLine',
-            'B02DKsKDDD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsKLLD2HHHCFPIDBeauty2CharmLine',
-            #'B02DKPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsPiDDD2HHHCFPIDBeauty2CharmLine',
-            #'B02DPiPi0MergedD2HHHCFPIDBeauty2CharmLine',
-            #'B02DKPi0MergedD2HHHCFPIDBeauty2CharmLine',
-            'B02DPiPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsPiLLD2HHHCFPIDBeauty2CharmLine',
-            #'B02DKPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsPiDDWSD2HHHCFPIDBeauty2CharmLine',
-            #'B02DKPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
-            #'B02DPiPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsPiLLWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DPiPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsKLLWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DKsKDDWSD2HHHCFPIDBeauty2CharmLine',
-            'B02DRhoPMD2HHHCFPIDBeauty2CharmLine',
-            'B02DKstarPMD2HHHCFPIDBeauty2CharmLine',
-            'B02DKD2KSHLLBeauty2CharmLine',
-            'B02DPiD2KSHLLBeauty2CharmLine',
-            'B02DKWSD2KSHLLBeauty2CharmLine',
-            'B02DPiWSD2KSHLLBeauty2CharmLine',
-            'B02DKD2KSHDDBeauty2CharmLine',
-            'B02DPiD2KSHDDBeauty2CharmLine',
-            'B02DKWSD2KSHDDBeauty2CharmLine',
-            'B02DPiWSD2KSHDDBeauty2CharmLine',
-            #'B02D0KKD2KSHHLLBeauty2CharmLine',
-            #'B02D0PiPiD2KSHHLLBeauty2CharmLine',
-            'B02D0KPiD2KSHHLLBeauty2CharmLine',
-            'B02DHHWSD2KSHHLLBeauty2CharmLine',
-            #'B02D0KKD2KSHHDDBeauty2CharmLine',
-            #'B02D0PiPiD2KSHHDDBeauty2CharmLine',
-            'B02D0KPiD2KSHHDDBeauty2CharmLine',
-            'B02DHHWSD2KSHHDDBeauty2CharmLine',
-            #'B02D0KKD2KSHHLLWSBeauty2CharmLine',
-            #'B02D0PiPiD2KSHHLLWSBeauty2CharmLine',
-            'B02D0KPiD2KSHHLLWSBeauty2CharmLine',
-            'B02DHHWSD2KSHHLLWSBeauty2CharmLine',
-            #'B02D0KKD2KSHHDDWSBeauty2CharmLine',
-            #'B02D0PiPiD2KSHHDDWSBeauty2CharmLine',
-            'B02D0KPiD2KSHHDDWSBeauty2CharmLine',
-            'B02DHHWSD2KSHHDDWSBeauty2CharmLine',
-            #'B02DstarKDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            #'B02DstarPiDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            #'B02DstarKDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            #'B02DstarPiDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            #'B02DstarKDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            #'B02DstarPiDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            #'B02DstarKDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            #'B02DstarPiDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'B02DstarKDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'B02DstarPiDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'B02DstarKDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'B02DstarPiDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'B02DstarMuNuDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'B02DstarMuNuWSDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'B02DstarMuNuDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'B02DstarMuNuWSDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'B02DstarKsPiDDDst2D0PiBeauty2CharmLine',
-            'B02DstarKsKDDDst2D0PiBeauty2CharmLine',
-            'B02DstarKsKLLDst2D0PiBeauty2CharmLine',
-            'B02DstarKsPiLLDst2D0PiBeauty2CharmLine',
-            'B02DstarKsKDDWSDst2D0PiBeauty2CharmLine',
-            'B02DstarKsKLLWSDst2D0PiBeauty2CharmLine',
-            'B02DstarKsPiDDWSDst2D0PiBeauty2CharmLine',
-            'B02DstarKsPiLLWSDst2D0PiBeauty2CharmLine',
-            'B02D0KKD2HHHHBeauty2CharmLine',
-            'B02D0PiPiD2HHHHBeauty2CharmLine',
-            'B02D0KPiD2HHHHBeauty2CharmLine',
-            'B02DHHWSD2HHHHBeauty2CharmLine',
-            'B02D0KKD2HHHHWSBeauty2CharmLine',
-            'B02D0PiPiD2HHHHWSBeauty2CharmLine',
-            'B02D0KPiD2HHHHWSBeauty2CharmLine',
-            'B02DHHWSD2HHHHWSBeauty2CharmLine',
-            'B02D0KSDDD2K3PiBeauty2CharmLine',
-            'B02D0KSLLD2K3PiBeauty2CharmLine',
-            'B02D0KKD2Pi0HHResolvedBeauty2CharmLine',
-            'B02D0PiPiD2Pi0HHResolvedBeauty2CharmLine',
-            'B02D0KPiD2Pi0HHResolvedBeauty2CharmLine',
-            'B02DHHWSD2Pi0HHResolvedBeauty2CharmLine',
-            'B02DKWSD2Pi0HHHResolvedBeauty2CharmLine',
-            'B02DPiWSD2Pi0HHHResolvedBeauty2CharmLine',
-            'B02DKWSD2Pi0HHHMergedBeauty2CharmLine',
-            'B02DPiWSD2Pi0HHHMergedBeauty2CharmLine',
-            'B02DKPiPiSSD2HHHPIDBeauty2CharmLine',
-            'B02DKKPiD2HHHPIDBeauty2CharmLine',
-            'B02DKPiPiSSWSD2HHHPIDBeauty2CharmLine',
-            'B02DKKPiWSD2HHHPIDBeauty2CharmLine',
-            'B02DKPiPiWSD2HHHPIDBeauty2CharmLine',
-            'B02DPiPiPiWSD2HHHPIDBeauty2CharmLine',
-            #'B02DppbarKD2HHHBeauty2CharmLine',
-            #'B02DppbarPiD2HHHBeauty2CharmLine',
-            'B02DstKKPiDstar2D0PiPIDBeauty2CharmLine',
-            'B02DstKPiPiDstar2D0PiPIDBeauty2CharmLine',
-            'B02DstPiPiPiDstar2D0PiPIDBeauty2CharmLine',
-            'B02DstPiPiPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'B02DstKPiPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'B02DstKKPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'B02DDWSBeauty2CharmLine',
-            'B02D0D0D02K3PiD02K3PiBeauty2CharmLine',
-            'B02D0D0D02HHD02K3PiBeauty2CharmLine',
-            'B02D0D0D02HHD02HHBeauty2CharmLine',
-            'B02DstDstWSBeauty2CharmLine',
-            'B02D0DKBeauty2CharmLine',
-            'B02D0DKD02K3PiBeauty2CharmLine',
-            'B02D0DKWSBeauty2CharmLine',
-            'B02D0DKWSD02K3PiBeauty2CharmLine',
-            'B02DstD0KBeauty2CharmLine',
-            'B02DstD0KD02K3PiBeauty2CharmLine',
-            'B02DstD0KDstarD02K3PiBeauty2CharmLine',
-            #'B02DstD0KDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'B02DstD0KWSBeauty2CharmLine',
-            'B02DstD0KWSD02K3PiBeauty2CharmLine',
-            'B02DstD0KWSDstarD02K3PiBeauty2CharmLine',
-            'B02DstD0KWSDstarD02K3PiD02K3PiBeauty2CharmLine',
-            #'B02D0D0KstD02K3PiD02K3PiBeauty2CharmLine',
-            'B02D0D0KstD02HHD02HHBeauty2CharmLine',
-            #'B02D0D0KstD02HHD02K3PiBeauty2CharmLine',
-            #'B02DDKstBeauty2CharmLine',
-            #'B02DstDKstBeauty2CharmLine',
-            #'B02DstDKstDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKstBeauty2CharmLine',
-            'B02DstDstKstDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKstDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'B02DDKSDDBeauty2CharmLine',
-            'B02DDKSWSDDBeauty2CharmLine',
-            'B02DstDKSDDBeauty2CharmLine',
-            'B02DstDKSDDDstarD02K3PiBeauty2CharmLine',
-            'B02DstDKSWSDDBeauty2CharmLine',
-            'B02DstDKSWSDDDstarD02K3PiBeauty2CharmLine',
-            'B02D0D0KSD02K3PiD02K3PiDDBeauty2CharmLine',
-            'B02D0D0KSD02HHD02HHDDBeauty2CharmLine',
-            'B02D0D0KSD02HHD02K3PiDDBeauty2CharmLine',
-            'B02DstDstKSDDBeauty2CharmLine',
-            'B02DstDstKSDDDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSWSDDBeauty2CharmLine',
-            'B02DstDstKSWSDDDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSWSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'B02DDKSLLBeauty2CharmLine',
-            'B02DDKSWSLLBeauty2CharmLine',
-            'B02DstDKSLLBeauty2CharmLine',
-            'B02DstDKSLLDstarD02K3PiBeauty2CharmLine',
-            'B02DstDKSWSLLBeauty2CharmLine',
-            'B02DstDKSWSLLDstarD02K3PiBeauty2CharmLine',
-            'B02D0D0KSD02K3PiD02K3PiLLBeauty2CharmLine',
-            'B02D0D0KSD02HHD02HHLLBeauty2CharmLine',
-            'B02D0D0KSD02HHD02K3PiLLBeauty2CharmLine',
-            'B02DstDstKSLLBeauty2CharmLine',
-            'B02DstDstKSLLDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSWSLLBeauty2CharmLine',
-            'B02DstDstKSWSLLDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKSWSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            #'B02DDKKBeauty2CharmLine',
-            #'B02DstDKKBeauty2CharmLine',
-            #'B02DstDKKDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKKBeauty2CharmLine',
-            'B02DstDstKKDstarD02K3PiBeauty2CharmLine',
-            'B02DstDstKKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'B02LcpbarKKLc2PKPiBeauty2CharmLine',
-            'B02LcpbarpbarpLc2PKPiBeauty2CharmLine',
-            'B02LcpbarPiPiLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKPiLc2PKPiBeauty2CharmLine',
-            'B02LcpbarPiPiWSLc2PKPiBeauty2CharmLine',
-            'B02LcpbarpbarpWSLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKKWSLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKPiWSLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKSDDLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKSWSDDLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKSLLLc2PKPiBeauty2CharmLine',
-            'B02LcpbarKSWSLLLc2PKPiBeauty2CharmLine',
-            'B02LcLambda0KLc2PKPiBeauty2CharmLine',
-            'B02LcLambda0PiLc2PKPiBeauty2CharmLine',
-            'B02LcLambda0PiWSLc2PKPiBeauty2CharmLine',
-            'B02LcLambda0KWSLc2PKPiBeauty2CharmLine',
-            'B02DKLTUBD2HHHBeauty2CharmLine',
-            'B02DsKPiPiLTUBD2HHHBeauty2CharmLine',
-            'B02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine',
-            'B02Dst0DKDst02D0Pi0ResolvedD2HHHBeauty2CharmLine',
-            'B02Dst0DKDst02D0GammaD2HHHBeauty2CharmLine',
-            'B02DsstKsPiLLDsst2DGammaD2HHHBeauty2CharmLine',
-            'B02DsstKsPiDDDsst2DGammaD2HHHBeauty2CharmLine',
-            'B02D0MuMuD2HHBeauty2CharmLine',
-            'B02D0MuMuWSD2HHBeauty2CharmLine',
-            'B02D0MuMuD2HHHHBeauty2CharmLine',
-            'B02D0MuMuWSD2HHHHBeauty2CharmLine',
-            'B02D0MuMuD2KSHHLLBeauty2CharmLine',
-            'B02D0MuMuWSD2KSHHLLBeauty2CharmLine',
-            'B02D0MuMuD2KSHHDDBeauty2CharmLine',
-            'B02D0MuMuWSD2KSHHDDBeauty2CharmLine'
-        ],
-        'RawEvents': [
-            'B02DKD2HHHBeauty2CharmLine', 'B02DPiD2HHHBeauty2CharmLine',
-            'B02DsstarPiDsstar2DGammaD2HHHBeauty2CharmLine',
-            'B02DsstarKDsstar2DGammaD2HHHBeauty2CharmLine',
-            'B02DsstarKMCwNoPIDDsstar2DGammaD2HHHBeauty2CharmLine'
-        ],
-        'MDSTChannels': [],
-        'RelatedInfoTools': [
-            {
-                "Type": "RelInfoConeVariables",
-                "ConeAngle": 1.5,
-                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
-                "Location": 'P2ConeVar1'
-            },
-            {
-                "Type": "RelInfoConeVariables",
-                "ConeAngle": 1.7,
-                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
-                "Location": 'P2ConeVar2'
-            },
-            {
-                "Type": "RelInfoConeVariables",
-                "ConeAngle": 1.0,
-                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
-                "Location": 'P2ConeVar3'
-            },
-        ],
-        "Prescales": {  # Prescales for individual lines
-            'RUN_BY_DEFAULT': True,  # False = lines off by default
-            'RUN_RE': ['.*'],
-            # Defaults are defined in, eg, Beauty2Charm_B2DXBuilder.py.  Put the full
-            # line name here to override. E.g. 'B2D0HD2HHBeauty2CharmTOSLine': 0.5.
-            'B02DKLTUBD2HHHBeauty2CharmLine': 0.04,
-            'B02DsKPiPiLTUBD2HHHBeauty2CharmLine': 0.004,
-            'B02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine': 0.19,
-            'B02DKWSD2HHHBeauty2CharmLine': 1.0,
-            'B02DPiWSD2HHHBeauty2CharmLine': 1.0,
-            'B02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine': 1.0,
-            'B02DPiWSNoIPDs2HHHPIDBeauty2CharmLine': 1.0,
-            'B02DPiPiPiWSD2HHHPIDBeauty2CharmLine': 1.0,
-            'B02DKPiPiWSD2HHHPIDBeauty2CharmLine': 1.0,
-            'B2Dstar0PiDst02D0Pi0D2KSHHLLWSBeauty2CharmLine': 0.1,
-            'B2Dstar0PiDst02D0Pi0D2KSHHDDWSBeauty2CharmLine': 0.1,
-            'B2Dstar0PiDst02D0GammaD2KSHHLLWSBeauty2CharmLine': 0.1,
-            'B2Dstar0PiDst02D0GammaD2KSHHDDWSBeauty2CharmLine': 0.1,
-            'B2Dstar0KDst02D0Pi0D2KSHHLLWSBeauty2CharmLine': 0.1,
-            'B2Dstar0KDst02D0Pi0D2KSHHDDWSBeauty2CharmLine': 0.1,
-            'B2Dstar0KDst02D0GammaD2KSHHLLWSBeauty2CharmLine': 0.1,
-            'B2Dstar0KDst02D0GammaD2KSHHDDWSBeauty2CharmLine': 0.1
-        },
-        'GECNTrkMax':
-        500
-    },
-    'STREAMS': {
-        'BhadronCompleteEvent': [
-            'StrippingB02DKD2HHHBeauty2CharmLine',
-            'StrippingB02DPiD2HHHBeauty2CharmLine',
-            'StrippingB2D0KD2HHBeauty2CharmLine',
-            'StrippingB2D0PiD2HHBeauty2CharmLine',
-            'StrippingB2D0PiNoIPD2KPIPIDBeauty2CharmLine',
-            'StrippingB02DPiNoIPD2HHHCFPIDBeauty2CharmLine',
-            'StrippingLb2XicPiNoIPXic2PKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiNoIPXic02PKKPiBeauty2CharmLine',
-            'StrippingLb2LcPiNoIPLc2PKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0PiNoIPOmegac02PKKPiBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2HHTIGHTBeauty2CharmLine',
-            'StrippingB2D0PiD2HHHHTIGHTBeauty2CharmLine',
-            'StrippingB02DsstarPiDsstar2DGammaD2HHHBeauty2CharmLine',
-            'StrippingB02DsstarKDsstar2DGammaD2HHHBeauty2CharmLine',
-            'StrippingB02DsstarKMCwNoPIDDsstar2DGammaD2HHHBeauty2CharmLine',
-            'StrippingB02DDBeauty2CharmLine', 'StrippingB2D0DBeauty2CharmLine',
-            'StrippingB02DstDBeauty2CharmLine',
-            'StrippingB02DstDD02K3PiBeauty2CharmLine',
-            'StrippingB02D0PiPiD2HHBeauty2CharmLine',
-            'StrippingB02DstDstBeauty2CharmLine',
-            'StrippingB02DKPiPiD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DPiPiPiD2HHHPIDBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHLLPartialDBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHDDPartialDBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHLLPartialDBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHDDPartialDBeauty2CharmLine',
-            'StrippingB02D0KKDSTD2HHBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiLc2PKPiFullDSTBeauty2CharmLine',
-            'StrippingXib02XicPiPiPiXic2PKPiFullDSTBeauty2CharmLine',
-            'StrippingXib2XicPiPiXic2PKPiFullDSTBeauty2CharmLine',
-            'StrippingXib2XicPiPiWSXic2PKPiFullDSTBeauty2CharmLine',
-            'StrippingXib02Xic0PiPiXic02PKKPiFullDSTBeauty2CharmLine',
-	        'StrippingXib02Xic0PiPiWSXic02PKKPiFullDSTBeauty2CharmLine',
-            'StrippingXib2Xic0PiPiPiXic02PKKPiFullDSTBeauty2CharmLine',
-            'StrippingOmegab2Omegac0PiPiPiOmegac02PKKPiFullDSTBeauty2CharmLine'
-        ],
-        'Bhadron': [
-            'StrippingB2Dstar0KDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2HHHHBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2HHHHBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB2D0PiD2HHmuDSTBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2HHWSBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2HHWSBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2KSHHDDWSBeauty2CharmLine',
-            'StrippingUpsilon2BBBeauty2CharmLine',
-            'StrippingBc2BPiPiB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BPiPiWSB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BPiKB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BPiKWSB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BKPiB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BKKB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BKKWSB2D0HD02HHBeauty2CharmLine',
-            'StrippingBc2BPiPiB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BPiPiWSB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BPiKB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BPiKWSB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BKPiB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BKKB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BKKWSB2D0HD02HHHHBeauty2CharmLine',
-            'StrippingBc2BPiPiB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BPiPiWSB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BPiKB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BPiKWSB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BKPiB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BKKB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BKKWSB2DHHD2HHHCFPIDBeauty2CharmLine',
-            'StrippingBc2BPiPiB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BPiPiWSB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BPiKB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BPiKWSB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BKPiB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BKKB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BKKWSB2D0HHHD02HHPIDBeauty2CharmLine',
-            'StrippingBc2BPiPiB2D0DBeauty2CharmLine',
-            'StrippingBc2BPiPiWSB2D0DBeauty2CharmLine',
-            'StrippingBc2BPiKB2D0DBeauty2CharmLine',
-            'StrippingBc2BPiKWSB2D0DBeauty2CharmLine',
-            'StrippingBc2BKPiB2D0DBeauty2CharmLine',
-            'StrippingBc2BKKB2D0DBeauty2CharmLine',
-            'StrippingBc2BKKWSB2D0DBeauty2CharmLine',
-            'StrippingBc2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2D0KD02HHPIDBeauty2CharmLine',
-            'StrippingBc2D0KD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DPiPiD2HHHPIDBeauty2CharmLine',
-            'StrippingBc2DHHWSD2HHHPIDBeauty2CharmLine',
-            'StrippingBc2DHHNPD2HHHPIDBeauty2CharmLine',
-            'StrippingBc2DKPiD2HHHPIDBeauty2CharmLine',
-            'StrippingBc2DKKD2HHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarPiPiDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarHHWSDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarHHNPDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarKPiDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarKKDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarPiKDstar2D0PiD02HHPIDBeauty2CharmLine',
-            'StrippingBc2DstarPiPiDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarHHWSDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarHHNPDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarKPiDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarKKDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingBc2DstarPiKDstar2D0PiD02HHHHPIDBeauty2CharmLine',
-            'StrippingB2D0KD2HHWSBeauty2CharmLine',
-            'StrippingB2D0PiD2HHWSBeauty2CharmLine',
-            #'StrippingB2D0KD2HHUPBeauty2CharmLine',
-            'StrippingB2D0PiD2HHUPBeauty2CharmLine',
-            'StrippingB02DKWSD2HHHBeauty2CharmLine',
-            'StrippingB02DPiWSD2HHHBeauty2CharmLine',
-            'StrippingB02DPiNoIPDs2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKD2Pi0HHHMergedBeauty2CharmLine',
-            'StrippingB02DKD2Pi0HHHResolvedBeauty2CharmLine',
-            'StrippingB02DPiD2Pi0HHHMergedBeauty2CharmLine',
-            'StrippingB02DPiD2Pi0HHHResolvedBeauty2CharmLine',
-            'StrippingB02D0KKD2HHBeauty2CharmLine',
-            'StrippingB02D0KPiD2HHBeauty2CharmLine',
-            'StrippingB02DHHWSD2HHBeauty2CharmLine',
-            'StrippingB02D0PPbarD2HHBeauty2CharmLine',
-            'StrippingB02D0PPbarWSD2HHBeauty2CharmLine',
-            'StrippingB02D0KKD2HHWSBeauty2CharmLine',
-            'StrippingB02D0PiPiD2HHWSBeauty2CharmLine',
-            'StrippingB02D0KPiD2HHWSBeauty2CharmLine',
-            'StrippingB02DHHWSD2HHWSBeauty2CharmLine',
-            'StrippingB02D0KSDDD2HHBeauty2CharmLine',
-            'StrippingB02D0KSLLD2HHBeauty2CharmLine',
-            'StrippingB02Dst0PiPiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB02Dst0KPiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB02Dst0KKDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB02Dst0HHWSDst02D0Pi0D2HHResolvedBeauty2CharmLine',
-            'StrippingB02Dst0PiPiDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB02Dst0KPiDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB02Dst0KKDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB02Dst0HHWSDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2HHBeauty2CharmLine',
-            'StrippingB2D0KPi0ResolvedD2HHBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2HHBeauty2CharmLine',
-            'StrippingB2D0PiPi0ResolvedD2HHBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KPi0ResolvedD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0PiPi0ResolvedD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KPi0ResolvedD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0PiPi0ResolvedD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2HHHHBeauty2CharmLine',
-            'StrippingB2D0KPi0ResolvedD2HHHHBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2HHHHBeauty2CharmLine',
-            'StrippingB2D0PiPi0ResolvedD2HHHHBeauty2CharmLine',
-            'StrippingB2D0KsPiDDD2HHHHWSBeauty2CharmLine',
-            'StrippingB2D0KPi0ResolvedD2HHHHWSBeauty2CharmLine',
-            'StrippingB2D0KsPiLLD2HHHHWSBeauty2CharmLine',
-            'StrippingB2D0PiPi0ResolvedD2HHHHWSBeauty2CharmLine',
-            'StrippingB2D0KsKDDD2HHBeauty2CharmLine',
-            'StrippingB2D0KsKLLD2HHBeauty2CharmLine',
-            'StrippingB2D0KsKDDD2HHHHBeauty2CharmLine',
-            'StrippingB2D0KsKLLD2HHHHBeauty2CharmLine',
-            'StrippingB02DKD2PhiMuNuBeauty2CharmLine',
-            'StrippingB02DPiD2PhiMuNuBeauty2CharmLine',
-            'StrippingB02DKWSD2PhiMuNuBeauty2CharmLine',
-            'StrippingB02DPiWSD2PhiMuNuBeauty2CharmLine',
-            'StrippingB02DKD2HHHUPBeauty2CharmLine',
-            #'StrippingB02DPiD2HHHUPBeauty2CharmLine',
-            #'StrippingB02DKWSD2HHHUPBeauty2CharmLine',
-            #'StrippingB02DPiWSD2HHHUPBeauty2CharmLine',
-            'StrippingB02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DPiWSNoIPDs2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKsKDDD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsKLLD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsPiDDD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DPiPi0MergedD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKPi0MergedD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DPiPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsPiLLD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsPiDDWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DPiPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsPiLLWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DPiPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsKLLWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKsKDDWSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB2DKKD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB2DPPD2HHHPPBeauty2CharmLine',
-            'StrippingB2DKPiD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB2DPiPiD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB2DHHOSD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB2DRho0D2HHHPIDBeauty2CharmLine',
-            'StrippingB2DKstar0D2HHHPIDBeauty2CharmLine',
-            'StrippingB2DPhiD2HHHPIDBeauty2CharmLine',
-            'StrippingB2DKSDDD2HHHBeauty2CharmLine',
-            'StrippingB2DKSLLD2HHHBeauty2CharmLine',
-            'StrippingB02DRhoPMD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKstarPMD2HHHCFPIDBeauty2CharmLine',
-            'StrippingB02DKD2KSHLLBeauty2CharmLine',
-            'StrippingB02DPiD2KSHLLBeauty2CharmLine',
-            'StrippingB02DKWSD2KSHLLBeauty2CharmLine',
-            'StrippingB02DPiWSD2KSHLLBeauty2CharmLine',
-            'StrippingB02DKD2KSHDDBeauty2CharmLine',
-            'StrippingB02DPiD2KSHDDBeauty2CharmLine',
-            'StrippingB02DKWSD2KSHDDBeauty2CharmLine',
-            'StrippingB02DPiWSD2KSHDDBeauty2CharmLine',
-            'StrippingB2D0KD2KSMuMuLLBeauty2CharmLine',
-            'StrippingB2D0PiD2KSMuMuLLBeauty2CharmLine',
-            'StrippingB2D0KD2KSMuMuDDBeauty2CharmLine',
-            'StrippingB2D0PiD2KSMuMuDDBeauty2CharmLine',
-            'StrippingB2D0MuNuD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0MuNuD2KSHHDDBeauty2CharmLine',
-            'StrippingB02D0KKD2KSHHLLBeauty2CharmLine',
-            'StrippingB02D0PiPiD2KSHHLLBeauty2CharmLine',
-            'StrippingB02D0KPiD2KSHHLLBeauty2CharmLine',
-            'StrippingB02DHHWSD2KSHHLLBeauty2CharmLine',
-            'StrippingB02D0KKD2KSHHDDBeauty2CharmLine',
-            'StrippingB02D0PiPiD2KSHHDDBeauty2CharmLine',
-            'StrippingB02D0KPiD2KSHHDDBeauty2CharmLine',
-            'StrippingB02DHHWSD2KSHHDDBeauty2CharmLine',
-            'StrippingB02D0KKD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB02D0PiPiD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB02D0KPiD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB02DHHWSD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB02D0KKD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB02D0PiPiD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB02D0KPiD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB02DHHWSD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2D0KD2KSMuMuLLWSBeauty2CharmLine',
-            'StrippingB2D0PiD2KSMuMuLLWSBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0PiD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0KD2KSMuMuDDWSBeauty2CharmLine',
-            'StrippingB2D0PiD2KSMuMuDDWSBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'StrippingB02DstarKDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'StrippingB02DstarPiDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSHHLLBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSHHDDBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2HHHHBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2HHHHBeauty2CharmLine',
-            'StrippingB02DstarMuNuDst2D0Pi_D2HHHHWSBeauty2CharmLine',
-            'StrippingB02DstarMuNuWSDst2D0Pi_D2HHHHWSBeauty2CharmLine',
-            'StrippingB02DstarKsPiDDDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsKDDDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsKLLDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsPiLLDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsKDDWSDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsKLLWSDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsPiDDWSDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstarKsPiLLWSDst2D0PiBeauty2CharmLine',
-            'StrippingB2D0KD2HHHHBeauty2CharmLine',
-            'StrippingB2D0PiD2HHHHBeauty2CharmLine',
-            'StrippingB2D0KD2HHHHWSBeauty2CharmLine',
-            'StrippingB2D0PiD2HHHHWSBeauty2CharmLine',
-            #'StrippingB2D0KD2HHHHUPBeauty2CharmLine',
-            #'StrippingB2D0PiD2HHHHUPBeauty2CharmLine',
-            'StrippingB02D0KKD2HHHHBeauty2CharmLine',
-            'StrippingB02D0PiPiD2HHHHBeauty2CharmLine',
-            'StrippingB02D0KPiD2HHHHBeauty2CharmLine',
-            'StrippingB02DHHWSD2HHHHBeauty2CharmLine',
-            'StrippingB02D0KKD2HHHHWSBeauty2CharmLine',
-            'StrippingB02D0PiPiD2HHHHWSBeauty2CharmLine',
-            'StrippingB02D0KPiD2HHHHWSBeauty2CharmLine',
-            'StrippingB02DHHWSD2HHHHWSBeauty2CharmLine',
-            'StrippingB02D0KSDDD2K3PiBeauty2CharmLine',
-            'StrippingB02D0KSLLD2K3PiBeauty2CharmLine',
-            'StrippingB2D0KD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB2D0KD2Pi0HHWSResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD2Pi0HHWSResolvedBeauty2CharmLine',
-            'StrippingB2D0KD2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD2KSPi0HHLLResolvedBeauty2CharmLine',
-            'StrippingB2D0KD2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB2D0PiD2KSPi0HHLLMergedBeauty2CharmLine',
-            'StrippingB2D0KD2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD2KSPi0HHDDResolvedBeauty2CharmLine',
-            'StrippingB2D0KD2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB2D0PiD2KSPi0HHDDMergedBeauty2CharmLine',
-            'StrippingB2D0KD02KSPi0LLResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD02KSPi0LLResolvedBeauty2CharmLine',
-            'StrippingB2D0KD02KSPi0LLMergedBeauty2CharmLine',
-            'StrippingB2D0PiD02KSPi0LLMergedBeauty2CharmLine',
-            'StrippingB2D0KD02KSPi0DDResolvedBeauty2CharmLine',
-            'StrippingB2D0PiD02KSPi0DDResolvedBeauty2CharmLine',
-            'StrippingB2D0KD02KSPi0DDMergedBeauty2CharmLine',
-            'StrippingB2D0PiD02KSPi0DDMergedBeauty2CharmLine',
-            'StrippingB02D0KKD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB02D0PiPiD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB02D0KPiD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB02DHHWSD2Pi0HHResolvedBeauty2CharmLine',
-            'StrippingB02DKWSD2Pi0HHHResolvedBeauty2CharmLine',
-            'StrippingB02DPiWSD2Pi0HHHResolvedBeauty2CharmLine',
-            'StrippingB02DKWSD2Pi0HHHMergedBeauty2CharmLine',
-            'StrippingB02DPiWSD2Pi0HHHMergedBeauty2CharmLine',
-            'StrippingB2D0KKPiD2HHPIDBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2HHPIDBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2HHPIDBeauty2CharmLine',
-            'StrippingB2D0KKPiD2HHHHPIDBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2HHHHPIDBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2HHHHPIDBeauty2CharmLine',
-            'StrippingB2D0KKPiD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2KSHHDDBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2D0KKPiD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0KPiPiD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2KSHHLLBeauty2CharmLine',
-            'StrippingB2D0PiPiPiD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB02DKPiPiSSD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKKPiD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKPiPiSSWSD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKKPiWSD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DKPiPiWSD2HHHPIDBeauty2CharmLine',
-            'StrippingB02DPiPiPiWSD2HHHPIDBeauty2CharmLine',
-            'StrippingB2D0ppbarKD2HHBeauty2CharmLine',
-            'StrippingB2D0ppbarPiD2HHBeauty2CharmLine',
-            'StrippingB02DppbarKD2HHHBeauty2CharmLine',
-            'StrippingB02DppbarPiD2HHHBeauty2CharmLine',
-            'StrippingB2D0phiKD2HHPIDBeauty2CharmLine',
-            'StrippingB2D0phiKD2HHHHPIDBeauty2CharmLine',
-            'StrippingB02DstKKPiDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB02DstKPiPiDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB02DstPiPiPiDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB02DstPiPiPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB02DstKPiPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB02DstKKPiWSDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingB2DMuMuD2HHHBeauty2CharmLine',
-            'StrippingB2DMuMuWSD2HHHBeauty2CharmLine',
-            'StrippingB2DMuMuNPD2HHHBeauty2CharmLine',
-            'StrippingB2DMuMuD2KSHLLBeauty2CharmLine',
-            'StrippingB2DMuMuWSD2KSHLLBeauty2CharmLine',
-            'StrippingB2DMuMuNPD2KSHLLBeauty2CharmLine',
-            'StrippingB2DMuMuD2KSHDDBeauty2CharmLine',
-            'StrippingB2DMuMuWSD2KSHDDBeauty2CharmLine',
-            'StrippingB2DMuMuNPD2KSHDDBeauty2CharmLine',
-            'StrippingB2DstarMuMuD0PiBeauty2CharmLine',
-            'StrippingB2DstarMuMuWSD0PiBeauty2CharmLine',
-            'StrippingB2DstarMuMuNPD0PiBeauty2CharmLine',
-            'StrippingB2DstarMuMuD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstarMuMuWSD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstarMuMuNPD2HHHHPiBeauty2CharmLine',
-            'StrippingB02D0MuMuD2HHBeauty2CharmLine',
-            'StrippingB02D0MuMuWSD2HHBeauty2CharmLine',
-            'StrippingB02D0MuMuD2HHHHBeauty2CharmLine',
-            'StrippingB02D0MuMuWSD2HHHHBeauty2CharmLine',
-            'StrippingB02D0MuMuD2KSHHLLBeauty2CharmLine',
-            'StrippingB02D0MuMuWSD2KSHHLLBeauty2CharmLine',
-            'StrippingB02D0MuMuD2KSHHDDBeauty2CharmLine',
-            'StrippingB02D0MuMuWSD2KSHHDDBeauty2CharmLine',
-            'StrippingB02DsstKsPiLLDsst2DGammaD2HHHBeauty2CharmLine',
-            'StrippingB02DsstKsPiDDDsst2DGammaD2HHHBeauty2CharmLine',
-            'StrippingB02DDWSBeauty2CharmLine',
-            'StrippingB2D0DD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0D02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0D02HHD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0D02HHD02HHBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2KSHHLLBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHLLBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2KSHHDDBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0Pi0D2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHDDBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2KSHHLLBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2KSHHLLBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2KSHHLLWSBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2KSHHDDBeauty2CharmLine',
-            'StrippingB2Dstar0KDst02D0GammaD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2KSHHDDBeauty2CharmLine',
-            'StrippingB2Dstar0PiDst02D0GammaD2KSHHDDWSBeauty2CharmLine',
-            'StrippingB2DstPiKFavD0PiBeauty2CharmLine',
-            'StrippingB2DstPiKFavD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstPiKSupD0PiBeauty2CharmLine',
-            'StrippingB2DstPiKSupD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstPipPipD0PiBeauty2CharmLine',
-            'StrippingB2DstPipPipD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstPimPipD0PiBeauty2CharmLine',
-            'StrippingB2DstPimPipD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstPiKWSD0PiBeauty2CharmLine',
-            'StrippingB2DstPiKWSD2HHHHPiBeauty2CharmLine',
-            'StrippingB2DstPiPiWSD0PiBeauty2CharmLine',
-            'StrippingB2DstPiPiWSD2HHHHPiBeauty2CharmLine',
-            'StrippingB2D0D0KD02HHD02HHBeauty2CharmLine',
-            'StrippingB2D0D0PiD02HHD02HHBeauty2CharmLine',
-            'StrippingB2DstD0Beauty2CharmLine',
-            'StrippingB2DstD0D02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstWSBeauty2CharmLine',
-            'StrippingB02DstDWSBeauty2CharmLine',
-
-            ######################
-            ###### DDX lines #####
-            ######################
-            #### DDK lines ###
-            'StrippingB2DDKBeauty2CharmLine',
-            'StrippingB2DDKWSBeauty2CharmLine',
-            'StrippingB02D0DKBeauty2CharmLine',
-            'StrippingB02D0DKD02K3PiBeauty2CharmLine',
-            'StrippingB02D0DKWSBeauty2CharmLine',
-            'StrippingB02D0DKWSD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDKBeauty2CharmLine',
-            'StrippingB2DstDKDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDKWSBeauty2CharmLine',
-            'StrippingB2DstDKWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2D0D0KD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB2D0D0KD02HHD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KBeauty2CharmLine',
-            'StrippingB02DstD0KD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KWSBeauty2CharmLine',
-            'StrippingB02DstD0KWSD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0KWSDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstKBeauty2CharmLine',
-            'StrippingB2DstDstKDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstKWSBeauty2CharmLine',
-            'StrippingB2DstDstKWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstKWSDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2Dst2460DKBeauty2CharmLine',
-            'StrippingB2Dst2460DKWSBeauty2CharmLine',
-            'StrippingB2D0st2460D0KBeauty2CharmLine',
-            'StrippingB2Dst0D0KDst02D0Pi0ResolvedD02HHBeauty2CharmLine',
-            'StrippingB2Dst0D0KDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingB02Dst0DKDst02D0Pi0ResolvedD2HHHBeauty2CharmLine',
-            'StrippingB02Dst0DKDst02D0GammaD2HHHBeauty2CharmLine',
-            ##### DDKS lines ###
-            'StrippingB02DDKSDDBeauty2CharmLine',
-            'StrippingB02DDKSWSDDBeauty2CharmLine',
-            'StrippingB2D0DKSDDBeauty2CharmLine',
-            'StrippingB2D0DKSDDD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDKSDDBeauty2CharmLine',
-            'StrippingB02DstDKSDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDKSWSDDBeauty2CharmLine',
-            'StrippingB02DstDKSWSDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0KSD02K3PiD02K3PiDDBeauty2CharmLine',
-            'StrippingB02D0D0KSD02HHD02HHDDBeauty2CharmLine',
-            'StrippingB02D0D0KSD02HHD02K3PiDDBeauty2CharmLine',
-            'StrippingB2DstD0KSDDBeauty2CharmLine',
-            'StrippingB2DstD0KSDDD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KSDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KSDDDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSDDBeauty2CharmLine',
-            'StrippingB02DstDstKSDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSWSDDBeauty2CharmLine',
-            'StrippingB02DstDstKSWSDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSWSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DDKSLLBeauty2CharmLine',
-            'StrippingB02DDKSWSLLBeauty2CharmLine',
-            'StrippingB2D0DKSLLBeauty2CharmLine',
-            'StrippingB2D0DKSLLD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDKSLLBeauty2CharmLine',
-            'StrippingB02DstDKSLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDKSWSLLBeauty2CharmLine',
-            'StrippingB02DstDKSWSLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0KSD02K3PiD02K3PiLLBeauty2CharmLine',
-            'StrippingB02D0D0KSD02HHD02HHLLBeauty2CharmLine',
-            'StrippingB02D0D0KSD02HHD02K3PiLLBeauty2CharmLine',
-            'StrippingB2DstD0KSLLBeauty2CharmLine',
-            'StrippingB2DstD0KSLLD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KSLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KSLLDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSLLBeauty2CharmLine',
-            'StrippingB02DstDstKSLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSWSLLBeauty2CharmLine',
-            'StrippingB02DstDstKSWSLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKSWSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            ##### DDLambda lines ###
-            'StrippingLb2DDLambdaDDBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02HHD02HHDDBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02HHD02K3PiDDBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02K3PiD02K3PiDDBeauty2CharmLine',
-            'StrippingLb2DstDLambdaDDBeauty2CharmLine',
-            'StrippingLb2DstDLambdaDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaDDBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaDDDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2DDLambdaLLBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02HHD02HHLLBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02HHD02K3PiLLBeauty2CharmLine',
-            'StrippingLb2D0D0LambdaD02K3PiD02K3PiLLBeauty2CharmLine',
-            'StrippingLb2DstDLambdaLLBeauty2CharmLine',
-            'StrippingLb2DstDLambdaLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaLLBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaLLDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2DstDstLambdaLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            ##### DDK* lines ###
-            'StrippingB02D0D0KstD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02D0D0KstD02HHD02HHBeauty2CharmLine',
-            'StrippingB02D0D0KstD02HHD02K3PiBeauty2CharmLine',
-            'StrippingB02DDKstBeauty2CharmLine',
-            'StrippingB02DstDKstBeauty2CharmLine',
-            'StrippingB02DstDKstDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKstBeauty2CharmLine',
-            'StrippingB02DstDstKstDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKstDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DD0KstBeauty2CharmLine',
-            'StrippingB2DD0KstD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KstBeauty2CharmLine',
-            'StrippingB2DstD0KstDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KstD02K3PiBeauty2CharmLine',
-            'StrippingB2DstD0KstDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB2D0DKPiBeauty2CharmLine',
-            'StrippingB2D0DKPiD02K3PiBeauty2CharmLine',
-            ##### DDPhi lines ###
-            'StrippingB2D0DKKBeauty2CharmLine',
-            'StrippingB2D0DKKD2K3PiBeauty2CharmLine',
-            #'StrippingB02DDKKBeauty2CharmLine',
-            #'StrippingB02DstDKKBeauty2CharmLine',
-            #'StrippingB02DstDKKDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKKBeauty2CharmLine',
-            'StrippingB02DstDstKKDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDstKKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            ##### DDspipi lines ###
-            'StrippingB02DDspipiBeauty2CharmLine',
-            'StrippingB2D0DspipiBeauty2CharmLine',
-            'StrippingB2D0DspipiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstDspipiBeauty2CharmLine',
-            'StrippingB02DstDspipiDstarD02K3PiBeauty2CharmLine',
-            ##### DDs2460 lines ###
-            'StrippingB02DDs2460Beauty2CharmLine',
-            'StrippingB2D0Ds2460Beauty2CharmLine',
-            'StrippingB2D0Ds2460D02K3PiBeauty2CharmLine',
-            'StrippingB02DstDs2460Beauty2CharmLine',
-            'StrippingB02DstDs2460DstarD02K3PiBeauty2CharmLine',
-            #### DDPi lines ###
-            'StrippingB2DDPiBeauty2CharmLine',
-            'StrippingB2DDPiWSBeauty2CharmLine',
-            'StrippingB02D0DPiBeauty2CharmLine',
-            'StrippingB02D0DPiD02K3PiBeauty2CharmLine',
-            'StrippingB02D0DPiWSBeauty2CharmLine',
-            'StrippingB02D0DPiWSD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDPiBeauty2CharmLine',
-            'StrippingB2DstDPiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDPiWSBeauty2CharmLine',
-            'StrippingB2DstDPiWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2D0D0PiD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB2D0D0PiD02HHD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiBeauty2CharmLine',
-            'StrippingB02DstD0PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiWSBeauty2CharmLine',
-            'StrippingB02DstD0PiWSD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB02DstD0PiWSDstarD02K3PiD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstPiBeauty2CharmLine',
-            'StrippingB2DstDstPiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstPiDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstPiWSBeauty2CharmLine',
-            'StrippingB2DstDstPiWSDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2DstDstPiWSDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            'StrippingB2Dst2460DPiBeauty2CharmLine',
-            'StrippingB2Dst2460DPiWSBeauty2CharmLine',
-            'StrippingB2D0st2460D0PiBeauty2CharmLine',
-            ##### DDpK lines ###
-            'StrippingLb2DDpKD2HHHPIDBeauty2CharmLine',
-            #########################
-            #### End of DDX lines ###
-            #########################
-            'StrippingLb2LcKLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiLc2PKKBeauty2CharmLine',
-            'StrippingLb2LcPiLc2PPiPiBeauty2CharmLine',
-            'StrippingLb2LcKWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiWSLc2PKKBeauty2CharmLine',
-            'StrippingLb2LcPiWSLc2PPiPiBeauty2CharmLine',
-            'StrippingLb2LcPiNoIPWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcDLc2Lambda0LLPiD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDLc2Lambda0DDPiD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDstLc2Lambda0LLPiBeauty2CharmLine',
-            'StrippingLb2LcDstLc2Lambda0DDPiBeauty2CharmLine',
-            'StrippingLb2LcDstLc2Lambda0LLPiDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2LcDstLc2Lambda0DDPiDstarD02K3PiBeauty2CharmLine',
-            'StrippingLb2LcDsstarLc2Lambda0LLPiDsstarD02HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDsstarLc2Lambda0DDPiDsstarD02HHHPIDBeauty2CharmLine',
-            'StrippingLb2XicPiXic2PKPiBeauty2CharmLine',
-            'StrippingLb2XicKXic2PKPiBeauty2CharmLine',
-            'StrippingLb2XicKWSXic2PKPiBeauty2CharmLine',
-            'StrippingLb2XicPiWSXic2PKPiBeauty2CharmLine',
-            'StrippingLb2XicPiNoIPWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib2Xic0KXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiWSXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0KWSXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiNoIPWSXic02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0PiOmegac02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0KOmegac02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0KWSOmegac02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0PiWSOmegac02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2Omegac0PiNoIPWSOmegac02PKKPiBeauty2CharmLine',
-            'StrippingOmegab2XicpKPiXicp2PKPiBeauty2CharmLine',
-            'StrippingOmegab2LcKKLc2PKPiBeauty2CharmLine',
-            'StrippingXib02XicDXic2PKPiBeauty2CharmLine',
-            'StrippingXib02XicDWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib2Xic0DXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0DWSXic02PKKPiBeauty2CharmLine',
-            'StrippingXib02XicKPiPiXic2PKPiBeauty2CharmLine',
-            'StrippingXib02XicPiPiPiXic2PKPiBeauty2CharmLine',
-            'StrippingXib02XicPiPiPiWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib02XicKPiPiWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib2Xic0KPiPiXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiPiPiXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0KPiPiWSXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2Xic0PiPiPiWSXic02PKKPiBeauty2CharmLine',
-            'StrippingXib2LcDKLc2PKPiD2HHHBeauty2CharmLine',
-            'StrippingXib2LcDKWSLc2PKPiD2HHHBeauty2CharmLine',
-            'StrippingXib02LcDsKPiLc2PKPiDs2KKPiBeauty2CharmLine',
-            'StrippingXib02LcDsKPiWSLc2PKPiDs2KKPiBeauty2CharmLine',
-            'StrippingB2LcDspbarLc2PKPiDs2KKPiBeauty2CharmLine',
-            'StrippingB2LcDspbarWSLc2PKPiDs2KKPiBeauty2CharmLine',
-            'StrippingSb2D0PD2HHPIDBeauty2CharmLine',
-            'StrippingSb02DPD2HHHPIDBeauty2CharmLine',
-            'StrippingSb02DPWSD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2D0PHD02HHBeauty2CharmLine',
-            'StrippingLb2D0PHWSD02HHBeauty2CharmLine',
-            'StrippingLb2D0PHNoPIDD02HHBeauty2CharmLine',
-            'StrippingLb2D0PHNoPIDWSD02HHBeauty2CharmLine',
-            'StrippingLb2D0PHD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0PHWSD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0pKD02HHHHPIDBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
-            'StrippingLb2D0pKD02K3PiWSBeauty2CharmLine',
-            'StrippingLb2D0pKD02HHHHPIDWSBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsDDHHWSBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsLLHHWSBeauty2CharmLine',
-            'StrippingLb2D0pPiD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0pPiD02HHHHPIDBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
-            'StrippingLb2D0pPiD02K3PiWSBeauty2CharmLine',
-            'StrippingLb2D0pPiD02HHHHPIDWSBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsDDHHWSBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsLLHHWSBeauty2CharmLine',
-            'StrippingLb2D0PPbarD02HHBeauty2CharmLine',
-            'StrippingLb2D0PPbarWSD02HHBeauty2CharmLine',
-            'StrippingLb2LcKSKLLLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcKSKDDLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcKKPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcppbarKLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcppbarPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcKPiPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiLc2PKKBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiLc2PPiPiBeauty2CharmLine',
-            'StrippingLb2LcKPiPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiWSLc2PKKBeauty2CharmLine',
-            'StrippingLb2LcPiPiPiWSLc2PPiPiBeauty2CharmLine',
-            'StrippingLb2LcppbarKWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcppbarPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcKKPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKKLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarpbarpLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarPiPiLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKPiLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarPiPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarpbarpWSLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKKWSLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcDD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDWSD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDsD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDsWSD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2Lc2595DsD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2Lc2595DsWSD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2Lc2625DsD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2Lc2625DsWSD2HHHPIDBeauty2CharmLine',
-            'StrippingLb2LcDKstBeauty2CharmLine',
-            'StrippingLb2LcDstKstBeauty2CharmLine',
-            'StrippingLb2LcDst0KLc2PKPiDst02D0GammaD2HHBeauty2CharmLine',
-            'StrippingLb2LcDst0KLc2PKPiDst02D0Pi0ResolvedD2HHBeauty2CharmLine',
-            'StrippingLb2LcDst0KLc2PKPiDst02D0Pi0MergedD2HHBeauty2CharmLine',
-            'StrippingX2LcD0D02KPiBeauty2CharmLine',
-            'StrippingX2LcD0PiD02KPiBeauty2CharmLine',
-            'StrippingX2LcD0KD02KPiBeauty2CharmLine',
-            'StrippingX2LcD0PiWSD02KPiBeauty2CharmLine',
-            'StrippingX2LcD0KWSD02KPiBeauty2CharmLine',
-            'StrippingX02XiccpPiXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingX02XiccpKXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingX02XiccpPiWSXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingX02XiccpKWSXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingX2XiccppKXiccpp2XicPiBeauty2CharmLine',
-            'StrippingX2XiccppPiXiccpp2XicPiBeauty2CharmLine',
-            'StrippingX2XiccppKWSXiccpp2XicPiBeauty2CharmLine',
-            'StrippingX2XiccppPiWSXiccpp2XicPiBeauty2CharmLine',
-            'StrippingX2LcPiPiOSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcPiKOSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcPiPiSSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKKSSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKPiOSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKKOSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKPiSSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcPiPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKKWSLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKPiPiPiLc2PKPiBeauty2CharmLine',
-            'StrippingX2LcKPiPiPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingXib2XicPiPiXic2PKPiBeauty2CharmLine',
-            'StrippingXib2XicKPiXic2PKPiBeauty2CharmLine',
-            'StrippingXib2XicKKXic2PKPiBeauty2CharmLine',
-            'StrippingXib2XicKKWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib2XicPiPiWSXic2PKPiBeauty2CharmLine',
-            'StrippingXib2XicKPiWSXic2PKPiBeauty2CharmLine',
-            'StrippingLb2LcDstDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingLb2LcDstWSDstar2D0PiPIDBeauty2CharmLine',
-            'StrippingX2LcLcBeauty2CharmLine',
-            'StrippingX2LcLcWSBeauty2CharmLine',
-            'StrippingLb2LcLcnLc2PKPiBeauty2CharmLine',
-            'StrippingLb2LcLcnWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2Lc5PiLc2PKPiPIDBeauty2CharmLine',
-            'StrippingLb2D0Lambda0DDD02HHBeauty2CharmLine',
-            'StrippingLb2D0Lambda0LLD02HHBeauty2CharmLine',
-            'StrippingLb2D0Lambda0DDD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0Lambda0LLD02K3PiBeauty2CharmLine',
-            'StrippingLb2DpKKD2HHHBeauty2CharmLine',
-            'StrippingLb2DpPiPiD2HHHBeauty2CharmLine',
-            'StrippingLb2DpKPiD2HHHBeauty2CharmLine',
-            'StrippingXib2D0pKKD02HHBeauty2CharmLine',
-            'StrippingXib2D0pPiPiD02HHBeauty2CharmLine',
-            'StrippingXib2D0pKPiD02HHBeauty2CharmLine',
-            #'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
-            #'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
-            #'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
-            #'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
-            #'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
-            'StrippingLb2DD0pD2HHHD02K3PiBeauty2CharmLine',
-            'StrippingLb2DD0pD2HHHD2HHBeauty2CharmLine',
-            'StrippingXibc2DpKD2HHHBeauty2CharmLine',
-            'StrippingB2LcpbarKSSLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcpbarPiSSLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcpbarKWSLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcpbarPiWSLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcpbarLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcpbarWSLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcLcKLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKSDDLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKSWSDDLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKSLLLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcpbarKSWSLLLc2PKPiBeauty2CharmLine',
-            'StrippingLb2DLambda0DDpiD2HHHBeauty2CharmLine',
-            'StrippingLb2DLambda0LLpiD2HHHBeauty2CharmLine',
-            'StrippingLb2DLambda0DDpiWSD2HHHBeauty2CharmLine',
-            'StrippingLb2DLambda0LLpiWSD2HHHBeauty2CharmLine',
-            'StrippingXib2D0Lambda0DDpiD02HHBeauty2CharmLine',
-            'StrippingXib2D0Lambda0LLpiD02HHBeauty2CharmLine',
-            'StrippingXib2D0Lambda0DDpiWSD02HHBeauty2CharmLine',
-            'StrippingXib2D0Lambda0LLpiWSD02HHBeauty2CharmLine',
-            'StrippingB02LcLambda0KLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcLambda0PiLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcLambda0PiWSLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcLambda0KWSLc2PKPiBeauty2CharmLine',
-            'StrippingLb2sigmacpp4PiSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
-            'StrippingLb2sigmacppD0KPiSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
-            'StrippingB02LcSigmacppKSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
-            'StrippingB2LcXicPiXic2PKPiLc2PKPiBeauty2CharmLine',
-            'StrippingBs2LcSigmapLc2PKPiSigmap2PPizBeauty2CharmLine',
-            'StrippingB02DKLTUBD2HHHBeauty2CharmLine',
-            'StrippingB02DsKPiPiLTUBD2HHHBeauty2CharmLine',
-            'StrippingB02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine',
-            'StrippingDstarUPB02D0KPiD2HHBeauty2CharmLine',
-#
-#            # Bc+ -> D+ D0
-            'StrippingBc2DD0D2KSHHHD02HHBeauty2CharmLine',
-            'StrippingBc2DD0D2KSHHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DD0D2KSHHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DD0D2KSHHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DD0D2KSHD02HHBeauty2CharmLine',
-            'StrippingBc2DD0D2KSHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DD0D2KSHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DD0D2KSHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DD0D2HHHD02HHBeauty2CharmLine',
-            'StrippingBc2DD0D2HHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DD0D2HHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DD0D2HHHD02KSHHBeauty2CharmLine',
-#
-#            # Bc+ -> D*+ D0
-            'StrippingBc2DstD0Dst2DPI0D2HHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2HHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2HHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2HHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KHHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KHHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KHHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KHHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2HHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2HHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2HHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DGammaD2HHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02HHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02HHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02HHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02HHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KSHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KSHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KSHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2D0PID02KSHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHD02HHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHD02HHPI0Beauty2CharmLine',
-            'StrippingBc2DstD0Dst2DPI0D2KSHD02KSHHBeauty2CharmLine',
-#
-#            # Bc+ -> D+ D*0
-            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2KSHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DDst0D2HHHDst02D0GammaD02HHBeauty2CharmLine',
-#
-#            # Bc+ -> D*+ D*0
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02HHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
-            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02HHBeauty2CharmLine',
-
-            ##B_c+
-            'StrippingBc2DsppbarBeauty2CharmLine',            
-            'StrippingBc2D0KpipiD02KPIPIDBeauty2CharmLine',            
-            'StrippingBc2D0KpipiD02K3PIPIDBeauty2CharmLine',            
-            'StrippingBc2LcKpbarLC2PKPIBeauty2CharmLine',            
-
-            #Xibc
-            'StrippingXibc2LcD0D02KPiBeauty2CharmLine',
-            'StrippingXibc2LcD0PiD02KPiBeauty2CharmLine',
-            'StrippingXibc2D0D0pD02KPiBeauty2CharmLine',
-            'StrippingXibc2LcPiPiOSLc2PKPiBeauty2CharmLine',
-            'StrippingXibc2LcKPiOSLc2PKPiBeauty2CharmLine',
-            'StrippingXibc2LcPiKOSLc2PKPiBeauty2CharmLine',
-            'StrippingXibc02XiccpPiXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingXibc2XiccppPiXiccpp2XicPiBeauty2CharmLine',
-            'StrippingXibc2XiccppPiXiccpp2LcK2PiBeauty2CharmLine',
-            'StrippingXibc2LcPiLc2PKPiBeauty2CharmLine',
-            'StrippingXibc2LcKLc2PKPiBeauty2CharmLine',
-            'StrippingXibc2XicPiXic2PKPiBeauty2CharmLine',
-            'StrippingXibc2Xic0PiXic02PKKPiBeauty2CharmLine',
-            'StrippingXibc02XiccpMuXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingXibc2XiccppMuXiccpp2XicPiBeauty2CharmLine',
-            'StrippingXibc02XiccpMuWSXiccp2Xic0PiBeauty2CharmLine',
-            'StrippingXibc2XiccppMuWSXiccpp2XicPiBeauty2CharmLine',
-            'StrippingX2Omegac0PiOmegac02PKKPiBeauty2CharmLine',
-            'StrippingX2Omegac0KOmegac02PKKPiBeauty2CharmLine',
-            'StrippingX2Omegac0KOSOmegac02PKKPiBeauty2CharmLine',
-            'StrippingXibc2LcD0MuD02KPiBeauty2CharmLine',
-            'StrippingXibc2LcD0MuWSD02KPiBeauty2CharmLine',
-            'StrippingXibc2LcDMuD2KPiPiBeauty2CharmLine',
-            'StrippingXibc2LcDMuWSD2KPiPiBeauty2CharmLine',
-#
-            'StrippingB2XicpbarPiXic2PKPiBeauty2CharmLine',
-            'StrippingB02XicpbarPiPiXic2PKPiBeauty2CharmLine',
-            'StrippingB02XicpbarKPiXic2PKPiBeauty2CharmLine',
-            'StrippingB02DpbarLambdaDDD2HHHBeauty2CharmLine',
-            'StrippingB02DpbarLambdaLLD2HHHBeauty2CharmLine',
-            'StrippingB02DstpbarLambdaDDDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstpbarLambdaLLDst2D0PiBeauty2CharmLine',
-            'StrippingB02DstpbarLambdaDDDst2D0PiD02K3PiBeauty2CharmLine',
-            'StrippingB02DstpbarLambdaLLDst2D0PiD02K3PiBeauty2CharmLine',
-            'StrippingB2D0pbarLambdaDDD02HHBeauty2CharmLine',
-            'StrippingB2D0pbarLambdaLLD02HHBeauty2CharmLine',
-            'StrippingB2D0pbarLambdaDDD02K3PiBeauty2CharmLine',
-            'StrippingB2D0pbarLambdaLLD02K3PiBeauty2CharmLine',
-            'StrippingB02D0pbarKLambdaDDD02HHBeauty2CharmLine',
-            'StrippingB02D0pbarKLambdaLLD02HHBeauty2CharmLine',
-            'StrippingB02D0pbarKLambdaDDD02K3PiBeauty2CharmLine',
-            'StrippingB02D0pbarKLambdaLLD02K3PiBeauty2CharmLine',
-            'StrippingXib2Xic0D0KD02KPiBeauty2CharmLine',
-            'StrippingXib2XicDKD2HHHBeauty2CharmLine',
-            'StrippingXib2XicDKDst2D0PiBeauty2CharmLine',
-            'StrippingXib02XicD0KD02KPiBeauty2CharmLine',
-            'StrippingXib02XicD0KD02K3PiBeauty2CharmLine',
-            'StrippingOmegab2Xic0KPiPiXic02PKKPiBeauty2CharmLine',
-            'StrippingXib02D0LambdaPiPiLLD02KPiBeauty2CharmLine',
-            'StrippingXib02D0LambdaPiPiLLD02K3PiBeauty2CharmLine',
-            'StrippingXib02D0LambdaPiPiDDD02KPiBeauty2CharmLine',
-            'StrippingXib02D0LambdaPiPiDDD02K3PiBeauty2CharmLine',
-            'StrippingXib2LcKHHHLc2PKPiBeauty2CharmLine',
-            'StrippingXib2XicHHHHXic2PKPiBeauty2CharmLine'
+
+class LooseXiccBuilder(object):
+    '''Produces Xi_cc baryons for the Beauty2Charm module.'''
+
+    def __init__(self, lc, pions, kaons, config):
+        self.lc = lc.pkpi
+        self.pions = pions
+        self.kaons = kaons
+        self.config = config
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        self.xiccpp = [self._makeLooseXiccpp2Xicpi()]
+        self.xiccpp2lck2pi = [self._makeLooseXiccpp2LcK2Pi()]
+        self.xiccp = [self._makeLooseXiccp2Xic0pi()]
+
+    def _makeLooseXiccpp2Xicpi(self):
+        '''Makes Xi_cc++-> Xi_c+ pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_cc++') < %s*%s) " % (dm + 410, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_cc++') < %s*%s) " % (dm + 400, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_cc++ -> Xi_c+ pi+]cc"])
+        return Selection(
+            'LooseXiccpp2XicPiXic2PKPiPBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.xic + [self.pions])
+
+    def _makeLooseXiccp2Xic0pi(self):
+        '''Makes Xi_cc+ -> Xi_c0 pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_cc+ -> Xi_c0 pi+]cc"])
+        return Selection(
+            'LooseXiccp2Xic0PiXic02PKKPiPBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.xic0 + [self.pions])
+
+    def _makeLooseXiccpp2LcK2Pi(self):
+        '''Makes Xi_cc++ -> Lambda_c+ K- pi+ pi+ + cc'''
+        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
+        comboCuts = [
+            LoKiCuts(['ASUMPT'], self.config).code(),
+            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
+            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
         ]
-    },
-    'WGs': ['B2OC']
-}
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["[Xi_cc++ -> Lambda_c+ K- pi+ pi+]cc"])
+        return Selection(
+            'LooseXiccpp2LcK2PiLc2PKPiBeauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=self.lc + [self.kaons] + [self.pions])
+
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
+class XibcBuilder(object):
+    '''Makes all Xibc -> X lines.'''
+
+    def __init__(self, lc, xicc, d, topoPions_PID, topoKaons_PID,
+                 topoProtons_PID, pions, kaons, protons, muons, config,
+                 configSL):
+        self.lc = lc.pkpi
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        self.omegac0 = lc.omegac0_pkkpi
+        self.xiccp = xicc.xiccp
+        self.xiccpp = xicc.xiccpp
+        self.xiccpp2lck2pi = xicc.xiccpp2lck2pi
+        #self.d = d
+        self.dp = d.d_cf_hhh_pid_tightpi
+        self.d0 = d.kpi_pid_tighter1_narrow  #Tight PID cuts, 60 MeV mass window
+        self.pions = [pions]
+        self.kaons = [kaons]
+        self.protons = [protons]
+        self.muons = [muons]
+        self.topoPions_pid = [topoPions_PID]
+        self.topoKaons_pid = [topoKaons_PID]
+        self.protons_pid = [topoProtons_PID]
+        self.config = deepcopy(config)
+        self.configSL = deepcopy(configSL)
+        #self.config['AM_MIN'] = '5200*MeV'
+        self.lines = []
+
+        #-----------------------
+        # --- Hadronic Modes ---
+        #-----------------------
+        ### bc baryon -> Lc D0
+        self._makeXibc2LcD0()
+        ### bc baryon -> Lc D0 H
+        self._makeXibc2LcD0H()
+        ### bc baryon -> Xi_cc+ pi-
+        self._makeXibc02XiccH()
+        ### bc baryon -> Xi_cc++ pi- (Xicc -> XicPi/LcK2Pi)
+        self._makeXibc2XiccH('Xiccpp2XicPi', self.xiccpp)
+        self._makeXibc2XiccH('Xiccpp2LcK2Pi', self.xiccpp2lck2pi)
+        ### bc baryon -> Lc H+H-,
+        self._makeXibc2LcHH()
+        # Xibc -> Lc+- H-
+        self._makeXibc2LcH()
+        # Xibc -> Xic+- Pi
+        self._makeXibc2XicH()
+        ### Xibc -> Xic0 Pi
+        self._makeXibc2Xic0H()
+        ### Xibc -> D0 D0 p
+        self._makeXibc2D0D0p()
+        # X -> Omega_c0 {Pi,K}
+        self._makeX2Omegac0H()
+
+        #---------------------------
+        # --- Semileptonic Modes ---
+        #---------------------------
+        ### bc baryon -> Xi_cc+ mu-
+        self._makeXibc02XiccMu()
+        ### bc baryon -> Xi_cc++ mu-
+        self._makeXibc2XiccMu()
+        ### bc baryon -> Lc D0 H
+        self._makeXibc2LcD0Mu()
+        ### bc baryon -> Lc D0 H
+        self._makeXibc2LcDMu()
+
+    def _makeXibc2D0D0p(self):
+        '''Makes Xibc -> D0 D0 p'''
+        decays = {'Xibc2D0D0p': ["Xi_bc+ -> D0 D0 p+", "Xi_bc~- -> D0 D0 p~-"]}
+        inputs = {'Xibc2D0D0p': self.d0 + self.protons}
+        b2d0d0p = makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(b2d0d0p, 1.0))
+
+    def _makeXibc2LcD0(self):
+        '''Makes RS Xibc -> Lc D0 + c.c.'''
+        decays = {
+            'Xibc2LcD0':
+            ["Xi_bc+ -> Lambda_c+ D0", "Xi_bc~- -> Lambda_c~- D0"]
+        }
+        inputs = {'Xibc2LcD0': self.d0 + self.lc}
+        rs = makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2LcD0H(self):
+        '''Makes RS  Xibc -> Lc D0 H + c.c. Need loose pions here as they may be soft'''
+        pions = self.pions
+        #kaons = self.kaons
+        decays = {
+            'Xibc2LcD0Pi':
+            ["Xi_bc0 -> Lambda_c+ D0 pi-", "Xi_bc0 -> Lambda_c~- D0 pi+"]
+        }
+        inputs = {'Xibc2LcD0Pi': self.d0 + self.lc + pions}
+        rs = makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2LcHH(self):
+        '''Makes RS Xibc -> Lc H+H-, LC H-H- + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        decays = {
+            'Xibc2LcPiPiOS': ["[Xi_bc+ -> Lambda_c+ pi- pi+]cc"],
+            'Xibc2LcKPiOS': ["[Xi_bc+ -> Lambda_c+ K- pi+]cc"],
+            'Xibc2LcPiKOS': ["[Xi_bc+ -> Lambda_c+ K+ pi-]cc"],
+        }
+        inputs = {
+            'Xibc2LcPiPiOS': self.lc + pions,
+            'Xibc2LcKPiOS': self.lc + kaons + pions,
+            'Xibc2LcPiKOS': self.lc + kaons + pions,
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc02XiccH(self):
+        '''Make RS Xi_bcd -> Xi_cc+ H (H=pi) + cc.'''
+        pions = self.topoPions_pid
+        #kaons = self.kaons
+        decays = {'Xibc02XiccpPi': ["[Xi_bc0 -> Xi_cc+ pi-]cc"]}
+        inputs = {'Xibc02XiccpPi': self.xiccp + pions}
+        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2XiccH(self, dname, xiccpp2x):
+        '''Make RS and WS Xi_bcu -> Xi_cc++ H (H=pi) + cc.'''
+        pions = self.topoPions_pid
+        decays = {'Xibc2XiccppPi': ["[Xi_bc+ -> Xi_cc++ pi-]cc"]}
+        inputs = {'Xibc2XiccppPi': xiccpp2x + pions}
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2LcH(self):
+        '''Make RS Xibc -> Lc H (H=pi,K) + cc.'''
+        pions = self.topoPions_pid
+        kaons = self.topoKaons_pid
+        decays = {
+            'Xibc2LcPi': ["[Xi_bc0 -> Lambda_c+ pi-]cc"],
+            'Xibc2LcK': ["[Xi_bc0 -> Lambda_c+ K-]cc"]
+        }
+        inputs = {'Xibc2LcPi': self.lc + pions, 'Xibc2LcK': self.lc + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2XicH(self):
+        '''Make RS Xibc -> Xi_c+ H (H=pi) + cc.'''
+        pions = self.topoPions_pid
+        #kaons = self.topoKaons
+        decays = {'Xibc2XicPi': ["[Xi_bc0 -> Xi_c+ pi-]cc"]}
+        inputs = {'Xibc2XicPi': self.xic + pions}
+        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2Xic0H(self):
+        '''Make RS and WS Xi_bc -> Xi_c0 H (H=pi) + cc.'''
+        pions = self.topoPions_pid
+        decays = {'Xibc2Xic0Pi': ["[Xi_bc+ -> Xi_c0 pi+]cc"]}
+        inputs = {'Xibc2Xic0Pi': self.xic0 + pions}
+        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeX2Omegac0H(self):
+        '''Make Omega_b --> Omega_c {pi,K} and Xibc+ -->  Omega_c0 K+  + cc.'''
+        pions = self.topoPions_pid
+        kaons = self.topoKaons_pid
+        decays = {'X2Omegac0Pi': ["[Omega_b- -> Omega_c0 pi-]cc"]}
+        inputs = {'X2Omegac0Pi': self.omegac0 + pions}
+        rspi = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
+        decays = {'X2Omegac0K': ["[Omega_b- -> Omega_c0 K-]cc"]}
+        inputs = {'X2Omegac0K': self.omegac0 + kaons}
+        rsk = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
+        decays = {'X2Omegac0KOS': ["[Xi_bc+ -> Omega_c0 K+]cc"]}
+        inputs = {'X2Omegac0KOS': self.omegac0 + kaons}
+        osk = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rspi, 1.0))
+        self.lines.append(ProtoLine(rsk, 1.0))
+        self.lines.append(ProtoLine(osk, 1.0))
+
+    def _makeXibc02XiccMu(self):
+        '''Make RS+WS Xi_bcd -> Xi_cc+ mu-  + cc.'''
+        muons = self.muons
+        decays = {'Xibc02XiccpMu': ["[Xi_bc0 -> Xi_cc+ mu-]cc"]}
+        inputs = {'Xibc02XiccpMu': self.xiccp + muons}
+        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.configSL)
+        decays = {'Xibc02XiccpMuWS': ["[Xi_bc0 -> Xi_cc+ mu+]cc"]}
+        inputs = {'Xibc02XiccpMuWS': self.xiccp + muons}
+        ws = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.configSL)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 1.0))
+
+    def _makeXibc2XiccMu(self):
+        '''Make RS+WS Xi_bcu -> Xi_cc++ mu-  + cc.'''
+        muons = self.muons
+        decays = {'Xibc2XiccppMu': ["[Xi_bc+ -> Xi_cc++ mu-]cc"]}
+        inputs = {'Xibc2XiccppMu': self.xiccpp + muons}
+        rs = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, self.configSL)
+        decays = {'Xibc2XiccppMuWS': ["[Xi_bc+ -> Xi_cc++ mu+]cc"]}
+        inputs = {'Xibc2XiccppMuWS': self.xiccpp + muons}
+        ws = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, self.configSL)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 1.0))
+
+    def _makeXibc2LcD0Mu(self):
+        '''Makes RS  Xibc -> Lc D0 mu + c.c. Need loose pions here as they may be soft'''
+        muons = self.muons
+        decays = {
+            'Xibc2LcD0Mu':
+            ["Xi_bc0 -> Lambda_c+ D0 mu-", "Xi_bc0 -> Lambda_c~- D0 mu+"]
+        }
+        inputs = {'Xibc2LcD0Mu': self.d0 + self.lc + muons}
+        rs = makeB2XSels(decays, 'D02KPi', inputs, self.configSL)
+        decays = {
+            'Xibc2LcD0MuWS':
+            ["Xi_bc0 -> Lambda_c+ D0 mu+", "Xi_bc0 -> Lambda_c~- D0 mu-"]
+        }
+        inputs = {'Xibc2LcD0MuWS': self.d0 + self.lc + muons}
+        ws = makeB2XSels(decays, 'D02KPi', inputs, self.configSL)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 1.0))
+
+    def _makeXibc2LcDMu(self):
+        '''Makes RS  Xibc -> Lc D+ mu + c.c. Need loose muons here as they may be soft'''
+        muons = self.muons
+        decays = {'Xibc2LcDMu': ["[Xi_bc+ -> Lambda_c+ D+ mu-]cc"]}
+        inputs = {'Xibc2LcDMu': self.dp + self.lc + muons}
+        rs = makeB2XSels(decays, 'D2KPiPi', inputs, self.configSL)
+        decays = {'Xibc2LcDMuWS': ["[Xi_bc+ -> Lambda_c+ D+ mu+]cc"]}
+        inputs = {'Xibc2LcDMuWS': self.dp + self.lc + muons}
+        ws = makeB2XSels(decays, 'D2KPiPi', inputs, self.configSL)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 1.0))
+
+
+#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+
+
+class Lb2XBuilder(object):
+    '''Makes all Lambda_b -> X lines.'''
+
+    def __init__(self, lc, lcstar, xicc, d, hh, topoPions, topoPions_PID, topoKaons,
+                 topoKaons_PID, topoProtons, topoProtons_PID, pions, kaons, ks,
+                 hhh, dst, lambda0, config, config_xibm):
+
+        self.lc = lc.pkpi
+        self.lc_pkk = lc.pkk
+        self.lc_ppipi = lc.ppipi
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        self.xic0_ximpip_LL = lc.xic0_ximpip_LL
+        self.xic0_ximpip_DD = lc.xic0_ximpip_DD
+        self.xic0_lmd0kmpip_LL = lc.xic0_lmd0kmpip_LL
+        self.xic0_lmd0kmpip_DD = lc.xic0_lmd0kmpip_DD
+        self.xic0_pkskm_LL = lc.xic0_pkskm_LL
+        self.xic0_pkskm_DD = lc.xic0_pkskm_DD
+        
+				self.lc_lambdapiLL = lc.lambdapiLL
+        self.lc_lambdapiDD = lc.lambdapiDD
+        self.lcstar2595 = lcstar.lcstar2595
+        self.lcstar2625 = lcstar.lcstar2625
+        self.xic = lc.xic_pkpi
+        self.xic0 = lc.xic0_pkkpi
+        
+				self.omegac0 = lc.omegac0_pkkpi
+        self.lc_tight = lc.pkpi_tight_win  #tight Lc
+        self.xic_tight = lc.xic_pkpi_tight_win  #tight Xic
+        self.xic_tightest = lc.xic_pkpi_tightest_win  #tight Xic
+        self.omegac0_tight = lc.omegac0_pkkpi_tight_win  #tight Omegac0
+        self.xiccp = xicc.xiccp
+        self.xiccpp = xicc.xiccpp
+        self.sigmacpp = xicc.sigmacpp
+        self.d = d
+        self.d0_pid = d.hh_pid
+        self.d0_k3pi_pid = d.k3pi_pid
+        self.d0_k3pi = d.k3pi_pid_tighter1_narrow  #Tight PID cuts, 60 MeV mass window
+        self.d0_kshh_dd = d.kshh_dd_pid
+        self.d0_kshh_ll = d.kshh_ll_pid
+        self.hh = hh
+        self.hhh = hhh
+        self.dst = dst
+        self.ds = d.ds_hhh_pid_tight
+        self.dds = d.hhh_pid_tight
+        self.lambda0 = lambda0
+        self.pions = [pions]
+        self.kaons = [kaons]
+        self.topoPions = [topoPions]
+        self.topoPions_pid = [topoPions_PID]
+        self.topoKaons = [topoKaons]
+        self.topoKaons_pid = [topoKaons_PID]
+        self.protons = [topoProtons]
+        self.protons_pid = [topoProtons_PID]
+        self.ks = ks
+        self.config = deepcopy(config)
+				self.config_xibm = config_xibm
+        self.config['AM_MIN'] = '5200*MeV'
+        self.lines = []
+        # Lb -> Lc+- H-+ (+WS)
+        self._makeLb2LcH()
+        # Lb -> Lc+  D-/D_s-/D*-/D_s*-
+        self._makeLb2LcDm()
+        # Lb -> Lc+/Lc(2595)+/Lc(2625)+  D_s-
+        self._makeLb2LcDs()
+        # Lb -> Xic+- H-+ (+WS)
+        self._makeLb2XicH()
+
+        ### Xib- -> Xic0 H- (+WS)
+        self._makeXib2Xic0H()
+        ### Omegab- -> Omegac0 H- (+WS)
+        self._makeOmegab2Omegac0H()
+        ### Omega_b- -> Xic+ K- pi-, Xic+ -> pKpi
+        self._makeOmegab2XicpKPi()
+        ### Omega_b- -> Lambda_c+ K- K-
+        self._makeOmegab2LcKK()
+        ### Xib0 -> Xic+ D- (+WS)
+        self._makeXib02XicD()
+        ### Xib- -> Xic0 D- (+WS)
+        self._makeXib2Xic0D()
+        ### Xib0 -> Xic+ HHH- (+WS) (HHH = 3pi, Kpipi)
+        self._makeXib02XicHHH()
+        ###Xib- -> Xic0 HHH- (+WS) (HHH = 3pi, Kpipi)
+        self._makeXib2Xic0HHH()
+        ### Xb- -> Lc+ D(s)- K-
+        self._makeXib2LcDK()
+        ### Xb- -> Lc+ Ds- K- Pi+
+        self._makeXib02LcDsKPi()
+        ### Xb- -> Xic0 Pim,,Xic0 -> Xim Pip 
+        self._makeXibm2Xic0Pim2XimPipPim("LL")
+        self._makeXibm2Xic0Pim2XimPipPim("DD")
+        ### Xb- -> Xic0 Pim,,Xic0 -> Lambda0 Km pip 
+        self._makeXibm2Xic0Pim2Lambda0KmPipPim("LL")
+        self._makeXibm2Xic0Pim2Lambda0KmPipPim("DD")
+        ### Xb- -> Xic0 Pim,,Xic0 -> p Ks Km 
+        self._makeXibm2Xic0Pim2PKsKmPim("LL")
+        self._makeXibm2Xic0Pim2PKsKmPim("DD")
+        
+        ### B- -> Lc+ Ds- pbar
+        self._makeB2LcDspbar()
+
+        # Sb+- -> D0(HH) p+-
+        self._makeSb2D0P()
+        # Sb -> D-+(HHH) p+-
+        self._makeSb02DP()
+        # Lb -> D0(HH/K3Pi) p+- H-+
+        self._makeLb2D0HHPH()
+        # Lb -> D0(HH) p+- p-+ (+WS)
+        self._makeLb2D0PPbar()
+        # Lb -> Lc+- 3Pi, KPiPi, ppbarPi, ppbarK (+WS)
+        self._makeLb2LcHHH()
+        # Lb -> Lc D (+WS)
+        self._makeLb2LcD()
+        # Lb -> Lc+ KS K-
+        self._makeLb2LcKSK("LL")
+        self._makeLb2LcKSK("DD")
+
+        # Lb  -> Lc D K*
+        MMSeld2hhh = [
+            filterSelection(
+                'D2HHH4LcDKst',
+                "(MM > (1864.84-50.)*MeV) & (MM < (1968.49+50.)*MeV)",
+                self.d.hhh_pid)
+        ]
+        self._makeLb2LcDKst(MMSeld2hhh)
+        self._makeLb2LcDstKst()
+        # Lb  -> Lc D*0 K, D*0 -> D0 gamma/Pi0_resolved/merged
+        self._makeLb2Dst0K('Dst02D0GammaD2HH', self.dst.d0gamma_hh_pid)
+        self._makeLb2Dst0K('Dst02D0Pi0ResolvedD2HH',
+                           self.dst.d0pi0_resolved_pid)
+        self._makeLb2Dst0K('Dst02D0Pi0MergedD2HH', self.dst.d0pi0_merged_pid)
+
+        ### bc baryon -> Lc D0
+        self._makeX2LcD0()
+        ### bc baryon -> Lc D0 H (+WS)
+        self._makeX2LcD0H()
+        ### bc baryon -> Xi_cc+ pi-
+        self._makeX02XiccH()
+        ### bc baryon -> Xi_cc++ pi-
+        self._makeX2XiccH()
+        ### Xib -> Lc H+H-, LcH-H- (+WS)
+        self._makeX2LcHH()
+        ### bc baryon -> Lc HHHH (+WS)
+        self._makeX2LcKPiPiPi()
+        ### Xib,Omega_b -> Lc HH (+WS)
+        self._makeXib2XicHH()
+
+        # Lb -> Lc D* (+WS)
+        self._makeLb2LcDst()
+        # X -> Lc Lc (+WS)
+        self._makeX2LcLc()
+        # Lb -> Lc Lc n (+WS)
+        self._makeLb2LcLcn()
+        # Lb -> Lc 5pi
+        self._makeLb2Lc5Pi()
+        # Lb -> D0 Lambda0, D0(HH/K3Pi)
+        self._makeLb2D0Lambda0()
+
+        # Lb -> D+ p h- h-
+        self._makeLb2DpHH()
+        # Xib -> D0 p h- h-
+        self._makeXib2D0pHH()
+
+        # B -> Lc pbar h-
+        self._makeB2LcpbarH()
+        # B-> Lc pbar
+        self._makeB2Lcpbar()
+        # B- -> Lc Lc K-
+        self._makeB2LcLcK()
+
+        # B0->Lc pbar Ks
+        self._makeB02LcpbarKS('DD')
+        self._makeB02LcpbarKS('LL')
+
+        # Lb -> D(s)+ Lambda0 pi-
+        self._makeLb2DLambda0pi()
+        # Xib -> D0 Lambda0 pi-
+        self._makeXib2D0Lambda0pi()
+        # B0 -> Lambdac+ Lambda0bar h-
+        self._makeB2LcLambda0barH()
+
+        # Lb -> D0 p h (D02K3Pi/D02KsDDHH/D02KsLLHH)
+        self._makeLb2D0ph('D02K3Pi', self.d.k3pi_pid)
+        self._makeLb2D0ph('D02HHHHPID', self.d.hhhh_pid)
+        self._makeLb2D0ph('D02KsDDHH', self.d.kshh_dd_pid)
+        self._makeLb2D0ph('D02KsLLHH', self.d.kshh_ll_pid)
+        # Lb -> D0 p h WS
+        self._makeLb2D0phWS('D02K3PiWS', self.d.k3pi_pid)
+        self._makeLb2D0phWS('D02HHHHPIDWS', self.d.hhhh_pid)
+        self._makeLb2D0phWS('D02KsDDHHWS', self.d.kshh_dd_pid)
+        self._makeLb2D0phWS('D02KsLLHHWS', self.d.kshh_ll_pid)
+
+        # Lb -> D(s)- D0(K3Pi/HH) p
+        self._makeLb2DD0p('D02K3Pi', self.d.k3pi_pid)
+        self._makeLb2DD0p('D2HH', self.d.hh_pid)
+        # Xi_bc+ --> D+ p K-
+        self._makeXibc2DpK()
+
+        # Lb -> Lc+- 3Pi
+        self._makeLb2LcPiPiPiFullDST()
+        # Xib -> Xic+- 3Pi
+        self._makeXib02XicPiPiPiFullDST()
+        # Xib- -> Xic+- 3Pi
+        self._makeXib2Xic0PiPiPiFullDST()
+        # Omegab- -> Omegac0- 3Pi
+        self._makeOmegab2Omegac0PiPiPiFullDST()
+
+        # Lb->sigmacpp(LcPi)4Pi
+        self._makeLb2sigmacpp4Pi()
+        # Lb->sigmacpp(LcPi)D0(KPi)KPi
+        self._makeLb2sigmacppD0KPi()
+
+        # Lb -> D D Lambda0 (+18 lines)
+        self._makeLb2DDLambda('DD')
+        self._makeLb2D0D0Lambda('DD')
+        self._makeLb2DstDLambda('DD')
+        self._makeLb2DstDstLambda('DD')
+        self._makeLb2DDLambda('LL')
+        self._makeLb2D0D0Lambda('LL')
+        self._makeLb2DstDLambda('LL')
+        self._makeLb2DstDstLambda('LL')
+
+        # Lb -> D+ D- p K-
+        self._makeLb2DDpK()
+
+        # B0 -> Lc+ Sigmacpp(LcPi) K+
+        self._makeB02LcSigmacppK()
+
+        # Bs -> Lc- Sigma+
+        self._makeBs2LcSigma()
+
+        # B+ -> Lc+ Xic- pi+
+        self._makeB2LcXicPi()
+
+        # B- -> Xic+ pi- pbar
+        self._makeB2XicpbarPi()
+        # B0 -> Xic+ pi+ pi- pbar
+        self._makeB02XicpbarPiPi()
+        # B0 -> Xic+ K+ pi- pbar
+        self._makeB02XicpbarKPi()
+        # B0 -> Lambda0 D(*)+ pbar
+        self._makeB02DpbarLambda('DD')
+        self._makeB02DpbarLambda('LL')
+        # B- -> Lambda0 D0 pbar
+        self._makeB2D0pbarLambda('DD')
+        self._makeB2D0pbarLambda('LL')
+        # B0 -> Lambda0 D0 pbar K
+        self._makeB02D0pbarKLambda('DD')
+        self._makeB02D0pbarKLambda('LL')
+
+        # Xib- -> Xic0 D~0 K-, Xib- -> Xic+ D- K-, Xib- -> Xic+ D*- K-
+        self._makeXib2XicDK()
+        # Xib0 -> Xic+ D~0 K-
+        self._makeXib02XicD0K()
+        # Omegab- -> Xic0 K Pi Pi
+        self._makeOmegab2Xic0KPiPi()
+        # Xib0 -> D0 Lambda0 pi+ pi-
+        self._makeXib02D0LambdaPiPi()
+        # Xib- -> Lambdac+ pi+ K- pi- pi-
+        self._makeXib2LcKHHH()
+        # Xib- -> Xic+ pi+ pi- pi- pi-
+        self._makeXib2XicHHHH()
+
+    def _makeLb2LcH(self):
+        '''Make RS and WS Lb -> Lc H (H=pi,K) + cc.'''
+        pions = self.topoPions
+        kaons = self.topoKaons
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {
+            'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"],
+            'Lb2LcK': ["[Lambda_b0 -> Lambda_c+ K-]cc"]
+        }
+        inputs = {'Lb2LcPi': self.lc + pions, 'Lb2LcK': self.lc + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {
+            'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"],
+            'Lb2LcKWS': ["[Lambda_b0 -> Lambda_c+ K+]cc"]
+        }
+        inputs = {'Lb2LcPiWS': self.lc + pions, 'Lb2LcKWS': self.lc + kaons}
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {'Lb2LcPiNoIP': ["[Lambda_b0 -> Lambda_c+ pi-]cc"]}
+        #inputs = {'Lb2LcPiNoIP': self.lc+pions}
+        inputs = {'Lb2LcPiNoIP': self.lc_tight + pions}  # use TightLc
+        noip = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config, False)
+        decays = {'Lb2LcPiNoIPWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"]}
+        #inputs = {'Lb2LcPiNoIPWS': self.lc+pions}
+        inputs = {'Lb2LcPiNoIPWS': self.lc_tight + pions}
+        noip_ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config, False)
+        decays = {'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"] }
+        inputs = {'Lb2LcPi': self.lc_pkk + pions}
+        rs_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
+        decays = {'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"] }
+        inputs = {'Lb2LcPiWS': self.lc_pkk + pions}
+        ws_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
+        decays = {'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"] }
+        inputs = {'Lb2LcPi': self.lc_ppipi + pions}
+        rs_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
+        decays = {'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"] }
+        inputs = {'Lb2LcPiWS': self.lc_ppipi + pions}
+        ws_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+        self.lines.append(ProtoLine(noip, 1.0))
+        self.lines.append(ProtoLine(noip_ws, 0.1))
+        self.lines.append(ProtoLine(rs_pkk, 1.0))
+        self.lines.append(ProtoLine(ws_pkk, 0.1))
+        self.lines.append(ProtoLine(rs_ppipi, 1.0))
+        self.lines.append(ProtoLine(ws_ppipi, 0.1))
+
+    def _makeLb2LcDm(self):
+        '''Make Lb0 -> Lc+ D-/D_s- + cc.'''
+        '''Make Lb0 -> Lc+ D*- + cc.'''
+        '''Make Lb0 -> Lc+ D_s*- + cc.'''
+        lcLL = self.lc_lambdapiLL
+        lcDD = self.lc_lambdapiDD
+        d2x = self.d.hhh_pid
+        decays = {
+            'Lb2LcDLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D-]cc"],
+            'Lb2LcDLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D-]cc"],
+        }
+        inputs = {
+            'Lb2LcDLc2Lambda0LLPi': lcLL + d2x,
+            'Lb2LcDLc2Lambda0DDPi': lcDD + d2x,
+        }
+        dname = "D2HHHPID"
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        
+        #comboCuts = [
+        #    LoKiCuts(['AM'], self.config).code(),
+        #]
+        #comboCuts = LoKiCuts.combine(comboCuts)
+        #momCuts = [
+        #    #LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+        #    'ALL',
+        #]
+        #momCuts = LoKiCuts.combine(momCuts)
+
+        d2x = self.dst.d0pi_pid
+        decays = {
+            'Lb2LcDstLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
+            'Lb2LcDstLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
+        }
+        inputs = {
+            'Lb2LcDstLc2Lambda0LLPi': lcLL + d2x,
+            'Lb2LcDstLc2Lambda0DDPi': lcDD + d2x,
+        }
+
+        dname = ""
+        #names = list(decays.keys())
+        #rs = []
+        #sname = names[0] + dname + 'Beauty2Charm'
+        #cp = CombineParticles(
+        #    CombinationCut=comboCuts,
+        #    MotherCut=momCuts,
+        #    DecayDescriptors=decays[names[0]])
+        #r = Selection(
+        #    sname,
+        #    Algorithm=cp,
+        #    RequiredSelections=inputs[names[0]])
+        #rs.append(r)
+        #sname = names[1] + dname + 'Beauty2Charm'
+        #cp = CombineParticles(
+        #    CombinationCut=comboCuts,
+        #    MotherCut=momCuts,
+        #    DecayDescriptors=decays[names[1]])
+        #r = Selection(
+        #    sname,
+        #    Algorithm=cp,
+        #    RequiredSelections=inputs[names[1]])
+        #rs.append(r)
+        #self.lines.append(ProtoLine(rs, 1.0))
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        
+        d2x = self.dst.d0pi_k3pi_pid
+        decays = {
+            'Lb2LcDstLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
+            'Lb2LcDstLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
+        }
+        inputs = {
+            'Lb2LcDstLc2Lambda0LLPi': lcLL + d2x,
+            'Lb2LcDstLc2Lambda0DDPi': lcDD + d2x,
+        }
+        dname = "DstarD02K3Pi"
+        #names = list(decays.keys())
+        #rs = []
+        #sname = names[0] + dname + 'Beauty2Charm'
+        #cp = CombineParticles(
+        #    CombinationCut=comboCuts,
+        #    MotherCut=momCuts,
+        #    DecayDescriptors=decays[names[0]])
+        #r = Selection(
+        #    sname,
+        #    Algorithm=cp,
+        #    RequiredSelections=inputs[names[0]])
+        #rs.append(r)
+        #sname = names[1] + dname + 'Beauty2Charm'
+        #cp = CombineParticles(
+        #    CombinationCut=comboCuts,
+        #    MotherCut=momCuts,
+        #    DecayDescriptors=decays[names[1]])
+        #r = Selection(
+        #    sname,
+        #    Algorithm=cp,
+        #    RequiredSelections=inputs[names[1]])
+        #rs.append(r)
+        #self.lines.append(ProtoLine(rs, 1.0))
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        
+        d2x = self.dst.dgamma_hhh_pid
+        decays = {
+            'Lb2LcDsstarLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*_s-]cc"],
+            'Lb2LcDsstarLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*_s-]cc"],
+        }
+        inputs = {
+            'Lb2LcDsstarLc2Lambda0LLPi': lcLL + d2x,
+            'Lb2LcDsstarLc2Lambda0DDPi': lcDD + d2x,
+        }
+        dname = "DsstarD02HHHPID"
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2LcDs(self):
+        '''Make Lambda_b0 -> Lambda_c+ D_s-'''
+        '''Make Lambda_b0 -> Lambda_c(2595)+ D_s-'''
+        '''Make Lambda_b0 -> Lambda_c(2625)+ D_s-'''
+
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4700*MeV'
+        config['AM_MAX'] = '6500*MeV'
+
+        lc         = self.lc
+        lcstar2595 = self.lcstar2595
+        lcstar2625 = self.lcstar2625
+        d2x        = self.d.hhh_pid
+        decays = {
+            'Lb2LcDs':     ["[Lambda_b0 -> Lambda_c+ D-]cc"],
+            'Lb2Lc2595Ds': ["[Lambda_b0 -> Lambda_c(2595)+ D-]cc"],
+            'Lb2Lc2625Ds': ["[Lambda_b0 -> Lambda_c(2625)+ D-]cc"],
+        }
+        inputs = {
+            'Lb2LcDs':     lc + d2x,
+            'Lb2Lc2595Ds': lcstar2595 + d2x,
+            'Lb2Lc2625Ds': lcstar2625 + d2x,
+        }
+        dname = "D2HHHPID"
+        rs = makeB2XSels(decays, dname, inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {
+            'Lb2LcDsWS':     ["[Lambda_b0 -> Lambda_c+ D+]cc"],
+            'Lb2Lc2595DsWS': ["[Lambda_b0 -> Lambda_c(2595)+ D+]cc"],
+            'Lb2Lc2625DsWS': ["[Lambda_b0 -> Lambda_c(2625)+ D+]cc"],
+        }
+        inputs = {
+            'Lb2LcDsWS':     lc + d2x,
+            'Lb2Lc2595DsWS': lcstar2595 + d2x,
+            'Lb2Lc2625DsWS': lcstar2625 + d2x,
+        }
+        ws = makeB2XSels(decays, dname, inputs, config)
+        self.lines.append(ProtoLine(ws, 1.0))
+
+    def _makeB2Lcpbar(self):
+        '''Make RS and WS B -> Lc pbar + cc.'''
+        protons = self.protons
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {'B2Lcpbar': ["[B0 -> Lambda_c+ p~-]cc"]}
+        inputs = {'B2Lcpbar': self.lc + protons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {'B2LcpbarWS': ["[B0 -> Lambda_c+ p+]cc"]}
+        inputs = {'B2LcpbarWS': self.lc + protons}
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeB2LcLcK(self):
+        '''Make B- -> Lc- Lc+ K- + cc.'''
+        config = deepcopy(self.config)
+        config['BPVIPCHI2_MAX'] = '50'
+        decays = {'B2LcLcK': ["[B- -> Lambda_c~- Lambda_c+ K-]cc"]}
+        inputs = {'B2LcLcK': self.lc + self.topoKaons_pid}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2XicH(self):
+        '''Make RS and WS Lb -> Xi_c+ H (H=pi,K) + cc.'''
+        pions = self.topoPions
+        kaons = self.topoKaons
+        decays = {
+            'Lb2XicPi': ["[Lambda_b0 -> Xi_c+ pi-]cc"],
+            'Lb2XicK': ["[Lambda_b0 -> Xi_c+ K-]cc"]
+        }
+        inputs = {'Lb2XicPi': self.xic + pions, 'Lb2XicK': self.xic + kaons}
+        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        decays = {
+            'Lb2XicPiWS': ["[Lambda_b0 -> Xi_c+ pi+]cc"],
+            'Lb2XicKWS': ["[Lambda_b0 -> Xi_c+ K+]cc"]
+        }
+        inputs = {
+            'Lb2XicPiWS': self.xic + pions,
+            'Lb2XicKWS': self.xic + kaons
+        }
+        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        decays = {'Lb2XicPiNoIP': ["[Lambda_b0 -> Xi_c+ pi-]cc"]}
+        inputs = {'Lb2XicPiNoIP': self.xic + pions}
+        inputs = {'Lb2XicPiNoIP': self.xic_tight + pions}
+        noip = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config, False)
+        decays = {'Lb2XicPiNoIPWS': ["[Lambda_b0 -> Xi_c+ pi+]cc"]}
+        inputs = {'Lb2XicPiNoIPWS': self.xic_tight + pions}
+        #inputs = {'Lb2XicPiNoIPWS':self.xic+pions}
+        noip_ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config, False)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+        self.lines.append(ProtoLine(noip, 1.0))
+        self.lines.append(ProtoLine(noip_ws, 0.1))
+
+    def _makeXib2Xic0H(self):
+        '''Make RS and WS Xi_b- -> Xi_c0 H (H=pi,K) + cc.'''
+        pions = self.topoPions
+        kaons = self.topoKaons
+        decays = {
+            'Xib2Xic0Pi': ["[Xi_b- -> Xi_c0 pi-]cc"],
+            'Xib2Xic0K': ["[Xi_b- -> Xi_c0 K-]cc"]
+        }
+        inputs = {
+            'Xib2Xic0Pi': self.xic0 + pions,
+            'Xib2Xic0K': self.xic0 + kaons
+        }
+        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        decays = {
+            'Xib2Xic0PiWS': ["[Xi_b- -> Xi_c0 pi+]cc"],
+            'Xib2Xic0KWS': ["[Xi_b- -> Xi_c0 K+]cc"]
+        }
+        inputs = {
+            'Xib2Xic0PiWS': self.xic0 + pions,
+            'Xib2Xic0KWS': self.xic0 + kaons
+        }
+        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        decays = {'Xib2Xic0PiNoIP': ["[Xi_b- -> Xi_c0 pi-]cc"]}
+        inputs = {'Xib2Xic0PiNoIP': self.xic0 + pions}
+        noip = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config, False)
+        decays = {'Xib2Xic0PiNoIPWS': ["[Xi_b- -> Xi_c0 pi+]cc"]}
+        inputs = {'Xib2Xic0PiNoIPWS': self.xic0 + pions}
+        noip_ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config, False)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+        self.lines.append(ProtoLine(noip, 1.0))
+        self.lines.append(ProtoLine(noip_ws, 0.1))
+
+    def _makeOmegab2Omegac0H(self):
+        '''Make RS and WS Omega_b- -> Omega_c0 H (H=pi,K) + cc.'''
+        pions = self.topoPions
+        kaons = self.topoKaons
+        decays = {
+            'Omegab2Omegac0Pi': ["[Omega_b- -> Omega_c0 pi-]cc"],
+            'Omegab2Omegac0K': ["[Omega_b- -> Omega_c0 K-]cc"]
+        }
+        inputs = {
+            'Omegab2Omegac0Pi': self.omegac0 + pions,
+            'Omegab2Omegac0K': self.omegac0 + kaons
+        }
+        rs = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
+        decays = {
+            'Omegab2Omegac0PiWS': ["[Omega_b- -> Omega_c0 pi+]cc"],
+            'Omegab2Omegac0KWS': ["[Omega_b- -> Omega_c0 K+]cc"]
+        }
+        inputs = {
+            'Omegab2Omegac0PiWS': self.omegac0 + pions,
+            'Omegab2Omegac0KWS': self.omegac0 + kaons
+        }
+        ws = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
+        decays = {'Omegab2Omegac0PiNoIP': ["[Omega_b- -> Omega_c0 pi-]cc"]}
+        #inputs = {'Omegab2Omegac0PiNoIP': self.omegac0+pions}
+        inputs = {'Omegab2Omegac0PiNoIP': self.omegac0_tight + pions}
+        noip = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config, False)
+        decays = {'Omegab2Omegac0PiNoIPWS': ["[Omega_b- -> Omega_c0 pi+]cc"]}
+        #inputs = {'Omegab2Omegac0PiNoIPWS':self.omegac0+pions}
+        inputs = {'Omegab2Omegac0PiNoIPWS': self.omegac0_tight + pions}
+        noip_ws = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config,
+                              False)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+        self.lines.append(ProtoLine(noip, 1.0))
+        self.lines.append(ProtoLine(noip_ws, 0.1))
+
+    def _makeOmegab2XicpKPi(self):
+        '''Make Omega_b- -> Xic+ K- pi-, Xic+ -> pKpi'''
+        pions = self.pions
+        kaons = self.kaons
+        decays = {'Omegab2XicpKPi': ["[Omega_b- -> Xi_c+ K- pi-]cc"]}
+        inputs = {'Omegab2XicpKPi': self.xic + kaons + pions}
+        rs = makeB2XSels(decays, 'Xicp2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeOmegab2LcKK(self):
+        '''Make Omega_b- -> Lambda_c+ K- K-'''
+        kaons = self.kaons
+        decays = {'Omegab2LcKK': ["[Omega_b- -> Lambda_c+ K- K-]cc"]}
+        inputs = {'Omegab2LcKK': self.lc + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXib02XicD(self):
+        '''Make RS and WS Xi_b0 -> Xi_c+ D (D=D-,Ds) + cc.'''
+        decays = {'Xib02XicD': ["[Xi_b0 -> Xi_c+ D-]cc"]}
+        inputs = {'Xib02XicD': self.xic + self.d.hhh_cf_pid}
+        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        decays = {'Xib02XicDWS': ["[Xi_b0 -> Xi_c+ D+]cc"]}
+        inputs = {'Xib02XicDWS': self.xic + self.d.hhh_cf_pid}
+        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXib2Xic0D(self):
+        '''Make RS and WS Xi_b- -> Xi_c0 D (D=D-,Ds) + cc.'''
+        decays = {'Xib2Xic0D': ["[Xi_b- -> Xi_c0 D-]cc"]}
+        inputs = {'Xib2Xic0D': self.xic0 + self.d.hhh_cf_pid}
+        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        decays = {'Xib2Xic0DWS': ["[Xi_b- -> Xi_c0 D+]cc"]}
+        inputs = {'Xib2Xic0DWS': self.xic0 + self.d.hhh_cf_pid}
+        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXibm2Xic0Pim2XimPipPim(self, lmd):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Xi- pi+ + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 90, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_ximpip_DD
+        if "LL" in lmd:
+            used_xic0 = self.xic0_ximpip_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2XimPipPim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+    
+    def _makeXibm2Xic0Pim2Lambda0KmPipPim(self, lmd):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Lmd0 K- pi+ + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_lmd0kmpip_DD
+        if "LL" in lmd:
+            used_xic0 = self.xic0_lmd0kmpip_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2Lambda0KmPipPim' + lmd + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+		
+    def _makeXibm2Xic0Pim2PKsKmPim(self, ks):
+        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> p Ks K- + cc
+        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
+        comboCuts = [
+            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
+        ]
+        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
+        comboCuts = LoKiCuts.combine(comboCuts)
+        momCuts = [
+            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
+        ]
+        momCuts = LoKiCuts.combine(momCuts)
+        cp = CombineParticles(
+            CombinationCut=comboCuts,
+            MotherCut=momCuts,
+            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
+        used_xic0 = self.xic0_pkskm_DD
+        if "LL" in ks:
+            used_xic0 = self.xic0_pkskm_LL
+        else:
+            pass
+        rs = [Selection(
+            'Xibm2Xic0Pim2PKsKmPim' + ks + 'Beauty2Charm',
+            Algorithm=cp,
+            RequiredSelections=used_xic0 + self.pions )]
+        self.lines.append(ProtoLine(rs, 1.0))
+    
+    def _makeXib02XicHHH(self):
+        '''Make RS and WS Xi_b0 -> Xi_c+ HHH (HHH=3pi,Kpipi) + cc.'''
+        pipipi = self.hhh.pipipi
+        kpipi = self.hhh.kpipi
+        decays = {
+            'Xib02XicPiPiPi': ["[Xi_b0 -> Xi_c+ a_1(1260)-]cc"],
+            'Xib02XicKPiPi': ["[Xi_b0 -> Xi_c+ K_1(1270)-]cc"]
+        }
+        inputs = {
+            'Xib02XicPiPiPi': self.xic + pipipi,
+            'Xib02XicKPiPi': self.xic + kpipi
+        }
+        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        decays = {
+            'Xib02XicPiPiPiWS': ["[Xi_b0 -> Xi_c+ a_1(1260)+]cc"],
+            'Xib02XicKPiPiWS': ["[Xi_b0 -> Xi_c+ K_1(1270)+]cc"]
+        }
+        inputs = {
+            'Xib02XicPiPiPiWS': self.xic + pipipi,
+            'Xib02XicKPiPiWS': self.xic + kpipi
+        }
+        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXib2Xic0HHH(self):
+        '''Make RS and WS Xi_b- -> Xi_c0 HHH- (HHH=3pi,Kpipi) + cc.'''
+        pipipi = self.hhh.pipipi
+        kpipi = self.hhh.kpipi
+        decays = {
+            'Xib2Xic0PiPiPi': ["[Xi_b- -> Xi_c0 a_1(1260)-]cc"],
+            'Xib2Xic0KPiPi': ["[Xi_b- -> Xi_c0 K_1(1270)-]cc"]
+        }
+        inputs = {
+            'Xib2Xic0PiPiPi': self.xic0 + pipipi,
+            'Xib2Xic0KPiPi': self.xic0 + kpipi
+        }
+        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        decays = {
+            'Xib2Xic0PiPiPiWS': ["[Xi_b- -> Xi_c0 a_1(1260)+]cc"],
+            'Xib2Xic0KPiPiWS': ["[Xi_b- -> Xi_c0 K_1(1270)+]cc"]
+        }
+        inputs = {
+            'Xib2Xic0PiPiPiWS': self.xic0 + pipipi,
+            'Xib2Xic0KPiPiWS': self.xic0 + kpipi
+        }
+        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2LcHHH(self):
+        '''Make RS and WS X_b ->Lc HHH (H=pi,K) + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        pipipi = self.hhh.pipipi
+        kpipi = self.hhh.kpipi
+        kkpi = self.hhh.kkpi
+        ppbarpi = self.hhh.ppbarpi
+        ppbark = self.hhh.ppbark
+        pppbar = self.hhh.pppbar
+
+        ppipi = self.hhh.ppipiOS
+        pkpi = self.hhh.pkpiOS
+        pkk = self.hhh.pkkOS
+
+        decays = {
+            'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
+            'Lb2LcKPiPi': ["[Lambda_b0 -> Lambda_c+ K_1(1270)-]cc"],
+            'Lb2LcppbarPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
+            'Lb2LcppbarK': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
+            'Lb2LcKKPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]
+        }
+        inputs = {
+            'Lb2LcPiPiPi': self.lc + pipipi,
+            'Lb2LcKPiPi': self.lc + kpipi,
+            'Lb2LcppbarPi': self.lc + ppbarpi,
+            'Lb2LcppbarK': self.lc + ppbark,
+            'Lb2LcKKPi': self.lc + kkpi
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {
+            'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
+            'Lb2LcKPiPiWS': ["[Lambda_b0 -> Lambda_c+ K_1(1270)+]cc"],
+            'Lb2LcppbarPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
+            'Lb2LcppbarKWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
+            'Lb2LcKKPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]
+        }
+        inputs = {
+            'Lb2LcPiPiPiWS': self.lc + pipipi,
+            'Lb2LcKPiPiWS': self.lc + kpipi,
+            'Lb2LcppbarPiWS': self.lc + ppbarpi,
+            'Lb2LcppbarKWS': self.lc + ppbark,
+            'Lb2LcKKPiWS': self.lc + kkpi
+        }
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
+        inputs = {'Lb2LcPiPiPi': self.lc_pkk + pipipi}
+        rs_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
+        decays = {'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]}
+        inputs = {'Lb2LcPiPiPiWS': self.lc_pkk + pipipi}
+        ws_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
+        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
+        inputs = {'Lb2LcPiPiPi': self.lc_ppipi + pipipi}
+        rs_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
+        decays = {'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]}
+        inputs = {'Lb2LcPiPiPiWS': self.lc_ppipi + pipipi}
+        ws_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+        self.lines.append(ProtoLine(rs_pkk, 1.0))
+        self.lines.append(ProtoLine(ws_pkk, 0.1))
+        self.lines.append(ProtoLine(rs_ppipi, 1.0))
+        self.lines.append(ProtoLine(ws_ppipi, 0.1))
+
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {
+            'B02Lcpbarpbarp': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
+            'B02LcpbarPiPi': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
+            'B02LcpbarKPi': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
+            'B02LcpbarKK': ["[B0 -> Lambda_c+ a_1(1260)-]cc"]
+        }
+        inputs = {
+            'B02Lcpbarpbarp': self.lc + pppbar,
+            'B02LcpbarPiPi': self.lc + ppipi,
+            'B02LcpbarKPi': self.lc + pkpi,
+            'B02LcpbarKK': self.lc + pkk,
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        decays = {
+            'B02LcpbarpbarpWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
+            'B02LcpbarPiPiWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
+            'B02LcpbarKPiWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
+            'B02LcpbarKKWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
+        }
+        inputs = {
+            'B02LcpbarpbarpWS': self.lc + pppbar,
+            'B02LcpbarPiPiWS': self.lc + ppipi,
+            'B02LcpbarKPiWS': self.lc + pkpi,
+            'B02LcpbarKKWS': self.lc + pkk,
+        }
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2D0HHPH(self):
+        '''Makes RS Lb -> D0(HH/HHHH) p+- H-+ + c.c. and WS lines'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decs = ["Lambda_b0 -> D0 Lambda0", "Lambda_b0 -> D0 Lambda~0"]
+        decays = {'Lb2D0PH': decs}
+        inputs = {'Lb2D0PH': self.d0_pid + self.hh.ph_pid}
+        rs = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        inputs_k3pi = {'Lb2D0PH': self.d0_k3pi_pid + self.hh.ph_pid}
+        rs_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, config)
+        self.lines.append(ProtoLine(rs_k3pi, 1.0))
+        decays = {'Lb2D0PHWS': decs}
+        inputs = {'Lb2D0PHWS': self.d0_pid + self.hh.ph_ws}
+        ws = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+        inputs_k3pi = {'Lb2D0PHWS': self.d0_k3pi_pid + self.hh.ph_ws}
+        ws_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, config)
+        self.lines.append(ProtoLine(ws_k3pi, 0.1))
+        config['B2CBBDT_MIN'] = '-0.1'
+        decays = {'Lb2D0PHNoPID': decs}
+        inputs = {'Lb2D0PHNoPID': self.d0_pid + self.hh.ph_nopid}
+        rs = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'Lb2D0PHNoPIDWS': decs}
+        inputs = {'Lb2D0PHNoPIDWS': self.d0_pid + self.hh.ph_nopid_ws}
+        ws = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2D0PPbar(self):
+        ''' Makes RS Lb->D0(HH) p+- p-+ and WS lines (mass window for a missing neutron)'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6000*MeV'
+        config['AM_MIN'] = '3000*MeV'
+        decs = ["Lambda_b0 -> D0 rho(770)0"]
+        decays = {'Lb2D0PPbar': decs}
+        inputs = {'Lb2D0PPbar': self.d0_pid + self.hh.ppbar_pid}
+        rs = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decs = ["Lambda_b0 -> D0 rho(770)-", "Lambda_b0 -> D0 rho(770)+"]
+        decays = {'Lb2D0PPbarWS': decs}
+        inputs = {'Lb2D0PPbarWS': self.d0_pid + self.hh.ppbar_ws_pid}
+        ws = makeB2XSels(decays, 'D02HH', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2D0Lambda0(self):
+        '''Makes RS Lb -> D0(HH/K3Pi) Lambda0 + c.c.'''
+        decs = ["Lambda_b0 -> D0 Lambda0", "Lambda_b0 -> D0 Lambda~0"]
+        decays = {'Lb2D0Lambda0DD': decs}
+        inputs = {'Lb2D0Lambda0DD': self.d0_pid + self.lambda0["DD"]}
+        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_dd, 1.0))
+        inputs_k3pi = {'Lb2D0Lambda0DD': self.d0_k3pi + self.lambda0["DD"]}
+        lb_dd_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, self.config)
+        self.lines.append(ProtoLine(lb_dd_k3pi, 1.0))
+        decays = {'Lb2D0Lambda0LL': decs}
+        inputs = {'Lb2D0Lambda0LL': self.d0_pid + self.lambda0["LL"]}
+        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_ll, 1.0))
+        inputs_k3pi = {'Lb2D0Lambda0LL': self.d0_k3pi + self.lambda0["LL"]}
+        lb_ll_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, self.config)
+        self.lines.append(ProtoLine(lb_ll_k3pi, 1.0))
+
+    def _makeLb2DLambda0pi(self):
+        '''Makes RS/WS Lb -> D+(HHH) Lambda0 pi- + c.c.'''
+        decays = {'Lb2DLambda0DDpi': ["[Lambda_b0 -> D+ Lambda0 pi-]cc"]}
+        inputs = {
+            'Lb2DLambda0DDpi':
+            self.d.hhh_cf_pid + self.lambda0["DD"] + self.pions
+        }
+        lb_dd = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_dd, 1.0))
+        decays = {'Lb2DLambda0LLpi': ["[Lambda_b0 -> D+ Lambda0 pi-]cc"]}
+        inputs = {
+            'Lb2DLambda0LLpi':
+            self.d.hhh_cf_pid + self.lambda0["LL"] + self.pions
+        }
+        lb_ll = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_ll, 1.0))
+        decays = {'Lb2DLambda0DDpiWS': ["[Lambda_b0 -> D+ Lambda0 pi+]cc"]}
+        inputs = {
+            'Lb2DLambda0DDpiWS':
+            self.d.hhh_cf_pid + self.lambda0["DD"] + self.pions
+        }
+        lb_dd = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_dd, 0.1))
+        decays = {'Lb2DLambda0LLpiWS': ["[Lambda_b0 -> D+ Lambda0 pi+]cc"]}
+        inputs = {
+            'Lb2DLambda0LLpiWS':
+            self.d.hhh_cf_pid + self.lambda0["LL"] + self.pions
+        }
+        lb_ll = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_ll, 0.1))
+
+    def _makeXib2D0Lambda0pi(self):
+        '''Makes Xib -> D0(HH) Lambda0 pi- + c.c.'''
+        decays = {
+            'Xib2D0Lambda0DDpi':
+            ["Xi_b- -> D0 Lambda0 pi-", "Xi_b~+ -> D0 Lambda~0 pi+"]
+        }
+        inputs = {
+            'Xib2D0Lambda0DDpi': self.d0_pid + self.lambda0["DD"] + self.pions
+        }
+        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_dd, 1.0))
+        decays = {
+            'Xib2D0Lambda0LLpi':
+            ["Xi_b- -> D0 Lambda0 pi-", "Xi_b~+ -> D0 Lambda~0 pi+"]
+        }
+        inputs = {
+            'Xib2D0Lambda0LLpi': self.d0_pid + self.lambda0["LL"] + self.pions
+        }
+        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_ll, 1.0))
+        decays = {
+            'Xib2D0Lambda0DDpiWS':
+            ["Xi_b- -> D0 Lambda~0 pi-", "Xi_b~+ -> D0 Lambda0 pi+"]
+        }
+        inputs = {
+            'Xib2D0Lambda0DDpiWS':
+            self.d0_pid + self.lambda0["DD"] + self.pions
+        }
+        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_dd, 0.1))
+        decays = {
+            'Xib2D0Lambda0LLpiWS':
+            ["Xi_b- -> D0 Lambda~0 pi-", "Xi_b~+ -> D0 Lambda0 pi+"]
+        }
+        inputs = {
+            'Xib2D0Lambda0LLpiWS':
+            self.d0_pid + self.lambda0["LL"] + self.pions
+        }
+        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(lb_ll, 0.1))
+
+    def _makeSb02DP(self):
+        '''Make RS and WS Sb0 -> D+- p-+ + cc.'''
+        protons = self.protons
+        decays = {'Sb02DP': ["[Sigma_b0 -> D- p+]cc"]}
+        inputs = {'Sb02DP': self.d.hhh_pid + protons}
+        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
+        decays = {'Sb02DPWS': ["[Sigma_b0 -> D+ p+]cc"]}
+        inputs = {'Sb02DPWS': self.d.hhh_pid + protons}
+        ws = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeSb2D0P(self):
+        '''Make Sb+- -> D0 p+- + cc.'''
+        protons = self.protons
+        decays = {'Sb2D0P': ["Sigma_b+ -> D0 p+", "Sigma_b- -> D0 p~-"]}
+        inputs = {'Sb2D0P': self.d.hh_pid + protons}
+        rs = makeB2XSels(decays, 'D2HHPID', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2LcKSK(self,ks):
+        '''Make Lb -> Lc+ Ks K- c.c.'''
+        kaons = self.kaons
+        decays = {'Lb2LcKSK' + ks: ["Lambda_b0 -> Lambda_c+ KS0 K-", "Lambda_b~0 -> Lambda_c~- KS0 K+"]}
+        inputs = {'Lb2LcKSK' + ks: self.lc + self.ks[ks] + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2LcD(self):
+        '''Makes RS + WS Lb -> Lc D + c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4000*MeV'
+        config['AM_MAX'] = '6000*MeV'
+        decays = {'Lb2LcD': ["[Lambda_b0 -> Lambda_c+ D-]cc"]}
+        inputs = {'Lb2LcD': self.d.hhh_pid + self.lc}
+        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'Lb2LcDWS': ["[Lambda_b0 -> Lambda_c+ D+]cc"]}
+        inputs = {'Lb2LcDWS': self.d.hhh_pid + self.lc}
+        ws = makeB2XSels(decays, 'D2HHHPID', inputs, config)
+        self.lines.append(ProtoLine(ws, 1.0))
+
+    def _makeLb2LcDKst(self, d2x):
+        '''Makes RS Lb -> Lc D+ Kst c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6400*MeV'
+        config['AM_MIN'] = '5200*MeV'
+        decays = {'Lb2LcDKst': ["[Lambda_b0 -> Lambda_c+ D- K*(892)~0]cc"]}
+        inputs = {
+            'Lb2LcDKst': d2x + self.lc_tight + self.hh.kpi_loose_ProbNNpid
+        }
+        rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2LcDstKst(self):
+        '''Makes RS Lb -> Lc D*(2010)+ Kst c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6400*MeV'
+        config['AM_MIN'] = '5200*MeV'
+        decays = {
+            'Lb2LcDstKst': ["[Lambda_b0 -> Lambda_c+ D*(2010)- K*(892)~0]cc"]
+        }
+        inputs = {
+            'Lb2LcDstKst':
+            self.dst.d0pi_pid + self.lc_tight + self.hh.kpi_loose_ProbNNpid
+        }
+        rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2Dst0K(self, dname, d2x):
+        '''Makes Lb  -> Lc+ D*0 K-, D*0 -> D0 gamma/Pi0_resolved/merged'''
+        kaons = self.kaons
+        decays = {
+            'Lb2LcDst0KLc2PKPi': ["[Lambda_b0 -> Lambda_c+ D*(2007)0 K-]cc"]
+        }
+        inputs = {'Lb2LcDst0KLc2PKPi': self.lc + d2x + kaons}
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeX2LcD0(self):
+        '''Makes RS X -> Lc D0 + c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {'X2LcD0': ["B+ -> Lambda_c+ D0", "B- -> Lambda_c~- D0"]}
+        inputs = {'X2LcD0': self.d.kpi_pid + self.lc}
+        rs = makeB2XSels(decays, 'D02KPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeX2LcD0H(self):
+        '''Makes RS + WS X -> Lc D0 H + c.c. Need loose pions here as they may be soft'''
+        pions = self.pions
+        kaons = self.kaons
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {
+            'X2LcD0Pi': ["B0 -> Lambda_c+ D0 pi-", "B0 -> Lambda_c~- D0 pi+"],
+            'X2LcD0K': ["B0 -> Lambda_c+ D0 K-", "B0 -> Lambda_c~- D0 K+"]
+        }
+        inputs = {
+            'X2LcD0Pi': self.d.kpi_pid + self.lc + pions,
+            'X2LcD0K': self.d.kpi_pid + self.lc + kaons
+        }
+        rs = makeB2XSels(decays, 'D02KPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {
+            'X2LcD0PiWS':
+            ["B0 -> Lambda_c+ D0 pi+", "B0 -> Lambda_c~- D0 pi-"],
+            'X2LcD0KWS': ["B0 -> Lambda_c+ D0 K+", "B0 -> Lambda_c~- D0 K-"]
+        }
+        inputs = {
+            'X2LcD0PiWS': self.d.kpi_pid + self.lc + pions,
+            'X2LcD0KWS': self.d.kpi_pid + self.lc + kaons
+        }
+        ws = makeB2XSels(decays, 'D02KPi', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeX2LcHH(self):
+        '''Makes RS + WS Xib -> Lc H+H-, LC H-H- + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {
+            'X2LcPiPiSS': ["[B- -> Lambda_c+ pi- pi-]cc"],
+            'X2LcKPiSS': ["[B- -> Lambda_c+ K- pi-]cc"],
+            'X2LcKKSS': ["[B- -> Lambda_c+ K- K-]cc"],
+            'X2LcPiPiOS': ["[B+ -> Lambda_c+ pi- pi+]cc"],
+            'X2LcKPiOS': ["[B+ -> Lambda_c+ K- pi+]cc"],
+            'X2LcPiKOS': ["[B+ -> Lambda_c+ K+ pi-]cc"],
+            'X2LcKKOS': ["[B+ -> Lambda_c+ K- K+]cc"]
+        }
+        inputs = {
+            'X2LcPiPiSS': self.lc + pions,
+            'X2LcKPiSS': self.lc + kaons + pions,
+            'X2LcKKSS': self.lc + kaons,
+            'X2LcPiPiOS': self.lc + pions,
+            'X2LcKPiOS': self.lc + kaons + pions,
+            'X2LcPiKOS': self.lc + kaons + pions,
+            'X2LcKKOS': self.lc + kaons
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+        decays = {
+            'X2LcPiPiWS': ["[B+ -> Lambda_c+ pi+ pi+]cc"],
+            'X2LcKPiWS': ["[B+ -> Lambda_c+ K+ pi+]cc"],
+            'X2LcKKWS': ["[B+ -> Lambda_c+ K+ K+]cc"]
+        }
+        inputs = {
+            'X2LcPiPiWS': self.lc + pions,
+            'X2LcKPiWS': self.lc + kaons + pions,
+            'X2LcKKWS': self.lc + kaons
+        }
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeB2LcpbarH(self):
+        '''Makes RS + WS B- -> Lc+ pbar- h- + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        protons = self.protons
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {
+            'B2LcpbarPiSS': ["[B- -> Lambda_c+ p~- pi-]cc"],
+            'B2LcpbarKSS': ["[B- -> Lambda_c+ p~- K-]cc"],
+        }
+        inputs = {
+            'B2LcpbarPiSS': self.lc + pions + protons,
+            'B2LcpbarKSS': self.lc + kaons + protons
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+        decays = {
+            'B2LcpbarPiWS':
+            ["[B+ -> Lambda_c+ p~- pi+]cc", "[B+ -> Lambda_c+ p+ pi-]cc"],
+            'B2LcpbarKWS':
+            ["[B+ -> Lambda_c+ p~- K+]cc", "[B+ -> Lambda_c+ p+ K-]cc"],
+        }
+        inputs = {
+            'B2LcpbarPiWS': self.lc + pions + protons,
+            'B2LcpbarKWS': self.lc + kaons + protons
+        }
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeB02LcpbarKS(self, ks):
+        '''Makes RS + WS B0 -> Lc+ pbar- Ks + c.c.'''
+        protons = self.protons
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {'B02LcpbarKS' + ks: ["[B0 -> Lambda_c+ p~- KS0]cc"]}
+        inputs = {'B02LcpbarKS' + ks: self.lc + self.ks[ks] + protons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'B02LcpbarKSWS' + ks: ["[B0 -> Lambda_c+ p+ KS0]cc"]}
+        inputs = {'B02LcpbarKSWS' + ks: self.lc + self.ks[ks] + protons}
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeB2LcLambda0barH(self):
+        '''Makes RS + WS B0 -> Lc+ Lambda0bar h- + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        lambdadd = self.lambda0["DD"]
+        lambdall = self.lambda0["LL"]
+        lambdas = lambdadd + lambdall
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {
+            'B02LcLambda0Pi': ["[B0 -> Lambda_c+ Lambda~0 pi-]cc"],
+            'B02LcLambda0K': ["[B0 -> Lambda_c+ Lambda~0 K-]cc"],
+        }
+        inputs = {
+            'B02LcLambda0Pi': self.lc + pions + lambdas,
+            'B02LcLambda0K': self.lc + kaons + lambdas
+        }
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+        decays = {
+            'B02LcLambda0PiWS': ["[B0 -> Lambda_c+ Lambda~0 pi+]cc"],
+            'B02LcLambda0KWS': ["[B0 -> Lambda_c+ Lambda~0 K+]cc"],
+        }
+        inputs = {
+            'B02LcLambda0PiWS': self.lc + pions + lambdas,
+            'B02LcLambda0KWS': self.lc + kaons + lambdas
+        }
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeX2LcKPiPiPi(self):
+        '''Makes RS + WS Xib -> Lc HH + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        pipipi = self.hhh.pipipi
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {'X2LcKPiPiPi': ["[B+ -> Lambda_c+ a_1(1260)+ K- ]cc"]}
+        inputs = {'X2LcKPiPiPi': self.lc + pipipi + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+        decays = {'X2LcKPiPiPiWS': ["[B+ -> Lambda_c+ a_1(1260)+ K+]cc"]}
+        inputs = {'X2LcKPiPiPiWS': self.lc + pipipi + kaons}
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXib2XicHH(self):
+        '''Makes RS + WS Xib -> Lc HH + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        decays = {
+            'Xib2XicPiPi': ["[Xi_b- -> Xi_c+ pi- pi-]cc"],
+            'Xib2XicKPi': ["[Xi_b- -> Xi_c+ K- pi-]cc"],
+            'Xib2XicKK': ["[Xi_b- -> Xi_c+ K- K-]cc"]
+        }
+        inputs = {
+            'Xib2XicPiPi': self.xic + pions,
+            'Xib2XicKPi': self.xic + kaons + pions,
+            'Xib2XicKK': self.xic + kaons
+        }
+        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {
+            'Xib2XicPiPiWS': ["[Xi_b- -> Xi_c+ pi+ pi+]cc"],
+            'Xib2XicKPiWS': ["[Xi_b- -> Xi_c+ K+ pi+]cc"],
+            'Xib2XicKKWS': ["[Xi_b- -> Xi_c+ K+ K+]cc"]
+        }
+        inputs = {
+            'Xib2XicPiPiWS': self.xic + pions,
+            'Xib2XicKPiWS': self.xic + kaons + pions,
+            'Xib2XicKKWS': self.xic + kaons
+        }
+        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXib2LcDK(self):
+        '''Makes RS + WS Xib -> Lc+ D(s)- K- + c.c.'''
+        kaons = self.kaons
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5000.*MeV'
+        decays = {'Xib2LcDK': ["[Xi_b- -> Lambda_c+ D- K-]cc"]}
+        inputs = {'Xib2LcDK': self.lc + self.d.hhh_pid + kaons}
+        rs = makeB2XSels(decays, 'Lc2PKPiD2HHH', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'Xib2LcDKWS': ["[Xi_b- -> Lambda_c+ D+ K-]cc"]}
+        inputs = {'Xib2LcDKWS': self.lc + self.d.hhh_pid + kaons}
+        ws = makeB2XSels(decays, 'Lc2PKPiD2HHH', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeXib02LcDsKPi(self):
+        '''Makes RS + WS Xib -> Lc+ Ds- K- Pi+ + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        decays = {'Xib02LcDsKPi': ["[Xi_b0 -> Lambda_c+ D- K- pi+]cc"]}
+        inputs = {'Xib02LcDsKPi': self.lc + self.ds + kaons + pions}
+        rs = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'Xib02LcDsKPiWS': ["[Xi_b0 -> Lambda_c+ D- K+ pi+]cc"]}
+        inputs = {'Xib02LcDsKPiWS': self.lc + self.ds + kaons + pions}
+        ws = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeB2LcDspbar(self):
+        '''Makes RS + WS B- -> Lc+ Ds- pbar- + c.c.'''
+        protons = self.protons
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4750.*MeV'
+        decays = {'B2LcDspbar': ["[B- -> Lambda_c+ D- p~-]cc"]}
+        inputs = {'B2LcDspbar': self.lc + self.d.hhh_pid + protons}
+        rs = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'B2LcDspbarWS': ["[B- -> Lambda_c+ D+ p~-]cc"]}
+        inputs = {'B2LcDspbarWS': self.lc + self.d.hhh_pid + protons}
+        ws = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeX02XiccH(self):
+        '''Make RS and WS Xi_bcd -> Xi_cc+ H (H=pi,K) + cc.'''
+        pions = self.pions
+        kaons = self.kaons
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {
+            'X02XiccpPi': ["[B0 -> Xi_cc+ pi-]cc"],
+            'X02XiccpK': ["[B0 -> Xi_cc+ K-]cc"]
+        }
+        inputs = {
+            'X02XiccpPi': self.xiccp + pions,
+            'X02XiccpK': self.xiccp + kaons
+        }
+        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, config)
+
+        decays = {
+            'X02XiccpPiWS': ["[B0 -> Xi_cc+ pi+]cc"],
+            'X02XiccpKWS': ["[B0 -> Xi_cc+ K+]cc"]
+        }
+        inputs = {
+            'X02XiccpPiWS': self.xiccp + pions,
+            'X02XiccpKWS': self.xiccp + kaons
+        }
+        ws = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, config)
+
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeX2XiccH(self):
+        '''Make RS and WS Xi_bcu -> LXi_cc++ H (H=pi,K) + cc.'''
+        pions = self.pions
+        kaons = self.kaons
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        decays = {
+            'X2XiccppPi': ["[B+ -> Xi_cc++ pi-]cc"],
+            'X2XiccppK': ["[B+ -> Xi_cc++ K-]cc"]
+        }
+        inputs = {
+            'X2XiccppPi': self.xiccpp + pions,
+            'X2XiccppK': self.xiccpp + kaons
+        }
+        rs = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, config)
+
+        decays = {
+            'X2XiccppPiWS': ["[B+ -> Xi_cc++ pi+]cc"],
+            'X2XiccppKWS': ["[B+ -> Xi_cc++ K+]cc"]
+        }
+        inputs = {
+            'X2XiccppPiWS': self.xiccpp + pions,
+            'X2XiccppKWS': self.xiccpp + kaons
+        }
+        ws = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, config)
+
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2LcDst(self):
+        '''Makes RS + WS Lb -> Lc D* + c.c.'''
+        decays = {'Lb2LcDst': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"]}
+        inputs = {'Lb2LcDst': self.dst.d0pi_pid + self.lc}
+        rs = makeB2XSels(decays, 'Dstar2D0PiPID', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'Lb2LcDstWS': ["[Lambda_b0 -> Lambda_c+ D*(2010)+]cc"]}
+        inputs = {'Lb2LcDstWS': self.dst.d0pi_pid + self.lc}
+        ws = makeB2XSels(decays, 'Dstar2D0PiPID', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeX2LcLc(self):
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4800*MeV'
+        decays = {'X2LcLc': ["B0 -> Lambda_c+ Lambda_c~-"]}
+        inputs = {'X2LcLc': self.lc}
+        rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {'X2LcLcWS': ["[B0 -> Lambda_c+ Lambda_c+]cc"]}
+        inputs = {'X2LcLcWS': self.lc}
+        ws = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2LcLcn(self):
+        """
+        Makes Lb -> Lc Lc~ n (Lc->p K pi) + c.c.
+        The neutron is not reconstructed.
+        """
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '4000*MeV'
+        config['BPVIPCHI2_MAX'] = '50'
+
+        decays = {'Lb2LcLcn': ["Lambda_b0 -> Lambda_c+ Lambda_c~-"]}
+        inputs = {'Lb2LcLcn': self.lc}
+        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+        decays = {'Lb2LcLcnWS': ["[Lambda_b0 -> Lambda_c+ Lambda_c+]cc"]}
+        inputs = {'Lb2LcLcnWS': self.lc}
+        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(ws, 0.1))
+
+    def _makeLb2Lc5Pi(self):
+        decays = {
+            'Lb2Lc5Pi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)- rho(770)0]cc"]
+        }
+        inputs = {'Lb2Lc5Pi': self.lc + self.hhh.pipipi + self.hh.pipi_pid}
+        lb2lc5pi = makeB2XSels(decays, 'Lc2PKPiPID', inputs, self.config)
+        self.lines.append(ProtoLine(lb2lc5pi, 1.0))
+
+    def _makeLb2DpHH(self):
+        '''Make RS and WS Lb ->DpHH (H=pi,K) + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '7000*MeV'
+        ppipi = self.hhh.ppipi_pid
+        pkpi = self.hhh.pkpi_pid
+        pkk = self.hhh.pkk_pid
+        decays = {
+            'Lb2DpPiPi': ["[Lambda_b0 -> D+ a_1(1260)-]cc"],
+            'Lb2DpKPi': ["[Lambda_b0 -> D+ a_1(1260)-]cc"],
+            'Lb2DpKK': ["[Lambda_b0 -> D+ a_1(1260)-]cc"]
+        }
+        inputs = {
+            'Lb2DpPiPi': self.d.hhh_cf_pid + ppipi,
+            'Lb2DpKPi': self.d.hhh_cf_pid + pkpi,
+            'Lb2DpKK': self.d.hhh_cf_pid + pkk
+        }
+        rs = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXib2D0pHH(self):
+        '''Make RS and WS Xi_b ->DpHH (H=pi,K) + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '7000*MeV'
+        ppipi = self.hhh.ppipi_pid
+        pkpi = self.hhh.pkpi_pid
+        pkk = self.hhh.pkk_pid
+        decays = {
+            'Xib2D0pPiPi':
+            ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"],
+            'Xib2D0pKPi':
+            ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"],
+            'Xib2D0pKK': ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"]
+        }
+        inputs = {
+            'Xib2D0pPiPi': self.d0_pid + ppipi,
+            'Xib2D0pKPi': self.d0_pid + pkpi,
+            'Xib2D0pKK': self.d0_pid + pkk
+        }
+        rs = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2D0ph(self, dname, d2x):
+        '''Make RS Lb -> D0(K3pi) p h + cc.'''
+        protons_pid = self.protons_pid
+        kaons_pid = self.topoKaons_pid
+        pions_pid = self.topoPions_pid
+        decays_k = {'Lb2D0pK': ["Lambda_b0 -> D0 p+ K-", "Lambda_b~0 -> D0 p~- K+"]}
+        inputs_k = {'Lb2D0pK': d2x + protons_pid + kaons_pid}
+        rs_k = makeB2XSels(decays_k, dname, inputs_k, self.config)
+        self.lines.append(ProtoLine(rs_k, 1.0))
+        decays_pi = {'Lb2D0pPi': ["Lambda_b0 -> D0 p+ pi-", "Lambda_b~0 -> D0 p~- pi+"]}
+        inputs_pi = {'Lb2D0pPi': d2x + protons_pid + pions_pid}
+        rs_pi = makeB2XSels(decays_pi, dname, inputs_pi, self.config)
+        self.lines.append(ProtoLine(rs_pi, 1.0))
+
+    def _makeLb2D0phWS(self, dname, d2x):
+        '''Make RS Lb -> D0(K3pi) p h + cc.'''
+        protons_pid = self.protons_pid
+        kaons_pid = self.topoKaons_pid
+        pions_pid = self.topoPions_pid
+        decays_k = {'Lb2D0pK': ["Lambda_b0 -> D0 p+ K+", "Lambda_b~0 -> D0 p~- K-"]}
+        inputs_k = {'Lb2D0pK': d2x + protons_pid + kaons_pid}
+        rs_k = makeB2XSels(decays_k, dname, inputs_k, self.config)
+        self.lines.append(ProtoLine(rs_k, 1.0))
+        decays_pi = {'Lb2D0pPi': ["Lambda_b0 -> D0 p+ pi+", "Lambda_b~0 -> D0 p~- pi-"]}
+        inputs_pi = {'Lb2D0pPi': d2x + protons_pid + pions_pid}
+        rs_pi = makeB2XSels(decays_pi, dname, inputs_pi, self.config)
+        self.lines.append(ProtoLine(rs_pi, 1.0))
+
+    def _makeLb2DD0p(self, dname, d2x):
+        '''Make Lb -> D(s)- D0(K3pi) p + cc.'''
+        decays = {'Lb2DD0pD2HHH': ["Lambda_b0 -> D- D0 p+", "Lambda_b~0 -> D+ D0 p~-"]}
+        inputs = {'Lb2DD0pD2HHH': self.d.hhh_cf_pid + d2x + self.protons_pid}
+        rs = makeB2XSels(decays, dname, inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXibc2DpK(self):
+        '''Make Xi_bc+ --> D+ p K- + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '9000*MeV'
+        config['AM_MIN'] = '5800*MeV'
+        config['BPVLTIME_MIN'] = '0.05*ps'
+        protons_pid = self.protons_pid
+        kaons_pid = self.topoKaons_pid
+        decays = {'Xibc2DpK': ["[Xi_bc+ -> D+ p+ K-]cc"]}
+        inputs = {'Xibc2DpK': self.d.hhh_cf_pid + protons_pid + kaons_pid}
+        rs = makeB2XSels(decays, 'D2HHH', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2LcPiPiPiFullDST(self):
+        '''Make RS L_b ->Lc 3pi + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5400*MeV'
+        config['AM_MAX'] = '5900*MeV'
+        config['BPVIPCHI2_MAX'] = '16'
+        pipipi = self.hhh.pipipi_tightersel
+        Lc = self.lc_tight
+        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
+        inputs = {'Lb2LcPiPiPi': Lc + pipipi}
+        rs = makeB2XSels(decays, 'Lc2PKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXib02XicPiPiPiFullDST(self):
+        '''Make RS Xi_b0 -> Xi_c+ 3pi + cc.'''
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5600*MeV'
+        config['AM_MAX'] = '6000*MeV'
+        config['BPVIPCHI2_MAX'] = '16'
+        pipipi = self.hhh.pipipi_tightersel
+        Xic = self.xic_tightest
+        decays = {'Xib02XicPiPiPi': ["[Xi_b0 -> Xi_c+ a_1(1260)-]cc"]}
+        inputs = {'Xib02XicPiPiPi': Xic + pipipi}
+        rs = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeXib2Xic0PiPiPiFullDST(self):
+        '''Make RS Xi_b- -> Xi_c0 PiPiPi- '''
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5600*MeV'
+        config['AM_MAX'] = '6100*MeV'
+        config['BPVIPCHI2_MAX'] = '16'
+        pipipi = self.hhh.pipipi_tightersel
+        decays = {'Xib2Xic0PiPiPi': ["[Xi_b- -> Xi_c0 a_1(1260)-]cc"]}
+        inputs = {'Xib2Xic0PiPiPi': self.xic0 + pipipi}
+        rs = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeOmegab2Omegac0PiPiPiFullDST(self):
+        '''Make RS Omega_b- -> Omega_c0 PiPiPi- '''
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5800*MeV'
+        config['AM_MAX'] = '6300*MeV'
+        config['BPVIPCHI2_MAX'] = '16'
+        pipipi = self.hhh.pipipi_tightersel
+        Omegac = self.omegac0_tight
+        decays = {
+            'Omegab2Omegac0PiPiPi': ["[Omega_b- -> Omega_c0 a_1(1260)-]cc"]
+        }
+        inputs = {'Omegab2Omegac0PiPiPi': Omegac + pipipi}
+        rs = makeB2XSels(decays, 'Omegac02PKKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2sigmacpp4Pi(self):
+        '''Make Lambda_b0 -> Sigma_c++ Pi+ 3Pi- cc.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6000*MeV'
+        config['AM_MIN'] = '4900*MeV'
+        pions = self.pions
+        decays = {
+            'Lb2sigmacpp4Pi': ["[Lambda_b0 -> Sigma_c++ pi+ pi- pi- pi-]cc"]
+        }
+        inputs = {'Lb2sigmacpp4Pi': self.sigmacpp + pions}
+        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2sigmacppD0KPi(self):
+        '''Makes Lambda_b0 -> Sigma_c++ D0 K- pi- + c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6000*MeV'
+        config['AM_MIN'] = '4900*MeV'
+        pions = self.pions
+        kaons = self.kaons
+        decays = {
+            'Lb2sigmacppD0KPi': [
+                "Lambda_b0 -> Sigma_c++ D0 K- pi-",
+                "Lambda_b~0 -> Sigma_c~-- D0 K+ pi+"
+            ]
+        }
+        inputs = {
+            'Lb2sigmacppD0KPi': self.d.kpi_pid + self.sigmacpp + pions + kaons
+        }
+        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2DDLambda(self, lambda0):
+        '''Makes Lambda_b0 -> D+ D- Lambda0'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6219*MeV'
+        '''1870*2+1115=4855'''
+        config['AM_MIN'] = '4900*MeV'
+        decays = {'Lb2DDLambda' + lambda0: ["[Lambda_b0 -> D- D+ Lambda0]cc"]}
+        inputs = {
+            'Lb2DDLambda' + lambda0:
+            self.dds + self.lambda0[lambda0]
+        }
+        lb2ddlambda_rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(lb2ddlambda_rs, 1.0))
+
+    def _makeLb2D0D0Lambda(self, lambda0):
+        '''Makes Lambda_b0 -> D0 D0 Lambda0'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6219*MeV'
+        config['AM_MIN'] = '4300*MeV'
+        dec = ["Lambda_b0 -> D0 D0 Lambda0", "Lambda_b~0 -> D0 D0 Lambda~0"]
+        decays = {
+            'Lb2D0D0LambdaD02HHD02HH' + lambda0: dec,
+            'Lb2D0D0LambdaD02HHD02K3Pi' + lambda0: dec,
+            'Lb2D0D0LambdaD02K3PiD02K3Pi' + lambda0: dec
+        }
+        inputs = {
+            'Lb2D0D0LambdaD02HHD02HH' + lambda0:
+            self.d.hh_pid_tight + self.lambda0[lambda0],
+            'Lb2D0D0LambdaD02HHD02K3Pi' + lambda0:
+            self.d.hh_pid_tight + self.d.k3pi_pid_tight +
+            self.lambda0[lambda0],
+            'Lb2D0D0LambdaD02K3PiD02K3Pi' + lambda0:
+            self.d.k3pi_pid_tight + self.lambda0[lambda0]
+        }
+        lb2d0d0lambda = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(lb2d0d0lambda, 1.0))
+
+    def _makeLb2DstDLambda(self, lambda0):
+        '''Makes the Lambda_b0 -> D*+- D-+ Lambda0 + c.c.'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6219*MeV'
+        config['AM_MIN'] = '4300*MeV'
+        decays = {
+            'Lb2DstDLambda' + lambda0:
+            ["[Lambda_b0 -> D*(2010)- D+ Lambda0]cc","[Lambda_b0 -> D- D*(2010)+ Lambda0]cc"]
+        }
+        inputs = {
+            'Lb2DstDLambda' + lambda0:
+            self.d.d_and_ds_cf_pid + self.dst.d0pi_pid + self.lambda0[lambda0]
+        }
+        lb2dstdlambda_rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(lb2dstdlambda_rs, 1.0))
+        inputs = {
+            'Lb2DstDLambda' + lambda0:
+            self.d.d_and_ds_cf_pid + self.dst.d0pi_k3pi_pid +
+            self.lambda0[lambda0]
+        }
+        lb2dstdlambda_rs = makeB2XSels(decays, 'DstarD02K3Pi', inputs, config)
+        self.lines.append(ProtoLine(lb2dstdlambda_rs, 1.0))
+
+    def _makeLb2DstDstLambda(self, lambda0):
+        '''Makes Lambda_b0 -> D*+- D*-+ Lambda0'''
+        config = deepcopy(self.config)
+        config['AM_MAX'] = '6219*MeV'
+        config['AM_MIN'] = '4300*MeV'
+        decays = {
+            'Lb2DstDstLambda' + lambda0:
+            ["[Lambda_b0 -> D*(2010)- D*(2010)+ Lambda0]cc"]
+        }
+        inputs = {
+            'Lb2DstDstLambda' + lambda0:
+            self.dst.d0pi_pid + self.lambda0[lambda0]
+        }
+        lb2dstdstlambda_rs = makeB2XSels(decays, '', inputs, config)
+        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
+        inputs = {
+            'Lb2DstDstLambda' + lambda0:
+            self.dst.d0pi_pid + self.dst.d0pi_k3pi_pid + self.lambda0[lambda0]
+        }
+        lb2dstdstlambda_rs = makeB2XSels(decays, 'DstarD02K3Pi', inputs,
+                                         config)
+        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
+        inputs = {
+            'Lb2DstDstLambda' + lambda0:
+            self.dst.d0pi_k3pi_pid + self.lambda0[lambda0]
+        }
+        lb2dstdstlambda_rs = makeB2XSels(decays, 'DstarD02K3PiDstarD02K3Pi',
+                                         inputs, config)
+        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
+    
+    def _makeB02LcSigmacppK(self):
+        '''Makes B0 -> Lc+ Sigma_c-- K+ + c.c.'''
+        kaons = self.topoKaons_pid
+        decays = {'B02LcSigmacppK': ["[B0 -> Lambda_c+ Sigma_c~-- K+]cc"]}
+        inputs = {'B02LcSigmacppK': self.lc_tight + self.sigmacpp + kaons}
+        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeBs2LcSigma(self):
+        '''Make Bs0 -> Lambda_c~- Sigma+'''
+        sigma = self.hh.sigmapm
+        decays = {'Bs2LcSigmap': ["[B_s0 -> Lambda_c~- Sigma+]cc"]}
+        inputs = {'Bs2LcSigmap': self.lc + sigma}
+        rs = makeB2XSels(decays, 'Lc2PKPiSigmap2PPiz', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeLb2DDpK(self):
+        '''Make Lb -> D+ D- p K- + cc.'''
+        protons = self.protons_pid
+        kaons = self.topoKaons_pid
+        decays = {'Lb2DDpK': ["[Lambda_b0 -> D+ D- p+ K-]cc"]}
+        inputs = {'Lb2DDpK': self.d.hhh_ds_rejection + protons + kaons}
+        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeB2LcXicPi(self):
+        '''Make B+ -> Lc+ Xic- pi+ + cc.'''
+        pions = self.pions
+        config = deepcopy(self.config)
+        config['AM_MIN'] = '5000.*MeV'
+        decays = {'B2LcXicPi': ["[B+ -> Lambda_c+ Xi_c~- pi+]cc"]}
+        inputs = {'B2LcXicPi': self.lc_tight + self.xic_tight + pions}
+        rs = makeB2XSels(decays, 'Xic2PKPiLc2PKPi', inputs, config)
+        self.lines.append(ProtoLine(rs, 1.0))
+
+    def _makeB2XicpbarPi(self):
+        '''Make B- -> Xic+ pbar pi-'''
+        pions = self.topoPions_pid
+        decays = {'B2XicpbarPi': ["[B- -> Xi_c+ p~- pi-]cc"]}
+        inputs = {'B2XicpbarPi': self.xic + self.protons_pid + pions}
+        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_xic, 1.0))
+
+    def _makeB02XicpbarPiPi(self):
+        '''Make B0 -> Xic+ pi+ pi- pbar'''
+        pions = self.topoPions_pid
+        decays = {'B02XicpbarPiPi': ["[B0 -> Xi_c+ pi+ pi- p~-]cc"]}
+        inputs = {'B02XicpbarPiPi': self.xic + self.protons_pid + pions}
+        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_xic, 1.0))
+
+    def _makeB02XicpbarKPi(self):
+        '''Make B0 -> Xic+ K+ pi- pbar'''
+        pions = self.topoPions_pid
+        kaons = self.topoKaons_pid
+        decays = {'B02XicpbarKPi': ["[B0 -> Xi_c+ K+ pi- p~-]cc"]}
+        inputs = {'B02XicpbarKPi': self.xic + self.protons_pid + pions + kaons}
+        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_xic, 1.0))
+
+    def _makeB02DpbarLambda(self, lambda0):
+        '''Make B0 -> Lambda0 D(*)+ pbar'''
+        decays = {'B02DpbarLambda' + lambda0: ["[B0 -> D+ p~- Lambda0]cc"]}
+        inputs = {'B02DpbarLambda' + lambda0: self.d.hh_pid_tight + self.protons_pid + self.lambda0[lambda0]}
+        make_d = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(make_d, 1.0))
+        decays = {'B02DstpbarLambda' + lambda0: ["[B0 -> D*(2010)+ p~- Lambda0]cc"]}
+        inputs = {'B02DstpbarLambda' + lambda0: self.dst.d0pi_pid + self.protons_pid + self.lambda0[lambda0]}
+        make_dst = makeB2XSels(decays, 'Dst2D0Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_dst, 1.0))
+        inputs = {'B02DstpbarLambda' + lambda0: self.dst.d0pi_k3pi_pid + self.protons_pid + self.lambda0[lambda0]}
+        make_dst_k3pi = makeB2XSels(decays, 'Dst2D0PiD02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_dst_k3pi, 1.0))
+
+    def _makeB2D0pbarLambda(self, lambda0):
+        '''Make B- -> Lambda0 D0 pbar'''
+        decays = {'B2D0pbarLambda' + lambda0: ["B- -> D0 p~- Lambda0", "B+ -> D0 p+ Lambda~0"]}
+        inputs = {'B2D0pbarLambda' + lambda0: self.d0_pid + self.protons_pid + self.lambda0[lambda0]}
+        make_d0 = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(make_d0, 1.0))
+        inputs = {'B2D0pbarLambda' + lambda0: self.d0_k3pi_pid + self.protons_pid + self.lambda0[lambda0]}
+        make_d0_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_d0_k3pi, 1.0))
+
+    def _makeB02D0pbarKLambda(self, lambda0):
+        '''Make B0 -> Lambda0 D0 pbar K+'''
+        kaons = self.topoKaons_pid
+        decays = {'B02D0pbarKLambda' + lambda0: ["B0 -> D0 p~- Lambda0 K+", "B0 -> D0 p+ Lambda~0 K-"]}
+        inputs = {'B02D0pbarKLambda' + lambda0: self.d0_pid + self.protons_pid + self.lambda0[lambda0] + kaons}
+        make_d0 = makeB2XSels(decays, 'D02HH', inputs, self.config)
+        self.lines.append(ProtoLine(make_d0, 1.0))
+        inputs = {'B02D0pbarKLambda' + lambda0: self.d0_k3pi_pid + self.protons_pid + self.lambda0[lambda0] + kaons}
+        make_d0_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_d0_k3pi, 1.0))
+
+    def _makeXib2XicHHHH(self):
+        '''Make Xib- -> Xic+ pi+ pi- pi- pi-'''
+        pipipipi = self.hhh.pipipipi
+        decays = {'Xib2XicHHHH': ["[Xi_b- -> Xi_c+ a_1(1260)-]cc"]}
+        inputs = {'Xib2XicHHHH': self.xic + pipipipi}
+        make_Xic4h = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_Xic4h, 1.0))
+
+    def _makeXib2LcKHHH(self):
+        '''Make Xib- -> Lambdac+ pi+ K- pi- pi-'''
+        kpipipi = self.hhh.kpipipi
+        decays = {'Xib2LcKHHH': ["[Xi_b- -> Lambda_c+ K_1(1270)-]cc"]}
+        inputs = {'Xib2LcKHHH': self.lc + kpipipi}
+        make_LcKhhh = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_LcKhhh, 1.0))
+
+    def _makeXib02D0LambdaPiPi(self):
+        '''Make Xib0 -> D0 Lambda0 pi+ pi-'''
+        pipi = self.hh.pipi
+        lambda0="LL"
+        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
+        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_pid  + pipi+ self.lambda0[lambda0]}
+        make_D0L0PiPiLLKPi= makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_D0L0PiPiLLKPi, 1.0))
+        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
+        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_k3pi_pid  + pipi+ self.lambda0[lambda0]}
+        make_D0L0PiPiLLK3Pi= makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_D0L0PiPiLLK3Pi, 1.0))
+
+        lambda0="DD"
+        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
+        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_pid + pipi+ self.lambda0[lambda0]}
+        make_D0L0PiPiDDKPi= makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_D0L0PiPiDDKPi, 1.0))
+        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
+        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_k3pi_pid + pipi+ self.lambda0[lambda0]}
+        make_D0L0PiPiDDK3Pi= makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_D0L0PiPiDDK3Pi, 1.0))
+
+    def _makeOmegab2Xic0KPiPi(self):
+        '''Make Omegab- -> Xic0 K Pi Pi'''
+        kpipi = self.hhh.kpipi
+        decays = {'Omegab2Xic0KPiPi': ["[Omega_b- -> Xi_c0 K_1(1270)-]cc"]}
+        inputs = {'Omegab2Xic0KPiPi': self.xic0 + kpipi}
+        make_rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_rs, 1.0))
+
+
+    def _makeXib02XicD0K(self):
+        '''Make Xib0 -> Xic+ D~0 K-'''
+        kaons = self.topoKaons_pid
+        decays = {'Xib02XicD0K': ["Xi_b0 -> Xi_c+ D0 K-","Xi_b0 -> Xi_c~- D0 K+"]}
+        inputs = {'Xib02XicD0K': self.xic + self.d0_pid + kaons}
+        make_d2KPi = makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_d2KPi, 1.0))
+
+        decays = {'Xib02XicD0K': ["Xi_b0 -> Xi_c+ D0 K-","Xi_b0 -> Xi_c~- D0 K+"]}
+        inputs = {'Xib02XicD0K': self.xic + self.d0_k3pi_pid + kaons}
+        make_d2K3Pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_d2K3Pi, 1.0))
+
+
+    def _makeXib2XicDK(self):
+        '''Make Xib- -> Xic0 D~0 K-, Xib- -> Xic+ D- K-, Xib- -> Xic+ D*- K-'''
+        kaons = self.topoKaons_pid
+
+        decays = {'Xib2Xic0D0K': ["Xi_b- -> Xi_c0 D0 K-","Xi_b~+ -> Xi_c~0 D0 K+"]}
+        inputs = {'Xib2Xic0D0K': self.xic0 + self.d0_pid + kaons}
+        make_d2KPi = makeB2XSels(decays, 'D02KPi', inputs, self.config)
+        self.lines.append(ProtoLine(make_d2KPi, 1.0))
+
+        decays = {'Xib2XicDK': ["[Xi_b- -> Xi_c+ D- K-]cc"]}
+        inputs = {'Xib2XicDK': self.xic + self.d.hhh_cf_pid + kaons}
+        make_d2hhh = makeB2XSels(decays, 'D2HHH', inputs, self.config)
+        self.lines.append(ProtoLine(make_d2hhh, 1.0))
 
-class Beauty2CharmConf(LineBuilder):
-
-    __configuration_keys__ = default_config['CONFIG'].keys()
-
-    def __init__(self, moduleName, config):
-
-        LineBuilder.__init__(self, moduleName, config)
-
-        # pre-filter inputs
-        pions = filterInputs('Pi', [StdAllNoPIDsPions], config['ALL'])
-        pions_pid = filterInputs('Pi_PID', [pions], config['PIDPION'])
-        uppions = filterInputs('PiUP', [StdNoPIDsUpPions], config['UPSTREAM'])
-        kaons = filterInputs('K', [StdAllNoPIDsKaons], config['ALL'])
-        kaons_pid = filterInputs('K_PID', [kaons], config['PIDKAON'])
-        upkaons = filterInputs('KaUP', [StdNoPIDsUpKaons], config['UPSTREAM'])
-        protons = filterInputs('P', [StdAllNoPIDsProtons], config['ALL'])
-        protons_pid = filterInputs('P_PID', [protons], config['PIDPROTON'])
-
-        #pions,kaons, protons for Lc, Xic from Xibc
-        pions_Xc_Xibc = filterInputs('Pi_Xc_Xibc', [StdAllNoPIDsPions],
-                                     config['Xibc_Xc_PION'])
-        kaons_Xc_Xibc = filterInputs('K_Xc_Xibc', [StdAllNoPIDsKaons],
-                                     config['Xibc_Xc_KAON'])
-        protons_Xc_Xibc = filterInputs('P_Xc_Xibc', [StdAllNoPIDsProtons],
-                                       config['Xibc_Xc_PROTON'])
-        #pions,kaons, from Xicc or Xib vertex (filter from PID pions, above, as all cuts are tighter)
-        pions_Xb_Xibc = filterInputs('Pi_Xb_Xibc', [pions_pid],
-                                     config['Xibc_Xb_PION'])
-        kaons_Xb_Xibc = filterInputs('K_Xb_Xibc', [kaons_pid],
-                                     config['Xibc_Xb_KAON'])
-        protons_Xb_Xibc = filterInputs('P_Xb_Xibc', [protons_pid],
-                                       config['Xibc_Xb_PROTON'])
-
-        ks_dd = filterInputs('KS0_DD', [dataOnDemand("StdLooseKsDD")],
-                             config['KS0'])
-        ks_ll = filterInputs('KS0_LL', [dataOnDemand("StdVeryLooseKsLL")],
-                             config['VLKS0_LL'])
-        ks = {"DD": [ks_dd], "LL": [ks_ll]}
-        lambda0_dd = filterInputs('Lambda0_DD',
-                                  [dataOnDemand("StdLooseLambdaDD")],
-                                  config['Lambda0'])
-        lambda0_ll = filterInputs('Lambda0_LL',
-                                  [dataOnDemand("StdLooseLambdaLL")],
-                                  config['Lambda0'])
-        lambda0 = {"DD": [lambda0_dd], "LL": [lambda0_ll]}
-        pi0_merged = filterPi0s('Merged', [StdLooseMergedPi0], config['Pi0'])
-        pi0_resolved = filterPi0s('Resolved', [StdLooseResolvedPi0],
-                                  config['Pi0'])
-        pi0_all = MergedSelection(
-            'Pi0AllBeauty2Charm',
-            RequiredSelections=[pi0_merged, pi0_resolved])
-
-        pi0 = {
-            'Merged': [pi0_merged],
-            'Resolved': [pi0_resolved],
-            'all': [pi0_all]
-        }
-
-        pcut = 'P > %s' % config['Pi0']['FROM_B_P_MIN']
-        pi0_fromB_merged = filterSelection('Pi0FromBMerged', pcut,
-                                           [pi0_merged])
-        pi0_fromB_resolved = filterSelection('Pi0FromBResolved', pcut,
-                                             [pi0_resolved])
-        pi0_fromB = {
-            'Merged': [pi0_fromB_merged],
-            'Resolved': [pi0_fromB_resolved]
-        }
-        muons = filterInputs('MU', [StdLooseMuons],
-                             config['ALL'])  # make muons (for D -> phi mu nu)
-
-        # Jordi: photon selection.
-        gammacut = '(PT > %(PT_MIN)s) & (CL > %(CL_MIN)f) & (PPINFO(LHCb.ProtoParticle.IsNotE,-1) > %(ISNOTE_MIN)f)' % config[
-            'gamma']
-        photons = filterSelection('Gamma', gammacut, [StdLooseAllPhotons])
-        # Alessandro Bertolin: very loose all photons.
-        vlagammacut = '(PT > %(PT_VLAPH)s) & (CL > %(CL_MIN)f) & (PPINFO(LHCb.ProtoParticle.IsNotE,-1) > %(ISNOTE_MIN)f)' % config[
-            'gamma']
-        vlaphotons = filterSelection('VLAGamma', vlagammacut,
-                                     [StdVeryLooseAllPhotons])
-
-        # pre-filter hard inputs (these could have been used in HLT2)
-        topoPions = topoInputs('Pi', [pions])
-        topoPions_PID = topoInputs('Pi_PID', [pions_pid])
-        topoPionsLoose = topoInputsLoose('PiLoose', [pions])
-        topoKaons = topoInputs('K', [kaons])
-        topoKaons_PID = topoInputs('K_PID', [kaons_pid])
-        topoKaonsLoose = topoInputsLoose('KLoose', [kaons])
-        topoProtons = topoInputs('P', [protons])
-        topoProtons_PID = topoInputs('P_PID', [protons_pid])
-
-        # X -> hh
-        hh = HHBuilder(pions, kaons, protons, ks, pi0_fromB, config['HH'],
-                       config['PID'])
-
-        # X -> hhh
-        hhh = HHHBuilder(pions, kaons, protons, config['HHH'], config['PID'])
-
-        # make D->X, etc. inputs
-        d = DBuilder(pions, kaons, ks, pi0, uppions, upkaons, muons, hh,
-                     config['D2X'], config['D2X_FOR_DDX'], config['PID'],
-                     config['Pi0'])
-        dst = DstarBuilder(d, pions, uppions, pi0, photons, vlaphotons,
-                           config['Dstar'], config['PID'])
-
-        # Lc -> X
-        lc = LcBuilder(pions_pid, kaons_pid, protons_pid, lambda0, config['D2X'],
-                       config['PID'])
-        lcstar = LcstarBuilder(lc, pions_pid, config['Lcstar'])
-        xicc = XiccBuilder(lc, pions_pid, config['D2X'])
-        # Loose Lc, for Xibc
-        lcLoose = LooseLcBuilder(pions_Xc_Xibc, kaons_Xc_Xibc, protons_Xc_Xibc,
-                                 config['LC_FOR_XIBC'])
-        xiccLoose = LooseXiccBuilder(lcLoose, pions_Xb_Xibc, kaons_Xb_Xibc,
-                                     config['LC_FOR_XIBC'])
-
-        # make B->DX
-        b2dx = B2DXBuilder(d, dst, topoPions, topoPionsLoose, topoKaons, topoKaonsLoose,
-                           topoKaons_PID, topoPions_PID, topoProtons_PID, muons, ks, pi0_fromB,
-                           hh, hhh, config['B2X'])
-        self._makeLines(b2dx.lines, config)
-
-        # Bc -> DD lines
-        bc2dd = Bc2DDBuilder(d, dst, config['Bc2DD'])
-        self._makeLines(bc2dd.lines, config)
-
-        # Bc->Buhh lines
-        bc2bx = Bc2BXBuilder(b2dx, topoPionsLoose, topoKaonsLoose,
-                             config['Bc2BX'])
-        self._makeLines(bc2bx.lines, config)
-
-        #Bc -> DX lines
-        bc2dx = Bc2DXBuilder(lc, topoProtons_PID, d, dst, hh, topoPionsLoose, topoPions_PID, topoKaonsLoose, topoKaons_PID,
-                             config['Bc2DX'])
-        self._makeLines(bc2dx.lines, config)
-
-        # Lb -> X
-        lb2x = Lb2XBuilder(lc, lcstar, xicc, d, hh, topoPions, topoPions_PID,
-                           topoKaons, topoKaons_PID, topoProtons,
-                           topoProtons_PID, pions, kaons, ks, hhh, dst,
-                           lambda0, config['B2X'])
-        self._makeLines(lb2x.lines, config)
-
-        # Xibc -> Xc hh, LcD0, Xicc h
-        xibc = XibcBuilder(lcLoose, xiccLoose, d, topoPions_PID, topoKaons_PID,
-                           topoProtons_PID, pions_Xb_Xibc, kaons_Xb_Xibc,
-                           protons_Xb_Xibc, muons, config['Xibc'],
-                           config['XiccMu'])
-        self._makeLines(xibc.lines, config)
-
-        # Unbiased lines
-        ltub = LTUnbiasedBuilder(d, dst, config['B2X'])
-        self._makeLines(ltub.lines, config)
-
-        # UP D* lines
-        for line in b2dx.lines:
-            for sel in line.selections:
-                if sel.name().find('WS') > 0: continue
-                dstar_sel = makeB2DstarX(sel, uppions, config['B2X'])
-                self._makeLine(ProtoLine([dstar_sel], line.pre), config)
-
-        # UNKNOWN line
-        # # B->D0X inclusive line
-        # cuts = "(PT > %d*MeV) & (ADMASS('D0') < 25*MeV) & (MIPCHI2DV(PRIMARY)>%d)" \
-        #        % (config['D0INC']['PT_MIN'],config['D0INC']['IPCHI2_MIN'])
-        # sel = filterSelection('D02KPIPIDMTIGHT',cuts,d.kpi_pid_tight)
-        # sel = tosSelection(sel,{'Hlt2Topo2.*Decision%TOS':0})
-        # hlt = "HLT_PASS_RE('Hlt2Topo2.*Decision')"
-        # sline = StrippingLine('D02HHTopoTOSLine',1.0,selection=sel,HLT2=hlt)
-        # self.registerLine(sline)
-
-    def _makeLine(self, protoLine, config):
-        tag = 'B2CBBDTBeauty2CharmFilter'
-        default = config['Prescales']['RUN_BY_DEFAULT']
-        run_re = config['Prescales']['RUN_RE']
-        prescale_keys = config['Prescales'].keys()
-        for line in protoLine.selections:
-            name = line.name().replace(tag, '') + 'Line'
-            match = False
-            for r in run_re:
-                if re.match(r, name):
-                    match = True
-                    break
-            if (not default) and (not match) and (not (name in prescale_keys)):
-                continue
-            tmpSel = Selection(
-                line.name() + 'FilterALL',
-                Algorithm=FilterDesktop(Code='ALL'),
-                RequiredSelections=[line])
-            filter = {'Code' :
-                      "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\
-                      " < %s )" \
-                      % config['GECNTrkMax'],
-                      'Preambulo' : [ "from LoKiTracks.decorators import *",
-                                      'from LoKiCore.functions    import *' ]
-                      }
-            # Hlt2IncPhi untill 2015, since 2016 Hlt2PhiIncPhi
-            hlt = "(HLT_PASS_RE('Hlt2Topo.*Decision') | "\
-                  "HLT_PASS_RE('Hlt2.*IncPhi.*Decision'))"
-
-            if ((name in config['RawEvents'])):
-                rawevent = [
-                    "Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"
-                ]
-            else:
-                rawevent = []
-
-            checkPV_option = True
-
-            sline = StrippingLine(
-                name,
-                protoLine.prescale(line, name, config),
-                selection=tmpSel,
-                checkPV=checkPV_option,
-                FILTER=filter,
-                HLT2=hlt,
-                EnableFlavourTagging=(name in config['FlavourTagging']),
-                RequiredRawEvents=rawevent,
-                MDSTFlag=(name in config['MDSTChannels']),
-                RelatedInfoTools=config['RelatedInfoTools'])
-
-            self.registerLine(sline)
-
-    def _makeLines(self, lines, config):
-        for line in lines:
-            self._makeLine(line, config)
+        decays = {'Xib2XicDK': ["[Xi_b- -> Xi_c+ D*(2010)- K-]cc"]}
+        inputs = {'Xib2XicDK': self.xic + self.dst.d0pi_pid + kaons}
+        make_dst2d0h = makeB2XSels(decays, 'Dst2D0Pi', inputs, self.config)
+        self.lines.append(ProtoLine(make_dst2d0h, 1.0))
 
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From 741ecb188c3c751aae155b520d6a8cedad8fb353 Mon Sep 17 00:00:00 2001
From: bshi <boan.shi@cern.ch>
Date: Thu, 13 Jul 2023 21:56:33 +0800
Subject: [PATCH 2/3] amend StrippingBeauty2Charm.py

---
 .../StrippingB2OC/StrippingBeauty2Charm.py    | 4756 +++++++----------
 1 file changed, 1946 insertions(+), 2810 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
index a66f22a3e..8842d46e8 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
@@ -1,5 +1,6 @@
 ###############################################################################
-# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration      #
+# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration      #
+#                                                                             #
 # This software is distributed under the terms of the GNU General Public      #
 # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
 #                                                                             #
@@ -8,2828 +9,1963 @@
 # or submit itself to any jurisdiction.                                       #
 ###############################################################################
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
+'''
+B->DX, Lb -> LcX, etc.
 
-from copy import deepcopy
-from Gaudi.Configuration import *
-from GaudiConfUtils.ConfigurableGenerators import CombineParticles
-from GaudiConfUtils.ConfigurableGenerators import DaVinci__N3BodyDecays, DaVinci__N4BodyDecays
-from PhysSelPython.Wrappers import Selection
-from Beauty2Charm_LoKiCuts import LoKiCuts
-from Beauty2Charm_Utils import *
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-class XimBuilder(object):
-    '''Produces all Xim baryons for the Beauty2Charm module.'''
-
-    def __init__(self, pions, kaons, protons, lambda0, config_Xim):
-        
-				#selections written in StrippingBeauty2Charm.py
-        self.pions = pions
-        self.kaons = kaons
-        self.protons = protons
-        self.lambda0 = lambda0
-        self.config_Xim = config_Xim #Xi- selections written in StrippingBeauty2Charm.py
-        
-				#Xi-
-        self.xim_lmd0pim_LL = [self._makeXim2Lmd0Pim("LL")]
-        self.xim_lmd0pim_DD = [self._makeXim2Lmd0Pim("DD")]
-		
-    def _makeXim2Lmd0Pim(self, lmd):
-        '''Makes Xi- -> Lambda0 Pim + cc'''
-        dm, units = LoKiCuts.cutValue(self.config_Xim['MASS_WINDOW'])
-        # Pre vertex fit
-        comboCuts = [
-            "(ADAMASS('Xi-') < %s*%s) " % (dm + 50, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xim).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        # Post vertex fit
-        momCuts = [
-            "(ADMASS('Xi-') < %s*%s) " % (dm + 40, units)
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi- -> Lambda0 pi-", "Xi~+ -> Lambda~0 pi+"])
-        return Selection(
-            'Xim2Lambda0Pim' + lmd + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections= self.lambda0[lmd] + [self.pions])
+Author: M. Williams
+'''
+__author__ = ['Mike Williams']
 
+__all__ = ('Beauty2CharmConf', 'default_config')
 
+moduleName = 'Beauty2Charm'
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-
-class LcBuilder(object):
-    '''Produces all Lambda_c baryons for the Beauty2Charm module.'''
-
-    def __init__(self, pions, kaons, protons, lambda0, ks, xim, config, config_Xic0, config_pid):
-        self.pions = pions
-        self.kaons = kaons
-        self.protons = protons
-        self.lambda0 = lambda0
-        self.ks = ks
-        self.xim_lmd0pim_LL = xim.xim_lmd0pim_LL
-        self.xim_lmd0pim_DD = xim.xim_lmd0pim_DD
-        self.config = config
-        self.pkpi = [self._makeLc2phh()]
-        self.pkk = [self._makeLc2phh("PKK")]
-        self.ppipi = [self._makeLc2phh("PPiPi")]
-        self.xic_pkpi = [self._makeXic2pKpi()]
-        self.xic0_pkkpi = [self._makeXic02pKKpi()]
-        self.omegac0_pkkpi = [self._makeOmegac02pKKpi()]
-        self.config_Xic0 = config_Xic0
-        
-				# Xic0_XimPip
-        self.xic0_ximpip_LL = [self._makeXic02XimPip("LL")]
-        self.xic0_ximpip_DD = [self._makeXic02XimPip("DD")]
-        # xic0_Lambda0kmpip
-        self.xic0_lmd0kmpip_LL = [self._makeXic02Lambda0KmPip("LL")]
-        self.xic0_lmd0kmpip_DD = [self._makeXic02Lambda0KmPip("DD")]
-        # xic0_PKsKm
-        self.xic0_pkskm_LL = [self._makeXic02PKsKm("LL")]
-        self.xic0_pkskm_DD = [self._makeXic02PKsKm("DD")]
-
-				# Filter with tighter PID
-        self.lambdapiLL = [self._makeLc2Lambdapi("LL")]
-        self.lambdapiDD = [self._makeLc2Lambdapi("DD")]
-        self.xic_pkpi = [self._makeXic2pKpi()]
-        self.xic0_pkkpi = [self._makeXic02pKKpi()]
-        self.omegac0_pkkpi = [self._makeOmegac02pKKpi()]
-
-        # Filter with tighter PID
-        self.pkpi_tight = [
-            filterPID('LC2PKPITIGHTER3PID', self.pkpi, config_pid['TIGHTER3'])
-        ]
-        self.xic_pkpi_tight = [
-            filterPID('XIC2PKPITIGHTER3PID', self.xic_pkpi,
-                      config_pid['TIGHTER3'])
-        ]
-        self.omegac0_pkkpi_tight = [
-            filterPID('OMC02PKKPITIGHTER3PID', self.omegac0_pkkpi,
-                      config_pid['TIGHTER3'])
-        ]
-
-        # Now apply tighter mass window
-        mCutLc = "ADMASS('Lambda_c+') < 60.0"
-        mCutXic = "ADMASS('Xi_c+') < 60.0"
-        mCutXicTight = "ADMASS('Xi_c+') < 50.0"
-        mCutOmegac = "ADMASS('Omega_c0') < 60.0"
-        self.pkpi_tight_win = [
-            filterSelection('LC2PKPITIGHTER3PIDMWIN', mCutLc, self.pkpi_tight)
-        ]
-        self.xic_pkpi_tight_win = [
-            filterSelection('XIC2PKPITIGHTER3PIDMWIN', mCutXic,
-                            self.xic_pkpi_tight)
-        ]
-        self.xic_pkpi_tightest_win = [
-            filterSelection('XIC2PKPITIGHTEST3PIDMWIN', mCutXicTight,
-                            self.xic_pkpi_tight)
-        ]
-        self.omegac0_pkkpi_tight_win = [
-            filterSelection('OMC02PKPITIGHTER3PIDMWIN', mCutOmegac,
-                            self.omegac0_pkkpi_tight)
-        ]
-
-    def _makeLc2phh(self,mode="PKPi"):
-        '''Makes Lc -> p h h' + cc
-           mode:
-               "PKPi" : Lc -> p K pi
-               "PKK"  : Lc -> p K K
-               "PPiPi": Lc -> p pi pi
-        '''
-        decays = {
-            "PKPi" : "[Lambda_c+ -> p+ K- pi+]cc",
-            "PKK"  : "[Lambda_c+ -> p+ K- K+]cc",
-            "PPiPi": "[Lambda_c+ -> p+ pi- pi+]cc"
-        }
-        inputs = {
-            "PKPi" : [self.pions, self.kaons, self.protons],
-            "PKK"  : [self.kaons, self.protons],
-            "PPiPi": [self.pions, self.protons]
-        }
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N3BodyDecays(
-            Combination12Cut=comboCuts12,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=[decays[mode]])
-        return Selection(
-            "Lc2%sBeauty2Charm" % mode,
-            Algorithm=cp,
-            RequiredSelections=inputs[mode])
-
-    def _makeLc2Lambdapi(self, lambda0):
-        '''Makes Lambda_c+ -> Lambda0 pi+'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-
-        decays = {'Lc2Lambdapi' + lambda0: ["[Lambda_c+ -> Lambda0 pi+]cc"]}
-        inputs = {
-            'Lc2Lambdapi' + lambda0:
-            self.lambda0[lambda0] + [self.pions],
-        }
-        mode = 'Lc2Lambdapi' + lambda0
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=decays[mode])
-        return Selection(
-            "%sBeauty2Charm" % mode,
-            Algorithm=cp,
-            RequiredSelections=inputs[mode])
-
-    def _makeXic2pKpi(self):
-        '''Makes Xic -> p K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_c+') < %s*%s) " % (dm + 10, units),
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N3BodyDecays(
-            Combination12Cut=comboCuts12,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_c+ -> p+ K- pi+]cc"])
-        return Selection(
-            'Xic2PKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeXic02pKKpi(self):
-        '''Makes Xic0 -> p K K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 10, units),
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
-        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts123 = LoKiCuts.combine(comboCuts123)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c0') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N4BodyDecays(
-            Combination12Cut=comboCuts12,
-            Combination123Cut=comboCuts123,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_c0 -> p+ K- K- pi+]cc"])
-        return Selection(
-            'Xic02PKKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeOmegac02pKKpi(self):
-        '''Makes Omegac0 -> p K K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Omega_c0') < %s*%s) " % (dm + 10, units),
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
-        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts123 = LoKiCuts.combine(comboCuts123)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Omega_c0') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N4BodyDecays(
-            Combination12Cut=comboCuts12,
-            Combination123Cut=comboCuts123,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Omega_c0 -> p+ K- K- pi+]cc"])
-        return Selection(
-            'Omegac02PKKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeXic02XimPip(self, lmd):
-        '''Makes Xi_c0 -> Xi- pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
-        comboCuts = [
-            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 50, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c0') < %s*%s) " % (dm + 30, units)
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_c0 -> Xi- pi+", "Xi_c~0 -> Xi~+ pi-"])
-        used_xim = self.xim_lmd0pim_DD
-        if "LL" in lmd:
-            used_xim = self.xim_lmd0pim_LL
-        else:
-            pass
-        return Selection(
-            'Xic02XimPip' + lmd + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=used_xim + [self.pions])
-    
-    def _makeXic02Lambda0KmPip(self, lmd):
-        '''Makes Xi_c0 -> Lambda0 K- Pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
-        comboCuts = [
-            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 50, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 70, units)
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_c0 -> Lambda0 K- pi+", "Xi_c~0 -> Lambda~0 K+ pi-"])
-        return Selection(
-            'Xic02Lambda0KmPip' + lmd + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.lambda0[lmd] + [self.kaons] + [self.pions])
-		
-    def _makeXic02PKsKm(self, ks):
-        '''Makes Xi_c0 -> p Ks K- + cc'''
-        dm, units = LoKiCuts.cutValue(self.config_Xic0['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_c0') < %s*%s) " % (dm - 90, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_Xic0).code())
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config_Xic0).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config_Xic0).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c0') < %s*%s) " % (dm - 110, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_c0 -> p+ KS0 K-", "Xi_c~0 -> p~- KS0 K+"])
-        return Selection(
-            'Xic02PKsKm' + ks + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.ks[ks] + [self.protons, self.kaons])
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-
-class LooseLcBuilder(object):
-    '''Produces Loose Lambda_c baryons for the Beauty2Charm module.'''
-
-    def __init__(self, pions, kaons, protons, config):
-        self.pions = pions
-        self.kaons = kaons
-        self.protons = protons
-        self.config = config
-        self.pkpi = [self._makeLooseLc2pKpi()]
-        self.xic_pkpi = [self._makeLooseXic2pKpi()]
-        self.xic0_pkkpi = [self._makeLooseXic02pKKpi()]
-        self.omegac0_pkkpi = [self._makeLooseOmegac02pKKpi()]
-
-    def _makeLooseLc2pKpi(self):
-        '''Makes Lc -> p K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Lambda_c+') < %s*%s) " % (dm + 10, units),
-            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 2)",
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Lambda_c+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N3BodyDecays(
-            Combination12Cut=comboCuts12,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Lambda_c+ -> p+ K- pi+]cc"])
-        return Selection(
-            'LooseLc2PKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeLooseXic2pKpi(self):
-        '''Makes Xic -> p K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_c+') < %s*%s) " % (dm + 10, units),
-            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 2)",
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N3BodyDecays(
-            Combination12Cut=comboCuts12,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_c+ -> p+ K- pi+]cc"])
-        return Selection(
-            'LooseXic2PKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeLooseXic02pKKpi(self):
-        '''Makes Xic0 -> p K K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_c0') < %s*%s) " % (dm + 10, units),
-            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 3)",
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
-        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts123 = LoKiCuts.combine(comboCuts123)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_c0') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N4BodyDecays(
-            Combination12Cut=comboCuts12,
-            Combination123Cut=comboCuts123,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_c0 -> p+ K- K- pi+]cc"])
-        return Selection(
-            'LooseXic02PKKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-    def _makeLooseOmegac02pKKpi(self):
-        '''Makes Omegac0 -> p K K pi + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Omega_c0') < %s*%s) " % (dm + 10, units),
-            "(ANUM(MIPCHI2DV(PRIMARY)>4) >= 3)",
-            hasTopoChild()
-        ]
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts123 = [LoKiCuts(['ADOCA13'], self.config).code()]
-        comboCuts123.append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA14'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA24'], self.config).code())
-        comboCuts.append(LoKiCuts(['ADOCA34'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts123 = LoKiCuts.combine(comboCuts123)
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Omega_c0') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = DaVinci__N4BodyDecays(
-            Combination12Cut=comboCuts12,
-            Combination123Cut=comboCuts123,
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Omega_c0 -> p+ K- K- pi+]cc"])
-        return Selection(
-            'LooseOmegac02PKKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=[self.pions, self.kaons, self.protons])
-
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-class LcstarBuilder(object):
-    '''Produces Lambda_c star baryons for the Beauty2Charm module'''
-    def __init__(self, lc, pions, config):
-        self.lc = lc.pkpi
-        self.pions = pions
-        self.config = config
-        self.lcstar2595 = [self._makeLcstar2Lcpipi("Lcstar2595")]
-        self.lcstar2625 = [self._makeLcstar2Lcpipi("Lcstar2625")]
-
-    def _makeLcstar2Lcpipi(self, mode):
-        '''Makes Lambda_c(2595)+ -> Lambda_c+ pi+ pi-'''
-        '''Makes Lambda_c(2625)+ -> Lambda_c+ pi+ pi-'''
-        decays = {
-            "Lcstar2595" : "[Lambda_c(2595)+ -> Lambda_c+ pi+ pi-]cc",
-            "Lcstar2625" : "[Lambda_c(2625)+ -> Lambda_c+ pi+ pi-]cc",
-        }
-        inputs = {
-            "Lcstar2595" : self.lc+[self.pions],
-            "Lcstar2625" : self.lc+[self.pions],
-        }
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = {
-            "Lcstar2595":[
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Lambda_c(2595)+') < %s*%s) " % (dm + 10, units),],
-            "Lcstar2625":[
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Lambda_c(2625)+') < %s*%s) " % (dm + 10, units),],
-        }
-        comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()]
-        comboCuts[mode].append(LoKiCuts(['ADOCA13'], self.config).code())
-        comboCuts[mode].append(LoKiCuts(['ADOCA23'], self.config).code())
-        comboCuts12 = LoKiCuts.combine(comboCuts12)
-        comboCuts[mode] = LoKiCuts.combine(comboCuts[mode])
-        momCuts = {
-            "Lcstar2595": [
-            "(ADMASS('Lambda_c(2595)+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()],
-            "Lcstar2625": [
-            "(ADMASS('Lambda_c(2625)+') < %s*%s) " % (dm, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()],
-        }
-        momCuts[mode] = LoKiCuts.combine(momCuts[mode])
-        cp = DaVinci__N3BodyDecays(
-            Combination12Cut=comboCuts12,
-            CombinationCut=comboCuts[mode],
-            MotherCut=momCuts[mode],
-            DecayDescriptors=[decays[mode]])
-        return Selection(
-            "Lc2%sBeauty2Charm" % mode,
-            Algorithm=cp,
-            RequiredSelections=inputs[mode])
-
-class XiccBuilder(object):
-    '''Produces Xi_cc baryons for the Beauty2Charm module.'''
-
-    def __init__(self, lc, pions, config):
-        self.lc = lc.pkpi
-        self.pions = pions
-        self.config = config
-        self.xic = lc.xic_pkpi
-        self.xic0 = lc.xic0_pkkpi
-        self.xiccpp = [self._makeXiccpp2Xicpi()]
-        self.xiccp = [self._makeXiccp2Xic0pi()]
-        self.sigmacpp = [self._makeSigmacpp2LcPi()]
-
-    def _makeXiccpp2Xicpi(self):
-        '''Makes Xi_cc++-> Xi_c+ pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_cc++') < %s*%s) " % (dm + 410, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_cc++') < %s*%s) " % (dm + 400, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_cc++ -> Xi_c+ pi+]cc"])
-        return Selection(
-            'Xiccpp2XicPiXic2PKPiPBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.xic + [self.pions])
-
-    def _makeXiccp2Xic0pi(self):
-        '''Makes Xi_cc+ -> Xi_c0 pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_cc+ -> Xi_c0 pi+]cc"])
-        return Selection(
-            'Xiccp2Xic0PiXic02PKKPiPBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.xic0 + [self.pions])
-
-    def _makeSigmacpp2LcPi(self):
-        '''Makes Sigma_c++-> Lc+ pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Sigma_c++') < %s*%s) " % (dm + 150, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Sigma_c++') < %s*%s) " % (dm + 120, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Sigma_c++ -> Lambda_c+ pi+]cc"])
-        return Selection(
-            'Sigmacpp2LcPiLc2PKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.lc + [self.pions])
-
+import re
+from Gaudi.Configuration import *
+from GaudiConfUtils.ConfigurableGenerators import FilterDesktop
+from PhysSelPython.Wrappers import Selection, DataOnDemand, MergedSelection
+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,
+                               StdLooseMuons, StdNoPIDsUpKaons,
+                               StdLooseResolvedPi0, StdLooseMergedPi0)
+from StandardParticles import StdLooseAllPhotons, StdVeryLooseAllPhotons
+from Beauty2Charm_DBuilder import *
+from Beauty2Charm_HHBuilder import *
+from Beauty2Charm_HHHBuilder import *
+from Beauty2Charm_B2DXBuilder import *
+from Beauty2Charm_Lb2XBuilder import *
+from Beauty2Charm_LTUnbiased import *
+from Beauty2Charm_Bc2DDBuilder import *
+from Beauty2Charm_Bc2BXBuilder import *
+from Beauty2Charm_Bc2DXBuilder import *
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-
-class LooseXiccBuilder(object):
-    '''Produces Xi_cc baryons for the Beauty2Charm module.'''
-
-    def __init__(self, lc, pions, kaons, config):
-        self.lc = lc.pkpi
-        self.pions = pions
-        self.kaons = kaons
-        self.config = config
-        self.xic = lc.xic_pkpi
-        self.xic0 = lc.xic0_pkkpi
-        self.xiccpp = [self._makeLooseXiccpp2Xicpi()]
-        self.xiccpp2lck2pi = [self._makeLooseXiccpp2LcK2Pi()]
-        self.xiccp = [self._makeLooseXiccp2Xic0pi()]
-
-    def _makeLooseXiccpp2Xicpi(self):
-        '''Makes Xi_cc++-> Xi_c+ pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_cc++') < %s*%s) " % (dm + 410, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_cc++') < %s*%s) " % (dm + 400, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_cc++ -> Xi_c+ pi+]cc"])
-        return Selection(
-            'LooseXiccpp2XicPiXic2PKPiPBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.xic + [self.pions])
-
-    def _makeLooseXiccp2Xic0pi(self):
-        '''Makes Xi_cc+ -> Xi_c0 pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_cc+ -> Xi_c0 pi+]cc"])
-        return Selection(
-            'LooseXiccp2Xic0PiXic02PKKPiPBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.xic0 + [self.pions])
-
-    def _makeLooseXiccpp2LcK2Pi(self):
-        '''Makes Xi_cc++ -> Lambda_c+ K- pi+ pi+ + cc'''
-        dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW'])
-        comboCuts = [
-            LoKiCuts(['ASUMPT'], self.config).code(),
-            "(ADAMASS('Xi_cc+') < %s*%s) " % (dm + 410, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_cc+') < %s*%s) " % (dm + 400, units),
-            LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
+# Default configuration dictionary
+default_config = {
+    'NAME': 'Beauty2Charm',
+    'BUILDERTYPE': 'Beauty2CharmConf',
+    'CONFIG': {
+        "ALL":
+        {  # Cuts made on all charged input particles in all lines (expt. upstream)
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'TRGHP_MAX': 0.4
+        },
+        "PIDPION": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDK_MAX': 20.,
+            'TRGHP_MAX': 0.4
+        },
+        "PIDKAON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDK_MIN': -10.,
+            'TRGHP_MAX': 0.4
+        },
+        "PIDPROTON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDp_MIN': -10.,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xc_PION": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 1.0,
+            'PIDK_MAX': 10.,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xc_KAON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '150*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 1.0,
+            'PIDK_MIN': -5.0,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xc_PROTON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '400*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 1.0,
+            'PIDp_MIN': -5.0,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xb_PION": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '300*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDK_MAX': 10.,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xb_KAON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '300*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDK_MIN': -5.0,
+            'TRGHP_MAX': 0.4
+        },
+        "Xibc_Xb_PROTON": {
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '300*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.,
+            'PIDp_MIN': -5.0,
+            'TRGHP_MAX': 0.4
+        },
+        "UPSTREAM": {  # Cuts made on all upstream particles
+            'TRCHI2DOF_MAX': 4.,
+            'PT_MIN': '100*MeV',
+            'P_MIN': '1000*MeV',
+            'MIPCHI2DV_MIN': 4.
+        },
+        "KS0": {  # Cuts made on all K shorts
+            'PT_MIN': '250*MeV',
+            'BPVVDCHI2_MIN': 36,
+            'MM_MIN': '467.*MeV',
+            'MM_MAX': '527.*MeV'
+        },
+        "VLKS0_LL": {  # cuts for StdVeryLooseKsLL
+            'PT_MIN': '0*MeV',
+            'BPVVDCHI2_MIN': 36,
+            'MM_MIN': '467.*MeV',
+            'MM_MAX': '527.*MeV'
+        },
+        "Lambda0": {  # Cuts made on all Lambda0's
+            'PT_MIN': '250*MeV',
+            'BPVVDCHI2_MIN': 36,
+            'MM_MIN': '1086.*MeV',
+            'MM_MAX': '1146.*MeV'
+        },
+        "Pi0": {  # Cuts made on all pi0's
+            'PT_MIN': '500*MeV',
+            'P_MIN': '1000*MeV',
+            'CHILDCL1_MIN': 0.25,
+            'CHILDCL2_MIN': 0.25,
+            'FROM_B_P_MIN': '2000*MeV',
+            'TIGHT_PT_MIN': '1500*MeV'
+        },
+        "gamma": {  # Cuts made on all photons
+            'PT_MIN': '400*MeV',
+            'CL_MIN': 0.25,
+            'ISNOTE_MIN': -999.0,
+            'PT_VLAPH': '145*MeV'
+        },
+				"Xim": {  # Cuts made on charged Xi baryon
+            'ASUMPT_MIN': '1000*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 25,
+            'BPVVDCHI2_MIN': 50,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '100*MeV'
+        },
+				"Xic0": {  # Cuts made on charged Xic0 baryon
+            'ASUMPT_MIN': '1000*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'ADOCA13_MAX': '0.5*mm',
+            'ADOCA23_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 20,
+            'BPVVDCHI2_MIN': 30,
+            'BPVDIRA_MIN': 0.9,
+            'MASS_WINDOW': '200*MeV'
+        },
+				"Xibm": {  # Cuts made on charged Xibm baryon
+            'ASUMPT_MIN': '1000*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 20,
+            'BPVVDCHI2_MIN': 30,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '200*MeV'
+        },
+				"D2X": {  # Cuts made on all D's and Lc's used in all lines
+            'ASUMPT_MIN': '1800*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'ADOCA13_MAX': '0.5*mm',
+            'ADOCA23_MAX': '0.5*mm',
+            'ADOCA14_MAX': '0.5*mm',
+            'ADOCA24_MAX': '0.5*mm',
+            'ADOCA34_MAX': '0.5*mm',
+            'ADOCA15_MAX': '0.5*mm',
+            'ADOCA25_MAX': '0.5*mm',
+            'ADOCA35_MAX': '0.5*mm',
+            'ADOCA45_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 10,
+            'BPVVDCHI2_MIN': 36,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '100*MeV'
+        },
+        "LC_FOR_XIBC": {  # Cuts made on Lc's/Xic(0) used in Xibc lines
+            'ASUMPT_MIN': '1800*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'ADOCA13_MAX': '0.5*mm',
+            'ADOCA23_MAX': '0.5*mm',
+            'ADOCA14_MAX': '0.5*mm',
+            'ADOCA24_MAX': '0.5*mm',
+            'ADOCA34_MAX': '0.5*mm',
+            'ADOCA15_MAX': '0.5*mm',
+            'ADOCA25_MAX': '0.5*mm',
+            'ADOCA35_MAX': '0.5*mm',
+            'ADOCA45_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 8,
+            'BPVVDCHI2_MIN': 36,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '50*MeV'
+        },
+        "D2X_FOR_DDX": {  # Cuts made on all D's and Lc's used in B->DDX lines
+            'ASUMPT_MIN': '1800*MeV',
+            'ADOCA12_MAX': '0.5*mm',
+            'ADOCA13_MAX': '0.5*mm',
+            'ADOCA23_MAX': '0.5*mm',
+            'ADOCA14_MAX': '0.5*mm',
+            'ADOCA24_MAX': '0.5*mm',
+            'ADOCA34_MAX': '0.5*mm',
+            'ADOCA15_MAX': '0.5*mm',
+            'ADOCA25_MAX': '0.5*mm',
+            'ADOCA35_MAX': '0.5*mm',
+            'ADOCA45_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 8,
+            'BPVVDCHI2_MIN': 50,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '100*MeV'
+        },
+        "B2X": {  # Cuts made on all B's and Lb's used in all lines
+            'SUMPT_MIN': '5000*MeV',
+            'VCHI2DOF_MAX': 10,
+            'BPVIPCHI2_MAX': 25,
+            'BPVLTIME_MIN': '0.2*ps',
+            'BPVDIRA_MIN': 0.999,
+            'AM_MIN': '4750*MeV',  # Lb->X sets this to 5200*MeV
+            'AM_MAX': '7000*MeV',  # B->Dh+-h0 sets this to 5800*MeV
+            'B2CBBDT_MIN': 0.05
+        },
+        "Bc2DD": {  # Cuts made on Bc -> DD lines
+            'SUMPT_MIN': '5000*MeV',
+            'VCHI2DOF_MAX': 10,
+            'BPVIPCHI2_MAX': 20,
+            'BPVLTIME_MIN': '0.05*ps',
+            'BPVDIRA_MIN': 0.999,
+            'AM_MIN': '4800*MeV',
+            'AM_MAX': '6800*MeV',
+            'B2CBBDT_MIN': -999.9
+        },
+        "Xibc": {  # Cuts made on Xibc -> Xc hh, LcD0, Xicc h lines
+            'SUMPT_MIN': '5000*MeV',
+            'VCHI2DOF_MAX': 8,
+            'BPVIPCHI2_MAX': 20,
+            'BPVLTIME_MIN': '0.05*ps',
+            'BPVDIRA_MIN': 0.99,
+            'AM_MIN': '5500*MeV',
+            'AM_MAX': '9000*MeV',
+            'B2CBBDT_MIN': -999.9
+        },
+        "XiccMu": {  # Cuts made on Xibc -> Xc hh, LcD0, Xicc h lines
+            'SUMPT_MIN': '4000*MeV',
+            'VCHI2DOF_MAX': 10,
+            'BPVIPCHI2_MAX': 200,
+            'BPVLTIME_MIN': '0.0*ps',
+            'BPVDIRA_MIN': 0.99,
+            'AM_MIN': '3000*MeV',
+            'AM_MAX': '8000*MeV',
+            'B2CBBDT_MIN': -999.9
+        },
+        "Bc2BX": {  # Cuts made on Bc -> BHH lines
+            'SUMPT_MIN': '1000*MeV',
+            'VCHI2DOF_MAX': 10,
+            'BPVIPCHI2_MAX': 25,
+            'BPVLTIME_MIN': '0.05*ps',
+            'BPVDIRA_MIN': 0.999,
+            'AM_MIN': '6000*MeV',
+            'AM_MAX': '7200*MeV',
+            'DZ1_MIN': '-1.5*mm',
+            'B2CBBDT_MIN': -999.9
+        },
+        "Bc2DX": {  # Cuts made on Bc -> DX lines
+            'SUMPT_MIN': '5000*MeV',
+            'VCHI2DOF_MAX': 10,
+            'BPVIPCHI2_MAX': 25,
+            'BPVLTIME_MIN': '0.05*ps',
+            'BPVDIRA_MIN': 0.999,
+            'AM_MIN': '5800*MeV',
+            'AM_MAX': '6800*MeV',
+            'B2CBBDT_MIN': -999.9
+        },
+        "Dstar": {  # Cuts made on all D*'s used in all lines
+            'ADOCA12_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 10,
+            'BPVVDCHI2_MIN': 36,
+            'BPVDIRA_MIN': 0,
+            'MASS_WINDOW': '600*MeV',  # was 50MeV
+            'DELTAMASS_MAX': '200*MeV',
+            'DELTAMASSLOOSE_MAX': '250*MeV',
+            'DM_DSPH_MAX': '250*MeV',
+            'DM_DSPH_MIN': '80*MeV'
+        },
+        "HH": {  # Cuts for rho, K*, phi, XHH Dalitz analyese, etc.
+            'MASS_WINDOW': {
+                'KST': '150*MeV',
+                'RHO': '150*MeV',
+                'PHI': '150*MeV'
+            },
+            'DAUGHTERS': {
+                'PT_MIN': '100*MeV',
+                'P_MIN': '2000*MeV'
+            },
+            'ADOCA12_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 16,
+            'BPVVDCHI2_MIN': 16,
+            'BPVDIRA_MIN': 0,
+            'ASUMPT_MIN': '1000*MeV',
+            'pP_MIN': '5000*MeV'  # for pH only (obviously)
+        },
+        "HHH": {  # Cuts for PiPiPi, KPiPi analyese, etc.
+            'MASS_WINDOW': {
+                'A1': '3500*MeV',
+                'K1': '4000*MeV',
+                'PPH': '3600*MeV',
+                'PHH': '4000*MeV'
+            },
+            'KDAUGHTERS': {
+                'PT_MIN': '100*MeV',
+                'P_MIN': '2000*MeV',
+                'PIDK_MIN': '-2'
+            },
+            'PiDAUGHTERS': {
+                'PT_MIN': '100*MeV',
+                'P_MIN': '2000*MeV',
+                'PIDK_MAX': '10'
+            },
+            'pDAUGHTERS': {
+                'PT_MIN': '100*MeV',
+                'P_MIN': '2000*MeV',
+                'PIDp_MIN': '-2'
+            },
+            'ADOCA12_MAX': '0.40*mm',
+            'ADOCA13_MAX': '0.40*mm',
+            'ADOCA23_MAX': '0.40*mm',
+            'ADOCA14_MAX': '0.40*mm',
+            'ADOCA24_MAX': '0.40*mm',
+            'ADOCA34_MAX': '0.40*mm',
+            'VCHI2DOF_MAX': 8,
+            'BPVVDCHI2_MIN': 16,
+            'BPVDIRA_MIN': 0.98,
+            'ASUMPT_MIN': '1250*MeV',
+            'MIPCHI2DV_MIN': 0.0,
+            'BPVVDRHO_MIN': '0.1*mm',
+            'BPVVDZ_MIN': '2.0*mm',
+            'PTMIN1': '300*MeV',
+            'PID': {
+                'TIGHTERPI': {
+                    'P': {
+                        'PIDp_MIN': -10
+                    },
+                    'PI': {
+                        'PIDK_MAX': 8
+                    },
+                    'K': {
+                        'PIDK_MIN': -10
+                    }
+                },
+                'REALTIGHTK': {
+                    'P': {
+                        'PIDp_MIN': -10
+                    },
+                    'PI': {
+                        'PIDK_MAX': 10
+                    },
+                    'K': {
+                        'PIDK_MIN': 4
+                    }
+                }
+            }
+        },
+        'PID': {
+            'P': {
+                'PIDp_MIN': -10
+            },
+            'PI': {
+                'PIDK_MAX': 20
+            },
+            'K': {
+                'PIDK_MIN': -10
+            },
+            'TIGHT': {
+                'P': {
+                    'PIDp_MIN': -5
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': -5
+                }
+            },
+            'TIGHTER': {
+                'P': {
+                    'PIDp_MIN': 0
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': 0
+                }
+            },
+            'TIGHTPI': {
+                'P': {
+                    'PIDp_MIN': -10
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': -10
+                }
+            },
+            'TIGHTER1': {
+                'P': {
+                    'PIDp_MIN': 0
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': -1
+                }
+            },
+            'TIGHTER2': {
+                'P': {
+                    'PIDp_MIN': 5
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': 0
+                }
+            },
+            'TIGHTER3': {
+                'P': {
+                    'PIDp_MIN': 0
+                },
+                'PI': {
+                    'PIDK_MAX': 10
+                },
+                'K': {
+                    'PIDK_MIN': -10
+                }
+            },
+            'SPECIAL': {
+                'P': {
+                    'PIDp_MIN': -5
+                },
+                'PI': {
+                    'PIDK_MAX': 5
+                },
+                'K': {
+                    'PIDK_MIN': 5
+                }
+            },
+            'SPECIALPI': {
+                'P': {
+                    'PIDp_MIN': -10
+                },
+                'PI': {
+                    'PIDK_MAX': 12
+                },
+                'K': {
+                    'PIDK_MIN': -10
+                }
+            }
+        },
+        'FlavourTagging': [
+            'B02DstarMuNuDst2D0Pi_D2HHHHBeauty2CharmLine',
+            'B02DstarMuNuWSDst2D0Pi_D2HHHHBeauty2CharmLine',
+            'B02DstarMuNuDst2D0Pi_D2HHHHWSBeauty2CharmLine',
+            'B02DstarMuNuWSDst2D0Pi_D2HHHHWSBeauty2CharmLine',
+            'B2D0PiPiPiD2HHPIDBeauty2CharmLine',
+            'B02DKD2Pi0HHHMergedBeauty2CharmLine',
+            'B02DKD2Pi0HHHResolvedBeauty2CharmLine',
+            'B02DPiD2Pi0HHHMergedBeauty2CharmLine',
+            'B02DPiD2Pi0HHHResolvedBeauty2CharmLine',
+            'B02D0KKD2HHBeauty2CharmLine',
+            'B02D0KPiD2HHBeauty2CharmLine',
+            'B02DHHWSD2HHBeauty2CharmLine',
+            'B02D0PPbarD2HHBeauty2CharmLine',
+            'B02D0PPbarWSD2HHBeauty2CharmLine',
+            'B02D0KKD2HHWSBeauty2CharmLine',
+            'B02D0PiPiD2HHWSBeauty2CharmLine',
+            'B02D0KPiD2HHWSBeauty2CharmLine',
+            'B02DHHWSD2HHWSBeauty2CharmLine',
+            'B02D0KSDDD2HHBeauty2CharmLine',
+            'B02D0KSLLD2HHBeauty2CharmLine',
+            'B02DKD2PhiMuNuBeauty2CharmLine',
+            'B02DPiD2PhiMuNuBeauty2CharmLine',
+            'B02DKWSD2PhiMuNuBeauty2CharmLine',
+            'B02DPiWSD2PhiMuNuBeauty2CharmLine',
+            #'B02DKD2HHHBeauty2CharmLine',
+            #'B02DPiD2HHHBeauty2CharmLine',
+            #'B02DKWSD2HHHBeauty2CharmLine',
+            #'B02DPiWSD2HHHBeauty2CharmLine',
+            'B02DKD2HHHUPBeauty2CharmLine',
+            #'B02DPiD2HHHUPBeauty2CharmLine',
+            #'B02DKWSD2HHHUPBeauty2CharmLine',
+            #'B02DPiWSD2HHHUPBeauty2CharmLine',
+            #'B02DPiNoIPD2HHHCFPIDBeauty2CharmLine',
+            'B02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine',
+            #'B02DPiNoIPDs2HHHPIDBeauty2CharmLine',
+            'B02DPiWSNoIPDs2HHHPIDBeauty2CharmLine',
+            'B02DKsKDDD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsKLLD2HHHCFPIDBeauty2CharmLine',
+            #'B02DKPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsPiDDD2HHHCFPIDBeauty2CharmLine',
+            #'B02DPiPi0MergedD2HHHCFPIDBeauty2CharmLine',
+            #'B02DKPi0MergedD2HHHCFPIDBeauty2CharmLine',
+            'B02DPiPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsPiLLD2HHHCFPIDBeauty2CharmLine',
+            #'B02DKPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsPiDDWSD2HHHCFPIDBeauty2CharmLine',
+            #'B02DKPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
+            #'B02DPiPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsPiLLWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DPiPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsKLLWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DKsKDDWSD2HHHCFPIDBeauty2CharmLine',
+            'B02DRhoPMD2HHHCFPIDBeauty2CharmLine',
+            'B02DKstarPMD2HHHCFPIDBeauty2CharmLine',
+            'B02DKD2KSHLLBeauty2CharmLine',
+            'B02DPiD2KSHLLBeauty2CharmLine',
+            'B02DKWSD2KSHLLBeauty2CharmLine',
+            'B02DPiWSD2KSHLLBeauty2CharmLine',
+            'B02DKD2KSHDDBeauty2CharmLine',
+            'B02DPiD2KSHDDBeauty2CharmLine',
+            'B02DKWSD2KSHDDBeauty2CharmLine',
+            'B02DPiWSD2KSHDDBeauty2CharmLine',
+            #'B02D0KKD2KSHHLLBeauty2CharmLine',
+            #'B02D0PiPiD2KSHHLLBeauty2CharmLine',
+            'B02D0KPiD2KSHHLLBeauty2CharmLine',
+            'B02DHHWSD2KSHHLLBeauty2CharmLine',
+            #'B02D0KKD2KSHHDDBeauty2CharmLine',
+            #'B02D0PiPiD2KSHHDDBeauty2CharmLine',
+            'B02D0KPiD2KSHHDDBeauty2CharmLine',
+            'B02DHHWSD2KSHHDDBeauty2CharmLine',
+            #'B02D0KKD2KSHHLLWSBeauty2CharmLine',
+            #'B02D0PiPiD2KSHHLLWSBeauty2CharmLine',
+            'B02D0KPiD2KSHHLLWSBeauty2CharmLine',
+            'B02DHHWSD2KSHHLLWSBeauty2CharmLine',
+            #'B02D0KKD2KSHHDDWSBeauty2CharmLine',
+            #'B02D0PiPiD2KSHHDDWSBeauty2CharmLine',
+            'B02D0KPiD2KSHHDDWSBeauty2CharmLine',
+            'B02DHHWSD2KSHHDDWSBeauty2CharmLine',
+            #'B02DstarKDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            #'B02DstarPiDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            #'B02DstarKDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            #'B02DstarPiDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            #'B02DstarKDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            #'B02DstarPiDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            #'B02DstarKDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            #'B02DstarPiDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'B02DstarKDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'B02DstarPiDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'B02DstarKDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'B02DstarPiDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            #'B02DstarMuNuDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            #'B02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'B02DstarMuNuDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'B02DstarMuNuWSDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'B02DstarMuNuDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'B02DstarMuNuWSDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'B02DstarKsPiDDDst2D0PiBeauty2CharmLine',
+            'B02DstarKsKDDDst2D0PiBeauty2CharmLine',
+            'B02DstarKsKLLDst2D0PiBeauty2CharmLine',
+            'B02DstarKsPiLLDst2D0PiBeauty2CharmLine',
+            'B02DstarKsKDDWSDst2D0PiBeauty2CharmLine',
+            'B02DstarKsKLLWSDst2D0PiBeauty2CharmLine',
+            'B02DstarKsPiDDWSDst2D0PiBeauty2CharmLine',
+            'B02DstarKsPiLLWSDst2D0PiBeauty2CharmLine',
+            'B02D0KKD2HHHHBeauty2CharmLine',
+            'B02D0PiPiD2HHHHBeauty2CharmLine',
+            'B02D0KPiD2HHHHBeauty2CharmLine',
+            'B02DHHWSD2HHHHBeauty2CharmLine',
+            'B02D0KKD2HHHHWSBeauty2CharmLine',
+            'B02D0PiPiD2HHHHWSBeauty2CharmLine',
+            'B02D0KPiD2HHHHWSBeauty2CharmLine',
+            'B02DHHWSD2HHHHWSBeauty2CharmLine',
+            'B02D0KSDDD2K3PiBeauty2CharmLine',
+            'B02D0KSLLD2K3PiBeauty2CharmLine',
+            'B02D0KKD2Pi0HHResolvedBeauty2CharmLine',
+            'B02D0PiPiD2Pi0HHResolvedBeauty2CharmLine',
+            'B02D0KPiD2Pi0HHResolvedBeauty2CharmLine',
+            'B02DHHWSD2Pi0HHResolvedBeauty2CharmLine',
+            'B02DKWSD2Pi0HHHResolvedBeauty2CharmLine',
+            'B02DPiWSD2Pi0HHHResolvedBeauty2CharmLine',
+            'B02DKWSD2Pi0HHHMergedBeauty2CharmLine',
+            'B02DPiWSD2Pi0HHHMergedBeauty2CharmLine',
+            'B02DKPiPiSSD2HHHPIDBeauty2CharmLine',
+            'B02DKKPiD2HHHPIDBeauty2CharmLine',
+            'B02DKPiPiSSWSD2HHHPIDBeauty2CharmLine',
+            'B02DKKPiWSD2HHHPIDBeauty2CharmLine',
+            'B02DKPiPiWSD2HHHPIDBeauty2CharmLine',
+            'B02DPiPiPiWSD2HHHPIDBeauty2CharmLine',
+            #'B02DppbarKD2HHHBeauty2CharmLine',
+            #'B02DppbarPiD2HHHBeauty2CharmLine',
+            'B02DstKKPiDstar2D0PiPIDBeauty2CharmLine',
+            'B02DstKPiPiDstar2D0PiPIDBeauty2CharmLine',
+            'B02DstPiPiPiDstar2D0PiPIDBeauty2CharmLine',
+            'B02DstPiPiPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'B02DstKPiPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'B02DstKKPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'B02DDWSBeauty2CharmLine',
+            'B02D0D0D02K3PiD02K3PiBeauty2CharmLine',
+            'B02D0D0D02HHD02K3PiBeauty2CharmLine',
+            'B02D0D0D02HHD02HHBeauty2CharmLine',
+            'B02DstDstWSBeauty2CharmLine',
+            'B02D0DKBeauty2CharmLine',
+            'B02D0DKD02K3PiBeauty2CharmLine',
+            'B02D0DKWSBeauty2CharmLine',
+            'B02D0DKWSD02K3PiBeauty2CharmLine',
+            'B02DstD0KBeauty2CharmLine',
+            'B02DstD0KD02K3PiBeauty2CharmLine',
+            'B02DstD0KDstarD02K3PiBeauty2CharmLine',
+            #'B02DstD0KDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'B02DstD0KWSBeauty2CharmLine',
+            'B02DstD0KWSD02K3PiBeauty2CharmLine',
+            'B02DstD0KWSDstarD02K3PiBeauty2CharmLine',
+            'B02DstD0KWSDstarD02K3PiD02K3PiBeauty2CharmLine',
+            #'B02D0D0KstD02K3PiD02K3PiBeauty2CharmLine',
+            'B02D0D0KstD02HHD02HHBeauty2CharmLine',
+            #'B02D0D0KstD02HHD02K3PiBeauty2CharmLine',
+            #'B02DDKstBeauty2CharmLine',
+            #'B02DstDKstBeauty2CharmLine',
+            #'B02DstDKstDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKstBeauty2CharmLine',
+            'B02DstDstKstDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKstDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'B02DDKSDDBeauty2CharmLine',
+            'B02DDKSWSDDBeauty2CharmLine',
+            'B02DstDKSDDBeauty2CharmLine',
+            'B02DstDKSDDDstarD02K3PiBeauty2CharmLine',
+            'B02DstDKSWSDDBeauty2CharmLine',
+            'B02DstDKSWSDDDstarD02K3PiBeauty2CharmLine',
+            'B02D0D0KSD02K3PiD02K3PiDDBeauty2CharmLine',
+            'B02D0D0KSD02HHD02HHDDBeauty2CharmLine',
+            'B02D0D0KSD02HHD02K3PiDDBeauty2CharmLine',
+            'B02DstDstKSDDBeauty2CharmLine',
+            'B02DstDstKSDDDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSWSDDBeauty2CharmLine',
+            'B02DstDstKSWSDDDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSWSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'B02DDKSLLBeauty2CharmLine',
+            'B02DDKSWSLLBeauty2CharmLine',
+            'B02DstDKSLLBeauty2CharmLine',
+            'B02DstDKSLLDstarD02K3PiBeauty2CharmLine',
+            'B02DstDKSWSLLBeauty2CharmLine',
+            'B02DstDKSWSLLDstarD02K3PiBeauty2CharmLine',
+            'B02D0D0KSD02K3PiD02K3PiLLBeauty2CharmLine',
+            'B02D0D0KSD02HHD02HHLLBeauty2CharmLine',
+            'B02D0D0KSD02HHD02K3PiLLBeauty2CharmLine',
+            'B02DstDstKSLLBeauty2CharmLine',
+            'B02DstDstKSLLDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSWSLLBeauty2CharmLine',
+            'B02DstDstKSWSLLDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKSWSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            #'B02DDKKBeauty2CharmLine',
+            #'B02DstDKKBeauty2CharmLine',
+            #'B02DstDKKDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKKBeauty2CharmLine',
+            'B02DstDstKKDstarD02K3PiBeauty2CharmLine',
+            'B02DstDstKKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'B02LcpbarKKLc2PKPiBeauty2CharmLine',
+            'B02LcpbarpbarpLc2PKPiBeauty2CharmLine',
+            'B02LcpbarPiPiLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKPiLc2PKPiBeauty2CharmLine',
+            'B02LcpbarPiPiWSLc2PKPiBeauty2CharmLine',
+            'B02LcpbarpbarpWSLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKKWSLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKPiWSLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKSDDLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKSWSDDLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKSLLLc2PKPiBeauty2CharmLine',
+            'B02LcpbarKSWSLLLc2PKPiBeauty2CharmLine',
+            'B02LcLambda0KLc2PKPiBeauty2CharmLine',
+            'B02LcLambda0PiLc2PKPiBeauty2CharmLine',
+            'B02LcLambda0PiWSLc2PKPiBeauty2CharmLine',
+            'B02LcLambda0KWSLc2PKPiBeauty2CharmLine',
+            'B02DKLTUBD2HHHBeauty2CharmLine',
+            'B02DsKPiPiLTUBD2HHHBeauty2CharmLine',
+            'B02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine',
+            'B02Dst0DKDst02D0Pi0ResolvedD2HHHBeauty2CharmLine',
+            'B02Dst0DKDst02D0GammaD2HHHBeauty2CharmLine',
+            'B02DsstKsPiLLDsst2DGammaD2HHHBeauty2CharmLine',
+            'B02DsstKsPiDDDsst2DGammaD2HHHBeauty2CharmLine',
+            'B02D0MuMuD2HHBeauty2CharmLine',
+            'B02D0MuMuWSD2HHBeauty2CharmLine',
+            'B02D0MuMuD2HHHHBeauty2CharmLine',
+            'B02D0MuMuWSD2HHHHBeauty2CharmLine',
+            'B02D0MuMuD2KSHHLLBeauty2CharmLine',
+            'B02D0MuMuWSD2KSHHLLBeauty2CharmLine',
+            'B02D0MuMuD2KSHHDDBeauty2CharmLine',
+            'B02D0MuMuWSD2KSHHDDBeauty2CharmLine'
+        ],
+        'RawEvents': [
+            'B02DKD2HHHBeauty2CharmLine', 'B02DPiD2HHHBeauty2CharmLine',
+            'B02DsstarPiDsstar2DGammaD2HHHBeauty2CharmLine',
+            'B02DsstarKDsstar2DGammaD2HHHBeauty2CharmLine',
+            'B02DsstarKMCwNoPIDDsstar2DGammaD2HHHBeauty2CharmLine'
+        ],
+        'MDSTChannels': [],
+        'RelatedInfoTools': [
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.5,
+                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
+                "Location": 'P2ConeVar1'
+            },
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.7,
+                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
+                "Location": 'P2ConeVar2'
+            },
+            {
+                "Type": "RelInfoConeVariables",
+                "ConeAngle": 1.0,
+                "Variables": ['CONEANGLE', 'CONEMULT', 'CONEPTASYM'],
+                "Location": 'P2ConeVar3'
+            },
+        ],
+        "Prescales": {  # Prescales for individual lines
+            'RUN_BY_DEFAULT': True,  # False = lines off by default
+            'RUN_RE': ['.*'],
+            # Defaults are defined in, eg, Beauty2Charm_B2DXBuilder.py.  Put the full
+            # line name here to override. E.g. 'B2D0HD2HHBeauty2CharmTOSLine': 0.5.
+            'B02DKLTUBD2HHHBeauty2CharmLine': 0.04,
+            'B02DsKPiPiLTUBD2HHHBeauty2CharmLine': 0.004,
+            'B02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine': 0.19,
+            'B02DKWSD2HHHBeauty2CharmLine': 1.0,
+            'B02DPiWSD2HHHBeauty2CharmLine': 1.0,
+            'B02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine': 1.0,
+            'B02DPiWSNoIPDs2HHHPIDBeauty2CharmLine': 1.0,
+            'B02DPiPiPiWSD2HHHPIDBeauty2CharmLine': 1.0,
+            'B02DKPiPiWSD2HHHPIDBeauty2CharmLine': 1.0,
+            'B2Dstar0PiDst02D0Pi0D2KSHHLLWSBeauty2CharmLine': 0.1,
+            'B2Dstar0PiDst02D0Pi0D2KSHHDDWSBeauty2CharmLine': 0.1,
+            'B2Dstar0PiDst02D0GammaD2KSHHLLWSBeauty2CharmLine': 0.1,
+            'B2Dstar0PiDst02D0GammaD2KSHHDDWSBeauty2CharmLine': 0.1,
+            'B2Dstar0KDst02D0Pi0D2KSHHLLWSBeauty2CharmLine': 0.1,
+            'B2Dstar0KDst02D0Pi0D2KSHHDDWSBeauty2CharmLine': 0.1,
+            'B2Dstar0KDst02D0GammaD2KSHHLLWSBeauty2CharmLine': 0.1,
+            'B2Dstar0KDst02D0GammaD2KSHHDDWSBeauty2CharmLine': 0.1
+        },
+        'GECNTrkMax':
+        500
+    },
+    'STREAMS': {
+        'BhadronCompleteEvent': [
+            'StrippingB02DKD2HHHBeauty2CharmLine',
+            'StrippingB02DPiD2HHHBeauty2CharmLine',
+            'StrippingB2D0KD2HHBeauty2CharmLine',
+            'StrippingB2D0PiD2HHBeauty2CharmLine',
+            'StrippingB2D0PiNoIPD2KPIPIDBeauty2CharmLine',
+            'StrippingB02DPiNoIPD2HHHCFPIDBeauty2CharmLine',
+            'StrippingLb2XicPiNoIPXic2PKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiNoIPXic02PKKPiBeauty2CharmLine',
+            'StrippingLb2LcPiNoIPLc2PKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0PiNoIPOmegac02PKKPiBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2HHTIGHTBeauty2CharmLine',
+            'StrippingB2D0PiD2HHHHTIGHTBeauty2CharmLine',
+            'StrippingB02DsstarPiDsstar2DGammaD2HHHBeauty2CharmLine',
+            'StrippingB02DsstarKDsstar2DGammaD2HHHBeauty2CharmLine',
+            'StrippingB02DsstarKMCwNoPIDDsstar2DGammaD2HHHBeauty2CharmLine',
+            'StrippingB02DDBeauty2CharmLine', 'StrippingB2D0DBeauty2CharmLine',
+            'StrippingB02DstDBeauty2CharmLine',
+            'StrippingB02DstDD02K3PiBeauty2CharmLine',
+            'StrippingB02D0PiPiD2HHBeauty2CharmLine',
+            'StrippingB02DstDstBeauty2CharmLine',
+            'StrippingB02DKPiPiD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DPiPiPiD2HHHPIDBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHLLPartialDBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHDDPartialDBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHLLPartialDBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHDDPartialDBeauty2CharmLine',
+            'StrippingB02D0KKDSTD2HHBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiLc2PKPiFullDSTBeauty2CharmLine',
+            'StrippingXib02XicPiPiPiXic2PKPiFullDSTBeauty2CharmLine',
+            'StrippingXib2Xic0PiPiPiXic02PKKPiFullDSTBeauty2CharmLine',
+            'StrippingOmegab2Omegac0PiPiPiOmegac02PKKPiFullDSTBeauty2CharmLine'
+        ],
+        'Bhadron': [
+						'StrippingB2Dstar0KDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2HHHHBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2HHHHBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB2D0PiD2HHmuDSTBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2HHWSBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2HHWSBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2KSHHDDWSBeauty2CharmLine',
+            'StrippingUpsilon2BBBeauty2CharmLine',
+            'StrippingBc2BPiPiB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BPiPiWSB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BPiKB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BPiKWSB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BKPiB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BKKB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BKKWSB2D0HD02HHBeauty2CharmLine',
+            'StrippingBc2BPiPiB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BPiPiWSB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BPiKB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BPiKWSB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BKPiB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BKKB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BKKWSB2D0HD02HHHHBeauty2CharmLine',
+            'StrippingBc2BPiPiB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BPiPiWSB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BPiKB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BPiKWSB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BKPiB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BKKB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BKKWSB2DHHD2HHHCFPIDBeauty2CharmLine',
+            'StrippingBc2BPiPiB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BPiPiWSB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BPiKB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BPiKWSB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BKPiB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BKKB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BKKWSB2D0HHHD02HHPIDBeauty2CharmLine',
+            'StrippingBc2BPiPiB2D0DBeauty2CharmLine',
+            'StrippingBc2BPiPiWSB2D0DBeauty2CharmLine',
+            'StrippingBc2BPiKB2D0DBeauty2CharmLine',
+            'StrippingBc2BPiKWSB2D0DBeauty2CharmLine',
+            'StrippingBc2BKPiB2D0DBeauty2CharmLine',
+            'StrippingBc2BKKB2D0DBeauty2CharmLine',
+            'StrippingBc2BKKWSB2D0DBeauty2CharmLine',
+            'StrippingBc2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2D0KD02HHPIDBeauty2CharmLine',
+            'StrippingBc2D0KD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DPiPiD2HHHPIDBeauty2CharmLine',
+            'StrippingBc2DHHWSD2HHHPIDBeauty2CharmLine',
+            'StrippingBc2DHHNPD2HHHPIDBeauty2CharmLine',
+            'StrippingBc2DKPiD2HHHPIDBeauty2CharmLine',
+            'StrippingBc2DKKD2HHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarPiPiDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarHHWSDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarHHNPDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarKPiDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarKKDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarPiKDstar2D0PiD02HHPIDBeauty2CharmLine',
+            'StrippingBc2DstarPiPiDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarHHWSDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarHHNPDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarKPiDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarKKDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingBc2DstarPiKDstar2D0PiD02HHHHPIDBeauty2CharmLine',
+            'StrippingB2D0KD2HHWSBeauty2CharmLine',
+            'StrippingB2D0PiD2HHWSBeauty2CharmLine',
+            #'StrippingB2D0KD2HHUPBeauty2CharmLine',
+            'StrippingB2D0PiD2HHUPBeauty2CharmLine',
+            'StrippingB02DKWSD2HHHBeauty2CharmLine',
+            'StrippingB02DPiWSD2HHHBeauty2CharmLine',
+            'StrippingB02DPiNoIPDs2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKD2Pi0HHHMergedBeauty2CharmLine',
+            'StrippingB02DKD2Pi0HHHResolvedBeauty2CharmLine',
+            'StrippingB02DPiD2Pi0HHHMergedBeauty2CharmLine',
+            'StrippingB02DPiD2Pi0HHHResolvedBeauty2CharmLine',
+            'StrippingB02D0KKD2HHBeauty2CharmLine',
+            'StrippingB02D0KPiD2HHBeauty2CharmLine',
+            'StrippingB02DHHWSD2HHBeauty2CharmLine',
+            'StrippingB02D0PPbarD2HHBeauty2CharmLine',
+            'StrippingB02D0PPbarWSD2HHBeauty2CharmLine',
+            'StrippingB02D0KKD2HHWSBeauty2CharmLine',
+            'StrippingB02D0PiPiD2HHWSBeauty2CharmLine',
+            'StrippingB02D0KPiD2HHWSBeauty2CharmLine',
+            'StrippingB02DHHWSD2HHWSBeauty2CharmLine',
+            'StrippingB02D0KSDDD2HHBeauty2CharmLine',
+            'StrippingB02D0KSLLD2HHBeauty2CharmLine',
+            'StrippingB02Dst0PiPiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB02Dst0KPiDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB02Dst0KKDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB02Dst0HHWSDst02D0Pi0D2HHResolvedBeauty2CharmLine',
+            'StrippingB02Dst0PiPiDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB02Dst0KPiDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB02Dst0KKDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB02Dst0HHWSDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2HHBeauty2CharmLine',
+            'StrippingB2D0KPi0ResolvedD2HHBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2HHBeauty2CharmLine',
+            'StrippingB2D0PiPi0ResolvedD2HHBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KPi0ResolvedD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0PiPi0ResolvedD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KPi0ResolvedD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0PiPi0ResolvedD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2HHHHBeauty2CharmLine',
+            'StrippingB2D0KPi0ResolvedD2HHHHBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2HHHHBeauty2CharmLine',
+            'StrippingB2D0PiPi0ResolvedD2HHHHBeauty2CharmLine',
+            'StrippingB2D0KsPiDDD2HHHHWSBeauty2CharmLine',
+            'StrippingB2D0KPi0ResolvedD2HHHHWSBeauty2CharmLine',
+            'StrippingB2D0KsPiLLD2HHHHWSBeauty2CharmLine',
+            'StrippingB2D0PiPi0ResolvedD2HHHHWSBeauty2CharmLine',
+            'StrippingB02DKD2PhiMuNuBeauty2CharmLine',
+            'StrippingB02DPiD2PhiMuNuBeauty2CharmLine',
+            'StrippingB02DKWSD2PhiMuNuBeauty2CharmLine',
+            'StrippingB02DPiWSD2PhiMuNuBeauty2CharmLine',
+            'StrippingB02DKD2HHHUPBeauty2CharmLine',
+            #'StrippingB02DPiD2HHHUPBeauty2CharmLine',
+            #'StrippingB02DKWSD2HHHUPBeauty2CharmLine',
+            #'StrippingB02DPiWSD2HHHUPBeauty2CharmLine',
+            'StrippingB02DPiWSNoIPD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DPiWSNoIPDs2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKsKDDD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsKLLD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsPiDDD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DPiPi0MergedD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKPi0MergedD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DPiPi0ResolvedD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsPiLLD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsPiDDWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DPiPi0MergedWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsPiLLWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DPiPi0ResolvedWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsKLLWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKsKDDWSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DKKD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DKPiD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DPiPiD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DHHOSD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DRho0D2HHHPIDBeauty2CharmLine',
+            'StrippingB2DKstar0D2HHHPIDBeauty2CharmLine',
+            'StrippingB2DPhiD2HHHPIDBeauty2CharmLine',
+            'StrippingB2DKSDDD2HHHBeauty2CharmLine',
+            'StrippingB2DKSLLD2HHHBeauty2CharmLine',
+            'StrippingB02DRhoPMD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKstarPMD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB02DKD2KSHLLBeauty2CharmLine',
+            'StrippingB02DPiD2KSHLLBeauty2CharmLine',
+            'StrippingB02DKWSD2KSHLLBeauty2CharmLine',
+            'StrippingB02DPiWSD2KSHLLBeauty2CharmLine',
+            'StrippingB02DKD2KSHDDBeauty2CharmLine',
+            'StrippingB02DPiD2KSHDDBeauty2CharmLine',
+            'StrippingB02DKWSD2KSHDDBeauty2CharmLine',
+            'StrippingB02DPiWSD2KSHDDBeauty2CharmLine',
+            'StrippingB2D0KD2KSMuMuLLBeauty2CharmLine',
+            'StrippingB2D0PiD2KSMuMuLLBeauty2CharmLine',
+            'StrippingB2D0KD2KSMuMuDDBeauty2CharmLine',
+            'StrippingB2D0PiD2KSMuMuDDBeauty2CharmLine',
+            'StrippingB2D0MuNuD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0MuNuD2KSHHDDBeauty2CharmLine',
+            'StrippingB02D0KKD2KSHHLLBeauty2CharmLine',
+            'StrippingB02D0PiPiD2KSHHLLBeauty2CharmLine',
+            'StrippingB02D0KPiD2KSHHLLBeauty2CharmLine',
+            'StrippingB02DHHWSD2KSHHLLBeauty2CharmLine',
+            'StrippingB02D0KKD2KSHHDDBeauty2CharmLine',
+            'StrippingB02D0PiPiD2KSHHDDBeauty2CharmLine',
+            'StrippingB02D0KPiD2KSHHDDBeauty2CharmLine',
+            'StrippingB02DHHWSD2KSHHDDBeauty2CharmLine',
+            'StrippingB02D0KKD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB02D0PiPiD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB02D0KPiD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB02DHHWSD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB02D0KKD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB02D0PiPiD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB02D0KPiD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB02DHHWSD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2D0KD2KSMuMuLLWSBeauty2CharmLine',
+            'StrippingB2D0PiD2KSMuMuLLWSBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0PiD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0KD2KSMuMuDDWSBeauty2CharmLine',
+            'StrippingB2D0PiD2KSMuMuDDWSBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarKWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarPiWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'StrippingB02DstarKDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'StrippingB02DstarPiDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSHHLLBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2KSHHDDBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2HHHHBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2HHHHBeauty2CharmLine',
+            'StrippingB02DstarMuNuDst2D0Pi_D2HHHHWSBeauty2CharmLine',
+            'StrippingB02DstarMuNuWSDst2D0Pi_D2HHHHWSBeauty2CharmLine',
+            'StrippingB02DstarKsPiDDDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsKDDDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsKLLDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsPiLLDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsKDDWSDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsKLLWSDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsPiDDWSDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstarKsPiLLWSDst2D0PiBeauty2CharmLine',
+            'StrippingB2D0KD2HHHHBeauty2CharmLine',
+            'StrippingB2D0PiD2HHHHBeauty2CharmLine',
+            'StrippingB2D0KD2HHHHWSBeauty2CharmLine',
+            'StrippingB2D0PiD2HHHHWSBeauty2CharmLine',
+            #'StrippingB2D0KD2HHHHUPBeauty2CharmLine',
+            #'StrippingB2D0PiD2HHHHUPBeauty2CharmLine',
+            'StrippingB02D0KKD2HHHHBeauty2CharmLine',
+            'StrippingB02D0PiPiD2HHHHBeauty2CharmLine',
+            'StrippingB02D0KPiD2HHHHBeauty2CharmLine',
+            'StrippingB02DHHWSD2HHHHBeauty2CharmLine',
+            'StrippingB02D0KKD2HHHHWSBeauty2CharmLine',
+            'StrippingB02D0PiPiD2HHHHWSBeauty2CharmLine',
+            'StrippingB02D0KPiD2HHHHWSBeauty2CharmLine',
+            'StrippingB02DHHWSD2HHHHWSBeauty2CharmLine',
+            'StrippingB02D0KSDDD2K3PiBeauty2CharmLine',
+            'StrippingB02D0KSLLD2K3PiBeauty2CharmLine',
+            'StrippingB2D0KD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB2D0KD2Pi0HHWSResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD2Pi0HHWSResolvedBeauty2CharmLine',
+            'StrippingB2D0KD2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD2KSPi0HHLLResolvedBeauty2CharmLine',
+            'StrippingB2D0KD2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB2D0PiD2KSPi0HHLLMergedBeauty2CharmLine',
+            'StrippingB2D0KD2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD2KSPi0HHDDResolvedBeauty2CharmLine',
+            'StrippingB2D0KD2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB2D0PiD2KSPi0HHDDMergedBeauty2CharmLine',
+            'StrippingB2D0KD02KSPi0LLResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD02KSPi0LLResolvedBeauty2CharmLine',
+            'StrippingB2D0KD02KSPi0LLMergedBeauty2CharmLine',
+            'StrippingB2D0PiD02KSPi0LLMergedBeauty2CharmLine',
+            'StrippingB2D0KD02KSPi0DDResolvedBeauty2CharmLine',
+            'StrippingB2D0PiD02KSPi0DDResolvedBeauty2CharmLine',
+            'StrippingB2D0KD02KSPi0DDMergedBeauty2CharmLine',
+            'StrippingB2D0PiD02KSPi0DDMergedBeauty2CharmLine',
+            'StrippingB02D0KKD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB02D0PiPiD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB02D0KPiD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB02DHHWSD2Pi0HHResolvedBeauty2CharmLine',
+            'StrippingB02DKWSD2Pi0HHHResolvedBeauty2CharmLine',
+            'StrippingB02DPiWSD2Pi0HHHResolvedBeauty2CharmLine',
+            'StrippingB02DKWSD2Pi0HHHMergedBeauty2CharmLine',
+            'StrippingB02DPiWSD2Pi0HHHMergedBeauty2CharmLine',
+            'StrippingB2D0KKPiD2HHPIDBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2HHPIDBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2HHPIDBeauty2CharmLine',
+            'StrippingB2D0KKPiD2HHHHPIDBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2HHHHPIDBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2HHHHPIDBeauty2CharmLine',
+            'StrippingB2D0KKPiD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2KSHHDDBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2D0KKPiD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0KPiPiD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2KSHHLLBeauty2CharmLine',
+            'StrippingB2D0PiPiPiD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB02DKPiPiSSD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKKPiD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKPiPiSSWSD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKKPiWSD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DKPiPiWSD2HHHPIDBeauty2CharmLine',
+            'StrippingB02DPiPiPiWSD2HHHPIDBeauty2CharmLine',
+            'StrippingB2D0ppbarKD2HHBeauty2CharmLine',
+            'StrippingB2D0ppbarPiD2HHBeauty2CharmLine',
+            'StrippingB02DppbarKD2HHHBeauty2CharmLine',
+            'StrippingB02DppbarPiD2HHHBeauty2CharmLine',
+            'StrippingB02DstKKPiDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB02DstKPiPiDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB02DstPiPiPiDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB02DstPiPiPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB02DstKPiPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB02DstKKPiWSDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingB2DMuMuD2HHHBeauty2CharmLine',
+            'StrippingB2DMuMuWSD2HHHBeauty2CharmLine',
+            'StrippingB2DMuMuNPD2HHHBeauty2CharmLine',
+            'StrippingB2DMuMuD2KSHLLBeauty2CharmLine',
+            'StrippingB2DMuMuWSD2KSHLLBeauty2CharmLine',
+            'StrippingB2DMuMuNPD2KSHLLBeauty2CharmLine',
+            'StrippingB2DMuMuD2KSHDDBeauty2CharmLine',
+            'StrippingB2DMuMuWSD2KSHDDBeauty2CharmLine',
+            'StrippingB2DMuMuNPD2KSHDDBeauty2CharmLine',
+            'StrippingB2DstarMuMuD0PiBeauty2CharmLine',
+            'StrippingB2DstarMuMuWSD0PiBeauty2CharmLine',
+            'StrippingB2DstarMuMuNPD0PiBeauty2CharmLine',
+            'StrippingB2DstarMuMuD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstarMuMuWSD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstarMuMuNPD2HHHHPiBeauty2CharmLine',
+            'StrippingB02D0MuMuD2HHBeauty2CharmLine',
+            'StrippingB02D0MuMuWSD2HHBeauty2CharmLine',
+            'StrippingB02D0MuMuD2HHHHBeauty2CharmLine',
+            'StrippingB02D0MuMuWSD2HHHHBeauty2CharmLine',
+            'StrippingB02D0MuMuD2KSHHLLBeauty2CharmLine',
+            'StrippingB02D0MuMuWSD2KSHHLLBeauty2CharmLine',
+            'StrippingB02D0MuMuD2KSHHDDBeauty2CharmLine',
+            'StrippingB02D0MuMuWSD2KSHHDDBeauty2CharmLine',
+            'StrippingB02DsstKsPiLLDsst2DGammaD2HHHBeauty2CharmLine',
+            'StrippingB02DsstKsPiDDDsst2DGammaD2HHHBeauty2CharmLine',
+            'StrippingB02DDWSBeauty2CharmLine',
+            'StrippingB2D0DD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0D02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0D02HHD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0D02HHD02HHBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2KSHHLLBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHLLBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2KSHHDDBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHDDBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0Pi0D2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2KSHHLLBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2KSHHLLBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2KSHHLLWSBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2KSHHDDBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0GammaD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2KSHHDDBeauty2CharmLine',
+            'StrippingB2Dstar0PiDst02D0GammaD2KSHHDDWSBeauty2CharmLine',
+            'StrippingB2DstPiKFavD0PiBeauty2CharmLine',
+            'StrippingB2DstPiKFavD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstPiKSupD0PiBeauty2CharmLine',
+            'StrippingB2DstPiKSupD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstPipPipD0PiBeauty2CharmLine',
+            'StrippingB2DstPipPipD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstPimPipD0PiBeauty2CharmLine',
+            'StrippingB2DstPimPipD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstPiKWSD0PiBeauty2CharmLine',
+            'StrippingB2DstPiKWSD2HHHHPiBeauty2CharmLine',
+            'StrippingB2DstPiPiWSD0PiBeauty2CharmLine',
+            'StrippingB2DstPiPiWSD2HHHHPiBeauty2CharmLine',
+            'StrippingB2D0D0KD02HHD02HHBeauty2CharmLine',
+            'StrippingB2D0D0PiD02HHD02HHBeauty2CharmLine',
+            'StrippingB2DstD0Beauty2CharmLine',
+            'StrippingB2DstD0D02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstWSBeauty2CharmLine',
+            'StrippingB02DstDWSBeauty2CharmLine',
+
+            ######################
+            ###### DDX lines #####
+            ######################
+            #### DDK lines ###
+            'StrippingB2DDKBeauty2CharmLine',
+            'StrippingB2DDKWSBeauty2CharmLine',
+            'StrippingB02D0DKBeauty2CharmLine',
+            'StrippingB02D0DKD02K3PiBeauty2CharmLine',
+            'StrippingB02D0DKWSBeauty2CharmLine',
+            'StrippingB02D0DKWSD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDKBeauty2CharmLine',
+            'StrippingB2DstDKDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDKWSBeauty2CharmLine',
+            'StrippingB2DstDKWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2D0D0KD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB2D0D0KD02HHD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KBeauty2CharmLine',
+            'StrippingB02DstD0KD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KWSBeauty2CharmLine',
+            'StrippingB02DstD0KWSD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0KWSDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstKBeauty2CharmLine',
+            'StrippingB2DstDstKDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstKWSBeauty2CharmLine',
+            'StrippingB2DstDstKWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstKWSDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2Dst2460DKBeauty2CharmLine',
+            'StrippingB2Dst2460DKWSBeauty2CharmLine',
+            'StrippingB2D0st2460D0KBeauty2CharmLine',
+            'StrippingB2Dst0D0KDst02D0Pi0ResolvedD02HHBeauty2CharmLine',
+            'StrippingB2Dst0D0KDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingB02Dst0DKDst02D0Pi0ResolvedD2HHHBeauty2CharmLine',
+            'StrippingB02Dst0DKDst02D0GammaD2HHHBeauty2CharmLine',
+            #### DDKS lines ###
+            'StrippingB02DDKSDDBeauty2CharmLine',
+            'StrippingB02DDKSWSDDBeauty2CharmLine',
+            'StrippingB2D0DKSDDBeauty2CharmLine',
+            'StrippingB2D0DKSDDD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDKSDDBeauty2CharmLine',
+            'StrippingB02DstDKSDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDKSWSDDBeauty2CharmLine',
+            'StrippingB02DstDKSWSDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0KSD02K3PiD02K3PiDDBeauty2CharmLine',
+            'StrippingB02D0D0KSD02HHD02HHDDBeauty2CharmLine',
+            'StrippingB02D0D0KSD02HHD02K3PiDDBeauty2CharmLine',
+            'StrippingB2DstD0KSDDBeauty2CharmLine',
+            'StrippingB2DstD0KSDDD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KSDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KSDDDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSDDBeauty2CharmLine',
+            'StrippingB02DstDstKSDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSWSDDBeauty2CharmLine',
+            'StrippingB02DstDstKSWSDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSWSDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DDKSLLBeauty2CharmLine',
+            'StrippingB02DDKSWSLLBeauty2CharmLine',
+            'StrippingB2D0DKSLLBeauty2CharmLine',
+            'StrippingB2D0DKSLLD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDKSLLBeauty2CharmLine',
+            'StrippingB02DstDKSLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDKSWSLLBeauty2CharmLine',
+            'StrippingB02DstDKSWSLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0KSD02K3PiD02K3PiLLBeauty2CharmLine',
+            'StrippingB02D0D0KSD02HHD02HHLLBeauty2CharmLine',
+            'StrippingB02D0D0KSD02HHD02K3PiLLBeauty2CharmLine',
+            'StrippingB2DstD0KSLLBeauty2CharmLine',
+            'StrippingB2DstD0KSLLD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KSLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KSLLDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSLLBeauty2CharmLine',
+            'StrippingB02DstDstKSLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSWSLLBeauty2CharmLine',
+            'StrippingB02DstDstKSWSLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKSWSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            #### DDLambda lines ###
+            'StrippingLb2DDLambdaDDBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02HHD02HHDDBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02HHD02K3PiDDBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02K3PiD02K3PiDDBeauty2CharmLine',
+            'StrippingLb2DstDLambdaDDBeauty2CharmLine',
+            'StrippingLb2DstDLambdaDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaDDBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaDDDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaDDDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2DDLambdaLLBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02HHD02HHLLBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02HHD02K3PiLLBeauty2CharmLine',
+            'StrippingLb2D0D0LambdaD02K3PiD02K3PiLLBeauty2CharmLine',
+            'StrippingLb2DstDLambdaLLBeauty2CharmLine',
+            'StrippingLb2DstDLambdaLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaLLBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaLLDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2DstDstLambdaLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            #### DDK* lines ###
+            'StrippingB02D0D0KstD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02D0D0KstD02HHD02HHBeauty2CharmLine',
+            'StrippingB02D0D0KstD02HHD02K3PiBeauty2CharmLine',
+            'StrippingB02DDKstBeauty2CharmLine',
+            'StrippingB02DstDKstBeauty2CharmLine',
+            'StrippingB02DstDKstDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKstBeauty2CharmLine',
+            'StrippingB02DstDstKstDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKstDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DD0KstBeauty2CharmLine',
+            'StrippingB2DD0KstD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KstBeauty2CharmLine',
+            'StrippingB2DstD0KstDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KstD02K3PiBeauty2CharmLine',
+            'StrippingB2DstD0KstDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB2D0DKPiBeauty2CharmLine',
+            'StrippingB2D0DKPiD02K3PiBeauty2CharmLine',
+            #### DDPhi lines ###
+            'StrippingB2D0DKKBeauty2CharmLine',
+            'StrippingB2D0DKKD2K3PiBeauty2CharmLine',
+            #'StrippingB02DDKKBeauty2CharmLine',
+            #'StrippingB02DstDKKBeauty2CharmLine',
+            #'StrippingB02DstDKKDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKKBeauty2CharmLine',
+            'StrippingB02DstDstKKDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDstKKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            #### DDPi lines ###
+            'StrippingB2DDPiBeauty2CharmLine',
+            'StrippingB2DDPiWSBeauty2CharmLine',
+            'StrippingB02D0DPiBeauty2CharmLine',
+            'StrippingB02D0DPiD02K3PiBeauty2CharmLine',
+            'StrippingB02D0DPiWSBeauty2CharmLine',
+            'StrippingB02D0DPiWSD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDPiBeauty2CharmLine',
+            'StrippingB2DstDPiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDPiWSBeauty2CharmLine',
+            'StrippingB2DstDPiWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2D0D0PiD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB2D0D0PiD02HHD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiBeauty2CharmLine',
+            'StrippingB02DstD0PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiWSBeauty2CharmLine',
+            'StrippingB02DstD0PiWSD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB02DstD0PiWSDstarD02K3PiD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstPiBeauty2CharmLine',
+            'StrippingB2DstDstPiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstPiDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstPiWSBeauty2CharmLine',
+            'StrippingB2DstDstPiWSDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2DstDstPiWSDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            'StrippingB2Dst2460DPiBeauty2CharmLine',
+            'StrippingB2Dst2460DPiWSBeauty2CharmLine',
+            'StrippingB2D0st2460D0PiBeauty2CharmLine',
+            #### DDpK lines ###
+            'StrippingLb2DDpKD2HHHPIDBeauty2CharmLine',
+            #########################
+            #### End of DDX lines ###
+            #########################
+            'StrippingLb2LcKLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiLc2PKKBeauty2CharmLine',
+            'StrippingLb2LcPiLc2PPiPiBeauty2CharmLine',
+            'StrippingLb2LcKWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiWSLc2PKKBeauty2CharmLine',
+            'StrippingLb2LcPiWSLc2PPiPiBeauty2CharmLine',
+            'StrippingLb2LcPiNoIPWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2XicPiXic2PKPiBeauty2CharmLine',
+            'StrippingLb2XicKXic2PKPiBeauty2CharmLine',
+            'StrippingLb2XicKWSXic2PKPiBeauty2CharmLine',
+            'StrippingLb2XicPiWSXic2PKPiBeauty2CharmLine',
+            'StrippingLb2XicPiNoIPWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib2Xic0KXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiWSXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0KWSXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiNoIPWSXic02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0PiOmegac02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0KOmegac02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0KWSOmegac02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0PiWSOmegac02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2Omegac0PiNoIPWSOmegac02PKKPiBeauty2CharmLine',
+            'StrippingOmegab2XicpKPiXicp2PKPiBeauty2CharmLine',
+            'StrippingOmegab2LcKKLc2PKPiBeauty2CharmLine',
+            'StrippingXib02XicDXic2PKPiBeauty2CharmLine',
+            'StrippingXib02XicDWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib2Xic0DXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0DWSXic02PKKPiBeauty2CharmLine',
+            'StrippingXib02XicKPiPiXic2PKPiBeauty2CharmLine',
+            'StrippingXib02XicPiPiPiXic2PKPiBeauty2CharmLine',
+            'StrippingXib02XicPiPiPiWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib02XicKPiPiWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib2Xic0KPiPiXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiPiPiXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0KPiPiWSXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2Xic0PiPiPiWSXic02PKKPiBeauty2CharmLine',
+            'StrippingXib2LcDKLc2PKPiD2HHHBeauty2CharmLine',
+            'StrippingXib2LcDKWSLc2PKPiD2HHHBeauty2CharmLine',
+            'StrippingXib02LcDsKPiLc2PKPiDs2KKPiBeauty2CharmLine',
+            'StrippingXib02LcDsKPiWSLc2PKPiDs2KKPiBeauty2CharmLine',
+            'StrippingB2LcDspbarLc2PKPiDs2KKPiBeauty2CharmLine',
+            'StrippingB2LcDspbarWSLc2PKPiDs2KKPiBeauty2CharmLine',
+            'StrippingSb2D0PD2HHPIDBeauty2CharmLine',
+            'StrippingSb02DPD2HHHPIDBeauty2CharmLine',
+            'StrippingSb02DPWSD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2D0PHD02HHBeauty2CharmLine',
+            'StrippingLb2D0PHWSD02HHBeauty2CharmLine',
+            'StrippingLb2D0PHNoPIDD02HHBeauty2CharmLine',
+            'StrippingLb2D0PHNoPIDWSD02HHBeauty2CharmLine',
+            'StrippingLb2D0PHD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0PHWSD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0PPbarD02HHBeauty2CharmLine',
+            'StrippingLb2D0PPbarWSD02HHBeauty2CharmLine',
+            'StrippingLb2LcKSKLLLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcKSKDDLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcKKPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcppbarKLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcppbarPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcKPiPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiLc2PKKBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiLc2PPiPiBeauty2CharmLine',
+            'StrippingLb2LcKPiPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiWSLc2PKKBeauty2CharmLine',
+            'StrippingLb2LcPiPiPiWSLc2PPiPiBeauty2CharmLine',
+            'StrippingLb2LcppbarKWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcppbarPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcKKPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKKLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarpbarpLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarPiPiLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKPiLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarPiPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarpbarpWSLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKKWSLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcDD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDWSD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDKstBeauty2CharmLine',
+            'StrippingLb2LcDstKstBeauty2CharmLine',
+            'StrippingLb2LcDst0KLc2PKPiDst02D0GammaD2HHBeauty2CharmLine',
+            'StrippingLb2LcDst0KLc2PKPiDst02D0Pi0ResolvedD2HHBeauty2CharmLine',
+            'StrippingLb2LcDst0KLc2PKPiDst02D0Pi0MergedD2HHBeauty2CharmLine',
+            'StrippingX2LcD0D02KPiBeauty2CharmLine',
+            'StrippingX2LcD0PiD02KPiBeauty2CharmLine',
+            'StrippingX2LcD0KD02KPiBeauty2CharmLine',
+            'StrippingX2LcD0PiWSD02KPiBeauty2CharmLine',
+            'StrippingX2LcD0KWSD02KPiBeauty2CharmLine',
+            'StrippingX02XiccpPiXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingX02XiccpKXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingX02XiccpPiWSXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingX02XiccpKWSXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingX2XiccppKXiccpp2XicPiBeauty2CharmLine',
+            'StrippingX2XiccppPiXiccpp2XicPiBeauty2CharmLine',
+            'StrippingX2XiccppKWSXiccpp2XicPiBeauty2CharmLine',
+            'StrippingX2XiccppPiWSXiccpp2XicPiBeauty2CharmLine',
+            'StrippingX2LcPiPiOSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcPiKOSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcPiPiSSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKKSSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKPiOSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKKOSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKPiSSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcPiPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKKWSLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKPiPiPiLc2PKPiBeauty2CharmLine',
+            'StrippingX2LcKPiPiPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingXib2XicPiPiXic2PKPiBeauty2CharmLine',
+            'StrippingXib2XicKPiXic2PKPiBeauty2CharmLine',
+            'StrippingXib2XicKKXic2PKPiBeauty2CharmLine',
+            'StrippingXib2XicKKWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib2XicPiPiWSXic2PKPiBeauty2CharmLine',
+            'StrippingXib2XicKPiWSXic2PKPiBeauty2CharmLine',
+            'StrippingLb2LcDstDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingLb2LcDstWSDstar2D0PiPIDBeauty2CharmLine',
+            'StrippingX2LcLcBeauty2CharmLine',
+            'StrippingX2LcLcWSBeauty2CharmLine',
+            'StrippingLb2Lc5PiLc2PKPiPIDBeauty2CharmLine',
+            'StrippingLb2D0Lambda0DDD02HHBeauty2CharmLine',
+            'StrippingLb2D0Lambda0LLD02HHBeauty2CharmLine',
+            'StrippingLb2D0Lambda0DDD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0Lambda0LLD02K3PiBeauty2CharmLine',
+            'StrippingLb2DpKKD2HHHBeauty2CharmLine',
+            'StrippingLb2DpPiPiD2HHHBeauty2CharmLine',
+            'StrippingLb2DpKPiD2HHHBeauty2CharmLine',
+            'StrippingXib2D0pKKD02HHBeauty2CharmLine',
+            'StrippingXib2D0pPiPiD02HHBeauty2CharmLine',
+            'StrippingXib2D0pKPiD02HHBeauty2CharmLine',
+            'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
+            'StrippingLb2DD0pD2HHHD02K3PiBeauty2CharmLine',
+            'StrippingLb2DD0pD2HHHD2HHBeauty2CharmLine',
+            'StrippingXibc2DpKD2HHHBeauty2CharmLine',
+            'StrippingB2LcpbarKSSLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcpbarPiSSLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcpbarKWSLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcpbarPiWSLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcpbarLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcpbarWSLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcLcKLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKSDDLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKSWSDDLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKSLLLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcpbarKSWSLLLc2PKPiBeauty2CharmLine',
+            'StrippingLb2DLambda0DDpiD2HHHBeauty2CharmLine',
+            'StrippingLb2DLambda0LLpiD2HHHBeauty2CharmLine',
+            'StrippingLb2DLambda0DDpiWSD2HHHBeauty2CharmLine',
+            'StrippingLb2DLambda0LLpiWSD2HHHBeauty2CharmLine',
+            'StrippingXib2D0Lambda0DDpiD02HHBeauty2CharmLine',
+            'StrippingXib2D0Lambda0LLpiD02HHBeauty2CharmLine',
+            'StrippingXib2D0Lambda0DDpiWSD02HHBeauty2CharmLine',
+            'StrippingXib2D0Lambda0LLpiWSD02HHBeauty2CharmLine',
+            'StrippingB02LcLambda0KLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcLambda0PiLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcLambda0PiWSLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcLambda0KWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2sigmacpp4PiSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
+            'StrippingLb2sigmacppD0KPiSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
+            'StrippingB02LcSigmacppKSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
+            'StrippingB2LcXicPiXic2PKPiLc2PKPiBeauty2CharmLine',
+            'StrippingB02DKLTUBD2HHHBeauty2CharmLine',
+            'StrippingB02DsKPiPiLTUBD2HHHBeauty2CharmLine',
+            'StrippingB02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine',
+            'StrippingDstarUPB02D0KPiD2HHBeauty2CharmLine',
+
+            # Bc+ -> D+ D0
+            'StrippingBc2DD0D2KSHHHD02HHBeauty2CharmLine',
+            'StrippingBc2DD0D2KSHHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DD0D2KSHHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DD0D2KSHHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DD0D2KSHD02HHBeauty2CharmLine',
+            'StrippingBc2DD0D2KSHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DD0D2KSHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DD0D2KSHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DD0D2HHHD02HHBeauty2CharmLine',
+            'StrippingBc2DD0D2HHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DD0D2HHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DD0D2HHHD02KSHHBeauty2CharmLine',
+
+            # Bc+ -> D*+ D0
+            'StrippingBc2DstD0Dst2DPI0D2HHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2HHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2HHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2HHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KHHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KHHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KHHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KHHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2KSHHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2HHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2HHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2HHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DGammaD2HHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02HHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02HHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02HHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02HHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KSHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KSHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KSHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2D0PID02KSHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHHHD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHD02HHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHD02HHPI0Beauty2CharmLine',
+            'StrippingBc2DstD0Dst2DPI0D2KSHD02KSHHBeauty2CharmLine',
+
+            # Bc+ -> D+ D*0
+            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2KSHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DDst0D2HHHDst02D0GammaD02HHBeauty2CharmLine',
+
+            # Bc+ -> D*+ D*0
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KHHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DGammaD2HHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02HHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2D0PID02KSHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHHHDst02D0GammaD02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02HHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02KHHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
+            'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02HHBeauty2CharmLine',
+
+            #Xibc
+            'StrippingXibc2LcD0D02KPiBeauty2CharmLine',
+            'StrippingXibc2LcD0PiD02KPiBeauty2CharmLine',
+            'StrippingXibc2D0D0pD02KPiBeauty2CharmLine',
+            'StrippingXibc2LcPiPiOSLc2PKPiBeauty2CharmLine',
+            'StrippingXibc2LcKPiOSLc2PKPiBeauty2CharmLine',
+            'StrippingXibc2LcPiKOSLc2PKPiBeauty2CharmLine',
+            'StrippingXibc02XiccpPiXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingXibc2XiccppPiXiccpp2XicPiBeauty2CharmLine',
+            'StrippingXibc2XiccppPiXiccpp2LcK2PiBeauty2CharmLine',
+            'StrippingXibc2LcPiLc2PKPiBeauty2CharmLine',
+            'StrippingXibc2LcKLc2PKPiBeauty2CharmLine',
+            'StrippingXibc2XicPiXic2PKPiBeauty2CharmLine',
+            'StrippingXibc2Xic0PiXic02PKKPiBeauty2CharmLine',
+            'StrippingXibc02XiccpMuXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingXibc2XiccppMuXiccpp2XicPiBeauty2CharmLine',
+            'StrippingXibc02XiccpMuWSXiccp2Xic0PiBeauty2CharmLine',
+            'StrippingXibc2XiccppMuWSXiccpp2XicPiBeauty2CharmLine',
+            'StrippingX2Omegac0PiOmegac02PKKPiBeauty2CharmLine',
+            'StrippingX2Omegac0KOmegac02PKKPiBeauty2CharmLine',
+            'StrippingX2Omegac0KOSOmegac02PKKPiBeauty2CharmLine',
+            'StrippingXibc2LcD0MuD02KPiBeauty2CharmLine',
+            'StrippingXibc2LcD0MuWSD02KPiBeauty2CharmLine',
+            'StrippingXibc2LcDMuD2KPiPiBeauty2CharmLine',
+            'StrippingXibc2LcDMuWSD2KPiPiBeauty2CharmLine',
+
+            'StrippingB2XicpbarPiXic2PKPiBeauty2CharmLine',
+            'StrippingB02XicpbarPiPiXic2PKPiBeauty2CharmLine',
+            'StrippingB02XicpbarKPiXic2PKPiBeauty2CharmLine',
+            'StrippingB02DpbarLambdaDDD2HHHBeauty2CharmLine',
+            'StrippingB02DpbarLambdaLLD2HHHBeauty2CharmLine',
+            'StrippingB02DstpbarLambdaDDDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstpbarLambdaLLDst2D0PiBeauty2CharmLine',
+            'StrippingB02DstpbarLambdaDDDst2D0PiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstpbarLambdaLLDst2D0PiD02K3PiBeauty2CharmLine',
+            'StrippingB2D0pbarLambdaDDD02HHBeauty2CharmLine',
+            'StrippingB2D0pbarLambdaLLD02HHBeauty2CharmLine',
+            'StrippingB2D0pbarLambdaDDD02K3PiBeauty2CharmLine',
+            'StrippingB2D0pbarLambdaLLD02K3PiBeauty2CharmLine',
+            'StrippingB02D0pbarKLambdaDDD02HHBeauty2CharmLine',
+            'StrippingB02D0pbarKLambdaLLD02HHBeauty2CharmLine',
+            'StrippingB02D0pbarKLambdaDDD02K3PiBeauty2CharmLine',
+            'StrippingB02D0pbarKLambdaLLD02K3PiBeauty2CharmLine',
+            'StrippingXib2Xic0D0KD02KPiBeauty2CharmLine',
+            'StrippingXib2XicDKD2HHHBeauty2CharmLine',
+            'StrippingXib2XicDKDst2D0PiBeauty2CharmLine',
+            'StrippingXib02XicD0KD02KPiBeauty2CharmLine',
+            'StrippingXib02XicD0KD02K3PiBeauty2CharmLine',
+            'StrippingOmegab2Xic0KPiPiXic02PKKPiBeauty2CharmLine',
+            'StrippingXib02D0LambdaPiPiLLD02KPiBeauty2CharmLine',
+            'StrippingXib02D0LambdaPiPiLLD02K3PiBeauty2CharmLine',
+            'StrippingXib02D0LambdaPiPiDDD02KPiBeauty2CharmLine',
+            'StrippingXib02D0LambdaPiPiDDD02K3PiBeauty2CharmLine',
+            'StrippingXib2LcKHHHLc2PKPiBeauty2CharmLine',
+            'StrippingXib2XicHHHHXic2PKPiBeauty2CharmLine',
+						'StrippingXibm2Xic0Pim2XimPipPimLLBeauty2CharmLine',
+            'StrippingXibm2Xic0Pim2XimPipPimDDBeauty2CharmLine',
+						'StrippingXibm2Xic0Pim2Lambda0KmPipPimLLBeauty2CharmLine',
+						'StrippingXibm2Xic0Pim2Lambda0KmPipPimDDBeauty2CharmLine',
+						'StrippingXibm2Xic0Pim2PKsKmPimLLBeauty2CharmLine',
+						'StrippingXibm2Xic0Pim2PKsKmPimDDBeauty2CharmLine'
         ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["[Xi_cc++ -> Lambda_c+ K- pi+ pi+]cc"])
-        return Selection(
-            'LooseXiccpp2LcK2PiLc2PKPiBeauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=self.lc + [self.kaons] + [self.pions])
-
+    },
+    'WGs': ['B2OC']
+}
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-class XibcBuilder(object):
-    '''Makes all Xibc -> X lines.'''
-
-    def __init__(self, lc, xicc, d, topoPions_PID, topoKaons_PID,
-                 topoProtons_PID, pions, kaons, protons, muons, config,
-                 configSL):
-        self.lc = lc.pkpi
-        self.xic = lc.xic_pkpi
-        self.xic0 = lc.xic0_pkkpi
-        self.omegac0 = lc.omegac0_pkkpi
-        self.xiccp = xicc.xiccp
-        self.xiccpp = xicc.xiccpp
-        self.xiccpp2lck2pi = xicc.xiccpp2lck2pi
-        #self.d = d
-        self.dp = d.d_cf_hhh_pid_tightpi
-        self.d0 = d.kpi_pid_tighter1_narrow  #Tight PID cuts, 60 MeV mass window
-        self.pions = [pions]
-        self.kaons = [kaons]
-        self.protons = [protons]
-        self.muons = [muons]
-        self.topoPions_pid = [topoPions_PID]
-        self.topoKaons_pid = [topoKaons_PID]
-        self.protons_pid = [topoProtons_PID]
-        self.config = deepcopy(config)
-        self.configSL = deepcopy(configSL)
-        #self.config['AM_MIN'] = '5200*MeV'
-        self.lines = []
-
-        #-----------------------
-        # --- Hadronic Modes ---
-        #-----------------------
-        ### bc baryon -> Lc D0
-        self._makeXibc2LcD0()
-        ### bc baryon -> Lc D0 H
-        self._makeXibc2LcD0H()
-        ### bc baryon -> Xi_cc+ pi-
-        self._makeXibc02XiccH()
-        ### bc baryon -> Xi_cc++ pi- (Xicc -> XicPi/LcK2Pi)
-        self._makeXibc2XiccH('Xiccpp2XicPi', self.xiccpp)
-        self._makeXibc2XiccH('Xiccpp2LcK2Pi', self.xiccpp2lck2pi)
-        ### bc baryon -> Lc H+H-,
-        self._makeXibc2LcHH()
-        # Xibc -> Lc+- H-
-        self._makeXibc2LcH()
-        # Xibc -> Xic+- Pi
-        self._makeXibc2XicH()
-        ### Xibc -> Xic0 Pi
-        self._makeXibc2Xic0H()
-        ### Xibc -> D0 D0 p
-        self._makeXibc2D0D0p()
-        # X -> Omega_c0 {Pi,K}
-        self._makeX2Omegac0H()
-
-        #---------------------------
-        # --- Semileptonic Modes ---
-        #---------------------------
-        ### bc baryon -> Xi_cc+ mu-
-        self._makeXibc02XiccMu()
-        ### bc baryon -> Xi_cc++ mu-
-        self._makeXibc2XiccMu()
-        ### bc baryon -> Lc D0 H
-        self._makeXibc2LcD0Mu()
-        ### bc baryon -> Lc D0 H
-        self._makeXibc2LcDMu()
-
-    def _makeXibc2D0D0p(self):
-        '''Makes Xibc -> D0 D0 p'''
-        decays = {'Xibc2D0D0p': ["Xi_bc+ -> D0 D0 p+", "Xi_bc~- -> D0 D0 p~-"]}
-        inputs = {'Xibc2D0D0p': self.d0 + self.protons}
-        b2d0d0p = makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(b2d0d0p, 1.0))
-
-    def _makeXibc2LcD0(self):
-        '''Makes RS Xibc -> Lc D0 + c.c.'''
-        decays = {
-            'Xibc2LcD0':
-            ["Xi_bc+ -> Lambda_c+ D0", "Xi_bc~- -> Lambda_c~- D0"]
-        }
-        inputs = {'Xibc2LcD0': self.d0 + self.lc}
-        rs = makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2LcD0H(self):
-        '''Makes RS  Xibc -> Lc D0 H + c.c. Need loose pions here as they may be soft'''
-        pions = self.pions
-        #kaons = self.kaons
-        decays = {
-            'Xibc2LcD0Pi':
-            ["Xi_bc0 -> Lambda_c+ D0 pi-", "Xi_bc0 -> Lambda_c~- D0 pi+"]
-        }
-        inputs = {'Xibc2LcD0Pi': self.d0 + self.lc + pions}
-        rs = makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2LcHH(self):
-        '''Makes RS Xibc -> Lc H+H-, LC H-H- + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        decays = {
-            'Xibc2LcPiPiOS': ["[Xi_bc+ -> Lambda_c+ pi- pi+]cc"],
-            'Xibc2LcKPiOS': ["[Xi_bc+ -> Lambda_c+ K- pi+]cc"],
-            'Xibc2LcPiKOS': ["[Xi_bc+ -> Lambda_c+ K+ pi-]cc"],
-        }
-        inputs = {
-            'Xibc2LcPiPiOS': self.lc + pions,
-            'Xibc2LcKPiOS': self.lc + kaons + pions,
-            'Xibc2LcPiKOS': self.lc + kaons + pions,
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc02XiccH(self):
-        '''Make RS Xi_bcd -> Xi_cc+ H (H=pi) + cc.'''
-        pions = self.topoPions_pid
-        #kaons = self.kaons
-        decays = {'Xibc02XiccpPi': ["[Xi_bc0 -> Xi_cc+ pi-]cc"]}
-        inputs = {'Xibc02XiccpPi': self.xiccp + pions}
-        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2XiccH(self, dname, xiccpp2x):
-        '''Make RS and WS Xi_bcu -> Xi_cc++ H (H=pi) + cc.'''
-        pions = self.topoPions_pid
-        decays = {'Xibc2XiccppPi': ["[Xi_bc+ -> Xi_cc++ pi-]cc"]}
-        inputs = {'Xibc2XiccppPi': xiccpp2x + pions}
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2LcH(self):
-        '''Make RS Xibc -> Lc H (H=pi,K) + cc.'''
-        pions = self.topoPions_pid
-        kaons = self.topoKaons_pid
-        decays = {
-            'Xibc2LcPi': ["[Xi_bc0 -> Lambda_c+ pi-]cc"],
-            'Xibc2LcK': ["[Xi_bc0 -> Lambda_c+ K-]cc"]
-        }
-        inputs = {'Xibc2LcPi': self.lc + pions, 'Xibc2LcK': self.lc + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2XicH(self):
-        '''Make RS Xibc -> Xi_c+ H (H=pi) + cc.'''
-        pions = self.topoPions_pid
-        #kaons = self.topoKaons
-        decays = {'Xibc2XicPi': ["[Xi_bc0 -> Xi_c+ pi-]cc"]}
-        inputs = {'Xibc2XicPi': self.xic + pions}
-        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2Xic0H(self):
-        '''Make RS and WS Xi_bc -> Xi_c0 H (H=pi) + cc.'''
-        pions = self.topoPions_pid
-        decays = {'Xibc2Xic0Pi': ["[Xi_bc+ -> Xi_c0 pi+]cc"]}
-        inputs = {'Xibc2Xic0Pi': self.xic0 + pions}
-        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeX2Omegac0H(self):
-        '''Make Omega_b --> Omega_c {pi,K} and Xibc+ -->  Omega_c0 K+  + cc.'''
-        pions = self.topoPions_pid
-        kaons = self.topoKaons_pid
-        decays = {'X2Omegac0Pi': ["[Omega_b- -> Omega_c0 pi-]cc"]}
-        inputs = {'X2Omegac0Pi': self.omegac0 + pions}
-        rspi = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
-        decays = {'X2Omegac0K': ["[Omega_b- -> Omega_c0 K-]cc"]}
-        inputs = {'X2Omegac0K': self.omegac0 + kaons}
-        rsk = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
-        decays = {'X2Omegac0KOS': ["[Xi_bc+ -> Omega_c0 K+]cc"]}
-        inputs = {'X2Omegac0KOS': self.omegac0 + kaons}
-        osk = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rspi, 1.0))
-        self.lines.append(ProtoLine(rsk, 1.0))
-        self.lines.append(ProtoLine(osk, 1.0))
-
-    def _makeXibc02XiccMu(self):
-        '''Make RS+WS Xi_bcd -> Xi_cc+ mu-  + cc.'''
-        muons = self.muons
-        decays = {'Xibc02XiccpMu': ["[Xi_bc0 -> Xi_cc+ mu-]cc"]}
-        inputs = {'Xibc02XiccpMu': self.xiccp + muons}
-        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.configSL)
-        decays = {'Xibc02XiccpMuWS': ["[Xi_bc0 -> Xi_cc+ mu+]cc"]}
-        inputs = {'Xibc02XiccpMuWS': self.xiccp + muons}
-        ws = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, self.configSL)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 1.0))
-
-    def _makeXibc2XiccMu(self):
-        '''Make RS+WS Xi_bcu -> Xi_cc++ mu-  + cc.'''
-        muons = self.muons
-        decays = {'Xibc2XiccppMu': ["[Xi_bc+ -> Xi_cc++ mu-]cc"]}
-        inputs = {'Xibc2XiccppMu': self.xiccpp + muons}
-        rs = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, self.configSL)
-        decays = {'Xibc2XiccppMuWS': ["[Xi_bc+ -> Xi_cc++ mu+]cc"]}
-        inputs = {'Xibc2XiccppMuWS': self.xiccpp + muons}
-        ws = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, self.configSL)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 1.0))
-
-    def _makeXibc2LcD0Mu(self):
-        '''Makes RS  Xibc -> Lc D0 mu + c.c. Need loose pions here as they may be soft'''
-        muons = self.muons
-        decays = {
-            'Xibc2LcD0Mu':
-            ["Xi_bc0 -> Lambda_c+ D0 mu-", "Xi_bc0 -> Lambda_c~- D0 mu+"]
-        }
-        inputs = {'Xibc2LcD0Mu': self.d0 + self.lc + muons}
-        rs = makeB2XSels(decays, 'D02KPi', inputs, self.configSL)
-        decays = {
-            'Xibc2LcD0MuWS':
-            ["Xi_bc0 -> Lambda_c+ D0 mu+", "Xi_bc0 -> Lambda_c~- D0 mu-"]
-        }
-        inputs = {'Xibc2LcD0MuWS': self.d0 + self.lc + muons}
-        ws = makeB2XSels(decays, 'D02KPi', inputs, self.configSL)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 1.0))
-
-    def _makeXibc2LcDMu(self):
-        '''Makes RS  Xibc -> Lc D+ mu + c.c. Need loose muons here as they may be soft'''
-        muons = self.muons
-        decays = {'Xibc2LcDMu': ["[Xi_bc+ -> Lambda_c+ D+ mu-]cc"]}
-        inputs = {'Xibc2LcDMu': self.dp + self.lc + muons}
-        rs = makeB2XSels(decays, 'D2KPiPi', inputs, self.configSL)
-        decays = {'Xibc2LcDMuWS': ["[Xi_bc+ -> Lambda_c+ D+ mu+]cc"]}
-        inputs = {'Xibc2LcDMuWS': self.dp + self.lc + muons}
-        ws = makeB2XSels(decays, 'D2KPiPi', inputs, self.configSL)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 1.0))
-
-
-#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-
-
-class Lb2XBuilder(object):
-    '''Makes all Lambda_b -> X lines.'''
-
-    def __init__(self, lc, lcstar, xicc, d, hh, topoPions, topoPions_PID, topoKaons,
-                 topoKaons_PID, topoProtons, topoProtons_PID, pions, kaons, ks,
-                 hhh, dst, lambda0, config, config_xibm):
-
-        self.lc = lc.pkpi
-        self.lc_pkk = lc.pkk
-        self.lc_ppipi = lc.ppipi
-        self.xic = lc.xic_pkpi
-        self.xic0 = lc.xic0_pkkpi
-        self.xic0_ximpip_LL = lc.xic0_ximpip_LL
-        self.xic0_ximpip_DD = lc.xic0_ximpip_DD
-        self.xic0_lmd0kmpip_LL = lc.xic0_lmd0kmpip_LL
-        self.xic0_lmd0kmpip_DD = lc.xic0_lmd0kmpip_DD
-        self.xic0_pkskm_LL = lc.xic0_pkskm_LL
-        self.xic0_pkskm_DD = lc.xic0_pkskm_DD
-        
-				self.lc_lambdapiLL = lc.lambdapiLL
-        self.lc_lambdapiDD = lc.lambdapiDD
-        self.lcstar2595 = lcstar.lcstar2595
-        self.lcstar2625 = lcstar.lcstar2625
-        self.xic = lc.xic_pkpi
-        self.xic0 = lc.xic0_pkkpi
-        
-				self.omegac0 = lc.omegac0_pkkpi
-        self.lc_tight = lc.pkpi_tight_win  #tight Lc
-        self.xic_tight = lc.xic_pkpi_tight_win  #tight Xic
-        self.xic_tightest = lc.xic_pkpi_tightest_win  #tight Xic
-        self.omegac0_tight = lc.omegac0_pkkpi_tight_win  #tight Omegac0
-        self.xiccp = xicc.xiccp
-        self.xiccpp = xicc.xiccpp
-        self.sigmacpp = xicc.sigmacpp
-        self.d = d
-        self.d0_pid = d.hh_pid
-        self.d0_k3pi_pid = d.k3pi_pid
-        self.d0_k3pi = d.k3pi_pid_tighter1_narrow  #Tight PID cuts, 60 MeV mass window
-        self.d0_kshh_dd = d.kshh_dd_pid
-        self.d0_kshh_ll = d.kshh_ll_pid
-        self.hh = hh
-        self.hhh = hhh
-        self.dst = dst
-        self.ds = d.ds_hhh_pid_tight
-        self.dds = d.hhh_pid_tight
-        self.lambda0 = lambda0
-        self.pions = [pions]
-        self.kaons = [kaons]
-        self.topoPions = [topoPions]
-        self.topoPions_pid = [topoPions_PID]
-        self.topoKaons = [topoKaons]
-        self.topoKaons_pid = [topoKaons_PID]
-        self.protons = [topoProtons]
-        self.protons_pid = [topoProtons_PID]
-        self.ks = ks
-        self.config = deepcopy(config)
-				self.config_xibm = config_xibm
-        self.config['AM_MIN'] = '5200*MeV'
-        self.lines = []
-        # Lb -> Lc+- H-+ (+WS)
-        self._makeLb2LcH()
-        # Lb -> Lc+  D-/D_s-/D*-/D_s*-
-        self._makeLb2LcDm()
-        # Lb -> Lc+/Lc(2595)+/Lc(2625)+  D_s-
-        self._makeLb2LcDs()
-        # Lb -> Xic+- H-+ (+WS)
-        self._makeLb2XicH()
-
-        ### Xib- -> Xic0 H- (+WS)
-        self._makeXib2Xic0H()
-        ### Omegab- -> Omegac0 H- (+WS)
-        self._makeOmegab2Omegac0H()
-        ### Omega_b- -> Xic+ K- pi-, Xic+ -> pKpi
-        self._makeOmegab2XicpKPi()
-        ### Omega_b- -> Lambda_c+ K- K-
-        self._makeOmegab2LcKK()
-        ### Xib0 -> Xic+ D- (+WS)
-        self._makeXib02XicD()
-        ### Xib- -> Xic0 D- (+WS)
-        self._makeXib2Xic0D()
-        ### Xib0 -> Xic+ HHH- (+WS) (HHH = 3pi, Kpipi)
-        self._makeXib02XicHHH()
-        ###Xib- -> Xic0 HHH- (+WS) (HHH = 3pi, Kpipi)
-        self._makeXib2Xic0HHH()
-        ### Xb- -> Lc+ D(s)- K-
-        self._makeXib2LcDK()
-        ### Xb- -> Lc+ Ds- K- Pi+
-        self._makeXib02LcDsKPi()
-        ### Xb- -> Xic0 Pim,,Xic0 -> Xim Pip 
-        self._makeXibm2Xic0Pim2XimPipPim("LL")
-        self._makeXibm2Xic0Pim2XimPipPim("DD")
-        ### Xb- -> Xic0 Pim,,Xic0 -> Lambda0 Km pip 
-        self._makeXibm2Xic0Pim2Lambda0KmPipPim("LL")
-        self._makeXibm2Xic0Pim2Lambda0KmPipPim("DD")
-        ### Xb- -> Xic0 Pim,,Xic0 -> p Ks Km 
-        self._makeXibm2Xic0Pim2PKsKmPim("LL")
-        self._makeXibm2Xic0Pim2PKsKmPim("DD")
-        
-        ### B- -> Lc+ Ds- pbar
-        self._makeB2LcDspbar()
-
-        # Sb+- -> D0(HH) p+-
-        self._makeSb2D0P()
-        # Sb -> D-+(HHH) p+-
-        self._makeSb02DP()
-        # Lb -> D0(HH/K3Pi) p+- H-+
-        self._makeLb2D0HHPH()
-        # Lb -> D0(HH) p+- p-+ (+WS)
-        self._makeLb2D0PPbar()
-        # Lb -> Lc+- 3Pi, KPiPi, ppbarPi, ppbarK (+WS)
-        self._makeLb2LcHHH()
-        # Lb -> Lc D (+WS)
-        self._makeLb2LcD()
-        # Lb -> Lc+ KS K-
-        self._makeLb2LcKSK("LL")
-        self._makeLb2LcKSK("DD")
-
-        # Lb  -> Lc D K*
-        MMSeld2hhh = [
-            filterSelection(
-                'D2HHH4LcDKst',
-                "(MM > (1864.84-50.)*MeV) & (MM < (1968.49+50.)*MeV)",
-                self.d.hhh_pid)
-        ]
-        self._makeLb2LcDKst(MMSeld2hhh)
-        self._makeLb2LcDstKst()
-        # Lb  -> Lc D*0 K, D*0 -> D0 gamma/Pi0_resolved/merged
-        self._makeLb2Dst0K('Dst02D0GammaD2HH', self.dst.d0gamma_hh_pid)
-        self._makeLb2Dst0K('Dst02D0Pi0ResolvedD2HH',
-                           self.dst.d0pi0_resolved_pid)
-        self._makeLb2Dst0K('Dst02D0Pi0MergedD2HH', self.dst.d0pi0_merged_pid)
-
-        ### bc baryon -> Lc D0
-        self._makeX2LcD0()
-        ### bc baryon -> Lc D0 H (+WS)
-        self._makeX2LcD0H()
-        ### bc baryon -> Xi_cc+ pi-
-        self._makeX02XiccH()
-        ### bc baryon -> Xi_cc++ pi-
-        self._makeX2XiccH()
-        ### Xib -> Lc H+H-, LcH-H- (+WS)
-        self._makeX2LcHH()
-        ### bc baryon -> Lc HHHH (+WS)
-        self._makeX2LcKPiPiPi()
-        ### Xib,Omega_b -> Lc HH (+WS)
-        self._makeXib2XicHH()
-
-        # Lb -> Lc D* (+WS)
-        self._makeLb2LcDst()
-        # X -> Lc Lc (+WS)
-        self._makeX2LcLc()
-        # Lb -> Lc Lc n (+WS)
-        self._makeLb2LcLcn()
-        # Lb -> Lc 5pi
-        self._makeLb2Lc5Pi()
-        # Lb -> D0 Lambda0, D0(HH/K3Pi)
-        self._makeLb2D0Lambda0()
-
-        # Lb -> D+ p h- h-
-        self._makeLb2DpHH()
-        # Xib -> D0 p h- h-
-        self._makeXib2D0pHH()
-
-        # B -> Lc pbar h-
-        self._makeB2LcpbarH()
-        # B-> Lc pbar
-        self._makeB2Lcpbar()
-        # B- -> Lc Lc K-
-        self._makeB2LcLcK()
-
-        # B0->Lc pbar Ks
-        self._makeB02LcpbarKS('DD')
-        self._makeB02LcpbarKS('LL')
-
-        # Lb -> D(s)+ Lambda0 pi-
-        self._makeLb2DLambda0pi()
-        # Xib -> D0 Lambda0 pi-
-        self._makeXib2D0Lambda0pi()
-        # B0 -> Lambdac+ Lambda0bar h-
-        self._makeB2LcLambda0barH()
-
-        # Lb -> D0 p h (D02K3Pi/D02KsDDHH/D02KsLLHH)
-        self._makeLb2D0ph('D02K3Pi', self.d.k3pi_pid)
-        self._makeLb2D0ph('D02HHHHPID', self.d.hhhh_pid)
-        self._makeLb2D0ph('D02KsDDHH', self.d.kshh_dd_pid)
-        self._makeLb2D0ph('D02KsLLHH', self.d.kshh_ll_pid)
-        # Lb -> D0 p h WS
-        self._makeLb2D0phWS('D02K3PiWS', self.d.k3pi_pid)
-        self._makeLb2D0phWS('D02HHHHPIDWS', self.d.hhhh_pid)
-        self._makeLb2D0phWS('D02KsDDHHWS', self.d.kshh_dd_pid)
-        self._makeLb2D0phWS('D02KsLLHHWS', self.d.kshh_ll_pid)
-
-        # Lb -> D(s)- D0(K3Pi/HH) p
-        self._makeLb2DD0p('D02K3Pi', self.d.k3pi_pid)
-        self._makeLb2DD0p('D2HH', self.d.hh_pid)
-        # Xi_bc+ --> D+ p K-
-        self._makeXibc2DpK()
-
-        # Lb -> Lc+- 3Pi
-        self._makeLb2LcPiPiPiFullDST()
-        # Xib -> Xic+- 3Pi
-        self._makeXib02XicPiPiPiFullDST()
-        # Xib- -> Xic+- 3Pi
-        self._makeXib2Xic0PiPiPiFullDST()
-        # Omegab- -> Omegac0- 3Pi
-        self._makeOmegab2Omegac0PiPiPiFullDST()
-
-        # Lb->sigmacpp(LcPi)4Pi
-        self._makeLb2sigmacpp4Pi()
-        # Lb->sigmacpp(LcPi)D0(KPi)KPi
-        self._makeLb2sigmacppD0KPi()
-
-        # Lb -> D D Lambda0 (+18 lines)
-        self._makeLb2DDLambda('DD')
-        self._makeLb2D0D0Lambda('DD')
-        self._makeLb2DstDLambda('DD')
-        self._makeLb2DstDstLambda('DD')
-        self._makeLb2DDLambda('LL')
-        self._makeLb2D0D0Lambda('LL')
-        self._makeLb2DstDLambda('LL')
-        self._makeLb2DstDstLambda('LL')
-
-        # Lb -> D+ D- p K-
-        self._makeLb2DDpK()
-
-        # B0 -> Lc+ Sigmacpp(LcPi) K+
-        self._makeB02LcSigmacppK()
-
-        # Bs -> Lc- Sigma+
-        self._makeBs2LcSigma()
-
-        # B+ -> Lc+ Xic- pi+
-        self._makeB2LcXicPi()
-
-        # B- -> Xic+ pi- pbar
-        self._makeB2XicpbarPi()
-        # B0 -> Xic+ pi+ pi- pbar
-        self._makeB02XicpbarPiPi()
-        # B0 -> Xic+ K+ pi- pbar
-        self._makeB02XicpbarKPi()
-        # B0 -> Lambda0 D(*)+ pbar
-        self._makeB02DpbarLambda('DD')
-        self._makeB02DpbarLambda('LL')
-        # B- -> Lambda0 D0 pbar
-        self._makeB2D0pbarLambda('DD')
-        self._makeB2D0pbarLambda('LL')
-        # B0 -> Lambda0 D0 pbar K
-        self._makeB02D0pbarKLambda('DD')
-        self._makeB02D0pbarKLambda('LL')
-
-        # Xib- -> Xic0 D~0 K-, Xib- -> Xic+ D- K-, Xib- -> Xic+ D*- K-
-        self._makeXib2XicDK()
-        # Xib0 -> Xic+ D~0 K-
-        self._makeXib02XicD0K()
-        # Omegab- -> Xic0 K Pi Pi
-        self._makeOmegab2Xic0KPiPi()
-        # Xib0 -> D0 Lambda0 pi+ pi-
-        self._makeXib02D0LambdaPiPi()
-        # Xib- -> Lambdac+ pi+ K- pi- pi-
-        self._makeXib2LcKHHH()
-        # Xib- -> Xic+ pi+ pi- pi- pi-
-        self._makeXib2XicHHHH()
-
-    def _makeLb2LcH(self):
-        '''Make RS and WS Lb -> Lc H (H=pi,K) + cc.'''
-        pions = self.topoPions
-        kaons = self.topoKaons
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {
-            'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"],
-            'Lb2LcK': ["[Lambda_b0 -> Lambda_c+ K-]cc"]
-        }
-        inputs = {'Lb2LcPi': self.lc + pions, 'Lb2LcK': self.lc + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {
-            'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"],
-            'Lb2LcKWS': ["[Lambda_b0 -> Lambda_c+ K+]cc"]
-        }
-        inputs = {'Lb2LcPiWS': self.lc + pions, 'Lb2LcKWS': self.lc + kaons}
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {'Lb2LcPiNoIP': ["[Lambda_b0 -> Lambda_c+ pi-]cc"]}
-        #inputs = {'Lb2LcPiNoIP': self.lc+pions}
-        inputs = {'Lb2LcPiNoIP': self.lc_tight + pions}  # use TightLc
-        noip = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config, False)
-        decays = {'Lb2LcPiNoIPWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"]}
-        #inputs = {'Lb2LcPiNoIPWS': self.lc+pions}
-        inputs = {'Lb2LcPiNoIPWS': self.lc_tight + pions}
-        noip_ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config, False)
-        decays = {'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"] }
-        inputs = {'Lb2LcPi': self.lc_pkk + pions}
-        rs_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
-        decays = {'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"] }
-        inputs = {'Lb2LcPiWS': self.lc_pkk + pions}
-        ws_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
-        decays = {'Lb2LcPi': ["[Lambda_b0 -> Lambda_c+ pi-]cc"] }
-        inputs = {'Lb2LcPi': self.lc_ppipi + pions}
-        rs_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
-        decays = {'Lb2LcPiWS': ["[Lambda_b0 -> Lambda_c+ pi+]cc"] }
-        inputs = {'Lb2LcPiWS': self.lc_ppipi + pions}
-        ws_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-        self.lines.append(ProtoLine(noip, 1.0))
-        self.lines.append(ProtoLine(noip_ws, 0.1))
-        self.lines.append(ProtoLine(rs_pkk, 1.0))
-        self.lines.append(ProtoLine(ws_pkk, 0.1))
-        self.lines.append(ProtoLine(rs_ppipi, 1.0))
-        self.lines.append(ProtoLine(ws_ppipi, 0.1))
-
-    def _makeLb2LcDm(self):
-        '''Make Lb0 -> Lc+ D-/D_s- + cc.'''
-        '''Make Lb0 -> Lc+ D*- + cc.'''
-        '''Make Lb0 -> Lc+ D_s*- + cc.'''
-        lcLL = self.lc_lambdapiLL
-        lcDD = self.lc_lambdapiDD
-        d2x = self.d.hhh_pid
-        decays = {
-            'Lb2LcDLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D-]cc"],
-            'Lb2LcDLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D-]cc"],
-        }
-        inputs = {
-            'Lb2LcDLc2Lambda0LLPi': lcLL + d2x,
-            'Lb2LcDLc2Lambda0DDPi': lcDD + d2x,
-        }
-        dname = "D2HHHPID"
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        
-        #comboCuts = [
-        #    LoKiCuts(['AM'], self.config).code(),
-        #]
-        #comboCuts = LoKiCuts.combine(comboCuts)
-        #momCuts = [
-        #    #LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code()
-        #    'ALL',
-        #]
-        #momCuts = LoKiCuts.combine(momCuts)
-
-        d2x = self.dst.d0pi_pid
-        decays = {
-            'Lb2LcDstLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
-            'Lb2LcDstLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
-        }
-        inputs = {
-            'Lb2LcDstLc2Lambda0LLPi': lcLL + d2x,
-            'Lb2LcDstLc2Lambda0DDPi': lcDD + d2x,
-        }
-
-        dname = ""
-        #names = list(decays.keys())
-        #rs = []
-        #sname = names[0] + dname + 'Beauty2Charm'
-        #cp = CombineParticles(
-        #    CombinationCut=comboCuts,
-        #    MotherCut=momCuts,
-        #    DecayDescriptors=decays[names[0]])
-        #r = Selection(
-        #    sname,
-        #    Algorithm=cp,
-        #    RequiredSelections=inputs[names[0]])
-        #rs.append(r)
-        #sname = names[1] + dname + 'Beauty2Charm'
-        #cp = CombineParticles(
-        #    CombinationCut=comboCuts,
-        #    MotherCut=momCuts,
-        #    DecayDescriptors=decays[names[1]])
-        #r = Selection(
-        #    sname,
-        #    Algorithm=cp,
-        #    RequiredSelections=inputs[names[1]])
-        #rs.append(r)
-        #self.lines.append(ProtoLine(rs, 1.0))
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        
-        d2x = self.dst.d0pi_k3pi_pid
-        decays = {
-            'Lb2LcDstLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
-            'Lb2LcDstLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"],
-        }
-        inputs = {
-            'Lb2LcDstLc2Lambda0LLPi': lcLL + d2x,
-            'Lb2LcDstLc2Lambda0DDPi': lcDD + d2x,
-        }
-        dname = "DstarD02K3Pi"
-        #names = list(decays.keys())
-        #rs = []
-        #sname = names[0] + dname + 'Beauty2Charm'
-        #cp = CombineParticles(
-        #    CombinationCut=comboCuts,
-        #    MotherCut=momCuts,
-        #    DecayDescriptors=decays[names[0]])
-        #r = Selection(
-        #    sname,
-        #    Algorithm=cp,
-        #    RequiredSelections=inputs[names[0]])
-        #rs.append(r)
-        #sname = names[1] + dname + 'Beauty2Charm'
-        #cp = CombineParticles(
-        #    CombinationCut=comboCuts,
-        #    MotherCut=momCuts,
-        #    DecayDescriptors=decays[names[1]])
-        #r = Selection(
-        #    sname,
-        #    Algorithm=cp,
-        #    RequiredSelections=inputs[names[1]])
-        #rs.append(r)
-        #self.lines.append(ProtoLine(rs, 1.0))
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        
-        d2x = self.dst.dgamma_hhh_pid
-        decays = {
-            'Lb2LcDsstarLc2Lambda0LLPi': ["[Lambda_b0 -> Lambda_c+ D*_s-]cc"],
-            'Lb2LcDsstarLc2Lambda0DDPi': ["[Lambda_b0 -> Lambda_c+ D*_s-]cc"],
-        }
-        inputs = {
-            'Lb2LcDsstarLc2Lambda0LLPi': lcLL + d2x,
-            'Lb2LcDsstarLc2Lambda0DDPi': lcDD + d2x,
-        }
-        dname = "DsstarD02HHHPID"
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2LcDs(self):
-        '''Make Lambda_b0 -> Lambda_c+ D_s-'''
-        '''Make Lambda_b0 -> Lambda_c(2595)+ D_s-'''
-        '''Make Lambda_b0 -> Lambda_c(2625)+ D_s-'''
-
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4700*MeV'
-        config['AM_MAX'] = '6500*MeV'
-
-        lc         = self.lc
-        lcstar2595 = self.lcstar2595
-        lcstar2625 = self.lcstar2625
-        d2x        = self.d.hhh_pid
-        decays = {
-            'Lb2LcDs':     ["[Lambda_b0 -> Lambda_c+ D-]cc"],
-            'Lb2Lc2595Ds': ["[Lambda_b0 -> Lambda_c(2595)+ D-]cc"],
-            'Lb2Lc2625Ds': ["[Lambda_b0 -> Lambda_c(2625)+ D-]cc"],
-        }
-        inputs = {
-            'Lb2LcDs':     lc + d2x,
-            'Lb2Lc2595Ds': lcstar2595 + d2x,
-            'Lb2Lc2625Ds': lcstar2625 + d2x,
-        }
-        dname = "D2HHHPID"
-        rs = makeB2XSels(decays, dname, inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {
-            'Lb2LcDsWS':     ["[Lambda_b0 -> Lambda_c+ D+]cc"],
-            'Lb2Lc2595DsWS': ["[Lambda_b0 -> Lambda_c(2595)+ D+]cc"],
-            'Lb2Lc2625DsWS': ["[Lambda_b0 -> Lambda_c(2625)+ D+]cc"],
-        }
-        inputs = {
-            'Lb2LcDsWS':     lc + d2x,
-            'Lb2Lc2595DsWS': lcstar2595 + d2x,
-            'Lb2Lc2625DsWS': lcstar2625 + d2x,
-        }
-        ws = makeB2XSels(decays, dname, inputs, config)
-        self.lines.append(ProtoLine(ws, 1.0))
-
-    def _makeB2Lcpbar(self):
-        '''Make RS and WS B -> Lc pbar + cc.'''
-        protons = self.protons
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {'B2Lcpbar': ["[B0 -> Lambda_c+ p~-]cc"]}
-        inputs = {'B2Lcpbar': self.lc + protons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {'B2LcpbarWS': ["[B0 -> Lambda_c+ p+]cc"]}
-        inputs = {'B2LcpbarWS': self.lc + protons}
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeB2LcLcK(self):
-        '''Make B- -> Lc- Lc+ K- + cc.'''
-        config = deepcopy(self.config)
-        config['BPVIPCHI2_MAX'] = '50'
-        decays = {'B2LcLcK': ["[B- -> Lambda_c~- Lambda_c+ K-]cc"]}
-        inputs = {'B2LcLcK': self.lc + self.topoKaons_pid}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2XicH(self):
-        '''Make RS and WS Lb -> Xi_c+ H (H=pi,K) + cc.'''
-        pions = self.topoPions
-        kaons = self.topoKaons
-        decays = {
-            'Lb2XicPi': ["[Lambda_b0 -> Xi_c+ pi-]cc"],
-            'Lb2XicK': ["[Lambda_b0 -> Xi_c+ K-]cc"]
-        }
-        inputs = {'Lb2XicPi': self.xic + pions, 'Lb2XicK': self.xic + kaons}
-        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        decays = {
-            'Lb2XicPiWS': ["[Lambda_b0 -> Xi_c+ pi+]cc"],
-            'Lb2XicKWS': ["[Lambda_b0 -> Xi_c+ K+]cc"]
-        }
-        inputs = {
-            'Lb2XicPiWS': self.xic + pions,
-            'Lb2XicKWS': self.xic + kaons
-        }
-        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        decays = {'Lb2XicPiNoIP': ["[Lambda_b0 -> Xi_c+ pi-]cc"]}
-        inputs = {'Lb2XicPiNoIP': self.xic + pions}
-        inputs = {'Lb2XicPiNoIP': self.xic_tight + pions}
-        noip = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config, False)
-        decays = {'Lb2XicPiNoIPWS': ["[Lambda_b0 -> Xi_c+ pi+]cc"]}
-        inputs = {'Lb2XicPiNoIPWS': self.xic_tight + pions}
-        #inputs = {'Lb2XicPiNoIPWS':self.xic+pions}
-        noip_ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config, False)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-        self.lines.append(ProtoLine(noip, 1.0))
-        self.lines.append(ProtoLine(noip_ws, 0.1))
-
-    def _makeXib2Xic0H(self):
-        '''Make RS and WS Xi_b- -> Xi_c0 H (H=pi,K) + cc.'''
-        pions = self.topoPions
-        kaons = self.topoKaons
-        decays = {
-            'Xib2Xic0Pi': ["[Xi_b- -> Xi_c0 pi-]cc"],
-            'Xib2Xic0K': ["[Xi_b- -> Xi_c0 K-]cc"]
-        }
-        inputs = {
-            'Xib2Xic0Pi': self.xic0 + pions,
-            'Xib2Xic0K': self.xic0 + kaons
-        }
-        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        decays = {
-            'Xib2Xic0PiWS': ["[Xi_b- -> Xi_c0 pi+]cc"],
-            'Xib2Xic0KWS': ["[Xi_b- -> Xi_c0 K+]cc"]
-        }
-        inputs = {
-            'Xib2Xic0PiWS': self.xic0 + pions,
-            'Xib2Xic0KWS': self.xic0 + kaons
-        }
-        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        decays = {'Xib2Xic0PiNoIP': ["[Xi_b- -> Xi_c0 pi-]cc"]}
-        inputs = {'Xib2Xic0PiNoIP': self.xic0 + pions}
-        noip = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config, False)
-        decays = {'Xib2Xic0PiNoIPWS': ["[Xi_b- -> Xi_c0 pi+]cc"]}
-        inputs = {'Xib2Xic0PiNoIPWS': self.xic0 + pions}
-        noip_ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config, False)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-        self.lines.append(ProtoLine(noip, 1.0))
-        self.lines.append(ProtoLine(noip_ws, 0.1))
-
-    def _makeOmegab2Omegac0H(self):
-        '''Make RS and WS Omega_b- -> Omega_c0 H (H=pi,K) + cc.'''
-        pions = self.topoPions
-        kaons = self.topoKaons
-        decays = {
-            'Omegab2Omegac0Pi': ["[Omega_b- -> Omega_c0 pi-]cc"],
-            'Omegab2Omegac0K': ["[Omega_b- -> Omega_c0 K-]cc"]
-        }
-        inputs = {
-            'Omegab2Omegac0Pi': self.omegac0 + pions,
-            'Omegab2Omegac0K': self.omegac0 + kaons
-        }
-        rs = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
-        decays = {
-            'Omegab2Omegac0PiWS': ["[Omega_b- -> Omega_c0 pi+]cc"],
-            'Omegab2Omegac0KWS': ["[Omega_b- -> Omega_c0 K+]cc"]
-        }
-        inputs = {
-            'Omegab2Omegac0PiWS': self.omegac0 + pions,
-            'Omegab2Omegac0KWS': self.omegac0 + kaons
-        }
-        ws = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config)
-        decays = {'Omegab2Omegac0PiNoIP': ["[Omega_b- -> Omega_c0 pi-]cc"]}
-        #inputs = {'Omegab2Omegac0PiNoIP': self.omegac0+pions}
-        inputs = {'Omegab2Omegac0PiNoIP': self.omegac0_tight + pions}
-        noip = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config, False)
-        decays = {'Omegab2Omegac0PiNoIPWS': ["[Omega_b- -> Omega_c0 pi+]cc"]}
-        #inputs = {'Omegab2Omegac0PiNoIPWS':self.omegac0+pions}
-        inputs = {'Omegab2Omegac0PiNoIPWS': self.omegac0_tight + pions}
-        noip_ws = makeB2XSels(decays, 'Omegac02PKKPi', inputs, self.config,
-                              False)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-        self.lines.append(ProtoLine(noip, 1.0))
-        self.lines.append(ProtoLine(noip_ws, 0.1))
-
-    def _makeOmegab2XicpKPi(self):
-        '''Make Omega_b- -> Xic+ K- pi-, Xic+ -> pKpi'''
-        pions = self.pions
-        kaons = self.kaons
-        decays = {'Omegab2XicpKPi': ["[Omega_b- -> Xi_c+ K- pi-]cc"]}
-        inputs = {'Omegab2XicpKPi': self.xic + kaons + pions}
-        rs = makeB2XSels(decays, 'Xicp2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeOmegab2LcKK(self):
-        '''Make Omega_b- -> Lambda_c+ K- K-'''
-        kaons = self.kaons
-        decays = {'Omegab2LcKK': ["[Omega_b- -> Lambda_c+ K- K-]cc"]}
-        inputs = {'Omegab2LcKK': self.lc + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXib02XicD(self):
-        '''Make RS and WS Xi_b0 -> Xi_c+ D (D=D-,Ds) + cc.'''
-        decays = {'Xib02XicD': ["[Xi_b0 -> Xi_c+ D-]cc"]}
-        inputs = {'Xib02XicD': self.xic + self.d.hhh_cf_pid}
-        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        decays = {'Xib02XicDWS': ["[Xi_b0 -> Xi_c+ D+]cc"]}
-        inputs = {'Xib02XicDWS': self.xic + self.d.hhh_cf_pid}
-        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXib2Xic0D(self):
-        '''Make RS and WS Xi_b- -> Xi_c0 D (D=D-,Ds) + cc.'''
-        decays = {'Xib2Xic0D': ["[Xi_b- -> Xi_c0 D-]cc"]}
-        inputs = {'Xib2Xic0D': self.xic0 + self.d.hhh_cf_pid}
-        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        decays = {'Xib2Xic0DWS': ["[Xi_b- -> Xi_c0 D+]cc"]}
-        inputs = {'Xib2Xic0DWS': self.xic0 + self.d.hhh_cf_pid}
-        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXibm2Xic0Pim2XimPipPim(self, lmd):
-        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Xi- pi+ + cc
-        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
-        comboCuts = [
-            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 90, units),
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
-        used_xic0 = self.xic0_ximpip_DD
-        if "LL" in lmd:
-            used_xic0 = self.xic0_ximpip_LL
-        else:
-            pass
-        rs = [Selection(
-            'Xibm2Xic0Pim2XimPipPim' + lmd + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=used_xic0 + self.pions )]
-        self.lines.append(ProtoLine(rs, 1.0))
-    
-    def _makeXibm2Xic0Pim2Lambda0KmPipPim(self, lmd):
-        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> Lmd0 K- pi+ + cc
-        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
-        comboCuts = [
-            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
-        used_xic0 = self.xic0_lmd0kmpip_DD
-        if "LL" in lmd:
-            used_xic0 = self.xic0_lmd0kmpip_LL
-        else:
-            pass
-        rs = [Selection(
-            'Xibm2Xic0Pim2Lambda0KmPipPim' + lmd + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=used_xic0 + self.pions )]
-        self.lines.append(ProtoLine(rs, 1.0))
-		
-    def _makeXibm2Xic0Pim2PKsKmPim(self, ks):
-        #Makes Xi_b- -> Xi_c0 pi-, Xi_c0 -> p Ks K- + cc
-        dm, units = LoKiCuts.cutValue(self.config_xibm['MASS_WINDOW'])
-        comboCuts = [
-            "(ADAMASS('Xi_b-') < %s*%s) " % (dm + 100, units)
-        ]
-        comboCuts.append(LoKiCuts(['ADOCA12'], self.config_xibm).code())
-        comboCuts = LoKiCuts.combine(comboCuts)
-        momCuts = [
-            "(ADMASS('Xi_b-') < %s*%s) " % (dm + 100, units),
-        ]
-        momCuts = LoKiCuts.combine(momCuts)
-        cp = CombineParticles(
-            CombinationCut=comboCuts,
-            MotherCut=momCuts,
-            DecayDescriptors=["Xi_b- -> Xi_c0 pi-", "Xi_b~+ -> Xi_c~0 pi+"])
-        used_xic0 = self.xic0_pkskm_DD
-        if "LL" in ks:
-            used_xic0 = self.xic0_pkskm_LL
-        else:
-            pass
-        rs = [Selection(
-            'Xibm2Xic0Pim2PKsKmPim' + ks + 'Beauty2Charm',
-            Algorithm=cp,
-            RequiredSelections=used_xic0 + self.pions )]
-        self.lines.append(ProtoLine(rs, 1.0))
-    
-    def _makeXib02XicHHH(self):
-        '''Make RS and WS Xi_b0 -> Xi_c+ HHH (HHH=3pi,Kpipi) + cc.'''
-        pipipi = self.hhh.pipipi
-        kpipi = self.hhh.kpipi
-        decays = {
-            'Xib02XicPiPiPi': ["[Xi_b0 -> Xi_c+ a_1(1260)-]cc"],
-            'Xib02XicKPiPi': ["[Xi_b0 -> Xi_c+ K_1(1270)-]cc"]
-        }
-        inputs = {
-            'Xib02XicPiPiPi': self.xic + pipipi,
-            'Xib02XicKPiPi': self.xic + kpipi
-        }
-        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        decays = {
-            'Xib02XicPiPiPiWS': ["[Xi_b0 -> Xi_c+ a_1(1260)+]cc"],
-            'Xib02XicKPiPiWS': ["[Xi_b0 -> Xi_c+ K_1(1270)+]cc"]
-        }
-        inputs = {
-            'Xib02XicPiPiPiWS': self.xic + pipipi,
-            'Xib02XicKPiPiWS': self.xic + kpipi
-        }
-        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXib2Xic0HHH(self):
-        '''Make RS and WS Xi_b- -> Xi_c0 HHH- (HHH=3pi,Kpipi) + cc.'''
-        pipipi = self.hhh.pipipi
-        kpipi = self.hhh.kpipi
-        decays = {
-            'Xib2Xic0PiPiPi': ["[Xi_b- -> Xi_c0 a_1(1260)-]cc"],
-            'Xib2Xic0KPiPi': ["[Xi_b- -> Xi_c0 K_1(1270)-]cc"]
-        }
-        inputs = {
-            'Xib2Xic0PiPiPi': self.xic0 + pipipi,
-            'Xib2Xic0KPiPi': self.xic0 + kpipi
-        }
-        rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        decays = {
-            'Xib2Xic0PiPiPiWS': ["[Xi_b- -> Xi_c0 a_1(1260)+]cc"],
-            'Xib2Xic0KPiPiWS': ["[Xi_b- -> Xi_c0 K_1(1270)+]cc"]
-        }
-        inputs = {
-            'Xib2Xic0PiPiPiWS': self.xic0 + pipipi,
-            'Xib2Xic0KPiPiWS': self.xic0 + kpipi
-        }
-        ws = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2LcHHH(self):
-        '''Make RS and WS X_b ->Lc HHH (H=pi,K) + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        pipipi = self.hhh.pipipi
-        kpipi = self.hhh.kpipi
-        kkpi = self.hhh.kkpi
-        ppbarpi = self.hhh.ppbarpi
-        ppbark = self.hhh.ppbark
-        pppbar = self.hhh.pppbar
-
-        ppipi = self.hhh.ppipiOS
-        pkpi = self.hhh.pkpiOS
-        pkk = self.hhh.pkkOS
-
-        decays = {
-            'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
-            'Lb2LcKPiPi': ["[Lambda_b0 -> Lambda_c+ K_1(1270)-]cc"],
-            'Lb2LcppbarPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
-            'Lb2LcppbarK': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"],
-            'Lb2LcKKPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]
-        }
-        inputs = {
-            'Lb2LcPiPiPi': self.lc + pipipi,
-            'Lb2LcKPiPi': self.lc + kpipi,
-            'Lb2LcppbarPi': self.lc + ppbarpi,
-            'Lb2LcppbarK': self.lc + ppbark,
-            'Lb2LcKKPi': self.lc + kkpi
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {
-            'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
-            'Lb2LcKPiPiWS': ["[Lambda_b0 -> Lambda_c+ K_1(1270)+]cc"],
-            'Lb2LcppbarPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
-            'Lb2LcppbarKWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"],
-            'Lb2LcKKPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]
-        }
-        inputs = {
-            'Lb2LcPiPiPiWS': self.lc + pipipi,
-            'Lb2LcKPiPiWS': self.lc + kpipi,
-            'Lb2LcppbarPiWS': self.lc + ppbarpi,
-            'Lb2LcppbarKWS': self.lc + ppbark,
-            'Lb2LcKKPiWS': self.lc + kkpi
-        }
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
-        inputs = {'Lb2LcPiPiPi': self.lc_pkk + pipipi}
-        rs_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
-        decays = {'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]}
-        inputs = {'Lb2LcPiPiPiWS': self.lc_pkk + pipipi}
-        ws_pkk = makeB2XSels(decays, 'Lc2PKK', inputs, config)
-        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
-        inputs = {'Lb2LcPiPiPi': self.lc_ppipi + pipipi}
-        rs_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
-        decays = {'Lb2LcPiPiPiWS': ["[Lambda_b0 -> Lambda_c+ a_1(1260)+]cc"]}
-        inputs = {'Lb2LcPiPiPiWS': self.lc_ppipi + pipipi}
-        ws_ppipi = makeB2XSels(decays, 'Lc2PPiPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-        self.lines.append(ProtoLine(rs_pkk, 1.0))
-        self.lines.append(ProtoLine(ws_pkk, 0.1))
-        self.lines.append(ProtoLine(rs_ppipi, 1.0))
-        self.lines.append(ProtoLine(ws_ppipi, 0.1))
-
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {
-            'B02Lcpbarpbarp': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
-            'B02LcpbarPiPi': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
-            'B02LcpbarKPi': ["[B0 -> Lambda_c+ a_1(1260)-]cc"],
-            'B02LcpbarKK': ["[B0 -> Lambda_c+ a_1(1260)-]cc"]
-        }
-        inputs = {
-            'B02Lcpbarpbarp': self.lc + pppbar,
-            'B02LcpbarPiPi': self.lc + ppipi,
-            'B02LcpbarKPi': self.lc + pkpi,
-            'B02LcpbarKK': self.lc + pkk,
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        decays = {
-            'B02LcpbarpbarpWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
-            'B02LcpbarPiPiWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
-            'B02LcpbarKPiWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
-            'B02LcpbarKKWS': ["[B0 -> Lambda_c+ a_1(1260)+]cc"],
-        }
-        inputs = {
-            'B02LcpbarpbarpWS': self.lc + pppbar,
-            'B02LcpbarPiPiWS': self.lc + ppipi,
-            'B02LcpbarKPiWS': self.lc + pkpi,
-            'B02LcpbarKKWS': self.lc + pkk,
-        }
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2D0HHPH(self):
-        '''Makes RS Lb -> D0(HH/HHHH) p+- H-+ + c.c. and WS lines'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decs = ["Lambda_b0 -> D0 Lambda0", "Lambda_b0 -> D0 Lambda~0"]
-        decays = {'Lb2D0PH': decs}
-        inputs = {'Lb2D0PH': self.d0_pid + self.hh.ph_pid}
-        rs = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        inputs_k3pi = {'Lb2D0PH': self.d0_k3pi_pid + self.hh.ph_pid}
-        rs_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, config)
-        self.lines.append(ProtoLine(rs_k3pi, 1.0))
-        decays = {'Lb2D0PHWS': decs}
-        inputs = {'Lb2D0PHWS': self.d0_pid + self.hh.ph_ws}
-        ws = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-        inputs_k3pi = {'Lb2D0PHWS': self.d0_k3pi_pid + self.hh.ph_ws}
-        ws_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, config)
-        self.lines.append(ProtoLine(ws_k3pi, 0.1))
-        config['B2CBBDT_MIN'] = '-0.1'
-        decays = {'Lb2D0PHNoPID': decs}
-        inputs = {'Lb2D0PHNoPID': self.d0_pid + self.hh.ph_nopid}
-        rs = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'Lb2D0PHNoPIDWS': decs}
-        inputs = {'Lb2D0PHNoPIDWS': self.d0_pid + self.hh.ph_nopid_ws}
-        ws = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2D0PPbar(self):
-        ''' Makes RS Lb->D0(HH) p+- p-+ and WS lines (mass window for a missing neutron)'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6000*MeV'
-        config['AM_MIN'] = '3000*MeV'
-        decs = ["Lambda_b0 -> D0 rho(770)0"]
-        decays = {'Lb2D0PPbar': decs}
-        inputs = {'Lb2D0PPbar': self.d0_pid + self.hh.ppbar_pid}
-        rs = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decs = ["Lambda_b0 -> D0 rho(770)-", "Lambda_b0 -> D0 rho(770)+"]
-        decays = {'Lb2D0PPbarWS': decs}
-        inputs = {'Lb2D0PPbarWS': self.d0_pid + self.hh.ppbar_ws_pid}
-        ws = makeB2XSels(decays, 'D02HH', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2D0Lambda0(self):
-        '''Makes RS Lb -> D0(HH/K3Pi) Lambda0 + c.c.'''
-        decs = ["Lambda_b0 -> D0 Lambda0", "Lambda_b0 -> D0 Lambda~0"]
-        decays = {'Lb2D0Lambda0DD': decs}
-        inputs = {'Lb2D0Lambda0DD': self.d0_pid + self.lambda0["DD"]}
-        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_dd, 1.0))
-        inputs_k3pi = {'Lb2D0Lambda0DD': self.d0_k3pi + self.lambda0["DD"]}
-        lb_dd_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, self.config)
-        self.lines.append(ProtoLine(lb_dd_k3pi, 1.0))
-        decays = {'Lb2D0Lambda0LL': decs}
-        inputs = {'Lb2D0Lambda0LL': self.d0_pid + self.lambda0["LL"]}
-        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_ll, 1.0))
-        inputs_k3pi = {'Lb2D0Lambda0LL': self.d0_k3pi + self.lambda0["LL"]}
-        lb_ll_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs_k3pi, self.config)
-        self.lines.append(ProtoLine(lb_ll_k3pi, 1.0))
-
-    def _makeLb2DLambda0pi(self):
-        '''Makes RS/WS Lb -> D+(HHH) Lambda0 pi- + c.c.'''
-        decays = {'Lb2DLambda0DDpi': ["[Lambda_b0 -> D+ Lambda0 pi-]cc"]}
-        inputs = {
-            'Lb2DLambda0DDpi':
-            self.d.hhh_cf_pid + self.lambda0["DD"] + self.pions
-        }
-        lb_dd = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_dd, 1.0))
-        decays = {'Lb2DLambda0LLpi': ["[Lambda_b0 -> D+ Lambda0 pi-]cc"]}
-        inputs = {
-            'Lb2DLambda0LLpi':
-            self.d.hhh_cf_pid + self.lambda0["LL"] + self.pions
-        }
-        lb_ll = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_ll, 1.0))
-        decays = {'Lb2DLambda0DDpiWS': ["[Lambda_b0 -> D+ Lambda0 pi+]cc"]}
-        inputs = {
-            'Lb2DLambda0DDpiWS':
-            self.d.hhh_cf_pid + self.lambda0["DD"] + self.pions
-        }
-        lb_dd = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_dd, 0.1))
-        decays = {'Lb2DLambda0LLpiWS': ["[Lambda_b0 -> D+ Lambda0 pi+]cc"]}
-        inputs = {
-            'Lb2DLambda0LLpiWS':
-            self.d.hhh_cf_pid + self.lambda0["LL"] + self.pions
-        }
-        lb_ll = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_ll, 0.1))
-
-    def _makeXib2D0Lambda0pi(self):
-        '''Makes Xib -> D0(HH) Lambda0 pi- + c.c.'''
-        decays = {
-            'Xib2D0Lambda0DDpi':
-            ["Xi_b- -> D0 Lambda0 pi-", "Xi_b~+ -> D0 Lambda~0 pi+"]
-        }
-        inputs = {
-            'Xib2D0Lambda0DDpi': self.d0_pid + self.lambda0["DD"] + self.pions
-        }
-        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_dd, 1.0))
-        decays = {
-            'Xib2D0Lambda0LLpi':
-            ["Xi_b- -> D0 Lambda0 pi-", "Xi_b~+ -> D0 Lambda~0 pi+"]
-        }
-        inputs = {
-            'Xib2D0Lambda0LLpi': self.d0_pid + self.lambda0["LL"] + self.pions
-        }
-        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_ll, 1.0))
-        decays = {
-            'Xib2D0Lambda0DDpiWS':
-            ["Xi_b- -> D0 Lambda~0 pi-", "Xi_b~+ -> D0 Lambda0 pi+"]
-        }
-        inputs = {
-            'Xib2D0Lambda0DDpiWS':
-            self.d0_pid + self.lambda0["DD"] + self.pions
-        }
-        lb_dd = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_dd, 0.1))
-        decays = {
-            'Xib2D0Lambda0LLpiWS':
-            ["Xi_b- -> D0 Lambda~0 pi-", "Xi_b~+ -> D0 Lambda0 pi+"]
-        }
-        inputs = {
-            'Xib2D0Lambda0LLpiWS':
-            self.d0_pid + self.lambda0["LL"] + self.pions
-        }
-        lb_ll = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(lb_ll, 0.1))
-
-    def _makeSb02DP(self):
-        '''Make RS and WS Sb0 -> D+- p-+ + cc.'''
-        protons = self.protons
-        decays = {'Sb02DP': ["[Sigma_b0 -> D- p+]cc"]}
-        inputs = {'Sb02DP': self.d.hhh_pid + protons}
-        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
-        decays = {'Sb02DPWS': ["[Sigma_b0 -> D+ p+]cc"]}
-        inputs = {'Sb02DPWS': self.d.hhh_pid + protons}
-        ws = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeSb2D0P(self):
-        '''Make Sb+- -> D0 p+- + cc.'''
-        protons = self.protons
-        decays = {'Sb2D0P': ["Sigma_b+ -> D0 p+", "Sigma_b- -> D0 p~-"]}
-        inputs = {'Sb2D0P': self.d.hh_pid + protons}
-        rs = makeB2XSels(decays, 'D2HHPID', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2LcKSK(self,ks):
-        '''Make Lb -> Lc+ Ks K- c.c.'''
-        kaons = self.kaons
-        decays = {'Lb2LcKSK' + ks: ["Lambda_b0 -> Lambda_c+ KS0 K-", "Lambda_b~0 -> Lambda_c~- KS0 K+"]}
-        inputs = {'Lb2LcKSK' + ks: self.lc + self.ks[ks] + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2LcD(self):
-        '''Makes RS + WS Lb -> Lc D + c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4000*MeV'
-        config['AM_MAX'] = '6000*MeV'
-        decays = {'Lb2LcD': ["[Lambda_b0 -> Lambda_c+ D-]cc"]}
-        inputs = {'Lb2LcD': self.d.hhh_pid + self.lc}
-        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'Lb2LcDWS': ["[Lambda_b0 -> Lambda_c+ D+]cc"]}
-        inputs = {'Lb2LcDWS': self.d.hhh_pid + self.lc}
-        ws = makeB2XSels(decays, 'D2HHHPID', inputs, config)
-        self.lines.append(ProtoLine(ws, 1.0))
-
-    def _makeLb2LcDKst(self, d2x):
-        '''Makes RS Lb -> Lc D+ Kst c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6400*MeV'
-        config['AM_MIN'] = '5200*MeV'
-        decays = {'Lb2LcDKst': ["[Lambda_b0 -> Lambda_c+ D- K*(892)~0]cc"]}
-        inputs = {
-            'Lb2LcDKst': d2x + self.lc_tight + self.hh.kpi_loose_ProbNNpid
-        }
-        rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2LcDstKst(self):
-        '''Makes RS Lb -> Lc D*(2010)+ Kst c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6400*MeV'
-        config['AM_MIN'] = '5200*MeV'
-        decays = {
-            'Lb2LcDstKst': ["[Lambda_b0 -> Lambda_c+ D*(2010)- K*(892)~0]cc"]
-        }
-        inputs = {
-            'Lb2LcDstKst':
-            self.dst.d0pi_pid + self.lc_tight + self.hh.kpi_loose_ProbNNpid
-        }
-        rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2Dst0K(self, dname, d2x):
-        '''Makes Lb  -> Lc+ D*0 K-, D*0 -> D0 gamma/Pi0_resolved/merged'''
-        kaons = self.kaons
-        decays = {
-            'Lb2LcDst0KLc2PKPi': ["[Lambda_b0 -> Lambda_c+ D*(2007)0 K-]cc"]
-        }
-        inputs = {'Lb2LcDst0KLc2PKPi': self.lc + d2x + kaons}
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeX2LcD0(self):
-        '''Makes RS X -> Lc D0 + c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {'X2LcD0': ["B+ -> Lambda_c+ D0", "B- -> Lambda_c~- D0"]}
-        inputs = {'X2LcD0': self.d.kpi_pid + self.lc}
-        rs = makeB2XSels(decays, 'D02KPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeX2LcD0H(self):
-        '''Makes RS + WS X -> Lc D0 H + c.c. Need loose pions here as they may be soft'''
-        pions = self.pions
-        kaons = self.kaons
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {
-            'X2LcD0Pi': ["B0 -> Lambda_c+ D0 pi-", "B0 -> Lambda_c~- D0 pi+"],
-            'X2LcD0K': ["B0 -> Lambda_c+ D0 K-", "B0 -> Lambda_c~- D0 K+"]
-        }
-        inputs = {
-            'X2LcD0Pi': self.d.kpi_pid + self.lc + pions,
-            'X2LcD0K': self.d.kpi_pid + self.lc + kaons
-        }
-        rs = makeB2XSels(decays, 'D02KPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {
-            'X2LcD0PiWS':
-            ["B0 -> Lambda_c+ D0 pi+", "B0 -> Lambda_c~- D0 pi-"],
-            'X2LcD0KWS': ["B0 -> Lambda_c+ D0 K+", "B0 -> Lambda_c~- D0 K-"]
-        }
-        inputs = {
-            'X2LcD0PiWS': self.d.kpi_pid + self.lc + pions,
-            'X2LcD0KWS': self.d.kpi_pid + self.lc + kaons
-        }
-        ws = makeB2XSels(decays, 'D02KPi', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeX2LcHH(self):
-        '''Makes RS + WS Xib -> Lc H+H-, LC H-H- + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {
-            'X2LcPiPiSS': ["[B- -> Lambda_c+ pi- pi-]cc"],
-            'X2LcKPiSS': ["[B- -> Lambda_c+ K- pi-]cc"],
-            'X2LcKKSS': ["[B- -> Lambda_c+ K- K-]cc"],
-            'X2LcPiPiOS': ["[B+ -> Lambda_c+ pi- pi+]cc"],
-            'X2LcKPiOS': ["[B+ -> Lambda_c+ K- pi+]cc"],
-            'X2LcPiKOS': ["[B+ -> Lambda_c+ K+ pi-]cc"],
-            'X2LcKKOS': ["[B+ -> Lambda_c+ K- K+]cc"]
-        }
-        inputs = {
-            'X2LcPiPiSS': self.lc + pions,
-            'X2LcKPiSS': self.lc + kaons + pions,
-            'X2LcKKSS': self.lc + kaons,
-            'X2LcPiPiOS': self.lc + pions,
-            'X2LcKPiOS': self.lc + kaons + pions,
-            'X2LcPiKOS': self.lc + kaons + pions,
-            'X2LcKKOS': self.lc + kaons
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-        decays = {
-            'X2LcPiPiWS': ["[B+ -> Lambda_c+ pi+ pi+]cc"],
-            'X2LcKPiWS': ["[B+ -> Lambda_c+ K+ pi+]cc"],
-            'X2LcKKWS': ["[B+ -> Lambda_c+ K+ K+]cc"]
-        }
-        inputs = {
-            'X2LcPiPiWS': self.lc + pions,
-            'X2LcKPiWS': self.lc + kaons + pions,
-            'X2LcKKWS': self.lc + kaons
-        }
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeB2LcpbarH(self):
-        '''Makes RS + WS B- -> Lc+ pbar- h- + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        protons = self.protons
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {
-            'B2LcpbarPiSS': ["[B- -> Lambda_c+ p~- pi-]cc"],
-            'B2LcpbarKSS': ["[B- -> Lambda_c+ p~- K-]cc"],
-        }
-        inputs = {
-            'B2LcpbarPiSS': self.lc + pions + protons,
-            'B2LcpbarKSS': self.lc + kaons + protons
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-        decays = {
-            'B2LcpbarPiWS':
-            ["[B+ -> Lambda_c+ p~- pi+]cc", "[B+ -> Lambda_c+ p+ pi-]cc"],
-            'B2LcpbarKWS':
-            ["[B+ -> Lambda_c+ p~- K+]cc", "[B+ -> Lambda_c+ p+ K-]cc"],
-        }
-        inputs = {
-            'B2LcpbarPiWS': self.lc + pions + protons,
-            'B2LcpbarKWS': self.lc + kaons + protons
-        }
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeB02LcpbarKS(self, ks):
-        '''Makes RS + WS B0 -> Lc+ pbar- Ks + c.c.'''
-        protons = self.protons
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {'B02LcpbarKS' + ks: ["[B0 -> Lambda_c+ p~- KS0]cc"]}
-        inputs = {'B02LcpbarKS' + ks: self.lc + self.ks[ks] + protons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'B02LcpbarKSWS' + ks: ["[B0 -> Lambda_c+ p+ KS0]cc"]}
-        inputs = {'B02LcpbarKSWS' + ks: self.lc + self.ks[ks] + protons}
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeB2LcLambda0barH(self):
-        '''Makes RS + WS B0 -> Lc+ Lambda0bar h- + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        lambdadd = self.lambda0["DD"]
-        lambdall = self.lambda0["LL"]
-        lambdas = lambdadd + lambdall
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {
-            'B02LcLambda0Pi': ["[B0 -> Lambda_c+ Lambda~0 pi-]cc"],
-            'B02LcLambda0K': ["[B0 -> Lambda_c+ Lambda~0 K-]cc"],
-        }
-        inputs = {
-            'B02LcLambda0Pi': self.lc + pions + lambdas,
-            'B02LcLambda0K': self.lc + kaons + lambdas
-        }
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-        decays = {
-            'B02LcLambda0PiWS': ["[B0 -> Lambda_c+ Lambda~0 pi+]cc"],
-            'B02LcLambda0KWS': ["[B0 -> Lambda_c+ Lambda~0 K+]cc"],
-        }
-        inputs = {
-            'B02LcLambda0PiWS': self.lc + pions + lambdas,
-            'B02LcLambda0KWS': self.lc + kaons + lambdas
-        }
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeX2LcKPiPiPi(self):
-        '''Makes RS + WS Xib -> Lc HH + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        pipipi = self.hhh.pipipi
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {'X2LcKPiPiPi': ["[B+ -> Lambda_c+ a_1(1260)+ K- ]cc"]}
-        inputs = {'X2LcKPiPiPi': self.lc + pipipi + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-        decays = {'X2LcKPiPiPiWS': ["[B+ -> Lambda_c+ a_1(1260)+ K+]cc"]}
-        inputs = {'X2LcKPiPiPiWS': self.lc + pipipi + kaons}
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXib2XicHH(self):
-        '''Makes RS + WS Xib -> Lc HH + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        decays = {
-            'Xib2XicPiPi': ["[Xi_b- -> Xi_c+ pi- pi-]cc"],
-            'Xib2XicKPi': ["[Xi_b- -> Xi_c+ K- pi-]cc"],
-            'Xib2XicKK': ["[Xi_b- -> Xi_c+ K- K-]cc"]
-        }
-        inputs = {
-            'Xib2XicPiPi': self.xic + pions,
-            'Xib2XicKPi': self.xic + kaons + pions,
-            'Xib2XicKK': self.xic + kaons
-        }
-        rs = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {
-            'Xib2XicPiPiWS': ["[Xi_b- -> Xi_c+ pi+ pi+]cc"],
-            'Xib2XicKPiWS': ["[Xi_b- -> Xi_c+ K+ pi+]cc"],
-            'Xib2XicKKWS': ["[Xi_b- -> Xi_c+ K+ K+]cc"]
-        }
-        inputs = {
-            'Xib2XicPiPiWS': self.xic + pions,
-            'Xib2XicKPiWS': self.xic + kaons + pions,
-            'Xib2XicKKWS': self.xic + kaons
-        }
-        ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXib2LcDK(self):
-        '''Makes RS + WS Xib -> Lc+ D(s)- K- + c.c.'''
-        kaons = self.kaons
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5000.*MeV'
-        decays = {'Xib2LcDK': ["[Xi_b- -> Lambda_c+ D- K-]cc"]}
-        inputs = {'Xib2LcDK': self.lc + self.d.hhh_pid + kaons}
-        rs = makeB2XSels(decays, 'Lc2PKPiD2HHH', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'Xib2LcDKWS': ["[Xi_b- -> Lambda_c+ D+ K-]cc"]}
-        inputs = {'Xib2LcDKWS': self.lc + self.d.hhh_pid + kaons}
-        ws = makeB2XSels(decays, 'Lc2PKPiD2HHH', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeXib02LcDsKPi(self):
-        '''Makes RS + WS Xib -> Lc+ Ds- K- Pi+ + c.c.'''
-        pions = self.pions
-        kaons = self.kaons
-        decays = {'Xib02LcDsKPi': ["[Xi_b0 -> Lambda_c+ D- K- pi+]cc"]}
-        inputs = {'Xib02LcDsKPi': self.lc + self.ds + kaons + pions}
-        rs = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'Xib02LcDsKPiWS': ["[Xi_b0 -> Lambda_c+ D- K+ pi+]cc"]}
-        inputs = {'Xib02LcDsKPiWS': self.lc + self.ds + kaons + pions}
-        ws = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeB2LcDspbar(self):
-        '''Makes RS + WS B- -> Lc+ Ds- pbar- + c.c.'''
-        protons = self.protons
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4750.*MeV'
-        decays = {'B2LcDspbar': ["[B- -> Lambda_c+ D- p~-]cc"]}
-        inputs = {'B2LcDspbar': self.lc + self.d.hhh_pid + protons}
-        rs = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'B2LcDspbarWS': ["[B- -> Lambda_c+ D+ p~-]cc"]}
-        inputs = {'B2LcDspbarWS': self.lc + self.d.hhh_pid + protons}
-        ws = makeB2XSels(decays, 'Lc2PKPiDs2KKPi', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeX02XiccH(self):
-        '''Make RS and WS Xi_bcd -> Xi_cc+ H (H=pi,K) + cc.'''
-        pions = self.pions
-        kaons = self.kaons
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {
-            'X02XiccpPi': ["[B0 -> Xi_cc+ pi-]cc"],
-            'X02XiccpK': ["[B0 -> Xi_cc+ K-]cc"]
-        }
-        inputs = {
-            'X02XiccpPi': self.xiccp + pions,
-            'X02XiccpK': self.xiccp + kaons
-        }
-        rs = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, config)
-
-        decays = {
-            'X02XiccpPiWS': ["[B0 -> Xi_cc+ pi+]cc"],
-            'X02XiccpKWS': ["[B0 -> Xi_cc+ K+]cc"]
-        }
-        inputs = {
-            'X02XiccpPiWS': self.xiccp + pions,
-            'X02XiccpKWS': self.xiccp + kaons
-        }
-        ws = makeB2XSels(decays, 'Xiccp2Xic0Pi', inputs, config)
-
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeX2XiccH(self):
-        '''Make RS and WS Xi_bcu -> LXi_cc++ H (H=pi,K) + cc.'''
-        pions = self.pions
-        kaons = self.kaons
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        decays = {
-            'X2XiccppPi': ["[B+ -> Xi_cc++ pi-]cc"],
-            'X2XiccppK': ["[B+ -> Xi_cc++ K-]cc"]
-        }
-        inputs = {
-            'X2XiccppPi': self.xiccpp + pions,
-            'X2XiccppK': self.xiccpp + kaons
-        }
-        rs = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, config)
-
-        decays = {
-            'X2XiccppPiWS': ["[B+ -> Xi_cc++ pi+]cc"],
-            'X2XiccppKWS': ["[B+ -> Xi_cc++ K+]cc"]
-        }
-        inputs = {
-            'X2XiccppPiWS': self.xiccpp + pions,
-            'X2XiccppKWS': self.xiccpp + kaons
-        }
-        ws = makeB2XSels(decays, 'Xiccpp2XicPi', inputs, config)
-
-        self.lines.append(ProtoLine(rs, 1.0))
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2LcDst(self):
-        '''Makes RS + WS Lb -> Lc D* + c.c.'''
-        decays = {'Lb2LcDst': ["[Lambda_b0 -> Lambda_c+ D*(2010)-]cc"]}
-        inputs = {'Lb2LcDst': self.dst.d0pi_pid + self.lc}
-        rs = makeB2XSels(decays, 'Dstar2D0PiPID', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'Lb2LcDstWS': ["[Lambda_b0 -> Lambda_c+ D*(2010)+]cc"]}
-        inputs = {'Lb2LcDstWS': self.dst.d0pi_pid + self.lc}
-        ws = makeB2XSels(decays, 'Dstar2D0PiPID', inputs, self.config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeX2LcLc(self):
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4800*MeV'
-        decays = {'X2LcLc': ["B0 -> Lambda_c+ Lambda_c~-"]}
-        inputs = {'X2LcLc': self.lc}
-        rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-        decays = {'X2LcLcWS': ["[B0 -> Lambda_c+ Lambda_c+]cc"]}
-        inputs = {'X2LcLcWS': self.lc}
-        ws = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2LcLcn(self):
-        """
-        Makes Lb -> Lc Lc~ n (Lc->p K pi) + c.c.
-        The neutron is not reconstructed.
-        """
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '4000*MeV'
-        config['BPVIPCHI2_MAX'] = '50'
-
-        decays = {'Lb2LcLcn': ["Lambda_b0 -> Lambda_c+ Lambda_c~-"]}
-        inputs = {'Lb2LcLcn': self.lc}
-        rs = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-        decays = {'Lb2LcLcnWS': ["[Lambda_b0 -> Lambda_c+ Lambda_c+]cc"]}
-        inputs = {'Lb2LcLcnWS': self.lc}
-        ws = makeB2XSels(decays, 'Lc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(ws, 0.1))
-
-    def _makeLb2Lc5Pi(self):
-        decays = {
-            'Lb2Lc5Pi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)- rho(770)0]cc"]
-        }
-        inputs = {'Lb2Lc5Pi': self.lc + self.hhh.pipipi + self.hh.pipi_pid}
-        lb2lc5pi = makeB2XSels(decays, 'Lc2PKPiPID', inputs, self.config)
-        self.lines.append(ProtoLine(lb2lc5pi, 1.0))
-
-    def _makeLb2DpHH(self):
-        '''Make RS and WS Lb ->DpHH (H=pi,K) + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '7000*MeV'
-        ppipi = self.hhh.ppipi_pid
-        pkpi = self.hhh.pkpi_pid
-        pkk = self.hhh.pkk_pid
-        decays = {
-            'Lb2DpPiPi': ["[Lambda_b0 -> D+ a_1(1260)-]cc"],
-            'Lb2DpKPi': ["[Lambda_b0 -> D+ a_1(1260)-]cc"],
-            'Lb2DpKK': ["[Lambda_b0 -> D+ a_1(1260)-]cc"]
-        }
-        inputs = {
-            'Lb2DpPiPi': self.d.hhh_cf_pid + ppipi,
-            'Lb2DpKPi': self.d.hhh_cf_pid + pkpi,
-            'Lb2DpKK': self.d.hhh_cf_pid + pkk
-        }
-        rs = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXib2D0pHH(self):
-        '''Make RS and WS Xi_b ->DpHH (H=pi,K) + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '7000*MeV'
-        ppipi = self.hhh.ppipi_pid
-        pkpi = self.hhh.pkpi_pid
-        pkk = self.hhh.pkk_pid
-        decays = {
-            'Xib2D0pPiPi':
-            ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"],
-            'Xib2D0pKPi':
-            ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"],
-            'Xib2D0pKK': ["Xi_b- -> D0 a_1(1260)-", "Xi_b~+ -> D0 a_1(1260)+"]
-        }
-        inputs = {
-            'Xib2D0pPiPi': self.d0_pid + ppipi,
-            'Xib2D0pKPi': self.d0_pid + pkpi,
-            'Xib2D0pKK': self.d0_pid + pkk
-        }
-        rs = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2D0ph(self, dname, d2x):
-        '''Make RS Lb -> D0(K3pi) p h + cc.'''
-        protons_pid = self.protons_pid
-        kaons_pid = self.topoKaons_pid
-        pions_pid = self.topoPions_pid
-        decays_k = {'Lb2D0pK': ["Lambda_b0 -> D0 p+ K-", "Lambda_b~0 -> D0 p~- K+"]}
-        inputs_k = {'Lb2D0pK': d2x + protons_pid + kaons_pid}
-        rs_k = makeB2XSels(decays_k, dname, inputs_k, self.config)
-        self.lines.append(ProtoLine(rs_k, 1.0))
-        decays_pi = {'Lb2D0pPi': ["Lambda_b0 -> D0 p+ pi-", "Lambda_b~0 -> D0 p~- pi+"]}
-        inputs_pi = {'Lb2D0pPi': d2x + protons_pid + pions_pid}
-        rs_pi = makeB2XSels(decays_pi, dname, inputs_pi, self.config)
-        self.lines.append(ProtoLine(rs_pi, 1.0))
-
-    def _makeLb2D0phWS(self, dname, d2x):
-        '''Make RS Lb -> D0(K3pi) p h + cc.'''
-        protons_pid = self.protons_pid
-        kaons_pid = self.topoKaons_pid
-        pions_pid = self.topoPions_pid
-        decays_k = {'Lb2D0pK': ["Lambda_b0 -> D0 p+ K+", "Lambda_b~0 -> D0 p~- K-"]}
-        inputs_k = {'Lb2D0pK': d2x + protons_pid + kaons_pid}
-        rs_k = makeB2XSels(decays_k, dname, inputs_k, self.config)
-        self.lines.append(ProtoLine(rs_k, 1.0))
-        decays_pi = {'Lb2D0pPi': ["Lambda_b0 -> D0 p+ pi+", "Lambda_b~0 -> D0 p~- pi-"]}
-        inputs_pi = {'Lb2D0pPi': d2x + protons_pid + pions_pid}
-        rs_pi = makeB2XSels(decays_pi, dname, inputs_pi, self.config)
-        self.lines.append(ProtoLine(rs_pi, 1.0))
-
-    def _makeLb2DD0p(self, dname, d2x):
-        '''Make Lb -> D(s)- D0(K3pi) p + cc.'''
-        decays = {'Lb2DD0pD2HHH': ["Lambda_b0 -> D- D0 p+", "Lambda_b~0 -> D+ D0 p~-"]}
-        inputs = {'Lb2DD0pD2HHH': self.d.hhh_cf_pid + d2x + self.protons_pid}
-        rs = makeB2XSels(decays, dname, inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXibc2DpK(self):
-        '''Make Xi_bc+ --> D+ p K- + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '9000*MeV'
-        config['AM_MIN'] = '5800*MeV'
-        config['BPVLTIME_MIN'] = '0.05*ps'
-        protons_pid = self.protons_pid
-        kaons_pid = self.topoKaons_pid
-        decays = {'Xibc2DpK': ["[Xi_bc+ -> D+ p+ K-]cc"]}
-        inputs = {'Xibc2DpK': self.d.hhh_cf_pid + protons_pid + kaons_pid}
-        rs = makeB2XSels(decays, 'D2HHH', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2LcPiPiPiFullDST(self):
-        '''Make RS L_b ->Lc 3pi + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5400*MeV'
-        config['AM_MAX'] = '5900*MeV'
-        config['BPVIPCHI2_MAX'] = '16'
-        pipipi = self.hhh.pipipi_tightersel
-        Lc = self.lc_tight
-        decays = {'Lb2LcPiPiPi': ["[Lambda_b0 -> Lambda_c+ a_1(1260)-]cc"]}
-        inputs = {'Lb2LcPiPiPi': Lc + pipipi}
-        rs = makeB2XSels(decays, 'Lc2PKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXib02XicPiPiPiFullDST(self):
-        '''Make RS Xi_b0 -> Xi_c+ 3pi + cc.'''
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5600*MeV'
-        config['AM_MAX'] = '6000*MeV'
-        config['BPVIPCHI2_MAX'] = '16'
-        pipipi = self.hhh.pipipi_tightersel
-        Xic = self.xic_tightest
-        decays = {'Xib02XicPiPiPi': ["[Xi_b0 -> Xi_c+ a_1(1260)-]cc"]}
-        inputs = {'Xib02XicPiPiPi': Xic + pipipi}
-        rs = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeXib2Xic0PiPiPiFullDST(self):
-        '''Make RS Xi_b- -> Xi_c0 PiPiPi- '''
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5600*MeV'
-        config['AM_MAX'] = '6100*MeV'
-        config['BPVIPCHI2_MAX'] = '16'
-        pipipi = self.hhh.pipipi_tightersel
-        decays = {'Xib2Xic0PiPiPi': ["[Xi_b- -> Xi_c0 a_1(1260)-]cc"]}
-        inputs = {'Xib2Xic0PiPiPi': self.xic0 + pipipi}
-        rs = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeOmegab2Omegac0PiPiPiFullDST(self):
-        '''Make RS Omega_b- -> Omega_c0 PiPiPi- '''
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5800*MeV'
-        config['AM_MAX'] = '6300*MeV'
-        config['BPVIPCHI2_MAX'] = '16'
-        pipipi = self.hhh.pipipi_tightersel
-        Omegac = self.omegac0_tight
-        decays = {
-            'Omegab2Omegac0PiPiPi': ["[Omega_b- -> Omega_c0 a_1(1260)-]cc"]
-        }
-        inputs = {'Omegab2Omegac0PiPiPi': Omegac + pipipi}
-        rs = makeB2XSels(decays, 'Omegac02PKKPiFullDST', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2sigmacpp4Pi(self):
-        '''Make Lambda_b0 -> Sigma_c++ Pi+ 3Pi- cc.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6000*MeV'
-        config['AM_MIN'] = '4900*MeV'
-        pions = self.pions
-        decays = {
-            'Lb2sigmacpp4Pi': ["[Lambda_b0 -> Sigma_c++ pi+ pi- pi- pi-]cc"]
-        }
-        inputs = {'Lb2sigmacpp4Pi': self.sigmacpp + pions}
-        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2sigmacppD0KPi(self):
-        '''Makes Lambda_b0 -> Sigma_c++ D0 K- pi- + c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6000*MeV'
-        config['AM_MIN'] = '4900*MeV'
-        pions = self.pions
-        kaons = self.kaons
-        decays = {
-            'Lb2sigmacppD0KPi': [
-                "Lambda_b0 -> Sigma_c++ D0 K- pi-",
-                "Lambda_b~0 -> Sigma_c~-- D0 K+ pi+"
-            ]
-        }
-        inputs = {
-            'Lb2sigmacppD0KPi': self.d.kpi_pid + self.sigmacpp + pions + kaons
-        }
-        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2DDLambda(self, lambda0):
-        '''Makes Lambda_b0 -> D+ D- Lambda0'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6219*MeV'
-        '''1870*2+1115=4855'''
-        config['AM_MIN'] = '4900*MeV'
-        decays = {'Lb2DDLambda' + lambda0: ["[Lambda_b0 -> D- D+ Lambda0]cc"]}
-        inputs = {
-            'Lb2DDLambda' + lambda0:
-            self.dds + self.lambda0[lambda0]
-        }
-        lb2ddlambda_rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(lb2ddlambda_rs, 1.0))
-
-    def _makeLb2D0D0Lambda(self, lambda0):
-        '''Makes Lambda_b0 -> D0 D0 Lambda0'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6219*MeV'
-        config['AM_MIN'] = '4300*MeV'
-        dec = ["Lambda_b0 -> D0 D0 Lambda0", "Lambda_b~0 -> D0 D0 Lambda~0"]
-        decays = {
-            'Lb2D0D0LambdaD02HHD02HH' + lambda0: dec,
-            'Lb2D0D0LambdaD02HHD02K3Pi' + lambda0: dec,
-            'Lb2D0D0LambdaD02K3PiD02K3Pi' + lambda0: dec
-        }
-        inputs = {
-            'Lb2D0D0LambdaD02HHD02HH' + lambda0:
-            self.d.hh_pid_tight + self.lambda0[lambda0],
-            'Lb2D0D0LambdaD02HHD02K3Pi' + lambda0:
-            self.d.hh_pid_tight + self.d.k3pi_pid_tight +
-            self.lambda0[lambda0],
-            'Lb2D0D0LambdaD02K3PiD02K3Pi' + lambda0:
-            self.d.k3pi_pid_tight + self.lambda0[lambda0]
-        }
-        lb2d0d0lambda = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(lb2d0d0lambda, 1.0))
-
-    def _makeLb2DstDLambda(self, lambda0):
-        '''Makes the Lambda_b0 -> D*+- D-+ Lambda0 + c.c.'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6219*MeV'
-        config['AM_MIN'] = '4300*MeV'
-        decays = {
-            'Lb2DstDLambda' + lambda0:
-            ["[Lambda_b0 -> D*(2010)- D+ Lambda0]cc","[Lambda_b0 -> D- D*(2010)+ Lambda0]cc"]
-        }
-        inputs = {
-            'Lb2DstDLambda' + lambda0:
-            self.d.d_and_ds_cf_pid + self.dst.d0pi_pid + self.lambda0[lambda0]
-        }
-        lb2dstdlambda_rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(lb2dstdlambda_rs, 1.0))
-        inputs = {
-            'Lb2DstDLambda' + lambda0:
-            self.d.d_and_ds_cf_pid + self.dst.d0pi_k3pi_pid +
-            self.lambda0[lambda0]
-        }
-        lb2dstdlambda_rs = makeB2XSels(decays, 'DstarD02K3Pi', inputs, config)
-        self.lines.append(ProtoLine(lb2dstdlambda_rs, 1.0))
-
-    def _makeLb2DstDstLambda(self, lambda0):
-        '''Makes Lambda_b0 -> D*+- D*-+ Lambda0'''
-        config = deepcopy(self.config)
-        config['AM_MAX'] = '6219*MeV'
-        config['AM_MIN'] = '4300*MeV'
-        decays = {
-            'Lb2DstDstLambda' + lambda0:
-            ["[Lambda_b0 -> D*(2010)- D*(2010)+ Lambda0]cc"]
-        }
-        inputs = {
-            'Lb2DstDstLambda' + lambda0:
-            self.dst.d0pi_pid + self.lambda0[lambda0]
-        }
-        lb2dstdstlambda_rs = makeB2XSels(decays, '', inputs, config)
-        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
-        inputs = {
-            'Lb2DstDstLambda' + lambda0:
-            self.dst.d0pi_pid + self.dst.d0pi_k3pi_pid + self.lambda0[lambda0]
-        }
-        lb2dstdstlambda_rs = makeB2XSels(decays, 'DstarD02K3Pi', inputs,
-                                         config)
-        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
-        inputs = {
-            'Lb2DstDstLambda' + lambda0:
-            self.dst.d0pi_k3pi_pid + self.lambda0[lambda0]
-        }
-        lb2dstdstlambda_rs = makeB2XSels(decays, 'DstarD02K3PiDstarD02K3Pi',
-                                         inputs, config)
-        self.lines.append(ProtoLine(lb2dstdstlambda_rs, 1.0))
-    
-    def _makeB02LcSigmacppK(self):
-        '''Makes B0 -> Lc+ Sigma_c-- K+ + c.c.'''
-        kaons = self.topoKaons_pid
-        decays = {'B02LcSigmacppK': ["[B0 -> Lambda_c+ Sigma_c~-- K+]cc"]}
-        inputs = {'B02LcSigmacppK': self.lc_tight + self.sigmacpp + kaons}
-        rs = makeB2XSels(decays, 'Sigmacpp2LcPiLc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeBs2LcSigma(self):
-        '''Make Bs0 -> Lambda_c~- Sigma+'''
-        sigma = self.hh.sigmapm
-        decays = {'Bs2LcSigmap': ["[B_s0 -> Lambda_c~- Sigma+]cc"]}
-        inputs = {'Bs2LcSigmap': self.lc + sigma}
-        rs = makeB2XSels(decays, 'Lc2PKPiSigmap2PPiz', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeLb2DDpK(self):
-        '''Make Lb -> D+ D- p K- + cc.'''
-        protons = self.protons_pid
-        kaons = self.topoKaons_pid
-        decays = {'Lb2DDpK': ["[Lambda_b0 -> D+ D- p+ K-]cc"]}
-        inputs = {'Lb2DDpK': self.d.hhh_ds_rejection + protons + kaons}
-        rs = makeB2XSels(decays, 'D2HHHPID', inputs, self.config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeB2LcXicPi(self):
-        '''Make B+ -> Lc+ Xic- pi+ + cc.'''
-        pions = self.pions
-        config = deepcopy(self.config)
-        config['AM_MIN'] = '5000.*MeV'
-        decays = {'B2LcXicPi': ["[B+ -> Lambda_c+ Xi_c~- pi+]cc"]}
-        inputs = {'B2LcXicPi': self.lc_tight + self.xic_tight + pions}
-        rs = makeB2XSels(decays, 'Xic2PKPiLc2PKPi', inputs, config)
-        self.lines.append(ProtoLine(rs, 1.0))
-
-    def _makeB2XicpbarPi(self):
-        '''Make B- -> Xic+ pbar pi-'''
-        pions = self.topoPions_pid
-        decays = {'B2XicpbarPi': ["[B- -> Xi_c+ p~- pi-]cc"]}
-        inputs = {'B2XicpbarPi': self.xic + self.protons_pid + pions}
-        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_xic, 1.0))
-
-    def _makeB02XicpbarPiPi(self):
-        '''Make B0 -> Xic+ pi+ pi- pbar'''
-        pions = self.topoPions_pid
-        decays = {'B02XicpbarPiPi': ["[B0 -> Xi_c+ pi+ pi- p~-]cc"]}
-        inputs = {'B02XicpbarPiPi': self.xic + self.protons_pid + pions}
-        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_xic, 1.0))
-
-    def _makeB02XicpbarKPi(self):
-        '''Make B0 -> Xic+ K+ pi- pbar'''
-        pions = self.topoPions_pid
-        kaons = self.topoKaons_pid
-        decays = {'B02XicpbarKPi': ["[B0 -> Xi_c+ K+ pi- p~-]cc"]}
-        inputs = {'B02XicpbarKPi': self.xic + self.protons_pid + pions + kaons}
-        make_xic = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_xic, 1.0))
-
-    def _makeB02DpbarLambda(self, lambda0):
-        '''Make B0 -> Lambda0 D(*)+ pbar'''
-        decays = {'B02DpbarLambda' + lambda0: ["[B0 -> D+ p~- Lambda0]cc"]}
-        inputs = {'B02DpbarLambda' + lambda0: self.d.hh_pid_tight + self.protons_pid + self.lambda0[lambda0]}
-        make_d = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(make_d, 1.0))
-        decays = {'B02DstpbarLambda' + lambda0: ["[B0 -> D*(2010)+ p~- Lambda0]cc"]}
-        inputs = {'B02DstpbarLambda' + lambda0: self.dst.d0pi_pid + self.protons_pid + self.lambda0[lambda0]}
-        make_dst = makeB2XSels(decays, 'Dst2D0Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_dst, 1.0))
-        inputs = {'B02DstpbarLambda' + lambda0: self.dst.d0pi_k3pi_pid + self.protons_pid + self.lambda0[lambda0]}
-        make_dst_k3pi = makeB2XSels(decays, 'Dst2D0PiD02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_dst_k3pi, 1.0))
-
-    def _makeB2D0pbarLambda(self, lambda0):
-        '''Make B- -> Lambda0 D0 pbar'''
-        decays = {'B2D0pbarLambda' + lambda0: ["B- -> D0 p~- Lambda0", "B+ -> D0 p+ Lambda~0"]}
-        inputs = {'B2D0pbarLambda' + lambda0: self.d0_pid + self.protons_pid + self.lambda0[lambda0]}
-        make_d0 = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(make_d0, 1.0))
-        inputs = {'B2D0pbarLambda' + lambda0: self.d0_k3pi_pid + self.protons_pid + self.lambda0[lambda0]}
-        make_d0_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_d0_k3pi, 1.0))
-
-    def _makeB02D0pbarKLambda(self, lambda0):
-        '''Make B0 -> Lambda0 D0 pbar K+'''
-        kaons = self.topoKaons_pid
-        decays = {'B02D0pbarKLambda' + lambda0: ["B0 -> D0 p~- Lambda0 K+", "B0 -> D0 p+ Lambda~0 K-"]}
-        inputs = {'B02D0pbarKLambda' + lambda0: self.d0_pid + self.protons_pid + self.lambda0[lambda0] + kaons}
-        make_d0 = makeB2XSels(decays, 'D02HH', inputs, self.config)
-        self.lines.append(ProtoLine(make_d0, 1.0))
-        inputs = {'B02D0pbarKLambda' + lambda0: self.d0_k3pi_pid + self.protons_pid + self.lambda0[lambda0] + kaons}
-        make_d0_k3pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_d0_k3pi, 1.0))
-
-    def _makeXib2XicHHHH(self):
-        '''Make Xib- -> Xic+ pi+ pi- pi- pi-'''
-        pipipipi = self.hhh.pipipipi
-        decays = {'Xib2XicHHHH': ["[Xi_b- -> Xi_c+ a_1(1260)-]cc"]}
-        inputs = {'Xib2XicHHHH': self.xic + pipipipi}
-        make_Xic4h = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_Xic4h, 1.0))
-
-    def _makeXib2LcKHHH(self):
-        '''Make Xib- -> Lambdac+ pi+ K- pi- pi-'''
-        kpipipi = self.hhh.kpipipi
-        decays = {'Xib2LcKHHH': ["[Xi_b- -> Lambda_c+ K_1(1270)-]cc"]}
-        inputs = {'Xib2LcKHHH': self.lc + kpipipi}
-        make_LcKhhh = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_LcKhhh, 1.0))
-
-    def _makeXib02D0LambdaPiPi(self):
-        '''Make Xib0 -> D0 Lambda0 pi+ pi-'''
-        pipi = self.hh.pipi
-        lambda0="LL"
-        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
-        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_pid  + pipi+ self.lambda0[lambda0]}
-        make_D0L0PiPiLLKPi= makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_D0L0PiPiLLKPi, 1.0))
-        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
-        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_k3pi_pid  + pipi+ self.lambda0[lambda0]}
-        make_D0L0PiPiLLK3Pi= makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_D0L0PiPiLLK3Pi, 1.0))
-
-        lambda0="DD"
-        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
-        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_pid + pipi+ self.lambda0[lambda0]}
-        make_D0L0PiPiDDKPi= makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_D0L0PiPiDDKPi, 1.0))
-        decays = {'Xib02D0LambdaPiPi'+lambda0: ["Xi_b0 -> D0 Lambda0 rho(770)0", "Xi_b0 -> D0 Lambda~0 rho(770)0"]}
-        inputs = {'Xib02D0LambdaPiPi'+lambda0: self.d0_k3pi_pid + pipi+ self.lambda0[lambda0]}
-        make_D0L0PiPiDDK3Pi= makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_D0L0PiPiDDK3Pi, 1.0))
-
-    def _makeOmegab2Xic0KPiPi(self):
-        '''Make Omegab- -> Xic0 K Pi Pi'''
-        kpipi = self.hhh.kpipi
-        decays = {'Omegab2Xic0KPiPi': ["[Omega_b- -> Xi_c0 K_1(1270)-]cc"]}
-        inputs = {'Omegab2Xic0KPiPi': self.xic0 + kpipi}
-        make_rs = makeB2XSels(decays, 'Xic02PKKPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_rs, 1.0))
-
-
-    def _makeXib02XicD0K(self):
-        '''Make Xib0 -> Xic+ D~0 K-'''
-        kaons = self.topoKaons_pid
-        decays = {'Xib02XicD0K': ["Xi_b0 -> Xi_c+ D0 K-","Xi_b0 -> Xi_c~- D0 K+"]}
-        inputs = {'Xib02XicD0K': self.xic + self.d0_pid + kaons}
-        make_d2KPi = makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_d2KPi, 1.0))
-
-        decays = {'Xib02XicD0K': ["Xi_b0 -> Xi_c+ D0 K-","Xi_b0 -> Xi_c~- D0 K+"]}
-        inputs = {'Xib02XicD0K': self.xic + self.d0_k3pi_pid + kaons}
-        make_d2K3Pi = makeB2XSels(decays, 'D02K3Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_d2K3Pi, 1.0))
-
-
-    def _makeXib2XicDK(self):
-        '''Make Xib- -> Xic0 D~0 K-, Xib- -> Xic+ D- K-, Xib- -> Xic+ D*- K-'''
-        kaons = self.topoKaons_pid
-
-        decays = {'Xib2Xic0D0K': ["Xi_b- -> Xi_c0 D0 K-","Xi_b~+ -> Xi_c~0 D0 K+"]}
-        inputs = {'Xib2Xic0D0K': self.xic0 + self.d0_pid + kaons}
-        make_d2KPi = makeB2XSels(decays, 'D02KPi', inputs, self.config)
-        self.lines.append(ProtoLine(make_d2KPi, 1.0))
-
-        decays = {'Xib2XicDK': ["[Xi_b- -> Xi_c+ D- K-]cc"]}
-        inputs = {'Xib2XicDK': self.xic + self.d.hhh_cf_pid + kaons}
-        make_d2hhh = makeB2XSels(decays, 'D2HHH', inputs, self.config)
-        self.lines.append(ProtoLine(make_d2hhh, 1.0))
 
-        decays = {'Xib2XicDK': ["[Xi_b- -> Xi_c+ D*(2010)- K-]cc"]}
-        inputs = {'Xib2XicDK': self.xic + self.dst.d0pi_pid + kaons}
-        make_dst2d0h = makeB2XSels(decays, 'Dst2D0Pi', inputs, self.config)
-        self.lines.append(ProtoLine(make_dst2d0h, 1.0))
+class Beauty2CharmConf(LineBuilder):
+
+    __configuration_keys__ = default_config['CONFIG'].keys()
+
+    def __init__(self, moduleName, config):
+
+        LineBuilder.__init__(self, moduleName, config)
+
+        # pre-filter inputs
+        pions = filterInputs('Pi', [StdAllNoPIDsPions], config['ALL'])
+        pions_pid = filterInputs('Pi_PID', [pions], config['PIDPION'])
+        uppions = filterInputs('PiUP', [StdNoPIDsUpPions], config['UPSTREAM'])
+        kaons = filterInputs('K', [StdAllNoPIDsKaons], config['ALL'])
+        kaons_pid = filterInputs('K_PID', [kaons], config['PIDKAON'])
+        upkaons = filterInputs('KaUP', [StdNoPIDsUpKaons], config['UPSTREAM'])
+        protons = filterInputs('P', [StdAllNoPIDsProtons], config['ALL'])
+        protons_pid = filterInputs('P_PID', [protons], config['PIDPROTON'])
+
+        #pions,kaons, protons for Lc, Xic from Xibc
+        pions_Xc_Xibc = filterInputs('Pi_Xc_Xibc', [StdAllNoPIDsPions],
+                                     config['Xibc_Xc_PION'])
+        kaons_Xc_Xibc = filterInputs('K_Xc_Xibc', [StdAllNoPIDsKaons],
+                                     config['Xibc_Xc_KAON'])
+        protons_Xc_Xibc = filterInputs('P_Xc_Xibc', [StdAllNoPIDsProtons],
+                                       config['Xibc_Xc_PROTON'])
+        #pions,kaons, from Xicc or Xib vertex (filter from PID pions, above, as all cuts are tighter)
+        pions_Xb_Xibc = filterInputs('Pi_Xb_Xibc', [pions_pid],
+                                     config['Xibc_Xb_PION'])
+        kaons_Xb_Xibc = filterInputs('K_Xb_Xibc', [kaons_pid],
+                                     config['Xibc_Xb_KAON'])
+        protons_Xb_Xibc = filterInputs('P_Xb_Xibc', [protons_pid],
+                                       config['Xibc_Xb_PROTON'])
+
+        ks_dd = filterInputs('KS0_DD', [dataOnDemand("StdLooseKsDD")],
+                             config['KS0'])
+        ks_ll = filterInputs('KS0_LL', [dataOnDemand("StdVeryLooseKsLL")],
+                             config['VLKS0_LL'])
+        ks = {"DD": [ks_dd], "LL": [ks_ll]}
+        lambda0_dd = filterInputs('Lambda0_DD',
+                                  [dataOnDemand("StdLooseLambdaDD")],
+                                  config['Lambda0'])
+        lambda0_ll = filterInputs('Lambda0_LL',
+                                  [dataOnDemand("StdLooseLambdaLL")],
+                                  config['Lambda0'])
+        lambda0 = {"DD": [lambda0_dd], "LL": [lambda0_ll]}
+        pi0_merged = filterPi0s('Merged', [StdLooseMergedPi0], config['Pi0'])
+        pi0_resolved = filterPi0s('Resolved', [StdLooseResolvedPi0],
+                                  config['Pi0'])
+        pi0_all = MergedSelection(
+            'Pi0AllBeauty2Charm',
+            RequiredSelections=[pi0_merged, pi0_resolved])
+
+        pi0 = {
+            'Merged': [pi0_merged],
+            'Resolved': [pi0_resolved],
+            'all': [pi0_all]
+        }
+
+        pcut = 'P > %s' % config['Pi0']['FROM_B_P_MIN']
+        pi0_fromB_merged = filterSelection('Pi0FromBMerged', pcut,
+                                           [pi0_merged])
+        pi0_fromB_resolved = filterSelection('Pi0FromBResolved', pcut,
+                                             [pi0_resolved])
+        pi0_fromB = {
+            'Merged': [pi0_fromB_merged],
+            'Resolved': [pi0_fromB_resolved]
+        }
+        muons = filterInputs('MU', [StdLooseMuons],
+                             config['ALL'])  # make muons (for D -> phi mu nu)
+
+        # Jordi: photon selection.
+        gammacut = '(PT > %(PT_MIN)s) & (CL > %(CL_MIN)f) & (PPINFO(LHCb.ProtoParticle.IsNotE,-1) > %(ISNOTE_MIN)f)' % config[
+            'gamma']
+        photons = filterSelection('Gamma', gammacut, [StdLooseAllPhotons])
+        # Alessandro Bertolin: very loose all photons.
+        vlagammacut = '(PT > %(PT_VLAPH)s) & (CL > %(CL_MIN)f) & (PPINFO(LHCb.ProtoParticle.IsNotE,-1) > %(ISNOTE_MIN)f)' % config[
+            'gamma']
+        vlaphotons = filterSelection('VLAGamma', vlagammacut,
+                                     [StdVeryLooseAllPhotons])
+
+        # pre-filter hard inputs (these could have been used in HLT2)
+        topoPions = topoInputs('Pi', [pions])
+        topoPions_PID = topoInputs('Pi_PID', [pions_pid])
+        topoPionsLoose = topoInputsLoose('PiLoose', [pions])
+        topoKaons = topoInputs('K', [kaons])
+        topoKaons_PID = topoInputs('K_PID', [kaons_pid])
+        topoKaonsLoose = topoInputsLoose('KLoose', [kaons])
+        topoProtons = topoInputs('P', [protons])
+        topoProtons_PID = topoInputs('P_PID', [protons_pid])
+
+        # X -> hh
+        hh = HHBuilder(pions, kaons, protons, ks, pi0_fromB, config['HH'],
+                       config['PID'])
+
+        # X -> hhh
+        hhh = HHHBuilder(pions, kaons, protons, config['HHH'], config['PID'])
+
+        # make D->X, etc. inputs
+        d = DBuilder(pions, kaons, ks, pi0, uppions, upkaons, muons, hh,
+                     config['D2X'], config['D2X_FOR_DDX'], config['PID'],
+                     config['Pi0'])
+        dst = DstarBuilder(d, pions, uppions, pi0, photons, vlaphotons,
+                           config['Dstar'], config['PID'])
+
+				# Xim -> X
+        xim = XimBuilder(pions_pid, kaons_pid, protons_pid, lambda0, config['Xim'])
+				
+				# Lc -> X
+        lc = LcBuilder(pions_pid, kaons_pid, protons_pid, lambda0, ks, xim, config['D2X'], config['Xic0'],
+                       config['PID'])
+        xicc = XiccBuilder(lc, pions_pid, config['D2X'])
+				
+				# Loose Lc, for Xibc
+        lcLoose = LooseLcBuilder(pions_Xc_Xibc, kaons_Xc_Xibc, protons_Xc_Xibc,
+                                 config['LC_FOR_XIBC'])
+        xiccLoose = LooseXiccBuilder(lcLoose, pions_Xb_Xibc, kaons_Xb_Xibc,
+                                     config['LC_FOR_XIBC'])
+
+        # make B->DX
+        b2dx = B2DXBuilder(d, dst, topoPions, topoPionsLoose, topoKaons,
+                           topoKaons_PID, topoPions_PID, muons, ks, pi0_fromB,
+                           hh, hhh, config['B2X'])
+        self._makeLines(b2dx.lines, config)
+
+        # Bc -> DD lines
+        bc2dd = Bc2DDBuilder(d, dst, config['Bc2DD'])
+        self._makeLines(bc2dd.lines, config)
+
+        # Bc->Buhh lines
+        bc2bx = Bc2BXBuilder(b2dx, topoPionsLoose, topoKaonsLoose,
+                             config['Bc2BX'])
+        self._makeLines(bc2bx.lines, config)
+
+        #Bc -> DX lines
+        bc2dx = Bc2DXBuilder(d, dst, hh, topoPionsLoose, topoKaonsLoose,
+                             config['Bc2DX'])
+        self._makeLines(bc2dx.lines, config)
+
+        # Lb -> X
+        lb2x = Lb2XBuilder(lc, xicc, d, hh, topoPions, topoPions_PID,
+                           topoKaons, topoKaons_PID, topoProtons,
+                           topoProtons_PID, pions, kaons, ks, hhh, dst,
+                           lambda0, config['B2X'], config['Xibm'])
+        self._makeLines(lb2x.lines, config)
+
+        # Xibc -> Xc hh, LcD0, Xicc h
+        xibc = XibcBuilder(lcLoose, xiccLoose, d, topoPions_PID, topoKaons_PID,
+                           topoProtons_PID, pions_Xb_Xibc, kaons_Xb_Xibc,
+                           protons_Xb_Xibc, muons, config['Xibc'],
+                           config['XiccMu'])
+        self._makeLines(xibc.lines, config)
+
+        # Unbiased lines
+        ltub = LTUnbiasedBuilder(d, dst, config['B2X'])
+        self._makeLines(ltub.lines, config)
+
+        # UP D* lines
+        for line in b2dx.lines:
+            for sel in line.selections:
+                if sel.name().find('WS') > 0: continue
+                dstar_sel = makeB2DstarX(sel, uppions, config['B2X'])
+                self._makeLine(ProtoLine([dstar_sel], line.pre), config)
+
+        # UNKNOWN line
+        # # B->D0X inclusive line
+        # cuts = "(PT > %d*MeV) & (ADMASS('D0') < 25*MeV) & (MIPCHI2DV(PRIMARY)>%d)" \
+        #        % (config['D0INC']['PT_MIN'],config['D0INC']['IPCHI2_MIN'])
+        # sel = filterSelection('D02KPIPIDMTIGHT',cuts,d.kpi_pid_tight)
+        # sel = tosSelection(sel,{'Hlt2Topo2.*Decision%TOS':0})
+        # hlt = "HLT_PASS_RE('Hlt2Topo2.*Decision')"
+        # sline = StrippingLine('D02HHTopoTOSLine',1.0,selection=sel,HLT2=hlt)
+        # self.registerLine(sline)
+
+    def _makeLine(self, protoLine, config):
+        tag = 'B2CBBDTBeauty2CharmFilter'
+        default = config['Prescales']['RUN_BY_DEFAULT']
+        run_re = config['Prescales']['RUN_RE']
+        prescale_keys = config['Prescales'].keys()
+        for line in protoLine.selections:
+            name = line.name().replace(tag, '') + 'Line'
+            match = False
+            for r in run_re:
+                if re.match(r, name):
+                    match = True
+                    break
+            if (not default) and (not match) and (not (name in prescale_keys)):
+                continue
+            tmpSel = Selection(
+                line.name() + 'FilterALL',
+                Algorithm=FilterDesktop(Code='ALL'),
+                RequiredSelections=[line])
+            filter = {'Code' :
+                      "(recSummaryTrack(LHCb.RecSummary.nLongTracks, TrLONG)"\
+                      " < %s )" \
+                      % config['GECNTrkMax'],
+                      'Preambulo' : [ "from LoKiTracks.decorators import *",
+                                      'from LoKiCore.functions    import *' ]
+                      }
+            # Hlt2IncPhi untill 2015, since 2016 Hlt2PhiIncPhi
+            hlt = "(HLT_PASS_RE('Hlt2Topo.*Decision') | "\
+                  "HLT_PASS_RE('Hlt2.*IncPhi.*Decision'))"
+
+            if ((name in config['RawEvents'])):
+                rawevent = [
+                    "Trigger", "Muon", "Calo", "Rich", "Velo", "Tracker"
+                ]
+            else:
+                rawevent = []
+
+            checkPV_option = True
+
+            sline = StrippingLine(
+                name,
+                protoLine.prescale(line, name, config),
+                selection=tmpSel,
+                checkPV=checkPV_option,
+                FILTER=filter,
+                HLT2=hlt,
+                EnableFlavourTagging=(name in config['FlavourTagging']),
+                RequiredRawEvents=rawevent,
+                MDSTFlag=(name in config['MDSTChannels']),
+                RelatedInfoTools=config['RelatedInfoTools'])
+
+            self.registerLine(sline)
+
+    def _makeLines(self, lines, config):
+        for line in lines:
+            self._makeLine(line, config)
 
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
-- 
GitLab


From 08ec0ff132c47f33111a7f5d6b926b6de12c1797 Mon Sep 17 00:00:00 2001
From: bshi <boan.shi@cern.ch>
Date: Thu, 13 Jul 2023 23:54:50 +0800
Subject: [PATCH 3/3] update in order to void conflict

---
 .../StrippingB2OC/Beauty2Charm_Lb2XBuilder.py |  69 +++++-
 .../StrippingB2OC/StrippingBeauty2Charm.py    | 198 ++++++++++++------
 2 files changed, 200 insertions(+), 67 deletions(-)

diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
index 7e3d4de8c..2d7c3396e 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py
@@ -59,10 +59,8 @@ class XimBuilder(object):
             Algorithm=cp,
             RequiredSelections= self.lambda0[lmd] + [self.pions])
 
-
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
-
 class LcBuilder(object):
     '''Produces all Lambda_c baryons for the Beauty2Charm module.'''
 
@@ -92,9 +90,8 @@ class LcBuilder(object):
         # xic0_PKsKm
         self.xic0_pkskm_LL = [self._makeXic02PKsKm("LL")]
         self.xic0_pkskm_DD = [self._makeXic02PKsKm("DD")]
-
-				# Filter with tighter PID
-        self.lambdapiLL = [self._makeLc2Lambdapi("LL")]
+        
+				self.lambdapiLL = [self._makeLc2Lambdapi("LL")]
         self.lambdapiDD = [self._makeLc2Lambdapi("DD")]
         self.xic_pkpi = [self._makeXic2pKpi()]
         self.xic0_pkkpi = [self._makeXic02pKKpi()]
@@ -572,6 +569,7 @@ class LcstarBuilder(object):
             Algorithm=cp,
             RequiredSelections=inputs[mode])
 
+
 class XiccBuilder(object):
     '''Produces Xi_cc baryons for the Beauty2Charm module.'''
 
@@ -744,6 +742,7 @@ class LooseXiccBuilder(object):
 
 #\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\#
 
+
 class XibcBuilder(object):
     '''Makes all Xibc -> X lines.'''
 
@@ -986,7 +985,7 @@ class Lb2XBuilder(object):
         self.lc = lc.pkpi
         self.lc_pkk = lc.pkk
         self.lc_ppipi = lc.ppipi
-        self.xic = lc.xic_pkpi
+				self.xic = lc.xic_pkpi
         self.xic0 = lc.xic0_pkkpi
         self.xic0_ximpip_LL = lc.xic0_ximpip_LL
         self.xic0_ximpip_DD = lc.xic0_ximpip_DD
@@ -1059,6 +1058,8 @@ class Lb2XBuilder(object):
         ### Xib0 -> Xic+ HHH- (+WS) (HHH = 3pi, Kpipi)
         self._makeXib02XicHHH()
         ###Xib- -> Xic0 HHH- (+WS) (HHH = 3pi, Kpipi)
+        self._makeXib02Xic0PiPiFullDST()
+        ###Xib0 -> Xic0 pipi (!!+WS)
         self._makeXib2Xic0HHH()
         ### Xb- -> Lc+ D(s)- K-
         self._makeXib2LcDK()
@@ -1121,7 +1122,10 @@ class Lb2XBuilder(object):
         ### bc baryon -> Lc HHHH (+WS)
         self._makeX2LcKPiPiPi()
         ### Xib,Omega_b -> Lc HH (+WS)
-        self._makeXib2XicHH()
+        self._makeXib2XicHHFullDST()
+	### Xib->XicHH FullDST
+	self._makeXib2XicHH()
+	### Xib->XicHH
 
         # Lb -> Lc D* (+WS)
         self._makeLb2LcDst()
@@ -1440,6 +1444,7 @@ class Lb2XBuilder(object):
         ws = makeB2XSels(decays, dname, inputs, config)
         self.lines.append(ProtoLine(ws, 1.0))
 
+ 
     def _makeB2Lcpbar(self):
         '''Make RS and WS B -> Lc pbar + cc.'''
         protons = self.protons
@@ -1709,6 +1714,26 @@ class Lb2XBuilder(object):
         self.lines.append(ProtoLine(rs, 1.0))
         self.lines.append(ProtoLine(ws, 0.1))
 
+    def _makeXib02Xic0PiPiFullDST(self):
+        '''Make RS and WS Xi_b0 -> Xi_c0 pipi cc.'''
+        pions = self.pions
+        decays = {
+            'Xib02Xic0PiPi': ["[Xi_b0 -> Xi_c0 pi+ pi-]cc"]
+        }
+        inputs = {
+            'Xib02Xic0PiPi': self.xic0 + pions,
+        }
+        rs = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
+        decays = {
+            'Xib02Xic0PiPiWS': ["[Xi_b0 -> Xi_c0 pi+ pi+]cc"],
+        }
+        inputs = {
+            'Xib02Xic0PiPiWS': self.xic0 + pions,
+        }
+        ws = makeB2XSels(decays, 'Xic02PKKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        self.lines.append(ProtoLine(ws, 0.1))
+    
     def _makeXib2Xic0HHH(self):
         '''Make RS and WS Xi_b- -> Xi_c0 HHH- (HHH=3pi,Kpipi) + cc.'''
         pipipi = self.hhh.pipipi
@@ -2212,7 +2237,6 @@ class Lb2XBuilder(object):
         inputs = {'X2LcKPiPiPiWS': self.lc + pipipi + kaons}
         ws = makeB2XSels(decays, 'Lc2PKPi', inputs, self.config)
         self.lines.append(ProtoLine(ws, 0.1))
-
     def _makeXib2XicHH(self):
         '''Makes RS + WS Xib -> Lc HH + c.c.'''
         pions = self.pions
@@ -2241,6 +2265,35 @@ class Lb2XBuilder(object):
         }
         ws = makeB2XSels(decays, 'Xic2PKPi', inputs, self.config)
         self.lines.append(ProtoLine(ws, 0.1))
+   
+    def _makeXib2XicHHFullDST(self):
+        '''Makes RS + WS Xib -> Lc HH + c.c.'''
+        pions = self.pions
+        kaons = self.kaons
+        decays = {
+            'Xib2XicPiPi': ["[Xi_b- -> Xi_c+ pi- pi-]cc"],
+            'Xib2XicKPi': ["[Xi_b- -> Xi_c+ K- pi-]cc"],
+            'Xib2XicKK': ["[Xi_b- -> Xi_c+ K- K-]cc"]
+        }
+        inputs = {
+            'Xib2XicPiPi': self.xic + pions,
+            'Xib2XicKPi': self.xic + kaons + pions,
+            'Xib2XicKK': self.xic + kaons
+        }
+        rs = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(rs, 1.0))
+        decays = {
+            'Xib2XicPiPiWS': ["[Xi_b- -> Xi_c+ pi+ pi+]cc"],
+            'Xib2XicKPiWS': ["[Xi_b- -> Xi_c+ K+ pi+]cc"],
+            'Xib2XicKKWS': ["[Xi_b- -> Xi_c+ K+ K+]cc"]
+        }
+        inputs = {
+            'Xib2XicPiPiWS': self.xic + pions,
+            'Xib2XicKPiWS': self.xic + kaons + pions,
+            'Xib2XicKKWS': self.xic + kaons
+        }
+        ws = makeB2XSels(decays, 'Xic2PKPiFullDST', inputs, self.config)
+        self.lines.append(ProtoLine(ws, 0.1))
 
     def _makeXib2LcDK(self):
         '''Makes RS + WS Xib -> Lc+ D(s)- K- + c.c.'''
diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
index 8842d46e8..9afb0bdf3 100644
--- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
+++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py
@@ -1,5 +1,5 @@
 ###############################################################################
-# (c) Copyright 2000-2019 CERN for the benefit of the LHCb Collaboration      #
+# (c) Copyright 2000-2023 CERN for the benefit of the LHCb Collaboration      #
 #                                                                             #
 # This software is distributed under the terms of the GNU General Public      #
 # Licence version 3 (GPL Version 3), copied verbatim in the file "COPYING".   #
@@ -169,33 +169,50 @@ default_config = {
             'ISNOTE_MIN': -999.0,
             'PT_VLAPH': '145*MeV'
         },
-				"Xim": {  # Cuts made on charged Xi baryon
-            'ASUMPT_MIN': '1000*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 25,
-            'BPVVDCHI2_MIN': 50,
-            'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '100*MeV'
-        },
-				"Xic0": {  # Cuts made on charged Xic0 baryon
-            'ASUMPT_MIN': '1000*MeV',
+ 				"Xim": {  # Cuts made on charged Xi baryon
+             'ASUMPT_MIN': '1000*MeV',
+             'ADOCA12_MAX': '0.5*mm',
+             'VCHI2DOF_MAX': 25,
+             'BPVVDCHI2_MIN': 50,
+             'BPVDIRA_MIN': 0,
+             'MASS_WINDOW': '100*MeV'
+         },
+ 				"Xic0": {  # Cuts made on charged Xic0 baryon
+             'ASUMPT_MIN': '1000*MeV',
+              'ADOCA12_MAX': '0.5*mm',
+              'ADOCA13_MAX': '0.5*mm',
+              'ADOCA23_MAX': '0.5*mm',
+             'VCHI2DOF_MAX': 20,
+             'BPVVDCHI2_MIN': 30,
+             'BPVDIRA_MIN': 0.9,
+             'MASS_WINDOW': '200*MeV'
+         },
+ 				"Xibm": {  # Cuts made on charged Xibm baryon
+             'ASUMPT_MIN': '1000*MeV',
+             'ADOCA12_MAX': '0.5*mm',
+             'VCHI2DOF_MAX': 20,
+             'BPVVDCHI2_MIN': 30,
+             'BPVDIRA_MIN': 0,
+             'MASS_WINDOW': '200*MeV'
+          },
+        "D2X": {  # Cuts made on all D's and Lc's used in all lines
+            'ASUMPT_MIN': '1800*MeV',
             'ADOCA12_MAX': '0.5*mm',
             'ADOCA13_MAX': '0.5*mm',
             'ADOCA23_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 20,
-            'BPVVDCHI2_MIN': 30,
-            'BPVDIRA_MIN': 0.9,
-            'MASS_WINDOW': '200*MeV'
-        },
-				"Xibm": {  # Cuts made on charged Xibm baryon
-            'ASUMPT_MIN': '1000*MeV',
-            'ADOCA12_MAX': '0.5*mm',
-            'VCHI2DOF_MAX': 20,
-            'BPVVDCHI2_MIN': 30,
+            'ADOCA14_MAX': '0.5*mm',
+            'ADOCA24_MAX': '0.5*mm',
+            'ADOCA34_MAX': '0.5*mm',
+            'ADOCA15_MAX': '0.5*mm',
+            'ADOCA25_MAX': '0.5*mm',
+            'ADOCA35_MAX': '0.5*mm',
+            'ADOCA45_MAX': '0.5*mm',
+            'VCHI2DOF_MAX': 10,
+            'BPVVDCHI2_MIN': 36,
             'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '200*MeV'
+            'MASS_WINDOW': '100*MeV'
         },
-				"D2X": {  # Cuts made on all D's and Lc's used in all lines
+        "Lcstar": {  # Cuts made on all Lcstar's used in all lines
             'ASUMPT_MIN': '1800*MeV',
             'ADOCA12_MAX': '0.5*mm',
             'ADOCA13_MAX': '0.5*mm',
@@ -210,7 +227,7 @@ default_config = {
             'VCHI2DOF_MAX': 10,
             'BPVVDCHI2_MIN': 36,
             'BPVDIRA_MIN': 0,
-            'MASS_WINDOW': '100*MeV'
+            'MASS_WINDOW': '500*MeV'
         },
         "LC_FOR_XIBC": {  # Cuts made on Lc's/Xic(0) used in Xibc lines
             'ASUMPT_MIN': '1800*MeV',
@@ -322,7 +339,8 @@ default_config = {
             'MASS_WINDOW': {
                 'KST': '150*MeV',
                 'RHO': '150*MeV',
-                'PHI': '150*MeV'
+                'PHI': '150*MeV',
+                'SIGMA': '150*MeV'
             },
             'DAUGHTERS': {
                 'PT_MIN': '100*MeV',
@@ -816,11 +834,15 @@ default_config = {
             'StrippingB02D0KKDSTD2HHBeauty2CharmLine',
             'StrippingLb2LcPiPiPiLc2PKPiFullDSTBeauty2CharmLine',
             'StrippingXib02XicPiPiPiXic2PKPiFullDSTBeauty2CharmLine',
+            'StrippingXib2XicPiPiXic2PKPiFullDSTBeauty2CharmLine',
+            'StrippingXib2XicPiPiWSXic2PKPiFullDSTBeauty2CharmLine',
+            'StrippingXib02Xic0PiPiXic02PKKPiFullDSTBeauty2CharmLine',
+	        'StrippingXib02Xic0PiPiWSXic02PKKPiFullDSTBeauty2CharmLine',
             'StrippingXib2Xic0PiPiPiXic02PKKPiFullDSTBeauty2CharmLine',
             'StrippingOmegab2Omegac0PiPiPiOmegac02PKKPiFullDSTBeauty2CharmLine'
         ],
         'Bhadron': [
-						'StrippingB2Dstar0KDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
+            'StrippingB2Dstar0KDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
             'StrippingB2Dstar0PiDst02D0Pi0D2HHHHMergedBeauty2CharmLine',
             'StrippingB2Dstar0KDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
             'StrippingB2Dstar0PiDst02D0Pi0D2HHHHResolvedBeauty2CharmLine',
@@ -944,6 +966,10 @@ default_config = {
             'StrippingB2D0KPi0ResolvedD2HHHHWSBeauty2CharmLine',
             'StrippingB2D0KsPiLLD2HHHHWSBeauty2CharmLine',
             'StrippingB2D0PiPi0ResolvedD2HHHHWSBeauty2CharmLine',
+            'StrippingB2D0KsKDDD2HHBeauty2CharmLine',
+            'StrippingB2D0KsKLLD2HHBeauty2CharmLine',
+            'StrippingB2D0KsKDDD2HHHHBeauty2CharmLine',
+            'StrippingB2D0KsKLLD2HHHHBeauty2CharmLine',
             'StrippingB02DKD2PhiMuNuBeauty2CharmLine',
             'StrippingB02DPiD2PhiMuNuBeauty2CharmLine',
             'StrippingB02DKWSD2PhiMuNuBeauty2CharmLine',
@@ -971,6 +997,7 @@ default_config = {
             'StrippingB02DKsKLLWSD2HHHCFPIDBeauty2CharmLine',
             'StrippingB02DKsKDDWSD2HHHCFPIDBeauty2CharmLine',
             'StrippingB2DKKD2HHHCFPIDBeauty2CharmLine',
+            'StrippingB2DPPD2HHHPPBeauty2CharmLine',
             'StrippingB2DKPiD2HHHCFPIDBeauty2CharmLine',
             'StrippingB2DPiPiD2HHHCFPIDBeauty2CharmLine',
             'StrippingB2DHHOSD2HHHCFPIDBeauty2CharmLine',
@@ -1137,6 +1164,8 @@ default_config = {
             'StrippingB2D0ppbarPiD2HHBeauty2CharmLine',
             'StrippingB02DppbarKD2HHHBeauty2CharmLine',
             'StrippingB02DppbarPiD2HHHBeauty2CharmLine',
+            'StrippingB2D0phiKD2HHPIDBeauty2CharmLine',
+            'StrippingB2D0phiKD2HHHHPIDBeauty2CharmLine',
             'StrippingB02DstKKPiDstar2D0PiPIDBeauty2CharmLine',
             'StrippingB02DstKPiPiDstar2D0PiPIDBeauty2CharmLine',
             'StrippingB02DstPiPiPiDstar2D0PiPIDBeauty2CharmLine',
@@ -1245,7 +1274,7 @@ default_config = {
             'StrippingB2Dst0D0KDst02D0GammaD02HHBeauty2CharmLine',
             'StrippingB02Dst0DKDst02D0Pi0ResolvedD2HHHBeauty2CharmLine',
             'StrippingB02Dst0DKDst02D0GammaD2HHHBeauty2CharmLine',
-            #### DDKS lines ###
+            ##### DDKS lines ###
             'StrippingB02DDKSDDBeauty2CharmLine',
             'StrippingB02DDKSWSDDBeauty2CharmLine',
             'StrippingB2D0DKSDDBeauty2CharmLine',
@@ -1288,7 +1317,7 @@ default_config = {
             'StrippingB02DstDstKSWSLLBeauty2CharmLine',
             'StrippingB02DstDstKSWSLLDstarD02K3PiBeauty2CharmLine',
             'StrippingB02DstDstKSWSLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            #### DDLambda lines ###
+            ##### DDLambda lines ###
             'StrippingLb2DDLambdaDDBeauty2CharmLine',
             'StrippingLb2D0D0LambdaD02HHD02HHDDBeauty2CharmLine',
             'StrippingLb2D0D0LambdaD02HHD02K3PiDDBeauty2CharmLine',
@@ -1307,7 +1336,7 @@ default_config = {
             'StrippingLb2DstDstLambdaLLBeauty2CharmLine',
             'StrippingLb2DstDstLambdaLLDstarD02K3PiBeauty2CharmLine',
             'StrippingLb2DstDstLambdaLLDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
-            #### DDK* lines ###
+            ##### DDK* lines ###
             'StrippingB02D0D0KstD02K3PiD02K3PiBeauty2CharmLine',
             'StrippingB02D0D0KstD02HHD02HHBeauty2CharmLine',
             'StrippingB02D0D0KstD02HHD02K3PiBeauty2CharmLine',
@@ -1325,7 +1354,7 @@ default_config = {
             'StrippingB2DstD0KstDstarD02K3PiD02K3PiBeauty2CharmLine',
             'StrippingB2D0DKPiBeauty2CharmLine',
             'StrippingB2D0DKPiD02K3PiBeauty2CharmLine',
-            #### DDPhi lines ###
+            ##### DDPhi lines ###
             'StrippingB2D0DKKBeauty2CharmLine',
             'StrippingB2D0DKKD2K3PiBeauty2CharmLine',
             #'StrippingB02DDKKBeauty2CharmLine',
@@ -1334,6 +1363,18 @@ default_config = {
             'StrippingB02DstDstKKBeauty2CharmLine',
             'StrippingB02DstDstKKDstarD02K3PiBeauty2CharmLine',
             'StrippingB02DstDstKKDstarD02K3PiDstarD02K3PiBeauty2CharmLine',
+            ##### DDspipi lines ###
+            'StrippingB02DDspipiBeauty2CharmLine',
+            'StrippingB2D0DspipiBeauty2CharmLine',
+            'StrippingB2D0DspipiD02K3PiBeauty2CharmLine',
+            'StrippingB02DstDspipiBeauty2CharmLine',
+            'StrippingB02DstDspipiDstarD02K3PiBeauty2CharmLine',
+            ##### DDs2460 lines ###
+            'StrippingB02DDs2460Beauty2CharmLine',
+            'StrippingB2D0Ds2460Beauty2CharmLine',
+            'StrippingB2D0Ds2460D02K3PiBeauty2CharmLine',
+            'StrippingB02DstDs2460Beauty2CharmLine',
+            'StrippingB02DstDs2460DstarD02K3PiBeauty2CharmLine',
             #### DDPi lines ###
             'StrippingB2DDPiBeauty2CharmLine',
             'StrippingB2DDPiWSBeauty2CharmLine',
@@ -1364,7 +1405,7 @@ default_config = {
             'StrippingB2Dst2460DPiBeauty2CharmLine',
             'StrippingB2Dst2460DPiWSBeauty2CharmLine',
             'StrippingB2D0st2460D0PiBeauty2CharmLine',
-            #### DDpK lines ###
+            ##### DDpK lines ###
             'StrippingLb2DDpKD2HHHPIDBeauty2CharmLine',
             #########################
             #### End of DDX lines ###
@@ -1378,6 +1419,14 @@ default_config = {
             'StrippingLb2LcPiWSLc2PKKBeauty2CharmLine',
             'StrippingLb2LcPiWSLc2PPiPiBeauty2CharmLine',
             'StrippingLb2LcPiNoIPWSLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcDLc2Lambda0LLPiD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDLc2Lambda0DDPiD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDstLc2Lambda0LLPiBeauty2CharmLine',
+            'StrippingLb2LcDstLc2Lambda0DDPiBeauty2CharmLine',
+            'StrippingLb2LcDstLc2Lambda0LLPiDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2LcDstLc2Lambda0DDPiDstarD02K3PiBeauty2CharmLine',
+            'StrippingLb2LcDsstarLc2Lambda0LLPiDsstarD02HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDsstarLc2Lambda0DDPiDsstarD02HHHPIDBeauty2CharmLine',
             'StrippingLb2XicPiXic2PKPiBeauty2CharmLine',
             'StrippingLb2XicKXic2PKPiBeauty2CharmLine',
             'StrippingLb2XicKWSXic2PKPiBeauty2CharmLine',
@@ -1422,6 +1471,22 @@ default_config = {
             'StrippingLb2D0PHNoPIDWSD02HHBeauty2CharmLine',
             'StrippingLb2D0PHD02K3PiBeauty2CharmLine',
             'StrippingLb2D0PHWSD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0pKD02HHHHPIDBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
+            'StrippingLb2D0pKD02K3PiWSBeauty2CharmLine',
+            'StrippingLb2D0pKD02HHHHPIDWSBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsDDHHWSBeauty2CharmLine',
+            'StrippingLb2D0pKD02KsLLHHWSBeauty2CharmLine',
+            'StrippingLb2D0pPiD02K3PiBeauty2CharmLine',
+            'StrippingLb2D0pPiD02HHHHPIDBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
+            'StrippingLb2D0pPiD02K3PiWSBeauty2CharmLine',
+            'StrippingLb2D0pPiD02HHHHPIDWSBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsDDHHWSBeauty2CharmLine',
+            'StrippingLb2D0pPiD02KsLLHHWSBeauty2CharmLine',
             'StrippingLb2D0PPbarD02HHBeauty2CharmLine',
             'StrippingLb2D0PPbarWSD02HHBeauty2CharmLine',
             'StrippingLb2LcKSKLLLc2PKPiBeauty2CharmLine',
@@ -1450,6 +1515,12 @@ default_config = {
             'StrippingB02LcpbarKPiWSLc2PKPiBeauty2CharmLine',
             'StrippingLb2LcDD2HHHPIDBeauty2CharmLine',
             'StrippingLb2LcDWSD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDsD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2LcDsWSD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2Lc2595DsD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2Lc2595DsWSD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2Lc2625DsD2HHHPIDBeauty2CharmLine',
+            'StrippingLb2Lc2625DsWSD2HHHPIDBeauty2CharmLine',
             'StrippingLb2LcDKstBeauty2CharmLine',
             'StrippingLb2LcDstKstBeauty2CharmLine',
             'StrippingLb2LcDst0KLc2PKPiDst02D0GammaD2HHBeauty2CharmLine',
@@ -1490,6 +1561,8 @@ default_config = {
             'StrippingLb2LcDstWSDstar2D0PiPIDBeauty2CharmLine',
             'StrippingX2LcLcBeauty2CharmLine',
             'StrippingX2LcLcWSBeauty2CharmLine',
+            'StrippingLb2LcLcnLc2PKPiBeauty2CharmLine',
+            'StrippingLb2LcLcnWSLc2PKPiBeauty2CharmLine',
             'StrippingLb2Lc5PiLc2PKPiPIDBeauty2CharmLine',
             'StrippingLb2D0Lambda0DDD02HHBeauty2CharmLine',
             'StrippingLb2D0Lambda0LLD02HHBeauty2CharmLine',
@@ -1501,11 +1574,11 @@ default_config = {
             'StrippingXib2D0pKKD02HHBeauty2CharmLine',
             'StrippingXib2D0pPiPiD02HHBeauty2CharmLine',
             'StrippingXib2D0pKPiD02HHBeauty2CharmLine',
-            'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
-            'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
-            'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
+            #'StrippingLb2D0pKD02K3PiBeauty2CharmLine',
+            #'StrippingLb2D0pKD02KsDDHHBeauty2CharmLine',
+            #'StrippingLb2D0pKD02KsLLHHBeauty2CharmLine',
+            #'StrippingLb2D0pPiD02KsDDHHBeauty2CharmLine',
+            #'StrippingLb2D0pPiD02KsLLHHBeauty2CharmLine',
             'StrippingLb2DD0pD2HHHD02K3PiBeauty2CharmLine',
             'StrippingLb2DD0pD2HHHD2HHBeauty2CharmLine',
             'StrippingXibc2DpKD2HHHBeauty2CharmLine',
@@ -1536,12 +1609,13 @@ default_config = {
             'StrippingLb2sigmacppD0KPiSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
             'StrippingB02LcSigmacppKSigmacpp2LcPiLc2PKPiBeauty2CharmLine',
             'StrippingB2LcXicPiXic2PKPiLc2PKPiBeauty2CharmLine',
+            'StrippingBs2LcSigmapLc2PKPiSigmap2PPizBeauty2CharmLine',
             'StrippingB02DKLTUBD2HHHBeauty2CharmLine',
             'StrippingB02DsKPiPiLTUBD2HHHBeauty2CharmLine',
             'StrippingB02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine',
             'StrippingDstarUPB02D0KPiD2HHBeauty2CharmLine',
-
-            # Bc+ -> D+ D0
+#
+#            # Bc+ -> D+ D0
             'StrippingBc2DD0D2KSHHHD02HHBeauty2CharmLine',
             'StrippingBc2DD0D2KSHHHD02KHHHBeauty2CharmLine',
             'StrippingBc2DD0D2KSHHHD02HHPI0Beauty2CharmLine',
@@ -1554,8 +1628,8 @@ default_config = {
             'StrippingBc2DD0D2HHHD02KHHHBeauty2CharmLine',
             'StrippingBc2DD0D2HHHD02HHPI0Beauty2CharmLine',
             'StrippingBc2DD0D2HHHD02KSHHBeauty2CharmLine',
-
-            # Bc+ -> D*+ D0
+#
+#            # Bc+ -> D*+ D0
             'StrippingBc2DstD0Dst2DPI0D2HHHD02HHBeauty2CharmLine',
             'StrippingBc2DstD0Dst2DPI0D2HHHD02KHHHBeauty2CharmLine',
             'StrippingBc2DstD0Dst2DPI0D2HHHD02HHPI0Beauty2CharmLine',
@@ -1592,8 +1666,8 @@ default_config = {
             'StrippingBc2DstD0Dst2DPI0D2KSHD02KHHHBeauty2CharmLine',
             'StrippingBc2DstD0Dst2DPI0D2KSHD02HHPI0Beauty2CharmLine',
             'StrippingBc2DstD0Dst2DPI0D2KSHD02KSHHBeauty2CharmLine',
-
-            # Bc+ -> D+ D*0
+#
+#            # Bc+ -> D+ D*0
             'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KSHHBeauty2CharmLine',
             'StrippingBc2DDst0D2KSHHHDst02D0GammaD02KHHHBeauty2CharmLine',
             'StrippingBc2DDst0D2KSHHHDst02D0PI0D02HHBeauty2CharmLine',
@@ -1612,8 +1686,8 @@ default_config = {
             'StrippingBc2DDst0D2HHHDst02D0PI0D02KHHHBeauty2CharmLine',
             'StrippingBc2DDst0D2HHHDst02D0PI0D02KSHHBeauty2CharmLine',
             'StrippingBc2DDst0D2HHHDst02D0GammaD02HHBeauty2CharmLine',
-
-            # Bc+ -> D*+ D*0
+#
+#            # Bc+ -> D*+ D*0
             'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KSHHBeauty2CharmLine',
             'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0GammaD02KHHHBeauty2CharmLine',
             'StrippingBc2DstDst0Dst2DPI0D2HHHDst02D0PI0D02HHBeauty2CharmLine',
@@ -1669,6 +1743,12 @@ default_config = {
             'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0PI0D02KSHHBeauty2CharmLine',
             'StrippingBc2DstDst0Dst2DPI0D2KSHDst02D0GammaD02HHBeauty2CharmLine',
 
+            ##B_c+
+            'StrippingBc2DsppbarBeauty2CharmLine',            
+            'StrippingBc2D0KpipiD02KPIPIDBeauty2CharmLine',            
+            'StrippingBc2D0KpipiD02K3PIPIDBeauty2CharmLine',            
+            'StrippingBc2LcKpbarLC2PKPIBeauty2CharmLine',            
+
             #Xibc
             'StrippingXibc2LcD0D02KPiBeauty2CharmLine',
             'StrippingXibc2LcD0PiD02KPiBeauty2CharmLine',
@@ -1694,7 +1774,7 @@ default_config = {
             'StrippingXibc2LcD0MuWSD02KPiBeauty2CharmLine',
             'StrippingXibc2LcDMuD2KPiPiBeauty2CharmLine',
             'StrippingXibc2LcDMuWSD2KPiPiBeauty2CharmLine',
-
+#
             'StrippingB2XicpbarPiXic2PKPiBeauty2CharmLine',
             'StrippingB02XicpbarPiPiXic2PKPiBeauty2CharmLine',
             'StrippingB02XicpbarKPiXic2PKPiBeauty2CharmLine',
@@ -1724,12 +1804,12 @@ default_config = {
             'StrippingXib02D0LambdaPiPiDDD02K3PiBeauty2CharmLine',
             'StrippingXib2LcKHHHLc2PKPiBeauty2CharmLine',
             'StrippingXib2XicHHHHXic2PKPiBeauty2CharmLine',
-						'StrippingXibm2Xic0Pim2XimPipPimLLBeauty2CharmLine',
+ 						'StrippingXibm2Xic0Pim2XimPipPimLLBeauty2CharmLine',
             'StrippingXibm2Xic0Pim2XimPipPimDDBeauty2CharmLine',
-						'StrippingXibm2Xic0Pim2Lambda0KmPipPimLLBeauty2CharmLine',
-						'StrippingXibm2Xic0Pim2Lambda0KmPipPimDDBeauty2CharmLine',
-						'StrippingXibm2Xic0Pim2PKsKmPimLLBeauty2CharmLine',
-						'StrippingXibm2Xic0Pim2PKsKmPimDDBeauty2CharmLine'
+ 						'StrippingXibm2Xic0Pim2Lambda0KmPipPimLLBeauty2CharmLine',
+ 						'StrippingXibm2Xic0Pim2Lambda0KmPipPimDDBeauty2CharmLine',
+ 						'StrippingXibm2Xic0Pim2PKsKmPimLLBeauty2CharmLine',
+ 						'StrippingXibm2Xic0Pim2PKsKmPimDDBeauty2CharmLine'
         ]
     },
     'WGs': ['B2OC']
@@ -1842,23 +1922,23 @@ class Beauty2CharmConf(LineBuilder):
         dst = DstarBuilder(d, pions, uppions, pi0, photons, vlaphotons,
                            config['Dstar'], config['PID'])
 
-				# Xim -> X
+ 				# Xim -> X
         xim = XimBuilder(pions_pid, kaons_pid, protons_pid, lambda0, config['Xim'])
-				
-				# Lc -> X
+        # Lc -> X
         lc = LcBuilder(pions_pid, kaons_pid, protons_pid, lambda0, ks, xim, config['D2X'], config['Xic0'],
                        config['PID'])
-        xicc = XiccBuilder(lc, pions_pid, config['D2X'])
 				
-				# Loose Lc, for Xibc
+				lcstar = LcstarBuilder(lc, pions_pid, config['Lcstar'])
+        xicc = XiccBuilder(lc, pions_pid, config['D2X'])
+        # Loose Lc, for Xibc
         lcLoose = LooseLcBuilder(pions_Xc_Xibc, kaons_Xc_Xibc, protons_Xc_Xibc,
                                  config['LC_FOR_XIBC'])
         xiccLoose = LooseXiccBuilder(lcLoose, pions_Xb_Xibc, kaons_Xb_Xibc,
                                      config['LC_FOR_XIBC'])
 
         # make B->DX
-        b2dx = B2DXBuilder(d, dst, topoPions, topoPionsLoose, topoKaons,
-                           topoKaons_PID, topoPions_PID, muons, ks, pi0_fromB,
+        b2dx = B2DXBuilder(d, dst, topoPions, topoPionsLoose, topoKaons, topoKaonsLoose,
+                           topoKaons_PID, topoPions_PID, topoProtons_PID, muons, ks, pi0_fromB,
                            hh, hhh, config['B2X'])
         self._makeLines(b2dx.lines, config)
 
@@ -1872,12 +1952,12 @@ class Beauty2CharmConf(LineBuilder):
         self._makeLines(bc2bx.lines, config)
 
         #Bc -> DX lines
-        bc2dx = Bc2DXBuilder(d, dst, hh, topoPionsLoose, topoKaonsLoose,
+        bc2dx = Bc2DXBuilder(lc, topoProtons_PID, d, dst, hh, topoPionsLoose, topoPions_PID, topoKaonsLoose, topoKaons_PID,
                              config['Bc2DX'])
         self._makeLines(bc2dx.lines, config)
 
         # Lb -> X
-        lb2x = Lb2XBuilder(lc, xicc, d, hh, topoPions, topoPions_PID,
+        lb2x = Lb2XBuilder(lc, lcstar, xicc, d, hh, topoPions, topoPions_PID,
                            topoKaons, topoKaons_PID, topoProtons,
                            topoProtons_PID, pions, kaons, ks, hhh, dst,
                            lambda0, config['B2X'], config['Xibm'])
-- 
GitLab