# Geant4 9.4 Release Notes

Geant4 9.4 Release Notes

December 17th, 2010

The code and binary libraries for the supported systems are available through our Source Code Web page.

We are grateful for the efforts of Geant4 users who have provided detailed feedback or comprehensive reports of issues. We thank in particular those who have contributed corrections, improvements or developments included in this release.

Please refer to the Geant4 User Documentation for further information about using Geant4.

## Contents

1. Supported and Tested Platforms
2. CLHEP and AIDA
3. Items for migration of the user code
4. New Developments and Capabilities
5. Expected effects on physics and performance
6. Known Run-Time Problems and Limitations
7. Compilation Warnings
8. Known Run-Time Warnings
9. Geant4 Software License
10. Detailed list of changes and fixes

## 1. Supported and Tested Platforms

Officially tested platforms:

- Linux, gcc-4.1.2 and gcc-4.3.2 (SLC5).
  Tested on 32 and 64 bit architectures (Intel or AMD) with Scientific Linux CERN 5 (SLC5) (based on RedHat Linux Enterprise 5).
- MacOSX 10.6 with gcc-4.2.1
- Windows/XP and CygWin Tools with: Visual C++ 9.0 (Visual Studio 2008)

More verified configurations:

- Linux, gcc-4.5.1, gcc-3.4.6 (SLC4)
- Linux, Intel-icc 11.1

Platforms configured but neither tested nor supported:

- AIX 4.3.2, xlC 6.0
- DEC V4.0, cxx C++ V6.1-027
- HP 10.20, aCC C++ B3910B A.01.23
- MacOSX 10.4, gcc-3.3
- MacOSX 10.5, gcc-4.0.1
- SGI V6.5.5, CC 7.2.1
- SUN Solaris 5.8, C++ CC-5.5.

## 2. CLHEP and AIDA

This release of Geant4 has been verified with CLHEP, release 2.1.0.1. Use of a different CLHEP version may cause incorrect simulation results.

Most Geant4 9.4 examples with histogramming co-work with analysis tools compliant to AIDA 3.2.1 interfaces (for details, see Appendix 2 of the Users Guide for Application Developers). AIDA headers can be downloaded from: http://aida.freehep.org

## 3. Items for migration of the user code

Listed here is some relevant information on developments included in this release, some of which may require migrations (mainly for users of advanced Geant4 features) in order to upgrade from release 9.3 to release 9.4. Note that for all users a full re-installation of libraries (or a full recompilation) and a recompilation of user applications is required.

Standard Electromagnetic physics

- Changed default multiple scattering models to `G4UrbanMscModel93` for electrons and positron, `G4WentzelVIModel` for muons. `G4UrbanMscModel90` remains the choice for other particles.
- Removed obsolete classes `G4MultipleScattering, G4UrbanMscModel` and `G4UrbanMscModel2`. The use of multiple scattering processes specialised by particle type (`G4eMultipleScattering, G4hMultipleScattering` and `G4MuMultipleScattering`) is now mandatory.

Low Energy Electromagnetic physics

- The Geant4-DNA `G4DNAEmfietzoglouExcitationModel` class for the modeling of electron excitation in liquid water is obsolete and should be replaced by the `G4DNABornExcitationModel` class.

Persistency

- GDML: to better match the schema definition, a correction to the 'value' type from `double` to `string` has been made for the auxiliary-information returned by `G4GDMLParser`. This may require related change in the user code, where the auxiliary information feature is used.

Physics Lists

- Previously obsolete physics lists have been deleted, for the detailed list please see below.
- Introduced new constructor for all builders with a common signature. Previous constructors are kept for this release, but are declared obsolete. They will be removed in a future release.

Visualization

- The visualization trajectory modeling command `/vis/modeling/trajectories/create/drawByParticleID` used to default all trajectories to grey, with the user having to explicitly set any other color code. While the user can still set any wished color code, the default has been improved to: `[e-/red; e+/blue; proton/cyan; gamma/green; neutron/yellow; pi+,pi-,pi0/magenta; other/grey]`.
- In some examples, visualization that used to draw trajectories as simple lines now also draws step points. Users who wish to disable step point drawing can do so by commenting out a line in the visualization macro.

Data Sets

This release introduces new data sets and also new versions. Please see the corresponding details in Section 10 of this document.

- G4NEUTRONXS-1.0, new data set for evaluated neutron cross-section data on natural composition of elements (controlled by variable `G4NEUTRONXSDATA`).
- G4PII-1.2, new data set for shell ionisation cross-sections (controlled by variable `G4PIIDATA`).
- New data set versions: `G4EMLOW.6.19, G4RadioactiveDecay.3.3, G4PhotonEvaporation.2.1, G4NDL.3.14`.

## 4. New Developments and Capabilities

Geometry

- It is now possible to introduce gaps between slices in divisions, by making use of a new specialised physical-volume type, `G4ReplicatedSlice` for defining the divided daughter volumes.
- In regular voxelised geometries, the restriction for voxels to completely fill the envelope container is now relaxed. It is now allowed to define envelopes of different types other than box for regular geometries, by making use of a new parameterisation helper class `G4PartialPhantomParameterisation`.
- A new specific shape, `G4GenericTrap`, is now implemented. This new solid represents an arbitrary trapezoid with up to 8 vertices standing on two parallel planes perpendicular to the `Z` axis.

Detector description persistency

- Introduced new UI commands from the GDML parser to allow for importing and exporting GDML files through macros or interactively, supporting all various options provided by the parser.

Digitization & Hits

- Cylindrical scoring mesh is now fully released.
- Most of primitive scorers now take their default units, and units may by altered by their UI commands. These units are used for drawing and dumping the scores.

Standard Electromagnetic physics

- New model `G4ICRU73QOModel` is available for low-energy ionisation of negative-charge projectiles (including anti-ions); it is based on ICRU'73 data for oscillator strengths; this model is the default for negative-charge particles in `G4hIonisation` process class.
- Improved modeling of fluctuations in energy deposition, relevant for deposit in gasses and silicon. Increases stability when step size changes.
- New model of single scattering and NIEL for ions `G4IonCoulombScatteringModel` is available; the model is applicable from `50 keV` to `100 TeV`.
- New ionisation models `G4BraggIonGasModel`, `G4BetheBlochIonGasModel` are available for simulation of ion transport in low density media, e.g. in vacuum. The ion charge of a particle is not changed by these models.
- The default angular distribution of gamma in the Bremsstrahlung process can be substituted by alternative model in physics-list.
- Fluorescence and Auger electron production can be activated via UI commands, using the new models `G4PEEffectFluoModel` and `G4KleinNishinaModel`.
- Disabled usage of minimum energy threshold per model. As a result the production threshold is defined only by range (converted to energy in each material). It remains constrained by the minimum limit defined in 'cut' category. This change is necessary to allow the full set of combinations of models in a process.

Low Energy Electromagnetic physics

- Photon Livermore models: first implementation of pair production in the electric field of the electron. The `G4BoldyshevTripletModel` should be used in conjunction with the `G4LivermoreNuclearGammaConversionModel` model (using `G4MultiModel`) in order not to account twice for the pair production cross section in the electron field.
- Electron Livermore models: `G4LivermoreIonisationModel` is able to generate fluorescence along the step. Addressing problem report #1141.
- Penelope models: added four new models (gamma ray models: Compton, GammaConversion, PhotoElectric and Rayleigh). Upgrades of Penelope from version 2001 to version 2008, named as `G4Penelope08xxxxModel`. To be considered as beta.
- For all low energy EM models: no customized production cuts are allowed anymore for fluorescence/Auger. Main cuts from the `G4ProductionCutsTable` are always used, for consistency.
- Geant4-DNA (in liquid water):
  - New process and model classes for electron attachment and vibrational excitation.
  - New electronic excitation model for electrons.
  - Extended very low energy coverage of Champion's electron elastic scattering.
  - New excitation model for neutral hydrogen.
  - Preliminary new ionization models for `C, N, O` and `Fe`. To be considered as beta.
  - Multi-scale combination of Geant4-DNA discrete processes with Standard or low energy EM physics processes adopting the unified software approach of both EM physics sub-categories (see the `microdosimetry` advanced example for illustration).

Hadronic physics

- Hadronic interfaces now require integer Z and A arguments. Elements or materials with effective or average values of Z and A are no longer allowed.
- Quark exchange, Reggeon cascade and nuclear destruction parameters in the FTF model were tuned. Tuning of the nuclear destruction parameters was based on HARP-CDP data. Low mass string fragmentation was improved.
- The Bertini cascade model was re-written to employ more code re-use, improve memory management, and provide better energy/momentum conservation. Angular distributions of the two-body final states of hadron-nucleon interactions were redone and improved. An optional interface to the G4Precompound model (and the associated de-excitation processes) is now available; this is an alternative to the dedicated de-excitation which has been used until now.
- Anti-baryon-nucleon elastic scattering was added to the CHIPS model.
- Fermi breakup was extended to include fragments with `1 < A < 5` . Several improvements were made to bring the model closer to the original one of Botvina. Use hybrid of Fermi breakup and GEM models for `A < 20`. Several other improvements were made to the evaporation models. A README file was added explaining the photo-evaporation data files.
- New, fast models and cross sections for neutron elastic, inelastic and capture are now available: G4NeutronElasticXS, G4NeutronInelasticXS and G4NeutronCaptureXS.
- An isomer decay table was added to extend the number of existing isomers in the radioactive decay model. All of them will be decayed by isomeric transition (IT). A README file was added to explain the radioactive decay data files.
- RQMD (relativistic quantum molecular dynamics) code was enabled in the QMD model to allow treatment of higher collision energies.
- A new model, `G4NuclNuclDiffuseElastic` is now available for nucleus-nucleus elastic scattering.
- A new class `G4ComponentAntiNuclNuclearXS` provides the total elastic and inelastic cross sections of anti-nucleon and anti-nucleus interactions with nuclei. These were calculated using the Glauber approach.
- All hadronic processes now check to see if the cross section has become negative at the end of a step, before invoking the model.
- Checking of Energy/momentum conservation is available in the hadronic process class. Methods can set the theshold level for reporting and the verbosity of the output.

Physics Lists

- New physics lists QGSP_BERT_CHIPS and Shielding, details are described below.
- Improved inelastic hadronic cross section at high energies, above 90 GeV, in all QGS.. and FTF.. lists.
- Improved cross sections for Kaon, and all "misc" particles, including anti-proton, anti-neutron, and hyperons in FTFP_BERT, QGSP_FTFP_BERT, and the two new physics lists QGSP_BERT_CHIPS and Shielding.
- Use `G4UrbanMscModel93` by default for e+,e- in all EM physics builders except `G4EmLivermorePhysics` and `G4EmPenelopePhysics` where new `G4GoudsmitSaundersonMscModel` is used.
- `G4WentzelVIModel93` and `G4CoulombScattering` are used by default for mu+,mu- in all builders.
- In `G4EmStandardPhysics_option2` for small angle multiple scattering `G4WentzelVIModel93` is used for protons, pions, and kaons; for angular distribution of bremmstrahlung gamma `G4GeneratorBS` is applied.
- Improved `G4EmConfigurator` class, to define alternative models by particle type, energy range, and detector region. Can be used to choose configuration EM models before or after the EM physics has been instantiated.

## 5. Expected effects on physics and performance

Standard Electromagnetic physics and cuts

- Small increase of visible energy deposition in sampling calorimeters (e.g. 0.5% for a simplified setup with materials of the ATLAS EM barrel calorimeter) due to improvements in the multiple scattering model.
- Improved tails of energy deposition in thin absorbers.

Hadronic physics

- Improved treatment of low mass strings in the FTF model allows the model to be used at lower energies and provides a smoother transition in energy response in the region where string models give way to cascade models.
- Improved memory management in the Bertini cascade model results in a 10-fold reduction of object creation and destruction. The model also conserves energy and momentum better.
- Fermi Break-up Model and GEM evaporation are used by default providing improved production of light fragments in nuclear fragmentation at low energy.
- Improved spectra of nuclear gamma deexcitation including Doppler broadening simulation.
- Fast neutron cross-sections can provide significant CPU savings for applications which need accurate simulation of neutrons below 20 MeV.
- Materials defined with an effective Z or A can no longer be used with hadronic processes.

## 6. Known Run-Time Problems and Limitations

For a complete list of outstanding run-time problems and to submit any problem you may find while running this version of Geant4, please refer to the Geant4 Problem Reporting System.

## 7. Compilation Warnings

There may be a few compilation warnings on some platforms. We do not believe that any of these lead to incorrect run-time behaviour.

## 8. Known Run-Time Warnings

The following message may be written to standard output at the end of a program:

        G4Transportation: Statistics for looping particles
           Sum of energy of loopers killed:
           Max energy of loopers killed:

It provides the total energy (in `MeV`) of tracks killed due to excessive number of steps ('looping') during the simulation, and the maximum energy of such a track. Such behaviour can be due to looping in magnetic fields or being abandoned due to being stuck at geometrical boundaries.

In case either of these reported energies is significant, we recommend increasing the verbosity of `G4Transportation` to obtain information for each track killed. A user can change the threshold energy above which particles are killed more reluctantly (only after significant additional effort) using the method `SetThresholdImportantEnergy()` of `G4Transportation`. The default value is `100 MeV`.

## 9. Geant4 Software License

A Software License applies to the Geant4 code. Users must accept this license in order to use it. The details and the list of copyright holders is available at http://cern.ch/geant4/license and also in the text file `LICENSE` distributed with the source code.

## 10. Detailed list of changes and fixes

These are the main new features/fixes included in this release since the last patched public release (for more detailed lists of fixes/additions, please refer to the corresponding History files provided in most packages):

### Configuration

- Configure script:
  - Updated scripts for Configure, to allow for parallel builds.
  - Added new data sets `G4NEUTRONXS` (Evaluated neutron cross section data, version 1.0), controlled by variable `G4NEUTRONXSDATA`, and `G4PII` (shell ionization cross section data, version 1.2), controlled by variable `G4PIIDATA`.
  - Added new versions of data sets for `G4EMLOW.6.19, G4RadioactiveDecay.3.3, G4PhotonEvaporation.2.1, G4NDL.3.14`.
- cmake:
  - First 'alpha' version of a new build infrastructure based on CMake (see http://www.cmake.org/). Added scripts and file catalogues to all source modules.
- Removed 'leading_particle' hadronic module from include paths list.
- Added `obj` make target to `globlib.gmk` to allow for creation of object files only.
- Removed obsolete Qt3 setup for `Darwin-g++, Linux-g++` and `WIN32-VC`.
- `Darwin-g++.gmk`: corrected and simplified Qt setup for use of Native OpenGL.
- Fixed linking options for shared libraries in `Linux-icc.gmk`.
- Corrected definition of `LDFLAGS` in `binmake.gmk` to avoid occasional fatal clashes with settings in user's environment. Added include paths to new modules and cleaned obsolete paths.
- Replaced use of `strcat()` with more secure `strncat()` in `liblist.c`, and protected uses of `strcpy()`.

### Digitization & Hits

- Cylindrical scoring mesh is now fully released.
- Improved some UI commands for defining scorers.
- Fixed signature in `G4VPrimitiveScorer` for `Set/GetUnit()` methods.

### Electromagnetic Processes

- Adjoint
  - `G4AdjointBremsstrahlungModel`: use `G4EmModelManager` for proper initialization. `G4eBremsstrahlungModel` is used as forward model. Fixing cases of floating point exceptions.
  - `G4AdjointhIonisation`: removed negative term in the expression of the adjoint cross-section (`AdjointCrossSection()` method) and adapted method `RapidSampleSecondaries()`.
  - `G4VEmAdjointModel`: added a check on null cross section to avoid FPE.
- High Energy
  - New model `G4ICRU73NoDeltaModel` derived from `G4ICRU73QOModel`.
  - Added new `G4mplIonisationWithDeltaModel` for ionization of monopoles, to be used in the `G4mplIonisation` process class as a default model; this enables delta-ray production, which is needed by ATLAS and CMS.
  - Fixed defects reported by Coverity tool, mainly related to initialization of static data.
- Low Energy
  - Added four new models (gamma ray models Compton, GammaConversion, PhotoElectric, Rayleigh), upgrades of `G4Penelope` ionisation and Bremsstrahlung for `e+/e-` to version 2008.
  - Added `MinEnergyCut()` method to `G4PenelopeIonisationModel`. Small (minor) changes to other Penelope models (mainly clean-up). Removed useless call in `G4PenelopeIonisationModel` which triggered fake warning messages.
  - Added class `G4PenelopeCrossSection` to store/handle cross sections (and higher momenta, like stopping powers) for Penelope models.
  - New `G4PenelopeOscillator*` classes to manage multi-element atomic oscillators used in Penelope Compton and Ionisation models. Compliant with Penelope-2008.
  - Added dummy method `ComputeCrossSectionPerAtom()` in `G4PenelopeRayleighModel`, never inkoved in tracking and issuing a warning if users access it via `G4EmCalculator`.
  - Updated public interface of `G4LivermorePhotoElectricModel`. Removed possibility to use custom cuts for fluorescence/Auger. Main cuts from `G4ProductionCutsTable` are always used, for consistency.
  - Updated `G4LivermoreIonisationModel` to produce fluorescence AlongStep only if above the production cuts. Stricter check for energy conservation.
  - Bug fix in `G4LivermoreIonisation` and in `G4LivermorePolarizedPhotoElectricModel`.
  - New models `G4BoldyshevTripletModel, G4LivermoreGammaConversionModelRC`, and `G4LivermoreNuclearGammaConversionModel`.
  - `G4LivermorePolarizedGammaConversionModel`: fixed element selection and initialisation.
  - Clean-up in Penelope models; explicitely set Auger flag to false in constructor. Addressed Coverity reports for Penelope/Livermore processes.
  - Geant4-DNA processes and models:
    - New excitation model for electrons in `G4DNABornExcitationModel` and for H.
    - Added new G4DNA processes and e- models for vibrational and attachment as in: Z. Francis et al., Appl. Radiat. Isot. 69 (2011) 220-226.
    - Extended low energy coverage of G4DNA electron models.
    - New preliminary Geant4-DNA ionisation class for ions to be used with new data set, G4LEDATA-6.19.
    - Corrected `G4DNABornIonisationModel` for maximum kinetic energy transfer.
    - Modified method declaration in `G4DNABornExcitation`. Modified electron correction in `G4DNAMillerGreenExcitation`.
    - Extended search range for maximum of DCS in `G4DNARuddIonisationModel`.
    - Changed default parameters in `G4DNAEmfietzoglouExcitationModel`. Modified initialisation of e- Emfietzoglou excitation model to fix memory leaks.
    - Changed computation of scattering angle in `G4DNAChampionElasticModel`.
    - Replaced hard coded masses in `G4DNADingfelderCharge*` classes.
    - Updated & extended Rudd and Miller & Green models. Adapted all high energy limits of G4DNA electron models.
    - Changed low energy limit of G4DNA elastic scattering models for e-. Switched default excitation model for e- to Born.
    - Set high energy limit of G4DNAScreenedRutherfordModel to 1 MeV and decreased low energy limit.
    - Updated high energy limits of G4DNAExcitation and G4DNAIonisation. Added protection in xs file opening for G4DNA Sanche excitation.
    - Restricted momentum conservation to electrons in G4DNA ionisation.
    - Added new control of low energy limit of G4DNA e- models. Energy ranges adapted accordingly.
  - Fixed initialisation order in some models' constructor to fix Valgrind run-time errors reports.
  - Fixed bugs in G4AtomicDeexcitation and G4AugerTransition.
  - New PIXE developments:
    - `G4ecpssrKCrossSection` and `G4ecpssrLiCrossSection` classes: these classes substitute the `G4ecpssrCrossSection` class, fixing existing bugs and improving the goodness of the results especially at higher energies.
    - `G4empCrossSection` and `G4teoCrossSection` classes: classes deriving from `G4VhShellCrossSection` and providing the interface to empirical ionization cross sections (Orlic for L shells and Paul for K).
    - `G4hShellCrossSection, G4hShellCrossSectionDoubleExp, G4hShellCrossSectionDoubleExpData, G4hShellCrossSectionExp, G4hShellCrossSectionExpData` classes are now discontinued.
    - `G4hLowEnergyIonisation` has been updated to follow the new design and let the user chose which model to use for the calculation of shell ionization cross section through the method `SelectShellIonisationCS()`. Dependencies on old methods for cross section calculation have been removed.
    - Changed default parametersa and fixed units management.
    - Bugs fixes in `G4OrlicLiCrossSection` and `G4PaulKCrossSection`.
  - Fix in G4AugerTransition to cure crash on Windows.
  - Added missing virtual destructors where necessary.
  - Corrected return value case in method GetPhotoElectronDirection() in G4PhotoElectricAngularGeneratorSauterGavrila. Addressing problem report #1120.
  - New class `G4UAtomicDeexcitation` class, derived from `G4VAtomicDeexcitation` from `utils` module. It will replace `G4AtomicDeexcitation` class. Updated `G4hLowEnergyIonisation` to it.
  - Optimised computation in `G4GeneratorBS` and fixed comments. Moved classes `G4VBremAngularDistribution` and `G4ModifiedTsai` moved to `utils` and `standard` modules respectively.
  - Requires new data set G4EMLOW-6.19.
- Muons
  - `G4MuPairProductionModel`: added sampling recoil of a primary particle.
  - `G4MuIonisation`: use `G4ICRU73QOModel` for `mu-` for `E< 0.2 MeV` (`G4BraggModel` in past).
  - Fixed defects reported by Coverity tool, mainly related to initialization of static data.
- Polarisation
  - Fixed signature to `G4VPolarizedCrossSection::TotalXSection()` in source file.
  - Fixed issues reported by the Coverity tool.
- Precise Impact Ionisation
  - New module for precise impact ionisation, as described in: M.G.Pia et al., PIXE Simulation With Geant4, IEEE-TNS, vol. 56, no. 6, pp. 3614-3649, 2009. Requires new data set G4PIIDATA-1.2.
- Standard
  - Single and multiple scattering:
    - `G4GoudsmitSaundersonMscModel`: fixed problems of small angle theta distributions; improved numerical stability of computations for small angles by direct cross-section calculation; the inverse angular sampling is performed without large angle rejection method.
    - `G4GoudsmitSaundersonTable`: improved numerical stability by minimum of used arrays in computation within the dichotomy finding method; optimized code to improve speed by addition extra class members.
    - `G4eMultipleScattering, G4hMultipleScattering`: improved printout at initialisation.
    - `G4UrbanMscModel93`: added randomization of step limit for the first step in any volume for option `UseDistanceToBoundary`.
    - `G4WentzelVIModel`: added numerical protections; added `DefineMaterial()` call to the `G4WentzelOKandVIxSection` class to keep conssitency of two classes in run time; optimized method of step limitation; added usage of geometry factor and the option `UseDistanceToBoundary`.
    - `G4WentzelOKandVIxSection`: new class to compute cross sections and sample scattering angle in `G4WentzelVIModel, G4eCoulombScatteringModel, G4CoulombScatteringModel` classes; added momentum dependent limit of scattering angle between single and multiple scattering which allows to use coherently `G4WentzelVIModel` with optical model of hadron scattering.
    - `G4eCoulombScatteringModel`: fixed computation of nuclear recoil.
    - `G4IonCoulombCrossSection, G4IonCoulombScatteringModel`: new model of single scattering and NIEL for ions.
    - `G4UrbanMscModel90, G4UrbanMscModel92, G4UrbanMscModel93`: added warning messages.
    - Removed obsolete classes: `G4UrbanMscModel`, `G4UrbanMscModel2`, `G4UrbanMscModel71`, `G4MultipleScattering`.
  - Bremsstrahlung models:
    - `G4eBremsstrahlungModel`: fix in `SelectRandomAtom()` method. Addressing problem report #1115.
    - `G4eBremsstrahlungModel`: reduced `minThreshold` to `0.1 keV`.
    - Added `G4ModifiedTsai` class, moved from 'lowenergy' module.
    - `G4PairProductionRelModel, G4eBremsstrahlungRelModel`: use general interface to sample polar angular distribution with the `G4ModifiedTsai` generator as a default.
  - `G4UniversalFluctuation`: revision of width correction providing better results for thin targets and a good tail; fixed anomaly at the tail of distribution for thin targets.
  - New class `G4UniversalFluctuation93` is a backcup of original version as in release 9.3 for `G4UniversalFluctuation`.
  - `G4ASTARStopping, G4PSTARTStopping`: replaced C-arrays with `G4PhysicsVector` with spline interpolation; reviewed names of materials (`G4_PHOTO_EMULSION, G4_He, G4_NYLON-6-6`).
  - `G4WaterStopping`: fixed bug in index of data for Fe ion; cleanup in `GetElectronicDEDX()` method.
  - `G4BraggIonGasModel, G4BetheBlochIonGasModel`: new ionisation models for low density media; charge of projectile ion is not changed by these models during tracking in contrary with the default models.
  - `G4BraggModel`: extended validity range above `2 MeV` using ICRU'49 parameterisation for comparison purposes.
  - New `G4ICRU73QOModel` for low-energy negatively charged particles; it is applicable from `5 keV` to `15 MeV` for anti-proton.
  - `G4hIonisation`: use new `G4ICRU73QOModel` for negatively charged particles instead of `G4BraggModel`, which now used to be applied for positive-charged particles only; this modification improves simulation of Barkas effect at low energies (before the effect was simulated precisely in `G4BetheBlochModel` which is used above `2 MeV` for protons/anti-protons); the high energy limit for the new model is the same as for `G4BraggModel` (`2 MeV` for protons/anti-protons).
  - `G4PAIModel, G4PAIySection`: fixed a bug in `G4_Ar`.
  - `G4ionIonisation, G4alphaIonisation`: removed obsolete nuclear stopping flag and `Get/Set` methods (nuclear stopping is simulated by the dedicated `G4NuclearStopping` process).
  - `G4BetheHeitlerModel, G4PairProductionRelModel`: removed unused internal table of cross section.
  - `G4PEEffectFluoModel, G4KleinNishinaModel`: new models providing sampling of atomic relaxations.
  - Removed obsolete classes: `G4ComptonScattering52`, `G4PolarizedComptonScattering`.
  - Fixed defects reported by Coverity tool, mainly related to initialization of static data.
- Utils
  - `G4VMscModel, G4VMultipleScattering`: set `skin=1.0` as a default; added more detailed printout for kaon+.
  - `G4VMscModel`: added protection in computation of the displacement to limit it inside current volume - addressing problem report #1128.
  - `G4LossTableManager`: added new method `GetNumberOfBinsPerDecade()`, which is used in `G4VEmModel` for initialisation of `G4EmElementSelector` - addressing problem report #1115; added methods `PreparePhsyicsTables(), BuildPhysicsTables()`, fixing initialisation of models via `G4EmConfigurator`.
  - `G4EmProcessOptions`: removed extra initialisation code, already existing in `G4LossTableManager`.
  - `G4VEnergyLossProcess, G4VEmProcess, G4VMultipleScattering`: added calls to new `G4LossTableManager` methods `PreparePhsyicsTables()` and `BuildPhysicsTables()`.
  - Added method `GetCurrentElement()` in `G4VEmProcess, G4VEnergyLossProcess` and `G4VEmModel` classes.
  - `G4VEmProcess`: cleanup printout at initialisation for scattering process.
  - `G4VEmModel`: added method `ChargeSquareRatio()` to access current charge of an ion; use this method in `G4VEnergyLossProcess`.
  - `G4VEnergyLossProcess`: call `CorrectionsAlongStep()` only for ions (minor CPU saving); use copy constructors to reduce number of calls to `exp()` for building of the cross section table; minor optimisation in `PostStepDoIt()` to reduce number of calls to `log()`.
  - `G4VEnergyLossProcess`: fix addressing problem report #1141.
  - `G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering, G4VEmModel, G4EmMultiModel`: replaced obsolete method `GetDefinition()` of `G4DynamicParticle` with `GetParticleDefinition()`.
  - `G4EmCalculator`: fix in `GetCrossSection()` method.
  - `G4EmElementSelector`: use spline flag to construct vectors probabilities.
  - `G4EmModelManager`: do not use min energy cut defined by models, so production threshold is defined only by range to energy conversion and is limited only by low limit of energy threshold defined in 'cut' category.
  - `G4EmConfigurator`: fix for case of more than one model added per a process.
  - `G4EmCorrections`: moved `G4AtomicShell` header into source; fixed computation of shell corrections according to prescriptions of original papers; added Bichsel approximation for Barkas corrections for the large `Z > 47`, and use `G4PhysicsVector` instead of C-arrays; these modifications improving energy loss computations for protons at the energies below `10 MeV`, which improving energy loss of heavy negatively charged objects (ATLAS problem).
  - `G4ElectronIonPair`: added method SampleNumberOfIonsAlongStep().
  - `G4VEmAngularDistribution`: new general interface for angular distribution.
  - Added class `G4VBremAngularDistribution`, moved from 'lowenergy' module.
  - Added `G4VAtomDeexcitation`: new general interface to atomic deexcitation module.
  - Fixed defects reported by Coverity tool.
- Xrays
  - Included scintillation rise time to `G4Scintillation`.
  - `G4Scintillation`: allow for the light yield to be a function of particle type and deposit energy in case of non-linear light emission in scintillators. Courtesy of Zach Hartwig (Department of Nuclear Science and Engineeering, MIT). All particles are assigned the `ELECTRONSCINTILLATIONYIELD` unless the user specifies otherwise.
  - `G4SynchrotronRadiationInMat, G4SynchrotronRadiation, G4TransitionRadiation`: added missing process sub-types.

### Event

- Added setting of touchable history of the origin to `G4Track`.
- Added protection against null pointer in `G4TrackStack` and `G4SmartTrackStack`.
- Fixed incorrect destination stack in `G4StackManager` for the case more than three track stacks are used.
- General Particle Source
  - Added automatic energy biasing scheme. Users now can bias the energy distribution sampling to a given power-law distribution (index alpha) via the UI command: `/gps/ene/biasAlpha alpha`. Possibility to specify arbitrary energy distribution by supplying the data points in a 2-column (energy in `MeV` and flux) ASCII file, via the UI command: `/gps/hist/file [your_file_name]`.
  - Bug fix in the Spline interpolation implementation.
  - Bug fix in the logarithm interpolation implementation (alpha = -1 case).
  - Added few accessors methods and implemented concrete destructor for `G4SPSEneDistribution`. Addressing problem report #1149.

### General Processes

- Cuts
  - Fixed possible case of memory leak in `G4PhysicsTableHelper`.
- Decay
  - Make use of 'const' pointer to `G4ParticleDefinition`.
  - Fixed some minor Coverity reports.
- management
  - Fixed initialization of data in constructors for `G4VProces, G4ProcessTable` and `G4ProcessAttribute`.
  - Fixed cases of uninitialised data reported by Coverity.
- Optical
  - Modified `G4OpBoundaryProcess` to call `ProposeLocalEnergyDeposit()` every time a photon is in 'fStopAndKill' state because of `NoRINDEX`. This will trigger scoring when a photon encounters a volume not defined as an optical medium.
  - Added Mie Scattering of Optical Photons; courtesy of Xin Qian (Kellogg Radiation Lab of Caltech), based on work from Vlasios Vasileiou (University of Maryland).
  - Implemented Henyey-Greenstein phase functions.
  - Fix for long-standing problem report #207.
  - Fixed minor Coverity reports.
- Scoring
  - Introduced new class `G4EnergySplitter`, a class to calculate the split of energy in voxels when `G4RegularNavigation` is used. It takes into account of the energy loss and multiple scattering corrections as the particles loses energies from voxel to voxel.
  - Added new `G4ScoreSplittingProcess` to split the length and energy of a step in a regular structure into sub-steps, and to call the scorers for each sub-volume.

### Geometry

- Divisions
  - Introducing `G4ReplicatedSlice`, allowing for gaps in between divided daughter volumes.
- Magnetic field
  - New class `G4MonopoleEq` for rhs of d(pc)/ds propagation in field in SI units.
  - Revised constructor of `G4MagErrorStepper` to add number of State variables. Corrected `MagErrorStepper` to copy state variable to output.
  - Enabled `G4ConstRK4` to copy remaining state variables.
- Management
  - Added `Clone()` virtual method to `G4VSolid`, to return a pointer to a dynamically allocated copy of the solid. To be used by Geant4-MT. Implemented the method for all concrete solids.
  - Added copy-ctr and assignment operator to `G4ReflectedSolid`, now also implementing the `Clone()` method.
- Navigation
  - Added first implementation of G4VoxelSafety, a new class for the computation of exact safety.
  - Added new class `G4PartialPhantomParameterisation` allowing for envelopes of different types other than box for regular geometries, so that relaxing the restriction for voxels to completely fill the envelope container. Adapted `G4PhantomParameterisation, G4RegularNavigation` and `G4Navigator` accordingly.
  - Added new class `G4NavigationLogger` for "check-mode" verbosity. Reorganised verbosity formatting for voxel and normal navigation.
  - Increased unit value to 100 times `kCarTolerance` to make push more effective in `G4Navigator::ComputeStep()`. Added possibility to switch off push notifications in `G4Navigator`; also added related UI command. Added inline method for creation of a touchable-history given a navigation history pointer as argument.
- Solids (Boolean)
  - Introduced recursive algorithm in `CreatePolyhedron()` for Boolean operations: it uses `HepPolyhedronProcessor` from 'graphics_reps' module, using new technique in attempt to avoid numerical problems for the calculation of the polyhedron in `BooleanProcessor`. It allows to try all permutations, also for Booleans of Booleans. Helps in reducing the number of cases of "Error in Boolean processor" for visualization; still some stubborn cases are left.
  - Simplified logic in `G4UnionSolid::Inside()` to exclude obvious conditional cases.
  - Implemented copy-constructor and assignment operator for concrete solids classes to facilitate conversion to Geant4-MT.
- Solids (BREPS)
  - Implemented copy-constructor and assignment operator for solids classes to facilitate conversion to Geant4-MT.
  - Fixed more cases of null pointer forward in `G4BREPSolid`, `G4BREPSolidPolyhedra` and `G4BezierSurface` classes.
- Solids (CSG)
  - `G4Box`: first implementation of speed improvements and corrections from joint code review of `G4Box` class: introduced half-tolerance constants and better logic in some conditional statements. Some code cleanup.
  - `G4Orb`: modified `DistanceToIn(p,v)` to be more consistent with `Inside(p)`.
  - Implemented copy-constructor and assignment operator for all solids to facilitate conversion to Geant4-MT.
  - Added missing validity checks on radii to modifiers in `G4Tubs`.
  - Fixed remaining cases of cout precision restoring in `G4Sphere`.
- Solids (Specific)
  - Introducing new `G4GenericTrap` shape, a new solid representing an arbitrary trapezoid with up to 8 vertices standing on two parallel planes perpendicular to the Z axis.
  - `G4EllipticalCone`: fixes in `DistanceToIn(p,v)` and `DistanceToOut(p,v)` for correct handling of point on the surface. Corrected formula for `SurfaceNormal(p)`.
  - Implemented copy-constructor and assignment operator for all solids to facilitate conversion to Geant4-MT.
  - Avoid possible case of derefencing null pointer in `G4ReduciblePolygon` `RemoveDuplicateVertices()` and `RemoveRedundantVertices()` methods.
  - Fixed case of division by zero in `G4TwistedTubs`.
  - More fixes on Coverity reports for classes `G4TessellatedSolid` and `G4ReduciblePolygon`.
- Volumes
  - Make use of specialized allocator for handling internal vector in `G4NavigatorHistory`, globally controlling the memory pool, to optimise memory management and reduce fragmentation. Measured ~2% average run-time speed-up.
  - `G4GRSSolid, G4GRSVolume`: safer initialisation in copy constructor.
  - `G4PVPlacement, G4PVReplica`: added fake initialisation for all members in specialized constructor for I/O persistency. Added fake return statements after exceptions.
  - `G4NavigationHistory`: restored original implementation for constructor.

### Global

- Introduced `G4PhysicsVectorCache`, placeholder for cache R/W data in use by `G4PhysicsVector` and derivates. Modified `G4PhysicsVector` and `G4LPhysicsFreeVector` accordingly.
- More safe numerical computation of A13() and logA() methods in G4Pow. Added methods logfactorial() and powN() to G4Pow class.
- `G4Allocator`: implemented customizable pool size.
- `G4UnitsTable`: added new category "Solid angle".
- Fixed restoring of cout/cerr formatting in `G4DataVector, G4PhysicsVector`.
- Added class `G4ConvergenceTester`, implementing a facility for estimating the quality of the simulation, by providing statistical information to assist in establishing valid confidence intervals for Monte Carlo results.
- Fixed potential case of memory leak in `G4OrderedTable::Retrieve()`.
- Fixed cases of tainted scalar in `G4DataVector, G4OrderedTable, G4PhysicsTable` and `G4PhysicsVector`.
- Modified FPE handler to get correct `SIGINFO` data for error messages. Added experimental code for MacOSX.
- Added dummy initialization of members in constructors where applicable.
- Changed date for release 9.4.

### Graphical Representations

- Added support for new command `/vis/scene/add/digits`, analogous to the already-existing `/vis/scene/add/hits`: added methods `Draw()` and `FilterDigi()` for digits in `G4VVisManager`; added method `AddCompound()` in `G4VGraphicsScene`.
- Added method `DispatchToModel(const G4VTrajectory&)`, i.e., without `i_mode`, to `G4VVisManager` in order to distinguish usage and in preparation for `i_mode` migration.

### Hadronic Processes

- Implemented transition to adopt integer `Z` and `A`.
- Removed obsolete code for 'leading_particle' model.
- Cross sections
  - `G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS`: added path to new data set through environment variable `G4NEUTRONXSDATA`; use vectors instead of C arrays; use `G4HadronNucleonXsc` class and PDG parameterisation for high energy cross sections of Hydrogen; code cleanup.
  - `G4UPiNuclearCrossSection`: fixed memory leak at destruction.
  - Updated `G4GlauberGribovCrossSection` for anti-protons.
  - `G4VComponentCrossSection`: new interface for cross sections.
  - `G4VCrossSectionDataSet`: added name, min and max kinetic energy and related accessors.
  - `G4IonProtonCrossSection`: some code clenup; moved virtual methods to source, added constructor and destructor, make `G4ProtonInelasticCrossSection` class member. Fixed bug in kinematics.
  - Added `G4CrossSectionInelastic` and `G4CrossSectionElastic`, wrappers for components.
  - New class `G4ComponentAntiNuclNuclearXS` for the calculation of the total elastic and inelastic cross-sections of anti-nucleon and anti-nucleus interactions with nuclei based on Glauber approach.
  - New class `G4CrossSectionPairGG` to extend a given cross-section with a scaled `G4GlauberGribovCrossSection`. Scaling result in smooth transition.
  - `G4BGGPionElasticXS, G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS`: fixed low-energy (`E < 20 MeV`) models.
  - `G4TripathiLightCrossSection`: fix for threshold shape.
  - `G4VCrossSectionDataSet`: introduced new methods, `IsIsoApplicable()` and `GetZandACrossSection()`, replacing `IsZAApplicable()` and `GetIsoZACrossSection()` now obsoleted. Modified code to use the new API.
  - Fix for uninitialized data in cross-sections constructors.
  - Initialize all elements of array `Y[nE]` to zero in `G4ElectroNuclearCrossSection::GetEquivalentPhotonEnergy()`.
  - `G4VComponentCrossSection`: use `G4ParticleDefinition` and kinetic energy instead of `G4DynamicParticle`.
  - `G4EMDissociationCrossSection`: is now applicable for Hydrogen but cross-section for Hydrogen is zero
- Management
  - `G4HadronicProcess`: added methods `CheckEnergyMomentumConservation()`, `SetEpReportLevel()`, `SetEnergyMomentumCheckLevels()` and `GetEnergyMomentumCheckLevels()`, which implement energy/momentum checking. Some code cleanup.
  - New `G4HadronicEPTestMessenger` class to provide energy/momentum test commands available in UI.
  - `G4HadronicProcess`: use new const `GetParticleDefinition()` method of `G4DynamicParticle`. Added protection against negative cross section; some cleanup. Check cross-section value before calling `ApplyYourself()` in `PostStepDoIt()`. If less than or equal to zero, return track unchanged.
  - Fixed data initialisation in `G4EnergyRangeManager`.
  - `G4HadronicInteraction`: added two methods, `GetEnergyMomentumCheckLevels()` and `SetEnergyMomentumCheckLevels()` in order to implement checking of energy/momentum conservation.
  - `G4VPreCompoundModel`: make de-excited `G4Fragment` non-const.
  - `G4VIntraNuclearTransportModel`: moved constructor and destructor to source.
  - Fixed initialisation of data in `G4VNuclearDensity` constructor.
- Abrasion
  - Removed redudant headers inclusion in `G4WilsonAbrasionModel`. Fixed initialization in constructor.
  - Fixed memory leak in method `GetExcitationEnergyOfTarget()` for `G4NuclearAbrasionGeometry`.
- Binary Cascade
  - `G4GeneratorPrecompoundInterface`: define default deexcitation with `G4PreCompoundModel` in the constructor of the class. Minor cleanup as a part of PreCompound model cleanup: added pointers to proton and neutron.
  - Lowered `CaptureThreshold` in `G4GeneratorPrecompoundInterface` from 80 to 10 `MeV`.
  - Fixed memory leak for products in `Propagate()`.
- Bertini Cascade
  - General improvement of code design. Several collider classes re-designed so that they can be re-used.
  - Replaced all uses of `bindingEnergy()` (local Bertini method) with the standard `G4NucleiProperties::GetBindingEnergy(A,Z)`.
  - `G4Diproton, G4Dineutron, G4UnboundPN`: new particle subclasses, implementing the Bertini-specific dibaryon states.
  - `G4ElementaryParticleCollider`: replaced original (incorrect) `pp, pn, nn` 2-body to 2-body scattering angular distributions with a new parameterization of elastic scattering data using the sum of two exponentials.
  - Improved angular distributions for 2-body final states of pi-nucleon, nucleon-nucleon, kaon-nucleon and hyperon-nucleon scattering.
  - Replaced `G4CascadeMomentum` internal class with `G4LorentzVector`.
  - Added energy/momentum checks to remove large energy non-conservation events.
  - Improved memory management: removed allocation of strings in various constuctors; replaced several cases of return-by-value with const or non-const reference, or by use of buffers. CPU speed improvements from the removal of unnecessary class instantiations.
  - Replace std::vectors with fixed-length arrays in places where speed is affected. Use G4cerr for error reporting. Added more verbosity.
  - Improved, but not completely fixed, energy conservation in nuclear breakup. Introduced 4-momentum conservation at each elementary interaction and at the end of most sub-model stages. Some violation still remains for the case of break-up of light nuclei.
  - Bug fix of energy non-conservation in N-body phase space generator.
  - Introduced temporary particle types for nuclear fragments far from stability. These later disappear after the fragments are broken up.
  - Added 4-momentum checking after each sub-model.
  - Improved handling of nuclear excitation energy, now part of nuclear mass.
  - Recover secondaries from elementary hadron-nucleon interactions which were deleted in original Bertini model.
  - A bug resulting in factor of 2 reduction of double differential cross-section in validation at several `GeV`, is now fixed.
  - New interface to `G4Precompound` model added and tested.
  - Fixed bug leading to very low hyperon energies and high CPU usage.
  - Removed several unused classes and did additional code clean-up.
  - Major reorganization of `G4NucleiModel::generateModel()` code. Added scaling factors ("units") for nuclear radii and cross-sections, in order to adapt calculations to the literature.
  - `G4NucleiModel`: put messages related to negative-path-length and zero-interaction-partners behind verbosity flag.
  - Fixed defects reported from Coverity tool.
- Chiral Invariant Phase Space (CHIPS)
  - Updated proton elastic and CHIPS parameters.
  - Implemented anti-baryon elastic interactions.
  - Added pion elastic and fixed a bug in CHIPS fragmentation.
  - Implemented isotope-wise CHIPS elastic for neutrons.
  - Fix in `G4QElasticCrossSection` in parameter order for nH.
  - Bug fix in `G4QNeutronNuclearCrossSection` for Ba isotopes.
  - Bug fix for K0 in `G4QKaonMinusElasticCrossSection::GetExchangeT()`.
  - Fix to use of `Z+N` instead of `N` for `A`.
  - Corrected Titanium and Zirconium isotopes in `G4QIsotope`.
  - Added decay of Chipolino in the `G4QEnvironment`, when `A_env=0`.
  - Bug fix following `G4NucleiProperties` warning for `A=0, Z=0`.
  - Bug fix in `G4QPDGCode` and `G4QEnvironment` for Omega and Sigma; when mass is small for Lambda andSigma+, use Xi0,p.
  - Correction in `G4QElastic` for K0 elastic cross-sections.
  - Corrected treatment of vacuum in fragmentation module.
  - nn is decayed in `G4QLowEnergy`; Omega- is included in `G4QElastic`; N neutrons (`A=N, Z=0`) are decayed in `G4QLowEnergy`.
  - Bug-fix in `G4QLowEnergy`: pions as secondaries.
  - Bug-fix in K0 elastic & Ion-Ion Elastic.
  - Bug fix in 'body' module following tests on HARP data.
  - `G4QEnvironment`: PDG=0 bug fix; photon and safety corrections.
  - Simplified initialisation of pairs in classes `G4QNeutronCaptureRatio, G4QNeutronElasticCrossSection, G4QNeutronNuclearCrossSection` and `G4QuasiFreeRatios`.
  - Added missing std:: to call to 'for_each' algorithm in `G4QInelastic`.
  - `G4QContent`: removed dead code in quark constructor; addressing problem report #1131. Removed dead code also in method `MakePartonPair()`.
  - Removed dead code in `G4QNucleus` and `G4QEnvironment`.
  - `G4ElectroNuclearReaction`: cross section classes are included by pointer and not by value; addresses old problem reported in HyperNews.
- De-excitation
  - `G4ExcitationHandler`: apply FermiBreakUp to fragments with `A>1` (before was `A>4`) in order to reduce number of fake gamma produced in deexcitation of light fragments; added parameter 'minExcitation' equal to `1 keV`; added check on stability of primary; do evaporation if FermiBreakUp cannot deexcite a fragment; added `SetParameters()` method.
  - `G4StatMFMacroTemperature`: cleanup logic of solving equation for temperature to avoid exception; moved constructors and destructor to source.
  - `G4FermiFragmentsPool`: extended list of stable fragments to be coherent with the list of fragments in the GEM model; fix for fragment 111.
  - `G4FermiConfiguration`: parameter of Coulomb energy Kappa is changed from 1 to 6 according to recommendation of original author of the model A.Botvina.
  - `G4FermiPhaseSpaceDecay`: improved model of sampling of kinetic energy; cleanup of the code to use `G4Pow`.
  - `G4UnstableFragmentBreakUp`: new class to decay exotic fragment (like 2n or 2p).
  - `G4Evaporation`: rewritten `BreakUp()` method; added `Initialise()` method at construction, to setup all options and not at run time. Added `InitialiseEvaporation()` method to setup decay channels; changed order of decay channels: first photon evaporation, then fission, finally all other channels as before. Improved condition on how to stop deexcitation loop; added call to `G4UnstableFragmentBreakUp` if natural abundances of cold fragment is zero and `Z < 20`; optimized logic of stopping of evaporation loop; set as a default variant evaporation combining standard plus GEM probabilities.
  - `G4Evaporation, G4EvaporationChannel, G4EvaporationProbability`: improved computation of minimal and maximal evaporation energy.
  - `G4EvaporationChannel`: removed new and delete of probability objects at each to the class, use instead local `G4EvaporationProbability` of the channel.
  - `G4GEMChannel`: use the same formulas as in `G4GEMProbability` class.
  - `G4GEMProbability`: fixed numerical problem (division by zero), code cleanup.
  - `G4VEvaporationChannel, G4PhotonEvaporation`: added two new virtual methods `EmittedFragment()` and `BreakUpFragment()`.
  - `G4DiscreteGammaTransition`: make transition depended on Z and A (before was only Z) and added energy tolerance
  - `G4VGammaDeexcitation`: rewritten kinematics of 2-body decay; fix in kinematics to take into account the electron mass and the binding energy in the case of electron emission.
  - `G4DiscreteGammaTransition, G4DiscreteGammaDeexcitation, G4ContinuumGammaDeexcitation`: set energy tolerance `1 keV`; more accurate Lorentz computations; define destructors to be virtual.
  - `G4DiscreteGammaTransition`: removed unphysical corrections of gamma energy; fixed default particle as gamma; avoid extra subtracting binding energy in case of electron emission; use const-ref for `G4NuclerLevel` data member
  - `G4ContinuumGammaTransition`: use exponential law for sampling of decay time.
  - `G4PhotonEvaporation`: added correction of electron state after emission; fixed probability computation.
  - `G4E1Probability`: code cleanup; added numerical protection to avoid division by zero; fixed probability computation.
  - `G4NuclearLevelManager`: replaced stream input in `Read()` with char[] input and manual conversion to double; reduces 142 MB of memory churn and some CPU speedup.
  - `G4NuclearLevelStore, G4NuclearLevelManager, G4NuclearLevel`: eliminate passing and copying of vectors; fill NuclearLevel directly by Manager; modified `G4ContinuumGammaTransition` accordingly.
  - Add README file explaining the photo-evaporation data files.
  - Removed unused classes: `G4DummyProbability, G4E1ProbabilityXXX, G4E1SingleProbabilityXXX`, where `XXX=001,01,1,10,100` differing only by the scale factor for the probability; scale factor may be applied in the main class if needed.
  - `G4NeutronRadCapture`: use `G4PhotonEvaporation` instead of simplified one gamma emission method.
  - Fixed problems reported by the Coveruty tool (mainly missing data initialisation); moved constructors and destructors to source; code cleanup.
- Elastic scattering
  - Added new model `G4NuclNuclDiffuseElastic`, final state production model for nucleus-nucleus elastic scattering, where Coulomb amplitude is not considered as correction.
  - Use `G4Q(Proton/Neutron)ElasticCrossSection` instead of `G4QElasticCrossSection`; fixed initialization problem for `G4QNeutronElasticCrossSection`.
  - `G4UHadronElasticProcess`: fixed CHIPS warning for Cu, due to wrong isotope selected; addressing problem report from ALICE.
  - New class `G4CHIPSElasticXS` extracted from `G4UHadronElasticProcess`, following `G4VCrossSectionDataSet` interface.
- High Energy Theoretical
  - In `G4HEInelastic` fixed case of array overrun; got rid of dead code and a memory leak in methods `HighEnergyCascading(), MediumEnergyCascading()` and `QuasiElasticScattering()`.
  - Fixed uninitialized data and removed dead code where applicable.
- Im_r_matrix
  - Removed empty source file for `G4VScatterer`. Synchronised developments to HEAD version.
- INCL/ABLA
  - Nuclear deformation and shell effect data reader now constructs the corresponding data tables correctly.
  - Added some internal logging facilities to INCL (disabled by default).
  - Added missing virtual destructor to base classes where necessary.
  - Refactored INCL input data structure to use a new class `G4InclInput`.
  - Access to input data only through accessor methods.
  - INCL now uses integer A and Z internally as well as in the interface.
  - Fixed fragment vector and Fermi break-up related memory leaks in INCL/ABLA interfaces.
  - Corrected initialisation of INCL internal data and added checks on array boundaries in datafile reader.
  - Fixed insufficient array index safeguard in ABLA.
  - Updated interfaces: INCL + built-in ABLA de-excitation and INCL + PreCompound model.
- neutron_hp
  - Bug fix in `MF=6, LAW=2` case in `G4NeutronHPDiscreteTwoBody`; on kind contribution by E.Mendoza, D.Cano-Ott (CIEMAT).
  - Fixed bug in `G4NeutronHPCaptureFS`; addressing problem report #1155.
  - Set lower limit for gamma energy in `G4NeutronHPFinalState`.
  - Added special treatment for `Be9(n,2n)Be8(2a)` case in `G4NeutronHPInelasticBaseFS`; removed unnecessary warnings.
  - Added safety for _nat_ data in `G4NeutronHPInelasticCompFS`.
  - Changed warning message in `G4NeutronHPPhotonDist`.
- Parton-String
  - Added missing virtual destructor to `G4DiffractiveHHScatterer`.
  - Implemented new tuned parameters of nuclear destruction in FTF model; parameters were tuned using HARP-CDP data on p+Cu interactions. Still additional tuning required for heavy nuclei.
  - Use integer interface of G4Nucleus in `G4FTFModel`.
  - Tuned parameters to FTF for pA and PiA interactions; also tuned quark exchange and Reggeon cascade parameters.
  - Improved low mass string fragmentation.
  - Introduced an action in `FragmentStrings()`; string fragmentation is repeated to avoid energy-momentum violation.
  - Introduced phase space restrictions at small mass string fragmentation.
  - Moved inline methods in `G4ExcitedStringDecay` to source.
  - Fixed warning messages in `G4LundStringFragmentation`.
  - Remove unused class `G4PartonStringAnnihilator`.
- Pre-equilibrium
  - Removed unused dummy classes `G4VPreCompoundIon` and `G4VPreCompoundNucleon`.
  - General cleaup of all classes: use `G4Pow` class to speedup computations.
  - `G4PreCompoundModel`: Emission and Transition classes become members created at construction and no longer at run time; initialisation is performed at construction or when options are changed; `G4Fragment` is no longer const, it is modified during process of emission of particles.
  - `G4PreCompoundEmission`: removed `SetUp()` inline method and moved its functionality.
  - `G4PreCompoundTransitions`: fixed bug in the `PerformTransition()` method, to use number of particles instead of number of excitons.
  - `G4PreCompoundModel`: disabled upper limit on excitation energy.
  - `G4PreCompoundTransitions`: fixed bug in the `PerformTransition()` method, use number of particles instead of number of excitons.
  - Fixed Coverity warnings for missing initialisation of data in constructors.
- QMD Reaction
  - Enabled RQMD in `G4QMDReaction` and `G4QMDMeanField`.
- Radioactive Decay
  - G4RadioactiveDecay: in `LoadDecayTable()` create a decay table for isomers not included in RDM database and assume they all under go IT decay. After `DoDecay()` check if there is any secondary produced; kill the track if not to prevent infinite loop. Insert a special treatment for `K-40` beta decay; applied `SetICM()`, `SetARM()` and `SetHLThreshold()` to a decay channel; addresses problem report #1068. Make sure the proper time is positive.
  - `G4NuclearDecayChannel`: added initialisation to all three constructors.
  - `G4RadioactiveDecay, G4NuclearDecayChannel`: limit the shell index to `< 7`, as required by the ARM. Changed to use `BreakUp()` so to limit to one transition per step when ICM is applied; addresses problem report #1001.
  - `G4RadioactiveDecayMessenger`: added the UI commands for `SetICM(), SETARM()` and `SetHLThreshold()`; removed restrictions to hlCMD. `G4RadioactiveDecay`: apply `SetICM()`, `SetARM()` and `SetHLThreshold()` in all decay modes.
  - Completed implementation for generating the activity table in VR mode.
  - Added class `G4RadioactivityTable` for tallying the accumulated radio-activities in VR mode; modified `G4RadioactiveDecay` accordingly, with changes needed to setup the radioactivity tables.
  - Improved code formatting.
- Re-Parameterized Gheisha
  - Fixed initialisation of data in `G4RPGFragmentation` constructor.
- Stopping
  - `G4MuonMinusCaptureAtRest::DoMuCapture()`: fixed unused branch in mass calculation
  - Fixed initialisation of data in `G4PiMinusStopMaterial` and `G4StopDummyDeexcitation` constructors.
- Utils
  - `G4Fragment`: do not add any shift to excitation energy but use direct computation (this is needed to avoid infinite loop in gamma deexcitation); use `G4NucleiProperties` to access or compute ground state mass. Allow e- as a fragment. Improved printout of negative excitation energy. Minor speedup and some code cleanup.
  - Fixed minor leak in `G4KineticTrack`.
  - `G4DecayStrongResonances`: cleanup of unused headers.

### Intercoms

- Added new commands to `G4UIcommand`: `/control/if, /control/add, /control/subtract, /control/multiply` and `/control/divide`.
- Implemented range check of UI commands for units.
- `G4UIManager`: added field to get GUI Window session.

### Interfaces

- `G4VBasicShell`: implemented improvements for command completion.
- `G4UIQt`: added tab widgets for visualization. Added new command in help tree for immediate update of the tree. Fixed warning in standard-output during viewer creation and fixed flush problem. Fixed recursive repaint problem. Fixed call to contructor `QKeySequence()` in `AddButton()` to allow for porting on gcc-4.5.0. Fixed problem with redraw of help tree.
- `G4UIExective`: changed order for session type; GUI session is prioritized.

### Materials

- `G4MaterialPropertyVector`: removed allocation of temporary helper object and modified `GetAdjacentBins()` to allow for a value to match a bin exactly. Measured 21% CPU speed-up for optical processes.
- `G4OpticalSurface`: changed `GetAngularDistributionValue()`, no longer dereferencing a pointer but returning the value at the array index.
- `G4NistMaterialBuilder`: added G4_LUCITE and 6 new materials more. Added DNA biochemical materials. Added G4_CYTOSINE, G4_THYMINE, G4_URACIL.
- `G4NistManager`: use `G4Pow` for fast computations.
- `G4NistMaterialBuilder, G4NistManager`: added method `GetMeanIonisationEnergy()`.
- `G4ionisParamMat, G4DensityEffectData`: added possibility to access density effect data in the case when pure material is not defined via NIST; atom number and state of such materials are checked.
- `G4DensityEffectData`: fixed method `GetIndex(Z, state)` for Hydrogen and solid states, renamed it to `GetElementIndex()`.
- `G4IonisParamMat`: added member and method `GetInvA23()`; use `GetElementIndex()`.
- `G4IonisParamElm`: use mean excitation energy from NIST DB instead of data of the ICRU37 report; addressing a problem reported for mean energy deposition in compound materials.
- `G4AtomicShells`: improved performance by adding indexing array.
- `G4SandiaTable`: fixed bug in `G4_Ar` and in `SandiaMixing()`.
- Removed obsolete unused data classes `G4IronStoppingICRU73`, `G4MaterialStoppingICRU73`, `G4SimpleMaterialStoppingICRU73`, data are uploaded from `G4LEDATA` data set.
- Fixed defects reported by Coverity tool, mainly related to initialization of static data. Adopt G4 types wherever necessary. Some code formatting.

### Particles

- Updated mass/width of muons, taus, mesons, and baryons to PDG-2010.
- Added light anti_nuclei inside hadrons/ions sub-module.
- Added methods `IsLightAntiIon()` and `GetLightAntiIon()` to `G4IonTable`.
- Fix to `G4IonTable::IsLightIon()` method; do not classify neutron and genericIon as light ions.
- Modified `G4ParticleDefiniton::Dump()` to print AtomicNumber/Mass.
- ElectronOccupancy in `G4DynamicParticle` is now created on demand, i.e. it is not created at construction of `G4DynamicParticle` but when `AddElectron()` or `RemoveElectron()` are invoked.
- Allow creation of shortlived particles other than in 'PreInit' state.
- Added `G4DynamicParticle::GetParticleDefinition()` giving 'const' pointer. Code clean up to use const pointer of `G4ParticleDefinition` where possible.
- Fixed signature for std::pair in `G4IonTable` source code for compliance to ISO/C++ Standard.
- Fixed problems that error messages appear in cout and not in cerr.
- Code cleanup in `G4DynamicParticle` constructors.
- Fixed cases of uninitialised data reported by Coverity.

### Persistency

- ASCII
  - Added missing static data initialisation to constructors where applicable.
  - Fixed potential cases of dereferencing a NULL pointer in `G4tgbMaterialMgr`.
  - Fixed cases of unreachable code in `G4tbrVolumeMgr`.
  - Fixed leaks in `G4tgrFileReader`.
  - `G4tgrUtils`: fixed logic in `WordIsUnit()` and fixed restoring of cout precision in `Dump3v()`.
  - Fixed some minor Coverity reports.
- GDML
  - New class `G4GDMLMessenger` instantiated with `G4GDMLParser` and defining UI commands for importing and exporting GDML files, through the various options the parser provides.
  - Corrected `GetWorldVolume()` in `G4GDMLReadStructure`, to make use of the structure stored in memory in case geometry is already imported.
  - Added `G4GenericTrap` among the set of supported solids in both GDML reader and writer, treating as 'arb8' GDML type.
  - Added `GetAuxMap()` method to `G4GDMLParser` and removed 'const' qualifier to types in internal map of logical-volumes. Changed value type to 'string' in `G4GDMLAuxPairType` to avoid extra type evaluation while parsing.
  - Fixed dummy initialisation of members in classes constructors where applicable.
  - Added exceptions asserting validity of dynamic casted pointers.
  - Added possibility to de-activate/activate names stripping when reading files, by invoking a new method `G4GDMLParser::SetStripFlag(bool)` before importing the GDML file. Stripping is activated by default.
  - Fixed minor left Coverity reports. Some code cleanup.
- mctruth
  - Fixed possible case of NULL forward in `G4PersistencyCenter` class.

### Physics lists

- New physics lists and builders:
  - QGSP_BERT_CHIPS: use CHIPS inelastic in cluding cross sections for Kaon and all "misc" particles, including anti-proton, anti-neutron and hyperons.
  - Shielding: A list optimised to shielding applications. Uses FTFP and Bertini for proton, neutron,pion, and Kaon. For neutron at low energy, neutron_HP is used. Uses G4BGGNucleonInelasticXS inelastic cross sections for proton and neutron, G4NeutronHPJENDLHEInelasticData for neutron at low energy, interface to CHIPS cross-sections G4QHadronInelasticDataSet for Kaon. For ions the QMD model is used.
- Physics lists qualification changes (obsolete/partially disabled/experimental/supported):
  - Obsolete and disabled (removed): FTFP_EMV, QGSC_EFLOW, QGSP_EMX, FTFC, FTFP, LHEP_BERT_HP, LHEP_BERT, LHEP_PRECO_HP, QGSC_EMV, QGSC, QGSC_QGSC, QGSP_BERT_DIF, QGSP_BERT_NQE, QGSP_DIF, QGSP_EMV, QGSP_EMV_NQE, QGSP_NQE, QGSP_QE.
  - Obsolete (blocked): QGSP, QGSC_CHIPS
  .
  - Explicitely marked experimental:
  - Marked as supported: QGSP_FTFP_BERT
- Introduced new constructor for all builders with verbosity argument. Existing constructors are kept, but updated default arguments to avoid ambiguous signatures. Changed physics-lists to use the new constructor. Introduced new constructor for G4NeutronTrackingCut.
- EM physics builders and options:
  - Included anti_deuteron, anti_triton, anti_alpha, anti_He3 in all EM builders except the DNA builder.
  - Added `G4WentzelVIModel` for multiple-scattering and `G4CoulombScattering` process for muons in all builders.
  - Use `G4ionIonisation` for He3 and He4 ions in all EM builders.
  - G4EmStandardPhysics_option2: added `G4WentzelVIModel` for multiple-scattering and excluded single scattering model for pi+-, kaon+-, protons (hadron elastic process is responsible for large angle scattering); added BS angular generator for bremsstrahlung.
  - G4EmStandardPhysics_option3: commented out Rayleigh to have better CPU performance.
  - `G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmDNAPhysics, G4EmLivermorePolarizedPhysics`: added `G4GoudsmitSaundersonMscModel` for e+-; added `1 MeV` upper limit for the Livermore ionisation model (was `1 GeV`).
  - Correctly implement new option `SetScintillationByParticleType()` in `G4OpticalPhysics`; make `ConstructProcess()` and `ConstructParticle()` methods public. Added `G4OpMieHG` scattering process.
  - Changed default elastic model in `G4EmDNAPhysics` and switched elastic model in G4DNA physics builder.
  - Added new e- G4DNA processes to `G4EmDNAPhysics` in builders.
  Added also new H-excitation model.
- Hadronic builders:
  - Allow for separate physics for pion and Kaon, i.e. add builders seperating pion and Kaon, `G4{V,}{Pion,Kaon}Builder, G4{LEP,Bertini, QGSP}PionBuilder`, and `G4ChipKaonBuilder`. In QGSP_BERT_CHIPS, use CHIPS `G4QInelastic` via `G4ChipKaonBuilder` for Kaons.
  - In builders `G4QGSP{Proton, Neutron,Pik}Builder` and `G4QGSBinary`, FTFP and FTFBinary builders use cross-section with relativistic rise, using a combination of previously used cross-section and `G4GlauberGribovCrossSection` above `91 GeV`.
  - `G4FTFPNeutronBuilder, G4FTFPPiKBuilder, G4FTFPProtonBuilder, G4QGSPNeutronBuilder, G4QGSPPiKBuilder, G4QGSPProtonBuilder, G4QGSBuilder`: added deletion of `G4ExcitationHandler` and `G4QGSMFragmentation`; added deletion of neutron builder for QGSP_BERT, FTFP_BERT, QGSP_FTFP_BERT.
  - Replaced `G4HadronQElasticPhysics` with `G4QElasticPhysics` and `G4IonPhysics` with `G4QIonPhysics` in the CHIPS physics-list. Particles are restricted to SU(3) hadrons (no pi0 & eta) in `G4QElasticPhysics`. Fix in `G4QPhotoNuclearPhysics` to reset particles iterator.
  - `G4IonBinaryCascadePhysics`: added `G4IonProtonCrossSection`.
- `G4HadronElasticPhysics` renamed to `G4HadronElasticPhysics93` `G4HadronElasticPhysics` is now a copy of `G4HadronHElasticPhysics`. Applied related changes to QGSP_BERT_EMV. `G4HadronHElasticPhysics` is now marked as obsolete.
- Fixed bugs in `G4IonQMDPhysics`: wrong energy limit for overlap with BIC; also use QMD for d, alpha.
- `G4HadronElasticPhysicsHP`: added CHIPS cross sections for p and n on Hydrogen and Helium targets.
- Updates to lists:
  - Revised QGSP_FTFP_BERT and FTFP_BERT lists to use CHIPS G4QInelastic for all "misc" particles, including anti-proton, anti-neutron and hyperons, and use interface to CHIPS cross-sections `G4QHadronInelasticDataSet` for kaons. Required changes to respective `HadronPhysics*` classes.
  - LBE: substituted obsolete `G4MultipleScattering` by particle wise processes. Updated to comply with the new EM design (use Livermore models rather than LowEnergy processes).
  - QBBC: disabled multi-fragmentation model of deexcitation.
  - QGS_BIC and FTF_BIC now use `G4NeutronXS` cross sections.
- `G4DataQuestionaire`: fix for problem report #1125 for optical physics, to correctly check on `G4REALSURFACEDATA` path.
- Added check on new `G4NEUTRONXSDATA` data set for QBBC and in `G4NeutronCrossSectionXS`.

### Run

- Added `G4ScoreSplittingProcess` if geometry includes a regular structure.
- Added protection against particle without process manager.
- Introducing two new methods in G4RunManager class, `ReOptimize()` and `ReOptimizeMotherOf()`; these will cause re-optimization (re-voxelization) of one particular logical volume without forcing re-optimization of the entire geometrical hierarchy.
- `G4RunManagerKernel`: in `RunInitialization()`, notify `G4VisManager` when geometry needs to be closed.

### Track & Tracking

- Added `G4Track::GetParticleDefinition()` returning 'const' pointer, if possible.
- Added warning exception if `GetDeltaEnergy/Momentum()` methods are invoked. These methods are now obsolete and planned to be removed.
- Added touchable history of the origin to `G4Track`.
- Added protection against possible null pointer in `G4Track::GetVelocity()`. Use PhysicsVector for calculation of `GetVelocity()` for better performance.
- `G4SteppingManager`: use canonical form for `G4Exception`. Added protection for possible negative index in method `ApplyProductionCut()` and some printout formatting.
- `G4Step::GetSecondary()` gives back a `const G4TrackVector*`, while `G4Step::GetfSecondary()` gives back non-const pointer.
- Fixed restoring of output settings in `G4SteppingVerbose`. Fixed cases of restoring cout/cerr precision formatting in several classes.
- Use 0 instead of NULL where applicable.
- Fixed minor reports from Coverity.

### Visualization

- Management
  - Added new `/vis/open` command for OpenGL viewers, `/vis/open OGL`. This new form allows the same macro to be used whether one is on Linux or Windows (calling OGLSX on Linux and OGLSWin32 on Windows). When the application has been built with Qt, it will use the Qt form of OpenGL; when built with Motif, it will use the Motif form of OpenGL. Also added options OGLI and OGLS to force Immediate or Stored modes. The user is still free to use the older, specific viewer names, such as OGLIX, but the simple form, OGL, will give the most portable macros.
  - Added new `/vis/open` command for OpenInventor, `/vis/open OI`. This new form allows the same macro to be used whether one is on Linux or Windows (calling OIX on Linux and OIWin32 on Windows).
  - Added `/vis/scene/add/digis` and `/vis/filtering/digi` commands, analogous to the already-existing commands `/vis/scene/add/hits` and `/vis/filtering/hits`. As with hits, it remains the user's responsibility to provide the digitisation classes. Added method `AddCompound(const G4VDigi&)` to drivers.
  - Introduced DispatchToModel without `i_mode`. The archaic form `G4VTrajectory::DrawTrajectory(i_mode)` is replaced by the newer form, `G4VTrajectory::DrawTrajectory()`. `i_mode` used to be a parameter to control whether the trajectory was drawn as a line, a line plus step points, or only step points:
    - 'i_mode > 0' meant draw lines and points, size of points in 'pixels = abs(i_mode)/1000'
    - 'i_mode = 0' meant draw only lines
    - 'i_mode < 0' meant draw only points, size of points in 'pixels = abs(i_mode)/1000'
    Since release 8.1, better control has been available from the command `/vis/modeling/trajectories`. Since release 5.0, `i_mode` less than 1000 has in fact drawn no points and `i_mode` of 1000 has drawn points that were so small (a single pixel wide) that they were overshadowed by the trajectory itself except at endpoints of the trajectory or where the trajectory made a sharp change of direction. Use of `i_mode` is now trapped and a warning gets printed.
  - Changed order of flags to follow `G4UIExecutive`.
  - Moved all non-fatal output messages from `G4cerr` to `G4cout` for DAWN, VRML and gMocren drivers.
  - `G4VisManager, G4VisExecutive`: introduced optional verbosity string argument in constructor; made 'fVerbosity' and `GetVerbosity()` static.
  - Added virtual destructors to fix compilation warnings.
  - Added `/vis/viewer/set/defaultColour` and `defaultTextColour` commands.
  - Fixed `G4VisExecutive` inlined constructor.
  - Fixed some Coverity reports.
- Modeling
  - Added `G4DigiModel` and `G4DigiFilterFactories`.
  - Added default colours to `G4TrajectoryDrawByParticleID`.
  - Replace polyhedra with solids for sections and cutaways.
  - Trap use of `i_mode` and print warning.
  - Fixed time-slicing problem.
- Externals
  - `G4OpenGL2PSAction`: added new method to set viewport.
  - Updated gl2ps to version 1.3.5.
- gMocren
  - Removed dependency on `G4VisManager`. Improved printout.
- HepRep
  - Added command `/vis/heprep/renderCylAsPolygons`.
- OpenGL
  - `G4OpenGLQtViewer`: better inclusion of new tabs in UI part. Many improvements to OpenGL Qt.
  - Speed improvements for polymarkers (e.g., trajectories).
  - Some improvements with auto rotation mode.
  - Corrected strdup usage in `G4OpenGLViewer`.
  - Use generic section and cutaway algorithm.
  - Added protection against multiple repaint call, and protection against resizeGl with bad values.
  - Improved kernel visit trigger.
  - Time-slices fade to background colour.
  - Added verbosity control.
  - Tidied display list limit.
- OpenInventor
  - Added protection against repeated initialisation.
  - Protected output with `G4VisManager::confirmations`.
  - Improved kernel visit trigger.
- RayTracer
  - Added missing virtual destructor to `G4VRTScanner, G4RTXScanner` and `G4RTSimpleScanner` classes.

### Environments

- G4Py: revised usage of MultipleScattering classes to make use of new particle based processes. Fixed bug in wrapping of `G4GDMLParser`. Updated run-manager and physics-lists. Added new example using GTK First experimental support for Python3. Updates to support changes in kernel.
- Momo: revised obsolete trajectory drawing. Using `QGSP_BERT` physics-list instead of `GPE`. JAVA source codes is now included.

### Data sets

- New data set G4NEUTRONXS-1.0 for evaluated neutron cross section data on natural composition of elements:
  - Path to data controlled by variable `G4NEUTRONXSDATA`.
- New data set G4PII-1.2 for shell ionisation cross-sections to be used in precise impact ionisation simulation.
  - Path to data controlled by variable `G4PIIDATA`.
- New low-energy data set, G4EMLOW.6.19:
  - New directory and data files needed by ionisation cross section models for PIXE; added data tables in the directories uf, kpcsPaul and kacsPaul included in the 'pixe' dir.
  - Added 'sigmadiff_cumulated_elastic_e_champion.dat' and temporary 'sigma_excitation_e_born.dat' to dna module.
  - Added data files in the penelope module, necessary for Penelope08 models for gamma rays.
  - Added sigma_excitation_e_born.dat file for G4DNABornIonisationModel.
  - Updated G4DNA data tables.
  - added two new Geant4-DNA files for for vibrational excitation and attachment sigma.
  - Added extra stopping power data for ions; data are obtained from computations of PASS code by A.Schinner.
  - Updated sigma ionisation Rudd data.
  - Updated PDF.dat to msc_GS module.
- New neutron data set with thermal cross sections, G4NDL.3.14:
  - Added Zinc and Tantalum data.
  - Updated Lithium and Boron data.
- New photon-evaporation data set, G4PhotonEvaporation.2.1:
  - Added documentation file, with data format description.
- New radioactive decay data set, G4RadioactiveDecay.3.3:
  - Added documentation file, with data format description.

### Examples

- Various fixes, improvements, adoption of new features.
- Adopt `G4UIExecutive` to initialise UI sessions in nearly all examples.
- Updated visualization usage in most examples, including macro sections the user can uncomment to activate additional features.
- Fixed AIDA file option for most examples making use of histogramming.
- Completed migration to use particle-based multiple-scattering.
- Updated reference outputs.
- advanced
  - brachytherapy
    - General code review.
  - ChargeExchangeMC
    - New application for Monte Carlo simulation of charge exchange, based on a real experiment performed at the Petesburg Nuclear Physics Institute (PNPI, Russia).
  - eRosita
    - New example implementin a simplified seetup of the eROSITA X-ray telescope for instrumental background simulations and fluorescence measurements.
  - gammaray_telescope
    - Corrected initialisation of G4ThreeVector.
    - Now using reference physics-list.
  - hadrontherapy
    - Removed the macro 'GUI.mac' contained in the macro folder: the GUI personalisation are contained in the 'GUIPersonalisation.mac' file that runs when the default macro files are called.
    - Fixed the modulatorMacro.mac for the modulator rotation and included the modulator.loop file for automatic rotation of the modulator wheel.
    - Removed the 'addPackage' command. Now reference physics-lists can be activated setting the enviroment variable `PHYSLIST` to the name of the list. Modified `main()` program in order to launch different macro file depending if `PHYSILIST` variable is activated or not. Removed some macro files.
    - Correctd range shifter and modulator positions. Corrected position of primary proton beam.
    - Changed the macro command name to store secondary particles to: `analysis/secondary [true/false]`.
    - Added a macro command to store dose between runs: `analysis/writeDoseFile [filename]`.
    - Fixed bug in nanalysis messenger when analysis is not set.
    - Added `QGSP_BIC_EMY` reference physics list.
    - Added separation between cut for the transport beam line and detector.
    - General code review and updated and cleaned macro files. Updated README.
  - human_phantom
    - Corrected a bug in Event action.
  - medical_linac
    - Corrected and updated the vis.mac file.
    - Added 'Launches' folders to store simulation outputs and macros...
    - Added a phantom based on dicom CT images.
    - Added the capability to rotate the accelerator (around the X axis and around the Y axis of a fix 90 deg angle). Added the capability to translate the phantom.
    - Modified the format of the output files and removed obsolete files.
  - microdosimetry
    - Modified energy limit of Sanche vib excitation for `e-`.
    - Added H excitation.
  - nanobeam
    - Added post step point information to `SteppingAction`.
    - Updated for production of histograms with AIDA.
  - xray_fluorescence
    - Corrected bug in the `MercuryPrimaryGeneratorAction`.
- extended
  - Retired extended examples: ExDiane.
  - analysis/AnaEx01
    - Added class HistoManager to replace `AnaEx01AnalysisManager`.
  - analysis/N03Con
    - Moved `G4ConvergenceTester` to kernel inside global/HEPNumerics module.
    - Renamed classes. Introduced NIST materials. Added vis macro.
  - biasing/ReverseMC01
    - Added initialisation of data in `G4AdjointPhysicsList` constructor.
    - Modified some tests in `RMC01AnalysisManager`.
    - Corrected density of Si in `RMC01DetectorConstruction` and corrected position of the lower Ta plate.
    - Fixed compilation error on Windows.
  - electromagnetic/TestEm0
    - New physics-lists for EM standard options 0,1,2,3.
    - Print out cross-sections in `RunAction`.
  - electromagnetic/TestEm1
    - `RunAction`: replaced 'ProcessCount' with a map.
  - electromagnetic/TestEm2
    - Added histos rms on profiles (histos numbering is changed) and new scripts.
  - electromagnetic/TestEm3
    - Added `PhysListEmStandardGS` and `PhysListEmStandardWVI`.
    - Added printout of mean number of gamma, `e-, e+`.
    - Added ion scattering model into WVI Physics constructor.
  - electromagnetic/TestEm5
    - Added ion scattering model into WVI Physics constructor.
  - electromagnetic/TestEm6
    - Fixed compilation error on gcc-4.5.1.
  - electromagnetic/TestEm7
    - Added extra EM option "ionGasModels", which disables effective ion charge and enables use of new models G4BraggIonGasModel, G4BetheBlochIonGasModel.
    - Added extra macro ionGasC12.mac.
    - Added standard HistoManager. Fixed normalisation factor in histograms 2 and 3.
    - `PhysListEmStandardNR`: removed obsolete set of nuclear stopping flag.
    - Added ion scattering model into SS physics constructor.
  - electromagnetic/TestEm8
    - Completely revised in physics, scoring and histograms for treatment of ionisation in thin absorbers and gaseous detectors.
    - Added reation of distribution output file in Histomanager.
    - `PhysicsList, Em8DetectorConstruction`: renamed "VertexDetector" with "GasDetector". Fixed UI commands for step limiter.
    - Added cut per region in input macro.
    - DetectorConstruction: added more printout.
    - DetectorMessenger: fixed state; added `G4State_PreInit`.
  - electromagnetic/TestEm9
    - Histo: use empty option when opening file
    - PhysicsList: use default constructor for elastic builder.
    - Added applyCuts option to macro files.
  - electromagnetic/TestEm11
  - electromagnetic/TestEm12
    - Added lists `PhysListStandardGS, PhysListStandardSS, PhysListStandardWVI`.
    - Added EGSnrc data in 'sandia' subdirectory.
  - electromagnetic/TestEm13
  - electromagnetic/TestEm14
    - `PhysicsList`: extended 'ProductionCuts' down to `100 eV`. Removed non pertinent EmOptions.
    - `PhysListEmStandard, Livermore, Penelope`: all processes registered as discrete (i.e., no continuous energy loss).
    - `RunAction`: replaced 'ProcessCount' with a map.
    - Cleanup in `SteppingAction`. Updated README.
  - electromagnetic/TestEm16
    - `SteppingAction`: use const pointers for step/track objects.
  - electromagnetic/TestEm18
    - `PhysicsList, PhysListEmStandardFLUO`: updated according to changes in electromagnetic/utils module.
    - Removed obsolete builders for Livermore and Penelope in `PhysicsList`; added fluorescence and PIXE options.
  - eventgenerator/exgps
    - Added batch input macro.
    - Added extra tests in the macros directory for automatic energy biasing and to import energy spectrum in ascii file.
    - Changed analysis macro files; added plotfiles.py and plotall.py scripts for plotting the results.
  - eventgenerator/HepMC
    - Updated to make use of HepMC-2.06.03.
    - Use QGSP_BERT physics-list.
  - eventgenerator/particleGun
    - New example demonstrating three different ways of usage of `G4ParticleGun`, shooting primary particles in different cases.
  - exoticphysics/monopole
    - Substituted QGSP list by QGSP_BERT.
    - Added new classes for monopole `G4MonopoleEquation`, `G4MonopoleFieldSetup` and `G4MonopoleTransportation`.
    - Use most recent version of monopole transportation, delta-electron production enabled, non-integer monopole charge allowed.
    - Added test on ionisation of heavy highly charged particle; some cleanup.
  - field/field04
    - Included Mie scattering process and updated usage of `G4PhysListFactory`.
  - geometry/olap
    - Fixed uninitialised data in OlapInfo, causing undefined behavior.
    - Fixed compilation warnings for unused parameters.
    - Added simple batch input macro.
  - hadronic/Hadr01
    - Cleanup of physics-list according to last update to physics_list library. Use default elastic builder for majority of cases. Removed TRV lists and cleanup elastic.
  - medical/DICOM
    - Added function to read nested items (defined and undefined).
    - Removed dependencies on CONQUEST.
    - DICOM handler can now read whichever DICOM file (PT,CT,DR,CR,US,MR... ).
    - Introduced partial phantom definition and adopt new `G4ScoreSplittingProcess`.
    - Fixed compilation warning on virtual methods hiding and minor others.
  - medical/electronScattering
    - Added `PhysListEmStandardWVI`.
    - Print unormalized fluence per event in `RunAction`.
  - medical/electronScattering2
    - New example for simulation of precision electron scattering benchmark with minimal user code.
  - medical/fanoCavity[1,2]
    - Introduced `PhysListEmStandard_option2` and `PhysListEmStandard_WVI`.
    - Added to `run01.mac` all physics-lists choice.
    - Corrected initialisation of 3-vector in constructor.
  - medical/GammaTherapy
    - Removed unused methods in PrimaryGeneratorAction.
  - optical/LXe
    - Fixed initialisation of G4ThreeVector.
  - optical/wls
    - Included Mie scattering process and updated usage of `G4PhysListFactory`.
    - Corrected bug in definition of sensitive detector, when updating geometry.
  - parallel/MPI
    - General code review.
    - mpi_interface: OpenMPI as default MPI library instead of LAM/MPI; improved `/mpi/status` command (added waste of CPU, time measurement); improved macro file parser (same parser as `G4UIbatch`; fixed unexpected behavior at the end of batch mode); changed "beamOn" behavior for better performance (thread-out for interactive, on-thread for batch).
    - exMPI01, exMPI02: use `G4UIcsh` instead of `G4UItcsh` since OpenMPI is now default.
  - parameterisations/gflash
    - Added default production cut to region crystals to cleanup warning on stderr. Fixed also some compilation warnings.
  - persistency/gdml
    - `G01`: added `G4GenericTrap` to the `solids.gdml` sample. Use string as second item in auxiliary-value in `main()`. Added commented command for de-activating names stripping while reading. Use world volume for tracking to dump to GDML file.
    - `G02`: fixed use of obsolete physics-list.
    - `G03`: fixed use of obsolete physics-list.
    - `G04`: new example showing how to associate a sensitive detector to a volume through auxiliary-information.
  - persistency/P03
    - Corrected README.
  - radioactivedecay
    - New example "rdecay01" to demonstrate basic functionality of the `G4RadioactiveDecay` process.
    - Renamed "exrdm" example to "rdecay02". Updated `exrdmAnalysisManager` to output the accumulated radioactivities at the end of a run, in VR mode. Added more macros `u238-b.mac, u238.mac, po201m.mac` and `proton-beam.mac`.
  - runAndEvent/RE01
    - Added a protection against empty stack in `RE01StackingAction`.
  - runAndEvent/RE02
    - Bug fix in `RE02DetectorConstruction`, correcting size of array and fixing crash on Windows.
    - Fixed warning messages.
- novice
  - N03
    - Changed classe mames, suppressed 'ExN03' prefix.
    - `DetectorConstruction`: introduced NIST materials.
    - Rationalised visTutor: several obsolete macros deleted; 6 macros improved and retained (`Tree0, Vis0,5,12,13, heprep`); updated `gui.mac` accordingly and moved to main directory; updated `main()` program.
    - Updated README.
  - N04
    - Replaced QGSP list with QGSP_BERT.
  - N06
    - Added Mie scattering process and associated material properties.