ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
python.MultiJetMetFilter.MultiJetMetFilter Class Reference
Inheritance diagram for python.MultiJetMetFilter.MultiJetMetFilter:
Collaboration diagram for python.MultiJetMetFilter.MultiJetMetFilter:

Public Member Functions

def __init__ (self, name="MultiJetMetFilter", **kw)
 
def initialize (self)
 
def execute (self)
 
def finalize (self)
 

Public Attributes

 jetCollectionType
 Define the cuts. More...
 
 jetCollectionName
 
 cutsEtMin
 
 cutEtaMax
 
 requireMet
 
 metCollectionType
 
 metCollectionNames
 
 cutMetMin
 
 passAll
 
 nProcessed
 
 nEventPassed
 
 nEventPassJet
 
 nEventPassMet
 
 storeGateSvc
 Get the StoreGate service. More...
 

Detailed Description

Definition at line 24 of file MultiJetMetFilter.py.

Constructor & Destructor Documentation

◆ __init__()

def python.MultiJetMetFilter.MultiJetMetFilter.__init__ (   self,
  name = "MultiJetMetFilter",
**  kw 
)

Definition at line 26 of file MultiJetMetFilter.py.

26  def __init__ ( self, name = "MultiJetMetFilter", **kw ):
27  kw['name'] = name
28  super(MultiJetMetFilter, self).__init__(**kw)
29 
30 
31  self.jetCollectionType = kw.get('jetCollectionType', "JetCollection")
32  self.jetCollectionName = kw.get('jetCollectionName', "AntiKt4TopoJets")
33  self.cutsEtMin = kw.get('cutsEtMin', [])
34  self.cutEtaMax = kw.get('cutEtaMax', [])
35  self.requireMet = kw.get('requireMet ', True)
36  self.metCollectionType = kw.get('metCollectionType', "MissingET")
37  self.metCollectionNames = kw.get('metCollectionNames', [])
38  self.cutMetMin = kw.get('cutMetMin', 0.0*Units.GeV)
39  self.passAll = kw.get('passAll', False)
40 
41  return
42 

Member Function Documentation

◆ execute()

def python.MultiJetMetFilter.MultiJetMetFilter.execute (   self)

Definition at line 71 of file MultiJetMetFilter.py.

71  def execute(self):
72  self.nProcessed+=1
73 
74 
75  if self.passAll :
76  self.msg.debug( '%s event passed because passAll is true', self.name() )
77  self.setFilterPassed(True)
78  return StatusCode.Success
79 
80  if len(self.cutsEtMin) < 2 :
81  self.msg.warning( 'Invalid configuration' )
82  self.setFilterPassed(False)
83  return StatusCode.Success
84 
85  # Get the jet collection from StoreGate
86  jetCollection = None
87 
88  try:
89  jetCollection = self.storeGateSvc.retrieve( self.jetCollectionType, self.jetCollectionName )
90  except LookupError:
91  self.msg.warning( 'Collection %s not found', self.jetCollectionName )
92  self.setFilterPassed(False)
93  return StatusCode.Success
94 
95 
96  selectedJetIdx = []
97  for i in range( jetCollection.size() ) :
98  jet = jetCollection[i]
99  if abs(jet.eta()) < self.cutEtaMax :
100  selectedJetIdx.append(i)
101 
102  passedJet = True
103  if len(selectedJetIdx) >= len(self.cutsEtMin) :
104  for i in range( len(self.cutsEtMin) ) :
105  jet = jetCollection[selectedJetIdx[i]]
106  if jet.et() <= self.cutsEtMin[i] :
107  passedJet = False
108  break
109 
110  if passedJet :
111  self.nEventPassJet+=1
112 
113 
114  if self.requireMet :
115  passedMet = False
116  for i in range( len(self.metCollectionNames) ) :
117  try:
118  met = self.storeGateSvc.retrieve( self.metCollectionType, self.metCollectionNames[i] )
119  except LookupError:
120  self.msg.warning( 'Collection %s not found', self.metCollectionNames[i] )
121  self.setFilterPassed(False)
122  return StatusCode.Success
123 
124  if met.et() > self.cutMetMin :
125  passedMet = True
126  self.nEventPassMet+=1
127  break
128  else :
129  pass
130 
131  if passedJet and passedMet :
132  self.nEventPassed+=1
133  self.setFilterPassed(True)
134  else :
135  self.setFilterPassed(False)
136 
137  else :
138  self.nEventPassMet+=1
139  if passedJet :
140  self.nEventPassed+=1
141  self.setFilterPassed(True)
142  else :
143  self.setFilterPassed(False)
144 
145  return StatusCode.Success
146 

◆ finalize()

def python.MultiJetMetFilter.MultiJetMetFilter.finalize (   self)

Definition at line 147 of file MultiJetMetFilter.py.

147  def finalize(self):
148 
149  import math
150 
151 
152  effPassJet = 0.0
153  effPassMet = 0.0
154  effPassAll = 0.0
155  effErrPassJet = 0.0
156  effErrPassMet = 0.0
157  effErrPassAll = 0.0
158 
159  try :
160  # Efficiencies
161  effPassJet = self.nEventPassJet / float(self.nProcessed)
162  effPassMet = self.nEventPassMet / float(self.nProcessed)
163  effPassAll = self.nEventPassed / float(self.nProcessed)
164 
165  # Error on efficiencies
166  effErrPassJet = 100.0*math.sqrt(effPassJet*(1.-effPassMet)/float(self.nProcessed))
167  effErrPassMet = 100.0*math.sqrt(effPassMet*(1.-effPassMet)/float(self.nProcessed))
168  effErrPassAll = 100.0*math.sqrt(effPassAll*(1.-effPassAll)/float(self.nProcessed))
169 
170  effPassJet *= 100.
171  effPassMet *= 100.
172  effPassAll *= 100.
173 
174  except ZeroDivisionError :
175  self.msg.warning( 'Division by zero error when calculating the uncertainties on the pass efficiencies...' )
176 
177  self.msg.info( '==> finalize %s...', self.name() )
178  self.msg.info( '***************************************************************' )
179  self.msg.info( 'Cut-flow table of %s skimming algorithm:', self.name() )
180  self.msg.info( '-------------' )
181  self.msg.info( ' Number of processed events: %r', self.nProcessed )
182  self.msg.info( ' Number of events with jet requirement: %r, eff. = (%3.3f +/- %3.3f)%%', self.nEventPassJet, effPassJet, effErrPassJet )
183  self.msg.info( ' Number of events with met requirement: %r, eff. = (%3.3f +/- %3.3f)%%', self.nEventPassMet, effPassMet, effErrPassMet )
184  self.msg.info( ' Number of events with all requirements: %r, eff. = (%3.3f +/- %3.3f)%%', self.nEventPassed, effPassAll, effErrPassAll )
185  self.msg.info( '***************************************************************' )
186 
187 
188  return StatusCode.Success
189 

◆ initialize()

def python.MultiJetMetFilter.MultiJetMetFilter.initialize (   self)

Definition at line 43 of file MultiJetMetFilter.py.

43  def initialize(self):
44  self.msg.info( '************************************' )
45  self.msg.info( '==> initialize %s...', self.name() )
46  self.msg.info( ' jetCollectionType = %s', self.jetCollectionType )
47  self.msg.info( ' jetCollectionName = %s', self.jetCollectionName )
48  self.msg.info( ' metCollectionType = %s', self.metCollectionType )
49  self.msg.info( ' metCollectionNames = %s', self.metCollectionNames )
50  self.msg.info( 'Will apply the following cuts:' )
51  self.msg.info( ' cutsEtMin = %r', self.cutsEtMin )
52  self.msg.info( ' cutEtaMax = %r', self.cutEtaMax )
53  self.msg.info( ' requireMet = %r', self.requireMet )
54  self.msg.info( ' MetMin = %r', self.cutMetMin )
55  self.msg.info( '************************************' )
56 
57  self.nProcessed = 0
58  self.nEventPassed = 0
59  self.nEventPassJet = 0
60  self.nEventPassMet = 0
61 
62 
63  self.storeGateSvc = PyAthena.py_svc('StoreGateSvc')
64  if not self.storeGateSvc :
65  self.msg.error("Problem retrieving StoreGateSvc pointer !!")
66  return StatusCode.Failure
67 
68  return StatusCode.Success
69 
70 

Member Data Documentation

◆ cutEtaMax

python.MultiJetMetFilter.MultiJetMetFilter.cutEtaMax

Definition at line 34 of file MultiJetMetFilter.py.

◆ cutMetMin

python.MultiJetMetFilter.MultiJetMetFilter.cutMetMin

Definition at line 38 of file MultiJetMetFilter.py.

◆ cutsEtMin

python.MultiJetMetFilter.MultiJetMetFilter.cutsEtMin

Definition at line 33 of file MultiJetMetFilter.py.

◆ jetCollectionName

python.MultiJetMetFilter.MultiJetMetFilter.jetCollectionName

Definition at line 32 of file MultiJetMetFilter.py.

◆ jetCollectionType

python.MultiJetMetFilter.MultiJetMetFilter.jetCollectionType

Define the cuts.

Definition at line 31 of file MultiJetMetFilter.py.

◆ metCollectionNames

python.MultiJetMetFilter.MultiJetMetFilter.metCollectionNames

Definition at line 37 of file MultiJetMetFilter.py.

◆ metCollectionType

python.MultiJetMetFilter.MultiJetMetFilter.metCollectionType

Definition at line 36 of file MultiJetMetFilter.py.

◆ nEventPassed

python.MultiJetMetFilter.MultiJetMetFilter.nEventPassed

Definition at line 58 of file MultiJetMetFilter.py.

◆ nEventPassJet

python.MultiJetMetFilter.MultiJetMetFilter.nEventPassJet

Definition at line 59 of file MultiJetMetFilter.py.

◆ nEventPassMet

python.MultiJetMetFilter.MultiJetMetFilter.nEventPassMet

Definition at line 60 of file MultiJetMetFilter.py.

◆ nProcessed

python.MultiJetMetFilter.MultiJetMetFilter.nProcessed

Definition at line 57 of file MultiJetMetFilter.py.

◆ passAll

python.MultiJetMetFilter.MultiJetMetFilter.passAll

Definition at line 39 of file MultiJetMetFilter.py.

◆ requireMet

python.MultiJetMetFilter.MultiJetMetFilter.requireMet

Definition at line 35 of file MultiJetMetFilter.py.

◆ storeGateSvc

python.MultiJetMetFilter.MultiJetMetFilter.storeGateSvc

Get the StoreGate service.

Definition at line 63 of file MultiJetMetFilter.py.


The documentation for this class was generated from the following file:
grepfile.info
info
Definition: grepfile.py:38
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
initialize
void initialize()
Definition: run_EoverP.cxx:894
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18
error
Definition: IImpactPoint3dEstimator.h:70
readCCLHist.float
float
Definition: readCCLHist.py:83