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