def makeLc2pee(self, 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+": self.TrackCuts + " & ((PIDp-PIDpi)>5)" + " & ((PIDp-PIDK)>0)", "e+": self.TrackCuts + " & ((PIDe-PIDpi)>2)" } Lc2pee.Combination12Cut = self.Combination12Cuts Lc2pee.CombinationCut = self.CombinationCutsLoose Lc2pee.MotherCut = self.MotherCuts _myProtons = DataOnDemand(Location="Phys/StdLooseProtons/Particles") _myElectrons = DataOnDemand( Location="Phys/StdLooseElectrons/Particles") return Selection(name, Algorithm=Lc2pee, RequiredSelections=[_myProtons, _myElectrons])
def _makeXic2pKpi(self): '''Makes Xic -> p K pi + cc''' dm, units = LoKiCuts.cutValue(self.config['MASS_WINDOW']) comboCuts = [ LoKiCuts(['ASUMPT'], self.config).code(), "(ADAMASS('Xi_c+') < %s*%s) " % (dm + 10, units), hasTopoChild() ] comboCuts12 = [LoKiCuts(['ADOCA12'], self.config).code()] comboCuts.append(LoKiCuts(['ADOCA13'], self.config).code()) comboCuts.append(LoKiCuts(['ADOCA23'], self.config).code()) comboCuts12 = LoKiCuts.combine(comboCuts12) comboCuts = LoKiCuts.combine(comboCuts) momCuts = [ "(ADMASS('Xi_c+') < %s*%s) " % (dm, units), LoKiCuts(['VCHI2DOF', 'BPVVDCHI2', 'BPVDIRA'], self.config).code() ] momCuts = LoKiCuts.combine(momCuts) cp = DaVinci__N3BodyDecays(Combination12Cut=comboCuts12, CombinationCut=comboCuts, MotherCut=momCuts, DecayDescriptors=["[Xi_c+ -> p+ K- pi+]cc"]) return Selection( 'Xic2PKPiBeauty2Charm', Algorithm=cp, RequiredSelections=[self.pions, self.kaons, self.protons])
def makeLc2pmumu(self, 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+": self.TrackCuts + " & ((PIDp-PIDpi)>5)" + " & ((PIDp-PIDK)>0)", "mu+": self.TrackCuts + " & ((PIDmu-PIDpi)>-5)" + " & ((PIDmu-PIDK)>-5)" } Lc2pmumu.Combination12Cut = self.Combination12Cuts Lc2pmumu.CombinationCut = self.CombinationCutsLoose Lc2pmumu.MotherCut = self.MotherCuts _myProtons = DataOnDemand(Location="Phys/StdLooseProtons/Particles") _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles") return Selection(name, Algorithm=Lc2pmumu, RequiredSelections=[_myProtons, _myMuons])
def makeB23Pi(self, name): B23Pi = DaVinci__N3BodyDecays("Combine" + name) B23Pi.DecayDescriptors = ["[B+ -> pi+ pi+ pi-]cc"] B23Pi.DaughtersCuts = {"pi+": self.TrackCuts} B23Pi.Combination12Cut = self.Combination12Cuts B23Pi.CombinationCut = self.CombinationCutsTight B23Pi.MotherCut = self.MotherCuts _myPions = DataOnDemand(Location="Phys/StdLoosePions/Particles") return Selection(name, Algorithm=B23Pi, RequiredSelections=[_myPions])
def makeB23Mu(name): B23Mu = DaVinci__N3BodyDecays("Combine" + name) B23Mu.DecayDescriptors = ["[B+ -> mu+ mu+ mu-]cc", "[B+ -> mu+ mu+ mu+]cc"] B23Mu.DaughtersCuts = {"mu+": TrackCuts} B23Mu.Combination12Cut = BCombination12Cut B23Mu.CombinationCut = BCombinationCut500 B23Mu.MotherCut = BMotherCut _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles") return Selection(name, Algorithm=B23Mu, RequiredSelections=[_myMuons])
def makeB2Muee(self,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+" : self.TrackCuts, "e+" : self.TrackCuts } B2Muee.Combination12Cut = self.Combination12Cuts B2Muee.CombinationCut = self.CombinationCutsLoose B2Muee.MotherCut = self.MotherCuts _myMuons = DataOnDemand(Location = "Phys/StdLooseMuons/Particles") _myElectrons = DataOnDemand(Location = "Phys/StdLooseElectrons/Particles") return Selection (name, Algorithm = B2Muee, RequiredSelections = [ _myMuons, _myElectrons ])
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 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 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 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 makeLc2muee(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+": TrackCuts, "e+": TrackCuts + " & ((PIDe-PIDpi)>2)" } Lc2muee.Combination12Cut = Combination12Cut Lc2muee.CombinationCut = CombinationCut200 Lc2muee.MotherCut = MotherCut _myMuons = DataOnDemand(Location="Phys/StdLooseMuons/Particles") _myElectrons = DataOnDemand(Location="Phys/StdLooseElectrons/Particles") return Selection(name, Algorithm=Lc2muee, RequiredSelections=[_myMuons, _myElectrons])