CMS 3D CMS Logo

TriggerBitFilter.py
Go to the documentation of this file.
1 import ROOT
2 
3 from PhysicsTools.Heppy.analyzers.core.Analyzer import Analyzer
4 from PhysicsTools.Heppy.analyzers.core.AutoHandle import AutoHandle
5 
6 class TriggerBitFilter( Analyzer ):
7  def __init__(self, cfg_ana, cfg_comp, looperName ):
8  super(TriggerBitFilter,self).__init__(cfg_ana,cfg_comp,looperName)
9  self.processName = getattr(self.cfg_ana,"processName","HLT")
10  triggers = cfg_comp.triggers
11  self.autoAccept = True if len(triggers) == 0 else False
12  vetoTriggers = cfg_comp.vetoTriggers if hasattr(cfg_comp, 'vetoTriggers') else []
13  trigVec = ROOT.vector(ROOT.string)()
14  for t in triggers: trigVec.push_back(t)
15  self.mainFilter = ROOT.heppy.TriggerBitChecker(trigVec)
16  if len(vetoTriggers):
17  vetoVec = ROOT.vector(ROOT.string)()
18  for t in vetoTriggers: vetoVec.push_back(t)
19  self.vetoFilter = ROOT.heppy.TriggerBitChecker(vetoVec)
20  else:
21  self.vetoFilter = None
22 
23  def declareHandles(self):
24  super(TriggerBitFilter, self).declareHandles()
25  self.handles['TriggerResults'] = AutoHandle( ('TriggerResults','',self.processName), 'edm::TriggerResults' )
26 
27  def beginLoop(self, setup):
28  super(TriggerBitFilter,self).beginLoop(setup)
29  self.counters.addCounter('events')
30  self.count = self.counters.counter('events')
31  self.count.register('all events')
32  self.count.register('pass trigger')
33  self.count.register('pass veto')
34 
35  def process(self, event):
36  if self.autoAccept: return True
37  self.readCollections( event.input )
38  self.count.inc('all events')
39  if not self.mainFilter.check(event.input.object(), self.handles['TriggerResults'].product()):
40  return False
41  self.count.inc('pass trigger')
42  if self.vetoFilter != None and self.vetoFilter.check(event.input.object(), self.handles['TriggerResults'].product()):
43  return False
44  self.count.inc('pass veto')
45  return True
46 
def __init__(self, cfg_ana, cfg_comp, looperName)