Belle II Software  release-06-01-15
b2bii_mdst_input.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import basf2 as b2
13 from ROOT import Belle2
14 
15 b2.set_random_seed("something important")
16 # make sure FATAL messages don't have the function signature as this makes
17 # problems with clang printing namespaces differently
18 b2.logging.set_info(b2.LogLevel.FATAL, b2.logging.get_info(b2.LogLevel.ERROR))
19 
20 main = b2.create_path()
21 input = b2.register_module('B2BIIMdstInput')
22 input.param('inputFileNames', [
23  b2.find_file('b2bii/tests/chaintest_1.mdst'),
24  b2.find_file('b2bii/tests/chaintest_2.mdst')
25  ])
26 main.add_module(input)
27 processed_event_numbers = []
28 
29 
30 class TestingModule(b2.Module):
31  """
32  Test module which writes out the processed event numbers
33  into the global processed_event_numbers list
34  """
35 
36  def event(self):
37  """
38  Called for each event
39  """
40  global processed_event_numbers
41  emd = Belle2.PyStoreObj('EventMetaData')
42  processed_event_numbers.append(emd.obj().getEvent())
43 
44 
45 main.add_module(TestingModule())
46 
47 b2.process(main)
48 
49 expected_event_numbers = [3, 1, 2, 4, 6, 5, 8, 9, 3, 4, 2, 1, 7, 6]
50 assert expected_event_numbers == processed_event_numbers
51 
52 # The first file contains the following event numbers (in this order)
53 # 3, 1, 2, 4, 6, 5, 8, 9
54 # The second file contains the following event numbers (in this order)
55 # 3, 4, 2, 1, 7, 6
56 # We select more event than the file contains, to check if it works anyway
57 main = b2.create_path()
58 input = b2.register_module('B2BIIMdstInput')
59 input.param('inputFileNames', [
60  b2.find_file('b2bii/tests/chaintest_1.mdst'),
61  b2.find_file('b2bii/tests/chaintest_2.mdst')
62  ])
63 input.param('entrySequences', ['1:2,4:6', '0,2:3,5:100'])
64 main.add_module(input)
65 main.add_module(TestingModule())
66 
67 expected_event_numbers = [1, 2, 6, 5, 8, 3, 2, 1, 6]
68 processed_event_numbers = []
69 b2.process(main)
70 
71 assert expected_event_numbers == processed_event_numbers
72 
73 # The first file contains the following event numbers (in this order)
74 # 3, 1, 2, 4, 6, 5, 8, 9
75 # The second file contains the following event numbers (in this order)
76 # 3, 4, 2, 1, 7, 6
77 # We select the complete first file and specific elements of the of the subsequent one.
78 main = b2.create_path()
79 input = b2.register_module('B2BIIMdstInput')
80 input.param('inputFileNames', [
81  b2.find_file('b2bii/tests/chaintest_1.mdst'),
82  b2.find_file('b2bii/tests/chaintest_2.mdst')
83 ])
84 input.param('entrySequences', [':', '2:3,5:100'])
85 main.add_module(input)
86 main.add_module(TestingModule())
87 
88 expected_event_numbers = [3, 1, 2, 4, 6, 5, 8, 9, 2, 1, 6]
89 processed_event_numbers = []
90 b2.process(main)
91 assert expected_event_numbers == processed_event_numbers
92 
93 # The first file contains the following event numbers (in this order)
94 # 3, 1, 2, 4, 6, 5, 8, 9
95 # The second file contains the following event numbers (in this order)
96 # 3, 4, 2, 1, 7, 6
97 # We do not select any element from the first file but specific elements of the subsequent one.
98 main = b2.create_path()
99 input = b2.register_module('B2BIIMdstInput')
100 input.param('inputFileNames', [
101  b2.find_file('b2bii/tests/chaintest_1.mdst'),
102  b2.find_file('b2bii/tests/chaintest_2.mdst')
103 ])
104 input.param('entrySequences', ['', '2:3,5:100'])
105 main.add_module(input)
106 main.add_module(TestingModule())
107 
108 expected_event_numbers = [2, 1, 6]
109 processed_event_numbers = []
110 b2.process(main)
111 assert expected_event_numbers == processed_event_numbers
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:67