File indexing completed on 2023-03-17 11:15:45
0001 import ROOT
0002
0003 from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer
0004 from PhysicsTools.Heppy.analyzers.core.AutoHandle import AutoHandle
0005
0006 class TriggerBitFilter( Analyzer ):
0007 def __init__(self, cfg_ana, cfg_comp, looperName ):
0008 super(TriggerBitFilter,self).__init__(cfg_ana,cfg_comp,looperName)
0009 self.processName = getattr(self.cfg_ana,"processName","HLT")
0010 triggers = cfg_comp.triggers
0011 self.autoAccept = True if len(triggers) == 0 else False
0012 vetoTriggers = cfg_comp.vetoTriggers if hasattr(cfg_comp, 'vetoTriggers') else []
0013 trigVec = ROOT.vector(ROOT.string)()
0014 for t in triggers: trigVec.push_back(t)
0015 self.mainFilter = ROOT.heppy.TriggerBitChecker(trigVec)
0016 if len(vetoTriggers):
0017 vetoVec = ROOT.vector(ROOT.string)()
0018 for t in vetoTriggers: vetoVec.push_back(t)
0019 self.vetoFilter = ROOT.heppy.TriggerBitChecker(vetoVec)
0020 else:
0021 self.vetoFilter = None
0022
0023 def declareHandles(self):
0024 super(TriggerBitFilter, self).declareHandles()
0025 self.handles['TriggerResults'] = AutoHandle( ('TriggerResults','',self.processName), 'edm::TriggerResults' )
0026
0027 def beginLoop(self, setup):
0028 super(TriggerBitFilter,self).beginLoop(setup)
0029 self.counters.addCounter('events')
0030 self.count = self.counters.counter('events')
0031 self.count.register('all events')
0032 self.count.register('pass trigger')
0033 self.count.register('pass veto')
0034
0035 def process(self, event):
0036 if self.autoAccept: return True
0037 self.readCollections( event.input )
0038 self.count.inc('all events')
0039 if not self.mainFilter.check(event.input.object(), self.handles['TriggerResults'].product()):
0040 return False
0041 self.count.inc('pass trigger')
0042 if self.vetoFilter != None and self.vetoFilter.check(event.input.object(), self.handles['TriggerResults'].product()):
0043 return False
0044 self.count.inc('pass veto')
0045 return True
0046