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])
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])
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
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)
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])
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])
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])
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])
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])