Belle II Software  release-05-01-25
gun.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 from basf2 import *
5 import os
6 from tracking import add_tracking_reconstruction
7 from simulation import add_svd_simulation
8 
9 # --------------------------------------------------------------------
10 # Example of using TOP reconstruction
11 # needs reconstructed tracks (Tracks), extrapolated to TOP (ExtHits)
12 # log likelihoods in TOPLikelihoods
13 # relation from Tracks to TOPLikelihoods
14 # --------------------------------------------------------------------
15 
16 # Suppress messages and warnings during processing:
17 set_log_level(LogLevel.ERROR)
18 
19 # Create path
20 main = create_path()
21 
22 # Set number of events to generate
23 eventinfosetter = register_module('EventInfoSetter')
24 eventinfosetter.param('evtNumList', [10])
25 main.add_module(eventinfosetter)
26 
27 # Histogram manager immediately after master module
28 histo = register_module('HistoManager')
29 histo.param('histoFileName', 'DQMhistograms.root') # File to save histograms
30 main.add_module(histo)
31 
32 # Gearbox: access to database (xml files)
33 gearbox = register_module('Gearbox')
34 main.add_module(gearbox)
35 
36 # Geometry
37 geometry = register_module('Geometry')
38 main.add_module(geometry)
39 
40 # Particle gun: generate multiple tracks
41 particlegun = register_module('ParticleGun')
42 particlegun.param('pdgCodes', [211, -211, 321, -321])
43 particlegun.param('nTracks', 5)
44 particlegun.param('varyNTracks', True)
45 particlegun.param('momentumGeneration', 'uniform')
46 particlegun.param('momentumParams', [0.5, 4])
47 particlegun.param('thetaGeneration', 'uniformCos')
48 particlegun.param('thetaParams', [32, 122])
49 particlegun.param('phiGeneration', 'uniform')
50 particlegun.param('phiParams', [0, 360])
51 particlegun.param('vertexGeneration', 'fixed')
52 particlegun.param('xVertexParams', [0])
53 particlegun.param('yVertexParams', [0])
54 particlegun.param('zVertexParams', [0])
55 particlegun.param('independentVertices', False)
56 main.add_module(particlegun)
57 
58 # Simulation
59 simulation = register_module('FullSim')
60 main.add_module(simulation)
61 
62 # PXD digitization & clustering
63 pxd_digitizer = register_module('PXDDigitizer')
64 main.add_module(pxd_digitizer)
65 pxd_clusterizer = register_module('PXDClusterizer')
66 main.add_module(pxd_clusterizer)
67 
68 # SVD digitization & clustering
69 add_svd_simulation(main)
70 
71 # CDC digitization
72 cdcDigitizer = register_module('CDCDigitizer')
73 main.add_module(cdcDigitizer)
74 
75 # TOP digitization
76 topdigi = register_module('TOPDigitizer')
77 main.add_module(topdigi)
78 
79 # tracking
80 add_tracking_reconstruction(main)
81 
82 # Track extrapolation
83 ext = register_module('Ext')
84 main.add_module(ext)
85 
86 # Channel masker
87 main.add_module('TOPChannelMasker')
88 
89 # TOP reconstruction
90 topreco = register_module('TOPReconstructor')
91 topreco.logging.log_level = LogLevel.DEBUG # remove or comment to suppress printout
92 topreco.logging.debug_level = 2 # or set level to 0 to suppress printout
93 main.add_module(topreco)
94 
95 # TOP DQM
96 topdqm = register_module('TOPDQM')
97 main.add_module(topdqm)
98 
99 # Output
100 output = register_module('RootOutput')
101 output.param('outputFileName', 'TOPOutput.root')
102 main.add_module(output)
103 
104 # Show progress of processing
105 progress = register_module('Progress')
106 main.add_module(progress)
107 
108 # Process events
109 process(main)
110 
111 # Print call statistics
112 print(statistics)