Belle II Software  release-05-01-25
independent_path.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # @cond
5 
6 import basf2
7 from ROOT import Belle2
8 
9 
10 class CreateData(basf2.Module):
11 
12  """create some data"""
13 
14  def initialize(self):
15  """reimplementation"""
16 
17  self.obj = Belle2.PyStoreObj(Belle2.EventMetaData.Class())
18  self.obj.registerInDataStore('obj')
19  self.array = Belle2.PyStoreArray(Belle2.EventMetaData.Class())
20  self.array.registerInDataStore('array')
21 
22  def event(self):
23  """reimplementation"""
24 
25  self.obj.create()
26  self.obj.obj().setExperiment(19)
27 
28  for i in range(13):
29  self.array.appendNew()
30 
31 
32 class CheckData(basf2.Module):
33 
34  """check output of CreateData"""
35 
36  def initialize(self):
37  """reimplementation"""
38 
39  self.obj = Belle2.PyStoreObj('obj')
40  self.array = Belle2.PyStoreArray('array')
41 
42  def event(self):
43  """reimplementation"""
44 
45  assert self.obj.obj().getExperiment() == 19
46  assert self.array.getEntries() == 13
47 
48 
49 class CheckAbsence(basf2.Module):
50 
51  """check output of CreateData"""
52 
53  def initialize(self):
54  """reimplementation"""
55 
56  assert not Belle2.PyStoreObj('obj').isOptional()
57  assert not Belle2.PyStoreArray('array').isOptional()
58 
59  def event(self):
60  """reimplementation"""
61 
62  assert not Belle2.PyStoreObj('obj').obj()
63 
64 
65 main = basf2.Path()
66 main.add_module('EventInfoSetter')
67 main.add_module(CheckAbsence())
68 
69 indep = basf2.Path()
70 indep.add_module(CreateData())
71 indep.add_module(CheckData()).set_name("checkdata 1")
72 main.add_independent_path(indep)
73 main.add_module(CheckAbsence())
74 
75 indep2 = basf2.Path()
76 indep2.add_module(CheckAbsence())
77 indep2.add_module(CreateData())
78 indep2.add_module(CheckData()).set_name("checkdata 2")
79 main.add_independent_path(indep2, merge_back_event=['obj', 'array'])
80 main.add_module(CheckData()).set_name("checkdata 3")
81 
82 basf2.process(main)
83 
84 print(basf2.statistics)
85 # @endcond
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:69
basf2.process
def process(path, max_event=0)
Definition: __init__.py:25
Belle2::PyStoreArray
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:58
foreach.TestModule.event
def event(self)
Definition: foreach.py:22