Belle II Software  release-05-02-19
PackerTest.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # Particle gun muon events for KLM, only KLM digitization and reconstruction.
5 
6 import basf2
7 import ROOT
8 
9 basf2.set_log_level(basf2.LogLevel.INFO)
10 
11 # EventInfoSetter - generate event meta data
12 eventinfosetter = basf2.register_module('EventInfoSetter')
13 eventinfosetter.param('evtNumList', [200])
14 
15 # Particle gun
16 particlegun = basf2.register_module('ParticleGun')
17 particlegun.param('nTracks', 1)
18 particlegun.param('pdgCodes', [13, -13])
19 particlegun.param('momentumGeneration', 'uniform')
20 particlegun.param('momentumParams', [1, 3])
21 particlegun.param('thetaGeneration', 'uniform')
22 particlegun.param('thetaParams', [17, 150])
23 particlegun.param('phiGeneration', 'uniform')
24 particlegun.param('phiParams', [0, 360])
25 
26 # Geometry parameter loader
27 paramloader = basf2.register_module('Gearbox')
28 
29 # Geometry builder
30 geobuilder = basf2.register_module('Geometry')
31 geobuilder.param('components', ['KLM'])
32 geobuilder.param('useDB', False)
33 
34 # Full Geant4 simulation
35 g4sim = basf2.register_module('FullSim')
36 
37 # Digitizers
38 klm_digitizer = basf2.register_module('KLMDigitizer')
39 
40 # Packer
41 klm_packer = basf2.register_module('KLMPacker')
42 
43 # Unpacker
44 klm_unpacker = basf2.register_module('KLMUnpacker')
45 klm_unpacker.param('outputKLMDigitsName', 'KLMDigitsUnpacked')
46 
47 # Reconstructor
48 klm_reconstructor = basf2.register_module('KLMReconstructor')
49 
50 # Root file output
51 output = basf2.register_module('RootOutput')
52 output.param('outputFileName', 'ParticleGunMuonsKLM.root')
53 
54 # Create main path
55 main = basf2.create_path()
56 
57 # Add modules to main path
58 main.add_module(eventinfosetter)
59 main.add_module(particlegun)
60 main.add_module(paramloader)
61 main.add_module(geobuilder)
62 main.add_module(g4sim)
63 
64 main.add_module(klm_digitizer)
65 main.add_module(klm_packer)
66 main.add_module(klm_unpacker)
67 main.add_module(klm_reconstructor)
68 
69 main.add_module(output)
70 
71 # Process the events
72 basf2.process(main)
73 print(basf2.statistics)
74 
75 # Print size of raw data
76 root_file = ROOT.TFile('ParticleGunMuonsKLM.root')
77 tree = root_file.Get('tree')
78 events = tree.GetEntriesFast()
79 print('Events: %d' % events)
80 for branch in tree.GetListOfBranches():
81  name = branch.GetName()
82  if name.startswith('Raw'):
83  size = branch.GetTotBytes('*') * 1.0
84  zipsize = branch.GetZipBytes('*') * 1.0
85  print("%s %.2f (%.2f)" % (name, size / 1024. / events, zipsize / 1024. / events))
basf2.process
def process(path, max_event=0)
Definition: __init__.py:25