Main Page
Namespaces
Classes
Package Documentation
GIT Directory
WorkBook
Offline Guide
Release schedule
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
PhysicsTools
Heppy
python
analyzers
core
AutoHandle.py
Go to the documentation of this file.
1
#ROOTTOOLS
2
from
DataFormats.FWLite
import
Events, Handle
3
4
5
class
AutoHandle
( Handle,
object
):
6
'''Handle + label.'''
7
8
handles = {}
9
10
def
__init__
(self, label, type, mayFail=False, fallbackLabel=None, lazy=True):
11
'''Note: label can be a tuple : (module_label, collection_label, process)'''
12
self.
label
= label
13
self.
fallbackLabel
= fallbackLabel
14
self.
type
= type
15
self.
mayFail
= mayFail
16
self.
lazy
= lazy
17
Handle.__init__(self, self.
type
)
18
def
product
(self):
19
if
not
self.
isLoaded
:
20
self.
ReallyLoad
(self.
event
)
21
self.
isLoaded
=
True
22
return
super(AutoHandle,self).
product
()
23
24
def
Load
(self, event):
#is actually a reset state
25
self.
event
=event
26
self.
isLoaded
=
False
27
if
self.
lazy
==
False
: self.
ReallyLoad
(self.
event
)
28
29
def
ReallyLoad
(self, event):
30
'''Load self from a given event.
31
32
Call this function, and then just call self.product() to get the collection'''
33
try
:
34
event.getByLabel( self.
label
, self)
35
if
not
self.isValid():
raise
RuntimeError
36
except
RuntimeError:
37
Handle.__init__(self, self.
type
)
# must re-init, since otherwise after a failure it becomes unusable
38
errstr =
'''
39
Cannot find collection with:
40
type = {type}
41
label = {label}
42
'''
.
format
(type = self.
type
, label = self.
label
)
43
if
not
self.
mayFail
and
self.
fallbackLabel
==
None
:
44
raise
Exception
(errstr)
45
if
self.
fallbackLabel
!=
None
:
46
try
:
47
event.getByLabel( self.
fallbackLabel
, self)
48
if
not
self.isValid():
raise
RuntimeError
49
## if I succeeded, swap default and fallback assuming that the next event will be like this one
50
self.
fallbackLabel
, self.
label
= self.
label
, self.
fallbackLabel
51
except
RuntimeError:
52
Handle.__init__(self, self.
type
)
# must re-init, since otherwise after a failure it becomes unusable
53
errstr =
'''
54
Cannot find collection with:
55
type = {type}
56
label = {label} or {lab2}
57
'''
.
format
(type = self.
type
, label = self.
label
, lab2 = self.
fallbackLabel
)
58
if
not
self.
mayFail
:
59
raise
Exception
(errstr)
60
61
core.AutoHandle.AutoHandle.fallbackLabel
fallbackLabel
Definition:
AutoHandle.py:13
core.AutoHandle.AutoHandle.__init__
def __init__
Definition:
AutoHandle.py:10
core.AutoHandle.AutoHandle.lazy
lazy
Definition:
AutoHandle.py:16
core.AutoHandle.AutoHandle.product
def product
Definition:
AutoHandle.py:18
core.AutoHandle.AutoHandle
Definition:
AutoHandle.py:5
core.AutoHandle.AutoHandle.mayFail
mayFail
Definition:
AutoHandle.py:15
core.AutoHandle.AutoHandle.isLoaded
isLoaded
Definition:
AutoHandle.py:21
core.AutoHandle.AutoHandle.ReallyLoad
def ReallyLoad
Definition:
AutoHandle.py:29
core.AutoHandle.AutoHandle.type
type
Definition:
AutoHandle.py:14
Exception
dbtoconf.object
list object
Definition:
dbtoconf.py:77
core.AutoHandle.AutoHandle.label
label
if I succeeded, swap default and fallback assuming that the next event will be like this one ...
Definition:
AutoHandle.py:12
core.AutoHandle.AutoHandle.event
event
Definition:
AutoHandle.py:25
format
core.AutoHandle.AutoHandle.Load
def Load
Definition:
AutoHandle.py:24
Generated for CMSSW Reference Manual by
1.8.5