Update History
These update notes describe major updates relative to the baseline
PYTHIA 8.100 version. However, they are less extensive than the
corresponding update notes for PYTHIA 6. There are three main
reasons for this:
- The manual contained on these html/php pages is kept up to date.
(However, the "Brief Introduction" may not always be.)
- 8.1 is a quite new code, so there are many minor changes that,
if all were to be documented, would hide the key ones.
- 8.1 is not yet used for "mission critical" applications,
so there is less need to trace changed behaviour.
Main news by version
- 8.105: 24 February 2008
- New option to initialize with arbitrary beam directions
pythia.init( idA, idB, pxA, pyA, pzA, pxB, pyB, pzB)
- Added capability to set beam energy spread
and beam vertex.
Warning: as a consequence, the old Beams
group of
settings has been moved to BeamRemnants
, and
Beams
is now instead used for machine beam parameters.
Therefore also some Main
settings of this character have been
regrouped, as follows:
8.100 setting | has been moved to |
Main:idA |
Beams:idA |
Main:idB |
Beams:idB |
Main:inCMframe |
(Beams:frameType ) |
Main:eCM |
Beams:eCM |
Main:eA |
Beams:eA |
Main:eB |
Beams:eB |
Main:LHEF |
Beams:LHEF |
- The
forceHadronLevel()
method introduced for standalone
hadronization.
main15.cc
illustrated how either full hadronization or
only decays of some particles can be looped over for the rest of the
event retained.
- The
LHAevnt
and LHAinit
classes have been
joined into a new LHAup
one, with new options that allow
the writing of a Les Houches Event File.
- The
SusyLesHouches
class updated to handle
SLHA version 2.
- Updated HepMC conversion routine.
- The static
ErrorMsg
class has been removed and
its functionality moved into the non-static Info
class,
in the renamed Info file.
- Further reduction of the use of static, with related code changes.
This should allow to have several almost independent
Pythia
instances. Some static classes still remain, however, notably for
random number generation and particle properties.
- Limited capability to use two different
Pythia
instances
for signal + pileup event generation, see main19.cc
for an
example.
- In the
Event
class the =
and
=+
methods have been overloaded to allow the copying
or appending of event records. Illustrated in main19.cc
.
- The html and php page formatting improved with
cascading style sheets.
- Several minor improvements and new options, including updated configure
scripts.
- 8.108: 1 May 2008
- Correction in the event record, so that the beam particles in line
1 and 2 do not have any mother according to the
motherList
method. Previously the "system" entry in line 0 was counted as their
mother, which gave rise to an unexpected extra vertex in the conversion
to the HepMC format.
- Support for HepMC version 1 is removed, to simplify the code and
reflect the evolution of the field.
- Status codes are stored in HepMC only as 1 for existing and 2 for
decayed or fragmented particles (whereas previously the original PYTHIA
codes were used for the latter).
- Parton densities are stored in HepMC as xf(x,Q^2)
rather than the f(x,Q^2) used in (some) previous versions.
- The SusyLesHouches class has ben updated so that reading is fully
compatible with the SLHA2 standard.
- Improved handling of the Higgs width, relevant for massive and thereby
broad resonance shapes.
- The matrix elements for neutralino pair production have now been
completed and checked.
- Ensure that alpha_strong does not blow up, by introducing
a minimal scale somewhat above Lambda_3 (roughly where
alpha_strong = 10).
- New methods
isValence1()
and isValence2()
in the Info
class.
- Protection against division by zero in calculation of decay vertex
(for zero-mass gluons with zero lifetime, where there should be no
displacement).
- A new compilation option
-Wshadow
is introduced and
code is rewritten at all places where this option gave warnings.
- Minor library correction to allow compilation with gcc 4.3.0.
- 8.114: 22 October 2008
- New rescattering description operational (but still experimental)
for the case that FSR is not interleaved, but saved until after MI,
ISR and beam remnants have been handled. This involves much new code
in several classes.
- A new class
PartonSystems
is introduced to
keep track of which partons in the event record belong to which
subcollision system, plus some further information on each subsystem.
It takes over functionality previously found as part of the
Event
class, but leaves room for future growth.
- Add optional model, wherein an increased pT0 turnoff scale
for MI and ISR is used for above-average active events, i.e. events that
already have several MI's or ISR emissions.
- Freeze GRV 94L distribution at small Q^2 to avoid blowup.
- The
pythia.readFile(...)
method can now alternatively take
an istream
as argument instead of a filename
.
- Minor bug correction in
PartonLevel.cc
; the bug could
(rarely) give a segmentation fault.
- 8.120: 10 March 2009
- New rescattering description further developed, but not yet
recommended for normal usage.
- Include new processes for Large Extra Dimensions and Unparticles,
contributed by Stefan Ask. New test program
main28.cc
illustrates.
- Include further SUSY processes: neutralino-chargino and
chargino-chargino pairs. The processes should be valid also
in the case of non-minimal flavour violation and/or CP violation.
Expanded machinery to keep track of SUSY parameters.
- Include backwards evolution of incoming photon as part of the
SpaceShower
initial-state radiation description. This
allows you to simulate hard collisions where one of the incoming
partons is a photon. New test program main43.cc
illustrates.
- Allow separate mass and transverse momentum cuts when two hard
subprocesses are generated in the same event.
- The default value for the border between short- and long-lived
paticles has been changed from 1 mm to 10 mm, to better conform with
LHC standards, see here.
The default is still to let all unstable particles decay.
- New ISR matrix-element correction to f -> f gamma
in single W production.
- New method
Event::statusHepMC
returns the status
code according to the HepMC conventions agreed in February 2009.
The interface to HepMC now writes out status according to this
convention.
- Add capability to link to FastJet, with expanded configure script
and Makefile, and with
main61.cc
as new example.
- Update of
Makefile.msc
, with added support for latest
Visual C++ Express edition and use of regexp to check nmake version.
- Update of
LHAFortran.h
and
Pythia6Interface.h
, to make the interface to Fortran
routines work also under Windows. (Thanks to Anton Karneyeu.)
- Updated and expanded worksheet.
- The manual pages in the
xmldoc
directory, and thereby
also those of the htmldoc
and phpdoc
directories, have been significantly updated and expanded. In particular,
in many places the class of each method is explicitly shown, as well as
the type of the return value and of the arguments. This upgrade is not
yet completed, but already covers the more relevant sections.
- The unary minus operator in the
Vec4()
returns a
reference to a four-vector with all components negated, but leaves
the original four-vector unchanged. Previously the four-vector itself
was flipped.
- The
pPlus()
and pMinus()
methods of a
four-vector and an event-record particle are renamed pPos()
and pNeg()
, respectively.
- Include a further loop in
ProcessLevel
, so that a new
process is generated in case of failures of a less severe nature.
- Introduce warning message for unexpected
meMode
in
ResonanceWidths
.
- Les Houches event reading framework has been rearranged for
more flexibility. Some bugs corrected. Specifically, when scale
is not set (
scale = -1.
in the Les Houches standard),
PYTHIA did not attempt to set this scale itself, which typically
lead to there not being any ISR or FSR. Now the
rules for normal
1-, 2- and 3-body final states are applied, with a trivial
extension of the 3-body rules for higher multiplicities.
- Correct bug in the handling of parton densities, whereby it was
not possible to switch to a new set, once a first initialization
had been done.
- Correct bugs when several
Pythia::init
initialization
calls are made in the same run, specifically in the case that pointers
to external processes have been handed in.
- Changes in main03.cmnd and main04.cmnd so that some nonstandard
options are commented ou rather than active. Related comments
inserted also in some other .cmnd files, but there without any change
in program execution.
- A few further minor bug fixes.
- Update year to 2009.
- 8.125: 16 June 2009
- Hadronization and timlike-shower parameter default values updated
according to a tune to LEP1 data by Hendrik Hoeth, using the
Rivet + Professor framework.
- Many further SUSY production processes. SLHA readin expanded to cover
also masses and decay modes. Example
main22
updated, while
main33
now superfluous and removed.
- Also further processes for extra dimensions.
- Stefan Ask joins as coauthor.
- The
TimeShower::shower(...)
method has gained
a new argument, that forces the shower evolution to stop after
a given number of branchings. A new method
TimeShower::pTLastInShower()
permits the last evolution
pT to be read out. These extensions can be useful
for matching studies.
- New optional argument
isInterleaved
added to
TimeShower::branch(...)
. Is false by default, but
true when called from the parton level for interleaved evolution
of several parton systems, optionally also with ISR and MI.
- New methods
UserHooks::canSetResonanceScale()
and UserHooks:scaleResonance(...)
allows an optional
user choice of the maximum shower scale in resonance decays.
- A new method
SpaceShower::doRestart()
has been
added, to help distinguish cases when a
SpaceShower::branch(...)
failure forces a complete
restart of the evolution from ones where only the intended
current branching has been vetoed.
- When multiple interactions are initialized, it is now
possible to reduce both pT0 and pTmin
if necessary to find a valid solution where
sigma_jet > sigma_nondiffractive. Previously
only the former would be reduced, which could lead to
infinite loops if too large a pTmin was used.
Thanks to Sami Kama for pointing out the problem.
- The rescattering machinery is now essentially completed, and can
be used also by others than the authors. For now, however, it can only
be recommended for dedicated studies, not e.g. for generic tunes.
- Timelike and spacelike showers, and beam remnant handling,
are modified to handle rescattering partons. Specifically, a new machinery
is introduced to trace the recoils from the combination of rescattering
with showers and primordial kT. Can assign space- or timelike
virtualities to intermediate particles to have energy and momentum
conserved locally. This affects the
PartonLevel
,
MultipleInteractions
, TimeShower
,
SpaceShowe
r and BeamRemnants
classes.
Further details to appear in the upcoming article on rescattering.
(Another change is a reversal to pre-8.114 order for non-interleaved FSR,
wherein also FSR is treated before beam remnants are attached.)
- Four new status codes introduced, as part of the rescattering
description:
45 : incoming rescattered parton, with changed kinematics owing
to ISR in the mother system (cf. status 34);
46 : incoming copy of recoiler when this is a rescattered parton
(cf. status 42);
54 : copy of a recoiler, when in the initial state of a different
system from the radiator;
55 : copy of a recoiler, when in the final state of a different
system from the radiator.
- New method
Info::tooLowPTmin()
can tell whether the
pTmin scales for showers or multiple interactions are too low.
- Pion beams allowed, both pi^+, pi^- and
pi^0. New machinery for the latter, where the valence
flavour content is chosen to be either d dbar or
u ubar for each new event. One internal pion PDF
implemented, with others from LHAPDF.
- Treatment of Pomeron-proton collisions begun.
- Phase-space handling of hard processes and multiple interactions
slightly expanded to better allow for harder PDF's than proton ones,
e.g. for Pomerons.
- The program documentation has been expanded with an
alphabetical index of all methods that are described on the
webpages, see the Program Methods
page. Also other sections of the documentation have been
updated and expanded, including the worksheet.
- Several
list
methods have been made
const
. For the listing of events two new methods
have been added, Event::list()
and
Event::list(bool showScaleAndVertex,
bool showMothersAndDaughters = false)
,
that correspond to special cases of the general method.
- A new method
Pythia::LHAeventSkip(int nSkip)
permits a skip-ahead of the reading of external Les Houches
Events, without the necessity to generate the intervening
nSkip
events in full. Makes use of the new
LHAup::skipEvent(int nSkip)
method to perform
the operations. Mainly intended for debug purposes.
- The
ClusterJet
jet finder now saves the last
five clustering scales. Also a minor bug fix. Thanks to Nils
Lavesson for this contribution.
- The
Particle::m2()
method now returns a negative
number when the stored mass m is negative, as used to
indicate spacelike virtualities. Also the
Particle::eCalc()
, Particle::mT()
and
Particle::mT2()
methods have been modified.
- The
<<
method to print our a four-vector has
been expanded with a fifth number, the invariant length, with a minus
sign for spacelike vectors, and provided within brackets to allow
a simple visual distinction.
- New methods
Rndm::dumpState(string fileName)
and
Rndm::readState(string fileName)
allows to write or
read the state of the random number generator to or from a binary file.
- New method
double GammaReal(double x)
returns the
value of the Gamma function for arbitrary real argument.
Some cross sections for extra-dimensional processes rewritten to
make use of it.
- New example program
main29
shows how
to set up a fictitious process of a heavy system decaying
to two particles or partons, with decays traced to stable
particles, as relevant for astroparticle applications.
- Main programs that illustrate the HepMC interface have
been updated to use version 2.04, including units and excluding
deprecated output formats.
- The
main32
example extended also to handle
Les Houches Event Files.
- The Makefile has been modified so that "make clean" only
removes the current compilation and library fles, while
"make distclean" gives a more extensive reset and cleanup.
Thanks to Nils Lavesson for this contribution. Some other
minor Makefile corrections.
- Several main programs that use the
Main:timesToShow
mode have been corrected so as
not to crash if this is set to zero. Also some other cosmetics
changes in main programs that do not affect the running.
- Bug correction, in that previously a veto with user hooks
was not propagated from parton showers inside resonance decays.
- Minor bug fix in
TimeShower
for kinematics with
unequal beam-particle masses.
- Bug fix so that
PartonLevel:MI = off
also works for
minimum-bias events.
- Minor bug fix in the impact-parameter selection of multiple
interactions. Thanks to Sami Kama for pointing it out.
- String fragmentation for junction topology protected against
numerical instability in boost.
- Bug correction in the handling of particle decays to partons,
where the scale of the partons was set before the partons had been
added to some arrays, leading to indexation out of bounds.
Thanks to Vladislav Burylov for discovering this bug.
- Bug correction in the handling of particles with inhibited decay,
where the decay vertex would be too far displaced, which could lead to
infinite loop. Thanks to Sami Kama for debugging this.
- Check to avoid infinite loop in matrix-element handling of
two-body decays.
- Bug correction to avoid infinite loops in Dalitz decay treatment.
Some changes in the decay handling logic to allow a new try when the
decay of a particle fails.
- Minor correction, so the pointer to the
Info
class
is set also for user-written classes derived from LHAup
.
- Correction for typo in the matrix element of the
Sigma3ff2HchgchgfftWW
class, for doubly charged Higgs
production. Thanks to Merlin Kole for spotting it.
- Updated colour bookkeeping in junction-antijunction annihilation
avoids later problems in
Pythia::check()
.
- Minor updates of the
Makefile.msc
file to work with
Visual Studio 2008. Thanks to David Bailey for these modifications.
- Ensure that
nInit
in the BeamParticle
class is set also for unresolved lepton beams.
- The
VetoEvolution
class, derived from
UserHooks
, is obsolete and has been removed.
- 8.130: 15 September 2009
- New machinery that allows multiple interactions inside diffractive
systems. Also new optional Pomeron flux factors and Pomeron PDFs.
New page on diffraction added, where
further details are collected. Still not tuned, so to be used with
caution.
- Make Peter Skands' "Tune 1" parameters for ISR and MI default.
The older simpler tune is still available as an option, see
Tune:pp
.
- New possible choices for a second hard process: charmonium,
bottomonium, top pair and single top.
- New code for pair production of generic colour-triplet scalar,
fermion or vector. Largely written by Johan Bijnens, partly recycling
existing code.
- Add user hooks possibility to veto event after a given number
of multiple interactions.
- Add instructions how PYTHIA 8 can be used from inside ROOT.
Thanks to Andreas Morsch for providing the text and Rene Brun
for a simple example.
- The
main21.cc
example extended with an option
for a single-particle gun.
- Improvements and bug fixes in rescattering framework.
- New method
Hist::table(string fileName)
provides a
more direct way to print a two-column table of histogram contents
into a file than the current Hist::table(ostream& os = cout)
.
- Modify reading of external files so that a line only consisting of
control characters counts as empty, the same way as a line only consisting
of blanks already did. This includes carriage return, tabs and a few more,
the ones represented by
\n \t \v \b \r \f \a
. Applies to
Les Houches Event files, settings files and particle data files.
- Fix it so that the read-in of a Les Houches Event File for the
hardest process can be combined with the faciliy to select a specified
second hard process.
- New empty base class method
LHAup::fileFound()
allows the derived class LHAupLHEF
to signal more
clearly that a failed initialization is caused by a failure to open
the desired file.
- Check that a pointer to an
LHAup
object has been set
in Pythia::LHAeventList()
and
Pythia::LHAeventSkip(...)
calls.
- Updated configure and Makefile, e.g. to build shared libraries
on Mac OS X.
- The options with a direct link to hard-process generation
in PYTHIA 6 has been removed. It is hardly ever used but
complicates the build structure. If required, the relevant
pieces could be restored by the user.
- New argument to
Info::errorMsg(...)
allows to
show all error messages of a specific kind rather than only the
first one, e.g. for initialization.
- Correction in decay table of righthanded Majorana neutrinos.
Thanks to Arnaud Ferrari and Vladimir Savinov.
- Correction in expressions in the manual for H^+- couplings
to an h^0, H^0 or A^0 and a W^+-.
Thanks to Rikard Enberg.
- Fix for accessing uninitialized memory, caused by accessing the
daughters of the incoming beams before these daughters actually existed.
Thanks to David Bailey and Sami Kama.
- Uninitialized photon PDF inside the proton could give crazy results
for processes with incoming photons. Thanks to Adam Davison.
- Bug fix such that finite lifetimes can be set also for particles
produced in the hard process. To exemplify, the bug affected
tau leptons produced in Z^0 and W^+-
decays. Thanks to Troels Petersen.
- Bug fix in
TimeShower
, that beamOffset
could remain uninitialized. Thanks to Sami Kama.
- Minor correction to resonance decays: fail if the allowed mass
range of a Breit-Wigner resonance is a small fraction of the total
area under the resonance curve.
- Correction when all three valence quarks were kicked out from a
proton and could give false messages that beam momentum had been
used up.
- Clarify status codes needed for hadron-level standalone runs in
order to avoid error messages, and modify the
main21.cc
example accordingly.
- Minor corrections in the processes for extra dimensions.
- Some other minor additions to existing facilities
and minor bug fixes.