## Update History

These update notes describe major updates relative to the PYTHIA 8.186 version, which was the last 8.1 release. The step from 8.1 to 8.2 gave an occasion to break backwards compatibility, but this should only affect a small part of the user code.

### 8.243: 4 July 2019

- Bug fix in the Les Houches reader, where the introduction of the optional `#scaleShowers` tag in 8.242 meant that parton showers were killed if that tag was not present. Should not affect LHE3-compliant files. Thanks to Helen Brooks.
- The Python interface in `include/Pythia8Plugins/PythonWrapper.h` has been updated.
- Obsolete method declaration in `ProcessContainer.cc` removed.
- `main29.cc` has been updated with safer handling of a pointer. Address tiny issue of possibly uninitialized variable in `ColourReconnectionHooks.h`. Thanks to Leif Gellersen.

### 8.242: 1 July 2019

- A bug fix in 8.240, for an issue with colour vs. anticolour assignment of dipole ends in baryon-number-violating decays, unfortunately introduced a bug of its own. Specifically, in cases where the recoiler of a final-state radiation is in the initial state, the recoiler colour type should be negated relative to a final-state recoiler. In addition, the new code has been extended to apply for all colour (anti)triplets, including (anti)squarks. The bug has meant that high-pT jets in some flavour combinations have acquired a larger multiplicity than they should, at very high pT by up to 10%. Physics at lower pT scales appear unaffected, as is e.g. top, W, Z and H decays. Thanks to Patrick Komiske and Jesse Thaler.
- New particle decay codes 93 and 94 for singlet particle decaying to a q qbar pair plus a new singlet. Thanks to Philippe Mermod.
- Fix cases where `scale()` and `scaleSecond()` return values were not stored in the event record, by allowing new `#scaleShowers` tag in Les Houches events. Thanks to Oleh Fedkevych.
- Bug fixes to the LHEF3 file reader. An issue previously led to some tags being skipped, if the line before the tag was commented by a hash/pound sign (#).
- Protect against potential square root of negative number in Dark Matter resonance handling. Thanks to Peter Richardson.
- The implementation of the indexing operator `event[i]` has been changed from straight vector indexing to using the `at(i)` method, giving some safety against out-of-bounds indexing with little to no cost in execution time. Thanks to Helen Brooks.
- The new method `Event::free()` empties the event record, like `Event::clear()`,but also frees up the memory of the `Particle` vector.
- Fix that PDF set 22 was unreachable, since a range check had not been updated.
- Static code analysis by Dmitri Konstantinov and colleagues revealed four errors, now fixed.
  - The H^+ contribution was missed in BSM Higgs width calculation for the gamma + Z^0 channel.
  - Typo in the expression for the slepton/sneutrino partial width to a chargino plus a neutrino/lepton.
  - Typo in the merging machinery for SUSY pair production.
  - Possibility of incorrect kinematics when photoproduction involves off-shell photons.
- Fixed faulty behaviour in PartonVertex asssignment, where parton shower would boost vertices to unphysical spatial points. To this end the event and particle `rotbst` methods have been endowed with a second optional argument not to boost production vertices.
- Bug fixes to the "guess" option for defining hard process name for multijet merging. An issue previously led to the hard process name being only corrected once for the first event, and then no longer adjusted automatically.The `main89.cc` program has been modified as a consequence.
- Bug fixes for the hard process name handling for weak-boson-fusion-like processes that led to an incorrect counting of additional emissions. In multijet merging, this led to incorrect no-emission probabilities being applied to such processes.
- A winner-takes-it-all strategy for choosing parton shower histories has been added in multijet merging. This is an unfortunate necessity for extremely high multiplicity merging, to avoid excessive memory usage. Other memory usage tweaks have been included in the `History` class.
- Corrections and extensions to the VMD framework for photon beams, including improved kinematics and minor corrections for the production of VMD states. It is now possible to generate the J/Psi as one of the VMD states.
- Process g gamma → t tbar has been enabled, see Top Processes for details.
- Fixed cross section for heavy-quark pair production in gamma+gluon and gamma+gamma fusion processes. Thanks to Javier Alberto Murillo Quijada.
- Bug fix for hard diffraction and resolved photons, wherein kinematics is not recalculated when previous steps already failed.
- Bug fix in the check that energy-momentum is preserved, without which DIS events e.g. generated with `main36.cc` are falsely rejected.
- New setting `Beams:allowVariableEnergy` allow incoming beam energies or momenta to be set event-by event, by further arguments to the `pythia.next` call. This is achieved by initializing the MPI machinery at a grid of CM energies, and then interpolating as needed. Thus only processes belonging to the `SoftQCD` family for inclusive hadron-hadron collisions can be simulated. This is unlike the `Beams:allowMomentumSpread`, which can be used for any process, but only in a narrow energy range around the nominal one. The selection of grid energies for diffraction and photon beams has been unified with the new one above. See further in the "Variable collision energy" section of the Beam Parameters description.
- Some simple methods have been added to the `Event` class, to return the final-state multiplicity, or the rapidity/angular separation between two particles in the event record.
- A simple method has been added to the `Settings` class, to check whether only `SoftQCD` processes are switched on.
- A new check at initialization to warn if `SoftQCD` processes are mixed with other kinds of processes, since this can lead to doublecounting and/or low efficiency.
- New `main77.cc` example how double parton scattering events can be reweighted according to a different model than default in Pythia. Contributed by Boris Blok and Paolo Gunnellini.
- The examples `main10.cc` and `main62.cc` have been rewritten to avoid having histograms in global scope.
- Fix minor typo in the I_0 and I_1 Bessel functions.
- Various other minor typo corrections.
- Year updated to 2019.

### 8.240: 20 December 2018

- Nadine Fischer leaves the PYTHIA collaboration. New affiliations for Nishita Desai, Ilkka Helenius and Stefan Prestel.
- All soft QCD processes, including elastic and diffractive, are now implemented for photoproduction in connection with lepton beams. These can also be applied to ultra-peripheral collisions by providing an approriate photon flux. This involved some restructuring of related code, mainly between `PhaseSpace.cc` and `GammaKinematics.cc`.
- A modified coalescence model for (anti)deuteron production out of (anti)protons and (anti)neutrons has been implemented. The model and its parameters are further described on the new Deuteron Production page. The model is enabled by `HadronLevel:DeuteronProduction = on`. New status code 121 for particles produced in this step.
- A major restructuring of the parton shower code has begun, with the objective that the Vincia and Dire parton showers should be distributed as part of the Pythia package, to allow simple switching and comparison between showers. So far, the `TimeShower` and `SpaceShower` classes have been reduced to base classes for other showers. Therefore only the header files remain, while the `.cc` files are removed. The existing shower algorithms have been moved to the new derived classes `SimpleTimeShower` and `SimpleSpaceShower`, located in correspondingly-named `.h` and `.cc` files. Finally, both class and files `WeakShowerMEs` have been renamed `SimpleWeakShowerMEs`. Existing shower settings retain their names, for backwards compatibility. See further here.
- Two new proton PDF sets, NNPDF3.1sx+LHCb (N)NLO+NLLx LUXQED, have been introduced. Since they include small-x resummation they offer a reasonable small-x behaviour for use in a LO context. The old set 21 has been removed and replaced by the new NLO/NNLO ones as sets 21 and 22. Thanks to J. Rojo.
- The GKG18 Pomeron PDF sets have been updated to the final version. In addition both LO and NLO fits are now provided for Fit A and Fit B, in each case for the central member.
- The Dark Matter setup has been extended with some new processes, for f fbar → Z' H and q qbar → Drell-Yan production of charged co-annihilation partners of several different kinds. As a consequence also some new particles are introduced in the DM scenario.
- The html/php documentation has been extended with an index on the top of (almost) all pages, with links to the main subsections. The level of headers has been adjusted for consistency in some places.
- A new switch `StringFragmentation:TraceColours` allows fictitious colour and anticolour indices to be set for the primary hadrons, according to the colour indices of the endpoint partons of the string region(s) in which each hadron is produced.
- The `configure` file has been made verbose, both on choices made and on any problems encountered.
- Some improvements of the merging machinery for high-multiplicity merging, in particular correcting an inconvenient choice in the organization of the construction of all paths that slowed down the code significantly. Added new functionality to info pointer to set auxiliary event attributes. Updated UNLOPS merging to allow user-defined merging scale definition.
- Improved handling of beams to allow more straightforward handling of neutrino scattering. Allow the PDFs of both beams to be set independently, such that one can be used to emulate the varying neutrino flux.
- Improvements to the beam handling to allow QED radiation in DIS events.
- The User Hooks machinery for modified hadronization parameters has been extended with a few more arguments and methods.
- The `HistPlot::add()` method has been extended so the input histogram could be a temporary one, e.g. a rescaled histogram or the sum or ratio of two.
- The `PartonSystems` class has been extended to also store the location of a single resonance mother of a system, not only incoming beam partons (where relevant) and outgoing ones. Consequently some methods have been added or modified.
- A new base class method `TimeShower::showerQEDafterRemnants` has been added, and is called at the very end of the parton-level step.
- Correct sign and phase of the Coulomb term in the ABMST and RPP elastic pp/ppbar cross sections, owing to typos in the respective articles.
- A new overestimate for photon flux optimized for the flux from heavy ions. Related parameters are listed on the PDF Selection page, and usage is demonstrated in the `main70.cc` sample main program. This should reduce the generation time roughly by a factor of six.
- A switch to select for which side the hard-diffractive selection is done is introduced, see Diffraction.
- A small correction for photoproduction kinematics with a massive photon emitter.
- Removed resetting the pT0Ref in `main69.cc` for gamma + gamma case, since the new retuned default parametrization is sufficient. A similar setting for gamma + proton is introduced, however.
- Bug fix in A^0 → H^+- W^-+ decays: coupling parameter name was misspelt.
- Fixed missing possibility of secondary vertices in some shower branchings, notably in the Hidden Valley shower. Thanks to Malte Buschmann.
- Bug fix in the lower Q^2 limit of the equivalent photon flux around a proton. Mainly affects the shape at large x values.
- The initializer list of all class constructors has been extended such that all class variables are initialized to the default value of the respective data type, when not explicitly initialized to something else.
- Forgotten initialization of `isDiff` in `ProcessContainer.cc` fixed. May affect soft diffraction with photon beams. Thanks to Vittorio Zecca. `isDiff` made obsolete by subsequent change.
- Reset cross sections after choice of photon VMD state. Corrects bug that could give incorrect gamma-p and gamma-gamma cross sections. Thanks to Celine Degrande.
- Initialize some variables that are not otherwise initialized when using `TimeShower::showerQED`. Thanks to Kevin Pedro.
- Minor change in `BeamParticle` for flexibility in resolving beam remnants. Thanks to Laurent Forthomme.
- Fix incorrect combination of a displaced vertex in the hard process and a displaced beam vertex. Introduce a new method `Particle::vProdAdd` to shift an existing vertex. Thanks to Felipe Rojas.
- Fix forgotten initialization of particle data `hasChangedMMinSave` and `hasChangedMMaxSave`. Thanks to Vittorio Zecca.
- Fix so that `Info::isVMDstateA()` and `Info::isVMDstateB()` by default return false. Thanks to Axel Naumann.
- Do not set `p3weak` and `p4weak` in timelike showers when not used. Thanks to Vittorio Zecca.
- Fix so that the SKI and SKII colour reconnection scenarios are called in the relevant configurations, as now described in the manual. Thanks to Marina Beguin.
- Speed up the TimeShower when global recoil is switched on. Too much time was spent determining whether a dipole was from the hard process, which is now solved by storing whether a system is the hard one or not.
- Check and correct for incorrect colour vs. anticolour assignments of dipole ends in baryon-number-violating decays. Also do more extensive search to find moved/new colour dipole recoil ends.
- Note that in 8.235 update, the SaS/DL description of elastic scattering was upgraded by the addition of a 1 + rho^2 factor. Although a small effect, it lead to an undocumented decrease in the default nondiffractive cross section. Thanks to Rick Field.
- The SLHA interface has been updated to parse non-integer entries in the QNUMBERS block, to allow for definitions of millicharged particles. Note that such charges will still be rounded to zero internally in PYTHIA, since bremsstrahlung corrections are negligible. Thanks to A. Pukhov for pointing to this issue.
- Add possibility to preload calibration files in Rivet analyses. Added methods for analysis options and ignore beam configurations.
- Include option with black-disc Glauber for nuclear collisions.
- Some minor bug fixes in the AA machinery.
- Added methods to iterate over nucleons; useful for Glauber analyses.
- In `main93.cc` Rivet analysis options are set from the `.cmnd` file, and heavy ion information is added to the HepMC file.
- Bug fix to ensure that `Tune:pp = 0` does nothing.
- Extra safety check for inconsistent input to the SLHA interface.
- New possibility to let particles with narrow widths (such as onia states) obtain a simple Breit-Wigner distribution, both in hard processes and in MPIs, assuming their widths are above the new `PhaseSpace:minWidthNarrowBW` parameter value, but still not so large that they merit a completely dynamical mass generation.
- New `ParticleData::isOnium()` to identify onia states.
- The `ResonanceWidths:minWidth` default value has been changed from 1e-20 to 1.97e-19, meaning that resenances with a lifetime of above 1 km are set stable.
- For unstable resonances the width is translated into a lifetime (tau_0) at setup. The `ParticleData::setTau0` method has been extended with a second optional argument so that this does not have to count as changed particle data.
- The `ResonanceDecays::MSAFETY` mass margin has been changed from 0.1 to 0.01 GeV to allow for longer-lived particles.
- Fix for gluino R-hadrons, which before got a too large, by about half a GeV, and variable mass.
- Minor extra safety check for the setting of space-time production vertices.
- Several new methods for the `RotBstMatrix` class, to obtain an inverse without overwriting the original, to perform vector and matrix multiplication by an overloaded * operator, and to provide variants of the `toCMframe` and `fromCMframe` methods.
- Minor modification so that `ProcessLevel:all = off` does not give any hadronization/decay activity at all if also `HadronLevel:all = off`.
- Introduce a safety check that exits when no dipoles are found for the new colour reconnection scenario.
- Improve reweighting scheme when a second hard process is generated, by symmetrization of PDF weights, better bookkeeping of weights above unity, and possibility to reduce the number of above-unity weight events by the new parameter `SecondHard:maxPDFreweight`.
- New possibility to input (and output) Double Parton Scattering parton configurations by an extension of the Les Houches Accord standard, although with some restrictions.
- Minor modification in the parsing of settings vectors input as strings enclosed in braces.
- Change the default value of `ResonanceWidths::MASSMIN` from 0.4 to 0.1 GeV by ATLAS request.

### 8.235: 27 March 2018

- Up until now, PYTHIA has been licenced under GNU GPL v2 or later. This is extended so that alternatively any later version can be used, specifically version 3. The MCnet GUIDELINES are updated accordingly, as are many file headers. Thanks to Christophe Delaere.
- The machinery for total, elastic and diffractive cross sections has been rewritten and expanded.
  - The ABMST model [App16] has been introduced, and extended from total, elastic and single diffraction to also include double and central diffraction.
  - The RPP 2016 parametrization [Pat16] for total and elastic cross sections has been introduced.
  - The set-it-yourself machinery has been extended and systematized.
  - The descriptions on the TotalCrossSections and the Diffraction webpages have been regrouped. The former now describes both integrated and differential cross sections of all scenarios, whereas the latter describes parameters related to the hadronization of diffractive systems, and additionally the machinery for hard diffraction.
  - In the process of this regrouping, several `Diffraction:xxx` parameters have been renamed `SigmaDiffractive:xxx`. The most prominent example is `PomFlux`, but the largest group is the MBR parameters set.
  - The phase space generation machinery has been rewritten to allow for the extended set of models, to be more general (at the expense of speed). Also the cross section code itself has been restructured.
- A scenario for hard diffraction with gamma beams has been introduced, applicable for both gamma + gamma and gamma + p processes. Only a resolved photon, currently always associated with a virtual rho state, is assumed to contain a Pomeron flux. See further in the Diffraction description. The framework can be applied also for photoproduction with lepton beams.
- A new machinery has been introduced to handle soft diffraction in gamma-p and gamma-gamma collisions, based on VMD (Vector Meson Dominance) states assumed present in a photon beams. In detail, diffractive cross sections for gamma + p and gamma + gamma have been introduced, and thus the parameter `Photon:sigmaNDfrac` has been removed. VMD states have been introduced as possible beam particles inside a photon beam. The standard beam machinery has been extended to pick VMD states when required. New methods in `Info.h` give access to the current character of such states. Possibility to rescale the pion PDF has been implemented, e.g. when used to represent a VMD state.
- It is now possible to obtain space-time production points for hadrons as predicted within the string fragmentation model, see further the "Hadron Production Vertices" section of the Hadron Scattering description. Physics and code developed by Silvia Ferreres-Solé, article in preparation.
- The Angantyr model for Heavy Ion Collisions has been updated with a few extra options and new defaults. To recover old results one needs to set `Angantyr:SASDmode = 1`, `Angantyr:impactMode = 0`, and `HIPDF:PomHixSupp = 4.`.
- It is now possible to specify a given impact parameter when generating minimum bias events using a new functions in the UserHooks.
- The flavour part of the rope hadronization implementation has been updated. The option to always go to the highest possible SU(3) multiplet, relevant when junction CR is used in addition to ropes, has been added. The possibility of a simpler impact parameter model à la Buffons needle [Bie16c] has also been added.
- An option is introduced to have a logarithmic parametrization for the energy dependence of pT0, used for the cross section regularization in the MPI framework. This is used as a default for gamma-gamma collisions, with new default parameters listed in the Photoproduction description.
- A new parameter `ContactInteractions:etaRL` is introduced into the differential cross section for q qbar → ell+ ell- to distinguish a right-left contact interaction between quarks and leptons. Previously, the same parameter was used for left-right and right-left contact interactions. Results from prior versions of the code can be reproduced only if `etaLR` and `etaRL` are set equal.
- A new Dark Matter production process f fbar → Z' H has been added, with Z' decaying to a DM pair. Some other DM processes have been modified.
- It is now possible to specify the a and <z> values of the Lund fragentation function, as an alternative to the conventional a and b selection, see further in the Fragmentation description.
- The shower variations have been extended so that the calculation can be made for an individual member of a PDF family, instead of calculating the effect when averaged over all members.
- Possibility to enhance rate of gluon branchings to charm and bottom independently from light flavours. New splitting names `isr:G2QQ:cc` and `isr:G2QQ:bb` are introduced for initial-state showers, and `fsr:G2QQ:cc` and `fsr:G2QQ:bb` for final-state ones. See further the User Hooks documentation.
- A new nuclear PDF set, EPPS16, is added.
- The GKG-DPDF Fit A and Fit B (central member) diffractive PDF sets have been added.
- The central NNPDF 3.1 QCD NLO and NNLO fits at alpha_s = 0.118, `PDF:pSet = 19` and `20`, have been replaced by the recent corresponding NNPDF 3.1 QCD + QED (luxqed) fits.
- Updates for non-diffractive photoproduction with externally provided photon flux, to fix the normalization and to solve issue with process initialization when using a heavy-ion specific flux.
- Updated remnant kinematics for 2 →1 processes with direct photons from leptons.
- A Docker container for PYTHIA 8 and DIRE can be obtained from http://dire.gitlab.io/Docker/. You will there also find some Jupyter notebooks and notes e.g. how to use Rivet analyses.
- An example, main93, is added, which provides an updated ROOT interface, as well as options to run RIVET and output HepMC files, all steered from run cards and the command line.
- Updated `main89.cc` to allow use also without employing matching or merging. This allows to use this main program as an option to read from LHE file input and write HepMC file output. Furthermore, `main89.cc` has been updated to also allow Pythia to guess the hard process used for merging through the `Merging:process = guess` setting. More details can be found in the discussion of merging and hard process definitions under CKKW-L Merging in the manual.
- A new class `HistPlot` is introduced to generate PDF plots from the histograms of the `Hist` class. More specifically, the histogram contents are written on files and Python code is generated that contains appropriate Matplotlib/Pyplot commands, that can then be run to produce the plots. The `main03.cc`, `main07.cc` and `main51.cc` programs have been modified to illustrate the new setup. Histograms can now also be booked with a logarithmic x scale. Thanks to Johannes Bellm.
- New simple facility introduced in `PythiaStdlib` for integrating a function by Gaussian quadrature or findig its roots. In part lifted out from `SusyWidhtFunctions`.
- When a particle is read in by the SLHA interface, the minimal and maximal allowed masses for the Breit-Wigner distribution can be set by the user but, if not, the maximal deviation from the nominal mass is now set to be the smaller of five times the width and half the mass.
- A bug was found in `PhaseSpace2to2diffractive::trialKin` whereby `s3` and `s4` were not correctly reset for the non-default case of `Beams:allowMomentumSpread = on`. It led to non-thread-safe execution. Thanks to Dominik Mueller. This bug is not fixed per se, since the diffractive phase space machinery was rewritten anyway, so that the same issue never arises.
- A bug was fixed in the Hidden Valley model to allow copies of the hidden valley quark to properly shower and hadronize.
- A bug fix in the q g → Leptoquark l process, whereby the role of tHat and uHat was incorrectly swapped. Thanks to Yiming Zhong and Martin Schmaltz.
- A bug fix in the q g → onium q processes in the MPI machinery, whereby it was not correctly symmetrized. Thanks to Steffen Webber.
- Minor updates for the print format in MPI initialization.
- Corrected issue in timelike and spacelike showers that meant that the inclusive cross section was changed slightly when enabling shower variation.
- Ensure that all matrix-element corrections in timelike showers are switched off when that option is set.
- Fixed beam-remnant kinematics of scattered leptons when using `PDF:lepton=on` with lepton beams.
- Bug fix in the Alpgen interface for parton shower matching of non-QCD partons. Previously the matching would hang when encountering a resonance.
- A modification in the strategy to get or set particle data saves having to search a map twice. New methods introduced to return an iterator of an entry to the map as part of this.
- New method `PartonSystems::popBackOut(iSys)` helps to remove the most recently added outgoing parton of a given parton system.
- Handling of multiple PDFs via the LHAPDF6 interface is rewritten for more flexibility. For instance, not all members of a set are loaded unless uncertainty variation studies need them. A destructor problem is also solved for the case that a Pythia object is made global. Thanks to Florian Herrmann.
- Fix for PDF setup when second incoming hadron is a pion or other meson.
- Les Houches events with incoming top quarks are skipped, since the ISR and beam-remnant machineries are not set up to handle top.
- `partonSystems` vector cleared in beginning of `Pythia::forceTimeShower`.
- Modification in the parsing of a `wvec`, to avoid the removal of the first `=` sign in the first entry.
- Updated `examples/Makefile` to address recent problem that libz is not properly linked if the GZIP flags do not appear at the end of the compile command, experienced with recent gcc versions on Ubuntu.
- Fix typo in `bin/pythia8-config`.
- Remove obsolete `--with-lhapdf6-plugin` option in the `configure` script. Thanks to James Monk.
- Minor per-nucleon mass update in `main70.cc`.
- Minor fix to avoid division by zero in resonance mass selection.
- New xml tags introduced to group parameters visually in conversion to html, by omitting the paragraph break before a tag that contains ``, e.g. `parm`.
- Year has been updated to 2018.

### 8.230: 6 October 2017

- Christian Bierlich joins as co-author. Philip Ilten has new affiliation.
- New dipole-shower option for initial-state radiation contributed by Baptiste Cabouat, see `SpaceShower:dipoleRecoil`. More specifically, a unified description of initial-final and final-initial dipole ends is introduced, as described in [Cab17]. This allows a description of showers in Deeply Inelastic Scattering, illustrated by `main36.cc`.
- A new Heavy Ions machinery has been added, that allows PYTHIA to generate pA and AA collisions within a simple model. This entails significant additions to the PYTHIA code, and some changes. Some of the key points are:
  - A new `HeavyIons` base class is introduced, which exists inside `Pythia` but itself can contain several `Pythia` instances to handle different subcollision types.
  - A new derived class `Angantyr` provides the default heavy-ion description. It is inspired by the old `Fritiof` model [And86] with recent improvements [Bie16a].
  - A number of utilities that are used by `Angantyr`, but could also be used by an external Heavy ion generator, such as the nucleon distribution inside a nucleus.
  - Particle data have been introduced for a few heavy ions, notably 208Pb, code 1000822080.
  - A new `PomHISASD` pomeron PDF that is actually a rescaled copy of the default proton PDF. New code inserted to keep track of pomeron momentum fractions for such rescaling.
  - The new capabilities are illustrated in `main111.cc`, `main112.cc` and `main113.cc`, for pp, pPb and PbPb collisions, respectively.
- New Rope Hadronization framework made available. This introduces the possibility to enable string shoving as described in [Bie16b] and flavour ropes as described in [Bie14]. Both models attempt to model collective effects at a microscopic level, with inspiration from lattice QCD and the dual superconductor picture. These methods are still being actively developed, and users should expect changes in coming versions of Pythia. User feedback is encouraged.
- New framework for setting partonic production vertices in MPI, FSR and ISR, see further here. Still at a primitive stage, and currenly only used for the rope hadronization framework. It replaces a previous setup with UserHooks. The `main65.cc` example has been removed.
- New search function introduced in the `html` documentation. You can type a word or phrase in the new "Search" box near the top of the left-hand index field, and immediately get up a list of links to places where it occurs.
- New processes for 3S1 charmonium or bottomonium production in association with a photon, accessible through the new switches `Charmonium:gg2ccbar(3S1)[3S1(1)]gm` and `Bottomonium:gg2ccbar(3S1)[3S1(1)]gm`.
- In `configure` the plugin option for LHAPDF6 is removed, such that now LHAPDF5 uses LHAPDF5.h and LHAPDF6 always uses LHAPDF6.h. Previously LHAPDF6 used the LHAPDF5.h Fortran wrapper by default. Since LHAPDF 6.2 no longer requires BOOST this dependency has been removed. People using earlier LHAPDF versions must now explicitly enable BOOST. The "-std=c++98" flag has been removed to simplify compilation together with programs using later C++ standards. An "--enable-optdebug" alternative has been added for debug with optimization allowed.
- `Makefile` is updated to handle the removal of the LHAPDF plugin option, slightly improved for better compatibility across platforms, and an old shared library will be removed also when a compilation only generates a new static library.
- Fix up the extrapolation procedure of external PDFs, notably the ones accessed by the LHAPDF5 interface (previously also available for LHAPDF6). PDFs are now explicitly frozen at borders, except that `PDF:extrapolate` can be switched on to allow extrapolation to low x. Note that, as a consequence, results can change if you have used external PDFs for the MPI description. The native LHAPDF6 interface already froze at borders, but now optionally allows low-x extrapolation. Thanks to Radek Zlebcik.
- Implementation of nuclear PDFs for hard processes. See `PDF Selection` for details.
- A new proton PDF added, which sets out to combine a NNLO behaviour at high x values with a sensible LO low-x one, see `PDF Selection` for details.
- The `main51.cc`, `main52.cc` and `main53.cc` PDF examples have been modified to use LHAPDF6 by default rather than LHAPDF5.
- A new method to provide an external photon flux to study photoproduction with different fluxes. Still optimized for lepton beams, but also other fluxes can be studied. See new sample main program `main70.cc` for examples.
- The machinery for Automated Shower Variations has been extended to also take into account the PDF variations inside a PDF family, using the LHAPDF6 machinery for this. It is now also possible to stop variation uncertainty evaluation below some scale, so as to better correlate the event weighting with the harder part of the event evolution. The new `main121.cc` example illustrates how to set up the variations.
- The MixMax random number generator [Sav15,Sav16] is made available as a plugin distributed with PYTHIA, in the new `include/Pythia8Plugin/MixMax.h` file, see the Random Numbers description. Some minor modifications are needed for linking, see `examples/Makefile` and the `main23.cc` example. The latter has been updated to include a comparison of execution time between the default and the MixMax generator.
- Improved junction colour tracing to fix some problems e.g. in processes with Baryon Number Violation (BNV). Specifically, it is ensured that in- and out-colours are labelled differently for a particle with a BNV vertex both in production and at decay, to avoid colour lines being shortcut. Further examples have been added to `main25.lhe`. Thanks to A. Monteyx, M. Buckley and F. Jimenez.
- Further processes have been added for Dark Matter production, either by a scalar or by a vector s-channel mediator, see the Dark Matter Processes description. Also a new `main75.cc` example.
- Fix minor (order 5%) normalization error of the impact-parameter enhancement factor for two preselected hard processes in the MPI framework, see `Info::enhanceMPIavg()`. Thanks to Jonathan Gaunt.
- Minor fix in `pythia8-config` to solve some parsing issues. Thanks to Gavin Salam, Dmitry Konstantinov and Emanuel Hoogeveen.
- Fix typo in reweighting machinery in `SpaceShower.cc`.
- Several minor fixes to protect from rare occasions of division by zero. Thanks to Steffen Weber.
- New option in the single-particle gun in `main21.cc`, to allow the input particle have a lifetime and thus decay some distance away from the origin. Thanks to Graham W. Wilson.
- Maximal number of histogram bins increased to 10000 and a warning is printed if this limit is exceeded. Thanks to Roberto Franceschini.
- Ensure that the "thermal string fragmentation" is not inadvertently used for Hidden Valley fragmentation.
- Correct so that the `TimeShower:MEafterFirst` option takes effect in g → q qbar branchings. Does not change the default behaviour. Thanks to Keith Hamilton.
- New particle methods `y( double mCut)` and `y(double mCut, RotBstMatrix& M)` to calculate rapidity assuming a minimum mass, and optionally after a rotation/boost operation.
- A minor bug fix to set up correctly the internal indices for the initiators from emitted photons. Thanks to Aaron Angerami.
- A new interface simplifying the usage of `Rivet` is found in `include/Pythia8Plugins/Pythia8Rivet.h` and its usage illustrated in the `main111.cc` example, see here.
- A new utility to keep track of progress and time remaining in a run, see `include/Pythia8Plugins/ProgressLog.h`, and an example in `main111.cc`.
- New method `RotBstMatrix::value(int i, int j)` returns the value stored in the (i,j) element of the matrix.
- Dummy class added in `Streams.h` and `.cc` to avoid harmless warning message.
- One more digit for PDG identity codes in event listings, at the expense of a shorter separation to the particle name.
- The bibliography now comes with anchor points for each article, and is directed to these from the text references.
- PYTHIA author list rearranged alphabetically.
- Several minor updates and improvements of the documentation.

### 8.226: 26 April 2017

- Implementation of gamma-hadron collisions and photoproduction in lepton-hadron ones. Section Photon-photon Interactions renamed to Photoproduction to cover also gamma-hadron documentation. Modified `GammaKinematics` class to sample photon kinematics also with one photon. Added case gamma-hadron to `SigmaTotal`.
- Automatic mixing of resolved and unresolved photon-photon interactions. Implemented by introducing resolved and unresolved PDF pointers for a `BeamParticle`, and calling the relevant one once the process has been selected. In case of one direct photon the correct number of photon-initiated processes (`PhotonParton`) is set by `ProcessContainer`. A new method `Info::photonMode()` to output the type of the process. Updated sample program `main69.cc`.
- Check if there is room left for photon-beam remnants also in case of softQCD processes. Very rarely fails.
- A new partonic subprocess q gamma → q gamma, mainly to study photon production in lepton → gamma - hadron collisions.
- Modified kinematics methods for DIS and photoproduction physics, to take beam particle masses into account where important. For DIS, e.g., the incoming lepton is kept massive, which leads to slight changes only visible at very low energies.
- Redesigned the merging machinery to allow users to define their own ME+PS merging plugin, which can then be used by Pythia. This change does not affect the physics of Pythia's internal merging schemes. For further details see the new section on "Implementing an external ME+PS combination scheme and interfacing this plugin with Pythia" on the Matching and Merging page.
- Added some new (optional) virtual functions to the timelike and spacelike showers, to ease ME+PS merging with shower plugin codes. The change does not impair the compatibility of existing shower plugin codes. See the description on how to Implement New Showers, the new methods `allowedSplitting(...)` and `getRecoilers(...)`, and the modified `getSplittingName(...)` ones.
- New method `Pythia::addUserHooksPtr(...)` allows the simultaneous use of several User Hooks. When several hooks are applicable for a given task the net effect is multiplicative, in weights or in veto survival. It is up to the user to ensure that such combinations are the intended ones.
- New User Hooks added to set the space-time vertices for the ISR, FSR and MPI evolution process. New `main65.cc` example illustrates how to set it up. Thanks to Christian Bierlich.
- Bug fix in the user hooks machinery for setting fragmentation parameters, and an extension of this framework also to junction topologies.
- Four central members from the NNPDF 3.1 sets are made available, as `PDF:pSet` (and equivalent) codes 17 - 20: the LO ones with alpha_s = 0.130 and 0.118, and the NLO and NNLO ones with the latter alpha_s. Note that these are rather different from the default NNPDF 2.3 ones; in particular the small-x behaviour is completely changed. Therefore MPI cross sections are appreciably modified for current parameter values, and retunes will be necessary before using NNPDF 3.1 in production. Thanks to Juan Rojo.
- Construct pi^+- PDFs so that dbar = u and d = ubar, shortcutting the returned d, dbar values since these are not always constructed correctly in LHAPDF. Thanks to Vincent Andrieux.
- Upgrade from fjcore version 3.0.5 to 3.2.1. This removes the usage of the deprecated `std::auto_ptr` C++ feature. Thanks to Ivan Razumov.
- Fix a number of harmless but annoying warnings issued in some versions of GCC 6.x, where the `-Wmisleading-indentation` flag appears to be on by default. Thanks to Ivan Razumov.
- Bug fix the calculation of enhancement factor for the machinery with two hard processes. By mistake statistics was added once with the correct value for each event (accessible with `Info::enhanceMPI()`), and once with unity, leading to a dilution of the effect. The average enhancement factor is now also calculated at initialization, see `Info::enhanceMPIavg()` and `Info::enhanceMPIoldavg()`.
- Bug fix in `SusyLesHouches.cc`, in which the unitary checks of SLHA mixing matrices previously ignored imaginary components, leading to failures when reading in spectra with explicit CP violation. Thanks to M. Noormandipur for pointing to this bug. Mixing-matrix output simultaneously updated so that the magnitudes, rather than the real parts, of mixing-matrix elements are printed.
- A new approach has been introduced to force settings values outside their allowed range, either by using the keyword `FORCE` after the key (= parameter name) in an `readString()` or `readFile()` command line, or by using a new optional third argument `force = true` (which is `false` by default) in the `Settings` methods used to change values. The latter methods also will add a new key to the database if not already there when `force = true` is set. The old special `force` methods are now redundant and will be removed in the next major release.
- New methods `Settings::getReadHistory` and `ParticleData::getReadHistory` return a vector with all strings that have been read in by the `Settings::readString()` and `ParticleData::readString()` methods, respectively, and thereby also the information set by the `Pythia::readString()` and `Pythia::readFile()` commands.
- Introduce possibility to make phase space cuts on the DIS Q^2 variable.
- Add options to use the DIS Q^2 variable as factorization and/or renormalization scale.
- Introduce some freedom to modify the default shape of the low-mass part of diffractive cross sections, and thereby also the integrated value.
- The new `LHAupHelaconia` class in `include/Pythia8Plugins/LHAHelaconia.h` provides an interface to the HelacOnia [Sha15] package for onium production, see further the new HelacOnia Processes page. The new `main35.cc` example shows how to use the interface, and how to compare with corresponding internal Pythia results.
- Modified `configure` and `Makefile`s fixes an issue with linking shared libraries on a Mac, and automatizes the selection of whether to link static or shared libraries to the example main programs.
- Two new `Vec4` methods introduced: `cross4` for cross product of three four-vectors, and `getTwoPerpendicular` to create to four-vectors perpendicular to two given ones.
- New `main74.cc` illustrates how the modified Mass Drop Tagger code in FastJet can be used to improve mass reconstruction of a resonance.
- When using the `PhaseSpace:bias2Selection` to reweight high-pT events the `PhaseSpace:pTHatMinDiverge` value is now used as ultimate fail-safe to avoid pT = 0.
- Bug fix in the `TimeShower::findMEtype(...)` for a few rare cases.
- Bug fixes for the squark-gluino and gluino-chargino processes. The charge-conjugate processes were not handled correctly, since the PDF factors are different, and have now been separated.
- Minor addition to `Streams.cc` includes to avoid problems on one platform. Thanks to Joshua Ellis.
- Bug fix in `HVStringFlav`, which otherwise left some Hidden Valley particles massless. Thanks to Colleen Treado.
- A few minor fixes when Dark Matter is used as incoming beams in Les Houches input. Thanks to Roberto Ruiz.
- Minor bug fix where the process container for resonance decays (only) from LHE input is not initialized. This can lead to the problem where particle input without lifetimes are not corrected, even when the `LesHouches:setLifetime` mode is non-zero.
- Bug fix in LED/Unparticle + Z^0 production: correct cross section for allowed Z^0 decay channels. Thanks to Andreas Albert.
- Fixed memory leak in `TimeShower`, for the case when the ProcessLevel is off. Thanks to Ryosuke Sato.
- Fix that the MPI machinery did not work for the (infrequently used) `MultipartonInteractions:bProfile = 0` option.
- Minor division-by-zero bug fix in statistics calculation and harmless uninitialized `bool`s in `CoupSUSY`. Thanks to Vittorio Zecca.
- Minor numerical precision improvements in gamma-gamma kinematics and in tHat and uHat construction.

### 8.223: 5 January 2017

- Nadine Fischer and Leif Lönnblad join as co-authors, while Jesper Roy Christiansen leaves. Nishista Desai, Ilkka Helenius and Stefan Prestel have new affiliations.
- The machinery for resolved γγ collisions has been extended, such that now soft processes and MPIs can be simulated, also when embedded in l^+l^- collisions. (But not yet diffraction.) Also some further improvements have been introduced, see the Photon-photon Interactions description. This implies several changes in different parts of the code, mainly related to beam remnants and beam particles.
- Also direct-resolved and direct-direct processes are included for γγ interactions, with photon beams and within lepton beams. This involves new subprocesses where one initiator is a photon and the other a parton. A new sample main program (`main69.cc`) illustrates how the different classes of γγ interactions are combined.
- The kinematics of γγ have been revised to include all mass corrections and to handle also non-equal leptons. A new class `GammaKinematics` is introduced to handle the sampling of the kinematics. A fix for the `ProcessLevel::roomForRemnants()` function, which rejected a bit too many processes when photon-photon collisions were generated within lepton beams.
- New cuts for the kinematics of γγ interactions in l^+l^- collisions are introduced, for details see Photon-photon Interactions. Matching new kinematics output methods, see Event Information.
- A PDF for point-like photon is included. In case of lepton PDFs, the photon contribution has now restricted virtuality and also more accurate lower limit for the virtuality. A new option to use separate PDFs for hard processes, with photon PDFs obtained from LHAPDF5. CJKL PDFs are modified so that, instead of freezing the scale below its minimum, the scale evolution is approximated with log(Q^2).
- A new alternative "thermal hadronization" option is introduced, wherein an exponential exp(-pT / T) hadronic transverse momentum spectrum replaces the default Gaussian one, with a "temperature" T as free parameter. Given this pT, the next hadron (consistent with local flavour conservation) is picked among the possibilities with an exp(-mT / T) weight. This option is accessed with `StringPT:thermalModel = on`. See further the Fragmentation and Flavour Selection descriptions and the article [Fis16].
- A new option `StringPT:closePacking = on` allows to enhance the pT width in regions where there is a high density of partly overlapping strings. This works both for the default Gaussian and the alternative exponential (see above) pT description; in the latter case it will also enhance the rate of heavier-particle production. See further the Fragmentation description and the article [Fis16].
- A new simple model for hadronic rescattering is introduced, with two variants, as described in [Fis16]. A new master switch `HadronLevel:HadronScatter`, by default off, and `HadronScatter:mode` to pick among them and the old one. See the Hadron Scattering page for further details and parameters. New status codes 111 and 112 introduced for rescattered hadrons.
- A first process for Dark Matter production, for the pair production of new Dirac DM particles through an s-channel vector-like mediator.
- New mode `BeamRemnants:unresolvedHadron` can be used to let original hadron remain as beam remnant, e.g. for coherent emission of photons.
- New option with running coupling in Hidden Valley scenarios. Some other small fixes in it.
- Fixed a check in the construction of all shower histories for the merging, which meant that not all histories were produced for squarks+jets. Included rudimentary facilities to guess the process for merging.
- Added functionality to write Pythia events to a LHEF3-style string, e.g. for use in an external Pythia caller.
- Improved safety checks for the presence of LHE files.
- New status codes 49 and 59 introduced for ISR and FSR partons, respectively, to represent special states in the evolution where E^2 - p^2 = m^2 is not fulfilled.
- New behaviour of `Event::remove`, where mother and daughter indices now are updated by default.
- Fix in the setup of tunes with `SpaceShower:rapidityOrder = off`. The new (in 8.219) `SpaceShower:rapidityOrderMPI` then also ought to have been set off, but this was missed, giving small inconsistencies (around 2% reduction of the charged multiplicity). Thanks to James Monk.
- New method `string Hist::getTitle()` to get the title of a histogram, while `void Hist::title(string )` sets it. Thanks to Roberto Franceschini.
- Corrected behaviour for R-hadrons produced in sequential resonance decays (for example a squark decaying to a gluino with the latter forming an R-hadron). Thanks to Jinmian Li for alerting us.
- Minor updates so that `main91` and `main92` examples work also with ROOT 6, in addition to the existing ROOT 5 support. Thanks to Li Huang.
- Include correct mass suppression for excited fermion three-body decays F^* → F Fbar f, primarily for F = t. Thanks to Olya Igonkina and Oleg Zenin.
- Two new `Hist::rivetTable` methods allow histograms to be written on file in a format that Rivet understands.
- New particle data method `nQuarksInCode(int idQ)` counts how many copies of the requested quark code `idQ` that a quark, diquark, meson or baryon code contains.
- Bring the `FJcore` package inside the `Pythia8` namespace to avoid potential name clashes with user code. Thanks to Andy Buckley.
- Fixed `flat_namespace` issue for macOS. Thanks to Juergen Reuter.
- Ensure that bash shell is used in `Makefile`s. Thanks to Inga Strumke.
- New `#define PYTHIA_VERSION_INTEGER 82xx` in `Pythia.h` matches already existing `#define PYTHIA_VERSION 8.2xx`, for convenient matching using integers. Thanks to Andrii Verbytskyi.
- The handling of the `meMode` ranges 52 - 60 and 62 - 70 were incorrect, insofar as checks or not against duplication of existing channels go, and have now been set straight. Thanks to Christopher West.
- Minor bug fix in the `TimeShower` machinery to optionally enhance the rate of some shower branchings.
- A minor fix for `BeamParticle::popBack()` method to reset companion choice also if `iComp = 0`.
- Cleanup of unmatched xml tags and other xml inconsistencies.
- Two minor particle data fixes.
- Small fix in the parsing code of `LHEF3.h`.
- Year updated to 2017.
- Small clarifications in the documentation.

### 8.219: 10 May 2016

- An interface to the Python programming language has been introduced, see A Python Interface for details. Various minor changes in the C++ code have been done in order to permit the automatic generation of the interface.
- Included a new framework for automated parton-shower uncertainty bands. Variations of the QCD renormalisation scale for both initial- and final-state showers can now be computed by Pythia on the fly, and are provided as a list of alternative weights for each event, representing the probability that the given event would have occurred under different shower assumptions. So-called "nonsingular terms" can also be added to the splitting kernels to estimate the possible effect of missing matrix-element corrections. Full documentation is found on the Automated Shower Variations page, and a paper is due to appear on arXiv shortly.
- When a final-state g → g g branching happens with a massive recoiler, radiation in the recoiler direction is now by default further suppressed to respect the "dead cone" effect, see new switch `TimeShower:recoilDeadCone`. Further a new switch, `TimeShower:MEextended`, on by defaults, attempts to guess the most relevant ME correction when the correct choice is not known or implemented. Thanks to Jesse Thaler, Michele Selvaggi and Fabio Maltoni.
- The gamma-gamma hard-process machinery has been extended to convolute the partonic PDFs in a photon with the flux of photons inside a lepton. The description is intended for the region of quasireal photons, but full kinematics is implemented.
- New constructors that take streams rather than files as input. Thus the contents of a file can be read and then broadcast to multiple instances of Pythia, eliminating the inefficiency of multiple jobs reading from the same initialization files. This facilitates running with MPIs (Message Process Interfaces). Affected areas are settings, particle data and PDF grids.
- Small additions and fixes to the LHEF3 framework, to keep track of weight keys, and improve parsing.
- A new class allows PDF data files in the lhagrid1 format, with some restrictions, to be read and used. This does not replace all that you can do with a complete LHAPDF6 installation, but at least permits some simple studies without LHAPDF6 + Boost. New example `main55.cc` illustrates this, and event properties for an intermediate spinless resonance in γ + γ → γ + γ at 750 GeV.
- Four Pomeron PDF sets from the ACTW study [Alv99] now implemented.
- The three Pomeron H1 Jets PDF data files have been joined to one.
- The external decays interface has been extended by a new method that allows sequential decays to be done in one call.
- Increased possibilities to set the epsilon and alpha' parameters of the Pomeron trajectory for hard-diffraction Pomeron fluxes.
- Extrapolation of PDFs to small x values when `PDF:extrapolate = on` now extended to cases.
- New flag `TimeShower:QEDshowerByOther` allows charged resonances, like the W^+-, to radiate photons.
- The jet matching algorithm in `JetMatching.h` has been extended to better handle heavy quarks, heavy colored particles (such as squarks) and "other" partons (coloured but produced from an Electroweak vertex).
- Added a new option `SpaceShower:rapidityOrderMPI`, which will enforce an ordering in rapidity for emissions off secondary scattering systems. This will be enabled by default, ensuring backwards compatibility. The old `SpaceShower:rapidityOrder` now only refers to the hard(est) subprocess.
- Changes to the cross section handling in the presence of user vetoes/weights, containing three changes:
  1. Counter of selected event `pythia.info.nSelected()` is now updated immediately after the hard process generation.
  2. More fine-grained input settings to enforce that Pythia generates (or reads) exactly a fixed number of hard process events.
  3. The Pythia "internal cross section" `pythia.info.sigmaGen()` and the event weight `pythia.info.weight()` now directly include the effect of event vetoes and event reweighting that are applied by the leading-order ME+PS merging prescriptions.
- Changes to the merging classes to allow for a postponed CKKW-L event veto. (See end of CKKW-L Merging page for details.)
- Small changes to virtual parton shower functions, and to the merging classes, to prepare ME+PS merging with the Vincia parton shower.
- The HepMC interface has been modified such that the detection of unhadronized quarks or gluons leads to an exception being thrown, so that the user can decide what action to take. See further new/renamed `free_parton_exception` switch. The usage of exceptions for this specific task is by request from ATLAS, and does not represent a general change of programming style. Thanks to James Monk.
- A class `WVec` has been introduced to store vectors of strings. The delimiters { } are introduced to provide input with embedded blanks, and broken up across several lines. See further the Settings Scheme description.
- The `Settings::toLower` method used to convert a string to lowercase, and also trim it from initial or trailing blanks and special characters, now moved to `PythiaStdlib.h` so it can be used generally. Other code changes accordingly.
- Remove many rarely (if ever) used `ostream& os = cout` optional arguments in favour of hardcoded `cout` in the code. Eliminates some redundancy of methods.
- Rename `...print(...` methods to `...list(...` to favour a regular naming pattern.
- Minor `configure` and `Makefile` updates, to address potential linking problems on some platforms for boost, gzip and promc. Thanks to Dmitri Konstantinov.
- New `--config` option of `pythia8-config` echoes the arguments passed to `configure`.
- The description of `POWHEG:vetoCount = 0` has been corrected. Thanks to Florian Koenig.
- Allow for lightest neutralino not to decay as a resonance.
- Do not switch off the Breit-Wigner width treatment of a resonance as easily as previously, but only if the width is below 1e-6 GeV.
- Make some `SlowJet` methods virtual to allow derived classes with modified properties.
- Moved some misplaced info on parton-level choice of MPIs.
- Corrected typos where some bottomonium long-distance matrix element had been set larger than normally assumed.
- Fixed typo potentially giving incorrect colour flow in resonance decays.
- Fixed an out-of-bounds array access in HelicityMatrixElements. Thanks to Vittorio Zecca.
- Fixes in `main80.cc` and `main89.cc`.
- Fixed problem with the SLHAinterface not being zeroed-out when using repeated subruns.
- Minor fix for beam particles, that no default was set as to whether they are gammas or not.
- Cleaned up error printout for the PDF classes.
- Change a few true/false to on/off in the documentation to make the php version of the manual recognize them.
- Some trivial code, manual and bibliography updates.

### 8.215: 4 January 2016

- Ilkka Helenius joins as new PYTHIA co-author.
- A new machinery for gamma-gamma collisions is now available, see Photon-photon Interactions. So far only hard processes can be generated, along with parton showers and hadronization, but without multiparton interactions. The CJKL parton distributions of the photon have been implemented and are used.
- Double production of charmonium and bottomonium 3S1 states is now available, but with only the colour-singlet processes included, see Onia Processes for details.
- Weak merging implemented, i.e. W gauge bosons can be produced either as part of the hard matrix element or in the parton shower, and a proper treatment merges these two possibilities consistently. See the CKKW-L page for details.
- Running alpha_em in merging description.
- Improved interface to external parton showers, such as VINCIA and DIRE, so that these now also can use the various matching and merging frameworks implemented in Pythia.
- New options in the jet matching framework, such that expert users can use their own veto code for Madgraph-style jet matching.
- New convenient possibility to run Madgraph5_aMC@NLO from within Pythia, by wrapping the Madgraph5_aMC@NLO executable inside a new `LHAupMadgraph` class that derives from the Pythia `LHAup` base class. See MadGraph5 Processes for a brief overview, and `examples/main34.cc` for an example how to use it. Still at an experimental stage, and only tested for Madgraph5_aMC@NLO v2.3.3.
- By default the program will now assign the PYTHIA mass for massless c and b quarks in Les Houches input, see `LesHouches:setQuarkMass`. Usually a logical recoiler is found that can transfer the needed four-momentum to the quark. The already existing machinery for giving masses to massless leptons has been expanded to use the more sophisticated algorithm now in place.
- Significant bug found in timelike and spacelike showers, whereby the azimuthal anisotropy from gluon polarization in the past has been overestimated. This does not affect multijet rates, but can influence distributions sensitive to angular correlations, although checks have not revealed any appreciable effects. New switches `TimeShower:phiPolAsymHard` and `SpaceShower:phiPolAsymHard` regulate whether the first branching after/before the hard process can correlate with the hard-process event plane. Thanks to Radek Zlebcik.
- Some further new options and minor additions in the machinery for hard diffraction. This includes three options for setting the impact parameter for the Pomeron p subcollision, a possibility to access both it and the impact parameter both for the original p p, and options to rescale the Pomeron flux, including one that uses the MBR renormalization. Some default values changed, notably that now MPI is checked.
- A new constructor for the `Pythia` class takes references to a `Settings` and a `ParticleData` object as inputs. In cases where multiple `Pythia` copies are created this allows the `xmldoc` files to be read only once. Updated `examples/main19.cc` illustrates.
- New method `Particle::daughterListRecursive()` that uses the `daughterList()` method to trace consecutive generations of decay products.
- New `Vec4` friend method `pShift(...)` to transfer four-momentum between two four-vectors so as to bring them to have specified new masses.
- New particle method `intPol()` returns the polarization as an integer if the stored double-precision number is very close to 0, +-1, +-2 or 9, and else -9.
- Initialize the random number generator earlier, so a non-default seed choice also could benefit early external initialization making use of it.
- Minor fix in interface to zlib.
- Changed default setting in `main89mlm.cmnd`, to better agree with common practice.
- Minor improvements and fixes in the weighting facilities for initial- and final-state showers.
- Minor update in the beam-remnant handling for DIS.
- Minor improvements in the handling of resonance mass selection.
- The GetDJR function of the `JetMatchingMadgraph` class has been renamed `getDJR` to adhere to standard naming conventions. A pointer in the same class is explicitly nulled.
- Bug fix in the selection of masses in resonance decays. In rare situations this could give wrong masses for particles. Thanks to Are Raklev and Anders Kvellestad.
- The `StringFlav::combine( int, int bool)` method is renamed `combineId` to avoid a potential incorrect method overloading. Thanks to James Monk.
- Bug fix: copy vertex information when a long-lived particle decays to three quarks (typically with baryon number violation), whereof two have such a small invariant mass that they collapse to a diquark. Thanks to Cristiano Alpigiani.
- Bug fix for excited quarks q^* and leptons l^*, that if new decay channels were introduced they could incorrectly make use of the matrix element expressions for the existing decay modes. Thanks to Simone Amoroso.
- Bug fix in the kinematics of four or more resonance decay products when kinematics is redone owing to matrix-element corrections. Thanks to Simone Amoroso.
- Changed off-shell behaviour for squark pair production.
- Minor fix for random number start-up in the PowhegBox interface, and inserted warning that using LHAPDF5 in both Pythia and PowhegBox can be dangerous.
- Correct two misspelt endtags for LHEF3 output from Pythia. Minor technical changes in the LHEF3 machinery.
- Bug fix for information on the pdf value chosen for the hardest MPI, which was reported a factor 9/4 too large for an incoming gluon. Does not affect the event generation itself.
- Correct `BeamRemnants:primordialKThard` from 2.0 to 1.71 for ATLAS tune AZ. Thanks to Christian Bauer.
- Introduce protection against (close-to-)zero-energy partons in string length calculations, and against topologies with extremely small angles between two junction legs. Thanks to Jan Fiete Grosse-Oetringhaus.
- Check by trial whether a given LHAPDF5 set contains photons or not, therey avoiding explicit enumeration of such sets.
- When the ARCH environment variable does not have a valid value it is set to LINUX in configure. Thanks to Alessandro Degano.
- Make the BOOST include directory available when the LHAPDF6 plugin is used.
- Minor corrections for the LHAPDF6 description in README. Thanks to Radek Zlebcik.
- Fix harmless name overloading in `ProcessContainer.cc`.
- Updated address for Philip Ilten.
- A few bibliography updates.
- Year updated to 2016.

### 8.212: 23 September 2015

- Included new weighting facilities in initial- and final-state showers. This allows to consistently enhance rare shower branchings without impairing the no-emission probabilities, see User Hooks. A new `main63.cc`, together with `main63.cmnd`, illustrates this feature.
- Added new functionality to time- and spacelike showers to streamline merging with external shower plugins, see Implement New Showers.
- New possibility to access hadronization parameters in each step of the hadronization process, and to veto individual hadrons, see User Hooks. Thanks to Christian Bierlich.
- The EvtGen interface has been expanded with the possibility to force a rare decay of some of the particle species handled by EvtGen, with an event weight compensating for this bias. New status codes 95 or 96 single out particles from a forced decay, without or with oscillation. Documentation has been expanded.
- New option `MultipartonInteractions:pTmaxMatch = 3` introduced to allow better matching for multiparton final states. Thanks to Paolo Gunnellini.
- Added possibility to write Les Houches Event Files abiding to the latest (v. 3) standard,see Les Houches Accord. The new `main64.cc` illustrates how to use the LHEF3 writer.
- Fixes in the merging machinery, related to the scales associated with final-state splittings with an initial-state recoiler. The evolution scales and energy sharing values associated with this configuration were not calculated correctly, as an incorrect recoiler momentum was used, leading to a numerical small deviation from the actual result. This issue has now been corrected. Some additional matching and merging changes, mostly to make the reclustering in the merging numerically stable, and to make UN2LOPS possible.
- Fix bug for the `Beams:newLHEFsameInit = on` option, whereby several LHE files can be read in without new initialization for each. When the gzip support was improved in 8.209 the filenames were no longer reset properly, and so no files beyond the first one were read. Thanks to Roberto Franceschini.
- Bug fix in the junction handling for the case of gluinos.
- Avoid segmentation fault for some rare junction topologies. Thanks to Gabriel Magill.
- Minor fix for the path to the PowhegBox plugin, as used in the `Makefile`.
- Minor fix for the `configure` script, for the case of building a shared library on Mac OS X. Thanks to Mikhail Kirsanov.
- Several minor changes in the hard diffractive machinery.
- PDG codes 51 - 60 have been reserved for Dark Matter (DM) particles. 51, 52 and 53 are intended for spin 0, 1/2 and 1 stable DM particles, respectively. 54 and 55 are for spin 0 and 1 unstable mediators of s-channel DM pair creation or annihilation. The rest can be used freely, say in models with several DM particles. Masses should be set appropriately. Particles 54 and 55 come equipped with a fictitious mix of potential decay modes, to be modified according to the specific model. By default all have separate antiparticles, with negative codes. These can be removed by setting the antiparticle name to be "void". The `ParticleData::antiName(...)` method has been fixed to accept this, just like `ParticleData::names(...)` already did.
- Several processes have been set up with wrong process codes, and are now fixed. The corrections are 4003 → 4203, 4004 → 4204, 4005 → 4205, 961 → 1061, 3124 → 3123, 3126 → 3124, 3144 → 3143, and 3146 → 3144.
- For tau decay spin correlations the f fbar → V → f fbar matrix element, V = gamma/Z^0 or W^+-, is now only used when the incoming fermion pair has no other daughters. Else the simpler V → f fbar matrix element is used.
- Minor technical changes, to allow for external pT-unordered parton showers. No effect for the internal showers.
- The SLHA reading operation has become significantly less verbose: where previously identical warning messages could be issued for many particle codes, now these codes are collected into a single list that is written once.
- Bug fix in the input of SLHA decay tables. Previously, the first DECAY entry could be ignored under certain conditions, so that the internal SUSY machinery was used to calculate decay properties. This was the case, in particular, when internal SUSY processes were invoked to generate events.
- Minor correction in the cross section for f fbar → G* for extra-dimensional processes.
- `main85.cc` has been updated so it can handle weighted events.
- `main89mlm.cmnd` contained misleading instructions which are now changed.
- Protect against rare but disastrous negative mass-squared by numerical roundoff in string fragmentation.
- Introduce protection against numerical instability of companion quark distribution in x → 1 limit.
- Use the `PythiaStdlib.h` header rather than accessing Stdlib directly in `SusyLesHouches.h`.
- Output to `cerr` replaced by ditto to `cout`. Excepted is the examples main programs, where it serves a pedagogical function, while a separate `cerr` is less relevant for big batch runs. (`Also FJcore` code is excepted).
- Give final-state showers used for decays access to the beams; not needed for PYTHIA itself but for some plugin showers.
- Fix minor typo in `README`, in instruction for enabling 64 bit compilation.
- Insert two missing `std::` in `Pythia8Plugins/GeneratorInputs.h`.
- Minor update in histogram overflow handling.
- Add to the documentation that `TimeShower:weightGluonToQuark = 1` is required for consistent aMC@NLO merging.
- Clarify documentation on which particles are stable by default.

### 8.210: 29 June 2015

- Bug fix in CKKW-L merging for LHE files, such that the factorization and renormalization scales are set by the `SCALUP` value if the `muf2` and `mur2` LHEF3 attributes have not been set, and the user has not set any explicit values. This change restores the PYTHIA 8.1 behaviour.
- Various technical improvements in the machinery for hard diffraction.
- Correct quark flavour selection when a string spanned directly between two junctions is split up.
- Check that SK-I and SK-II colour reconnection machineries only are called for event topologies they are set up to handle.
- Bug fixes in partial widths of the W' boson. Results are correct when the W' is a simply rescaled copy of the W, but not for general couplings. Thanks to Mihail Chizhov.
- Minor fix in default location of PDF data files in the constructors. No practical consequence since correct non-default values are used.
- Tiny fix in the `configure` script, so that CXX options containing an equal sign are parsed correctly.

### 8.209: 25 May 2015

- The "An Introduction to PYTHIA 8.2", arXiv:1410.3012 [hep-ph], has now been published in Comput. Phys.Commun. 191 (2015) 159.
- The new QCD-based colour reconnection machinery has been expanded with checks whether reconnecting dipoles are causally connected. This cannot be defined exactly, and therefore several different options are available. Also some other minor changes in this part of the code, including updates of parameter default values.
- New options for `ColourReconnection:flipMode` allows to sidestep the gluon-move handling but still retain the final flip step.
- New `ColourReconnection:forceResonance` switch allows an additional colour reconnection step after late resonance decays. This is especially relevant for H^0 → W^+ W^- / Z^0 Z^0 → q_1 qbar_2 q_3 qbar_4, since the Higgs is so long-lived that its decay is well separated from the rest of the event.
- The old SK I and SK II colour reconnection models are now available. These are specially aimed at the processes e^+ e^- → W^+ W^- / Z^0 Z^0, but are also relevant for H^0 → W^+ W^- / Z^0 Z^0.
- Colour reconnection also made possible, optionally, for the `forceHadronLevel` method.
- A new switch `POWHEG:QEDveto` has been introduced to steer the treatment of non-QCD radiation in the POWHEG implementation of `include/Pythia8Plugins/PowhegHooks.h`.
- The need to link to the Boost library to read gzipped files has been eliminated by including iostream classes wrapping the zlib compression library, see new files `Streams.h` and `Streams.cc`.
- Linkage to LHAPDF6 so far has been based on the LHAPDF5 compatibility mode, which requires no Boost headers. The new configure option `--with-lhapdf6-plugin=LHAPDF6.h` uses native mode, and then requires Boost headers.
- The LHAPDF6 PDF values are frozen at the respective x and Q^2 boundary if the (x, Q^2) pair falls outside the fit region.
- New functions to extract the fit boundaries, the current alpha_s value, and the quark masses from LHADPF6.
- New option in the HepMC interface, whereby PYTHIA particles can be appended to an existing HepMC event. Thanks to Mikhail Kirsanov.
- A new runtime interface to the POWHEGBOX matrix element programs, bypassing the need for intermediate LHE files. The new files `include/Pythia8Plugins/LHAPowheg.h` and `include/Pythia8Plugins/PowhegProcs.h` contain the LHAup class wrapper used to build the POWHEG plugin libraries and the simple class that facilitates loading the POWHEG plugins, respectively. The new `examples/main33.cc` demonstrates how to use these plugins, and `examples/main33.cmnd` contains the commands needed for POWHEGBOX to run the example.
- When reading in particle data from the SLHA interface, changes done by the user takes precedence over the SLHA input ones. To be more specific, particle data changes by the `Pythia::readString` and `readFile` methods are buffered and repeated after the SLHA initialization.
- New `#define PYTHIA_VERSION 8.2xx` in `Pythia.h` allows user-code preprecessors to make version-specific choices, and allows the `Pythia` class constructor to check that the header-file version number matches those of the source code and the XML files. Thanks to Pere Mato.
- User-defined semi-internal processes can now be accompanied by user-defined phase-space generators, via a second optional argument to `Pythia::setSigmaPtr(SigmaProcess*, PhaseSpace* = 0)`. Default is the old behaviour, with PYTHIA selecting the phase-space generator itself, based on the process type. Alternatively, the user may provide a pointer to an instance of an object inheriting from the `PhaseSpace` class. Sufficiently well-tested and general such generators could be communicated to the PYTHIA authors for possible inclusion in a future release.
- Updated initialization of LHEF files in `LesHouches.cc` to ignore file contents enclosed in comment tags, `<!-- .. -->` and/or the special CDATA statement, `<![CDATA[ .. ]]>`. The latter occurs, e.g., in LHEF files produced by CalcHep. (It is generally used to store content that contains XML-illegal characters like "<" or "&", such as JavaScript source.) Thanks to A. Belyaev and A. Pukhov for help with this update.
- New flag `LesHouches:matchInOut`, by default on, to recalculate the energies and longitudinal momenta of the incoming particles from the outgoing ones for Les Houches input. Reduces effect of numerical inconsistencies in input.
- Updated EvtGen interface, to allow a pointer to an FSR engine to be passed. Thanks to Torben Ferber.
- Spin information for tau leptons now also set up for Z' and W' decays.
- New method`AlphaStrong::setThresholds(...)` allows to set the charm, bottom and top flavour-threshold masses used for the running of alpha_strong.
- New option for the `Event::list()` methods allows to show momenta with decimal digits.
- New `Particle::isFinalPartonLevel()` method to tell whether a particle belonged to the final state on the parton level of generation or not. New `main73.cc` example illustrates usefulness.
- The `[]` operator is implemented for the `Vec4` class to return its components by index.
- New method `string Settings::output(string key)` returns the value of a variable as a string. In `Pythia::readString()` or `readFile()` calls this can now be used to print a current setting value by the command `key = ?`.
- The role of the `pythia.forceTimeShower(...)` method is better explained in the hadron-level standalone documentation, and `main21.cc` has been extended with an example.
- The `TimeShower::enhancePTmax()` method is made virtual.
- The `iTopCopyId()` and `iBotCopyId()` methods now scan all mothers/daughters, rather than only the first and last, when searching for a unique flavour match.
- New example `main62.cc` illustrates how a user hook can steer the selection of angles in a resonance decay.
- Minor correction in the treatment of the highest multiplicity in FxFx jet matching.
- Minor correction in the interface to aMC@NLO for dijet and photon+jet processes.
- Inserted missing endtag that corrupted the `Tunes.php` page. Thanks to Tim Martin.
- Minor fix for polarization sign when the tau polarization is forced.
- The meaning of the `HiggsXX:parity` options for CP mixing has been slightly modified and is better described.
- Clarification in the documentation that impact-parameter-enhancement factor calculation for two hard processes does not work for the x-dependent impact-parameter profile option.
- Fixed a factor sqrt(2) error in couplings for chargino + squark pair production. Thanks to Michihisa Takeuchi.
- Some minor bug fixes in the SUSY code, and some speed optimization suggested by Martin White.
- Fixed incorrect indexing in the SLHA interface.
- Removed misleading flavour setup for unused Pomeron.
- Fixed possible unwarranted destruction of pointer to external timelike shower by the `Pythia` destructor.
- Initialized pointers to NULL in the `Info` class, to avoid some problems. Thanks to Keno Fischer.
- Minor `Makefile` improvements for LHAPDF linking.
- Minor improvement to the `main89.cc` example program.
- Mildly modified warning/error messages when junction splitting fails.
- Minor fixes in `LHAFortran.h`, which is also moved to `include/Pythia8Plugins` to better reflect its peripheral role.
- New machinery for hard diffraction now in place. Still being debugged and tested, so not yet ready for public usage.

### 8.205: 23 January 2015

- Unfortunate tiny typo made the new A14 tunes inaccessible. Now fixed.
- Resolved an inconsistency between MLM and FxFx merging that was introduced in 8.201 upon answering a user request. The effect should be minimal. Thanks to Josh Bendavid for bringing this to our attention.
- Amended the automated reading of the (optional) "TimeShower:nPartonsInBorn" setting from Les Houches Event files produced with aMC@NLO. Heavy coloured objects are now handled correctly when the information in the Les Houches event does not include heavy partons of the lowest-multiplicity state into its counting (as is conventional). Thanks to Josh Bendavid for pointing this out.

### 8.204: 22 January 2015

- The `examples` directory has been moved back from the `share/Pythia8/` subdirectory to the main directory, as was the case in PYTHIA 8.1, to make it more visible to newcomers. The optional `make install` step will create a copy of `examples` in `share/Pythia8/`. The rarely used `examples/outref` subdirectory is moved to `share/Pythia8/outref`.
- Fifteen new tunes have been added, the MonashStar tune from CMS and fourteen A14 tunes from ATLAS [ATL14a]. The latter correspond to central tunes for four different PDF sets and ten variations in five (approximate) eigenvector directions. Furthermore, now the chosen `Tune:pp` implies the `Tune:ee` value to which it is related, and thus the latter need not be set separately.
- Default settings values have been updated to agree with the Monash 2013 tune. Thus typically the list of changed settings is significantly reduced. Thanks to Mikhail Kirsanov for suggestion.
- The compositeness section has been expanded with six further processes, describing the pair production of excited leptons or neutrinos. Three-body contact-interaction decay modes of these excited states have been introduced. A bug has been fixed that gave the wrong helicity in decays for excited quarks, leptons and neutrinos. Further, the gamma^*/Z^0/Z'^0 can decay to a pair of excited fermions provided that the channels are added to the list of allowed ones. Based on code provided by Olga Igonkina.
- A new interface to the EvtGen decay package, primarily intended for bottom and charm decays, has been implemented. It is available in `include/Pythia8Plugins/EvtGen.h` and an example how to set it up is found in `main48`.
- Several minor changes in the `examples` subdirectory. This includes the `README`, `Makefile` an `runmains` files. The `main61` example program has been removed, since now LHAPDF can be loaded dynamically for `main42`, so that the two become equivalent. Further `main62` has been renamed `main43`, to gather HepMC-related examples, and `testlhef3.lhe` has been renamed `wbj_lhef3.lhe`.
- A new example `main30` how to create a tailormade copy of the ordinary event record, here with a history tracing of the hard process closer to the PYTHIA 6 conventions.
- The ProMC input-output file format is now implemented among the libraries that can be `configure`d to run with PYTHIA. An examples is provided in `main46.cc`. Thanks to Sergei Chekanov.
- Change in the setup of final-state-shower colour dipoles for the non-default case of no interleaving, whereby it becomes less likely to pick a colourless final-state particle as recoiler. New option `TimeShower:allowMPIdipole` gives flexibility. Thanks to Mihoko Nojiri and Bryan Webber.
- New options 3 and 4 for `TimeShower:pTdampMatch` and `SpaceShower:pTdampMatch`, with new default 3 for the latter. The main effect is that, by default, t tbar production (as a 2 → 2 process) obtains damped radiation above the process scale. Thanks to Andy Buckley for suggestion.
- Initialization will now abort if a mode has been chosen with a non-allowed value. This applies to those modes that have been defined with the `modepick` or `modefix` labels in the `xmldoc/*.xml` files and, for the former, where maximal and minimal values have been specified. The former label is used to represent a discrete set of options, and so any value outside the allowed range is just plain wrong. Thanks to James Monk for suggestion.
- Added `getChannels()` in `SusyResonanceWidths` to dynamically create the decay table for SUSY particles and thereby to remove duplication in the XML file.
- New file `SusyWidthfunctions`. Added new class `WidthFunction` to handle calculation of three- and four-body decay widths.
- In `main24.cc` the example spectrum file format has been updated from SLHA1 to SLHA2, obtained from SoftSusy 3.5.1. The two new `slha1-example.spc` and `slha2-example.spc` files replace the older `cmssm.spc`, `snowmass2.spc` and `softsusy.spc` ones.
- In `LesHouches.cc` the read-in of LHEF headers containing tags that open and close on the same line (e.g., a single line containing `<tag>blabla</tag>`) has been enabled. This could previously lead to improper initialization and crashes. Also implemented a check for forgotten close-tag statements, with a warning issued to the user. Thanks to Alexander Belyaev and Alexander Pukhov.
- Bug fix in the conversion from the `xml` settings files to their `php` radio-button equivalents, whereby the text describing some options was not set properly. (Typically the text of the previous option was repeated.) Thanks to Radek Zlebcik.
- Minor fixes in the LHEF version 3 reader. Introduce a new matching writer of LHEF version 1 or 3 files.
- Introduction of a new mode `LesHouches:setLeptonMass`, such that by default final-state charged leptons acquire sensible masses, even when the matrix-element calculations have been performed with massless leptons. This and other energy-momentum adjustments, e.g. for limited-precision storage, are now located in `ProcessContainer::constructProcess`.
- `http://home.thep.lu.se/Pythia` has been introduced as a simpler but (hopefully) equivalent address to `http://home.thep.lu.se/~torbjorn/Pythia.html`, and various documentation has been updated accordingly. Thanks to Leif Lönnblad.
- New file `include/Pythia8Plugins/execinfo.h` contains trivial copies of three backtrace methods needed to be able to compile PYTHIA under Cygwin. The `README` file and the worksheet updated with brief information on three (non-supported) ways of working with PYTHIA under Windows. Thanks to and Theo Hughes and Gordon Watts.
- Bug fix in check for colour sextets and transfer of such colour information. Thanks to Alexander Belyaev and Alexander Pukhov.
- Improved handling of stray characters in the SUSY Les Houches code. The check on the consistency of decay tables has been removed. Improved warning/error printing in the SLHA interface.
- Bug fix in new beam remnant model, so that it basically operates like the old one for e^+e^- annihilation.
- Two bug fixes in the new colour reconnection model, one for diquarks at the ends of junction strings, and another to check that coloured resonances are processes with early resonance decays option.
- Bug fix for multiple `Pythia::init()` calls, where beam contents were not properly reset. Thanks to Josh Bendavid.
- Bug fix such that the valence content of a pi^0, K^0_S, K^0_L and Pomeron is reselected for each new event. Thanks to Radek Zlebcik.
- Fix typo in constants of the tau → 3 pi current for the amplitudes of the rho, rho(1450), and f2. Thanks to Ian Nugent.
- Small bug fixes for string and ministring fragmentation, for the case when a low-mass (order 2 GeV) system contains at least three partons, which fail to define a unique direction for the final string region.
- New parameter `BeamRemnants:reducedKTatHighY` introduced to reduce technical problems with low-mass MPIs produced at high rapidities when primordial kT is introduced.
- Small bug fix in the global-recoil option for timelike showers.
- Update year to 2015, remove tabs and superfluous blanks, break long lines where meaningful, and some further minor changes.

### 8.201: 14 October 2014

- The Introduction to PYTHIA 8.2 has now been assigned the arXiv:1410.3012 [hep-ph] identifier, which has been introduced in code and text.
- The `enable-shared` by mistake was not listed among allowed configure options.
- Corrected a few tiny documentation typos.

### 8.200: 11 October 2014

- A new `share/Pythia8` directory collects all documentation and example code. The `examples`, `htmldoc`, `phpdoc` and `xmldoc` directories have been moved here. The main-directory files `AUTHORS`, `COPYING`, `GUIDELINE` and `README` are also copied here during installation.
- A new `share/Pythia8/pdfdoc` directory collects pdf documents that are linked from the `htmldoc` and `phpdoc` directories. Over time it will provide in-depth descriptions of various physics aspects than offered in the html/php-formatted documentation. In addition to the official main publication and the worksheet, currently notes on LO vs. NLO PDFs and on the g → q qbar branching kernel are included.
- A new `include/Pythia8Plugins` directory collects code that does not form part of the core PYTHIA functionality but still has a general usefulness. Code in this directory will not be compiled as part of the Pythia library, but can be linked where needed. This new directory contains
  - the jet matching classes in `CombineMatchingInput.h`, `GeneratorInput.h` and `JetMatching.h`, moved from the `examples` directory;
  - the `PowhegHooks` user hook, to veto shower emissions above the POWHEG scale, formerly found in `examples/main31.cc`;
  - the `Pythia8ToHepMC` interface for output of PYTHIA events into the HepMC format, combining the code previously in `include/Pythia8ToHepMC.h` and `pythia8tohepmc/Pythia8ToHepMC.cc` into a new `HepMC2.h` file;
  - the `FastJet3.h` interface of PYTHIA particles to the FastJet 3 library of jet finders, formerly found in `include/FastJet3.h`; and
  - the `LHAPDF5.h` and `LHAPDF6.h` files for interfaces to the LHAPDF library (see further below).
- The configure/make structure has been considerably rewritten. Now all external libraries to be linked are specified in the main-directory `configure` step, along with other options, so there is no longer an `examples/configure`. The `make` step will, as before, compile and install libraries inside the current directory, such that the main programs in the `examples` directory can be run. One small difference is that also the archive libraries are installed in `lib` and not in `lib/archive`.
  A new optional `make install` step allows you to copy files to more convenient locations. The default option, with no directories specified in the `configure` step, requires you to have superuser privileges. Then files will be copied to standard locations as follows:

  lib/ | → | /usr/lib/
  include/ | → | /usr/include/
  share/ | → | /usr/share/
  pythia-config | → | /usr/bin/

- The `pythia8-config.in` script has been replaced by a new `bin/pythia8-config` script. See the README file for details. The `make install` step by default will put a copy of it in `/usr/bin`.
- The interface to LHAPDF is now dynamically loaded when requested, and can be either to version 5 or 6 of the library. The dummy code previously in `lhapdfdummy/LHAPDFDummy.cc`, to be linked when LHAPDF is not, is no longer required. The two new files `LHAPDF5.h` and `LHAPDF6.h` in the `include/Pythia8Plugins` directory contain the necessary interface code. The selection of PDF sets, notably for the proton, has been extended to simplify mixing of internal and external PDF sets, and it is now possible to specify different PDFs for the two incoming protons at the LHC, see the PDF Selection description.
- The new `LHEF3.h` file contains a generic interface for reading Les Houches Event Files of versions 1.0, 2.0 and 3.0. This allows more information to be read and studied by the author. Currently PYTHIA itself makes little use of the information beyond the one in 1.0, but it is available among the Event Information. Examples are found in `main37.cc` and `main38.cc`.
- The new `Beams:strictLHEFscale` switch can be used to restrict parton showers in resonance decays to be below the input Les Houches scale, not only the hard process itself. The new `Beams:setProductionScalesFromLHEF` switch can be used to restrict the emission off each separate parton to be below its specific scale.
- The `rootexamples` directory has been removed, and the two programs `examples/main91` and `examples/main92` now illustrate how ROOT can be used in conjunction with PYTHIA.
- The executable built from `examples/mainxx.cc` is now named `examples/mainxx`, while previously it was named `examples/mainxx.exe`.
- The rudimentary support for compilation on Windows platforms, present in PYTHIA 8.1, has not yet been updated for 8.2 and so is omitted. Also the README.HepMC file is omitted for now.
- The ProMC interface is broken, and has been removed for now.
- Several methods have been removed from the `Event` class since the properties now instead can be accessed from the individual `Particle` instance, if this particle belongs to an event. These include `iTopCopy`, `iBotCopy`, `iTopCopyId`, `iBotCopyId`,`motherList`, `daughterList`, `sisterList`, `sisterListTopBot`, `isAncestor`, `statusHepMC` and `undoDecay`.
- A number of deprecated `Pythia::init(...)` methods with varying arguments have been removed. Instead call `init()` without any arguments and use Beam Parameters settings to specify beams and energies in different ways.
- The deprecated `Pythia::statistics(...)` method has been removed; instead use `Pythia::stat(...)`.
- Several settings in the `Main:` series have been removed. Most of these have already found replacements in the `Init:`, `Next:` and `Stat:` ones, and have been marked as deprecated. Four further ones were deemed so peripheral that they were removed altogether, but of course the underlying functionality remains.
- A few aliases for (parts of) settings names have been removed. Previously "Multiple" was mapped to "Multiparton", "MI" to "MPI" and "minBias" to "nonDiffractive" if a settings name was not found for the original input string.
- The default tune has been changed from 4C to Monash 2013, meaning `Tune:ee = 7` and `Tune:pp = 14`. The old 4C tune that was default in 8.1 can be recovered with `Tune:ee = 3` and `Tune:pp = 5`. Also most other older tunes are based on `Tune:ee = 3`.
- Two new CMS underlying-event tunes [CMS14] and the ATLAS AZ tune [ATL14] have been added as options.
- The default handling of the g → q qbar splitting kernel has been changed, affecting in particular heavy-flavour production. `TimeShower:weightGluonToQuark` has been changed from 1 to 4 to do this. All old tunes are with the 1 value but, since the tunes are not probing the detailed g → q qbar behaviour, this is not set as part of the tune options.
- Christine O. Rasmussen joins as new PYTHIA collaboration member.
- A new model for the handling of beam remnants as an option to the old one, which remains as default for now.
- Two new models for colour reconnection, one quite sophisticated and one simpler. This involves several new classes and files. It also includes some changes in the hadronization framework, notably for the handling of junctions. The old model remains as default for now. The `BeamRemnants:reconnectColours` flag to switch on/off reconnection has been renamed `ColourReconnection:reconnect`, the main parameter `BeamRemnants:reconnectRange` of the old model has been renamed `ColourReconnection:range`, and several new settings have been introduced, notably `ColourReconnection:mode` to switch among the three models.
- A new `include/Pythia8Plugins/ColourReconnectionHooks.h` makes available an even larger selection of toy colour reconnection models, via user hooks. Some of them are only intended for top decays, for top mass uncertainty studies, whereas others can be used more generally. The `examples/main29.cc` program illustrates how the different options should be set up.
- Several new features and improvements in the matching/merging machinery. Notably the aMC@NLO matching scheme has been implemented, see the aMC@NLO Matching description. To this end the global-recoil option of timelike showers has been improved, and security checks have been introduced for inaccurate LHEF input. A new `main89.cc` example has been introduced, where different `.cmnd` files show how to set up either CKKW-L, FxFx, MLM, UMEPS or UNLOPS merging.
- Improved capability for the `LHAup` Les Houches interface to read SLHA information embedded in the input file or stream.
- The `Makefile`s have been updated to take into account the changed structure of the HepMC interface.
- The Z' production process has been updated to optionally allow decay to a fourth generation of fermions, with universal or non-universal couplings.
- Introduction of a new Higgs CP-mixing parametrization via a mixing angle phi as described in Higgs Processes. The choice of the Higgs CP-mixing parametrization now also affects the distributions of the tau decay products from the processes H^0 → tau^+ tau^-.
- Bug fix in H^0 → W^+ W^- → 4 f matrix element for mixed CP-state case.
- Various improvements and finer grain control for the determination of tau decay correlations and tau polarizations. By default the decays of tau pairs from known resonance decays in Les Houches input are now correlated. The `ParticleDecays:sophisticatedTau` mode in Particle Decays has been renamed `TauDecays:mode`, as well as all tau-related `ParticleDecay` options, with two new options of using only the internal machinery to determine correlations and polarizations, and only using the provided SPINUP digit from Les Houches input. The option `TauDecays:externalMode` has been introduced to control the interpretation of the SPINUP digit.
- For Les Houches Event input the energy of a particle is recalculated from its three-momentum and mass, in order to limit mismatches from limited numerical precision in the input values.
- Bug fix in the two-loop running alpha_s, for the matching to six flavours at the top mass.
- Eliminate harmless compiler warnings for `FJcore`.
- Updated Introduction (= the official 8.2 article) and Worksheet.