15 __doc__ =
"""This is a short algorithm to select events that pass at least
16 one out of a certain set of triggers.
19 __author__ =
"Eric Feng <Eric.Feng@cern.ch>"
22 import AthenaPython.PyAthena
as PyAthena
23 from AthenaPython.PyAthena
import StatusCode
27 This class is a short algorithm to select events that pass at
28 least one out of a certain set of triggers. The possible
29 criteria are (with default values):
35 def __init__ ( self, name = "TriggerFilter", **kw ):
38 super(TriggerFilter, self).
__init__(**kw)
49 self.msg.
info(
'************************************' )
50 self.msg.
info(
'==> initialize %s...', self.name )
51 self.msg.
info(
'Will apply the following cuts:' )
54 self.msg.
info(
'************************************' )
57 import PyUtils.RootUtils
as ru
58 ROOT = ru.import_root()
61 self.
tdt = PyAthena.py_tool(
'Trig::TrigDecisionTool/TrigDecisionTool', iface=
'Trig::TrigDecisionTool')
63 self.msg.warning(
'Could not retrieve TrigDecisionTool pointer!')
64 return StatusCode.Success
67 self.setFilterDescription(self.
trigger)
73 return StatusCode.Success
79 self.msg.warning(
'Could not retrieve TrigDecisionTool pointer!')
80 self.setFilterPassed(
False)
81 return StatusCode.Success
86 self.msg.
debug(
'==> execute %s on %r. event...', self.name, self.
nProcessed )
91 self.msg.
debug(
'%s event passed because passAll is true', self.name )
92 self.setFilterPassed(
True)
93 return StatusCode.Success
99 self.msg.
debug(
"Trigger %s passed. Count: %d",
105 self.setFilterPassed(isPassed)
107 return StatusCode.Success
115 effiPassTrigger = 0.0
116 effiErrPassTrigger = 0.0
126 except ZeroDivisionError :
127 self.msg.warning(
'Division by zero error when calculating the uncertainties on the pass efficiencies...' )
129 self.msg.
info(
'==> finalize %s...', self.name )
130 self.msg.
info(
'***************************************************************' )
131 self.msg.
info(
'Cut-flow table of %s skimming algorithm:', self.name )
132 self.msg.
info(
'-------------' )
133 self.msg.
info(
' Number of processed events: %r', self.
nProcessed )
134 self.msg.
info(
' Events passing trigger %s: %r and resulting efficiency = (%3.3f +/- %3.3f)%%',
136 self.msg.
info(
'***************************************************************' )
138 return StatusCode.Success