Event Information
The Info
class collects various one-of-a-kind information,
some relevant for all events and others for the current event.
An object info
is a public member of the Pythia
class, so if you e.g. have declared Pythia pythia
, the
Info
methods can be accessed by
pythia.info.method()
. Most of this is information that
could also be obtained e.g. from the event record, but is here more
directly available. It is primarily intended for processes generated
internally in PYTHIA, but many of the methods would work also for
events fed in via the Les Houches Accord.
List information
a listing of most of the information set for the current event.
The beams
the identities of the two beam particles.
the longitudinal momenta of the two beam particles.
the energies of the two beam particles.
the masses of the two beam particles.
the CM energy and its square for the two beams.
Initialization
normally false, but true if the proposed pTmin scale was too low
in timelike or spacelike showers, or in multiparton interactions. In the
former case the pTmin is raised to some minimal value, in the
latter the initialization fails (it is impossible to obtain a minijet
cross section bigger than the nondiffractive one by reducing
pTmin).
The event type
the name and code of the process that occured.
the number of final-state partons in the hard process.
are beam particles resolved, i.e. were PDF's used for the process?
is either beam diffractively excited?
is there central diffraction (a.k.a. double Pomeron exchange)?
is the process a minimum-bias one?
has the process been generated from external Les Houches Accord
information?
true if a linked Les Houches class refuses to return any further
events, presumably because it has reached the end of the file from
which events have been read in.
does the process have a subprocess classification?
Currently only true for minbias and Les Houches events, where it allows
the hardest collision to be identified.
the name, code and number of final-state partons in the subprocess
that occured when hasSub()
is true. For a minimum-bias event
the code
would always be 101, while codeSub()
would vary depending on the actual hardest interaction, e.g. 111 for
g g -> g g. For a Les Houches event the code
would
always be 9999, while codeSub()
would be the external
user-defined classification code. The methods below would also provide
information for such particular subcollisions.
Hard process initiators
The methods in this sections refer to the two initial partons of the
hard 2 -> n process (diffraction excluded; see below).
the identities of the two partons coming in to the hard process.
x fractions of the two partons coming in to the hard process.
rapidity and scaled mass-squared of the hard-process subsystem, as
defined by the above x values.
true
if the two hard incoming partons have been picked
to belong to the valence piece of the parton-density distribution,
else false
. Should be interpreted with caution.
Information is not set if you switch off parton-level processing.
Hard process parton densities and scales
The methods in this section refer to the partons for which parton
densities have been defined, in order to calculate the cross section
of the hard process (diffraction excluded; see below).
These partons would normally agree with the
ones above, the initiators of the 2 -> n process, but it
does not have to be so. Currently the one counterexample is POWHEG
events [Ali10]. Here the original hard process could be
2 -> (n-1). The NLO machinery at times would add an
initial-state branching to give a 2 -> n process with a
changed initial state. In that case the values in this section
refer to the original 2 -> (n-1) state and the initiator
ones above to the complete2 -> n process. The
Info::list()
printout will contain a warning in such cases.
For external events in the Les Houches format, the pdf information
is obtained from the optional #pdf
line. When this
information is absent, the parton identities and x values agree
with the initiator ones above, while the pdf values are unknown and
therefore set to vanish. The alpha_s and alpha_em
values are part of the compulsory information. The factorization and
renormalization scales are both equated with the one compulsory scale
value in the Les Houches standard, except when a #pdf
line provides the factorization scale separately. If alpha_s,
alpha_em or the compulsory scale value are negative at input
then new values are defined as for internal processes.
the identities of the two partons for which parton density values
are defined.
x fractions of the two partons for which parton density values
are defined.
parton densities x*f(x,Q^2) evaluated for the two incoming
partons; could be used e.g. for reweighting purposes in conjunction
with the idpdf
, xpdf
and QFac
methods. Events obtained from external programs or files may not
contain this information and, if so, 0 is returned.
the Q or Q^2 factorization scale at which the
densities were evaluated.
the alpha_strong and alpha_electromagnetic values used
for the hard process.
the Q or Q^2 renormalization scale at which
alpha_strong and alpha_electromagnetic were evaluated.
Hard process kinematics
The methods in this section provide info on the kinematics of the hard
processes, with special emphasis on 2 -> 2 (diffraction excluded;
see below).
the invariant mass and its square for the hard process.
the remaining two Mandelstam variables; only defined for 2 -> 2
processes.
transverse momentum and its square in the rest frame of a 2 -> 2
processes.
the masses of the two outgoing particles in a 2 -> 2 processes.
the polar and azimuthal scattering angles in the rest frame of
a 2 -> 2 process.
Diffraction
Information on the primary elastic or
diffractive process
(A B -> A B, X1 B, A X2, X1 X2, A X B) can be obtained with
the methods in the "Hard process kinematics" section above. The
variables here obviously are s, t, u, ... rather than
sHat, tHat, uHat, ..., but the method names remain to avoid
unnecessary duplication. Most other methods are irrelevant for a
primary elastic/diffractive process.
Central diffraction A B -> A X B is a 2 -> 3
process, and therefore most of the 2 -> 2 variables are
no longer relevant. The tHat()
and uHat()
methods instead return the two t values at the A -> A
and B -> B vertices, and pTHat()
the average
transverse momentum of the three outgoing "particles", while
thetaHat()
and phiHat()
are undefined.
While the primary interaction does not contain a hard process,
the diffractive subsystems can contain them, but need not.
Specifically, double diffraction can contain two separate hard
subprocesses, which breaks the methods above. Most of them have been
expanded with an optional argument to address properties of diffractive
subsystems. This argument can take four values:
- 0 : default argument, used for normal nondiffractive events or
the primary elastic/diffractive process (see above);
- 1 : the X1 system in single diffraction A B -> X1 B
or double diffraction A B -> X1 X2;
- 2 : the X2 system in single diffraction A B -> A X2
or double diffraction A B -> X1 X2;
- 3 : the X system in central diffraction A B -> A X B.
The argument is defined for all of the methods in the three sections above,
"Hard process initiators", "Hard process parton densities and scales" and
"Hard process kinematics", with the exception of the isValence
methods. Also the four final methods of "The event type" section, the
...Sub()
methods, take this argument. But recall that they
will only provide meaningful answers, firstly if there is a system of the
requested type, and secondly if there is a hard subprocess in this system.
A simple check for this is that id1()
has to be nonvanishing.
The methods below this section do not currently provide information
specific to diffractive subsystems, e.g. the MPI information is not
bookkept in such cases.
Event weight and activity
weight assigned to the current event. Is normally 1 and thus
uninteresting. However, there are several cases where one may have
nontrivial event weights. These weights must the be used e.g. when
filling histograms.
(i) In the
PhaseSpace:increaseMaximum = off
default strategy,
an event with a differential cross-section above the assumed one
(in a given phase-space point) is assigned a weight correspondingly
above unity. This should happen only very rarely, if at all, and so
could normally be disregarded.
(ii) The User Hooks class offers
the possibility to bias the selection of phase space points, which
means that events come with a compensating weight, stored here.
(iii) For Les Houches events some strategies allow negative weights,
which then after unweighting lead to events with weight -1. There are
also Les Houches strategies where no unweighting is done, so events
come with a weight. Specifically, for strategies +4 and
-4, the event weight is in units of pb. (Internally in mb,
but converted at output.)
Sum of weights accumulated during the run. For unweighted events this
agrees with the number of generated events. In order to obtain
histograms normalized "per event", at the end of a run, histogram
contents should be divided by this weight. (And additionally
divided by the bin width.) Normalization to cross section also
required multiplication by sigmaGen()
below.
normally 0, but if Les Houches events are input then it gives the
event weighting strategy, see
Les Houches Accord.
the number of emissions in the initial-state showering, in the final-state
showering excluding resonance decys, and in the final-state showering
inside resonance decays, respectively.
Maximum pT scales set for MPI, ISR and FSR, given the
process type and scale choice for the hard interactions. The actual
evolution will run down from these scales.
The current pT scale in the combined MPI, ISR and FSR evolution.
Useful for classification in user hooks,
but not once the event has been evolved.
combined CKKW-L weight assigned to the current event. If CKKW-L merging is
performed, all histograms should be filled with this weight, as discussed in
Matrix Element
Merging.
Multiparton interactions
The value of a0 when an x-dependent matter profile is used,
MultipartonInteractions:bProfile = 4
.
The impact parameter b assumed for the current collision when
multiparton interactions are simulated. Is not expressed in any physical
size (like fm), but only rescaled so that the average should be unity
for minimum-bias events (meaning less than that for events with hard
processes).
The choice of impact parameter implies an enhancement or depletion of
the rate of subsequent interactions, as given by this number. Again
the average is normalized be unity for minimum-bias events (meaning
more than that for events with hard processes).
The number of hard interactions in the current event. Is 0 for elastic
and diffractive events, and else at least 1, with more possible from
multiparton interactions.
the process code and transverse momentum of the i
'th
subprocess, with i
in the range from 0 to
nMPI() - 1
. The values for subprocess 0 is redundant with
information already provided above.
are normally zero. However, if the i
'th subprocess is
a rescattering, i.e. either or both incoming partons come from the
outgoing state of previous scatterings, they give the position in the
event record of the outgoing-state parton that rescatters.
iAMPI
and iBMPI
then denote partons coming from
the first or second beam, respectively.
The enhancement or depletion of the rate of the i
'th
subprocess. Is primarily of interest for the
MultipartonInteractions:bProfile = 4
option, where the
size of the proton depends on the x values of the colliding
partons. Note that eMPI(0) = enhanceMPI()
.
Cross sections
Here are the currently available methods related to the event sample
as a whole, for the default value i = 0
, and otherwise for
the specific process code provided as argument. This is the number
obtained with Info::code()
, while the further subdivision
given by Info::codeSub()
is not bookkept. While continuously
updated during the run, it is recommended only to study these properties
at the end of the event generation, when the full statistics is available.
The individual process results are not available if
a second hard process has beeen
chosen, but can be gleaned from the pythia.stat()
output.
the total number of tried phase-space points, selected hard processes
and finally accepted events, summed over all allowed processes
(i = 0
) or for the given process.
The first number is only intended for a study of the phase-space selection
efficiency. The last two numbers usually only disagree if the user introduces
some veto during the event-generation process; then the former is the number
of acceptable events found by PYTHIA and the latter the number that also
were approved by the user. If you set a
second hard process there may also be a mismatch.
the estimated cross section and its estimated error,
summed over all allowed processes (i = 0
) or for the given
process, in units of mb. The numbers refer to the accepted event sample
above, i.e. after any user veto.
Loop counters
Mainly for internal/debug purposes, a number of loop counters from
various parts of the program are stored in the Info
class,
so that one can keep track of how the event generation is progressing.
This may be especially useful in the context of the
User Hooks
facility.
the method that gives you access to the value of the various loop
counters.
the counter number you want to access:
counters that refer to the run as a whole,
i.e. are set 0 at the beginning of the run and then only can increase.
the number of successful constructor calls for the
Pythia
class (can only be 0 or 1).
the number of times a Pythia::init(...)
call has been begun.
the number of times a Pythia::init(...)
call has been completed successfully.
the number of times a Pythia::next()
call has been begun.
the number of times a Pythia::next()
call has been completed successfully.
counters that refer to each individual event,
and are reset and updated in the top-level Pythia::next()
method.
the number of times the selection of a new hard
process has been begun. Normally this should only happen once, unless a
user veto is set to abort the current process and try a new one.
the number of times the selection of a new hard
process has been completed successfully.
as 11, but additionally the process should
survive any user veto and go on to the parton- and hadron-level stages.
as 11, but additionally the process should
survive the parton- and hadron-level stage and any user cuts.
the number of times the loop over parton- and
hadron-level processing has begun for a hard process. Is reset each
time counter 12 above is reached.
the number of times the above loop has successfully
completed the parton-level step.
the number of times the above loop has successfully
completed the checks and user vetoes after the parton-level step.
the number of times the above loop has successfully
completed the hadron-level step.
the number of times the above loop has successfully
completed the checks and user vetoes after the hadron-level step.
counters that refer to a local part of the
individual event, and are reset at the beginning of this part.
the current system being processed in
PartonLevel::next()
. Is almost always 1, but for double
diffraction the two diffractive systems are 1 and 2, respectively.
the number of times the processing of the
current system (see above) has begun.
the number of times a step has begun in the
combined MPI/ISR/FSR evolution downwards in pT
for the current system.
the number of times MPI has been selected for the
downwards step above.
the number of times ISR has been selected for the
downwards step above.
the number of times FSR has been selected for the
downwards step above.
the number of times MPI has been accepted as the
downwards step above, after the vetoes.
the number of times ISR has been accepted as the
downwards step above, after the vetoes.
the number of times FSR has been accepted as the
downwards step above, after the vetoes.
the number of times a step has begun in the
separate (optional) FSR evolution downwards in pT
for the current system.
the number of times FSR has been selected for the
downwards step above.
the number of times FSR has been accepted as the
downwards step above, after the vetoes.
counters that are unused (currently), and
that therefore are free to use, with the help of the two methods below.
set the above counters to a given value. Only to be used by you
for the unassigned counters 40 - 49.
the counter number, see above.
set the counter to this number;
normally the default value is what you want.
increase the above counters by a given amount. Only to be used by you
for the unassigned counters 40 - 49.
the counter number, see above.
increase the counter by this amount;
normally the default value is what you want.
Parton shower history
The following methods are mainly intended for internal use,
e.g. for matrix-element matching.
set/get knowledge whether the likely shower history of an event
has been traced.
set/get value of z in latest ISR branching.
set/get value of pT^2 in latest ISR branching.
Header information
A simple string key/value store, mainly intended for accessing
information that is stored in the header block of Les Houches Event
(LHE) files. In principle, any LHAup
derived class can set
this header information, which can then be read out later. Although the
naming convention is arbitrary, in practice, it is dictated by the
XML-like format of LHE files, see
Les Houches Accord for more details.
return the header named key
return a vector of all header key names
set the header named key
with the contents of val