27 from background
import add_output
60 print(
' basf2', argvs[0],
'equivTime_us num [sampleType phase outdir]')
62 print(
' equivTime_us equivalent SuperKEKB running time in micro-seconds')
63 print(
' num output file number')
64 print(
' sampleType one of: study, usual, PXD, ECL')
65 print(
' phase 2, 31 (=early phase 3) or 3')
66 print(
' outdir output directory path')
81 print(
'phase ', phase,
'not supported')
84 realTime = float(equivTime) * 1000
85 numEvents = int(crossect * lumi * realTime * 1e-9)
86 fname = bgType +
'_' + sampleType +
'-phase' + str(phase) +
'-' + num
87 outputFile = outdir +
'/' + fname +
'.root'
90 b2.B2ERROR(
'number of events is 0 -> increase equivTime_us')
95 if not os.path.exists(outdir):
100 b2.B2RESULT(
'Events to be generated: ' + str(numEvents) +
' - corresponds to ' + equivTime +
101 ' us of running at ' + str(lumi) +
' /nb/s (phase ' + str(phase) +
')')
102 b2.B2RESULT(
'Output file: ' + outputFile)
105 b2.set_log_level(b2.LogLevel.RESULT)
108 main = b2.create_path()
111 eventinfosetter = b2.register_module(
'EventInfoSetter')
112 eventinfosetter.param(
'evtNumList', [numEvents])
113 main.add_module(eventinfosetter)
116 gearbox = b2.register_module(
'Gearbox')
118 gearbox.param(
'fileName',
'geometry/Beast2_phase2.xml')
120 gearbox.param(
'fileName',
'geometry/Belle2_earlyPhase3.xml')
121 if sampleType ==
'study':
122 gearbox.param(
'override', [
123 (
"/DetectorComponent[@name='PXD']//ActiveChips",
'true',
''),
124 (
"/DetectorComponent[@name='PXD']//SeeNeutrons",
'true',
''),
125 (
"/DetectorComponent[@name='SVD']//ActiveChips",
'true',
''),
126 (
"/DetectorComponent[@name='SVD']//SeeNeutrons",
'true',
''),
127 (
"/DetectorComponent[@name='TOP']//BeamBackgroundStudy",
'1',
''),
128 (
"/DetectorComponent[@name='ARICH']//BeamBackgroundStudy",
'1',
''),
129 (
"/DetectorComponent[@name='ECL']//BeamBackgroundStudy",
'1',
''),
130 (
"/DetectorComponent[@name='KLM']//BeamBackgroundStudy",
'1',
''),
132 main.add_module(gearbox)
135 aafh = b2.register_module(
'AafhInput')
139 'suppressionLimits': [1e100] * 4,
141 'maxFinalWeight': 2.5,
142 'maxSubgeneratorWeight': 1.0,
143 'subgeneratorWeights': [1.000e+00, 2.216e+01, 3.301e+03, 6.606e+03, 1.000e+00,
144 1.675e+00, 5.948e+00, 6.513e+00],
146 main.add_module(aafh)
149 geometry = b2.register_module(
'Geometry')
150 geometry.param(
'useDB',
False)
151 addComp = [
"MagneticField3dQuadBeamline"]
153 if phase == 31
and sampleType ==
'study':
154 addComp.extend([
"BEAMABORT",
"MICROTPC",
"CLAWS",
"HE3TUBE"])
156 geometry.param({
"excludedComponents": [
"MagneticField"],
157 "additionalComponents": addComp})
158 main.add_module(geometry)
161 fullsim = b2.register_module(
'FullSim')
162 if sampleType ==
'study':
163 fullsim.param(
'PhysicsList',
'FTFP_BERT_HP')
164 fullsim.param(
'UICommandsAtIdle', [
'/process/inactivate nKiller'])
165 fullsim.param(
'StoreAllSecondaries',
True)
166 fullsim.param(
'SecondariesEnergyCut', 0.000001)
167 main.add_module(fullsim)
170 progress = b2.register_module(
'Progress')
171 main.add_module(progress)
176 add_output(main, bgType, realTime, sampleType, phase, fileName=outputFile)