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