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