From e9658751b26c9842d3c061267dd0882f61195bb7 Mon Sep 17 00:00:00 2001 From: Dan Thompson <dan.thompson@cern.ch> Date: Tue, 20 Jun 2023 12:58:23 +0100 Subject: [PATCH] Added a 'Bu2LLK_me_Lb2pkmeLoose' and 'Bu2LLK_me_Lb2pkmeSSLoose' line to Bu2LLK to align with other pkll lines --- .../StrippingRD/StrippingBu2LLK.py | 73 ++++++++++++++++++- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingBu2LLK.py b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingBu2LLK.py index 440c1bd14..f1bba4c18 100644 --- a/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingBu2LLK.py +++ b/Phys/StrippingSelections/python/StrippingSelections/StrippingRD/StrippingBu2LLK.py @@ -8,9 +8,9 @@ # granted to it by virtue of its status as an Intergovernmental Organization # # or submit itself to any jurisdiction. # ############################################################################### -__author__ = 'Patrick Koppenburg, Alex Shires, Thomas Blake, Luca Pescatore, Simone Bifani, Yasmine Amhis, Paula Alvarez Cartelle, Harry Cliff, Rafael Silva Coutinho, Guido Andreassi, Mick Mulder, Maarten van Veghel, John Smeaton, Vitalii Lisovskyi, Biplab Dey' -__date__ = '14/03/2021' -__version__ = '$Revision: 6 $' +__author__ = 'Patrick Koppenburg, Alex Shires, Thomas Blake, Luca Pescatore, Simone Bifani, Yasmine Amhis, Paula Alvarez Cartelle, Harry Cliff, Rafael Silva Coutinho, Guido Andreassi, Mick Mulder, Maarten van Veghel, John Smeaton, Vitalii Lisovskyi, Biplab Dey, Dan Thompson' +__date__ = '20/06/2023' +__version__ = '$Revision: 7 $' __all__ = ( 'Bu2LLKConf', 'default_config' ) @@ -906,6 +906,8 @@ class Bu2LLKConf(LineBuilder) : Sel_ee_Loose = self._make_ee_Loose("Sel_ee_Loose_For" + self._name, params = config ) Sel_mm_Loose = self._make_mm_Loose("Sel_mm_Loose_For" + self._name, params = config ) + Sel_me_Loose = self._make_me_Loose("Sel_me_Loose_For" + self._name, params = config ) + Sel_meSS_Loose = self._make_me_Loose("Sel_meSS_Loose_For" + self._name, params = config , samesign=True) SelL1520forpKll = self._makeL1520forpkll("SelL1520For" + self._name,params = config ) @@ -914,6 +916,15 @@ class Bu2LLKConf(LineBuilder) : dimuons = Sel_mm_Loose, params = config ) + SelLb2pkmeLoose = self._makeLb2pkme(meXLine_name + "_pkmeLoose", + l1520 = SelL1520forpKll, + mue = Sel_me_Loose, + params = config ) + SelLb2pkmeSSLoose = self._makeLb2pkme(meXSSLine_name + "_pkmeSSLoose", + l1520 = SelL1520forpKll, + mue = Sel_meSS_Loose, + params = config ) + SelLb2pkeeLoose = self._makeLb2pkee(eeXLine_name + "_pkeeLoose", l1520 = SelL1520forpKll, dilepton = Sel_ee_Loose, @@ -1115,6 +1126,20 @@ class Bu2LLKConf(LineBuilder) : MDSTFlag = False, MaxCandidates = 4000) + self.Lb2pkmeLooseLine = StrippingLine( meXLine_name + "_Lb2pkmeLoose" + "Line", + selection = SelLb2pkmeLoose, + RelatedInfoTools = config['RelatedInfoTools'] + RelInfoTrackIsolationBDT2_Lb2pKll, + FILTER = SPDFilter_loose, # SPD < 600 + MDSTFlag = False, + MaxCandidates = 4000) + + self.Lb2pkmeSSLooseLine = StrippingLine( meXSSLine_name + "_Lb2pkmeSSLoose" + "Line", + selection = SelLb2pkmeSSLoose, + RelatedInfoTools = config['RelatedInfoTools'] + RelInfoTrackIsolationBDT2_Lb2pKll, + FILTER = SPDFilter_loose, # SPD < 600 + MDSTFlag = False, + MaxCandidates = 4000) + self.Lb2pkeeLooseLine = StrippingLine( eeXLine_name + "_Lb2pkeeLoose" + "Line", selection = SelLb2pkeeLoose, RelatedInfoTools = config['RelatedInfoTools'] + RelInfoTrackIsolationBDT2_Lb2pKll, @@ -1155,6 +1180,8 @@ class Bu2LLKConf(LineBuilder) : self.registerLine( self.B2KpipipimmLine ) self.registerLine( self.B2KpipipieeLine ) self.registerLine( self.Lb2pkmmLooseLine ) + self.registerLine( self.Lb2pkmeLooseLine ) + self.registerLine( self.Lb2pkmeSSLooseLine ) self.registerLine( self.Lb2pkeeLooseLine ) self.registerLine( self.Lb2KsppimmLooseLine ) self.registerLine( self.Lb2KsppieeLooseLine ) @@ -2027,7 +2054,7 @@ class Bu2LLKConf(LineBuilder) : Make dimuons for Loose Lb->{pK, Ksppi}ll """ # Form the dimuon (B2XMuMu-like) w/ looser MINIPCHI2 - _dauCuts_mu = "(MIPCHI2DV(PRIMARY) > 5) & (TRGHP < 0.6) & (PIDmu> -3.0)" + _dauCuts_mu = "(MIPCHI2DV(PRIMARY) > 5) & (TRGHP < 0.6) & (PIDmu> -3.0)" _momCuts_dimu = "(VFASPF(VCHI2/VDOF) < 12.0) & (BPVDIRA> -0.9) & (BPVVDCHI2 > 9.0)" _combCut_dimu = "(AM < 7100*MeV)" @@ -2037,6 +2064,24 @@ class Bu2LLKConf(LineBuilder) : MotherCut = _momCuts_dimu) return Selection("sel_mm_Loose", Algorithm=comb_dimuon, RequiredSelections=[DataOnDemand(Location="Phys/StdAllLooseMuons/Particles")]) + def _make_me_Loose( self, name, params, samesign = False ) : + """ + Make dimuons for Loose Lb->{pK, Ksppi}ll + """ + # Form the dimuon (B2XMuMu-like) w/ looser MINIPCHI2 + _dauCuts_mu = "(MIPCHI2DV(PRIMARY) > 5) & (TRGHP < 0.6) & (PIDmu> -3.0)" + _dauCuts_e = "(MIPCHI2DV(PRIMARY) > 5) & (PT > 300 *MeV) & (ABSID==11) & (PIDe > 0)" #overwrites particle constructor cuts + _momCuts_mue = "(VFASPF(VCHI2/VDOF) < 12.0) & (BPVDIRA> -0.9) & (BPVVDCHI2 > 9.0)" + _combCut_mue = "(AM < 7100*MeV)" + + comb_mue = CombineParticles(DecayDescriptor = "[J/psi(1S) -> mu+ e-]cc" if not samesign else "[J/psi(1S) -> mu+ e+]cc", + DaughtersCuts = {"mu+":_dauCuts_mu,"e-":_dauCuts_e}, + CombinationCut = _combCut_mue, + MotherCut = _momCuts_mue) + return Selection(name, Algorithm=comb_mue, RequiredSelections=[DataOnDemand(Location="Phys/StdAllLooseMuons/Particles"), + DataOnDemand(Location="Phys/StdLooseElectrons/Particles")]) + + def _makeL1520forpkll( self, name, params ) : """ Make a Lambda(1520)0 -> p K @@ -2100,6 +2145,26 @@ class Bu2LLKConf(LineBuilder) : ] return Selection("sel_Lb2pKmm", Algorithm = sel_Lb2pKmm_filter, RequiredSelections = [sel_Lb2pKmm_init]) + def _makeLb2pkme( self, name, l1520, mue, params ) : + """ + Make the Lb -> J/psi(1s) Lambda(1520)0 + """ + combB_Lb2pKme = CombineParticles(DecayDescriptor = "[Lambda_b0 -> J/psi(1S) Lambda(1520)0]cc", + CombinationCut = "in_range(4000,AM,7100)", + MotherCut = "(in_range(4000,M,7100)) & (VFASPF(VCHI2PDOF) < 30) & (PT>200*MeV)") + sel_Lb2pKme_init = Selection("selection_Lb2pKmeSS_init" if "SS" in name else "selection_Lb2pKme_init", + Algorithm=combB_Lb2pKme, + RequiredSelections=[mue,l1520]) + sel_Lb2pKme_filter = FilterDesktop(Code = "(in_range(5000,mB,6500)) & (dtf_signif > 3.5) & (dtf_prob > 1.0E-6) & (mpK<4*GeV)") + sel_Lb2pKme_filter.Preambulo = [ + "dtf_prob = DTF_PROB(True)", + "dtf_signif = DTF_CTAUSIGNIFICANCE(0, True)", + "mB = DTF_FUN(M, True)", + "mpK = DTF_FUN(CHILD(2, M), True)" + ] + return Selection("sel_Lb2pKmeSS" if "SS" in name else "sel_Lb2pKme", + Algorithm = sel_Lb2pKme_filter, RequiredSelections = [sel_Lb2pKme_init]) + def _makeLb2pkee( self, name, l1520, dilepton, params ) : """ -- GitLab