# Geant4 9.5 Release Notes

Geant4 9.5 Release Notes

December 2nd, 2011

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. Supported CLHEP version
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.7 with gcc-4.2.1
- Windows7 with Visual C++ 10.0 (Visual Studio 2010)

More verified configurations:

- Linux, gcc-4.6.2
- Linux, Intel-icc 11.1, 12.0
- MacOSX 10.6 with gcc-4.2.1
- Windows/XP with Visual C++ 9.0 (Visual Studio 2008)

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. Supported CLHEP version

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

## 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.4 to release 9.5. Note that for all users a full re-installation of libraries (or a full recompilation) and a recompilation of user applications is required.

Configuration

- The CMake system for installation replaces the old Configure script. CMAKE has been extended to cover all features. Complete information on how to use the new CMake system can be found in the User Installation Guide (Note: the old Configure script has been removed, as planned).
- Geant4 now comes with an embedded CLHEP module (based for this release on version 2.1.1.0 of CLHEP), which includes the subset of CLHEP library classes required by Geant4. On installation there is a choice between using this embedded module or installing CLHEP as an external library. Through the GNUMake system, the use/installation of the external CLHEP is triggered if the environment variable `CLHEP_BASE_DIR` is set; otherwise the embedded CLHEP module is used. With the CMake system, the embedded CLHEP is selected by default.
- An additional package, `expat`, required by the the new hadronic `lend` module is also included in the `externals` directory and is built automatically on Windows. On Linux or Mac, the `expat` library available in the system is used instead by default.

Standard Electromagnetic physics

- Standard EM physics lists now require the G4EMLOW data files (version 6.23), in order to access precise cross-sections for Bremsstrahlung.

Low Energy Electromagnetic physics

- All classes describing interactions of electrons, positrons and photons (Livermore and Penelope based) have been upgraded to the common software design adopted by both Standard and Low-Energy electromagnetic domains. Users are invited to use these upgraded classes following the migration procedure described in the following page: https://twiki.cern.ch/twiki/bin/view/Geant4/LoweMigration. The old obsolete classes have been removed from the Geant4 kernel. Users are invited to contact the Low Energy Electromagnetic working group in case of difficulties with this upgrade.

Persistency

- A new version of the GDML schema (GDML-3.0.1) is included in this release. The GDML reader and writer are now compliant with GDML-3.0.1.

Physics Lists

- Number of reference physics lists is reduced. Nearly all EM 'variant' physics lists are no longer available as a class in the library (e.g., FTFP_BERT corresponds to a class in the library, FTFP_BERT_EMV does not exist as a class). However, EM options are all easily available from updated `G4PhysListFactory`, allowing to use any EM option on top of a base hadronic physics configuration (e.g., it is possible to request "FTFP_BERT_EMV" by name).
- The implementation of physics-list constructors (builders) has been revised. Ordering numbers for processes are no longer used. Old method is still allowed but it is recommended for a custom user's physics list to be revised to be compatible with the new mechanism.

Use of Exceptions

- Obsolete signature of `G4Exception` (using only one, text string, argument) has been removed. Use of a signature with four arguments, including severity, is now mandatory. For code that is portable between previous releases and this release, it is necessary now to use the signature:
  `void G4Exception(const char* issure, const char* errorCode, G4ExceptionSeverity severity, const char* comments)`
  Note: the `enum G4ExceptionSeverity` has been defined since Geant4 release 5.0 and its values are: `FatalException, FatalErrorInArgument, EventMustBeAborted, RunMustBeAborted,` and `JustWarning`.

Data Sets

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

- New data set versions: `G4EMLOW.6.23, G4RadioactiveDecay.3.4, G4PhotonEvaporation.2.2, G4PII-1.3, G4NDL.4.0, G4NEUTRONXS-1.1`.

## 4. New Developments and Capabilities

Geometry

- It is now possible to define volumes with material in parallel geometry layers. The volumes created can complement or overlap the standard 'main' geometry for tracking. This new capability is called a "layered mass geometry". Zero, one or more additional layers for the mass geometry can be used. This is an enhancement of the existing functionality for parallel specialised geometries, which has been used for scoring, fast simulation, shower parameterisation and event biasing. The registered parallel geometries are scanned now for material. A side effect of this new capability is that all geometries and all regions in the each world defined are now scanned for their material.

Materials

- Applications with many materials can reduce their memory footprint by using the new `Base Material` capability. With it, materials with the same composition but different density will share entries in the tables of all electromagnetic processes. Tables with cross-sections, stopping powers and ranges are precomputed only for base materials. Any number of materials with different names and densities can be built from one base material. So, for example,it is now possible to define large number of "water" materials with slightly different densities. Only the base "G4_WATER" physics tables will be built at initialisation; these will be scaled at run time for all derived materials .

Standard Electromagnetic physics

- A new tune of the Urban multiple-scattering model for electrons is provided. Is is named `G4UrbanMscModel95`. This features higher accuracy of electron scattering and stability of energy deposition when the step size is varied. The model is currently set as the default for electrons and positrons.
- A new model for Bremsstrahlung, `G4SeltzerBergerModel`, is now used by default at energies below `1 GeV`. The model is based on tabulated cross-sections published by S.M. Seltzer and M.J. Berger. It provides agreement with the low energy Livermore and Penelope models below `10 MeV` and the standard relativistic model at `1 GeV`, improving the most over the previous 'standard' Bremsstrahlung model in the energy range from `1 keV` to `1 GeV`.
- New biasing options are provided which can be used both with standard and low-energy electromagnetic physics. They include cross-section biasing, forced interaction, and secondary particle biasing. The secondary particle biasing consists of Bremsstrahlung splitting and Russian Roulette. All these options can be activated per process, particle, energy and geometrical region via UI commands or C++ code.

Hadronic physics

- Interactions of antibaryons (including antihyperons) and light antinuclei with matter have been implemented in the Fritiof (FTF) model. This model is valid for incident antibaryon energies from `0 to 1 TeV`, and for incident antinucleus momenta from `150 MeV/c/nucleon` up to `2 GeV/c/nucleon`. Corresponding antibaryon and antinuclear cross section classes have also been added. New processes were added to handle inelastic reactions of antideuterons, antitritons, anti3He and antialphas.
- Cascade models
  - Bertini
    - The Bertini cascade is interfaced to the pre-compound and de-excitation module, enabling improved generation of low energy secondaries. This option is fully benchmarked, and is targetted for applications sensitive to the spectra of low energy nuclear products.
    - An interface for re-scattering the fragments of the high energy string models has been created. This is an early stage development.
    - Bug fixes in the three-body final state reactions provided slightly better angular distributions of final state hadrons.
    - Memory churn (allocation and de-allocation of memory) was significantly reduced throughout the model.
    - A new nucleon-coalescence model is available, for improved production of energetic deuterons and light ions. It is not the default in existing configurations, due to the extra CPU cost.
    - Gamma-nucleon channels were added for future use, but are not activated.
  - Binary
    - The excitation energy used for re-scattering was improved.
    - The large energy non-conservation observed for hydrogen targets was fixed.
  - INCL/ABLA
    - The first version of INCL++, based on the INCL4.6 model, was released. It supports proton, neutron and pion projectiles up to `3 GeV` and uses the native `G4ExcitationHandler` for nuclear de-excitation after the cascade.
    - The INCL light ion model now supports incident ions up to 18-Oxygen.
- Nuclear de-excitation models have been improved to allow `G4PhotoEvaporation` to be used for nuclei with `Z > 100`. Users may now include their own photo-evaporation data files. Several improvements were also made to the Fermi-Breakup model to improve behavior for light (`A < 17`) target nuclei.
- Several elastic scattering cross-sections, models and processes were extended to handle antimatter projectiles. These include `G4WHadronElasticProcess`, `G4AntiNuclElastic` and `G4CHIPSElasticXS`.
- A new module which handles quasi-elastic scattering has been created. It is extracted and now separate from the CHIPS code where it originated. It is used by all physics lists.
- Low energy neutrons interactions based on data-libraries:
  - The Geant4 Neutron Data Library (G4NDL) is now based on the ENDF VII database exclusively. Its new version, G4NDL 4.0, is required for use with the High Precision (HP) models with this release.
  - New translations of alternative neutrons database (ENDF, JENDL, JEFF, MENDL, CENDL), are being made available separately from IAEA. These can be used with the current HP neutron models, for studies of systematics.
  - Thermal scattering is enabled in the HP neutron models and the appropriate data files have been added to ENDF/B-VII, with the exception of para (ortho) H and D, liquid (solid) methane and benzene.
  - New low energy neutron models (LEND) which use the Livermore neutron database have been released. They use the GIDI interface to the database. All information on this database will be maintained and updated by Lawrence Livermore National Lab.
- Radioactive decay has been extended to handle forbidden beta decays and spontaneous fission. The corresponding data set has been updated to reflect this. The radioactive decay code was also corrected to allow atomic relaxation of de-excited nuclei produced during alpha and beta decay. Bug fixes in the internal conversion code now provide better agreement with deexcitation gamma spectra. Also, new code and messenger commands now allow directional biasing of decay daughters, including e-, e+, gamma, n and alpha.
- Improved muon-nuclear reactions are implemented in `G4VDMuonNuclearModel`. Here, the LEP models that used to handle the meson interactions are replaced by the Bertini Cascade. A new cross-section class, `G4KokoulinMuonNuclearXS`, was developed which splits out the cross-section code which was formerly hard-coded into the old muon-nuclear process.
- Energy and momentum checking at the process and model level can now be enabled by environment variable.

Interfaces and Visualization

- Improvements to the Qt Graphical User Interface and Viewer. Involves installation of Qt from qt.nokia.com and selection with CMake - see CMake instructions.
- Users are encouraged to use the generic "`/vis/open OGL`" command, which selects the OpenGL viewer most appropriate to the installation.
- Some new /vis/ commands - see Detailed list of changes and fixes.

Physics Lists

- The new `G4SeltzerBergerModel` bremsstrahlung model is used by all standard EM builders below `1 GeV`.
- The new `G4UrbanMscModel95` model is used by all EM builders except for `G4EmStandardPhysics_option2` in which the old `G4UrbanMscModel93` model remains. In the `G4EmStandardPhysics_option2` builder, `G4WentzelVIModel` is used for multiple scattering of protons, pions and kaons. The Rayleigh scattering process is added to `G4EmStandardPhysics_option3` builder.
- The physics-list factory allows to select one of EM options on top of base hadronic physics configuration. "_EMV" - standard option1, "_EMX" - standard option2, "_EMY" - standard option3, "_LIV" - Livermore, and "_PEN" - Penelope.

## 5. Expected effects on physics and computing performance

Standard Electromagnetic physics and cuts

- Improved the accuracy of the Bremsstrahlung simulation and low-energy electron transport. Due to the adoption of the new model for Bremsstrahlung, the kernel part of the electromagnetic shower appears slightly narrower, no effect on the tails of the electromagnetic shower are observed.
- Retained similar CPU performance to the previous Geant4 versions.

Hadronic physics

- The recommended physics lists for HEP applications (FTFP_BERT, QGSP_FTFP_BERT and QGSP_BERT), show results very similar to the previous production release. A small decrease in energy deposited in calorimeters is expected for FTF-based physics lists with respect to the previous release for primaries with energy above `20 GeV`. The decrease is of order `~1%`.

## 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 low-momentum particles which loop in magnetic fields (a physical effect, which can consume a lot of CPU time for little ) 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

- CMake:
  - Set default to build shared libraries on all platforms.
  - Added support for Xm Motif and OpenInventor drivers.
  - Updated scripts to export use of internal CLHEP when used. Option to use system CLHEP is automatically set to ON if the user has supplied a `CLHEP_ROOT_DIR` argument.
  - Added script `UseGeant4.cmake` providing a simple CMake module which users can include to setup the build of a basic Geant4 application. It sets definitions, include directories and compiler flags.
  - Added support for generation of DLL libraries on WIN32 platform.
  - Abilitated built-in dylib symbols on Mac for shared libraries; it is now no longer necessary to specify paths in `DYLD_LIBRARY_PATH`.
  - Automatically use GDML if user supplies `XERCESC_ROOT_DIR` argument as path to XercesC installation. Added support for setting GDML/Xerces variables as needed.
  - Providing full setup of environment from build and install trees, allowing developers to build applications directly using the build tree.
  - Fix for Unix platforms in setting the output directory for libraries. Partially addressing problem report #1200.
  - Added universal shell script skeleton for generating backward compatible environment variable setup. Addressing problem report #1202.
  - Added 'uninstall' target to remove all items installed via the install command.
  - Removed unsetting of data library environment variables in generated environment scripts.
  - First version of CPack configuration for binaries. Added TBZ2 and ZIP types back into list of source package generators.
  - Added initial set of files needed for building tests and examples with CTest.
  - Added the downloading and installation of Geant4 Data files if the option `GEANT4_INSTALL_DATA` is set. Added guard on option and install of data so that this is only available on CMake >= 2.8 due to use of ExternalProject.
  - Forced all CXX flags to use those used to build Geant4. Addressing problem report #1227.
  - Corrected setting of `INSTALL_NAME_DIR` for library targets. Addressing problem report #1231.
  - Added build of new "analysis" module.
  - Added protection for setting of `G4LIB_BUILD_DLL` to happen on WIN32 only.
  - Added support for tests on Windows with NMake and Visual Studio.
  - Added Geant4CTest.cmake module for the configuration of CTest and added pre- and post-commands for runnig test/examples.
  - Added possibility to generate Root dictionaries in FindROOT.cmake macro.
  - Moved setting of initial values for `TestRelease` and `Maintainer` mode compiler flags to make rules override file. Values are now set based on compiler and platform. Added `TestReleaseDebug` build mode.
  - Removed enabling of Fortran language when G3toG4 is enabled.
  - Added `G4VIS_USE` and `G4UI_USE` to list of core compile definitions conditional on the existence of the variables `G4VIS_NONE` and `G4UI_NONE` to match original GNUMake behavior.
  - Added 'ui_all' and 'vis_all' components to allow simple selection of all available UI and Vis components.
  - Added support for OpenInventor visualization driver, with new CMake option `GEANT4_USE_INVENTOR` to enable build. Addressing problem reports #1196, #1261.
  - Added setup of installed scripts to use self location functionality in `geant4-config` when installation is relocatable.
  - Added a function to conditional set environment variables. Added setup of `G4WORKDIR`. Added setup of data library variables if they've been installed. Added `GEANT4_ADD_FEATURE` reporting for data and example code install.
  - Marked `GEANT4_ENABLE_TESTING` and `GEANT4_BUILD_EXAMPLES` options as advanced.
  - Updated references to data libraries version for 9.5.
- GNUMake:
  - Added default for `CLHEP_BASE_DIR` to built-in package in externals. Integrated flags in `architecture.gmk` and `binmake.gmk` for use of the CLHEP built-in package, and adapted setup for build of DLLs on Windows. Added flags to handle future driver OpenGLWt.
  - architecture.gmk: corrected definition of `G4LIB_USE_GDML`, to properly activate GDML settings.
  - `Darwin-g++.gmk`: modified `OGLLIBS` settings to support MacOSX 10.7 Lion for proper configuration of OpenGL libraries in combination with Qt. Allow use of Qt libraries not installed as Framework
  - Updated `binmake.gmk` to add new "electromagnetic/dna", new "hadronic/models/quasi_elastic" and "analysis" modules. Changed `common.gmk` to take into account paths to headers.
  - `G4UI_BUILD.gmk`: added setting of `G4INTY_BUILD_XT` for OPENGLXM and OIX. Visualization drivers need Xt, so this covers the case when the user does not build Xt from G4UI_BUILD flags. Addressing problem report #1250.
  - Abilited possibility to force building of internal 'expat' module also for Linux and Mac, through use of `G4LIB_BUILD_EXPAT` flag.
  - Archived `Configure` script.

### Analysis

- New module providing managers for generation of histograms in the form of Root n-tuple/trees and AIDA XML, based on tools from the Inlib/Exlib package.

### Digitization & Hits

- Moved copy-ctor and operator=() for `G4VReadOutGeometry` to protected, as not meant to be directly used.
- `G4THitsMap`: removed the print-out of total value, to avoid inconsistency caused by a class <T> which does not have += operator or cannot be initilized to 0. Addressing problem report #1258.
- Fixed Coverity defects: mainly uninitialised static data.
- Migrated code to new `G4Exception` scheme.

### Electromagnetic Processes

- Fixed compilation warnings on gcc-4.6 for unused variables.
- Fixed defects reported by Coverity.
- Migrated code to new `G4Exception` scheme.

- DNA:
  - New module with Geant4-DNA classes imported from 'lowenergy' module.
  - Updated all models for handling of variable density.
  - Changed process sub-type numbering.
  - Added atomic deexcitation to ionisation models.
  - Increased energy limits for `G4DNAChargeIncrease`, `G4DNAChargeDecrease`, `G4DNADingfelderChargeIncreaseModel` and `G4DNADingflederChargeDecreaseModel`.
  - Upgrade to ionisation classes for Auger e-.
  - Added enhanced debug information in ionisation models.
  - Fixed a bug regarding energy deposition in case of no de-excitation.
  - Updated de-excitation initialization in ionization models.
  - First prototype classes for water radiolysis and radiation chemistry.
  - `G4DNAIonisation`: added models for C/N/O/Fe. Added electron solvatation process & models.
  - Extension of ionisation by HZE.
  - Reorganised module structure in sub-modules.
  - Added correct types/sub-types for `DNAElectronSolvatation`, `DNAMolecularDecay`, `DNABrownianTransportation`, `ITTransp`. Added possibility to link a decay time to a given electronic configuration while declaring the decay scheme.
  - Place the reaction products at the reaction site rather than center of mass in `DNAMolecularReaction`.
  - Changed the name of macros in AddClone_def.hh to avoid conflicts.
  - Corrected wrong condition in the step manager. Avoid the call of Green brownian bridge when the time step is equal to zero.
  - Fixed incoherent management of time and secondaries in management. Fixed memory leak. Fixed a bug in `G4DNATransformElectronModel`.
  - Fixed compilation warnings and allow DLLs build on Windows.
- High Energy
  - `G4hBremsstrahlung, G4hPairProduction`: improved initialisation allowing to use model instantiated in physics-list.
  - Removed include of unused header in `G4GammaConversionToMuons`.
- Low Energy
  - Added new Bremsstrahlung model based on Penelope v2008. Removed all obsolete `G4Penelope` processes and obsolete class `G4PenelopeCrossSectionHandler`. Removed unnecessary dependency over `HepMatrix` in Penelope codes.
  - Edited `G4PenelopeIonisation` models to avoid the production of sub-threshold delta-rays.
  - Changed `G4PenelopePhotoElectric` models to suppress fake energy-violation warning and to make sure that fluorescence/Auger is generated only if above threshold. Fixed bug in `G4PenelopeOscillatorManager` causing crash on Windows.
  - Migrated PhotoElectric and Compton Penelope models (v2008) to the new interface for atomic de-excitation. Migration does not affect for now Ionisation and v2001 models.
  - Fixed cases of floating-point exceptions in `G4PenelopeRayleighModel`.
  - Bug fix in `G4PenelopeOscillatorManager`, which caused a G4Exception for some materials.
  - Bug fix in `G4PenelopePhotoElectricModel`, which caused a potential violation of energy conservation in high-Z materials.
  - Added additional verbosity and protection in `G4PenelopeBremsstrahlungFS`.
  - `G4BremsstrahlungParameters`: fixed value of the density effect constant (Migdal constant) using standard relativistic model.
  - Corrected control of warnings in ion cross-section model classes.
  - Moved all Geant4-DNA classes to external module and removed obsolete and dummy classes.
  - Removed obsolete classes: old livermore photon polarized processes (`G4LowEnergyPolarized*`); old shell cross sections (`G4hShell*`); old ion ionisation process (`G4ionLowEnergyIonisation`); old h-ionisation process (`G4hLowEnergyIonisation`); old `G4hLowEnergyLoss`.
  - Removed obsolete `G4LowEnergy*` and `G4eLowEnergyLoss*` classes.
  - Migrated `G4LivermoreIonisationModel` and `G4LivermorePhotoElectricModel` to common design with standard EM for de-excitation. Added de-excitation to `G4LivermoreComptonModel`. Added e+- cross section separately from hadron cross-sections in `G4UAtomicDeexcitation`.
  - `G4LivermorePolarizedGammaConversionModel`: added protection in numeric computations to avoid FPE crash, minor cleanup of the initialisation.
  - Added `G4LivermoreIonisationCrossSection` and `G4eCrossSectionHandler` classes.
  - Use `SetDeexcitationFlag(true)` in the migrated Penelope and Livermore models, to make atomic de-excitation applicable for these models.
  - Modified `G4PenelopeOscillatorManager` in order to use the shell binding energy from the `G4AtomicDeexcitation` data, rather than from the local Penelope database. This fixes small inconsistencies.
  - Added protection in `G4LivermorePolarizedRayleighModel` for `cosTheta` above `5 MeV`.
  - Replaced use of `RandBit()` with simple formula to avoid problems of non reproducibility.
  - Added `G4CrossSectionDataSet` table in `G4AnalyticalEcpssrKCrossSection`.
  - Added FormFactor*CrossSection classes according to A.Taborda et al. X-Ray Spectrom,and made modifications accordingly.
  - Updated of `G4UAtomDeexcitation` to remove runtime warning if de-excitation is not used.
  - Adapted form factor ionization cross-sections for the new set of ionization data proposed by M. Reis & A. Taborda.
  - Bug fix in `G4OrlicLiXsModel` lower edge for L1 adjusted, and in `G4EmpCrossSection`, returning zero for alpha particles on L-shells. Minor bug fixes in de-excitation classes.
  - Requires new data set version 6.23 of G4LEDATA.
- Muons
  - `G4MuBremsstrahlung, G4MuPairProduction, G4MuBremsstrahlungModel`: improved initialisation allowing to use model instantiated in physics-list (potential saving of initialisation time).
- Precise Impact Ionisation
  - Implemented workaround in logarithmic interpolator to deal with zeros in new data library G4PII-1.3.
- Standard
  - Single and multiple scattering:
  - Use base class `G4VMscModel` methods to compute range and inverse range.
  - `G4UrbanMscModel95`: new version of multiple-scattering model providing improved sampling of the tail of angular distribution, better sampling of lateral displacement and true-step length; Z sampling applied for medium step size, not applied to small steps and to steps equal to electron range. `G4UrbanMscModel95` become default in `G4eMultipleScattering`.
  - `G4UrbanMscModel90, G4UrbanMscModel93, G4UrbanMscModel95`: use simplified computation of geom path length if true path length is equal to the range; providing minor CPU improvement and more stable computation. Added protection against numerical problems of sampling scattering with small steps at high energy to avoid back-reflection. Added G4Exception warning to control back-reflection.
  - `G4GoudsmitSaundersonMscModel`: added protection against infinite loop for solving equation for the screening parameter. Addresses problem report #1221.
  - Removed obsolete classes `G4ionGasIonisation, G4CoulombScatteringModel, G4UniversalFluctuation93` and `G4UrbanMscModel92`.
  - `G4eCoulombScatteringModel`: default low-limit is increased from `1 eV` to `1 keV`; particles below this limit are killed (protection against low-energy particles doing many steps). The limit may be decreased by user. Renamed local member and `SetLowEnergyThreshold()` method to avoid base class method hiding. Addressing problem report #1256.
  - `G4ScreeningMottCrossSection, G4eSingleCoulombScatteringModel`: new classes implementing single scattering model for electron-nuclei interaction, suitable for high-energy electrons, low scattering angles and light target materials.
  - `G4WentzelOKandVIxSection, G4eCoulombScatteringModel`: tuned screening function.
- Bremsstrahlung models:
  - `G4SeltzerBergerModel`: new class implementing new model for Bremsstrahlung, according to S.M.Seltzer and M.J.Berger, Atomic data and Nuclear Data Tables 35 (1986) 345. Updated `G4eBremsstrahlungRelModel` accordingly. Requires new G4EMLOW data set 6.23.
  - New class `G4DipBustGenerator` - bremsstrahlung angular generator.
- `G4MollerBhabhaModel`: modified parameterisation of dedx at very low energy providing more smooth shape. Removed limitations on cut value to be able to combine with Livermore and Penelope models.
- `G4eeToTwoGammaModel`: added numerical protection in cross-section computation for very small energy. Added linear polarization of produced photons.
- New class `G4XrayRayleighModel` implementing simplified Rayleigh scattering.
- `G4BraggModel, G4BraggIonModel`: use ASTAR and PSTAR parameterisations for moleculas from list of ICRU'49.
- `G4eplusAnnihilation`: disable creation of PhysicsTable and compute the cross-section at run time (no visible CPU penalty, reduced memory).
- `G4NuclearStopping`: use new sub-type `fNuclearStopping`.
- `G4PhotoElectricEffect, G4ComptonScattering, G4CoulombScattering`: implemented constructors in same style and removed obsolete unused methods.
- `G4PhotoElectricEffect`: use `G4PEEffectFluoModel` as the default.
- `G4PAIySection`: added method `ComputeLowEnergyCof()` allowing for extended low energy limit of the model down to `10 eV`.
- `G4KleinNishinaModel`: set `limitFactor` to 4 (was 10). Use dynamic selection between high energy sampling and sampling with Doppler broadening. Fixed infinite loop in new model for 1 keV gamma and added extra protection during sampling of final state (very low-energy gamma).
- `G4KleinNishinaModel, G4PEEffectFluoModel`: initialised de-excitation flag. Added extra protection to avoid precision loss in sampling of scattering angle.
- `G4BetheBlochModel`: added protection for high correction to energy loss; important if a step length is nearly the range.
- `G4alphaIonisation` added warning to avoid direct use of the process.
- Utils
  - `G4LossTableManager`, `G4LossTableBuilder`, `G4VEmProcess`, `G4VMultipleScattering`, `G4VEnergyLossProcess`: adopt base material approach; build physics vectors only for base materials and scale values for other materials.
  - Optimisation fix in `G4EmModelManager`, to not create local copy of vector with production thresholds (reducing run time memory). Added printout of de-excitation flag per model. Fixed smoothing function for cross section computations.
  - `G4VEnergyLossProcess`: added extra protection for correction to energy loss to avoid ions travel foreever. Fixed initialisation for ions defined by the DNA ion manager.
  - `G4LossTableBuilder`: fixed computation of range table for the case of zero dEdx in first bins of dEdx table.
  - `G4EmModelManager`: bug fix in cross-section computation for the case of more than 1 model; effect is seen for results when low cuts are used for low-energy physics-lists.
  - `G4LossTableBuilder`: fixed initialisation logic for usage by `G4EnergyLossForExtrapolator`.
  - `G4VEnergyLossProcess, G4VEmProcess`: added check on zero kinetic energy in PostStep. If energy iz zero then track status is changed to `fStopAndKill` or `fStopButAlive`.
  - `G4VEmModel`: fixed non-accurate internal vector initialisation.
  - `G4VMscModel`: added protected `GetRange()` and `GetEnergy()` methods and use these methods at run time in `G4VMultipleScattering`. Removed obsolete method `MinEnergyCut()`.
  - `G4VEmProcess`: allow to use the Integral approach also if the physics table is not built (before it was forbidden).
  - `G4VMultipleScattering`: fixed problem of initialisation of true step length when multiple-scattering model is inactive (needed for DNA Phsyics List).
  - `G4ElectronIonPair`: substituted Gaussian sampling by Gamma function sampling of number of electron/ion pairs.
  - `G4EmProcessSubType`: added `fNuclearStopping=8` sub-type.
  - Updated `G4VAtomDeexcitation` methods names and improved printout; created `G4AtomicShellEnumerator`. `G4EmProcessOptions`: improved names of methods for de-excitation.
  - `G4EmProcessOptions`, `G4EnergyLossMessenger`, `G4LossTableManager`, `G4VAtomDeexcitation`: cleanup options for de-excitation.
  - Removed obsolete method `SampleDeexcitationAlongStep()` in `G4VEmModel`.
  - `G4EmBiasingManager`: new class for forced biasing.
  - `G4VEmProcess, G4VEnergyLossProcess`: removed old obsolete de-excitation scheme; added forced interaction biasing. Improved computations for the base material approach; added cross-section biasing option.
  - `G4VEnergyLossProcess, G4EmBiasingManager, G4EmProcessOptions, G4EnergyLossMessenger`: added Russian roulette; added Bremsstrahlung splitting.
  - `G4EnergyLossMessenger, G4EmProcessOptions`: added new UI commands for cross section biasing and forced interaction.
- Xrays
  - `G4SynchrotronRadiation, G4SynchrotronRadiationInMat`: fixed length of C-arrays for the interface with EM field. Addressing problem report #1236.
  - `G4ForwardXrayTR`: made `fProtonEnergyVector` non static pointer; allocate and deallocate it directly inside class constructors/destructor.
  - Removed reminder message from `G4Cerenkov` constructor.

### Error Propagation

- Added method `GetTranfMat()` in `G4ErrorFreeTrajectoryState`. Addresses problem report #1248.
- Fixed Coverity defects for uninitialised static data and cases of ios format not restored.
- Migrated code to new G4Exception scheme.

### Event

- Modified `G4ParticleGun, G4PrimaryTransformer, G4RayShooter` and `G4SingleParticleSource` to use kinetic energy and momentum direction.
- Fixed minor bugs in `G4HEPEvtInterface`: in creation of `G4PrimaryParticle`, only PDG code is given to the constructor; then mass and momentum are set.
- Some code cleanup in `G4ParticleGun` and `G4SPSPosDistribution`.
- `G4ParticleGun`: added `const` qualifier to accessors.
- Fixed Coverity defects for uninitialised static data. Fixed compilation warnings on gcc-4.6.
- Migrated code to new G4Exception scheme.

### Externals

- New module for optional external packages. Currently including:
  - Built-in "CLHEP" module, including a subset of CLHEP classes imported from version CLHEP-2.1.1.0 and adapted to the Geant4 build scheme.
  - Built-in "expat" module, including source code from original 2.0.1 version of expat. Required only on WIN32 for "lend" hadronic model.

### G3toG4

- Added export flag for extern symbols to allow for generation of DLLs on Windows; allow build of DLL, if selected. Fixed signature in `PG4gsdet()` for unresolved symbol in building DLLs.
- Make safe to compile with -j and drop compilation of Fortran code.
- Use canonic indexed form for G4Exception.
- Fixed Coverity defects.

### General Processes

- Migrated to new G4Exception scheme.
- Fixed Coverity defects.
- Biasing
  - `G4ProcessPlacer`: using `SetProcessOrderingToSecond()` for biasing process, and leave transportation as first.
- Cuts
  - Introducing parallel layered mass geometry. Material-cuts-couple is now updated for all worlds.
- Decay
  - Added sub-type for radioactive decay 'DECAY_Radioactive' (equal to 210).
  - Fix in `G4Decay` to propose the final local time rather than the global time so that local time can be updated properly. Addressing problem report #1224.
- management
  - Suppressed warning message of `G4ProcessTable::Insert()` in case of adding ions with inactivate processes. Addresses problem report #1173.
  - Added check for duplicate call for `SetOrderingToFirst(Last)`.
  - Fixed memory leak in copy constructor of `G4ProcessAttribute`.
- Optical
  - A dielectric_dielectric surface may now have a wavelength dependent property "TRANSMITTANCE". If this is specified for a surface it overwrites the Snell's law's probability. This allows the simulation of anti-reflective coatings.
  - Added logic for `ProposeVelocity()` to `G4OpBoundaryProcess::PostStepDoIt()`.
- Parameterisations
  - Fixed bug in `G4FlashShowerModel::ModelTrigger()` for energy condition.
- Scoring
  - Introducing parallel layered mass geometry. `G4ParallelWorldProcess` takes care of both layered mass geometry and sensitivity of a parallel world.
- Transportation
  - Defined `ProcessSubType` for transportation processes.
  - Changed process type of `G4NeutronBuilder` to `fGeneral`.
  - Change in `G4Transportation` and `G4CoupledTransportation` to propose the final local time rather than the global time so that local time can be properly updated. Addressing problem report #1224.
  - Modified calcuation of `deltaTime` for optical photons in `G4Transportation` (and `G4CoupledTtansportation`). The final velocity obtained by `G4Track` `CalculateVelocityForOpticalPhoton()` should be used instead of the initial velocity of the step. Addressing problem report #1239.
  - `G4Transportation` and `G4CoupledTransportation`: allow for spin tracking of neutral particles with a magnetic moment, turned off by default, can be enabled by using the new method `EnableUseMagneticMoment()`. Allow for uniform gravity field tracking of neutral particles. Removed all special treatment and logic for `opticalphoton`.

### Geometry

- Migrated to new scheme of G4Exception for warnings and errors.
- Divisions
  - Optimised initialization of phi angles in parameterisation for tubs and cons.
- Magnetic field
  - Added capability for (uniform) gravity field. Implemented with new classes G4EqGravityField, G4UniformGravityField.
  - `G4Field`: revised to help detect the presence of a gravity field. Added new method `IsGravityActive()`.
  - Corrected computation of `omegac` in `G4EqEMFieldWithEDM, G4Mag_SpinEqRhs` and `G4EqEMFieldWithSpin` with more coherent formula. Simplified formula for computation of kinetic energy in `G4FieldTrack`.
  - Avoid printing out pointer in `G4CachedMagneticField::ReportStatistics()`.
  - Added new class G4TrialsCounter for keeping statistics of step trials.
- Management
  - Introducing parallel layered mass geometry. Scanning of material is extended to all the regions of all the worlds.
- Navigation
  - Fix in locator classes for tracks stuck on boundaries between volumes: improved the condition for accepting a candidate intersection with a boundary in all locator classes. It now checks whether the track enters in the new volume, using `GetGlobalSurfaceNormal()` from `G4Navigator`.
  - Revised `G4VIntersectionLocator`: added new method `GetSurfaceNormal()`, to get normal at last candidate boundary crossing. Corrected `AdjustmentOfFoundIntersection()` to use exit-normal in global coordinates instead of local.
  - Modified `G4Navigator::GetLocalExitNormal()` method, to allow it to be called before one of the `Locate...()` methods is called ( `LocateGlobalPointAndSetup()` or `LocateWithinVolume()` is called. Returns the normal at the endpoint of the last `ComputeStep()`; Added new method to provide the exit-normal in global coordinates; added new methods `GetMotherToDaughterTransform()` and `GetLocalExitNormalAndCheck()`.
  - Adapted `G4MultiNavigator` to revisions of intersection logic to provide exit-surface normal for step ending on boundary.
  - Trivial fixes for Coverity defects in `G4GeomTestPoint` and `G4GeomTestVolPoint`.
  - Some code cleanup.
- Solids (Boolean)
  - Corrected protection in `G4SubtractionSolid::DistanceToIn(p,v)`. Revised outcome, to not cause event abortion, in case of bad convergence.
- Solids (CSG)
  - First implementation of `G4CutTubs` solid, a tube with possible cuts in `+-Z`.
  - `G4Sphere`: fix for setting of relative radial tolerances when setters for radiuses are explicitly called (affecting parameterisations on radius for spheres). Relaxed validity condition in construction for the minimum size of the outer radius.
- Solids (Specific)
  - Fix in `G4TriangularFacet::Intersect()` to take into account geometrical tolerance and cases of zero distance from surface's facet; fixed tests where square root was compared to half Cartesian tolerance; now compared to `kCarTolerance`.
  - Fix in `G4TessellatedSolid::DistanceToOut(p)` and `DistanceToIn(p)` to compute exactly the distance from facet avoiding use of shortcut/variant using the 'outgoing' flag. Addresses problem report #1242.
  - Fix in `G4Paraboloid::DistanceToIn(p,v)` and `DistanceToIn(p)` to take into account tolerance correctly and provide better estimation of distance. Addresses problem report #1234.
  - Added `SetReferences()` and `InvertFacets()` to `G4GenericTrap::CreatePolyhedron()` for correct visualisation of Boolean compositions with `G4GenericTrap`.
  - Added `SetReferences()` to `G4TessellatedSolid::CreatePolyhedron()` for correct visualisation of Boolean compositions with `G4TessellatedSolid`. Addresses problem report #1235.
  - Fixed logic in `G4VTwistSurface::GetEdgeVisibility()` for the treatment of corners.
- Volumes
  - Use `WIN32` instead of `G4LIB_BUILD_DLL` as flag for protecting allocator choice in `G4NavigationHistory` on Windows.

### Global

- Added banner and footer for errors and warnings, to allow automated parsing for the start and end of all printout for all calls to G4Exception. Redirected warnings to `cout` instead of `cerr` by default.
- Removed obsolete G4Exception signature, that took simple string as argument. Added two new G4Exception signatures, which take a `ostringstream` for any amount of additional output.
- `G4Physics2DVector, G4Physics2DVectorCache`: new classes implementing a 2-dimensional vector with linear interpolation.
- Added `dBin`, `baseBin` and `verboseLevel` in the base class `G4PhysicsVector` to avoid having additional properties data introduced in derived classes. This enables use of `G4Allocator` for allocating `G4PhysicsVector` and `G4PhysicsVectorCache` objects. Fixed ScaleVector() method in G4PhysicsVector derived classes.
- `G4PhysicsLogVector, G4PhysicsLnVector, G4PhysicsLinearVector`: updated to safer implementation of `ScaleVector()` method.
- Added protection in `G4Pow::powN()` method for high exponent values. Reduced vector for factorial from 512 to 170 (result should be below DBL_MAX). Fixed computation of log(factorial).
- Added G4lrint(), G4lint(), G4rint() as global utility functions for generic use.
- Added missing post-const qualifier to `G4String::compareTo()` methods.
- Update date of release for 9.5.

### Graphical Representations

- `G4PolyhedronArbitrary`: added `SetReferences()` and `InvertFacets()` methods. `SetReferences()` is necessary at the end to complete the polyhedron, in particular if the polyhedron suffers subsequent Boolean operations.
- `G4Polymarker`, `G4VMarker`: added copy-constructors.
- `G4Colour`: added `GetMap()` so that current colour map options can be listed.
- Migrated to new scheme of G4Exception.
- Fixed most Coverity warnings.

### Hadronic Processes

- Completed migration to integer Z and A.
- Added `ModelDescription()` method to all model classes for HTML documentation.
- Migrated to new scheme of G4Exception.
- Fixed compilation warnings on gcc-4.6 and Coverity reports.
- Cross sections
  - Implemented re-design of `G4VCrossSectionDataSet` interface.
  - New class `G4KokoulinMuonNuclearXS`: derived from code in the direct-implementation process `G4MuNuclearInteraction`, replacing the old-style implementation for conforming to the hadronic framework design of process, model, cross-section. This new class is now the default cross-section for `G4MuonNuclearProcess`.
  - Provide descriptions for nearly all cross-section classes in method `CrossSectionDescription()`.
  - `G4CrossSectionElastic, G4CrossSectionInelastic` and `G4ComponentAntiNuclNuclearXS`: adopt modified names and fixed usage in physics-list. Fixed problem of double-deletion.
  - `G4VComponentCrossSection`: changed method names to `GetTotalElementCrossSection()` and `GetTotalIsotopeCrossSection()`.
  - `G4IonsShenCrossSection`: extended energy range up to `100 TeV`.
  - `G4IonProtonCrossSection`: implemented all virtual `IfApplicable()` methods.
  - Added `GetName()` method in `G4VCrossSectionDataSet`, to be used with documentation reporting.
  - `G4CrossSectionDataStore`: fixed selection of isotope when element cross-section is used but isotope composition is defined by the user. Fix in `DumpPhysicsTable()` method, responsible for incorrect ion cross-sections values when invocated.
  - `G4IonsShenCrossSection` added method `GetIsoCrossSection()`.
  - Modified p-p cross sections in `G4GGNuclNuclCrossSection`, G4GlauberGribovCrossSection and `G4HadronNucleonXsc` to include latest TOTEM data at `7 TeV`.
  - `G4ElectroNuclearCrossSection`: corrected numerical instability adding numerical protections in methods computing equivalent photon energy, Q^2, and virtual factor.
  - Extended `G4GlauberGribovCrossSection` and `G4HadronNucleonXsc` for kaons.
  - `G4ComponentAntiNuclNuclearXS`: introduced Plab/baryon. Fixed anti-baryon-nucleon cross-sections at low energies at value they have at `100 MeV/c` of projectile/anti-nucleon.
  - `G4UPiNuclearCrossSection`: fixed Barashenkov data for pi+.
  - `G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS`: fixed cross-section off Hydrogen and `pi+` cross-sections; use PDG and GHEISHA parameterisations.
  - `G4TripathiLightCrossSection`: added protections against big positive values of cross-section below Coulomb barrier.
- Management
  - `G4HadronicProcess`: make `GetCrossSectionDataStore()` public so it can be accessed through the process. Added method `MultiplyCrossSectionBy()` so that cross-sections can be scaled for testing.
  - `G4HadronicProcess`: added public method `GetTargetNucleus()` to access target isotope; added private method `FillResult()` providing simpler and more transparent handle for primary and secondaries. Added null-pointer checks for material and volume to `DumpState()`.
  - `G4HadronicProcess`: completed migration to integer Z and A. Added file-scope variable to capture envvar with name of file for saving random engine state. Used immediately prior to model `ApplyYourself()` call.
  - `G4HadronicProcess`: changed order of checks; first track status, then value of cross-section to remove potential numerical problem of cross-section computation for zero kinetic energy hadrons. Added change status if final energy of primary particle is zero Added protected method `GetTargetNucleusPointer()`.
  - Implemented migration to new `G4HadFinalState` interface for `G4HadronicProcess` and related classes. Adopt new interface to cross sections; use `GetElementCrossSection()` in place of `GetMicroscopicCrossSection()`; added check on zero kinetic energy of primary and secondary after interaction.
  - Allow to turn on checking for E/p conservation by environment variables. Take the tighter limit of process and model. Enhanced printout for case 3 in E/p checking with initial state info.
  - `G4HadronicProcessType`: added 'RadioactiveDecay' with ID 210 to enumeration.
  - Extended `Print()` method in `G4HadronicProcessStore` to include cross-section info. Added method `DumpHtml()` to write out html physics list documentation. Added also method `PrintHtml()` to print html documentation for processes, models and cross sections for each particle.
  - Models:
    - E/p checking extended to allow string models to set limits; `GetEnergyMomentumCheckLevels()` made virtual in `G4HadronicInteraction`, and implemented to query string model in `G4VHighEnergyGenerator`.
    - Added data member in `G4VIntraNuclearTransportModel` with related accessor methods to store/retrieve original projectile.
    - `G4VIntraNuclearTransportModel`: fixed initialisation of primary projectile.
    - Added constructor and virtual destructor to `G4VIsotopeProduction`.
- Processes
  - Added `G4MuonNuclearProcess`, meant to replace the old process `G4MuNuclearInteraction` by separating model and cross-section classes.
  - Added processes for light anti-ions: `G4AntiAlphaInelasticProcess, G4AntiDeuteronInelasticProcess, G4AntiHe3InelasticProcess` and `G4AntiTritonInelasticProcess`.
  - `G4WHadronElasticProcess`: moved from coherent_elastic; implemented random rotation of final state. Added change status if final energy of primary particle is zero. More accurate handling of low-energy particles.
- Utility
  - `G4ReactionProduct`: use `G4Allocator` for dynamic allocation to reduce memory churn.
  - `G4HadFinalState`: store vector of values instead of pointers to reduce memory churn. Improved constness of argument passing and functions, and reduced creation of temporary objects. Drop unneeded staleness flag. Removed `AddSecondary()` interface. Added interfaces to merge two final states together.
  - Models:
    - New utility class `G4DecayKineticTracks`, to be used by models' `Propagate()` member function, scanning input list and decaying any short-lived resonances in situ. Parent particles are deleted from the list at following decay. Adapted `G4DecayStrongResonances` accordingly.
    - `G4Fancy3DNucleus`: reduced memory churn by eliminating duplicate arrays of `G4Nucleon`, moving the Helper buffer and other buffers into class data members.
- Binary Cascade
  - Set E/p checking limits for energy non-conservation checks. Fixed large energy non-conservation for Hydrogen target (vector for the final state was not cleared before use). Also moved check for Hydrogen to `ApplyYourSelf()`.
  - `G4GeneratorPrecompoundInterface`: added code to calculate excitation energy as difference of initial-final state, to allow for energy conservation for string models. Reduced problem of energy non-conservation. Fix to add fragment nucleus to reaction products when no de-excitation. Replaced loop to decay input secondaries with new `G4DecayKineticTracks` utility. Fixed memory leak in to correctly delete kinetic track.
  - `G4BinaryCascade`: revised calculation of excitation energy when used for rescattering, removing systematic energy non-conservation. More changes/fixes for use with propagate interface. Added handling of detroyed nucleus, i.e. when charge becomes 0. Some code cleanup, mostly `ApplyCollision()`.
  - Fixed bug in `G4RKFieldIntegrator`, following Xcode warning.
- Bertini Cascade
  - Developed infrastructure to support using Bertini as a "rescattering" model for the output of the FTF simulation.
  - Make cross-section tables self-registering at job initialization.
  - `G4NucleiModel`: added optional argument to `reset()` with list of collision points, for copying cascade state when rescattering. Optimised computation of "rho". Reverted length scales to "2.82" factor. Compared local kaon/hyperon cross-section tables with sum-of-exclusive tables from `G4Cascade*Channel` classes. Fixed bug in `G4InuclNuclei` constructor (mom,A,Z,Eexc,model) to properly set excitation energy; caused energy non-conservation in de-excitation code. Changed kaon potential to be positive, not negative, so slow kaons will occasionally be captured. Removed obsolete local cross-section arrays; use standard tables, which are numerically equivalent.
  - `G4CascadeInterface`: added support for capturing random-engine state for debug at each `ApplyYourself()` or `Propagate()` invocation. Simplified `NoInteraction()` to have no particles returned, but use `SetEnergyChange()` to communicate to tracking that real track should be stopped and deposit all its energy. Only projectile is copied to final state, not target nucleus. If accept/reject loop fails (maximum retries), return initial state untouched rather than last generated cascade. This avoids exposing an elastic scattering event under any circumstances. Use new `G4DecayKineticTracks` in `Propagate()` to handle short-lived inputs. Set up for E/p checking by `G4HadronicProcess` in constructor; set internal E/p limits (currently 5% and `10 MeV`).
  - Simplified cascade test-and-repeat loops; do four-momentum balancing with nuclear fragment, now used exclusively as `G4Fragment`, at end of cascade, not after de-excitation.
  - `G4CascadeCheckBalance`: added non-limit ctor and explicit limit setting.
  - `G4IntraNucleiCascader`: added list of hit-nucleon locations, filled by `copyWoundedNucleus()` for initialization of `G4NucleiModel`. Reduced number of retries from 1000 to 100. For pre-cascade rescattering, put resonances, or any particle which cannot be propagated by Bertini, directly onto output, without decaying.
  - `G4CollisionOutput`: added non-const accessors for lists.
  - `G4LorentzConvertor`: added diagnostic messages in `rotate()`. Drop most "intermediate" kinematic parameters used in rotate, in favor of somewhat more direct vector operations.
  - `G4CascadeChannelTables`: use `FindTable()` to determine if table has been created already or not. Added new gamma-nucleon interaction states.
  - `G4CascadeGamNChannel, G4CascadeGamPChannel`: new final state tables for gamma-nucleon interactions, with final states up to 9-body, using the same energy binning as pion-nucleon.
  - `G4Cascade*Channel`: added new constructor argument for all cross-section tables. Removed all namespace self-instantiations to fix incosistencies in initialization across platforms.
  - `G4Inucl*Particle`: modified all constructors to take the model code as an optional argument, so that subclasses don't have to set it manually.
  - Fix in `G4ElementaryParticleCollider` to hide no longer used "mult" argument to `getMomModule2toMany()`; removed special "mult==3" case.
  - Fix in `G4CascadeT1NNChannel` to final 9-body final-state list for both nn and pp: existing entries violate charge.
  - Added protections in `G4LorentzConvertor` for `rotate()` applied to at-rest system (i.e., `z-axis ~ (0,0,0)`), and simplified calculations.
  - Updated to reduce memory churn in `G4IntraNucleiCascader, G4FissionStore, G4Fissioner, G4CascadeInterface, G4InuclElementaryParticle, G4BigBanger, G4ElementaryParticleCollider`.
  - `G4EquilibriumEvaporator`: improved building of final-state particles to reduce creation of temporaries.
  - `G4CollisionOutput`: use `resize()` and set/fill to eliminate temporary copies. Added diagnostics and fixed bug with momentum units.
  - `G4CascadParticle`: added functions to explicitly set all data members, including initial path and generation, to support changes below. Re-order member functions in set/get pairs. In `getPathToTheNextZone()`, check for zero momentum (`pp < 1e-9`) and return zero path-length; this will support capture at rest.
  - `G4CascadeCoalescence`: NEW factory class to implement conversion of final-state nucleon "clusters" into light ions. Uses LAQGSM algorithm (Sec. 2.3).
  - `G4ElementaryParticleCollider`: added protection against non-physical arguments and FPE in two-body angular distributions. Moved message about unrecognized initial-state behind verbosity flag.
  - `G4IntraNucleiCascader`: added final-state clustering as optional facility, controlled through compile-time flag `G4CASCADE_DO_COALESCENCE`. Clustering is done during cascade finalization.
- Chiral Invariant Phase Space (CHIPS)
  - Tuning of the Quasmon/Evaporation transition.
  - Correction for Coulomb Barrier. Addressing problem report #1192.
  - Implemented migration to new `G4HadFinalState` interface in `G4ElectroNuclearReaction`. Fix in destructor.
  - `G4QHadron(Elastic/Inelastic)DataSet`: returning '0' for missing hadrons.
  - Fix in G4QEnvironment for object deletions. Fixed initialization in constructor.
  - Fixed case of FPE for unprotected sqrt() with possible negative argument in G4QNucleus. Addressing problem report #1251.
  - Corrected `G4QKaonPlusElasticCrossSection` and `G4QPionMinusNuclearCrossSection` for a right reproduction of K+N and Pi-N cross sections.
  - Correction in `G4QNeutronNuclearCrossSection, G4QProtonNuclearCrossSection` for right reproduction of cross-sections, as in `G4QuasiElasticRatios`.
- De-excitation
  - `G4NeutronRadCapture`: fixed in particle change, kill primary particle and save residual nucleus.
  - `G4ExcitationHandler`: fix for Fermi break-up products de-excitation. Added protection for small excitation energy into photon evaporation loop. Updated logic: first call only to MFM model, second start evaporation loop, where FBU is called for light fragments, products of FBU are sent to the 3d loop on photon evaporation.
  - General cleanup of the FermiBreakUp model: Removed `G4FermiSplitter` and `G4FermiIntegerPartition`. Modified `G4FermiConfiguration` to be a simple container. Removed unused methods in `G4FermiConfigurationList` and fixed minor memory leak. Removed map and access to map methods in `G4FermiFragmentsPool`. Extended printout when kinematics fail in `G4FermiPhaseSpaceDecay`; fixed computation of majorant in BetaKopylov method, general cleanup.
  - `G4VGammaDeexcitation`: added accessors for the ICM flag, commented out usage of this flag during sampling.
  - `G4Evaporation`: directly send low Z,A fragments to the FermiBreakUp model. Added extra protection: do not compute GEM probability for the case `Eexc > 3MeV*A`; fixing FPE problem for rare FTFP events.
  - Fixed numerical problem for `exp()` function in `G4EvaporationProbability`.
  - `G4NuclearLevelStore` (photo-evaporation): added method to include user's evaporation data file; the given data will be used for the treatment of the photo evaporation of the given isotope instead of using the file provided in the photo-evaporation database.
  - Extended use of `G4PhotoEvaporation` to `Z>100`. Note that for `Z>100` at the moment the binding energy of the vacant e- shell left after internal conversion is set as 0. and the atomic relaxation will not be simulated later on.
- Elastic scattering
  - `G4WHadronElasticProcess`: added light anti-nuclei; using particle names in the `IfApplicable()` method. Added NIEL energy deposition if recoil is below the threshold. Follow migration of `G4HadFinalState` interface. Set `lowestNeutronEnergy` to `1.e-12*eV`. Added protection for very low primary energy after scattering. Moved class to 'processes' sub-module.
  - New class `G4AntiNuclElastic` for simulation of elastic anti-A - A scattering.
  - `G4HadronElastic`: do not create an ion if the recoil energy is below the threshold; fixed `SampleInvariantT()` default implementation to be used in testing. Lowest limit is set to `1.e-6 eV`.
  - `G4NuclNuclDiffuseElastic, G4DiffuseElastic`: updated to use `G4HadronElastic` as the base class and to follow its interface.
  - Removed obsolete class `G4UHadronElasticProcess`.
  Renamed `G4VHadronElastic` to `G4HadronElastic` (main interface).
- `G4CHIPSElasticXS`: added calculations of anti-baryons, Pi+, Pi-, K+, K- nucleus elastic cross-sections. Use `G4HadronicException`; added cross-sections for neutral kaons.
- `G4ChargeExchangeProcess, G4CHIPSElasticXS`: implemented migration to new design of `G4VCrossSectionDataSet` interface.
- `G4LEpp, G4LEnp`: fixed extraction of A from `G4Nucleus()`.

- High Energy Theoretical
  - Store primary particle, so that cascade in `Propagate()` has access.
  - Added `GetEnergyMomentumCheckLevel()` method to `G4TheoFSGenerator`.
  - `G4QuasiElasticChannel, G4TheoFSGenerator`: reduced external dependences. Modified according to `G4V3DNucleus::GetNucleons()` signature.
  - `G4QuasiElasticChannel`: use QuasiElRatios from 'quasi_elastic' model in place of QuasiFreeRatios from CHIPS.
- INCL/ABLA
  - Use inverse kinematics in INCL light ion collisions: it improves INCL light ion model performance in applications where we are interested in beam fragmentation.
  - INCL light ion model now supports light ion projectiles up to and including Oxygen-18.
  - Bug fixes in ABLA for rounding problem, causing evaporation function to modify nucleus excitation energy via a side-effect.
- INCLXX
  - First version of INCL++ intra-nuclear cascade model based on INCL4.6 cascade model. Supported projectiles: protons, neutrons, pions up to `3 GeV`. Uses `G4ExcitationHandler` for de-excitation.
- Isotope Production
  - `G4NeutronIsoIsoCrossSections`: implemented migration to new design of `G4VCrossSectionDataSet` interface.
- Lend
  - First implementation of LEND (Low Energy Nuclear Data) cross-section and physics model.
- lll_fission
  - Enabled to handle excited isomer nuclei as targets.
- Low Energy
  - Added protection against return back only primary particle with increased energy in `G4LEDeuteronInelastic, G4LETritonInelastic` and `G4LEAlphaInelastic`.
- Neutron High Precision
  - Added reaction Q value and break up flag (MF3::QI and LR) in `G4NeutronHPInelasticCompFS`.
  - Enabled FSMF6 in capture final state (`G4NeutronHPCaptureFS`).
  - Bug fix in `G4NeutronHPFinalState` for unexpected baryon balance. Fix for setting an index of the last element of an array.
  - Bug fix in `G4NeutronHPPhotonDist` for call to element with negative index.
  - Modified `G4NeutronHPIsoData, G4NeutronHPFission` and `G4NeutronHPorLFission` for ENDF-VII.
  - Relaxed checking condition of inconsistency in `G4NeutronHPElasticFS`, to avoid rounding problems on 32-bits systems. Added protection to avoid producing 0 kinetic energy neutrons.
  - Added protection for very low "remaining_energy" and fixes in `G4NeutronHPContAngularPar`.
  - Fixes in `G4NeutronHPInelasticCompFS` and use QI value for calculating excitation energy of residual.
  - Fixes for migration to ENDF-VII.r0. Bug fix in `G4NeutronHPPartial`.
  - `G4NeutronHPFissionFS`: modified according to new `G4HadFinalState` interface.
  - Migrated to new `G4VCrossSectionDataSet` interface.
  - Added cache for kinetic energy, element, material and cross-section.
  - Enabled to handle excited isomer nuclei as targets.
  - Migrated `G4NeutronHPFastLegendre` to high order (>30) Legendre polynominal.
  - Enabled to use Thermal Scattering Model and Data with NIST Materials.
  - Added ENDF/B-VII thermal scattering materials; excluding para (ortho) H and D, liquid (solid) methane and benzene.
  - Fixed FPE error in `G4NeutronHPThermalScattering` and memory leak in `G4NeutronHPThermalScatteringData`.
  - Requires new data set G4NDL-4.0.
- Parton-String
  - First implementation of barion - anti-barion annihilation. Added new `G4FTFAnnihilation` class in the FTF model, and made corresponding changes in related FTF classes.
  - Implemented simulation of anti-barion - nucleus interactions from the rest to `1000 GeV`. Reggeon cascading is switched off. Good results are obtained in combination with the Binary cascade model.
  - Implemented first variant of FTF code for simulation of anti-nucleus-nucleus and nucleus-nucleus interactions. The anti-nucleus nucleus part is working starting from `150*A MeV/c`. The nucleus-nucleus part is applicable at `Plab > 2 * A GeV/c`.
  - Decreased low energy limit for FTF.
  - Small improvement introduced in `G4FTFParameters` in order to treat Labmda-Bar, Sigma-Bar, etc...
  - Tuned parameters of Kaon-Proton interactions in FTF. CHIPS cross sections are used now in FTF for needed X's; created corresponding class: `G4ComponentCHIPShadronNuclearXS`.
  - Set limits for E/p checking.
  - `G4QGSParticipants`: reduced energy of participant nucleons by binding energy. This increases excitation energy, as calculated by initial-final. Without this, excitation E often is close to 0, or negative.
  - `G4VParticipants`: removed external dependences on `G4Fancy3DNucleus`.
  - `G4GammaParticipants`: updated according to new `G4V3DNucleus::GetNucleons()` signature..
  - `G4LundStringFragmentation`: made public and factorized the virtual method `FragmentString()`. Factorized method `SplitLast()` to improve maintenance. Simplified `GetLightConeZ()` implementation.
- Photo-lepton-hadron
  - New model `G4VDMuonNuclearModel` to replace old-style `G4MuNuclearInteraction` and `G4ParametrizedHadronicVertex` based on GHEISHA.
  - Removed `G4MuonNucleusProcess` and `G4MuonNucleusInteractionModel` classes. These were the old GHEISHA-style models no longer used.
- Pre-equilibrium
  - `G4PreCompoundModel`: added limit on nucleon number `maxZ=3, maxA=5`, allowing pre-compound emission for light fragments (old formulation of the model). Restored soft-cutoff option and use "go_ahead". Set low limit for excitation to `1 MeV`.
  - `G4PreCompoundTransitions`: return zero probability if no excitons.
- QMD Reaction
  - Migrated to new `G4VCrossSectionDataSet` interface.
- Quasi Elastic
  - New module including the quasi-elastic model extracted from CHIPS. It is used by all physics-lists and it now made independent from CHIPS.
- Radioactive Decay
  - `G4RadioactiveDecay`: added data members and Set/Get functions to support directional biasing ("collimation") of visible decay daughters (e+, e-, gamma, neutron, and alphas, but not neutrinos or the residual nucleus). Added corresponding commands in `G4RadiactiveDecaymessenger`. Set process subtype (`fRadioactiveDecay = 210`). Fix for local decay time; addressing problem report #1224. Added new Fermi function and forbidden beta decay spectral shapes. Added possibility for the user to load its own decay file. Set `halflifethreshold` negative by default to allow the tracking of all excited nuclei resulting from a radioactive decay. Added reading of 'Spontaneous Fission' mode from data files. requires new data set G4RadioactiveDecay.3.4.
  - `G4RadioactiveDecayMode`: added SpFission mode.
  - Created `G4BetaDecayType`, an enum of beta transition types.
  - Created `G4BetaDecayCorrections`, a class containing new Fermi function and forbidden transition calculations.
  - Added check for maximum shell number in `G4NuclearDecayChannel`.
  - `G4RadioactiveDecayChannel`: correction to allow the atomic relaxation of de-excited nuclei produce also during beta and alpha decay.
  - `G4RadioactiveDecayMessenger`: added macro commands for setting files.
  - `G4NuclearDecayChannel`: migration to the new design of atomic deexcitation, activation of deexcitation via EM UI commands or `G4EmProcessOptions` as it is shown in EM examples. Added check if de-excitation is enabled.
  - G4NucleusLimits: suppressed `Z<100` limit.
- Stopping
  - Added class `G4FTFCaptureAtRest` to handle nuclear capture of anti-protons at rest with Fritiof.
  - Added `G4PiMinusAbsorptionBertini` class.
- Utils
  - Added new methods in `G4Nucleon` for creation of anti-nucleus. They can be used to replace protons and neutrons into anti-protons and anti-neutron, respectively.
  - Moved `G4lrint(), G4lint()`, and `G4rint()` global functions to 'global' module for generic use.

### Intercoms

- Migrated code to new G4Exception scheme.

### Interfaces

- Added a flag in `G4Qt` to know if there is an external Qapp started.
- Fix for displaying a QMessageBox on `G4err` output, to allow for proper detection of G4Exceptions coming from kernel.
- Code quality improvements by Coverity.
- Migrated code to new G4Exception scheme.

### Materials

- `G4Material`: added new "Base-material" approach allowing to share internal tables for dedx, ranges, cross section between similar materials; a pointer to the base material (NULL by default) and corresponding methods have been added; added also extra protections against incorrect mass fraction during material construction.
- `G4NistMaterial`: added constructor of a material using base material; reduced size of internal vectors. Cleanup in methods to build materials in `G4NistMaterialBuilder`.
- `G4IonisParamMat`: use mean ionisation potential provided by user in computation of density effect.
- Added new class `G4ElementData`, data structure for cross-sections, shell and isotope cross-sections.
- Reviewed and updated body tissue compositions according to ICRU Report 46 (1992) instead of old data (1975); renamed `G4_TESTES_ICRP` to `G4_TESTIS_ICRP`; removed `G4_CYTOSINE, G4_THYMINE, G4_URACIL`, as already existing as G4_DNA materials.
- `G4Element, G4Material`: reviewed comments. Addressing problem report #1220.
- `G4Isotope`: added flag 'fm' to identify isomer level.
- Removed `G4MaterialPropertyVector` implementation and make it a typedef of `G4PhysicsOrderedFreeVector`; removed `G4MPVEntry` class and modified `G4MaterialPropertiesTable` accordingly.
- `G4SandiaTable, G4IonisParamElm, G4IonisParamMat, G4OpticalSurface`: fixed problems reported by Coverity, mainly in assignment operator.
- Migrated code to new G4Exception scheme.

### Particles

- Updated particle life time, mass and width according to PDG-2011.
- Added B-baryons, Bc mesons, Upsiron and Etac particles.
- Modified `G4PrimaryParticle` to avoid precision loss in conversion from momentum to energy.
- Fixed the scale of 'som0' in `G4MuonRadiativeDecayChannelWithSpin` and other internal quantities computations.
- Fixed bug in `G4IsotopeMagneticMoment` constructors.

### Persistency

- ASCII
  - Fixed case of dereferencing null pointer in `G4tgbGeometryDumper` `DumpRotationMatrix()` method.
  - Fixed bug on the usage of units. Addressing problem report #1240.
  - Migrated code to new G4Exception scheme.
- GDML
  - Extended GDML schema for materials to include ionisation potential (mean excitation energy) property to materials (GDML-3.0.1). Adapted reader and writer plugins accordingly.
  - Extended reader and writer to support new shape `G4CutTubs`.
  - Fixes in reader to properly consider units in import for `G4GenericTrap, G4EllipticalTube, G4TessellatedSolid` and `G4Tet` shapes.
  - Updated to comply with modification made in materials module.
- mctruth
  - Removed disabled obsolete HepMC code.

### Physics lists

- New physics lists and builders:
  - Added OrderingParameterTable for G4PhysicsListHelper.
  - Added G4DNAEmPhysicsChemistry builder.
  - Added builders for anti-deuteron, anti-triton, anti-He and anti-Alpha.
  - Added builders for new LEND hadronic model. Enable to use LEND model and cross-section for low energy neutron in Shielding physics list (default is still neutron-HP) and added `G4RadioactiveDecayPhysics`. Updated `G4PhysListFactory` accordingly.
  - Added new builder `G4IonFTFPBinaryCascadePhysics` applicable for projectile ions up to `100 TeV` and use it within QBBC; set transition energy to `2-4 GeV`.
- Physics lists qualification changes (obsolete/partially disabled/experimental/supported):
  - Marked unsupported: QGSP_BERT_NOLEP, QGSP_BERT_TRV.
  - Marked supported: Shielding.
  - Marked experimental: CHIPS.
- EM physics builders and options:
  - Migrated EM standard, low energy and DNA builders to the new approach based on `G4PhysicsListHelper`: no more use of integer numbers to identify processes order; added de-excitation module to all EM builders.
  - Added `G4BuilderType` header with enumerator of builder types. Added type for all EM and Ion builders.
  - `G4EmStandardPhysics_option3`: experimental change of options: reduced low-energy limit to 10 eV; reduced StepFunction parameters per particle type; Activated Rayleigh Scattering. Use updated `G4UrbanMscModel95` model for e+-.
  - `G4EmLivermorePhysics, G4EmLivermorePolarizedPhysics, G4EmPenelopePhysics`: use `UrbanMscModel95` for e+-.
  - Modified `G4EmExtraPhysics` builder to use the new muon-nuclear model and process.
  - Set multiple-scattering polar angle limit from 0.2 to pi (reduction of number of steps for low-energy muons/hadrons) for `G4EmStandardPhysics, G4EmStandardPhysics_option1, G4EmStandardPhysics_option2, G4EmStandardPhysics_option3, G4EmLivermorePhysics` and `G4EmPenelopePhysics`.
  - `G4EmStandardPhysics_option1,2`: pi+-, kaon+-, proton, anti_proton use WentzelVI model of multiple-scattering.
  - Modified `G4OpticalPhysics` in builders; added new class `G4OpticalProcessIndex`. Addressing problem report #1216.
  - Modified `G4OpticalPhysicsMessenger` to allow `G4State_PreInit` for most commands.
  - `G4EmStandardPhysics_option1`: use UrbanMsc95. `G4EmStandardPhysics_option2`: same as `Opt1` but with UrbanMsc93.
  - Added `SetFiniteRiseTime()` to `G4OpticalPhysics` and `G4OpticalPhysicsMessenger`.
  - Modified `G4OpticalPhysicsMessenger` so that commands `setOpProcessVerbose` and `setTrackSecondariesFirst` work in `PreInit` state.
  - Added process names in `G4EmDNAPhysics`. Changed elastic scattering model. Extended to the handling of HZE.
- Hadronic builders:
  - `G4DecayPhysics, G4RadioactiveDecayPhysics`: use `G4PhysicsListHelper`.
  - `G4HadronElasticPhysics`: added light anti-nuclei using LHEP model below `100 MeV` and above using `G4AntiNuclElastic` model and `G4ComponentAntiNuclNuclearXS`.
  - `G4HadronElasticPhysicsXS, G4HadronElasticPhysicsHP, G4HadronElasticPhysicsLEND`: use `G4HadronElasticPhysics` for all particles and modified only neutron models and cross-sections.
  - Replaced `G4UHadronElasticProcess` by `G4WHadronElasticProcess` in `G4HadronQElasticPhysics`.
  - Removed obsolete `G4HadronElasticPhysics93` configuration.
  - `G4FTFPAntiBarionBuilder`: added cross section to light anti-nuclei.
  - Fixed several small bugs in `G4HyperonFTFPBuilder`. Make use of new features of FTF in FTFP_BERT and in QGSP_FTFP_BERT: added builder `G4HyperonFTFPBuilder` for Hyperons using FTF and Bertini as models. Delete cross-section objects in `G4FTFPAntiBarionBuilder`.
  - `HadronPhysicsFTFP_BERT`: use `G4HyperonFTFPBuilder`, replacing `G4MiscCHIPSBuilder`; use `G4FTFPAntiBarionBuilder` for anti barions; FTFP_BERT and QGSP_FTFP_BERT uses new `IonFTFPBinaryPhysics`, replacing `LHEPIonPhysics` and `IonBinaryPhysics`, respectively.
  - `G4HadronInelasticQBBC`: use FTFP for all anti-baryons, set energy interval for FTFP above 2 GeV, below 6 GeV for Bertini.
  - Updated `HadronPhysicsFTFP_BERT_TRV` to use FTF for antibarions and hyperons, and to use CHIPS cross-sections for hyperons and kaons. This makes this configuration identical to `HadronPhysicsFTFP_BERT`, except for the transition energy. Changed overlap region between BERT/FTFP to be from `3` to `12 GeV`, affecting FTFP_BERT_TRV physics-list.
  - Updated `HadronPhysicsQGSP_FTFP_BERT` to use FTFP for hyperons (`G4HyperonFTFPBuilder`).
  - Change in `HadronPhysicsFTF_BIC` to no longer use LEP for "misc" particles. Now using FTFP for antibarions (`G4FTFPAntiBarionBuilder`) and for hyperons (`G4HyperonFTFPBuilder`); also switch to CHIPS cross-section for kaons.
  - Modified `G4HadronDElasticPhysics` coherently with the changes made in `G4DiffuseElastic`.
  - Removed multiple implementations of `FindInelasticProcess()` method, now included in class `PhysListUtil`.
  - `G4HadronElasticBuilder`: use He3 x-section from the new AntiNuclei class to avoid crash in GHEISHA x-sections. `G4HadronDElasticBuilder`: x-sections from CHIPS, Diffuse model. `G4HadronHElasticBuilder`: alternative x-sections and models.
  - `G4HadronElasticXS`: use `G4BGGHadronElasticXS` proton cross-section.
  - `G4HadronInelasticQBBC`: use CHIPS x-sections for kaons; use Bertini up to `12 GeV`, FTFP down to `3 GeV`. Code cleanup in QBBC.
  - `HadronPhysicsFTF_BIC`: fixed bug for wrong deletion.
  - Removed He3 from elastic builders, because cross-section is still unavailable.
- Updates to lists:
  - Revised QGSP_FTFP_BERT to utilise the new FTF/P processes: changing them for anti-proton, anti-neutron; adding them also for the above list of light anti-ions (d,t,He3,alpha).
  - Added anti-triton to anti-barions. Use default energy limit for anti-barions, i.e. up o 100 TeV.
  - In QGSP_FTFP_BERT use `G4IonBinaryCascadePhysics` in place of `G4IonPhysics`.
  - QGSP_INCL_ABLA: enabled INCL/ABLA treatment for GenericIons.
  - Changed FTFP_BERT_TRV to use Fritiof for the nuclear capture of anti-protons at rest. Introduced new class `G4QandFTFStoppingPhysics`.
  - Added new physics list QGSP_INCLXX and assosiated builders. Uses INLC++ for protons, neutrons and pions in the energy range `[0-3] GeV`.
  - `G4PhysListFactory`: implemented selection of EM builder via physics-list name. EM variants (EMV, EMX, EMY, LIV, PEN) are now available only from physics-list factory, with the exception of FTFP_BERT_EMV and QGSP_BIC_EMY. The following now raise G4Exception explaining what is needed to do: FTFP_BERT_EMX, QGSP_BERT_EMX, QGSP_BERT_EMV.
  - FTF_BIC: removed use of LEP for Kaons; this required new builders `G4KaonBuilder, G4FTFBinaryPionBuilder, G4FTFBinaryKaonBuilder, G4BinaryPionBuilder, G4BertiniKaonBuilder`.
  - `G4DataQuestionaire`: updated for use more datasets. Updated lists to ask for check datasets needed: QGSP_BIC_HP, Shielding, QGSP_BERT_EMV, QGSP_INCL_ABLA.
- Fixed coverity issues in many files; most were uninitialised data members for processes/models.

### Run

- Introducing parallel layered mass geometry.
- Added new utility `G4PhysicsListHelper` for controlling process ordering in physics lists and related classes. If a process is added through the new method `RegisterProcess()`, the ordering parameters can be omitted. Default values for process ordering are applied. The user can choose to adopt his/her own parameter table by setting `G4ORDPARAMTABLE`.
- Default implementation of `SetCuts()` is provided. Now, it is no longer needed to implement a `SetCuts()` method (old scheme still supported). The obsolete method `SetCutValueForOthers()` has been removed. It is now allowed to set zero cut length in `SetCuts` commands.
- Added `ReplacePhysics()` in `G4VModulerPhysicsList` to replace physics constructor in a given physics list.
- Fixed bug in constructor of `G4VUserPhysicsList` reported by ATLAS for setting of `DefaultCutValue` flag.
- Changed `G4VModularPhysicsList` to issue messages always if physics is added and/or removed. Cleared compilation warning on gcc-4.6.
- Fixed potential case of deferencing null pointer in `G4VModularPhysicsList::RemovePhysics()`.
- Removed unnecessary AtRest GPIL in `G4ParallelWorldScoringProcess`.
- Added banner for errors and warnings in `G4ExceptionHandler`. Redirect warnings to cout instead of `cerr`.

### Track & Tracking

- Added `GetSecondaryInCurrentStep()` method in `G4Step`.
- Modified ParticleChange classes to properly handle local time change.
Addressing problem report #1224.
- Renamed `GetVelocity()` to `CalculateVelocity()` in `G4Track`; added accessor and modifier for velocity.
- Added `G4VelocityTable` `CalculateVelocity()` as singleton to avoid unnecessary creation of `G4PhysicsVector` objects in the event loop.
- Set velocity of track within `UpdateStep()` in `G4ParticleChange`.
- Modify `G4Step::InitializeStep()` to set correct velocity for optical photons.
- Modified `G4ParticleChangeForTransport` to fix a bug of wrong velocity in 'PostStepPoint' after `Along/PostStepDoIt()`.
- Fix problems related to treatment of weight in `G4ParticleChange`. (addressing problem report #1243), to always set the parent track's weight to the value set by `ProposeParentWeight()` and `ProposeWeight()` methods for all particle change classes.
- Removed `Conditionally`-forced status in `G4ForceCondition` enum in `G4SteppingManager`, no longer applicable.
- `G4RichTrajectoryPoint`: added 'Pre/PostStepPointStatus' and 'Pre/PostStepPointWeight'. Fixed bug in copy constructor (volume touchable handle was not copied)

### Visualization

- Replaced G4cerr with G4cout and added verbosity control.
- Migrated to new G4Exception scheme.
- Fixed Coverity defects. Fixed warning on gcc-4.6.
- Management
  - Improvements to `/vis/scene` commands.
  - Added `/vis/viewer/set/rotationStyle` UI command.
  - Introduced `RefreshIfRequired` in viewer commands.
  - Added virtual function `ResetView()` in `G4VViewer`. Do not set auto-refresh for viewers that are not auto-refresh by default.
  - Added concept of default view parameters. These can be set in the visualization manager for future operations either by code or by command.
  - Added `/vis/default/hiddenEdge` and `/vis/default/style`.
  - Added printing of available colours on intialisation and in `/vis/list`.
  - Changed "Fatal" to "JustWarning" for non-existent model.
- Modeling
  - Relaxed some exceptions to warnings.
  - `G4TrajectoryDrawerUtils`: reworked TimesValidity.
  - `G4PhysicalVolumeModel`: added flag to `G4PhysicalVolumeNodeID` (true if drawn).
- Externals
  - Fixes to gl2ps.
- HepRep
  - Added `/vis/heprep/scale` and `/vis/heprep/center` commands.
- OpenGL
  - Fixed conflict with qgl.h and GL/gh.h in include files.
  - Added CMake support for Xm and Win32 components.
  - Fix in G4OpenGL header for proper inclusion of gl.h and glu.h for Qt build, when GL/X11 is not selected. Fixes compilation problem happening in either GNUMake and CMake builds, when selected Qt/GL driver on MacOS systems.
  - Fixed transparency problem.
  - Improved first pass rendering speed (reduced use of glFlush).
  - Fixed non-appearance of trajectories in Qt (added final glFlush).
  - Xm: fixed consistency and rest issue with control panels.
  - Stored mode: improved efficiency for handling transients (trajectories).
  - Fixed problem of missing trajectories drawing on Mac. Fixed slow drawing on Mac, by reducing the frequency of glFlush.
  - Fixed inconsistent parameters on Xm panels.
  - Use program loop to call display lists for "permanent objects" instead of using a "top display list".
  - Qt improvements. Bug fix for Qt < 4.4.
  - Fixed circles/squares problem.
  - Improvements in ogl/print and gl2ps.
- OpenInventor
  - Added support for CMake build of OpenInventor.
- RayTracer
  - Updated setup to use new `GEANT4_USE_RAYTRACER_X11` variable.
- XXX
  - Implemented simple ad hoc tree and removed include/tree.

### Environments

- Merged changes for migration to new `G4ApplicationState`.
- Fixes to port on OSX Lion and migrated to new G4Exception scheme.

### Data sets

- New data set G4NEUTRONXS-1.1 for evaluated neutron cross section data on natural composition of elements:
  - Evaluated cross section data derived from G4NDL-4.0.
- New data set G4PII-1.3 for shell ionisation cross-sections to be used in precise impact ionisation simulation.
  - Refined values of the theoretical cross-sections.
- New low-energy data set, G4EMLOW.6.23:
  - Added module penelope/bremsstrahlung for G4PenelopeBremsstrahlung v2008 model.
  - Updated FL2.dat and Paul data.
  - Added Bremsstrahlung data files into new sub-directory brem_SB. Data are published in S.M.Seltzer and M.J.Berger Atom. Data and Nucl. Data Tables 35 (1986) 345-418.
  - Added ecpssr Form Factor calculations from A. Taborda, M. Reis et al.
- New neutron data set with thermal cross sections, G4NDL.4.0:
  - Updated most data to ENDF/B-VII.
  - Added Zinc: Zn_nat.
  - Added Tantalum: Ta181:Ta-181 (neutron), Ta182:Ta-182 (neutron).
  - Replaced Lithium data: Li6, Li7.
  - Replaced Boron data: B10, B11.
  - All neutron data file below Elastic, Inelastic, Capture and Fission are replaced. New data comes from ENDF-VII.r0 library. New files are processed by NJOY-99.u364 with reconstruction tolerance of 0.001. Exceptions: data files for As75, Y90, Pa231, Pa233 and Th232 come from ENDF-VI.r8. No data files for Be7 and As74.
  - All excited isomer data are excluded, as currently not supported in Geant4.
  - All data file for isotopes heavier than Uranium are excluded.
  - Added simplified level scheme data of Np to Cf into inelastic/Gammas.
  - Total 389 isotopes including 3 natural abundance data.
- New photon-evaporation data set, G4PhotonEvaporation.2.2:
  - Updated z93.a237 element
- New radioactive decay data set, G4RadioactiveDecay.3.4:
  - New spontaneous fission capability and upgrade to forbidden beta decays.

### Examples

- Migrated physics-list to use `G4PhysListHelper`.
- In DetectorConstruction in EM examples set I=78 eV (vs 75 eV)for Water. Fix in SteppingVerbose for proper treatment of 'OutOfWorld' cases.
- Archived advanced example 'Rich', no longer under maintenance.
- Various fixes, improvements, adoption of new features.
- Updated reference outputs.
- advanced
  - brachytherapy
    - Migrated to use new internal analysis module.
    - Deleted sensitive detector and ReadOutGeometry components.
  - ChargeExchangeMC
    - Implemented new framework for easy creation of various scene primitives.
    - Added new algorithms for energy deposit collection strategies.
    - Added new reconstruction parameter: expected momentum at the center of the target.
    - Optimized calculation of physical values. Code cleanup.
  - dnaphysics
    - New example exercising G4DNA processes.
  - eRosita
    - Imported old Livermore low-energy processes.
  - hadrontherapy
    - Added complete physics to the batch.mac file for batch runs.
    - Updates and corrections to macros and cleaned physics.
  - iort_therapy
    - New application specifically developed to address typical needs related to the Intra-Operative Radio-Therapy (IORT) tecnique.
  - human_phantom
    - Added macro batch.mac for running in batch mode.
  - microbeam
    - Removed obsolete hadron elastic builders. Removed usage of system commands.
  - microdosimetry
    - Switched to G4ionIonisation and 5 MeV proton.
    - Added new variables to histogram.
    - Added scoring of multiple-scattering.
    - Removed initStep test in SteppingAction.
    - Removed usage of system commands.
  - nanobeam
    - Switched to non-numbered physics list.
    - Removed usage of water material and cleanup.
    - Removed usage of system commands.
    - Removed one analysis option in HistoManager.
    - Updated README for use with full version of CLHEP.
  - xray_fluorescence
    - Migrated physicslist to standard EM+Fluo.
    - Added several classes (`XrayFluoPhysListEmStandardFLUO`, `XrayFluoStepMax` and `XrayFluoStepMaxMessenger`) and adapted code accordingly for use.
- basic
  - New set of basic examples B1-2-3-4 oriented to "novice" users and covering many basic general use-cases typical of an "application"-oriented kind of development.
- extended
  - analysis/A01
    - Corrected order of filling x and y for Cloud2D.
  - analysis/AnaEx02
    - New example showing the usage of histogram and ntuple manipulations using the Root analysis tool. All analysis manipulations (histo booking, filling, saving histos in a file, etc...) are located the class HistoManager.
  - common
    - First version of the placeholder of common classes to be adopted in the future extended examples.
  - electromagnetic/TestEm1,2,3,5
    - PhysicsList: set back default lowest production cut (`990 eV`).
    - Updated `PhysListEmStandard` for msc95 and de-excitation. Set lowest production cut to `100 eV` in PhysicsList.
    - Updated `SteppingVerbose`.
    - Set msc95 as default in `PhysListEmStandard`.
  - electromagnetic/TestEm7
    - PhysicsList: set back default lowest production cut (`990 eV`).
    - Updated `PhysListEmStandard` for msc95 and de-excitation. Set lowest production cut to `100 eV` in PhysicsList.
    - Updated `SteppingVerbose`.
    - Set msc95 as default in `PhysListEmStandard`.
    - Removed calls to obsolete methods and cleaned up options in `PhysListEmStandardNR` and `PhysListEmStandardSS`.
    - Added compiler depended selection of the math library to c2_function.
    - Allow tallies of different materials and sizes.
    - Added Water_1.05 material and test of variable density option in TestEm7.in macro and DetectorConstruction.
  - electromagnetic/TestEm9
    - Added extra run with 20 GeV mu- in TestEm9.in.
    - Set msc95 as default in `PhysListEmStandard`.
  - electromagnetic/TestEm11
    - PhysicsList: set back default lowest production cut (`990 eV`).
    - Updated `PhysListEmStandard` for msc95 and de-excitation. Set lowest production cut to `100 eV` in PhysicsList.
    - Set msc95 as default in `PhysListEmStandard`.
    - Allow several absorbers to DetectorConstruction.
    - Modified RunAction, SteppingAction, SteppingVerbose, DetectorMessenger.
    - HistoManager and Messenger: removed 'csda' and 'stepMax' computation.
    - Updated all macros and Readme.
  - electromagnetic/TestEm12
    - PhysicsList: set back default lowest production cut (`990 eV`).
    - Updated `PhysListEmStandard` for msc95 and de-excitation. Set lowest production cut to `100 eV` in PhysicsList.
    - Set msc95 as default in `PhysListEmStandard`.
    - Added `G4EmDNAPhysics` in PhysicsList and new macro dna.mac.
    - Reduced statistic in input macro.
    - Removed obsolete modifiers in PhysListEmStandard.
    - PhysListEmStandardGS, PhysListEmStandardWVI: low energy threshold for Coulomb scattering model reduced to `10 eV` for e+- and to `100 eV` for muons and hadrons.
  - electromagnetic/TestEm13
  - electromagnetic/TestEm14
    - Modified `PhysListEmStandard`, included AtomicDeexcitation, new `G4PEEffectFluoModel` and `G4KleinNishinaModel`.
  - electromagnetic/TestEm15
    - Updated PhysListEmStandard to multiple-scattering-95.
  - electromagnetic/TestEm18
    - Modified `PhysListEmStandard`, included AtomicDeexcitation, new `G4PEEffectFluoModel` and `G4KleinNishinaModel`.
    - Moved Fluo and Pixe tests to TestEm14.
  - field/field06
    - New example excercising gravity field.
  - geometry/g3tog4
    - Fixed vis.mac macros. Corrected README.
  - geometry/olap
    - Code cleanup.
  - geometry/transforms
    - New example demonstrating various ways of definition of 3D transformations for placing volumes.
  - hadronic/Hadr01
    - Added new builders for ions.
  - hadronic/Hadr02
    - New example providing simulation of ion beam interaction with different targets. Hadronic aspects of beam target interaction are demonstrating in the example including longitudinal profile of energy deposition, spectra of secondary particles, isotope production spectra.
  - medical/electronScattering
    - Updated `PhysListEmStandard` to multiple-scattering-95.
    - Added EGS_13MeV results.
    - Set msc95 as default in `PhysListEmStandard`.
    - RunAction: disabled storing of random seeds.
  - medical/electronScattering2
    - Corrected README comments on opt2 and opt3.
    - Updated `PhysListEmStandard` to match version in electronScattering.
    - Corrected physics-list setting in macros.
  - medical/fanoCavity[1,2]
    - Updated `PhysListEmStandard_opt3` to multiple-scattering-95. Suppressed `PhysListEmStandard_opt2`, and use same configuration as for opt3 in `PhysListEmStandard_GS, VWI, SS`.
  - medical/GammaTherapy
    - Renamed step-limiter classes to avoid clash with class names in kernel.
  - optical/LXe
    - Exercise the optics_engine in input macro.
  - parameterisations/gflash
    - Fixed bug in ExGflashSensitiveDetector::Initialize() for creation of new hits collection.
  - persistency/gdml
    - `G02`: Updated test.gdml to add example of ionisation potential to materials. Requires upgrade of the schema to GDML-3.0.1.
    - `G03`: Changed from no longer supported physics-list QGSP-BERT-EMV to QGSP-BERT.
  - radioactivedecay/rdecay01
    - Fixed bug in time counting in RunAction.
    - Compute activity from primary ion in RunAction.
    - Modified setting for total kinetic energy in histo 6.
    - Suppressed histo #9.
  - radioactivedecay/rdecay02
    - Migrated physics list to remove use of obsolete low energy EM processes.
    - Corrected pre-processor lines in exrdmHisto.
    - Added macro files and user data files to illustrate the possibility for a user to define its own radioactive decay data and evaporation data. An example No252.g4mac shows also how to treat nuclei with `Z>100`.
    - Added commands '/process/em/fluo true' and '/process/em/auger true' in macro files to have the atomic relaxation taking place, with the new EM interface for atomic relaxation. Updated README.
  - runAndEvent/RE04
    - New example demonstrating how to define a layered mass geometry in a parallel world.
- novice
  - N03
    - Get pointers to UserAction classes via G4RunManager.
  - N04
    - Optimised initialisation of Phi angles in parameterisations to avoid recomputation of trigonometry.
  - N06
    - Use Spline interpolation for some property-vectors.