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