Belle II Software
development
evtmetadata.py
1
#!/usr/bin/env python3
2
3
10
11
import
basf2
12
from
ROOT
import
Belle2
13
from
b2test_utils
import
safe_process
14
15
basf2.set_random_seed(
"something important"
)
16
17
18
class
NoopModule
(basf2.Module):
19
20
"""Doesn't do anything."""
21
22
23
class
EvtMetaDataTest
(basf2.Module):
24
25
"""Prints EventMetaData objects and stops event processing in event 3."""
26
27
def
__init__
(self):
28
"""constructor."""
29
30
# need to call super() _if_ we reimplement the constructor
31
super().
__init__
()
32
basf2.B2INFO(
'event\trun\texp'
)
33
34
def
initialize
(self):
35
"""reimplementation of Module::initialize()."""
36
37
basf2.B2INFO(
'EvtMetaDataTest::initialize()'
)
38
39
def
beginRun
(self):
40
"""reimplementation of Module::beginRun()."""
41
42
basf2.B2INFO(
'EvtMetaDataTest::beginRun()'
)
43
44
def
event
(self):
45
"""reimplementation of Module::event()."""
46
47
evtmetadata =
Belle2.PyStoreObj
(
'EventMetaData'
)
48
49
if
not
evtmetadata:
50
basf2.B2ERROR(
'No EventMetaData found'
)
51
else
:
52
event = evtmetadata.obj().getEvent()
53
run = evtmetadata.obj().getRun()
54
exp = evtmetadata.obj().getExperiment()
55
basf2.B2INFO(f
"{event}\t{run}\t{exp}"
)
56
if
event == 4:
57
# stop event processing.
58
evtmetadata.obj().setEndOfData()
59
60
def
endRun
(self):
61
"""reimplementation of Module::endRun()."""
62
63
basf2.B2INFO(
'EvtMetaDataTest::endRun()'
)
64
65
def
terminate
(self):
66
"""reimplementation of Module::terminate()."""
67
68
basf2.B2INFO(
'EvtMetaDataTest::terminate()'
)
69
70
71
# Normal steering file part begins here
72
73
for
skipNEvents
in
range(10):
74
# Create main path
75
main = basf2.Path()
76
77
# not used for anything, just checking wether the master module
78
# can be found if it's not the first module in the path.
79
main.add_module(
NoopModule
())
80
81
# exp 0 has only 2 events, so cannot trigger the test module
82
# also tests for a problem where beginRun() wasn't called
83
# exp 1 has only 2 events, so cannot trigger the test module,
84
# exp 2 has no events and will be skipped
85
# exp 3 will be stopped in event 3 by EvtMetaDataTest
86
main.add_module(
'EventInfoSetter'
,
87
expList=[0, 1, 2, 3],
88
runList=[0, 1, 2, 3],
89
evtNumList=[2, 2, 0, 5],
90
skipNEvents=skipNEvents)
91
92
main.add_module(
EvtMetaDataTest
())
93
94
safe_process(main)
95
96
# test skipping to specific events
97
skipToEvents = [
98
[0, 0, 1],
99
[0, 0, 3],
100
[0, 1, 1],
101
[0, 1, 6],
102
[0, 2, 3],
103
[1, 0, 1],
104
[2, 0, 1],
105
]
106
107
for
event
in
skipToEvents:
108
basf2.B2INFO(
"skipping to exp={}, run={}, evt={}"
.format(*event))
109
main = basf2.Path()
110
main.add_module(
"EventInfoSetter"
, evtNumList=[3, 3, 3, 3], expList=[0, 0, 0, 1],
111
runList=[0, 1, 2, 0], skipToEvent=event)
112
main.add_module(
EvtMetaDataTest
())
113
safe_process(main)
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition:
PyStoreObj.h:67
evtmetadata.EvtMetaDataTest
Definition:
evtmetadata.py:23
evtmetadata.EvtMetaDataTest.terminate
def terminate(self)
Definition:
evtmetadata.py:65
evtmetadata.EvtMetaDataTest.beginRun
def beginRun(self)
Definition:
evtmetadata.py:39
evtmetadata.EvtMetaDataTest.initialize
def initialize(self)
Definition:
evtmetadata.py:34
evtmetadata.EvtMetaDataTest.endRun
def endRun(self)
Definition:
evtmetadata.py:60
evtmetadata.EvtMetaDataTest.__init__
def __init__(self)
Definition:
evtmetadata.py:27
evtmetadata.EvtMetaDataTest.event
def event(self)
Definition:
evtmetadata.py:44
evtmetadata.NoopModule
Definition:
evtmetadata.py:18
framework
tests
evtmetadata.py
Generated on Fri Nov 8 2024 02:37:57 for Belle II Software by
1.9.6