diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_B2DXBuilder.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_B2DXBuilder.py index 618daf1c5f1b959478bcbe5e35a473276063e70e..095429650af4b2eae52d2f4cbdb4ab9fc690eccd 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_B2DXBuilder.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_B2DXBuilder.py @@ -25,7 +25,7 @@ class B2DXBuilder(object): '''Makes all B->DX decays for the Beauty2Charm module.''' def __init__(self, d, dst, topoPions, topoPionsLoose, topoKaons, - topoKaons_PID, topoPions_PID, muons, ks, pi0, hh, hhh, + topoKaons_PID, topoPions_PID, topoProtons_PID, muons, ks, pi0, hh, hhh, config): self.config = config self.topoPions = [topoPions] @@ -33,6 +33,7 @@ class B2DXBuilder(object): self.topoKaons = [topoKaons] self.topoKaons_PID = [topoKaons_PID] self.topoPions_PID = [topoPions_PID] + self.topoProtons_PID = [topoProtons_PID] self.muons = muons self.d = d self.dst = dst @@ -110,6 +111,9 @@ class B2DXBuilder(object): self._makeB2DKS('D2HHH', self.d.hhh, 'DD') # B+- -> D+-(HHH) KS self._makeB2DKS('D2HHH', self.d.hhh, 'LL') # B+- -> D+-(HHH) KS self._makeB02DV('D2HHHCFPID', self.d.hhh_cf_pid) + + self._makeB2DHH('D2HHHPP', self.d.ds_hhh_pid_tight) + # B -> D(KSH[H]) X (LL & DD) self._makeB02DH('D2KSHLL', self.d.ksh_ll) # B0 -> D+-(KSLLH) H-+ (+WS) @@ -472,12 +476,14 @@ class B2DXBuilder(object): decays = { 'B2DPiPi': ["B+ -> D+ rho(770)0", "B- -> D- rho(770)0"], 'B2DKPi': ["[B- -> D- K*(892)0]cc", "[B+ -> D+ K*(892)0]cc"], - 'B2DKK': ["B+ -> D+ phi(1020)", "B- -> D- phi(1020)"] + 'B2DKK': ["B+ -> D+ phi(1020)", "B- -> D- phi(1020)"], + 'B2DPP': ["B- -> D- p+ p~-", "B+ -> D+ p~- p+"] } inputs = { 'B2DPiPi': d2x + self.hh.pipi_pid, 'B2DKPi': d2x + self.hh.kpi_pid, - 'B2DKK': d2x + self.hh.kk_pid + 'B2DKK': d2x + self.hh.kk_pid, + 'B2DPP': d2x + self.topoProtons_PID } b2dhh = makeB2XSels(decays, dname, inputs, self.config) decays = {'B2DHHOS': ["B- -> D+ rho(770)-", "B+ -> D- rho(770)+"]} diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_HHBuilder.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_HHBuilder.py index 1be993e8c07d24b4a4a881d749d631e18cbed671..b93e76aa8d28f556b63bfa3249f812d6ba675570 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_HHBuilder.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_HHBuilder.py @@ -58,6 +58,7 @@ class HHBuilder(object): self.kspi = self._makeKsPi() self.kpi0 = self._makeKPi0() self.pipi0 = self._makePiPi0() + self.ppi0 = self._makePPi0() self.kpi = self._makeKPi(self.pipi) self.kpi_loose = self._makeKPi_Loose(self.pipi_loose) self.kk = self._makeKK(self.pipi) @@ -67,6 +68,7 @@ class HHBuilder(object): self.phi = self._makePhi(self.kk) self.rho0 = self._makeRho0(self.pipi) self.rhopm = self._makeRhoPM(self.pipi0) + self.sigmapm = self._makeSigmaPM(self.ppi0) self.kstarpm = self._makeKstarPM(self.kpi0) self.ppbar = self._makePPbar() # WS selections (ie doubly-charged ones) @@ -282,6 +284,18 @@ class HHBuilder(object): MergedSelection('X2PiPi0Beauty2Charm', RequiredSelections=[m, r]) ] + def _makePPi0(self): + '''Makes X -> p+ pi0''' + m = self._makeXPLUS2HH('X2PPi0Merged', ['[Sigma+ -> p+ pi0]cc'], + 'AM < 5*GeV', self.config, + [self.protons] + self.pi0["Merged"], True) + r = self._makeXPLUS2HH('X2PPi0Resolved', ['[Sigma+ -> p+ pi0]cc'], + 'AM < 5*GeV', self.config, + [self.protons] + self.pi0["Resolved"], True) + return [ + MergedSelection('X2PPi0Beauty2Charm', RequiredSelections=[m, r]) + ] + def _makeRho0(self, pipi): mass = self._massWindow('RHO', 'rho(770)0').replace( 'ADAMASS', 'ADMASS') @@ -301,6 +315,11 @@ class HHBuilder(object): 'ADAMASS', 'ADMASS') return [filterSelection('RHOPM', mass, pipi)] + def _makeSigmaPM(self, ppi0): + mass = self._massWindow('SIGMA', 'Sigma+').replace( + 'ADAMASS', 'ADMASS') + return [filterSelection('SIGMAPM', mass, ppi0)] + def _makeKstarPM(self, kpi): mass = self._massWindow('KST', 'K*(892)+').replace('ADAMASS', 'ADMASS') return [filterSelection('K*PM', mass, kpi)] diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py index e13427945d885b9093d157e70dcf30d7792a4ddd..9be95907f677546947fcdbb7ae032d84e5acbb87 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/Beauty2Charm_Lb2XBuilder.py @@ -949,6 +949,9 @@ class Lb2XBuilder(object): # B0 -> Lc+ Sigmacpp(LcPi) K+ self._makeB02LcSigmacppK() + # Bs -> Lc- Sigma+ + self._makeBs2LcSigma() + # B+ -> Lc+ Xic- pi+ self._makeB2LcXicPi() @@ -2136,6 +2139,14 @@ class Lb2XBuilder(object): 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 diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py index dea06de96fc8faf3894811fe7e9263be9ee06d8e..c79a0a34358f7436df2e09f8ba83f42d31498269 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingB2OC/StrippingBeauty2Charm.py @@ -296,7 +296,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', @@ -945,6 +946,7 @@ default_config = { 'StrippingB02DKsKLLWSD2HHHCFPIDBeauty2CharmLine', 'StrippingB02DKsKDDWSD2HHHCFPIDBeauty2CharmLine', 'StrippingB2DKKD2HHHCFPIDBeauty2CharmLine', + 'StrippingB2DPPD2HHHPPBeauty2CharmLine', 'StrippingB2DKPiD2HHHCFPIDBeauty2CharmLine', 'StrippingB2DPiPiD2HHHCFPIDBeauty2CharmLine', 'StrippingB2DHHOSD2HHHCFPIDBeauty2CharmLine', @@ -1510,6 +1512,7 @@ default_config = { 'StrippingLb2sigmacppD0KPiSigmacpp2LcPiLc2PKPiBeauty2CharmLine', 'StrippingB02LcSigmacppKSigmacpp2LcPiLc2PKPiBeauty2CharmLine', 'StrippingB2LcXicPiXic2PKPiLc2PKPiBeauty2CharmLine', + 'StrippingBs2LcSigmapLc2PKPiSigmap2PPizBeauty2CharmLine', 'StrippingB02DKLTUBD2HHHBeauty2CharmLine', 'StrippingB02DsKPiPiLTUBD2HHHBeauty2CharmLine', 'StrippingB02DsstarKLTUBDsstar2DGammaD2HHHBeauty2CharmLine', @@ -1822,7 +1825,7 @@ class Beauty2CharmConf(LineBuilder): # make B->DX b2dx = B2DXBuilder(d, dst, topoPions, topoPionsLoose, topoKaons, - topoKaons_PID, topoPions_PID, muons, ks, pi0_fromB, + topoKaons_PID, topoPions_PID, topoProtons_PID, muons, ks, pi0_fromB, hh, hhh, config['B2X']) self._makeLines(b2dx.lines, config)