Main-Program and Related Settings

  1. Introduction
  2. Initialization settings
  3. Event-generation settings
  4. Statistics
  5. Main-program settings
  6. Subruns
  7. Spares

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". For experimental collaborations this is actually the most common way to run a program like PYTHIA. The commands in such a file 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, and how many events should be listed.
In principle these two kinds could be kept completely separate. However, to make life simpler, a few 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.

To further reduce the necessary amount of main-program code, some of the tasks that you can steer from your main program can also be done internally. This in particular relates to some information printing. To give an example, pythia.event.list() can be inserted to print an event, i.e. all the particles belonging to it. Given the length of these listings one would list only a few events at the beginning of the run, to get some feeling for the character of events. This could be achieved e.g. with a main-program statement
if (iEvent < 3) pythia.event.list()
to list the first three events in a loop over iEvent, after pythia.next() has been used to generate the next event. Alternatively a Next:numberShowEvent = 3 setting, e.g. in a command file, would achieve the same, by an internal call at the end of pythia.next().

The settings names on this page thus fall into four main groups

Initialization settings

flag  Init:showProcesses   (default = on)
Print a list of all processes that will be simulated, with their estimated cross section maxima, as used for the subsequent Monte Carlo selection. Also print corresponding Les Houches initialization data, where relevant.

flag  Init:showMultipartonInteractions   (default = on)
Print initialization information for the multiparton interactions machinery.

flag  Init:showChangedSettings   (default = on)
Print a list of the changed flag/mode/parameter/word settings.

flag  Init:showAllSettings   (default = off)
Print a list of all flag/mode/parameter/word settings. Warning: this will be a long list.

flag  Init:showChangedParticleData   (default = on)
Print a list of particle and decay data for those particles that were changed (one way or another).

flag  Init:showChangedResonanceData   (default = off)
In the previous listing also include the resonances that are initialized at the beginning of a run and thus get new particle data, even if these may well agree with the default ones. Warning: this will be a rather long list.

flag  Init:showAllParticleData   (default = off)
Print a list of all particle and decay data. Warning: this will be a long list.

mode  Init:showOneParticleData   (default = 0; minimum = 0)
Print particle and decay data for the particle with this particular identity code. Default means that no particle is printed.

Event-generation settings

mode  Next:numberCount   (default = 1000; minimum = 0)
Print a line telling how many events have been generated so far, once every numberCount events. If set zero then no lines are ever printed.
In include/Pythia8Plugins/ProgressLog.h an alternative method is implemented that intermittently prints out run progress information, reports on CPU usage and estimates when the run will end. It is used in the main111.cc example.

mode  Next:numberShowLHA   (default = 1; minimum = 0)
The number of events to list the Les Houches input information for, where relevant.

mode  Next:numberShowInfo   (default = 1; minimum = 0)
The number of events to list the Info information for, where relevant.

mode  Next:numberShowProcess   (default = 1; minimum = 0)
The number of events to list the process record for, where relevant.

mode  Next:numberShowEvent   (default = 1; minimum = 0)
The number of events to list the event record for, where relevant.

flag  Next:showScaleAndVertex   (default = off)
In addition to the normal information in the listing of the process and event records, a second line per particle provides information on the production scale, particle polarization and production vertex.

flag  Next:showMothersAndDaughters   (default = off)
In addition to the normal information in the listing of the process and event records, further lines list all the mothers and daughters of each particle.

Statistics

flag  Stat:showProcessLevel   (default = on)
Print the available statistics on number of generated events and cross sections, where relevant.

flag  Stat:showPartonLevel   (default = off)
Print the available statistics on number and types of multiparton interactions, where relevant.

flag  Stat:showErrors   (default = on)
Print the available statistics on number and types of aborts, errors and warnings.

flag  Stat:reset   (default = off)
Reset the statistics of the above three kinds. The default is that all stored statistics information is unaffected by the pythia.stat() call. Counters are automatically reset in each new pythia.init() call, however, so the only time the reset option makes a difference is if stat() is called several times in a (sub)run.

Main-program settings

The settings in this section must be under the control of the user, i.e. there are no internal equivalents. The first one is especially important and would be a standard feature of any separate command file.

mode  Main:numberOfEvents   (default = 1000; minimum = 0)
The number of events to be generated.

mode  Main:numberOfTriedEvents   (default = 0; minimum = 0)
The number of events to be tried during generation. Any number smaller than one means that the setting will be ignored.

mode  Main:numberOfSelectedEvents   (default = 0; minimum = 0)
The number of events to be selected during generation. Any number smaller than one means that the setting will be ignored.

mode  Main:numberOfAcceptedEvents   (default = 0; minimum = 0)
The number of events to be accepted during generation. Any number smaller than one means that the setting will be ignored.

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.

The Main:... options works like this. Once you have used the pythia.readFile(fileName) method to read in the cards file, where the values have been set, 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 Settings method for each of the four possible return types that you want to extract. To save some typing the same method names are found directly in the Pythia class, and these just send on to the Settings ones to do the job, e.g.
int nEvent = pythia.mode("Main:numberOfEvents");

The area of subruns is covered separately below. A few spares are also defined after that, for unforeseen applications.

Subruns

You can use subruns to carry out several tasks in the same run. In that case you will need repeated instances of the first setting below in your command file, and could additionally use the second and third as well.

mode  Main:subrun   (default = -999; minimum = 0)
The number of the current subrun, a non-negative integer, put as first line in a section of lines to be read for this particular subrun.

flag  Main:LHEFskipInit   (default = off)
If you read several Les Houches Event Files that you want to see considered as one single combined event sample you can set this flag on after the first subrun to skip (most of) the (re-)initialization step.

mode  Main:numberOfSubruns   (default = 0)
The number of subruns you intend to use in your current run. Unlike the two settings above, Pythia itself will not interpret this number, but you could e.g. have a loop in your main program to loop over subruns from 0 through numberOfSubruns - 1.

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)