コード例 #1
0
    def buildPIDLineWithJpsi(self, configRowId):
        ## Resolves possible clone statements
        _config = self._resolveCloning(configRowId)

        ## Prepares the tag&probe cut if needed
        _combinationCutJpsi = _config['JpsiCombinationCut']
        _combinationCut = _config['CombinationCut']

        if 'TagAndProbeCut' in _config:
            _id = ["1", "2"]
            _combinationCutJpsi += ' & '
            _combinationCutJpsi += self._buildTagProbeCut(
                _config['TagAndProbeCut'], _id)

            ###print _combinationCut

        _algorithmJpsi = CombineParticles()
        #_algorithmJpsi = CombineParticles(self.name + configRowId + 'JpsiAlgorithm')

        _algorithmJpsi.CombinationCut = _combinationCutJpsi
        _algorithmJpsi.DaughtersCuts = _config['DaughtersCuts']
        _algorithmJpsi.MotherCut = _config['JpsiMotherCut']
        _algorithmJpsi.DecayDescriptor = _config['DecayDescriptorJpsi']

        _requiredSelections = [
            DataOnDemand(x) for x in _config['InputTESJpsi']
        ]
        _selectionJpsi = Selection(self.name + configRowId + 'SelectionJpsi',
                                   Algorithm=_algorithmJpsi,
                                   RequiredSelections=_requiredSelections)

        _algorithm = CombineParticles()
        #_algorithm = CombineParticles(self.name + configRowId + 'Algorithm')

        _algorithm.CombinationCut = _combinationCut
        _algorithm.DaughtersCuts = _config['DaughtersCuts']
        _algorithm.MotherCut = _config['MotherCut']
        _algorithm.DecayDescriptor = _config['DecayDescriptor']

        _requiredSelections = [_selectionJpsi] + [
            DataOnDemand(x) for x in _config['InputTES']
        ]
        _selection = Selection(self.name + configRowId + 'Selection',
                               Algorithm=_algorithm,
                               RequiredSelections=_requiredSelections)

        _line = StrippingLine(
            self.name + configRowId + 'Line',
            prescale=_config['Prescale'],
            checkPV=_config['CheckPV'],
            EnableFlavourTagging=False,
            RequiredRawEvents=_config['RawEvent']
            #, MDSTFlag             = _config['MDST.DST']
            ,
            HLT1=_config['Hlt1Filter'],
            HLT2=_config['Hlt2Filter'],
            algos=[_selection],
            ODIN=self.odin)

        return _line
コード例 #2
0
    def __Selection_CreateDiMuonSSLowP__(self, lName, DiMuonCuts, MuonCuts, IsMuonFlag, MuonPIDmu):
        '''
        Clone the StdVeryLooseDiMuon to build same sign candidates
        '''
        from StandardParticles import StdNoPIDsMuons, StdVeryLooseMuons
        _requires =  [StdNoPIDsMuons] 
        from  GaudiConfUtils.ConfigurableGenerators import CombineParticles
        muhigh = '(0.5<PPINFO(LHCb.ProtoParticle.InAccMuon,-1)) '
        mulow = '(0.5>PPINFO(LHCb.ProtoParticle.InAccMuon,-1)) &  ( PIDmu > 3.0 )' 
        CombineDiMuonSSLowP = CombineParticles()
        CombineDiMuonSSLowP.DecayDescriptor = "[J/psi(1S) -> mu+ mu+]cc"
        CombineDiMuonSSLowP.DaughtersCuts = { "mu+" : MuonCuts,  "mu-": MuonCuts  }
        
        if IsMuonFlag:
            CombineDiMuonSSLowP.CombinationCut =  "( ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)>0.5,1) & ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)<0.5,2) &  ACHILDCUT(ISMUON, 1) & ACHILDCUT(PIDmu > "+str(MuonPIDmu) +",2) ) | ( ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)>0.5,2) & ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)<0.5,1) &  ACHILDCUT(ISMUON, 2) & ACHILDCUT(PIDmu > "+str(MuonPIDmu) + " ,1) )"
        else:
            CombineDiMuonSSLowP.CombinationCut =  "( ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)>0.5,1) & ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)<0.5,2) &  ACHILDCUT(ISMUONLOOSE, 1) & ACHILDCUT(PIDmu > 0.0 ,2) ) | ( ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)>0.5,2) & ACHILDCUT(PPINFO(LHCb.ProtoParticle.InAccMuon,-1)<0.5,1) &  ACHILDCUT(ISMUONLOOSE, 2) & ACHILDCUT(PIDmu > 0.0 ,1) )"
       
        CombineDiMuonSSLowP.MotherCut     = DiMuonCuts

        from StandardParticles import StdLooseMuons, StdVeryLooseMuons
        Muons = StdLooseMuons if IsMuonFlag else StdVeryLooseMuons
        
        from PhysSelPython.Wrappers import Selection
        SelDiMuonSSLowP = Selection("Sel_" + lName + "_DiMuonSSLowP", Algorithm = CombineDiMuonSSLowP, RequiredSelections = _requires )
        return SelDiMuonSSLowP
コード例 #3
0
def makeTau2PhiMu(name):
    """
    Please contact Giulio Dujany if you think of prescaling this line!
    
    Arguments:
    name        : name of the Selection.
    """
    #from Configurables import OfflineVertexFitter
    Tau2PhiMu = CombineParticles()
    Tau2PhiMu.DecayDescriptor = " [ tau+ -> phi(1020) mu+ ]cc"

    makePhi = CombineParticles()
    makePhi.DecayDescriptor = "phi(1020) -> K+ K-"
    makePhi.DaughtersCuts = {
        "K+":
        "(ISLONG) & (TRCHI2DOF < 3 ) & (TRGHOSTPROB<0.3) & (PT>300*MeV) & (PIDK > 0) & ( BPVIPCHI2 () >  9 )",
        "K-":
        "(ISLONG) & (TRCHI2DOF < 3 ) & (TRGHOSTPROB<0.3) & (PT>300*MeV) & (PIDK > 0) & ( BPVIPCHI2 () >  9 )"
    }

    _kaons = DataOnDemand(Location='Phys/StdLooseKaons/Particles')

    makePhi.CombinationCut = "(ADAMASS('phi(1020)')<30*MeV)"
    makePhi.MotherCut = " ( VFASPF(VCHI2) < 25 ) & (MIPCHI2DV(PRIMARY)> 9)"

    SelPhi = Selection(name + "SelPhi",
                       Algorithm=makePhi,
                       RequiredSelections=[_kaons])

    Tau2PhiMu.DaughtersCuts = {
        "mu-":
        " ( PT > 300 * MeV ) & ( TRCHI2DOF < 3 ) & (TRGHOSTPROB<0.3) & ( BPVIPCHI2 () >  9 )"
    }
    Tau2PhiMu.CombinationCut = "(ADAMASS('tau-')<150*MeV)"

    Tau2PhiMu.MotherCut = "( VFASPF(VCHI2) < 25 ) &  ( (BPVLTIME () * c_light)   > 50 * micrometer ) &  ( BPVIPCHI2() < 100 ) "

    _stdLooseMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")

    SelTau = Selection(name + "makeTau",
                       Algorithm=Tau2PhiMu,
                       RequiredSelections=[SelPhi, _stdLooseMuons])

    # Trigger selection
    from Configurables import TisTosParticleTagger
    _tisTosFilter = TisTosParticleTagger(name + "Triggered")
    _tisTosFilter.TisTosSpecs = {
        'L0Global%TIS': 0,
        'L0MuonDecision%TOS': 0,
        'Hlt1TrackAllL0Decision%TOS': 0,
        'Hlt1TrackMuonDecision%TOS': 0
    }

    SelTau_triggered = Selection(
        name,
        Algorithm=_tisTosFilter,
        RequiredSelections=[SelTau],
    )

    return SelTau_triggered
コード例 #4
0
def makeEtaPrime2pipipi(name, config):
    """
        eta' selection for tau -> mu eta'
        Please contact Guido Andreassi if you think of prescaling this line!
        
        Arguments:
        name        : name of the Selection , configuration dictionary.
        """
    EtaPrime2pipipi = CombineParticles()
    EtaPrime2pipipi.DecayDescriptor = "eta_prime -> pi+ pi- pi0"
    EtaPrime2pipipi.ReFitPVs = True

    EtaPrime2pipipi.DaughtersCuts = {
        "pi+": "{piplus_cuts}".format(**config),
        "pi-": "{piminus_cuts}".format(**config),
        "pi0": "{pi0_cuts}".format(**config)
    }

    EtaPrime2pipipi.CombinationCut = "{etap_mass_window}".format(**config)
    EtaPrime2pipipi.MotherCut = "{etap_cuts}".format(**config)

    _stdLoosePions = DataOnDemand(Location="Phys/StdLoosePions/Particles")
    _stdLooseResolvedPi0 = DataOnDemand(
        Location="Phys/StdLooseResolvedPi0/Particles")
    _stdLooseMergedPi0 = DataOnDemand(
        Location="Phys/StdLooseMergedPi0/Particles")
    _stdPi0 = MergedSelection(
        "Pi0For" + name,
        RequiredSelections=[_stdLooseResolvedPi0, _stdLooseMergedPi0])

    return Selection(name,
                     Algorithm=EtaPrime2pipipi,
                     RequiredSelections=[_stdLoosePions, _stdPi0])
コード例 #5
0
def makeEtaPrime2pipigamma(name, config):
    """
        eta' selection for tau -> mu eta'
        Please contact Guido Andreassi if you think of prescaling this line!
        
        Arguments:
        name        : name of the Selection , configuration dictionary.
        """
    EtaPrime2pipigamma = CombineParticles()
    EtaPrime2pipigamma.DecayDescriptor = "eta_prime -> pi+ pi- gamma"
    EtaPrime2pipigamma.ReFitPVs = True

    EtaPrime2pipigamma.DaughtersCuts = {
        "pi+": "{piplus_cuts}".format(**config),
        "pi-": "{piminus_cuts}".format(**config),
        "gamma": "{gamma_cuts}".format(**config)
    }

    EtaPrime2pipigamma.CombinationCut = "{etap_mass_window}".format(**config)
    EtaPrime2pipigamma.MotherCut = "{etap_cuts}".format(**config)

    _stdLoosePions = DataOnDemand(Location="Phys/StdLoosePions/Particles")
    _stdLooseAllPhotons = DataOnDemand(
        Location="Phys/StdLooseAllPhotons/Particles")

    return Selection(name,
                     Algorithm=EtaPrime2pipigamma,
                     RequiredSelections=[_stdLoosePions, _stdLooseAllPhotons])
コード例 #6
0
def makeD02kpipi0(name):

    pi0sel = MergedSelection(
        "Pi0For" + name,
        RequiredSelections=[StdLooseMergedPi0, StdLooseResolvedPi0])

    str_D0_ChargedDau = "(PT>500*MeV) & (P>5*GeV) & (MIPCHI2DV(PRIMARY)>4) & (TRCHI2DOF<5)"
    str_D0_Pi0 = "(PT>800*MeV) & (P>5*GeV)"
    str_D0_CombCuts = "(ADAMASS('D0')<200*MeV) & (ADOCA(1,2) < 1.5) & (AHASCHILD(((ABSID == 'K+') | (ABSID == 'pi+')) & (MIPCHI2DV(PRIMARY)>40)))"
    str_D0_MotherCuts = "(BPVDIRA>0.9) & (PT>2.5*GeV) & (VFASPF(VCHI2/VDOF)<10) & (BPVVDCHI2>36)"
    str_D0_DecayDescriptor_RS = "[D0 -> K- pi+ pi0]cc"
    str_D0_Sidebands = "200*MeV"

    d0 = CombineParticles()
    d0.DecayDescriptor = str_D0_DecayDescriptor_RS
    d0.DaughtersCuts = {
        "K-": str_D0_ChargedDau +
        ' & ((PPINFO(LHCb.ProtoParticle.RichDLLk,-1000))>0)',
        "pi+": str_D0_ChargedDau +
        ' & ((PPINFO(LHCb.ProtoParticle.RichDLLk,-1000))<0)',
        "pi0": str_D0_Pi0
    }
    d0.CombinationCut = str_D0_CombCuts
    d0.MotherCut = str_D0_MotherCuts

    return Selection(
        "D02Kpipi0For" + name,
        Algorithm=d0,
        RequiredSelections=[pi0sel, StdNoPIDsPions, StdNoPIDsKaons])
コード例 #7
0
def make5pi_excl(name, _h_PT, _h_IPCHI2, _h_TRCHI2DOF, _h_TRGHP, _5h_DOCA,
                 _5h_DIRA, _5h_FDCHI2, _5h_CHI2, _5h_PT, _5h_PVIPCHI2sum,
                 _5h_Mmin, _5h_Mmax, _probnnpi):

    _daughtersCuts = {
        "pi+":
        " (PT > %(_h_PT)s*MeV)  \
                             & (TRCHI2DOF < %(_h_TRCHI2DOF)s) \
                             & (MIPCHI2DV(PRIMARY) > %(_h_IPCHI2)s) \
                             & (PROBNNpi > %(_probnnpi)s) \
                             & (TRGHP < %(_h_TRGHP)s) " % locals()
    }
    _combinationCut = "(AM < %(_5h_Mmax)s*MeV) \
                     & (AM > %(_5h_Mmin)s*MeV) \
		     & (AMAXDOCA('LoKi::TrgDistanceCalculator') < %(_5h_DOCA)s)" % locals()
    _motherCut = " (BPVDIRA > %(_5h_DIRA)s) \
		 & (BPVVDCHI2 > %(_5h_FDCHI2)s) \
		 & (VFASPF(VCHI2) < %(_5h_CHI2)s) \
                 & (PT > %(_5h_PT)s*MeV) \
		 & (SUMTREE(MIPCHI2DV(PRIMARY),((ABSID=='pi+') | (ABSID=='pi-')),0.0) > %(_5h_PVIPCHI2sum)s) " \
                 % locals()

    _5pi = CombineParticles()
    _5pi.DecayDescriptors = ["[B+ -> pi+ pi+ pi+ pi- pi-]cc"]
    _5pi.MotherCut = _motherCut
    _5pi.CombinationCut = _combinationCut
    _5pi.DaughtersCuts = _daughtersCuts

    return Selection(name, Algorithm=_5pi, RequiredSelections=[StdNoPIDsPions])
コード例 #8
0
def makeDetachedJPsi(name):
    """
    detached JPsi selection for B--> JPsi X calibration and
    normalization channels. 

    Please contact Flavio Archilli if you think of prescaling this line!

    Arguments:
    name        : name of the Selection.
    """
    #from Configurables import OfflineVertexFitter
    DetachedJPsi = CombineParticles()
    DetachedJPsi.DecayDescriptor = "J/psi(1S) -> e+ e-"
    #DetachedJPsi.addTool( OfflineVertexFitter )
    #DetachedJPsi.ParticleCombiners.update( { "" : "OfflineVertexFitter"} )
    #DetachedJPsi.OfflineVertexFitter.useResonanceVertex = False
    DetachedJPsi.ReFitPVs = True
    DetachedJPsi.DaughtersCuts = { "e+" : "(TRCHI2DOF < 3 ) "\
                                   "& (MIPCHI2DV(PRIMARY)> 25.) "\
                                   "& (PIDe > 2) "}

    DetachedJPsi.CombinationCut = "(ADAMASS('J/psi(1S)')<1000*MeV) "\
                                   "& (AMAXDOCA('')<0.3*mm)"

    DetachedJPsi.MotherCut = "(VFASPF(VCHI2)<9) "\
                             "& (ADMASS('J/psi(1S)') < 1000*MeV )"\
                             "& (BPVDIRA > 0) "\
                             "& (BPVVDCHI2>169)"

    _stdLooseElectrons = DataOnDemand(
        Location="Phys/StdLooseElectrons/Particles")

    return Selection(name,
                     Algorithm=DetachedJPsi,
                     RequiredSelections=[_stdLooseElectrons])
コード例 #9
0
def makeBs2Kst_0Kst_0(name, Kst_0sel, BMassWin, BVCHI2, BDOCA, BIPCHI2,
                      BFDistanceCHI2, SumPT, BDIRA):
    """
       Create and return a Bs -> Kstar_0(1430)(Kpi) anti-Kstar_0(1430)(Kpi) Selection object.
       Arguments:
       name           : name of the Selection.
       Kst_0sel       : Kst_0(1430) -> K+pi- Selection object.
       BMassWin       : Bs invariant mass window around PDG mass value (MeV).
       BVCHI2         : Maximum Bs vertex chi2 per degree of freedom.
       BDOCA          : Maximum Bs DOCA.
       BFDistanceCHI2 : Minimum Bs Flight Distance chi2.
       SumPT          : Sum|pT| of the daughters.
       """

    _motherCuts = " (VFASPF(VCHI2/VDOF) < %(BVCHI2)s) & (MIPCHI2DV(PRIMARY)< %(BIPCHI2)s) & (BPVVDCHI2 > %(BFDistanceCHI2)s) & (BPVDIRA > %(BDIRA)s)" % locals(
    )
    _combinationCut = "(ADAMASS('B_s0') < %(BMassWin)s *MeV) & (AMAXDOCA('',False)< %(BDOCA)s *mm) "\
                      "& ( (AMINCHILD(PT,ID=='K+') + AMINCHILD(PT,ID=='K-') + AMINCHILD(PT,ID=='pi-') + AMINCHILD(PT,ID=='pi+'))> %(SumPT)s *MeV)" % locals()

    _Bs = CombineParticles()
    _Bs.DecayDescriptor = "B_s0 -> K*_0(1430)0 K*_0(1430)~0"
    _Bs.CombinationCut = _combinationCut
    _Bs.MotherCut = _motherCuts

    _Bs.ReFitPVs = True

    return Selection(name, Algorithm=_Bs, RequiredSelections=[Kst_0sel])
コード例 #10
0
    def __Selection_CreateKstar__(self, lName, KstarCombCut, KstarCut, KaonCut,
                                  PionCut, UseNoPIDsParticles):
        '''
        Make K* using StdNoPID common particles
        '''

        from StandardParticles import StdNoPIDsPions, StdNoPIDsKaons, StdLooseKaons, StdLoosePions

        _requires = [
            StdNoPIDsKaons, StdNoPIDsPions
        ] if UseNoPIDsParticles else [StdLooseKaons, StdLoosePions]

        from GaudiConfUtils.ConfigurableGenerators import CombineParticles
        CombineKstar = CombineParticles()

        CombineKstar.DecayDescriptor = "[K*(892)0 -> K+ pi-]cc"

        CombineKstar.CombinationCut = KstarCombCut
        CombineKstar.MotherCut = KstarCut
        CombineKstar.DaughtersCuts = {"K+": KaonCut, "pi-": PionCut}

        from PhysSelPython.Wrappers import Selection
        SelKstar = Selection(
            "Sel_" + lName + "_Kstar",
            Algorithm=CombineKstar,
            RequiredSelections=_requires)  #[StdNoPIDsPions, StdNoPIDsKaons])

        return SelKstar
コード例 #11
0
 def makeB2LpLL( self, name, config ) :
     """
     Create and store a B -> Lambda~0(LL) p+  Selection object.
     Arguments:
     name             : name of the Selection.
     config           : config dictionary
     """
 
     _massCutLow     = "(AM>(5279-%s)*MeV)"               % config['B_2bodyMlow']
     _massCutHigh    = "(AM<(5279+%s)*MeV)"               % config['B_2bodyMhigh']
     _aptCut         = "(APT>%s*MeV)"                     % config['B_APTmin']
     _daugMedPtCut   = "(ANUM(PT>%s*MeV)>=2)"             % config['BDaug_MedPT_PT']
     _maxDocaChi2Cut = "(ACUTDOCACHI2(%s,''))"            % config['BDaug_LL_maxDocaChi2']
     _daugPtSumCut   = "(APT1>%s*MeV)"                   % config['B_LL_PTMin']
 
     _combCuts = _aptCut+'&'+_daugPtSumCut+'&'+_daugMedPtCut+'&'+_massCutLow+'&'+_massCutHigh+'&'+_maxDocaChi2Cut
     
     _ptCut      = "(PT>%s*MeV)"                    % config['B_PTmin']
     _vtxChi2Cut = "(VFASPF(VCHI2)<%s)"             % config['B_VtxChi2']
     _diraCut    = "(BPVDIRA>%s)"                   % config['B_LL_Dira']
     _ipChi2Cut  = "(MIPCHI2DV(PRIMARY)<%s)"        % config['B_LL_IPCHI2wrtPV']
     _fdCut      = "(VFASPF(VMINVDDV(PRIMARY))>%s)" % config['B_FDwrtPV']
     _fdChi2Cut  = "(BPVVDCHI2>%s)"                 % config['B_LL_FDChi2']
 
     _motherCuts = _ptCut+'&'+_vtxChi2Cut+'&'+_diraCut+'&'+_ipChi2Cut+'&'+_fdCut+'&'+_fdChi2Cut
 
     _B = CombineParticles()
     _B.DecayDescriptors = [ "B- -> p~- Lambda0", "B+ -> p+ Lambda~0" ]
     _B.DaughtersCuts = { "p+" : "TRCHI2DOF<%s"% config['Trk_Chi2'] }
     _B.CombinationCut = _combCuts
     _B.MotherCut = _motherCuts
     
     return Selection (name, Algorithm = _B, RequiredSelections = [self.selLambda2LL, StdLooseProtons  ])
コード例 #12
0
def makeBs2PhiKst(name, Phisel, Kstsel, BMassWin, BVCHI2, BDOCA, BDIRA):
    """
       Create and return a Bs -> Phi (KK) Kstar (Kpi) Selection object.
       Arguments:
       name        : name of the Selection.
       Phisel      : Phi -> K+K- Selection object.
       Kstsel      : Kst -> K+pi- Selection object.
       BMassWin    : Bs invariant mass window around PDG mass value (MeV).
       BVCHI2      : Maximum Bs vertex chi2 per degree of freedom.
       BDOCA       : Maximum Bs DOCA.
       """

    _motherCuts = "(VFASPF(VCHI2/VDOF) < %(BVCHI2)s) & (BPVDIRA > %(BDIRA)s)" % locals(
    )
    _combinationCut = "(ADAMASS('B_s0') < %(BMassWin)s *MeV) & (AMAXDOCA('',False)< %(BDOCA)s *mm)" % locals(
    )

    _Bs = CombineParticles()
    _Bs.DecayDescriptor = "[B_s0 -> phi(1020) K*(892)~0]cc"
    _Bs.CombinationCut = _combinationCut
    _Bs.MotherCut = _motherCuts

    _Bs.ReFitPVs = True

    return Selection(name, Algorithm=_Bs, RequiredSelections=[Phisel, Kstsel])
コード例 #13
0
def makePhi2KK(name, KaonPT, KaonIPCHI2, KaonPIDK, PhiMassWin, PhiPT,
               PhiVCHI2):
    """
    Create and return a Phi -> KK Selection object.
    Starts from DataOnDemand 'Phys/StdLoosePhi2KK'.
    Arguments:
    name             : name of the Selection.
    KaonPT           : Minimum transverse momentum of K (MeV).
    KaonIPCHI2       : Minimum impact parameter chi2 of K.
    KaonPIDK         : Minimum PID_{K-pi} of K.
    PhiPT            : Minimum transverse momentum of Phi (MeV).
    PhiMassWin       : Phi invariant mass window around PDG mass value (MeV).
    PhiVCHI2         : Maximum Phi vertex chi2 (per degree of freedom?)
    """

    _stdKaons = DataOnDemand(Location="Phys/StdLooseKaons/Particles")

    _Phi2KK = CombineParticles()
    _Phi2KK.DecayDescriptor = "phi(1020) -> K+ K-"

    _Phi2KK.DaughtersCuts = {
        "K+":
        "(PT>%(KaonPT)s*MeV)&(MIPCHI2DV(PRIMARY)>%(KaonIPCHI2)s)&(PIDK > %(KaonPIDK)s)"
        % locals()
    }

    _Phi2KK.CombinationCut = "(ADAMASS('phi(1020)') < %(PhiMassWin)s *MeV)" % locals(
    )
    _Phi2KK.MotherCut = "(VFASPF(VCHI2/VDOF)< %(PhiVCHI2)s) & (PT > %(PhiPT)s *MeV)" % locals(
    )

    return Selection(name, Algorithm=_Phi2KK, RequiredSelections=[_stdKaons])
コード例 #14
0
    def __InclDimuHighQ2__(self, conf, doWS=False, doCCbar=False):
        '''
        Create a new dimuon for high q2 inclusive B->Xmumu
        '''
        from GaudiConfUtils.ConfigurableGenerators import CombineParticles
        CombineDiMuon = CombineParticles()
        CombineDiMuon.DecayDescriptors = ["B0 -> mu- mu+"]
        sel_name = "InclDiMuHighQ2"
        CombineDiMuon.MotherCut = self.InclDiMuHighQ2Cut
        # choose
        if doCCbar == True:
            # make sure cant run WS combinations if running ccbar
            sel_name += "Jpsi"
            CombineDiMuon.CombinationCut = "AM > 0 *MeV"
            CombineDiMuon.MotherCut = self.InclDiMuCCbarCut
        if doWS == True:
            CombineDiMuon.DecayDescriptors = [
                "B0 -> mu- mu+", "B0 -> mu- mu-", "B0 -> mu+ mu+"
            ]

        from PhysSelPython.Wrappers import Selection
        SelDiMuon = Selection("Sel_" + self.name + "_" + sel_name,
                              Algorithm=CombineDiMuon,
                              RequiredSelections=[self.HighQ2Muons])
        return SelDiMuon
コード例 #15
0
    def __Dimuon__(self, conf):
        '''
        Create a new dimuon from scratch
        '''
        wsCombinations = conf['DimuonWS']
        from GaudiConfUtils.ConfigurableGenerators import CombineParticles
        CombineDiMuon = CombineParticles()
        if wsCombinations == True:
            CombineDiMuon.DecayDescriptors = [
                "J/psi(1S) -> mu- mu+", "J/psi(1S) -> mu+ mu+",
                " J/psi(1S) -> mu- mu-"
            ]
        else:
            CombineDiMuon.DecayDescriptors = ["J/psi(1S) -> mu- mu+"]
        CombineDiMuon.DaughtersCuts = {
            "mu+": self.MuonCut,
            "mu-": self.MuonCut
        }
        CombineDiMuon.CombinationCut = self.DiMuonCombCut
        CombineDiMuon.MotherCut = self.DiMuonCut

        IsMuonFlag = conf['Muon_IsMuon']
        from StandardParticles import StdAllLooseMuons, StdAllVeryLooseMuons
        Muons = StdAllLooseMuons if IsMuonFlag else StdAllVeryLooseMuons

        from PhysSelPython.Wrappers import Selection
        SelDiMuon = Selection("Sel_" + self.name + "_DiMuon",
                              Algorithm=CombineDiMuon,
                              RequiredSelections=[Muons])
        return SelDiMuon
コード例 #16
0
def Dstar(name, D0Sel, config):
    """
    Selection for D*
    """

    _DSt = CombineParticles()
    _DSt.DecayDescriptor = "[D*(2010)+ -> D0 pi+]cc"
    slowPiCuts = "(PT>%(SlowPiPt)s) & (TRCHI2DOF < %(SlowPiTrkChi2)s)" % locals(
    )['config']
    d0Cuts = "ALL"
    _DSt.DaughtersCuts = {'pi+': slowPiCuts, 'D0': d0Cuts}
    combcut = """
    (APT>%(DstarPt)s)
    & (ADAMASS('D*(2010)+')<75)
    & (AM - AM1 < 165 * MeV) 
    """
    _DSt.CombinationCut = combcut % locals()['config']
    mothercut = """
    (VFASPF(VCHI2PDOF)<%(DstarVtxChi2Ndof)s)
    & (M-MAXTREE('D0'==ABSID,M)<%(DeltaM_Max)s)
    & (M-MAXTREE('D0'==ABSID,M)>%(DeltaM_Min)s)
    """
    _DSt.MotherCut = mothercut % locals()['config']

    DSt = Selection("SelDSt2D0PiFor" + name,
                    Algorithm=_DSt,
                    RequiredSelections=[StdAllNoPIDsPions, D0Sel])

    return DSt
コード例 #17
0
def D0(name, config):
    """
    Selection for D0
    """

    _D0 = CombineParticles()
    _D0.DecayDescriptor = "[D0 -> K- pi+]cc"
    dauCutStr = "(PT > %(DaugPt)s) & (P > %(DaugP)s) & (TRCHI2DOF < %(DaugTrkChi2)s) & (MIPCHI2DV(PRIMARY) > %(DaugIPChi2)s)" % locals(
    )['config']
    _D0.DaughtersCuts = {"K+": dauCutStr, "pi+": dauCutStr}
    _D0.CombinationCut = "(AMINDOCA('')<0.5)&(ADAMASS('D0')<85 * MeV)" % locals(
    )['config']
    mothercut = """
    (PT>%(D0Pt)s)
    & (VFASPF(VCHI2PDOF)<%(D0VtxChi2Ndof)s)
    & (BPVVDCHI2>%(D0FDChi2)s)
    & (BPVDIRA>%(D0BPVDira)s)
    & (BPVIPCHI2()<%(D0IPChi2)s)
    & (ADMASS('D0') < %(D0MassWin)s )
    & ( ADWM( 'D0' , WM( 'pi-' , 'K+') ) > %(DCS_WrongMass)s)
    """
    # take these out as they shape the sidebands
    # & ( ADWM( 'D0' , WM( 'K-' , 'K+') ) > %(KK_WrongMass)s)
    # & ( ADWM( 'D0' , WM( 'pi-' , 'pi+') ) > %(PiPi_WrongMass)s)
    # """
    _D0.MotherCut = mothercut % locals()['config']

    D0 = Selection("SelD02RSKPiFor" + name,
                   Algorithm=_D0,
                   RequiredSelections=[StdAllNoPIDsKaons, StdAllNoPIDsPions])
    return D0
コード例 #18
0
    def __Bs__(self, Dimuon, Kaons, Pions, Kshort, Lambda, Phi, Rho, Kstar,
               Kstar2KsPi, Kstar2KPi0, conf):
        """
        Make and return a Bs selection
        """

        _b2xmumu = CombineParticles()
        _b2xmumu.DecayDescriptors = [
            "B0 -> J/psi(1S) phi(1020)", "[B0 -> J/psi(1S) K*(892)0]cc",
            "B0 -> J/psi(1S) rho(770)0", "B0 -> J/psi(1S) KS0",
            "[B+ -> J/psi(1S) K+]cc", "[B+ -> J/psi(1S) pi+]cc",
            "[B+ -> J/psi(1S) K*(892)+]cc",
            "[Lambda_b0 -> J/psi(1S) Lambda0]cc"
        ]

        _b2xmumu.CombinationCut = "(AM > 4900.0 *MeV) & (AM < 7000.0 *MeV)"
        _b2xmumu.MotherCut = self.__BsCuts__(conf)

        _sel_Daughters = MergedSelection(
            "Selection_" + self.name + "_daughters",
            RequiredSelections=[
                Kaons, Pions, Kshort, Lambda, Phi, Rho, Kstar, Kstar2KsPi,
                Kstar2KPi0
            ])
        sel = Selection("Selection_" + self.name + "_bs2xmumu",
                        Algorithm=_b2xmumu,
                        RequiredSelections=[Dimuon, _sel_Daughters])
        return sel
コード例 #19
0
    def _Lb2pMuNuVub_low_Lb(self):
        from GaudiConfUtils.ConfigurableGenerators import CombineParticles
        from PhysSelPython.Wrappers import Selection

        _pMu = CombineParticles(DecayDescriptors=["[Lambda_b0 -> p+ mu-]cc"],
                                ReFitPVs=True)
        _pMu.Preambulo = self._Definitions()
        _pMu.CombinationCut = "(AM>%(pMuMassLower)s*MeV)" % self._config
        _pMu.MotherCut = "(VFASPF(VCHI2/VDOF)< %(BVCHI2DOF)s) & (BPVDIRA> %(BDIRA)s)"\
                           "& (Lb_PT > %(pMuPT)s)"\
             "& (Lb_MCORR < %(pMuMCORR)s)"\
                           "& (BPVVDCHI2 >%(BFDCHI2HIGH)s)" % self._config
        _pMu.ReFitPVs = True

        _pMuSel = Selection(
            "pMu_low_Lb_for" + self._name,
            Algorithm=_pMu,
            RequiredSelections=[self._muonFilter(),
                                self._protonFilter()])

        _LbSel = tosSelection(
            _pMuSel, {
                'Hlt2.*TopoMu2Body.*Decision%TOS': 0,
                'Hlt2.*SingleMuon.*Decision%TOS': 0
            })
        return _LbSel
コード例 #20
0
def makeB2ee(name):
    """
    Please contact Johannes Albrecht if you think of prescaling this line!
    
    Arguments:
    name        : name of the Selection.
    """

    #from Configurables import OfflineVertexFitter
    Bs2ee = CombineParticles()
    Bs2ee.DecayDescriptors = ["B_s0 -> e+ e-", "[B_s0 -> e+ e+]cc"]

    #Bs2ee.addTool( OfflineVertexFitter )
    #Bs2ee.ParticleCombiners.update( { "" : "OfflineVertexFitter"} )
    #Bs2ee.OfflineVertexFitter.useResonanceVertex = False
    Bs2ee.ReFitPVs = False
    Bs2ee.DaughtersCuts = {"e+": "(MIPCHI2DV(PRIMARY)> 25.)&(TRCHI2DOF < 3 )"}

    Bs2ee.CombinationCut = "(ADAMASS('B_s0')<1200*MeV)"\
                            "& (AMAXDOCA('')<0.3*mm)"

    Bs2ee.MotherCut = "(VFASPF(VCHI2/VDOF)<9) "\
                              "& (ADMASS('B_s0') < 1200*MeV )"\
                              "& (BPVDIRA > 0) "\
                              "& (BPVVDCHI2> 225)"\
                              "& (BPVIPCHI2()< 25) "

    _stdLooseElectrons = DataOnDemand(
        Location="Phys/StdLooseElectrons/Particles")

    return Selection(name,
                     Algorithm=Bs2ee,
                     RequiredSelections=[_stdLooseElectrons])
コード例 #21
0
 def _makeTrigLikeDiMuons(self,name) :
     """
     Make PseudoJpsi (combination of two detached muons, inspired in Hlt2Soft)
     Arguments:
     name : name of the selection
     """
     
     PseudoJPsi = CombineParticles(DecayDescriptor = "J/psi(1S) -> mu+ mu-")
     PseudoJPsi.DecayDescriptor = "J/psi(1S) -> mu+ mu-"
     PseudoJPsi.CombinationCut = "(AMAXDOCA('')<%(DiDOCA)s*mm)" %self.config
     PseudoJPsi.MotherCut = ("(MINTREE('mu-' == ABSID, MIPDV(PRIMARY)) > %(IP)s)"
     + " & (CHILDCUT((TRGHOSTPROB < %(TRACK_TRGHOSTPROB_MAX)s),1))"
     + " & (CHILDCUT((TRGHOSTPROB < %(TRACK_TRGHOSTPROB_MAX)s),2))"
     + " & (MINTREE('mu-' == ABSID, MIPCHI2DV(PRIMARY)) > %(IPChi2Min)s)"
     + " & (MAXTREE('mu-' == ABSID, MIPCHI2DV(PRIMARY)) < %(IPChi2Max)s)"
     + " & ( VFASPF (sqrt(VX*VX+VY*VY)) > %(Rho)s) "
     + " & ( VFASPF ( VZ ) < %(SVZ)s) "
     + " & ((MIPDV(PRIMARY)/BPVVDZ)< %(MaxIpDistRatio)s)"
     + " & (MM < %(MaxMass)s)"
     + " & (VFASPF(VCHI2PDOF)<%(VertexChi2)s )"
     + " & (DOCAMAX < %(DiDOCA)s)"
     + " & (BPVVDZ > %(MinVDZ)s) "
     + " &  (BPVDIRA > %(MinBPVDira)s) " 
     #+ " & (PCUTA (ALV (1,2) < %(cosAngle)s))"
                             ) % self.config
     return Selection (name,
                       Algorithm = PseudoJPsi,
                       RequiredSelections = [self.SelMuons])
コード例 #22
0
    def makeB2KSLLhh( self, name, config ) :
        """
        Create and store a B -> KS(LL) h+ h- Selection object.
        Arguments:
        name             : name of the Selection.
        config           : config dictionary
        """

	_massCutLow     = "(AM>(5279-%s)*MeV)"               % config['B_Mlow']
	_massCutHigh    = "(AM<(5279+%s)*MeV)"               % config['B_Mhigh']
	_daugMedPtCut   = "(ANUM(PT>%s*MeV)>=2)"             % config['BDaug_MedPT_PT']
	_daugMaxPtIPCut = "(AVAL_MAX(MIPDV(PRIMARY),PT)>%s)" % config['BDaug_MaxPT_IP']
	_hhDocaCut      = "(ADOCA(1,2)<%s)"                  % config['hh_DOCA']
	_daugPtSumCut   = "((APT1+APT2+APT3)>%s*MeV)"        % config['BDaug_LL_PTsum']

	_combCuts = _massCutLow+'&'+_massCutHigh+'&'+_daugMedPtCut+'&'+_daugMaxPtIPCut+'&'+_hhDocaCut+'&'+_daugPtSumCut

	_vtxChi2Cut = "(VFASPF(VCHI2)<%s)"             % config['B_VtxChi2']
	_diraCut    = "(BPVDIRA>%s)"                   % config['B_Dira']
	_ipCut      = "(MIPDV(PRIMARY)<%s)"            % config['B_IPwrtPV']
	_fdCut      = "(VFASPF(VMINVDDV(PRIMARY))>%s)" % config['B_FDwrtPV']
	_fdChi2Cut  = "(BPVVDCHI2>%s)"                 % config['B_LL_FDChi2']

	_motherCuts = _vtxChi2Cut+'&'+_diraCut+'&'+_ipCut+'&'+_fdCut+'&'+_fdChi2Cut

	_B = CombineParticles()
	_B.DecayDescriptors = [ "B0 -> pi+ pi- KS0", \
	                        "B0 -> K+ pi- KS0", "B0 -> pi+ K- KS0", \
				"B0 -> K+ K- KS0" ]
	_B.DaughtersCuts = { "K+" : "TRCHI2DOF<%s"% config['Trk_Chi2'], "pi+" : "TRCHI2DOF<%s"% config['Trk_Chi2'] }
	_B.CombinationCut = _combCuts
	_B.MotherCut = _motherCuts

        self.selB2KSLLhh = Selection (name, Algorithm = _B, RequiredSelections = [ self.selKS2LL, self.pions, self.kaons ])
コード例 #23
0
def makeTau2eMuMu(name):
    """
    Please contact Johannes Albrecht if you think of prescaling this line!
    
    Arguments:
    name        : name of the Selection.
    """
    #from Configurables import OfflineVertexFitter
    Tau2eMuMu = CombineParticles()
    Tau2eMuMu.DecayDescriptors = [
        " [ tau+ -> e+ mu+ mu- ]cc", " [ tau+ -> mu+ mu+ e- ]cc"
    ]
    Tau2eMuMu.DaughtersCuts = { "mu+" : " ( PT > 300 * MeV ) & ( TRCHI2DOF < 3  ) & ( BPVIPCHI2 () >  9 ) & (TRGHOSTPROB<0.3) " ,
                                "e+" : " ( PT > 300 * MeV ) & ( TRCHI2DOF < 3  ) & ( BPVIPCHI2 () >  9 ) "\
                                "& (PIDe > 2) " }
    Tau2eMuMu.CombinationCut = "(ADAMASS('tau+')<200*MeV)"

    Tau2eMuMu.MotherCut = """
            ( VFASPF(VCHI2) < 15 ) &
            ( (BPVLTIME () * c_light)   > 100 * micrometer ) &
            ( BPVIPCHI2() < 100 )
            """

    _stdLooseMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")
    _stdLooseElectrons = DataOnDemand(
        Location="Phys/StdLooseElectrons/Particles")

    return Selection(name,
                     Algorithm=Tau2eMuMu,
                     RequiredSelections=[_stdLooseMuons, _stdLooseElectrons])
コード例 #24
0
    def _makePi0MuMu(self,name, combcut) :
        """
        K0s2pi0mumu selection object in signal region.
        Arguments:
        name        : name of the Selection
        combcut : cut at combination level
        """
        from StandardParticles import StdLooseResolvedPi0 as Pi0s
        #from Configurables import OfflineVertexFitter
        K0s2Pi0MuMu1 = CombineParticles(DecayDescriptor = "KS0 -> pi0 J/psi(1S)")
        
        #K0s2Pi0MuMu1.addTool( OfflineVertexFitter )
        #K0s2Pi0MuMu1.ParticleCombiners.update( { "" : "OfflineVertexFitter"} )
        #K0s2Pi0MuMu1.OfflineVertexFitter.useResonanceVertex = False
        #K0s2Pi0MuMu1.ReFitPVs = True
        K0s2Pi0MuMu1.CombinationCut = combcut

        K0s2Pi0MuMu1.MotherCut = "((BPVDIRA> %(KSdira)s ) "\
                                 "& ((BPVVDSIGN*M/P) > %(KSlife)s) "\
                                 "& (MIPDV(PRIMARY)<%(KSip)s*mm) "\
                                 "& (M> %(KSsignalminMass)s * MeV) "\
                                 "& ( (M< %(KSsignalmaxMass)s * MeV) ))" %self.config

        return Selection (name,
                          Algorithm = K0s2Pi0MuMu1,
                          RequiredSelections = [ self.SelDiMuons,
                                                 Pi0s])
コード例 #25
0
def makeBu(name):
    """
    detached Bu-->JPsiK selection.

    Please contact Flavio Archilli if you think of prescaling this line!

    Arguments:
    name        : name of the Selection.
    """

    #from Configurables import OfflineVertexFitter

    SelDJPsi = makeDetachedJPsi(name)

    PreselBu2JPsiKCommon = CombineParticles()
    PreselBu2JPsiKCommon.DecayDescriptor = " [B+ -> J/psi(1S) K+]cc "
    #PreselBu2JPsiKCommon.addTool( OfflineVertexFitter )
    #PreselBu2JPsiKCommon.ParticleCombiners.update( { "" : "OfflineVertexFitter"} )
    #PreselBu2JPsiKCommon.OfflineVertexFitter.useResonanceVertex = False
    PreselBu2JPsiKCommon.ReFitPVs = True
    PreselBu2JPsiKCommon.DaughtersCuts = {
        "K+":
        "(ISLONG) & (TRCHI2DOF < 3 ) &(MIPCHI2DV(PRIMARY)>25)& (PT>250*MeV) & (TRGHOSTPROB<0.3) "
    }
    PreselBu2JPsiKCommon.CombinationCut = "(ADAMASS('B+') < 600*MeV)"
    PreselBu2JPsiKCommon.MotherCut = "(BPVIPCHI2()< 25)& (VFASPF(VCHI2)<45) "

    _kaons = DataOnDemand(Location='Phys/StdNoPIDsKaons/Particles')

    return Selection("SelBu2KJPsiee",
                     Algorithm=PreselBu2JPsiKCommon,
                     RequiredSelections=[SelDJPsi, _kaons])
コード例 #26
0
    def _makeK0s2TwoProngs(self, name,decay_descriptor, combcut, masscut) :
        """
        K0s2mumu selection object
        with muon Id and wide mass window
        starts from Phys/StdLooseMuons

        Please contact Diego Martinez Santos if you think of prescaling this line!
    
        Arguments:
        name        : name of the Selection.
        """
        if "mu+" in decay_descriptor:
            dname = "mu+"
            daughters = self.SelMuons
        else:
            dname = "pi+"
            daughters = self.SelPions 
        K0s2MuMu = CombineParticles(DecayDescriptor = decay_descriptor)
    
        K0s2MuMu.DaughtersCuts = { dname : "(MIPCHI2DV(PRIMARY)> 100.)"}
        K0s2MuMu.CombinationCut = combcut + "& (AMAXDOCA('')<%(DiDOCA)s*mm)"% self.config

        K0s2MuMu.MotherCut = "("+ masscut + "& (BPVDIRA>0) & ((BPVVDSIGN*M/P) > %(KSlife)s) & (MIPDV(PRIMARY)<0.4*mm))" %self.config
    
        return Selection (name,
                          Algorithm = K0s2MuMu,
                          RequiredSelections = [ daughters])
コード例 #27
0
def makeBs2XMuMu(name,
                 DecayDescriptor,
                 DaughterLists,
                 BsMassWin,
                 BsVCHI2DOF,
                 BsDIRA,
                 BsIPCHI2,
                 BsFDCHI2):
    from Configurables import CombineParticles, OfflineVertexFitter
    combinerName = "Combine" + name
    _Bs = CombineParticles(combinerName)
    _Bs.DecayDescriptor = DecayDescriptor 
    _Bs.CombinationCut = "ADAMASS('B_s0') < %(BsMassWin)s *MeV" % locals()
    _Bs.MotherCut = "  (VFASPF(VCHI2/VDOF) < %(BsVCHI2DOF)s)" \
                    "& (BPVDIRA > %(BsDIRA)s)" \
                    "& (BPVIPCHI2() < %(BsIPCHI2)s)" \
                    "& (BPVVDCHI2 > %(BsFDCHI2)s)" % locals()
    #        _Bs.ReFitPVs = True
    # Set the OfflineVertexFitter to keep the 4 tracks
    _Bs.addTool( OfflineVertexFitter )
    _Bs.ParticleCombiners.update( { "" : "OfflineVertexFitter"} )
    _Bs.OfflineVertexFitter.useResonanceVertex = False
    return Selection(name, 
                     Algorithm = _Bs,
                     RequiredSelections = DaughterLists)
コード例 #28
0
def makeTau2MuEtaPrime(self, name, config, setEtaPrime):
    """
    tau -> mu eta' selection
        
    Please contact Guido Andreassi if you think of prescaling this line!
        
    Arguments:
    name        : name of the Selection, configuration dictionary.
    """

    if setEtaPrime == 'gamma':
        self.SelEtaPrime = makeEtaPrime2pipigamma(
            "selEtap_gamma", config['config_EtaPrime2pipigamma'])

    if setEtaPrime == 'pi0':
        self.SelEtaPrime = makeEtaPrime2pipipi(
            "selEtap_pi0", config['config_EtaPrime2pipipi'])

    Tau2MuEtaPrime = CombineParticles()
    Tau2MuEtaPrime.DecayDescriptor = "[tau+ -> mu+ eta_prime]cc "
    Tau2MuEtaPrime.ReFitPVs = True
    Tau2MuEtaPrime.DaughtersCuts = {"mu+": "{muplus_cuts}".format(**config)}
    Tau2MuEtaPrime.CombinationCut = "{tau_mass_window}".format(**config)
    Tau2MuEtaPrime.MotherCut = "{tau_cuts}".format(**config)

    _muons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")

    return Selection(name,
                     Algorithm=Tau2MuEtaPrime,
                     RequiredSelections=[self.SelEtaPrime, _muons])
コード例 #29
0
    def makeBu2KSDDh(self, name, config):
        """
        Create and store a B -> KS(DD) h+ Selection object.
        Arguments:
        name             : name of the Selection.
        config           : config dictionary
        """

        _massCutLow = "(AM>(5279-%s)*MeV)" % config['B_Mlow']
        _massCutHigh = "(AM<(5279+%s)*MeV)" % config['B_Mhigh']
        _daugMaxPtIPCut = "(AVAL_MAX(MIPDV(PRIMARY),PT)>%s)" % config[
            'BDaug_MaxPT_IP']
        _daugPtSumCut = "((APT1+APT2)>%s*MeV)" % config['BDaug_DD_PTsum']

        _combCuts = _daugPtSumCut + '&' + _massCutLow + '&' + _massCutHigh + '&' + _daugMaxPtIPCut

        _pCut = "(P>%s*MeV)" % config['B_Pmin']
        _vtxChi2Cut = "(VFASPF(VCHI2)<%s)" % config['B_DD_VtxChi2']
        _diraCut = "(BPVDIRA>%s)" % config['B_Dira']
        _ipChi2Cut = "(MIPCHI2DV(PRIMARY)<%s)" % config['B_DD_IPCHI2wrtPV']
        _fdCut = "(VFASPF(VMINVDDV(PRIMARY))>%s)" % config['B_FDwrtPV']
        _fdChi2Cut = "(BPVVDCHI2>%s)" % config['B_DD_FDChi2']

        _motherCuts = _pCut + '&' + _vtxChi2Cut + '&' + _diraCut + '&' + _ipChi2Cut + '&' + _fdCut + '&' + _fdChi2Cut

        _B = CombineParticles()
        _B.DecayDescriptors = ["B+ -> pi+ KS0", "B- -> pi- KS0"]
        _B.DaughtersCuts = {"pi+": "TRCHI2DOF<%s" % config['Trk_Chi2']}
        _B.CombinationCut = _combCuts
        _B.MotherCut = _motherCuts

        return Selection(name,
                         Algorithm=_B,
                         RequiredSelections=[self.selKS2DD, self.selH])
コード例 #30
0
    def __CreateSelectionRho__(self, lName, RhoCombCut, RhoCut, PionCut):
        '''
        rho(770)0 -> pi+ pi- selection (from StdAllLoosePions)
        '''

        from StandardParticles import StdAllLoosePions

        from GaudiConfUtils.ConfigurableGenerators import CombineParticles
        CombineRho = CombineParticles()
        CombineRho.InputPrimaryVertices = self.__PVOutputLocation__

        CombineRho.DecayDescriptor = "rho(770)0 -> pi+ pi-"

        if (len(RhoCombCut) > 0):
            CombineRho.CombinationCut = RhoCombCut

        CombineRho.MotherCut = RhoCut
        CombineRho.DaughtersCuts = {"pi+": PionCut}

        from PhysSelPython.Wrappers import Selection
        SelRho = Selection("SelBuild_" + lName + "_Rho",
                           Algorithm=CombineRho,
                           RequiredSelections=[StdAllLoosePions])

        return SelRho