Between the creation of the Pythia
object and the
init
call for it, you may use the methods of the
Settings
class to modify some of the default values.
Several different methods can be used for this.
a) Inside your main program you can directly set values with
pythia.settings.readString(string)
where both the variable name and the value are contained inside
the character string, separated by blanks and/or a =, e.g.
pythia.settings.readString("TimeShower:pTmin = 1.0");
The match of the name to the database is case-insensitive. Names
that do not match an existing variable are ignored. A warning is
printed, however, unless an optional second argument false
is used. Values below the minimum or above the maximum are set at
the respective border. For bool
values, the following
notation may be used interchangeably:
true = on = yes = ok = 1
, while everything else gives
false
(including but not limited to
false
, off
, no
and 0).
The Pythia
class contains a readString
method
that hands on to this method, or to corresponding methods in
ParticleData
or Pythia6
, and therefore may offer
the most convenient form:
pythia.readString("TimeShower:pTmin = 1.0");
b) Underlying this are the settings-type-sensitive commands in
Settings
, that are split by names containing flag
,
mode
or parameter.
Thus, the example now reads
pythia.settings.parameter("TimeShower:pTmin", 1.0);
Boolean values should here be given as true
or
false
i.e. there is less flexibility in the lower-level
methods.
There are several different further methods, like
method name="mode( name)"
gives the current value,
method name="mode( name, value)"
sets the current value,
method name="isMode( name)"
tells whether a mode has been defined or not,
method name="addMode( name, default, min, max)"
defines a new mode,
method name="forceMode( name, value)"
sets the value, also when outside the recommended bounds (and it is
completely up to you to face the consequences),
method name="resetMode( name)"
resets the current value to the default one.
Corresponding methods exist for flags and parameters.
Again name comparisons are case-insensitive.
Normally the user should have no need for these methods. The
main exception is if some of the variables defined on
Main Program Parameters page are used to set run-specific information
(like the CM energy or the number of events to generate) in an external
file (see 3c below) and these variables are then read into the main
program. Then the flag( name)
, mode( name)
and
parameter( name)
methods are to be used, see
main01.cc
as an example how it could work.
c) A simpler and more useful way is to collect all your changes
in a separate file, with one line per change, e.g.
TimeShower:pTmin = 1.0
Each line is process as described for the string in 3a). Since names
that do not match an existing variable are ignored, you can easily
comment out lines. The recommended way would be to add a special
character like # or ! in the first column.
The file can be read by the
pythia.settings.readFile("filename")
method, alternatively by the
pythia.readFile("filename")
method. The latter has the advantage that it allows you to freely mix
commands to the Settings
, ParticleData
and
Pythia6
classes, and so is preferable. Again, an optional
second argument false
allows you to switch off warning messages
for unknown variables.