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

Public Member Functions

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

Public Attributes

 jetCollectionType
 initialize base class More...
 
 jetCollectionName
 
 useUncalibratedJets
 
 cutEtMin
 
 cutEtMax
 
 cutEtaMin
 
 cutEtaMax
 
 cutSumPtTrkMax
 
 removeOverlap
 
 deltaR
 
 leptonContainerTypeList
 
 leptonContainerNameList
 
 nLeadingsForCheck
 
 minNumberPassed
 
 recordGoodJets
 
 goodJetCollectionName
 
 passAll
 
 storeGateSvc
 Get the storgate handle. More...
 
 jss
 Handle to JetSignalState. More...
 
 nProcessed
 Initialize the counters. More...
 
 nJets
 
 nEventPassed
 
 utils
 import some 4-mom utils More...
 

Detailed Description

This class is a short algorithm to select events that contain one 
jet which fulfills a certain set of criteria.  All energies below
are uncalibrated (EM scale).  The possible criteria are (with
default values):
jetCollectionType       = "xAOD::JetCollection"
jetCollectionName       = "AntiKt4LCTopoJets"
useUncalibratedJets     = True
cutEtMin                = 0.0*Units.GeV
cutEtMax                = 14.0*Units.TeV
cutEtaMin               = 0
cutEtaMax               = 2.5
cutSumPtTrkMax          = -1.0
removeOverlap           = False
deltaR                  = 0.2
leptonContainerTypeList = []
leptonContainerNameList = []
nLeadingsForCheck       = 10000000
minNumberPassed         = 1
recordGoodJets          = False
goodJetCollectionName   = self.name()
passAll                 = False

Definition at line 34 of file FancyJetFilter.py.

Constructor & Destructor Documentation

◆ __init__()

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

Definition at line 61 of file FancyJetFilter.py.

61  def __init__ ( self, name = "FancyJetFilter", **kw ):
62 
63  kw['name'] = name
64  super(FancyJetFilter, self).__init__(**kw)
65 
66 
67  self.jetCollectionType = kw.get('jetCollectionType', "xAOD::JetContainer")
68  self.jetCollectionName = kw.get('jetCollectionName', "AntiKt4LCTopoJets")
69  self.useUncalibratedJets = kw.get('useUncalibratedJets', True)
70  self.cutEtMin = kw.get('cutEtMin', 0.0*Units.GeV)
71  self.cutEtMax = kw.get('cutEtMax', 14.0*Units.TeV)
72  self.cutEtaMin = kw.get('cutEtaMin', 0.0)
73  self.cutEtaMax = kw.get('cutEtaMax', 2.5)
74  self.cutSumPtTrkMax = kw.get('cutSumPtTrkMax', -1.0)
75  self.removeOverlap = kw.get('removeOverlap', False)
76  self.deltaR = kw.get('deltaR', 0.2)
77  self.leptonContainerTypeList = kw.get('leptonContainerTypeList', [])
78  self.leptonContainerNameList = kw.get('leptonContainerNameList', [])
79  self.nLeadingsForCheck = kw.get('nLeadingsForCheck', 10000000)
80  self.minNumberPassed = kw.get('minNumberPassed', 1)
81  self.recordGoodJets = kw.get('recordGoodJets', False)
82  self.goodJetCollectionName = kw.get('goodJetCollectionName', self.name() )
83  self.passAll = kw.get('passAll', False)
84 
85 
86  self.storeGateSvc = None
87 
88 
89  self.jss = None
90 
91  return
92 
93 
94 
95 

Member Function Documentation

◆ execute()

def python.FancyJetFilter.FancyJetFilter.execute (   self)

Definition at line 149 of file FancyJetFilter.py.

149  def execute(self):
150  self.nProcessed+=1
151  self.msg.debug( '==> execute %s on %r. event...', self.name(), self.nProcessed )
152 
153 
154 
155  if self.passAll :
156  self.msg.debug( '%s event passed because passAll is true', self.name() )
157  self.setFilterPassed(True)
158  self.nEventPassed += 1
159  return StatusCode.Success
160 
161 
162  # Load the jet collection from the input file
163  jetCollection = None
164  try:
165  jetCollection = self.storeGateSvc.retrieve( self.jetCollectionType, self.jetCollectionName )
166  self.msg.debug( 'Loading the jet collection %s from the input file.', self.jetCollectionName )
167  except LookupError:
168  self.msg.warning( 'Collection %s not found', self.jetCollectionName )
169  self.setFilterPassed(True)
170  return StatusCode.Success
171 
172 
173  if self.useUncalibratedJets :
174  self.jss.setSignalState( PyAthena.P4SignalState.UNCALIBRATED)
175  self.msg.debug( 'Setting the jet state to uncalibrated jets.' )
176 
177 
178  # Create a class-member list of all jets that passed all cuts.
179  # This can then be used by other filters to do overlap removal, etc.
180  VIEW_ELEMENTS = 1
181  goodJets = PyAthena.JetCollection(VIEW_ELEMENTS)
182 
183 
184  # Print a debug message
185  self.msg.debug( 'Starting loop over all jets. In this event, there are %s jets', jetCollection.size() )
186 
187 
188 
189  leadEt = 0.0*Units.GeV
190  jet_pass=0
191  jet_n=0
192 
193  controlObject = self.jss.controlObject
194  releaseObject = self.jss.releaseObject
195 
196  for jet in jetCollection :
197  controlObject(jet)
198  self.msg.debug( ' jet = %s', jet)
199  self.nJets += 1
200  jet_n += 1
201  if jet_n <= self.nLeadingsForCheck :
202  if abs(jet.eta()) >= self.cutEtaMin and abs(jet.eta()) < self.cutEtaMax :
203  if jet.et() > self.cutEtMin :
204 
205  #ACH
206  pass_trk = False
207  for mk in jet.getMomentKeys():
208  if mk not in ['sumPtTrk']: continue
209  value_mom=jet.getMoment (mk, True)
210  self.msg.debug("mom: %s %s", (mk, value_mom) )
211  if self.cutSumPtTrkMax>0.0 and value_mom < self.cutSumPtTrkMax:
212  pass_trk = True
213 
214  if not pass_trk:
215  self.msg.debug("failed sumPtTrk cut")
216  continue
217  else:
218  self.msg.debug("passed sumPtTrk cut")
219  if self.removeOverlap :
220  self.msg.debug( 'FancyJetFilter: I am in overlap!' )
221  doesOverlap = False
222  for lep in leptonList : # noqa: F821 (FIXME, leptonList unknown)
223  if self.utils['deltaR'](jet, lep) <= self.deltaR :
224  doesOverlap = True
225  break
226  if not doesOverlap :
227  if jet.et() > leadEt :
228  leadEt = jet.et()
229  jet_pass+=1
230  jetCopy = jet
231  goodJets.push_back( jetCopy )
232  else :
233  self.msg.debug( 'FancyJetFilter: I am NOT in overlap!' )
234  if jet.et() > leadEt :
235  leadEt = jet.et()
236  jet_pass+=1
237  jetCopy = jet
238  goodJets.push_back( jetCopy )
239  self.msg.debug("added a good jet")
240 
241  # Print a debug message
242  self.msg.debug( 'Done with the loop over the jets. Have %s jets in collection, put %s jets in goodJets, and the leading jet has et = %s GeV.', jetCollection.size(), goodJets.__len__(), leadEt/Units.GeV )
243 
244  releaseObject()
245 
246 
247 
248  if goodJets.__len__() >= self.minNumberPassed and leadEt <= self.cutEtMax :
249  self.msg.debug( 'The %d leading jets are within [%f , %f] GeV', jet_pass, self.cutEtMin/Units.GeV, self.cutEtMax/Units.GeV)
250  self.msg.debug( '%s event passed.', self.name() )
251  self.setFilterPassed(True)
252  self.nEventPassed += 1
253  else:
254  self.msg.debug( '%s event failed', self.name() )
255  self.setFilterPassed(False)
256 
257  return StatusCode.Success
258 
259 
260 

◆ finalize()

def python.FancyJetFilter.FancyJetFilter.finalize (   self)

Definition at line 261 of file FancyJetFilter.py.

261  def finalize(self):
262 
263  import math
264 
265 
266  effiJets = 0.0
267  effiEvents = 0.0
268  effiErrJets = 0.0
269  effiErrEvents = 0.0
270  try :
271  # Efficiencies
272  effiJets = self.nJets / float(self.nProcessed)
273  effiEvents = self.nEventPassed / float(self.nProcessed)
274 
275  # Error on efficiencies
276  effiErrJets = math.sqrt(self.nJets) / float(self.nProcessed)
277  effiErrEvents = 100.0*math.sqrt(effiEvents*(1.-effiEvents)/float(self.nProcessed))
278 
279  effiEvents *= 100.
280 
281  except ZeroDivisionError :
282  self.msg.warning( 'Division by zero error when calculating the uncertainties on the pass efficiencies...' )
283 
284 
285 
286  self.msg.info( '==> finalize %s...', self.name() )
287  self.msg.info( '***************************************************************' )
288  self.msg.info( 'Cut-flow table of %s skimming algorithm:', self.name() )
289  self.msg.info( '-------------' )
290  self.msg.info( ' Number of processed events: %r', self.nProcessed )
291  self.msg.info( ' Number of all jets: %r and number of jets per event: %3.3f +/- %3.3f', self.nJets, effiJets, effiErrJets )
292  self.msg.info( ' Events accepted: %r and resulting efficiency = (%3.3f +/- %3.3f)%%', self.nEventPassed, effiEvents, effiErrEvents )
293  self.msg.info( '***************************************************************' )
294 
295  return StatusCode.Success
296 

◆ initialize()

def python.FancyJetFilter.FancyJetFilter.initialize (   self)

Definition at line 96 of file FancyJetFilter.py.

96  def initialize(self):
97  self.msg.info( '************************************' )
98  self.msg.info( '==> initialize %s...', self.name() )
99  self.msg.info( ' jetCollectionType = %r', self.jetCollectionType )
100  self.msg.info( ' jetCollectionName = %r', self.jetCollectionName )
101  self.msg.info( ' recordGoodJets = %r', self.recordGoodJets )
102  self.msg.info( ' goodJetCollectionName = %r', self.goodJetCollectionName )
103  self.msg.info( 'Will apply the following cuts:' )
104  self.msg.info( ' useUncalibratedJets = %r', self.useUncalibratedJets )
105  self.msg.info( ' EtMin (GeV) = %r', self.cutEtMin/Units.GeV )
106  self.msg.info( ' EtMax (GeV) = %r', self.cutEtMax/Units.GeV )
107  self.msg.info( ' EtaMin = %r', self.cutEtaMin )
108  self.msg.info( ' EtaMax = %r', self.cutEtaMax )
109  self.msg.info( ' cutSumPtTrkMax = %r', self.cutSumPtTrkMax )
110  self.msg.info( ' removeOverlap = %r', self.removeOverlap )
111  self.msg.info( ' deltaR = %r', self.deltaR )
112  self.msg.info( ' leptonContainerTypeList = %r', self.leptonContainerTypeList )
113  self.msg.info( ' leptonContainerNameList = %r', self.leptonContainerNameList )
114  self.msg.info( ' nLeadingsForCheck = %r', self.nLeadingsForCheck )
115  self.msg.info( ' minNumberPassed = %r', self.minNumberPassed )
116  self.msg.info( ' passAll = %r', self.passAll )
117  self.msg.info( '************************************' )
118 
119 
120  self.nProcessed = 0
121  self.nJets = 0
122  self.nEventPassed = 0
123 
124 
125  import PyUtils.RootUtils as ru
126  ROOT = ru.import_root() # noqa: F841
127 
128 
129  self.storeGateSvc = PyAthena.py_svc('StoreGateSvc')
130  if self.storeGateSvc is None:
131  self.msg.error("Problem retrieving StoreGateSvc pointer !!")
132  return StatusCode.Failure
133 
134 
135  PyAthena.load_library ('FourMomUtils')
136 
137 
138  self.jss = PyAthena.SignalStateHelper(PyAthena.P4SignalState.JETFINAL)
139 
140 
141  import FourMomUtils.Bindings # noqa: F401
142  self.utils = { 'deltaR' : PyAthena.P4Helpers.deltaR }
143 
144 
145  return StatusCode.Success
146 
147 
148 

Member Data Documentation

◆ cutEtaMax

python.FancyJetFilter.FancyJetFilter.cutEtaMax

Definition at line 73 of file FancyJetFilter.py.

◆ cutEtaMin

python.FancyJetFilter.FancyJetFilter.cutEtaMin

Definition at line 72 of file FancyJetFilter.py.

◆ cutEtMax

python.FancyJetFilter.FancyJetFilter.cutEtMax

Definition at line 71 of file FancyJetFilter.py.

◆ cutEtMin

python.FancyJetFilter.FancyJetFilter.cutEtMin

Definition at line 70 of file FancyJetFilter.py.

◆ cutSumPtTrkMax

python.FancyJetFilter.FancyJetFilter.cutSumPtTrkMax

Definition at line 74 of file FancyJetFilter.py.

◆ deltaR

python.FancyJetFilter.FancyJetFilter.deltaR

Definition at line 76 of file FancyJetFilter.py.

◆ goodJetCollectionName

python.FancyJetFilter.FancyJetFilter.goodJetCollectionName

Definition at line 82 of file FancyJetFilter.py.

◆ jetCollectionName

python.FancyJetFilter.FancyJetFilter.jetCollectionName

Definition at line 68 of file FancyJetFilter.py.

◆ jetCollectionType

python.FancyJetFilter.FancyJetFilter.jetCollectionType

initialize base class

Define the cuts

Definition at line 67 of file FancyJetFilter.py.

◆ jss

python.FancyJetFilter.FancyJetFilter.jss

Handle to JetSignalState.

Eagerly load library due to reflex bug (autoloading enums/namespaces doesn't work)

Get the JetSignalState helper

Definition at line 89 of file FancyJetFilter.py.

◆ leptonContainerNameList

python.FancyJetFilter.FancyJetFilter.leptonContainerNameList

Definition at line 78 of file FancyJetFilter.py.

◆ leptonContainerTypeList

python.FancyJetFilter.FancyJetFilter.leptonContainerTypeList

Definition at line 77 of file FancyJetFilter.py.

◆ minNumberPassed

python.FancyJetFilter.FancyJetFilter.minNumberPassed

Definition at line 80 of file FancyJetFilter.py.

◆ nEventPassed

python.FancyJetFilter.FancyJetFilter.nEventPassed

Definition at line 122 of file FancyJetFilter.py.

◆ nJets

python.FancyJetFilter.FancyJetFilter.nJets

Definition at line 121 of file FancyJetFilter.py.

◆ nLeadingsForCheck

python.FancyJetFilter.FancyJetFilter.nLeadingsForCheck

Definition at line 79 of file FancyJetFilter.py.

◆ nProcessed

python.FancyJetFilter.FancyJetFilter.nProcessed

Initialize the counters.

Definition at line 120 of file FancyJetFilter.py.

◆ passAll

python.FancyJetFilter.FancyJetFilter.passAll

Definition at line 83 of file FancyJetFilter.py.

◆ recordGoodJets

python.FancyJetFilter.FancyJetFilter.recordGoodJets

Definition at line 81 of file FancyJetFilter.py.

◆ removeOverlap

python.FancyJetFilter.FancyJetFilter.removeOverlap

Definition at line 75 of file FancyJetFilter.py.

◆ storeGateSvc

python.FancyJetFilter.FancyJetFilter.storeGateSvc

Get the storgate handle.

Import needed modules.

Get the StoreGate service

Definition at line 86 of file FancyJetFilter.py.

◆ useUncalibratedJets

python.FancyJetFilter.FancyJetFilter.useUncalibratedJets

Definition at line 69 of file FancyJetFilter.py.

◆ utils

python.FancyJetFilter.FancyJetFilter.utils

import some 4-mom utils

Definition at line 142 of file FancyJetFilter.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
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