Belle II Software  release-05-01-25
dedxPID_evtgen.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
16 
17 import os
18 import random
19 from basf2 import *
20 from simulation import add_simulation
21 from tracking import *
22 
23 # change to True if you want to use PXD hits (fairly small benefit, if any)
24 use_pxd = False
25 
26 # register necessary modules
27 eventinfosetter = register_module('EventInfoSetter')
28 
29 # --------------------
30 # generation
31 # --------------------
32 
33 eventinfosetter.param('expList', [0])
34 eventinfosetter.param('runList', [1])
35 eventinfosetter.param('evtNumList', [50])
36 eventinfoprinter = register_module('EventInfoPrinter')
37 
38 # create geometry
39 gearbox = register_module('Gearbox')
40 geometry = register_module('Geometry')
41 geometry.param('excludedComponents', ['EKLM'])
42 
43 # EvtGen to provide generic BB events
44 evtgeninput = register_module('EvtGenInput')
45 
46 
47 # --------------------
48 # simulation
49 # --------------------
50 
51 g4sim = register_module('FullSim')
52 # make the simulation less noisy
53 g4sim.logging.log_level = LogLevel.ERROR
54 
55 
56 # -------------------
57 # dE/dx reconstruction
58 # --------------------
59 
60 # set up the CDC dE/dx module
61 cdcdedx = register_module('CDCDedxPID')
62 cdcdedx_params = { # 'pdfFile': 'YourPDFFile.root',
63  'useIndividualHits': True,
64  'removeLowest': 0.05,
65  'removeHighest': 0.25,
66  'onlyPrimaryParticles': False,
67  'enableDebugOutput': True,
68  'ignoreMissingParticles': False,
69 }
70 cdcdedx.param(cdcdedx_params)
71 
72 # set up the VXD dE/dx module
73 svddedx = register_module('VXDDedxPID')
74 svddedx_params = { # 'pdfFile': 'YourPDFFile.root',
75  'useIndividualHits': True,
76  'removeLowest': 0.05,
77  'removeHighest': 0.25,
78  'onlyPrimaryParticles': False,
79  'usePXD': use_pxd,
80  'useSVD': True,
81  'trackDistanceThreshold': 4.0,
82  'enableDebugOutput': True,
83  'ignoreMissingParticles': False,
84 }
85 svddedx.param(svddedx_params)
86 
87 # write the results to file
88 output = register_module('RootOutput')
89 output.param('outputFileName', 'dedxPID_evtgen.root')
90 
91 
92 # create paths
93 main = create_path()
94 
95 
96 # add modules to paths
97 main.add_module(eventinfosetter)
98 main.add_module(eventinfoprinter)
99 main.add_module(gearbox)
100 main.add_module(geometry)
101 
102 main.add_module(evtgeninput)
103 main.add_module(g4sim)
104 
105 if use_pxd:
106  main.add_module(register_module('PXDDigitizer'))
107  main.add_module(register_module('PXDClusterizer'))
108 main.add_module(register_module('SVDDigitizer'))
109 main.add_module(register_module('SVDClusterizer'))
110 main.add_module(register_module('CDCDigitizer'))
111 
112 # tracking reconstruction does not include dE/dx measurements
113 add_tracking_reconstruction(main)
114 
115 main.add_module(cdcdedx)
116 main.add_module(svddedx)
117 
118 main.add_module(output)
119 
120 # process events and print call statistics
121 process(main)
122 print(statistics)