def selHlt2Jpsi(name, hlt1Filter, triggers): """ Filter the long track muon to be TOS on a HLT2 single muon trigger, for J/psi selection """ Hlt2Jpsi = TisTosParticleTagger(name + "Hlt2Jpsi") #Hlt2Jpsi.TisTosSpecs = { "Hlt2SingleMuon.*Decision%TOS" : 0} # take all HLT2SingleMuon triggers Hlt2Jpsi.TisTosSpecs = triggers Hlt2Jpsi.ProjectTracksToCalo = False Hlt2Jpsi.CaloClustForCharged = False Hlt2Jpsi.CaloClustForNeutral = False Hlt2Jpsi.TOSFrac = {4: 0.0, 5: 0.0} Hlt2Jpsi.NoRegex = False #Hlt2Jpsi.PassOnAll = True # TESTING! # return Selection(name + "_SelHlt2Jpsi", Algorithm=Hlt2Jpsi, RequiredSelections=[hlt1Filter])
def selHlt1Z(name, longPartsFilter, triggers): """ Filter the long track muon to be TOS on a HLT1 single muon trigger, for Z selection """ Hlt1Z = TisTosParticleTagger(name + "Hlt1Z") #Hlt1Z.TisTosSpecs = { "Hlt1SingleMuonHighPTDecision%TOS" : 0} Hlt1Z.TisTosSpecs = triggers Hlt1Z.ProjectTracksToCalo = False Hlt1Z.CaloClustForCharged = False Hlt1Z.CaloClustForNeutral = False Hlt1Z.TOSFrac = {4: 0.0, 5: 0.0} Hlt1Z.NoRegex = True #Hlt1Z.PassOnAll = True # TESTING! # return Selection(name + "_SelHlt1Z", Algorithm=Hlt1Z, RequiredSelections=[longPartsFilter])
def filterTisTos(self, name, DiMuonInput, myTisTosSpecs): from Configurables import TisTosParticleTagger if self.dbug: print "## TOS requirement applied" myTagger = TisTosParticleTagger(name + "_TisTosTagger") myTagger.TisTosSpecs = myTisTosSpecs # To speed it up, TisTos only with tracking system myTagger.ProjectTracksToCalo = False myTagger.CaloClustForCharged = False myTagger.CaloClustForNeutral = False myTagger.TOSFrac = {4: 0.0, 5: 0.0} return Selection(name + "_SelTisTos", Algorithm=myTagger, RequiredSelections=[DiMuonInput])
def selHlt2BJpsiKK( name, longPartsFilter, triggers ): # No HLT1 needed, as event in HLT1 already triggered with single muon """ Filter the long track Kaon to be TUS on a HLT2 mu+track trigger, for B->J/psi K selection (mainly a speed up) """ Hlt2BJpsiKK = TisTosParticleTagger(name + "Hlt2BJpsiKK") #Hlt2BJpsiKK.TisTosSpecs = { "Hlt2MuTrackDecision%TUS" : 0} # TUS, not TOS, not a typo!!! Hlt2BJpsiKK.TisTosSpecs = triggers Hlt2BJpsiKK.ProjectTracksToCalo = False Hlt2BJpsiKK.CaloClustForCharged = False Hlt2BJpsiKK.CaloClustForNeutral = False Hlt2BJpsiKK.TOSFrac = {4: 0.0, 5: 0.0} Hlt2BJpsiKK.NoRegex = True #Hlt2BJpsiKK.PassOnAll = True # TESTING! # return Selection(name + "_SelHlt2BJpsiKK", Algorithm=Hlt2BJpsiKK, RequiredSelections=[longPartsFilter])
def oneTosMonitor(name="None", input=None, calo=False): from PhysSelPython.Wrappers import Selection, SelectionSequence from Configurables import TisTosParticleTagger, ParticleMonitor, PrintDecayTree Tosser = TisTosParticleTagger(name + "Tosser") Tosser.TisTosSpecs = {name + "Decision%TOS": 0} Tosser.ProjectTracksToCalo = calo Tosser.CaloClustForCharged = calo s1 = Selection("TOSPresel" + name, Algorithm=Tosser, RequiredSelections=[input]) tools = ["MomentumPlotTool"] if ('Muon' in name): tools += ["MuonPlotTool"] plotter = ParticleMonitor(name + "TosMoni", PlotTools=tools) # Make things a bit faster if ('L0Hadron' in name): plotter.MotherCut = "PT>1*GeV" else: plotter.MotherCut = "PT>0.5*GeV" s2 = Selection("TOSSel" + name, Algorithm=plotter, RequiredSelections=[s1]) ss = SelectionSequence("TOSSeq" + name, TopSelection=s2) return ss.sequence()