Belle II Software  release-05-01-25
eventlimiter.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 import basf2
5 from ROOT import Belle2
6 
7 
8 num_events = {}
9 
10 
11 class CountEvents(basf2.Module):
12 
13  """
14  Count the number of events passing this module and create a dictionary
15  of {(exp,run): events}
16  """
17 
18  def initialize(self):
19  """Not implemented"""
20  pass
21 
22  def beginRun(self):
23  """Creates an entry in the global num_events dictionary"""
24  global num_events
25  evtmetadata = Belle2.PyStoreObj('EventMetaData')
26  run = evtmetadata.obj().getRun()
27  exp = evtmetadata.obj().getExperiment()
28  if (exp, run) not in num_events:
29  num_events[(exp, run)] = 0
30 
31  def event(self):
32  """Increments the right (Exp,Run) entry in the num_events dictionary"""
33  global num_events
34  evtmetadata = Belle2.PyStoreObj('EventMetaData')
35  run = evtmetadata.obj().getRun()
36  exp = evtmetadata.obj().getExperiment()
37  num_events[(exp, run)] += 1
38 
39 
40 input_events = 1000
41 max_events = 500
42 
43 main = basf2.Path()
44 main.add_module("EventInfoSetter", evtNumList=[input_events] * 3, expList=[0, 0, 1], runList=[0, 1, 0])
45 eventlimiter_mod = main.add_module('EventLimiter', maxEventsPerRun=500)
46 
47 success_path = basf2.Path()
48 success_count = success_path.add_module(CountEvents())
49 eventlimiter_mod.if_true(success_path)
50 
51 basf2.process(main)
52 
53 print(basf2.statistics)
54 
55 for passing_events in num_events.values():
56  assert passing_events == max_events
eventlimiter.CountEvents
Definition: eventlimiter.py:11
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:69
eventlimiter.CountEvents.initialize
def initialize(self)
Definition: eventlimiter.py:18
basf2.process
def process(path, max_event=0)
Definition: __init__.py:25
Belle2::getRun
static ExpRun getRun(map< ExpRun, pair< double, double >> runs, double t)
Get exp number + run number from time.
Definition: Splitter.cc:262
eventlimiter.CountEvents.beginRun
def beginRun(self)
Definition: eventlimiter.py:22
eventlimiter.CountEvents.event
def event(self)
Definition: eventlimiter.py:31