Belle II Software  release-05-01-25
histogram_monitor.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # Creates two histograms and adds them to the 'Histogram' tab in the display
5 # Doubleclicking them will show them in the current canvas (added on
6 # the right side of the screen) and keep them updated each event.
7 
8 import os
9 import random
10 from basf2 import *
11 
12 from ROOT import Belle2
13 from ROOT import TH1F
14 from ROOT import TH3F
15 from ROOT import TVector3
16 
17 
18 class GenerateHist(Module):
19  """Generate some histograms to pass to the display."""
20 
21 
22  edep_hist = TH1F("CDC_edep", "Energy deposition from CDCSimHits", 100, 0.0, 10e-6)
23 
24  pos_hist = TH3F("CDC_pos", "Positions of CDCSimHits",
25  100, -150.0, 150.0,
26  100, -150.0, 150.0,
27  100, -150.0, 150.0)
28 
29  def initialize(self):
30  """reimplementation of Module::initialize()."""
31 
32  Belle2.PyStoreObj("DisplayData").registerInDataStore()
33 
34  def event(self):
35  """reimplementation of Module::event()."""
36 
37  displayData = Belle2.PyStoreObj("DisplayData")
38  displayData.create()
39 
40  cdcsimhits = Belle2.PyStoreArray("CDCSimHits")
41  for hit in cdcsimhits:
42  self.edep_hist.Fill(hit.getEnergyDep())
43  p = hit.getPosWire()
44  self.pos_hist.Fill(p.X(), p.Y(), p.Z())
45 
46  displayData.obj().addHistogram("CDC_edep", self.edep_hist)
47  displayData.obj().addHistogram("CDC_pos", self.pos_hist)
48 
49 
50 # register necessary modules
51 eventinfosetter = register_module('EventInfoSetter')
52 eventinfosetter.param('evtNumList', [500])
53 
54 
55 # create geometry
56 gearbox = register_module('Gearbox')
57 geometry = register_module('Geometry')
58 geometry.param('components', ['CDC', 'MagneticField'])
59 
60 particlegun = register_module('ParticleGun')
61 
62 # simulation
63 g4sim = register_module('FullSim')
64 # make the simulation less noisy
65 g4sim.logging.log_level = LogLevel.ERROR
66 
67 # create paths
68 main = create_path()
69 
70 # add modules to paths
71 main.add_module(eventinfosetter)
72 
73 main.add_module(gearbox)
74 main.add_module(geometry)
75 main.add_module(particlegun)
76 main.add_module(g4sim)
77 
78 main.add_module(GenerateHist())
79 
80 # default parameters
81 display = register_module('Display')
82 main.add_module(display)
83 
84 process(main)
85 print(statistics)
histogram_monitor.GenerateHist.pos_hist
pos_hist
histogram for SimHit positions
Definition: histogram_monitor.py:24
histogram_monitor.GenerateHist.initialize
def initialize(self)
Definition: histogram_monitor.py:29
Belle2::PyStoreObj
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:69
histogram_monitor.GenerateHist.event
def event(self)
Definition: histogram_monitor.py:34
histogram_monitor.GenerateHist
Definition: histogram_monitor.py:18
Belle2::PyStoreArray
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:58
histogram_monitor.GenerateHist.edep_hist
edep_hist
histogram for SimHit energy deposition
Definition: histogram_monitor.py:22