예제 #1
0
def makeLc23mu(name):

    Lc23mu = DaVinci__N3BodyDecays("Combine" + name)
    Lc23mu.DecayDescriptors = [
        "[Lambda_c+ -> mu+ mu+ mu-]cc", "[Lambda_c+ -> mu+ mu+ mu+]cc"
    ]
    Lc23mu.DaughtersCuts = {"mu+": TrackCuts}
    Lc23mu.Combination12Cut = Combination12Cut
    Lc23mu.CombinationCut = CombinationCut200

    Lc23mu.MotherCut = MotherCut

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

    return Selection(name, Algorithm=Lc23mu, RequiredSelections=[_myMuons])
예제 #2
0
    def makeD23Mu(self, name):

        D23Mu = DaVinci__N3BodyDecays("Combine" + name)
        D23Mu.DecayDescriptors = [
            "[D+ -> mu+ mu+ mu-]cc", "[D+ -> mu+ mu+ mu+]cc"
        ]
        D23Mu.DaughtersCuts = {"mu+": self.TrackCuts}

        D23Mu.Combination12Cut = self.Combination12Cuts
        D23Mu.CombinationCut = self.CombinationCutsLoose
        D23Mu.MotherCut = self.MotherCuts

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

        return Selection(name, Algorithm=D23Mu, RequiredSelections=[_myMuons])
예제 #3
0
    def buildPIDLine(self, configRowId, bodies):
        "Parses the configuration dictionary to build the line"

        ## Resolves possible clone statements
        _config = self._resolveCloning(configRowId)

        ## Selects the algorithm according to the number of bodies
        _algorithm = None
        if (bodies == 2):
            _algorithm = CombineParticles(self.name + configRowId +
                                          'Algorithm')
        elif (bodies == 3):
            #_algorithm = DaVinci__N3BodyDecays(self.name + configRowId + 'Line')
            _algorithm = DaVinci__N3BodyDecays(self.name + configRowId +
                                               'Algorithm')
            _algorithm.Combination12Cut = _config['Combination12Cut']

        ## Prepares the tag&probe cut if needed
        _combinationCut = _config['CombinationCut']
        if 'TagAndProbeIndices' in _config:  ## Tag & Probe defined
            _id = [str(x) for x in _config['TagAndProbeIndices']]
            _combinationCut += ' & '
            _combinationCut += self._buildTagProbeCut(
                _config['TagAndProbeCut'], _id)

###        print _combinationCut

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

        _requiredSelections = [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['HLT1'],
                              HLT2=_config['HLT2'],
                              algos=[_selection])

        return _line
예제 #4
0
 def _makeX2HHH(self,name,decays,amass,config,inputs):
     ''' Makes all X -> HHH selections with charged tracks only.'''
     comboCuts = [LoKiCuts(['ASUMPT'],config).code(),amass,hasTopoChild()]
     comboCuts12 = [LoKiCuts(['ADOCA12'],config).code()]
     comboCuts.append(LoKiCuts(['ADOCA13'],config).code())
     comboCuts.append(LoKiCuts(['ADOCA23'],config).code())
     numPassPtCut = "(ANUM(PT < %s) <= 1)" %(config['PTMIN1'])
     comboCuts.append(numPassPtCut)
     comboCuts = LoKiCuts.combine(comboCuts)
     comboCuts12 = LoKiCuts.combine(comboCuts12)
     momCuts = LoKiCuts(['VCHI2DOF','BPVVDCHI2','BPVDIRA','MIPCHI2DV',
                         'BPVVDRHO','BPVVDZ'],config).code()
     cp = DaVinci__N3BodyDecays(Combination12Cut=comboCuts12,CombinationCut=comboCuts,MotherCut=momCuts,
                           DecayDescriptors=decays)
     return Selection(name+'Beauty2Charm',Algorithm=cp,
                      RequiredSelections=inputs)
예제 #5
0
def makeB2Muee(name):

    B2Muee = DaVinci__N3BodyDecays("Combine" + name)
    B2Muee.DecayDescriptors = [
        "[B+ -> mu+ e+ e-]cc", "[B+ -> mu- e+ e+]cc", "[B+ -> mu+ e+ e+]cc"
    ]
    B2Muee.DaughtersCuts = {"mu+": TrackCuts, "e+": TrackCuts}
    B2Muee.Combination12Cut = BCombination12Cut
    B2Muee.CombinationCut = BCombinationCut500

    B2Muee.MotherCut = BMotherCut

    _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")
    _myElectrons = DataOnDemand(Location="Phys/StdLooseElectrons/Particles")

    return Selection(name,
                     Algorithm=B2Muee,
                     RequiredSelections=[_myMuons, _myElectrons])
예제 #6
0
def makeLc2pKpi(name):

    Lc2pKpi = DaVinci__N3BodyDecays("Combine" + name)
    Lc2pKpi.DecayDescriptors = ["[Lambda_c+ -> p+ K- pi+]cc"]
    Lc2pKpi.DaughtersCuts = {
        "p+": TrackCuts + " & ((PIDp-PIDpi)>5)" + " & ((PIDp-PIDK)>0)",
        "K-": TrackCuts + " & ((PIDK-PIDpi)>5)" + " & ((PIDK-PIDp)>0)",
        "pi+": TrackCuts
    }
    Lc2pKpi.Combination12Cut = Combination12Cut
    Lc2pKpi.CombinationCut = CombinationCut150
    Lc2pKpi.MotherCut = MotherCut

    _myProtons = DataOnDemand(Location="Phys/StdLooseProtons/Particles")
    _myKaons = DataOnDemand(Location="Phys/StdLooseKaons/Particles")
    _myPions = DataOnDemand(Location="Phys/StdLoosePions/Particles")

    return Selection(name,
                     Algorithm=Lc2pKpi,
                     RequiredSelections=[_myProtons, _myKaons, _myPions])
예제 #7
0
def makeLc2pee(name):

    Lc2pee = DaVinci__N3BodyDecays("Combine" + name)
    Lc2pee.DecayDescriptors = [
        "[Lambda_c+ -> p+ e+ e-]cc", "[Lambda_c+ -> p~- e+ e+]cc",
        "[Lambda_c+ -> p+ e+ e+]cc"
    ]
    Lc2pee.DaughtersCuts = {
        "p+": TrackCuts + " & ((PIDp-PIDpi)>5)" + " & ((PIDp-PIDK)>0)",
        "e+": TrackCuts + " & ((PIDe-PIDpi)>2)"
    }
    Lc2pee.Combination12Cut = Combination12Cut
    Lc2pee.CombinationCut = CombinationCut200
    Lc2pee.MotherCut = MotherCut

    _myProtons = DataOnDemand(Location="Phys/StdLooseProtons/Particles")
    _myElectrons = DataOnDemand(Location="Phys/StdLooseElectrons/Particles")

    return Selection(name,
                     Algorithm=Lc2pee,
                     RequiredSelections=[_myProtons, _myElectrons])
예제 #8
0
def makeLc2pmumu(name):

    Lc2pmumu = DaVinci__N3BodyDecays("Combine" + name)
    Lc2pmumu.DecayDescriptors = [
        "[Lambda_c+ -> p+ mu+ mu-]cc", "[Lambda_c+ -> p~- mu+ mu+]cc",
        "[Lambda_c+ -> p+ mu+ mu+]cc"
    ]
    Lc2pmumu.DaughtersCuts = {
        "p+": TrackCuts + " & ((PIDp-PIDpi)>5)" + " & ((PIDp-PIDK)>0)",
        "mu+": TrackCuts + " & ((PIDmu-PIDpi)>-5)" + " & ((PIDmu-PIDK)>-5)"
    }
    Lc2pmumu.Combination12Cut = Combination12Cut
    Lc2pmumu.CombinationCut = CombinationCut200

    Lc2pmumu.MotherCut = MotherCut

    _myProtons = DataOnDemand(Location="Phys/StdLooseProtons/Particles")
    _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")

    return Selection(name,
                     Algorithm=Lc2pmumu,
                     RequiredSelections=[_myProtons, _myMuons])
예제 #9
0
    def makeLc2muee(self, name):

        Lc2muee = DaVinci__N3BodyDecays("Combine" + name)
        Lc2muee.DecayDescriptors = [
            "[Lambda_c+ -> mu+ e+ e-]cc", "[Lambda_c+ -> mu- e+ e+]cc",
            "[Lambda_c+ -> mu+ e+ e+]cc"
        ]

        Lc2muee.DaughtersCuts = {
            "mu+": self.TrackCuts,
            "e+": self.TrackCuts + " & ((PIDe-PIDpi)>2)"
        }

        Lc2muee.Combination12Cut = self.Combination12Cuts
        Lc2muee.CombinationCut = self.CombinationCutsLoose
        Lc2muee.MotherCut = self.MotherCuts

        _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles")
        _myElectrons = DataOnDemand(
            Location="Phys/StdLooseElectrons/Particles")

        return Selection(name,
                         Algorithm=Lc2muee,
                         RequiredSelections=[_myMuons, _myElectrons])