Belle II Software development
Generation.py
1#!/usr/bin/env python3
2
3
10
11# Generation of 1000 ee->mumu(ISR) events using PHOKHARA.
12
13import sys
14import basf2
15from beamparameters import add_beamparameters
16
17# Set the global log level
18basf2.set_log_level(basf2.LogLevel.INFO)
19
20main = basf2.create_path()
21
22eventinfosetter = basf2.register_module('EventInfoSetter')
23eventinfosetter.param('evtNumList', [1000]) # we want to process 1000 events
24eventinfosetter.param('runList', [1]) # from run number 1
25eventinfosetter.param('expList', [0]) # and experiment number 0
26
27# Basf2.Register the PHOKHARA module
28phokhara = basf2.register_module('PhokharaInput')
29
30# Set the logging level for the PHOKHARA module to INFO in order to see the cross sections etc.
31phokhara.set_log_level(basf2.LogLevel.INFO)
32
33# Set the parameter file (EXPERTS ONLY!)
34# phokhara.param('ParameterFile', 'test.dat')
35
36# Set the final state particles
37# mu+mu-(0), pi+pi-(1), 2pi0pi+pi-(2), 2pi+2pi-(3), ppbar(4), nnbar(5), K+K-(6),
38# K0K0bar(7), pi+pi-pi0(8), lamb(->pi-p)lambbar(->pi+pbar)(9), eta pi+ pi- (10)
39phokhara.param('FinalState', 0)
40
41# soft photon cutoff, final result is independent of the cut off as long as its small (<1e-3)
42# photon multiplicity (and exclusive cross sections depend on that parameter)
43# EXPERTS ONLY
44phokhara.param('Epsilon', 0.0001)
45
46# Events (weighted) to be used for maximum weight search before generation
47phokhara.param('SearchMax', 50000)
48
49# Events (unweighted) before event loop is aborted
50phokhara.param('nMaxTrials', 25000)
51
52# CMS energy [GeV] (under development, currently calculated from xml file)
53# phokhara.param('CMSEnergy', 10.580)
54
55# LO switch --> Born corresponds to 1 photon (0), Born corresponds to 0 photons (1), only Born: 0 photons (-1)
56# original comment: ph0 Born: 1ph(0), Born: 0ph(1), only Born: 0ph(-1)
57phokhara.param('LO', 1)
58
59# NLO switch --> only for LO=0: off(0), on(1)
60# original comment: 1 photon : Born(0), NLO(1)
61phokhara.param('NLO', 1)
62
63# QED corrections: ISR only(0), ISR+FSR(1), ISR+INT+FSR(2), if NLO=1 only 0 and 2 are possible
64# original comment: ISR only(0), ISR+FSR(1), ISR+INT+FSR(2)
65phokhara.param('QED', 0)
66
67# NLO options (only if NLO=1 and QED=2) - CODE RUNS VERY (!) SLOW
68# original comment: IFSNLO: no(0), yes(1)
69phokhara.param('NLOIFI', 0)
70# Vacuum polarization switch: off (0), on (1, [by Fred Jegerlehner, alphaQED/hadr5]), on (2,[by Thomas Teubner])
71phokhara.param('Alpha', 0)
72
73# Pion FormFactor switch
74# original comment: FF_pion: KS PionFormFactor(0),GS old (1),GS new (2)
75phokhara.param('PionFF', 0)
76
77# Kaon FormFactor switch
78# original comment: FF_kaon: KaonFormFactor constrained (0),KaonFormFactor unconstrained (1),KaonFormFactor old (2)
79phokhara.param('KaonFF', 0)
80
81# Pion Structure
82# original comment: for pi+pi- only: f0+f0(600): K+K- model(0), "no structure" model(1), no f0+f0(600)(2), f0 KLOE(3)
83phokhara.param('PionStructure', 0)
84
85# Include narrow resonances (no Upsilon included yet!!!): no narrow resonances (0), j/psi (1) OR psi2s (2)
86# original comment: narr_res: no narrow resonances (0), J/psi (1) and psi(2S) (2) only for pion = 0,1,6,7
87phokhara.param('NarrowRes', 0)
88
89# Proton FormFactor switch
90# original comment: FF_pp: ProtonFormFactor old(0), ProtonFormFactor new(1)
91phokhara.param('ProtonFF', 1)
92
93# min/max angle of the photon
94# original comment: minimal photon angle/missing momentum angle, maximal photon angle/missing momentum angle
95phokhara.param('ScatteringAngleRangePhoton', [0., 180.])
96
97# min/max angle of the other final state particles
98# original comment: minimal pions(muons,nucleons,kaons) angle, maximal pions(muons,nucleons,kaons) angle
99phokhara.param('ScatteringAngleRangeFinalStates', [0., 180.])
100# Minimal hadrons/muons-gamma invariant mass squared [GeV^2]
101# original comment: minimal hadrons(muons)-gamma-inv. mass squared
102phokhara.param('MinInvMassHadronsGamma', 0.)
103
104# Minimal hadrons/muons invariant mass squared [GeV^2]
105# original comment: minimal inv. mass squared of the hadrons(muons)
106phokhara.param('MinInvMassHadrons', 0.0)
107
108# Maximal hadrons/muons invariant mass squared [GeV^2]
109# original comment: maximal inv. mass squared of the hadrons(muons)
110phokhara.param('MaxInvMassHadrons', 200.0)
111
112# Minimal photon energy/missing energy, must be larger than 0.01*(CMS energy) [GeV]
113# original comment: minimal photon energy/missing energy
114phokhara.param('MinEnergyGamma', 0.25)
115
116# geometry parameter database
117gearbox = basf2.register_module('Gearbox')
118
119# Register the Progress module and the Python histogram module
120progress = basf2.register_module('Progress')
121
122# output
123output = basf2.register_module('RootOutput')
124output.param('outputFileName', sys.argv[1])
125
126# Create the main path and add the modules
127main = basf2.create_path()
128main.add_module(eventinfosetter)
129add_beamparameters(main, "Y4S")
130main.add_module(progress)
131main.add_module(gearbox)
132main.add_module(phokhara)
133main.add_module(output)
134
135# generate events
136basf2.process(main)
137
138# show call statistics
139print(basf2.statistics)