Main-Program Settings
Introduction
The main program is up to the user to write. However, sample main
programs are provided. In one such class of programs, key settings
of the run are read in from a "cards file".
These commands may be of two types
(a) instructions directly to Pythia
, like which
processes to generate, and
(b) instructions to the main program for what it should do,
like how many events to generate, i.e. how many times
pythia.next()
should be called.
In principle these two kinds could be kept completely separate.
However, to make life simpler, a number of useful main-program
settings are defined on this page, so that they are recognized by
the Settings
machinery. They can thus be put among
the other cards without distinction. It is up to you to decide which
ones, if any, you actually want to use when you write your main program.
Once you have used the pythia.readFile(...)
method to
read in the cards file, you can interrogate the Settings
database to make the values available in your main program. A slight
complication is that you need to use a different method for each of
the four possible return types that you want to extract, e.g.:
bool showCS = pythia.settings.flag("Main:showChangedSettings");
int nEvent = pythia.settings.mode("Main:numberOfEvents");
double eCM = pythia.settings.parm("Main:eCM");
string file = pythia.settings.word("Main:allSettingsFile");
To save some typing, the same method names are found directly in the
Pythia
class, and just send on to Settings
to do the job, so that you can use pythia.flag(...)
instead of pythia.settings.flag(...)
, etc.
Incoming beams
Normally the identities and energies of the two incoming beam particles
are given by the arguments of the init call. These settings can be
stored in an input "cards" file, in the following variables, and
thereafter read in the user-written main program. Usage is purely
optional.
mode
Main:idBeamA
(default = 2212
)
The PDG id
code for the first incoming particle.
mode
Main:idBeamB
(default = 2212
)
The PDG id
code for the second incoming particle.
flag
Main:inCMframe
(default = on
)
Assume collisions occur in the CM frame.
parm
Main:eCM
(default = 1960.
; minimum = 10.
)
Collision CM energy, to be given if Main:inCMframe
is on.
parm
Main:eBeamA
(default = 7000.
; minimum = 0.
)
The energy of the first incoming particle, moving in the
+z direction. If the particle energy is smaller than its mass
it is assumed to be at rest.
parm
Main:eBeamB
(default = 7000.
; minimum = 0.
)
The energy of the second incoming particle, moving in the
-z direction. If the particle energy is smaller than its mass
it is assumed to be at rest.
Run settings
Here further settings related to how many events to generate and whether
to print some information on data used in run. Again these variables
can be set in an input "cards" file, and thereafter read out an used
in the user-written main program. Usage is purely optional.
mode
Main:numberOfEvents
(default = 1000
; minimum = 0
)
The number of events to be generated.
mode
Main:numberToList
(default = 2
; minimum = 0
)
The number of events to list.
mode
Main:timesToShow
(default = 50
; minimum = 0
)
Print the number of events generated so far, this many times,
i.e. once every numberOfEvents/numberToShow
events.
mode
Main:timesAllowErrors
(default = 10
)
Allow this many times that pythia.next()
returns false,
i.e. that an event is flawed, before aborting the run.
flag
Main:showChangedSettings
(default = on
)
Print a list of the changed flag/mode/parameter/word settings.
flag
Main:showAllSettings
(default = off
)
Print a list of all flag/mode/parameter/word settings.
flag
Main:showChangedParticleData
(default = off
)
Print a list of particle and decay data for those particles
that were changed (one way or another).
flag
Main:showAllParticleData
(default = off
)
Print a list of all particle and decay data.
flag
Main:writeChangedSettings
(default = off
)
Write a file with the changed flag/mode/parameter/word settings, in
a format appropriate to be read in at the beginning of a new
run, using the pythia.readFile("fileName")
method.
word
Main:changedSettingsFile
(default = currentSettings.cmnd
)
The name of the file to which the changed flag/mode/parameter/word
settings are written if Main:writeChangedSettings
is on.
flag
Main:writeAllSettings
(default = off
)
Write a file with all flag/mode/parameter/word settings, in
a format appropriate to be read in at the beginning of a new
run, using the pythia.readFile("fileName")
method.
word
Main:allSettingsFile
(default = allSettings.cmnd
)
The name of the file to which a flag/mode/parameter/word
settings are written if Main:writeAllSettings
is on.
flag
Main:showAllStatistics
(default = off
)
Print all available statistics or only the minimal set at the end
of the run.
Sample main programs
To help exemplify what a main program could look like, a few simple
examples are provided:
main01.cc
: a simple study of the charged multiplicity
for jet events at the LHC. (Brief example given in talks.)
main02.cc
: a simple study of the pT spectrum
of Z bosons at the Tevatron. (Brief example given in talks.)
main03.cc
: a simple single-particle analysis of jet
events, where input is set by main03.cmnd
"cards file".
main04.cc
: a simple study of several different kinds
of events, with the choice to be made in the main04.cmnd
"cards file".
main05.cc
: generation of QCD jet events at the LHC,
with jet analysis using the CellJet
cone-jet finder.
main06.cc
: tests of internally implemented
cross sections for elastic and diffractive topologies, using
main06.cmnd
to pick process.
main07.cc
: tests of internally implemented
cross sections for minimum-bias events, using
main07.cmnd
to pick options.
main08.cc
: generation of the QCD jet cross section
by splitting the run into subruns, each in its own pT bin,
and adding the results properly reweighted.
main09.cc
: generation of LEP1 hadronic events, i.e.
e^+e^- -> gamma*/Z^0 -> q qbar, with charged multiplicity,
sphericity, thrust and jet analysis.
main10.cc
: illustration how userHooks can be used
interact directly with the event-generation process.
main11.cc
: a simple example how the Les Houches
Accord interface, plus a few more Fortran-to-C++ commands, allows
hard processes to be generated by PYTHIA 6.4 and then processed
further by PYTHIA 8.
main12.cc
: a fairly extensive study of
event properties, with hard processes generated by PYTHIA 6.4.
It reads in a main12.fcmnd
file with commands specfically
for the Fortran PYTHIA 6.4 program and another main12.ccmnd
file illustrating several of the settings listed on these pages.
main13.f
: a Fortran program (!) showing how
PYTHIA 6.4 can be used to generate a Les Houches Event File
ttbar.lhe
with top events. This program can easily be
modified to generate other files, bigger and/or for other processes.
main14.cc
: a study of top events, fed in from the
Les Houches Event File generated by main13.f
. This file
currently only contains 100 events so as not to make the distributed
PYTHIA package too big, and so serves mainly as a demonstration of
the principles involved.
main15.cc
: an example how the Les Houches Accord
interface can be used to input various toy parton-level configurations,
e.g. to study the hadronization of junction topologies.
main16.cc
: tests of internally implemented cross sections
for Supersymmetric particle production, with SYSY spectrum defined in
main16.spc
and settings in main16.cmnd
.
main17.cc
: shows how an external decay handler can
be linked to handle the decays of some particles.
main18.cc
: shows how an external random number
generator can be linked to handle this task.
main21.cc
: similar to main01, except that the
event record is output in the HepMC event record format. Requires
that HepMC and CLHEP are properly linked.
main22.cc
: similar to main12, except that the
event record is output in the HepMC event record format. Requires
that PYTHIA 6.4, HepMC and CLHEP are properly linked.
main23.cc
: a streamlined version, where all input on
the event generation is taken from the main23.cmnd
file,
and the ony thing done is to generate events and store them in a
file in the HepMC event record format. All physics studies will have
to be done afterwards. Requires that HepMC and CLHEP are properly
linked.
main31.cc
: a test of the shape of parton densities,
as a check prior to using a given PDF set in a generator. Requires
that LHAPDF is properly linked.
main32.cc
: compares the charged multiplicity
distribution, and a few other aspects, between default PYTHIA PDF and
another one. Requires that LHAPDF is properly linked.
Spares
For currently unforeseen purposes, a few dummy settings are made
available here. The user can set the desired value in a "cards file"
and then use that value in the main program as desired.
flag
Main:spareFlag1
(default = off
)
flag
Main:spareFlag2
(default = off
)
flag
Main:spareFlag3
(default = off
)
mode
Main:spareMode1
(default = 0
)
mode
Main:spareMode2
(default = 0
)
mode
Main:spareMode3
(default = 0
)
parm
Main:spareParm1
(default = 0.
)
parm
Main:spareParm2
(default = 0.
)
parm
Main:spareParm3
(default = 0.
)
word
Main:spareWord1
(default = void
)
word
Main:spareWord2
(default = void
)
word
Main:spareWord3
(default = void
)