Belle II Software  release-05-02-19
SimpleMCTracking.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
28 
29 import os
30 from basf2 import *
31 
32 set_log_level(LogLevel.INFO)
33 # set_log_level(LogLevel.DEBUG)
34 set_random_seed(1028307)
35 
36 # register necessary modules
37 eventinfosetter = register_module('EventInfoSetter')
38 
39 # generate one event
40 eventinfosetter.param('expList', [0])
41 eventinfosetter.param('runList', [1])
42 eventinfosetter.param('evtNumList', [1])
43 eventinfoprinter = register_module('EventInfoPrinter')
44 
45 # create geometry
46 gearbox = register_module('Gearbox')
47 geometry = register_module('Geometry')
48 
49 # simulate CDC only; B-field outside CDC = 0
50 geometry.param('components', ['MagneticFieldConstant4LimitedRCDC', 'CDC'])
51 
52 # particle gun to shoot particles in the detector
53 pGun = register_module('ParticleGun')
54 
55 # choose the particles you want to simulate
56 param_pGun = {
57  'pdgCodes': [211],
58  'nTracks': 1,
59  'varyNTracks': 0,
60  'momentumGeneration': 'uniform',
61  'momentumParams': [1.0, 1.0],
62  'thetaGeneration': 'uniform',
63  # 'thetaGeneration': 'uniformCos',
64  'thetaParams': [90., 90.],
65  'phiGeneration': 'uniform',
66  'phiParams': [0., 360.],
67  'xVertexParams': [0.0, 0.0],
68  'yVertexParams': [0.0, 0.0],
69  'zVertexParams': [0.0, 0.0],
70 }
71 pGun.param(param_pGun)
72 
73 # simulation
74 g4sim = register_module('FullSim')
75 # this is needed for the MCTrackFinder to work correctly <- obsolete ?
76 g4sim.param('StoreAllSecondaries', True)
77 # g4sim.param('SecondariesEnergyCut', 0.0)
78 g4sim.param('UICommandsAtIdle', ['/control/execute interactions.mac'])
79 # suppress delta-rays
80 g4sim.param('ProductionCut', 1000000.)
81 
82 # digitizer
83 cdcDigitizer = register_module('CDCDigitizer')
84 
85 # find MCTracks
86 # mctrackfinder = register_module('MCTrackFinder')
87 # mctrackfinder = register_module('TrackFinderMCTruth')
88 mctrackfinder = register_module('TrackFinderMCTruthRecoTracks')
89 
90 # select which detectors you would like to use
91 param_mctrackfinder = { # select which particles to use: primary particles
92  'UseCDCHits': 1,
93  'UseSVDHits': 0,
94  'UsePXDHits': 0,
95  # 'UseClusters': False,
96  'WhichParticles': ['primary'],
97  # 'WhichParticles': ['CDC'],
98 }
99 mctrackfinder.param(param_mctrackfinder)
100 
101 # setupgf
102 setupgf = register_module('SetupGenfitExtrapolation')
103 # param_setupgf = {}
104 # setupgf.param(param_setupgf)
105 
106 # fitting
107 cdcfitting = register_module('DAFRecoFitter')
108 # param_cdcfitting = {}
109 # cdcfitting.param(param_cdcfitting)
110 
111 # build track
112 buildtrack = register_module("TrackCreator")
113 
114 # output
115 output = register_module('RootOutput')
116 output.param('outputFileName', 'SimpleMCTrackingOutput.root')
117 
118 # create path
119 main = create_path()
120 
121 # add modules to path
122 main.add_module(eventinfosetter)
123 main.add_module(eventinfoprinter)
124 main.add_module(gearbox)
125 main.add_module(geometry)
126 
127 main.add_module(pGun)
128 main.add_module(g4sim)
129 main.add_module(cdcDigitizer)
130 
131 main.add_module(mctrackfinder)
132 main.add_module(setupgf)
133 main.add_module(cdcfitting)
134 main.add_module(buildtrack)
135 
136 main.add_module(output)
137 
138 # Process events
139 process(main)
140 print(statistics)
qam.QAM.print
def print(self, fname='test.png')
Definition: qam.py:136