# Geant4 9.6 Release Notes

Geant4 9.6 Release Notes

November 30th, 2012

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. Geant4 Software License
9. Detailed list of changes and fixes

## 1. Supported and Tested Platforms

Officially tested platforms:

- Linux, gcc-4.1.2 and gcc-4.3.x.
  Tested on 64 bit architectures (Intel or AMD) with Scientific Linux CERN 5 (SLC5) (based on Red Hat Linux Enterprise 5).
- MacOSX 10.8 with gcc-4.2.1 and clang-3.1
- Windows7 with Visual C++ 10.0 (Visual Studio 2010)

More verified configurations (64 bits):

- Linux, gcc-4.7.2
- Linux, Intel-icc 13.0
- AIX 5.3, 6.1, xlC 10.1
- MacOSX 10.7 with gcc-4.2.1
- Windows/XP with Visual C++ 9.0 (Visual Studio 2008)

Platforms configured but neither tested nor supported:

- 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
- MacOSX 10.6, gcc-4.2.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.3.1. Use of a different CLHEP version may cause incorrect simulation results.
NOTE: an internal module of the relevant CLHEP classes is provided and can be used as alternative to an external CLHEP library installation.

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

Electromagnetic and optical physics

- EM physics (both standard and low-energy) now require the G4EMLOW data files (version 6.32 is needed).
- Obsolete methods `Get/SetModel()` have been removed from optical processes, requiring an update (i.e. removal of such calls) for those custom physics lists and physics configurations in which optical boundary process is defined.

Hadronic physics

- Hadronic physics now require new G4SAIDDATA data files.

Physics Lists

- Physics lists which depend on the CHIPS package or on the parameterized (Gheisha-like) models (LEP/HEP) are deprecated and will be removed in Geant4 10.

Data Sets

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

- New data set versions: `G4EMLOW6.32, G4NDL4.2, G4NEUTRONXS1.2, RadioactiveDecay3.6, G4SAIDDATA1.1`.

## 4. New Developments and Capabilities

General

- Full event reproducibility is provided in simulations with most physics lists; this allows to restart a simulation from an intermediate event and obtain exactly the same results, if the user specifies or restores the status of the pseudo random generator at the beginning of the event. This strict event reproducibility is achieved in all physics models, with two exceptions: CHIPS stopping and neutron HP. This means that event reproducibility is valid for the majority of the physics lists, including FTFP_BERT, QGSP_BERT and QGSP_FTFP_BERT.

Geometry

- A new optimized implementation of G4TessellatedSolid provides substantial CPU performance boost and reduced memory footprint. Scaling of CPU time with increased complexity (number of facets) of the shapes being defined or imported.

Materials

- For all elements, a vector of G4Isotopes is always created using abundance values from NIST (in previous Geant4 versions, the vector of isotopes was created only for NIST materials). As a result it is no longer needed to define natural composition of isotopes in the user code.

Electromagnetic physics

- WentzelVI multiple scattering model is used by default in all EM physics lists. For electrons and positrons the WentzelVI model is used only above 100 MeV. This was done to provide more accurate simulation both small and large angles of high energy charged particles.
- Sampling of multiple scattering is performed AlongStep, before the sampling of energy loss (previously multiple scattering was sampled PostStep, after the energy loss). The physics performance is unchanged.
- New processes for microdosimetry in Silicon for electrons, protons and ions (G4MuElecElastic, G4MuElecInelastic) and corresponding models (G4MuElecElasticModel, G4MuElecInelasticModel).
- New Compton scattering model (G4LowEPComptonModel) along with specific Physics builder (G4EmLowEPPhysics).
- New builder selects the most accurate models now available for each process; this is G4EmStandardPhysics_option4. Models from both standard and low-energy options are used.

Hadronic physics

- Hadronic processes now trigger re-sampling of the interaction if energy/momentum non-conservation limits are exceeded. A warning message is printed if this occurs.
- New hadron stopping models G4PiMinusAbsorptionBertini, G4KaonMinusAbsorptionBertini, G4SigmaMinusAbsorptionBertini, G4AntiProtonAbsorptionFritiof, and G4AntiSigmaPlusAbsorptionFritiof are added.
- New total cross section sets based on SAID data-base are added. (They are used for proton, neutron and pion cross-sections on hydrogen in majority of physics lists.)
- A new option in the nuclear de-excitation module allows to ignore Doppler broadening for long lived meta-stable isotopes and provide instead decay at rest. This new feature is activated by the environment variable <IT>G4AddTimeLimitToPhotonEvaporation</IT> . If this environment variable is set the momentum balance of the de-excitation is broken and energy balance is respected.
- A new electro-nuclear interaction model, G4ElectroVDNuclearModel, was created. It is based on the CHIPS total cross sections, with final state modeling using the Bertini cascade and FTFP.
- The INCL cascade model (INCL++) was updated and can now handle heavy-ion collisions.
- HTML files describing hadronic processes, models and cross-sections can be printed by invoking the ProcessDescription(), ModelDescription() and CrossSectionDescription() methods, respectively.

Physics Lists

- The model of multiple scattering for electrons and positrons is changed in all physics lists for HEP applications. Introduced the WentzelVI model for multiple scattering of e+ and e- above 100 MeV. Below 100 MeV the Urban95 model is used in the main physics lists (whereas Urban93 is used in EMV or EMX).
- Relativistic gamma conversion model in used in all physics constructors above 80 GeV.
- New EM physics constructor G4EmStandardPhysics_option4 selects the most accurate models for each EM process. It combines models from standard and low-energy sub-packages.
- New model for lepton-nuclear interactions using Bertini and Fritiof/Pre-compound has been introduced in most physics list. Only LHEP- and CHIPS-based physics lists still use the (deprecated) CHIPS model for handling lepton-nuclear interactions.
- Introduced Bertini model for nuclear capture at rest of pi-, K-, Sigma-, Xi- and Omega- in most physics lists. Also use Fritiof/Pre-compound model for anti-proton, anti-Sigma+ and light anti-nucleus capture at rest in the same physics lists. Only LHEP- and CHIPS-based physics lists are still using the (deprecated) CHIPS model for handling nuclear capture at rest.
- CHIPS elastic and inelastic cross-sections for protons, neutrons, pions, kaons, hyperons and anti-baryons have been extracted and moved to the default module. They can now be selected individually for use in physics lists.
- Barashenkov-Glauber-Gribov nucleon-nucleus inelastic cross sections are now used in most physics lists instead of Axen-Wellisch proton-nucleus and Laidlaw-Wellisch neutron-nucleus inelastic cross sections.
- Glauber-Gribov nucleus-nucleus inelastic cross sections are now used in most physics lists instead of Shen (which in turn replaced Tripathi) cross sections.
- The new physics list FTFP_BERT_HP has been created: it is similar to FTFP_BERT, but using HP for low-energy neutrons.
- Four new physics lists have been created: QGSP_BERT_95, QGSP_FTFP_BERT_95, QGSP_BERT_95XS and QGSP_FTFP_BERT_95XS. The "95" variants have the same physics models and cross sections as QGSP_BERT and QGSP_FTFP_BERT, respectively, in Geant4 version 9.5. The "95XS" variants have the same cross sections as QGSP_BERT and QGSP_FTFP_BERT, respectively, in Geant4 version 9.5, whereas the physics models are the same as in Geant4 version 9.6. These physics lists, which have been created for "backward compatibility" with the production physics lists used by the experiments, are deprecated and will be removed in Geant4 10. FTFP_BERT remains the recommended physics list for high-energy applications.

Visualization and Interfaces

- /vis/set/colour, lineWidth, textColour, textLayout - new commands to set view details.
- /vis/scene/add/arrow, arrow2D, line, line2D, logo2D, text2D, date, frame - new commands to add content to views.
- /vis/scene/activateModel - new command to control trajectory and hit modeling.
- /vis/viewer/save, copyViewFrom - new commands to save view parameters and copy them from one view to another.
- Improved OpenGL rendering speed through major re-design of scene and transient processing. Use new command /vis/ogl/set/eventsDrawInterval to get even more speed when accumulating multiple events.
- /vis/scene/add/userAction now supports multiple user vis actions. Where previously one could only have a single user vis action, one can now register any number of such actions. Each action gets a specific name, and each can be assigned to any selected scene.
- Added Event ID to trajectory attributes so that in scenes that contain more than one event, one can tell which trajectory came from which event.
- Improved Qt interface and viewer.
- Improved handling of text.
- Added new OpenInventor option: /vis/open OIXE (in addition to the previous option, /vis/open OIX). Provides many new capabilities such as ability to set viewpoints and to fly along a trajectory path. This is an excellent viewer selection for accelerator studies or other situations in which it can otherwise be difficult to set appropriate views.

## 5. Expected effects on physics and computing performance

Electromagnetic physics

- Compared with Geant4 9.5.p02 a minor speedup of simulation of EM showers (2-3%) in calorimeters is expected, also about factor 2 speedup of EM initialisation.

Hadronic physics

- The main change on hadronic showers in Geant4 9.6 is their lateral profile: showers are wider in Iron and Copper, and narrower in heavier absorbers, like Tungsten and Lead.
- Similar CPU speed for simulation of hadronic showers as in Geant4 9.5.p02.

## 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. 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.

## 9. 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:
  - Complete rewrite of data installation with support for CMake >= 2.6.4 and custom physics data install location. Downloaded data bundles are also verified using MD5 hashes.
  - Added support for Clang detection (CMake > 2.8.1).
  - Implemented C++ Standard detection and flag configuration for GNU, Clang and Intel compilers; added user option to select C++ Standard to build against, if the compiler supports this. The default is always c++98/'ansi' (C++98 plus the '03 addenda). Addressing problem report #1351.
  - New API for managing data to allow reuse of existing datasets and not install data at build time if required. Addressing problem report #1285.
  - Correct shell variable name in export of commands to scripts. Addressing problem report #1387.
  - Added support for G3ToG4 library. Added CLHEP library to link line using output from clhep-config. Addressing problem reports #1290 and #1328.
  - Fix to use BASH_VERSION instead of non-POSIX compliant check. Addressing problem report #1306.
  - Enable use of C-shell scripts inside other scripts. Protect changes to the environment if self location fails. Addressing problem report #1268.
  - Removed extraneous quotes around resolved include paths. Addresses problem report #1357.
  - Removed optimization flags from "TestRelease" build mode on all platforms. Removed obsolete "TestReleaseDebug" build mode. Addresses problem report #1263.
  - Removed find of Inventor debug libraries and added find for of SoXt headers. Addresses problem report #1320.
  - Added -limf library in CMAKE_EXE_LINKER_FLAGS for icc compiler.
  - Allow choice between internal and system expat library on non-Win32 platforms. Choosing system expat requires it to have been found.
  - Check that X11 Xpm library has been found when Inventor driver is activated, and issue FATAL_ERROR if it is not located.
  - On Windows setup, add MD flag to Release style build modes (RELEASE, MINSIZEREL and RELWITHDEBINFO); add MDd flag to Debug style build modes (DEBUG, TESTRELEASE, MAINTAINER).
  - Tidy up module inclusions to provide minor, but noticeable, speed up in CMake configuration time.
  - Use 'header guard' variable to prevent module being loaded multiple times.
  - Improved description of workaround for sourcing Cshell scripts non-interactively.
  - Fixed problem on Windows, for the case that a space appears in the install prefix.
  - Removed use of STATUS in error messages so all errors go to stderr when validating source files.
  - Added FindHepMC, FindPythia6 and FindAIDA modules.
  - Updated version of data sets: G4EMLOW.6.32, G4NDL.4.2, G4NEUTRONXS.1.2, RadioactiveDecay.3.6, PhotonEvaporation.2.3 and G4SAIDDATA.1.1. Removed obsolete ABLA dataset. Updated the required version of CLHEP to 2.1.3.1.
  - Removed obsolete files geant4-env.[c]sh.in.
  - Updated references to data libraries version for 9.6.
- GNUMake:
  - Updated paths for X11 in X11FLAGS on Darwin targets, for porting on MacOSX 10.8 (Mountain Lion).
  - Exclude "setup" and "clean_setup" targets from dependencies step.
  - Replaced "photolepton_hadron" module with "lepto_nuclear". Removed path to hadronic INCL package.

### Analysis

- Updated histogramming tools to g4tools-1.4.3.
- Adding defs include files per manager type; `GetNtuple()` function to specific managers; `GetType()` function to `G4VAnalysisManager`.
- Increased granularity of verbose levels (now 3 levels are available).
- Made creating directories optional. Added locks for functions which define directory names, setting Ids etc. so that these parameters cannot be changed once they were used. Changed return type for the functions with locks to `G4bool`.
- Adding an additional information to the analysis objects: units, activation, ascii output.
- Implemented a possibility to book histograms/ntuples before opening a file.
- Adding a messenger class allowing to configure file and directories names, verbosity level and histogram parameters interactively.
- Fixes in memory management: delete file before opening a new one (all); delete ntuple before closing a file (csv, xml).
- Added possibility to fill h1, h2 with values with automatically applied function (e.g. log10, exp). Added getters for many h1, h2 attributes; Added ScaleH1(), ScaleH2() methods. Added SetH2Title() in all managers.
- Added setters/getters for histogram axis titles and commands for setting histogram title and axis titles.
- Pass units via a name instead of value.
- Fixed warning in G4RootAnalysisManager when trying to fill inactivated histogram.
- Adding function G4VAnalysisManager::SetActivation(..) for setting activation to all histograms of one type. Adding commands to handle and activate/inactivate 1D, 2D histograms.
- Fixed GetH1[2]Width: return the correct value also when histogram is inactive.
- Splitting verbose level 1 in 2 levels and shifting the upper levels.
- Fixed cases of variable shadowing.

### Digitization & Hits

- Support `'weighted'/'dividedByArea'` options in `flatCurrent` and `flatFlux` command-line scorers.
- Use `'const G4String&'` as argument instead of plain copy of strings in `G4ScoringManager, G4VScoreWriter` and `G4VScoringMesh`.
- Explicitly include headers for system of units and physical constants.
- Fixed cases of variable shadowing.

### Electromagnetic Processes

- Fixed cases of variable shadowing and Coverity defects.
- Explicitly include headers for system of units and physical constants.

- Adjoint:
  - G4AdjointBremsstrahlungModel: changed to use G4SeltzerBergerModel as forward model by default.
  - Corrected differential cross-section expression in G4VEmAdjointModel.
  - Get the weight from PostStepPoint rather than from Track when correcting the step in along stepping actions of G4ContinuousGainOfEnergy and G4AdjointAlongStepWeightCorrection. This is needed for a correct propagation of weight correction in different along step actions.
  - `G4AdjointMultipleScattering`: commented out obsolete call.
- DNA:
  - Bug fix in G4DNAChemistryManager::CreateSolvatedElectron() concerning the final position of the solvated electron using Sanche thermalization.
  - Updated source of cross-section file for elastic scattering. Updated electron elastic scattering low limit.
  - Removed G4Water* classes in 'utils' module.
  - Improved management of information in G4ITStepProcessor.
  - Added products of dissociative attachments (as a molecular decay).
  - Added exception in molecular decay, in case no decay channel is proposed in input.
  - Added possibility of calling G4ITStepManager::EndTracking() from UserReactionAction::EndProcessing().
  - Added new classes G4DNAMolecularMaterial, G4DNADamages and G4ITTrackingInteractivity. Modified all models to use G4DNAMolecularMaterial. Added G4DNASecondOrderReaction prototype class.
  - Switched to use of SetEmModel() and EmModel() in all processes classes.
  - Fixed semantic warning related to forward declaration of G4ITNavigator_Lock. Modified molecule's name.
  - Renamed G4DNADiffustionControlledModel to G4DNASmoluchowskiReactionModel. Updated G4ITNavigator to new interface of ReplicaNavigation::ComputeStep().
  - Force kinetic energy to zero for real killings in models.
  - Fixed uninitialised variable in Ionisation Models (Born, Rudd, RuddExtended) and some optimisation.
  - Minor fixes for porting on AIX; mainly on use of const signature for objects in maps.
- High Energy
  - `G4mplIonisation, G4mplIonisationModel, G4mplIonisationWithDeltaModel`: extended energy range of dEdx and other tables for monopoles with large mass, required for interpolation of dEdx for super-heavy monopoles.
- Low Energy
  - New processes and models for microdosimetry in Si for electrons, protons and ions. Details can be found in: "Inelastic cross-sections of low energy electrons in silicon for the simulation of heavy ion tracks with the Geant4-DNA toolkit", NSS Conf. Record 2010, p80-85; "Geant4 physics processes for microdosimetry simulation: very low energy electromagnetic models for electrons in Si", NIM B, vol. 288, pp. 66 - 73, 2012; "Geant4 physics processes for microdosimetry simulation: very low energy electromagnetic models for protons and heavy ions in Si", NIM B, vol. 287, pp. 124 - 129, 2012.
  - Added new Compton model G4MUComptonModel.
  - G4LivermorePhotoElectricModel and G4LivermoreGammaConversionModel: migration to G4PhysicsVector and G4ElementData data structures.
  - Removed obsolete Penelope v2001 models and related helper classes.
  - Make a consistent use of G4Element::GetA() and GetAtomicMassAmu() in Penelope models.
  - Removed dependency on obsolete G4AtomicDeexcitation in G4PenelopeIonisationModel.
  - Decoupled calculation of Penelope ionisation cross-sections from the Ionisation model. Preparatory step for a future Penelope-specific atomic de-excitation model.
  - Minor design iteration for G4VhShellCrossSection base class, in order to carry also the information about G4Material. Also preparatory step for a future Penelope-specific fluorescence model.
  - Made G4PenelopeBremsstrahlungAngular derived from the basic interface G4VEmAngularDistribution. Makes angular generator usable by any other model via the interface.
  - Renamed G4PenelopeIonisationCrossSection to G4PenelopeIonisationXSHandler (the name will be reserved for a different class).
  - Made G4PenelopeCrossSection able to return both absolute and normalized values of the shell cross sections. It will be used for Penelope-PIXE.
  - Penelope-based cross-section model for electron PIXE registered in G4UAtomicDeexcitation. Added warning messages to Penelope models to verify the proper activation of fluorescence.
  - Updated G4PenelopeOscillatorManager to accomodate the calculation of PIXE cross-sections. First implementation of Penelope-specific PIXE cross-sections.
  - Corrected G4PenelopeBremsstrahlungFS to avoid anomaly in the gamma-ray spectrum close to the cut.
  - G4RayleighScattering: build physics table above 100 keV, Substituted calls to methods Model(), SetModel() with EmModel(), SetEmModel()
  - Migration to the common SampleDirection() interface in G4VEmAngularDistribution for Livermore and Penelope models.
  - Introduced new class G4RayleighAngularGenerator.
  - G4Generator2BS: fixed sampling according to the original paper.
  - G4PhotoElectricAngularGeneratorPolarized: added protection against possible infinite loop.
  - Added protection against cos(theta) < -1 to avoid numerical problems in G4PhotoElectricAngularGeneratorPolarized, G4Generator2BN, G4Generator2BS, G4RayleighAngularGenerator. Fixed exception printout in G4LivermoreRayleighModel.
  - Updated MuElec classes to widen the energy range of application.
  - Fix in G4MuElecInelasticModel for usage of iterators at boundary of vectors.
  - Minor fixes for porting on AIX; mainly on use of const signature for objects in maps.
- Muons
  - G4MuMultipleScattering: use G4UrbanMscModel95 as a default. Substituted calls to methods Model(), SetModel() with EmModel(), SetEmModel().
  - G4MuBremsstrahlung, G4MuIonisation, G4MuPairProduction: secondary particle type defined in constructors and not in Initialise() method, this is needed for correct initialisation at G4_PreInit.
  - G4MuBremsstrahlungModel, G4MuPairProductionModel: reduce number of computations of log() of the same argument, no change in results.
- Polarisation
  - G4PolarizedPhotoElectricEffect, G4PolarizedPEEffectModel: substituted calls to methods Model(), SetModel() with EmModel(), SetEmModel().
- Standard
  - Single and multiple scattering:
    - G4CoulombScattering, G4NuclearStopping, G4eMultipleScattering, G4hMultipleScattering, G4ComptonScattering: substituted methods Model(), SetModel() with EmModel(), SetEmModel().
    - G4CoulombScattering: added method MinPrimaryEnergy() allowing to define low edge of physics table when Coulomb scattering is combined with multiple or single scattering; modified initialisation allowing easier addition of a custom model; improved list of options/flags in constructor to reduce size of cross-section tables; do not allow anymore to change polar angle limit after first initialisation; fixed initialisation for the case when polar angle limit is below pi.
    - For all multiple scattering models: sampling of scattering moved from PostStep to AlongStep; implemented StartTracking() method allowing to ensure reproducibility of simulation moved cross-section table from process to model; fixed event non-reproducibility for the case where more than one model is configured for a particle for different energies; removed method GetLambda(); added protection to stop sample scattering if energy is below 1 eV.
    - G4hMultipleScattering: use G4UrbanMscModel95 as a default.
    - G4UrbanMscModel95: improved fix for cases of abnormal tail using results of single scattering model for tuning (protection against very large angles is retained); added protection into GetTrueStepLength method (true length cannot exceed physics path length.
    - G4UrbanMscModel96: new version of the Urban model.
    - G4WentzelVIModel: added "no scattering" check inside SampleScattering().
    - G4WentzelOKandVIxSection: revert to 9.5 version, as giving better fit with MuScat experimental data; make special case only for Hydrogen.
    - G4GoudsmitSaundersonMscModel: fixed FPE bug; fixed inconsistency - lateral displacement is not anymore sampled for plural scattering; improved method of definition of screening parameter.
    - G4ScreeningMottCrossSection, G4eSingleCoulombScatteringModel: updated version of electron scattering code based on analytical approximation of the Mott cross-section by means of Hose coefficients. Added new class G4MottCoefficients.
  - Bremsstrahlung models:
    - G4SeltzerBergerModel: fixed minor problem of sampling for positrons; made internal data structure static to be used by both e+ and e- models providing some memory reduction; use simplified computation of majorant valid for data with more detailed grid; added SetBicubicInterpolationFlag() method, activating more accurate parameterisation of 2D data for energy spectrum; for the cut on gamma energy below 5% below primary electron energy use extra factor 1.2 to max value of the cross-section when sampling gamma energy (reduced number of cases when differential cross-section exceeds estimated maximum of the cross-section).
    - G4eBremsstrahlungRelModel: fixed use of screening function; switched full screening off; use G4DipBustGenerator for angular distribution.
  - Angular generators:
    - Migrated all angular generators to G4VEmAngularDistribution interface and use SampleDirection() method in models which are using this interface (bremsstrahlung and photoelectric).
    - G4SauterGavrilaAngularDistribution extracted from G4PEEffectModel, changed limit gamma factor from 5 to 30 (no angular sampling above ~15 MeV instead of 2.5 MeV).
    - G4DipBustGenerator, G4SauterGavrilaAngularDistribution: added protection to angular sampling theta < pi, and optimise computation for ultra-relativistic particles.
    - G4DipBustGenerator: fixed model description.
    - G4ModifiedTsai: improved sampling of bremsstrahlung in backward hemisphere.
  - G4UniversalFluctuation, G4IonFluctuations: improved sampling for "thick" absorber.
  - G4GammaConversion: use relativistic model above 80 GeV in order to have more accurate cross-sections plus LPM effect at very high energy.
  - G4ComptonScattering: build two cross-section tables, below and above 1 MeV using different technique for interpolation.
  - G4PhotoElectricEffect: build cross-section table above 200 keV.
  - G4KleinNishinaModel: added simplified PDF function and fixed infinite loop. Fixed computation of electron energy.
  - G4BetheBlochModel, G4BraggIonModel, G4BraggModel: defined flag 'isIon' for all nucleus except deuteron, triton and special DNA ions.
  - G4eBremsstrahlung, G4eIonisation, G4hIonisation, G4ionIonisation: secondary particle type defined in constructors and not in Initialise() method, this is needed for correct initialisation at G4_PreInit.
  - G4NuclearStopping: added check of upper energy limit and ion energy to speedup computations.
  - G4ICRU49NuclearStoppingModel: reduced upper limit for protons from 100 MeV to 1 MeV (for CPU performance)
  - G4XrayRayleighModel: update of cross-sections and angular distribution.
  - Added deprecation warning to obsolete methods and classes.
- Utils
  - Fixed issues with event-reordering reproducibility related to EM models. Added StartTracking() method in G4VEmProcess which calls corresponding methods in each registered model.
  - G4LossTableManager: added a check and protection against double registration of the same process; this allows the use of the same EM energy-loss process for different particle types; added methods MinKinEnergy() and MaxKinEnergy()
  - G4LossTableBuilder: added method BuildTableForModel() to enable the building of the physics-table for a model.
  - G4EmModelManager: extended printout if cross-section table is built for the model; improved printout of model energy limits.
  - Process and model abstract classes:
    - G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering: optimisation of time methods called at each step; updated tracking parameters and flags in PostStepGetPhysicalInteractionLength(), print process/model information for the same list of particles.
    - G4VEnergyLossProcess, G4VMultipleScattering, G4VEmModel: added implementation of StartTracking() method; moved initialisation of a new track inside this method; defined flag 'isIon' for all nucleus except deuteron, triton and special DNA ions (fixing event non-reproducibility for ions).
    - G4VMultipleScatteringProcess, G4VMscModel: sampling scattering is moved from PostStep to AlongStep.
  - G4VMultipleScattering: removed transport cross-section table (it is assigned to msc models); simplified AlongStepGetPhysicalInteractionLength() method; added protection against zero kinetic energy into PostStepDoIt(); optimised initialisation and reduced number of checks at run time; added more accurate protection against case when true length exceeds physics step limit; Fixed case of event non-reproducibility for ions; added protection, do not sample scattering if range exceed true step length is less than 'minGeom' parameter (1e-6 mm); define ion multiple scattering in constructor; improved printout at initialisation.
  - G4VEmProcess: added extra option allowing to build two different tables for low-energy and high-energy using different interpolation method; this was needed in order to combined different models for multiple scattering. Changed initialisation for ions.
  - G4VEmModel: added virtual method Value(), by default computing cross-section; added inline methods HighEnergyActivationLimit(), LowEnergyActivationLimit(), ForceBuildTableFlag(), ForceBuildTable().
  - G4VMscModel: critical fix for stopping particles, based on ATLAS report on extremely small steps of low-energy ions. Computes true path length even if multiple-scattering model is inactive. Builds table for all particles except when the same instance of the multiple-scattering process is shared by many different nuclei - the case when it is registered for G4GenericIon. Added building of transport cross-section table and new method GetTransportCrossSection() to be used at run-time; added method GetTransportMeanFreePath(); added GetDEDX() method.
  - G4VEmAngularDistribution added methods SampleDirection() and Initialise().
  - G4EmCalculator: modified method to access a process to take into account that the same process may be used by different particle types; added new methods ActiveForParticle(), FindEnLossProcess(), FindDiscreteProcess() and FindMscProcess(); fixed method FindRegion(); improved model selection for multiple-scattering processes; added ComputeGammaAttenuationLength() method.
  - G4EmCorrections: fixed event reproducibility violation due to cashing of 'IonHighOrderCorrections' with a vector depending on the ion charge.
  - G4VAtomDeexcitation: fixed logic of activation of de-excitation per region and for all geometries; updated initialization for the case when de-excitation is not used. Added computation of sum of energies of de-excitation gamma and electron produced AlongStep; use logical OR instead of AND for de-excitation flags; fixed de-excitation AlongStep by substitution which limited de-ecitation from ion ionisation; corrected activation of de-excitation for the case when specific de-excitation regions are not defined; use G4lring method to extract integer Z.
  - G4ElectronIonPair: use inverse FanoFactor to simplify formula. Cleanup implementation of sampling of number of ions.
  - Added deprecation warning to obsolete methods and classes.
  - Biasing:
    - Fixed Bremsstrahlung splitting to sample gamma secondaries.
    - G4VEnergyLossProcess: fix for forced biasing, now forcing if step==1. Also required change in G4VEmProcess. Addressing problem report #1314.
    - Set weight consistently for forced interaction and cross-section biasing in G4VEmProcess and G4VEnergyLossProcess.
    - G4EmBiasingManager: added check on number of PostStep secondaries; if multiple secondaries disables both splitting and Russian roulette. This does not affect delta-electron and Bremsstrahlung secondary biasing. Cleanup the code; do not modify ParticleChange when applying Russian-Roulette (minor CPU save). Moved RussianRoulette() method to inline; added range cut option.
    - G4EnergyLossMessenger: allow to apply biasing UI commands only in Idle state.
- Xrays
  - Updated `G4VXTRenergyLoss` and regular XTR radiators/models for more accurate angular distribution of XTR.
  - Modified `G4SynchrotronRadiation` and `G4SynchrotronRadiationInMat` to provide more realistic angular distribution for secondary SR gammas according to simplified dipole busted approach.
  - Removed warning in G4Cerenkov constructor.

### Error Propagation

- Fix in G4ErrorRunManagerHelper to correct check for G4ErrorPhysicsList.
- Fixed cases of variable shadowing.

### Event

- G4StackTrack, G4StackedTrack: modified to use a std::vector by value instead of a double linked list. Measured speedup of ~35% in simple test program.
- G4SmartTrackStack: optimized tuning for the parameters (4-5% persistent reduction in total execution time in complex setups). Fix to not use particle definition pointers and use PDG code instead. Enabled by default the use of G4SmartTrackStack (-DG4_USESMARTSTACK).
- G4StackManager: moved some inlined methods from header to implementation to fix issue with Windows DLLs. Also, removed inline keyword from G4EventManager::AbortEvent() to prevent incorrect inlining for VC++ if G4SmartTrackStack is used.
- G4TrajectoryContainer: added private copy constructor and assignment operator in attempt to fix Coverity warnings.
- Added deprecation warning messages to G4CellScorer and G4CellScorerStore classes which will be dropped starting from next major release.
- Fixed cases of variable shadowing.
- Explicitly use inclusion of headers for system of units and physical constants.

### Externals

- Updated CLHEP module to version 2.1.3.1:
  - Random: use a template to get rid of the warnings in Ranlux64Engine.
  - Vector, Geometry, Random: changed names of internal variables to avoid shadowing of variable.
  - Evaluator: fixed a problem with unary +/- and exponentials in Evaluator class.
  - Vector, Evaluator, Random, Geometry: use explicit `std::` for math functions.
  - Made explicit the HepLorentzVector(double) constructor.

### G3toG4

- Fixed cases of variable shadowing.
- Explicitly use inclusion of headers for system of units and physical constants.

### General Processes

- Fixes for Coverity defects and variable shadowing.
- Explicitly use inclusion of headers for system of units and physical constants.
- management
  - Added `GetTotalNumberOfInteractionLengthTraversed()` method to `G4VProcess`.
  - Move virtual inlined methods to source.
- Optical
  - Removed unnecessary methods `Get/SetModel()` from `G4OpBoundaryProcess`.
- Scoring
  - Introducing "HyperStep" G4Step object owned by G4ParallelWorldProcess, which may own touchables in pre- and post-step points belonging to different worlds.
  - Adapt to modifications in G4RegularNavigationHelper which is now a canonical singleton accessed through call to Instance(). Step lengths are accessed by GetStepLengths(). Avoiding inline functions to access G4RegularNavigationHelper. Addressed run-time errors on Windows when using DLLs.

### Geometry

- Explicitly include headers for system of units and physical constants.
- Fixed cases of variable shadowing.
- Biasing
  - Added deprecation warning messages to G4VCellScorer and G4VCellScorerStore classes which will be dropped starting from next major release.
- Magnetic field
  - G4QuadrupoleMagField: allow displaced origin and rotation.
- Management
  - Added base materials in G4Region::ScanVolumeTree() to the list of region materials, when applicable.
- Navigation
  - Extended G4ReplicaNavigation to calculate Exit Normal. Now calculates it at each 'depth', and eventually also for daughters. Gives additional information in case of 'Out-of-Volume' exception.
  - G4SafetyHelper: introduced check of length for relocation method LocateGlobalPointWithinVolume() to check move against safety.
  - G4VoxelSafety: introduced first optimisations in this method, using distance to voxels to trim search tree. The search uses the distance to voxels and the current and previous depths. Includes use of equivalent nodes. It is currently not used in production - it is a first release at the 'beta' level.
  - G4VoxelNavigation: added simple check in ComputeSafety() call whether point is inside current volume.
  - G4RegularNavigationHelper: transform it to singleton created upon first use, instead of static utility class. Make vector of Step Lengths a data member. Adapted G4RegularNavigation to the singleton. Fixes run-time errors on Windows DLLs.
  - G4ErrorPropagationNavigator: cosmetic change to improve readability of initialisation of a double.
- Solids (Boolean)
  - `G4BooleanSolid`: added `'AreaRatio'` data member and method `GetAreaRatio()` to store the ratio of surface areas of SolidA to SolidA+SolidB. The ratio is used in `GetPointOnSurface()` to better approximate uniform coverage of points. Uniformity cannot be guaranteed in all cases. One exception is when constituent solids have shared surfaces.
- Solids (BREPs)
  - Added deprecation warning for BREPs module, planned for removal from next major release.
- Solids (CSG)
  - Modified `GetPointOnSurface()` methods for solids using polar coordinate parameterizations, to generate more uniform distributions, using a function in `G4CSGSolid` to generate correct radial coordinate.
- Solids (Specific)
  - New rewrite of G4TessellatedSolid resulting in reduced memory footprint by 50% and large speedup; for number of facets in the thousands the speedup factor observed is tens or more. Adopted to ad-hoc voxelization of the surface for fast retrieval of intersected facets. Measured a factor of thousands speedup when number of facets is of the order of order of a hundred thousand. New classes introduced, G4SurfBits and G4SurfaceVoxelizer.
  - Modified `GetPointOnSurface()` to throw `sqrt(r)` uniformly for disk surfaces, in `G4Paraboloid, G4Polycone` and `G4TwistedTubs`.
- Volumes
  - Fix in G4EnhancedVecAllocator for porting on AIX.

### Global

- Introduced G4StatDouble class in HEPNumerics module, a class providing simple "one variable statistics" capability; adapted from the original code included in the GRAS tool.
- Use `'const G4String&'` as arguments in G4coutdestination instead of plain string copy to reduce memory churn.
- Removed unnecessary string data member in G4PhysicsVector to reduce memory footprint. Removed related Get/SetComment() methods.
- Added header for thread local storage defines.
- G4Physics2DVector: added bicubic interpolation option. No effect on results if option is not active.
- Added GetClockTime() function to G4Timer to print the clock time.
- Use explicit inclusion of headers for system of units and physical constants. Fixed cases of variable shadowing.
- Update date of release for 9.6.

### Graphical Representations

- G4VVisManager: Added Begin/End Draw(2D), optional methods for bracketing Draw() methods to improve drawing speed.
- G4Colour: in operator<<(), added colour name if in colour map. Added colour brown.
- G4Text: added operator<<(...,G4Text::Layout), for producing meaningful text instead of the integer value of the enumerator.
- Change G4Exception ID in G4NURBS and HepPolyhedron.
- G4VisExtent: cached radius and centre for improved efficiency.
- G4DimensionedType: fixed clang compilation warning. Moved "Helper class" HasName and utility function GetUnitValue() to source.
- Explicitly use inclusion of headers for system of units and physical constants.
- Fixed cases of variable shadowing and Coverity defects.

### Hadronic Processes

- Removed obsolete "incl" module for INCL model; now replaced by INCL++.
- Renamed 'photonlepton_hadron/muon_nuclear' model to 'lepto_nuclear'
- Fixed cases of variable shadowing and Coverity defects.
- Explicitly use inclusion of headers for system of units and physical constants.
- Cross sections
  - G4CrossSectionDataStore: introduced cash for material and element cross-sections in order to save CPU; cross-section for material is not recomputed if material, primary particle and kinetic energy are the same; cross-section for element is not recomputed if material, element, primary particle and kinetic energy are the same; G4Nucleus is updated using new method SetIsotope(). Take into account that all elements should have isotopes.
  - G4VCrossSectionDataSet: added virtual method SelectIsotope() which is used for element wise cross-sections, allowing for the data-set to use isotope wise cross-sections when isotope is selected; by default the old method is used based on isotope abundance; no change of results expected.
  - G4HadronNucleonXsc: updated p,n,pi-,pi+ cross-sections on p,n. Added new method GetCoulombBarrier().
  - G4GGNuclNuclCrossSection, G4GlauberGribovCrossSection: updated to get total and inelastic cross-sections from G4HadronNucleonXsc.
  - G4BGGNucleonInelastic, G4BGGNucleonElastic: use SAID data for scattering off hydrogen below 1.3 GeV for neutrons and below 2 GeV for protons. G4BGGPionInelastic, G4BGGPionElastic: use SAID data for scattering off hydrogen below 2.6 GeV.
  - G4GGNuclNuclCrossSection: updated to get nucleus radii of light elements p, d, t, He3, He4, Li7 and Be9. Fixed condition and setting minimum kinetic energy in to 0.
  - New classes G4ComponentGGNuclNuclXsc based on G4GGNuclNuclCrossSection (Glauber-Gribov for ion-ion cross section) and G4ComponentBarNucleonNucleusXsc based on G4NucleonNuclearCrossSection (Barashenkov cross section); implemented component interface.
  - Added elastic and inelastic cross-sections extracted from CHIPS. Make GetExchangeT() method public to be used in coherent_elastic.
  - Extended functionality of G4CrossSectionDataSetRegistry to allow sharing of cross-sections sets. Make exception in method GetCrossSectionDataSet() optional.
  - New class G4ComponentSAIDTotalXS for SAID cross-sections.
  - Use new cross-sections factory for CHIPS elastic and inelastic cross-sections. Removed unnecessary statics in CHIPS cross-sections and fixed case of double-deletion. Removed G4ChipsBaseXS class.
  - G4NeutronCaptureXS: use G4ElementData for isotope x-sections. Implemented isotope selection based on isotope cross-section.
  - G4ComponentSAIDTotalXS: fixed cross section computation.
  - Added factory mechanism for G4GlauberGribovCrossSection, G4NucleonNuclearCrossSection and G4GGNuclNuclCrossSection.
  - Make two methods in CHIPS cross-sections public for the use in quasi-elastic module.
  - New data-set G4SAIDDATA1.1 controlled by path variable G4SAIDXSDATA is now required.
- Management
  - Added method to address energy non-conservation; if check finds violation of energy conservation, re-sample the interaction.
    - Limits are set in G4HadronicInteraction, and may be overridden per model; LEP and HEP override defaults, as these do not include the recoil nucleus in the final state.
    - Failure of E/p conservation is signalled only if both checks, absolute and relative, fail. Thus violations which either a) are just smaller in absolute value than the value threshold or b) are just a smaller fraction than the threshold fraction (but not both) will not fail.
    - Added check for momentum conservation, reusing limits for energy.
    - Added check for charge and baryon number conservation; active only if limit is less than DBL_MAX.
  - G4HadronicProcess
    - Moved some data members to protected to be used in derived classes; removed unused code.
    - Changed logic of definition of time for secondary particles inside method FillResults().
    - Moved to use method ResetNumberOfInteractionLengthLeft() and GetTotalNumberOfInteractionLengthTraversed() from G4VProcess.
    - Dropped the check cross-section in PostStepDoIt() in the case of neutral particles, in order to improve CPU performance. Now check only for charged particles.
    - Improved quick check and full check for case of electro-nuclear. Copes with case that both primary survives and secondaries are created.
    - Fixed problem of flushing stdout/stderr for energy checking printout.
    - Removed GetTargetDefinition(); instead added GetTargetIsotope().
    - Added catch of G4HadronicException inside BuildPhysicsTable() method.
    - Added full printout about hadronic exception inside G4Exception body; addressing problem report #1377.
  - G4HadronicProcessStore: added functions GetCrossSectionPerAtom(), GetTargetDefinition() and GetCrossSectionPerVolume(). Added e+ and mu+ to level-1 reporting.
  - Added printing of model descriptions to html files.
  - Moved isotope production infrastructure from process to model level; now done only for LEP models. Updated G4HadronicProcess accordingly.
  - G4IsoParticleChange: moved to models/management module.
  - G4HadronicProcessType: added 'fLeptonAtRest'.
  - Models:
    - Moved G4InelasticInteraction class to 'low_energy' model.
    - G4IsoParticleChange: moved from main 'management' module.
    - G4VIsotopeProduction: replace G4Track argument in GetIsotope() with G4HadProjectile.
    - G4VHighEnergyGenerator: added virtual method PartonStringModelDescription().
    - G4VIntraNuclearTransportModel, G4VPreCompoundModel: cleanup for object construction/deletion.
    - Provide method and default values for checking of "catastrophic" energy non-conservation. Current default is a deviation larger than 150 MeV and at least 10% of the kinetic energy of the primary. Set default limit for energy non-conservation to 5 GeV;
    - Added G4VIntraNuclearTransportModel::Description() method, printing a descriptive message before throwing a G4Exception.
    - Modified G4VHighEnergyGenerator: added ModelDescripion() to interface; made private the copy-constructor and the =, ==, and != operators, which are not implemented.
    - G4VIntraNuclearTransportModel: added PropagateModelDescription() method.
    - G4HadronicInteractionRegistry: added method FindModel() allowing to access G4HadronicInteraction by name.
- Processes
  - G4*HadronElasticProcess: replaced use of "aParticleChange" with "theTotalResult", and drop callback to G4VDiscreteProcess::PostStepDoIt().
  - G4HadronElasticProcess: use cut for recoil as energy threshold to produce recoil ion. Added deprecation warning for obsolete method.
  - Marked as obsolete G4WHadronElasticProcess class.
- Stopping
  - Removed class G4FTFCaptureAtRest and replaced with the new classes G4HadronicAbsorptionFritiof, G4AntiProtonAbsorptionFritiof and G4AntiSigmaPlusAbsorptionFritiof. Modified initialisation of de-excitation; fixed potential cases of double deletion of objects; added registration in G4HadronicProcessStore and added sub-type definition. Included annihilation of anti_sigma+.
  - Added new classes G4MuonMinusBoundDecay, G4ElementSelector, G4EmCaptureCascade, G4MuMinusCapturePrecompound, G4HadronStoppingProcess, G4MuonMinusCapture, providing general stopping process.
  - New class G4HadronicAbsorptionBertini inheriting from G4HadronStoppingProcess, registering Bertini as the model. G4PiMinusAbsorptionBertini as subclass of G4HadronicAbsorptionBertini, G4KaonMinusAbsorptionBertini and G4SigmaMinusAbsorptionBertini new subclasses of G4HadronicAbsorptionBertini.
  - G4MuonMinusBoundDecay, G4StopElementSelector: added data for muon capture rate in Hydrogen and He4 from recent experimental data.
  - G4HadronicAbsorptionBertini: drop list of "allowed" hadrons, so Bertini can take care of any negative hadron thrown at it. Use Bertini's IsApplicable() function to decide whether incident projectile is suitable for absorption or not.
  - Flag deprecated classes in the 9.6 release, to be removed for next major release; added warnings to constructors. Stopping hadrons are now handled by Bertini and Fritiof models, and muon capture by the more complex process with atomic cascade effects.
  - Added nuclear capture at rest of anti-nuclei with FTFP in G4HadronicAbsorptionFritiof.
  - G4HadronicAbsorptionFritiof, G4MuMinusCapturePrecompound, G4MuMinusBoundDecay, G4EmCaptureCascade: fixed memory leak; reuse G4PreCompoundModel instead from the store of creation of a new one.
  - G4HadronStoppingProcess: defined two argument constructor with defaults used G4HadronicProcessType in the constructor.
  - Replaced replicated code blocks for deprecation messages with new G4HadronicDeprecate macro from 'utils' module.
- Utility
  - G4HadProjectile: added methods SetGlobalTime(), SetBoundEnergy() and GetBoundEnergy() needed for general stopping process; always set time to zero at construction or initialisation, so hadronic interaction is starting from zero local time. Added Initialise() method allowing to update the projectile and not instantiate it for any new interaction. Inlined all get methods. Added protection to kinetic energy computation.
  - G4Nucleus: added methods GetIsotope(), SetIsotope().
  - Added macro function G4HadronicDeprecate to generate deprecation messages.
  - Fix for porting on AIX in G4ReactionProduct header.
  - Models:
    - G4Fragment: added flag of stable fragment and Get/Set methods.
- Binary Cascade
  - G4BinaryCascade: when propagating secondaries from HE model, do not modify initial energy for Fermi level.
  - G4BinaryCascade, G4BinaryLightIonReaction and G4GeneratorPrecompoundInterface: reuse already instantiated pre-compound model, if existing.
  - Added description in G4BinaryLightIonReaction.
  - Fixed minor leak in G4GeneratorPrecompoundInterface.
  - Code cleanup & splitting of long methods.
  - Fix charge/baryon number violation for Propagate() interface in G4RKPropagtion. Added method to optionally check baryon/charge conservation. Added model descriptions also for Propagate().
- Bertini Cascade
  - Developed and improved ability of Bertini cascade to handle photo-nuclear and elector-nuclear interactions and the interactions of stopping particles.
  - G4CascadeInterface: check for no-interaction in retryInelasticProton(), both in return value and in debugging report. Added new function for dumping configuration.
  - G4CascadeChannelTables: added "om*pro" and "om*neu" to LoadTables().
  - G4CascadeCheckBalance: lower verbosity level for energy-conservation reports, change violation rules to allow relative OR absolute passing, consistent with new process-level checks. Added reporting of strangeness conservation.
  - G4CascadeCoalescence: fixed bug for clear at start of event of the list of clusters already considered; entries from previous events prevented formation of valid clusters. Also improved diagnostic messages.
  - G4CascadeCollisionOutput: added calculations of net strangeness.
  - G4CascadeKminusPChannel: modified two-body cross-section values in zero-energy bin, to reflect stopping data.
  - G4CascadeOmegaMinusPChannel, G4CascadeOmegaMinusNChannel: New classes containing partial cross-sections for omega- p and omega- n reactions.
  - G4CascadeParameters: new singleton container class to hold and evaluate any developer-configured environment variables. Default values for parameters are provided. Three new flags are also defined: G4CASCADE_VERBOSE (pre-set verbosity in G4CascadeInterface constructor), G4CASCADE_USE_PRECOMPOUND (select use of PreCompoundModel in G4CascadeInterface constructor), G4NUCMODEL_USE_BEST (re-set all defaults for nuclear model with physical units).
  - G4CascadeParamMessenger: new class to define UI macro commands for setting G4CascadeParameters (string) values, as an alternative to environment variables.
  - G4CascadeParticle: added public accessor for cumulative path length.
  - G4CascadePPChannel, G4CascadeNPChannel, G4CascadeNNChannel: new final-state tables implemented as subclass of templated base (rather than 'typedef'). Overrides findCrossSection() function to apply analytic (parametrized) function from Stepanov for projectiles below 10 MeV, with maximum cross-section at zero-bin value. Use Stepanov's cross section values up to 420 MeV.
  - G4CascadeSigmaMinusPChannel: changed zero-bin cross-sections for Lambda-n and Sigma0-n, based on data from M. Goossens et al. measurements of Sigma- capture.
  - Removed G4CascadeT1NNChannel class and split into separate pp, pn and nn files (see G4CascadePPChannel, etc.).
  - G4Dineutron, G4Diproton, G4UnboundPN: added protection against warning messages issued from G4ParticleTable::Remove().
  - G4ElementaryParticleCollider: added angular distributions for elastic and inelastic 2-body final states of gamma p and gamma n reactions. Allow photons to be absorbed via dibaryon (quasideuteron) excitation. In generateSCMfinalState(), defer "particles.resize()" action until after final-state properties have been validated. In case no final state can be generated, this ensures that the failure propagates back up the calling chain, instead of simply looping forever.
  - G4ExitonConfiguration: added empty() function to test exciton state, reduced printout to single line.
  - G4Fissioner: removed static in local vectors in method collide(), to ensure event reproducibility.
  - G4IntraNucleiCascader: specify mass when decaying trapped particle. This fixes reproducibility violations when hyperons are forced to decay inside the nucleus.
  - G4InuclNuclei: report non-empty exciton configuration in print().
  - Added additional diagnostic messages in G4NonEquilibriumEvaporator and G4EquilibriumEvaporator.
  - G4NucleiModel: New function isProjectile() identifies incident particle at start of cascade. Return zero from getPotential() for photons in cascade. Added binned spectrum for photons in absorptionCrossSection(). Added scale factor for gamma absorption. Allow photons to be absorbed via dibaryon (quasideuteron) excitation. Simplified and encapsulated path-length computations.
  - G4PreCompoundDeexcitation: avoid double deletion of pre-compound model and excitation handler.
- Chiral Invariant Phase Space (CHIPS)
  - New tuning for stopping in CHIPS. Added re-scattering to allow for wider energy resolution.
  - Fixed charge non-conservation problem and memory leak in G4QFreeScattering.
  - Bug fixes for E/M violation with (dE)^2+(dp)^2>.5 MeV^2.
  - Split G4QInelastic into G4QInelastic and G4QNGamma classes for use with the CHIPS_HP physics-list.
  - Fix to hadron elastic and inelastic interfaces to correct the use of the base class G4VCrossSectionDataSet.
  - Fix for quasi-elastic duplication in G4QInelastic (for p & n).
  - Fixed warning in G4QPDGCode.
  - Added deprecation warning message to constructors for removal in next major release.
- De-excitation
  - G4ExcitationHandler: propagate G4VPhotonEvaporation pointer to G4Evaporation and do not delete it; this allows usage of the same gamma evaporation object inside G4Evaporation class and G4ExcitationHandler; added access methods to de-excitation components.
  - G4VEvaporationFactory, G4Evaporation, G4EvaporationGEMFactory, G4EvaporationFactory, G4EvaporationDefaultGEMFactory: correct deletion of decay channels after run and simplified constructors.
  - G4Evaporation: cleanup logic of initialisation and setup options; always define photon evaporation channel as first; removed obsolete constructor.
  - G4PhotonEvaporation: added check for environment variable `G4AddTimeLimitToPhotonEvaporation`, if it is defined a time limit 1.e10-16 is compared with the nuclear level life time allows to identify and sample narrow gamma lines or use relativistic kinematics which will result in Doppler broadening for other nuclear lines; this option has a side effect for energy-momentum non-conservation.
  - New classes G4PromptPhotonEvaporation, G4LevelManager, G4NucLevel, and G4LevelReader implementing new photon-evaporation model.
- Elastic scattering
  - G4ElasticHadrNucleusHE: fixed reproducibility violation due to caching of cross-sections based on the target element, whereas they depend also on the isotope. Rather than using the first isotope encountered for an element, the natural average is used.
  - Added G4ChipsElasticModel class to use the extracted CHIPS cross-section classes from main 'cross_sections' module.
  - Adopt factory mechanism for CHIPS cross-sections.
  - Initialisation of subtype field for G4ChargeExchangeProcess.
- Electromagnetic dissociation
  - Fixed double deletion of cross-section in G4EMDissociation destructor. Addressing problem report #1339.
  - G4EMDissociation: added prototype for copy constructor.
- High Energy
  - Relaxed limits on check for "catastrophic" energy non-conservation, allow for deviation by the mass of heavy nucleus.
  - Fixed compilation warnings from MacOSX 10.8.
  - Replaced MAXFLOAT with DBL_MAX in G4HEInelastic.
  - Added deprecation warnings to constructors of model classes.
- High Energy Theoretical
  - Added ModelDescription() interface.
- Im_r_matrix
  - Incorporate new data from extended nucleon-nucleon elastic scattering data (SAID evaluation). These double-differential elastic cross-sections now cover energies up to 5 GeV.
  - Fixed reproducibility violation in G4CollisionComposite.
  - Added Print() method to G4CollisionInitialState.
- INCLXX
  - Updated to INCL++ v5.1.8: can now handle heavy-ion collisions. Conserves energy using masses from the Geant4 tables down to the keV level. Fixed a bug mostly affecting reactions around 200 MeV. Refactored the configuration part of the interface in a separate G4INCLXXInterfaceConfig singleton. Interface returns an empty G4HadFinalState if no inelastic event can be produced.
  - Realistic densities for deuterons; can now be used for very light systems (e.g. p+alpha).
  - INCL++ refuses to handle reactions between nuclei with A>18. Those reactions are handled by binary-cascade.
  - Major speed improvement in cluster coalescence; gained about a factor of 2 in 1-GeV p+208Pb. Fixed some bugs in reactions induced by composite particles.
  - Only one model instance for all processes.
  - Messenger interface now creates commands in /process/had/inclxx, for consistency with Bertini model.
  - Better (iterative) determination of the remnant recoil at the end of the cascade. Isospin-dependent back-to-spectator.
  - Minor bug for negative incident pions: integration over impact-parameter distribution was incomplete.
  - Cache nuclear-density objects for better performance.
  - Fixed sampling of the impact-parameter distribution for nucleon-induced reactions and incoming kinetic energies below ~40 MeV.
  - Always apply numerical solutions (used to lead to some minor violations of energy conservation).
  - Do nothing if the projectile is below the Coulomb barrier.
  - Bug fix to void collisions with A=1 targets.
  - Bug fix: de-excitation products should not be boosted using the pre-fragment velocity.
  - Fixed bug in forced compound nucleus (emission of di-protons or di-neutrons). Fixed a bug affecting the choice of the accurate-projectile mode.
- Isotope Production
  - Change GetIsotope() interface argument to use `G4HadProjectile` instead of `G4Track`.
  - Added deprecation warnings for removal in next major release.
- Lend
  - Fix for porting on AIX in statusMessageReporting source code.
- Lepto-nuclear
  - Renamed module from `'photolepton-hadron'`.
  - Added new model G4ElectroVDNuclearModel. Removed classes G4LeptonHadronProcess and G4LeptonHadronInteractionModel.
  - Changed name of G4VDMuonNuclearModel to G4MuonVDNuclearModel to avoid any confusion with virtual class names. For gammas below 10 GeV use Bertini cascade to interact gammas directly with nucleus. Above 10 GeV, treat gamma as pi0 and use FTFP model. Fixed negative KE bug in CalculateHadronicVertex(). Fixed case of NaN value for pion momentum at low gamma energies.
- lll_fission
  - Fixed uninitialised variables.
- Low Energy
  - Moved G4InelasticInteraction class to this module from 'management'.
  - In ApplyYourself() method of all G4LEXXXInelastic classes, added call to DoIsotopeCounting(), conditional upon isotope production mode being turned on.
  - Relaxed limits on check for "catastrophic" energy non-conservation (for G4LCapture, G4LFission and G4LElastic). This allows for deviation by the mass of heavy nucleus. Accounts for lack of recoil nucleus.
  - Added deprecation warnings for removal in next major release.
- Neutron High Precision
  - Added protection of huge E/p breakdown caused by a miss match between cross-section data set and model. Added final momentum check in G4NeutronHPInelasticBaseFS. Added method to loosen check for bad energy violation and allow for big differences when G4NEUTRONHP_DO_NOT_ADJUST_FINAL_STATE is set.
  - Removed unnecessary debug output produced by G4NeutronHPCapture.
  - Use QI values for limiting the products energies in G4NeutronHPInelasticCompFS.
  - Added isotropic emission in CM system.
  - Added non LIN-LIN interpolation and 2D interpolation.
  - Added capability to produce fission fragments for those currently neglected, based on ENDF nfy data; enabled by setting environment variable G4NEUTRONHP_PRODUCE_FISSION_FRAGMENTS.
  - G4NeutronHPFission: added method to loosen check for bad energy violation to allow for a violation of order of nuclear mass (250GeV).
  - Added excited isomer index and methods in G4NeutronHPFinalState and G4NeutronHPDataUsed. Updated relevant sources accordingly.
  - Migrated 'frameFlag' (MF6 LCT) = 3, used for several ENDF/B-VII.1 files previously in use only for energies beyond 20 MeV.
  - Added G4NeutronHPBGGNucleonInelasticXS class to be used in Shielding physics-list.
  - Added G4NeutronHPManager and G4NeutronHPReactionWhiteBoard classes.
  - Set A and Z of the reaction into "targetNucleus" from HadronicProcess.
  - Enable to handle cross sections of dynamically generated G4Elements. Enable to handle final states of dynamically generated G4Elements.
  - Fix in G4NeutronHPContAngularPar::Sample() when dealing with outgoing angles. Addresses problem report #1366. Fixed potential floating point error.
  - Fix in returning unchanged final states in G4NeutronHPChannelList.
  - Fix for porting on AIX in G4NeutronHPVector header.
  - Requires new data set G4NDL-4.2.
- Parton-String
  - Improved diffraction dissociation of p/pi/k-mesons. Fit of exp. data on p/pi/k + H. Good results are obtained for h+A interactions.
  - Tuning of FTF parameters: Wdelta 0.25 -> 0.05, Dcor 0.4 -> 0.3, E* 75 -> 100 MeV.
  - Introduced new energy dependence for diffraction cross-sections.
  - Improved quark exchange algorithm. Strings with large masses are now allowed to save their masses.
  - Increased Pt transfer in excitation up to 0.3 GeV/c.
  - Changed string mass sampling for baryon like strings.
  - Safer implementation of the static pointer for cross-sections.
  - Bug-fixes in PutOnMassShell() and high energy anti-baryons in FTF model. Fixed bug for K-minus interactions.
  - Modified G4FTFParameters to use new G4ChipsComponentXS from main 'cross_sections' module; made G4ChipsComponentXS static to avoid multiple instantiations.
  Removed old interface G4ComponentCHIPShadronNuclearXS.
  - Implemented improved diffraction dissociation.
  - Added ModelDescription() to FTF and QGS.
  - Probabilities of s-sbar quark pairs and qq-qqbar diquark pairs are changed in G4LundStringFragmentation to describe the NA49 data.
- Pre-equilibrium
  - G4VPreCompoundFragment: fixed rare bug for abnormal fragments by moving computation of Z^(1/3) after consistency check.
  - G4PreCompoundModel: deal correctly with instantiation and deletion of G4ExcitationHandler in constructor and destructor. Prepared to use factory approach.
  - Added Description() method in G4PreCompoundModel printing the description from the Physics Reference Manual.
- QMD Reaction
  - Added model name to G4QMDReaction.
- Quasi Elastic
  - Moved classes to use common cross-sections.
- Radioactive Decay
  - G4RadioactiveDecay: added computation of activation. Added 'isInitialised' flag to reduce initialisation printout. Removed internal PhysicsVector of mean free path and implemented same algorithm as in G4Decay, Modified BuildPhysicsTable() method: added Spline, added initialisation of atomic de-excitation (needed for the case when radioactive decay is used standalone). Set a flag 'isAllVolumesMode' to ensure that when the geometry is changed, the 'AllVolume' mode is still considered. Added call to LoadedNuclei.push_back() in LoadDecayTable() also for the case where user data files are used. Addressing problem report #1324.
  - Changed length of input characters to 100 in G4RIsotopeTable to fix infinite loop when excitation energy is non-zero.
  - G4RIsotopeTable: added reading of user data files in order to take into account the life time. Use evaporation nuclear level data in G4RIsotope::GetMeanLifeTime() for getting the mean life of an exited nuclei, when it is not provided in the radioactive decay database. Reset print message to verbose level 1 to avoid systematic printing for some decays.
  - G4BetaDecayCorrections: fix in constructor for a bug on beta+ decay. In FermiFunction(), fix for discontinuity in electron screening energy.
  - Requiring new data set RadioactiveDecay.3.5.

### Intercoms

- First version of G4GenericMessenger class. Added related G4AnyType and G4AnyMethod utility classes.
- Code reviewed to use `'const G4String&'` argument.
- G4UImanager: added macro path feature with /control/macroPath command.
- Added shortcut way for defining UImacro commands in G4UImessenger.
- Fix on executing a macro file containing Windows return codes.

### Interfaces

- G4UIQt: changed name of viewer components. Set Cout as default ToolBox widget at startup; moved Cout widget out of toolbar. Updated GUI window. Added /vis/scene/add and /vis/viewer parameters widgets. Reviewed implementation to be able to call widget dialog box for parameters outside view/scene tab stack component. A menu/icon with a command without parameter will open a parameter dialog box. Added warning when creating new menu if command not found.
  Moved icon creation in a generic method AddIcon(). Icons are provided in a icons.mac file. Put name of the application in the title bar. Corrected "File" menu; addressing problem report #1391. Fixed 'add' button; addressing problem report #1389. Moved command line on the right widget. Added "save" command to "save" icon through /vis/viewer/save.
  Fixed issue for ColorDialog in Qt < 4.5. Addressing problem report #1365.
- G4UIQt/G4VInteractiveSession/G4InteractorMessenger: added new command /gui/addIcon to be able to add an icon on the toolbar Removed "Scene" and "viewer" components.
- G4VUIshell, G4UItcsh, G4VBasicShell, G4UIterminal: improved swimming among command directories with ".", "..".
- G4UIExecutive: introduced string-driven-selection of UI session. Introduced run-time session selection scheme and moved inline code to source. Re-ordered printing of available sessions. Removed Win32 session from best guess. Fixed case-insensitivity in .g4session, with some modifications.
- G4UItcsh: changed command completion, now dynamically optimize path.
- Changed GetCommandLine() in G4UIshell to GetCommandLineString() to avoid conflicts on Windows.
- Code reviewed to use `'const G4String&'` argument.
- G4InteractorMessenger: allow "addIcon" command to have omittable parameters.
- G4UIGAG, G4UIGainServer, G4UIQt, G4VBasicShell: fixed compilation warnings on gcc-4.7.
- Deprecated G4UIXaw driver.

### Materials

- G4Element, G4Isotope, G4NistManager, G4NistMaterialBuilder, G4NistElement, G4NistElementBuilder: added/reviewed methods GetA(), GetAtomicMassAmu().
- G4Element: added construction of isotope-vector for all elements; if user does not create isotopes, then vector of isotopes with natural abundances is created automatically using NIST data. In all cases the sum of isotope abundances is normalized to unity.
- G4Material: added map for composite materials built via AddMaterial(). When constructing material from the base one use mean excitation energy from base material and not recompute from scratch.
- G4NistMaterialBuilder: build H2O via atom count and not mass fraction. Added G4_THYMINE, G4_CYTOSINE and G4_URACIL; for G4_ADENINE and G4_GUANINE use combination by atom numbers and not by mass fraction.
- G4IonisParamMat: more safe computation of element index and identification of Hydrogen and Helium.
- Added method ConstructNewIdealGasMaterial() in G4NistManager and G4NistMaterialBuilder.
- G4SandiaTable: avoid use of std::pow() from all functions and use instead precomputed values in static array; some CPU performance improvement expected.
- Explicitly use inclusion of headers for system of units and physical constants.
- Fixed cases of variable shadowing and Coverity defects.
- G4AtomicShell: reorder shells descending in energy (before, shells were ordered by quantum numbers and for high Z atoms low-energy outer shells had lower indexes than shells with higher quantum numbers).
- Updated G4ElementData and simplified code.

### Particles

- Fixed problem in G4PhaseSpaceDecayChannel, where dynamic mass was cached in the object and used in following decays. Fixed problem in constructor. Fixed assignment operator of G4DecayProducts.
- Added protection to call G4ParticleRemoveAllParticles in 'readyToUse' state.
- Added protection to call 'Clear' for G4IonTable and G4ShortlivedTable in 'readyToUse' state.
- Added protection to call 'Remove' for G4ParticleTable and related tables in 'readyToUse' state.
- Added protection to call destructor of G4ParticleDefinition in 'readyToUse' state.
- Explicitly use inclusion of headers for system of units and physical constants.
- Fixed cases of variable shadowing.

### Persistency

- Minor fix for porting on AIX to G4tgrVolumeMgr in ascii module.
- Fixed cases of variable shadowing.
- Explicitly use inclusion of headers for system of units and physical constants.

### Physics lists

- New physics lists and builders:
  - Added new FTFP_BERT_HP physics list, combining HP data-driven treatment for neutrons.
  - Added new CHIPS_HP physics list, which combined CHIPS models with the HP data-driven treatment for low-energy neutrons.
  - Instrumented EM and hadronic constructors to register factories.
- Physics lists qualification changes (supported/experimental/unsupported):
  - Marked supported: FTFP_BERT_HP.
  - Marked experimental: QGSP_INCLXX.
  - Marked unsupported: LHEP, LHEP_EMV, CHIPS, CHIPS_HP, QGSC_BERT, QGSC_CHIPS, QGSP_BERT_CHIPS, QGSP_BERT_NOLEP, QGSP_BERT_TRV, QGSP_QEL, QGSP_BERT_95, QGSP_BERT_95XS, QGSP_FTFP_BERT_95, QGSP_FTFP_BERT_95XS.
- EM physics builders and options:
  - In all EM builders use the same instances of the Bremsstrahlung and e+/e- pair production processes for each particle/antiparticle pair. As a result, mu+ and mu- share one instance of each process. Pi+ and pi- share a different instance of each process. The same occurs for K+ and K-, and for proton and antiproton. Expect reduction of memory required for physics tables and initialisation time for EM physics.
  - In all EM builders use WentzelVI multiple scattering model for e+- above 100 MeV; build transport mean free path for He3 and He4, do not build for all other ions and heavy hadrons.
  - New builder G4EmStandardPhysics_option, combining standard and low-energy physics configuration as best combination. Added "opt4" to G4PhysListFactory.
  - Modified method of instantiation of multiple scattering: the same process instance is used by mu+ and mu-; Note: different instances are still used for pi+, pi-, K+, K-, proton and antiprotons. Separate processes are needed to enable the different internal transport cross-section tables. For all others particles one (extra) process instance is used and no table is built.
  - Use the WentzelVI model for e+ and e- above 100 MeV in all standard builders for HEP use cases (Opt0, Opt1, Opt2). This is coupled with single Coulomb scattering using G4eCoulombScattering models. Below 100 MeV the G4UrbanMscModel95 model is retained. This addresses the issue of unphysical large angle scatters of GeV electrons reported by Atlas.
  - Substituted obsolete method SetModel() by SetEmModel().
  - G4EmExtraPhysics: changed name of class G4VDMuonNuclearModel to G4MuonVDNuclearModel.
  - New physics builder G4EmLowEPPhysics to take into account renamed Monash U. Compton model. Removed obsolete G4EmLivermoreMUPhysics builder.
  - Changed G4WaterExcitation to G4DNAWaterExcitation in G4EmDNAPhysicsChemistry. Updated builders for G4DNA.
  - Added new Physics constructor G4EmLivermoreMUPhysics.
  - Remove use of SetModel() for optical physics, according to changes to optical process.
  - G4EmPenelopePhysics, G4EmStandardPhysics_option3, G4EmLivermorePhysics, G4EmPenelopePolarizedPhysics: added upper limit 1 MeV for nuclear stopping for CPU performance
  - G4EmStandardPhysics, G4EmStandardPhysics_option1: use WentzelVI for pions and kaons G4EmStandardPhysics_option2: added Rayleigh scattering. G4EmStandardPhysics_option3, G4EmLivermorePhysics, G4EmPenelopePhysics: added nuclear stopping for protons and antiprotons, removed upper energy limit for Rayleigh.
  - Updated G4EmDNAPhysicsChemistry; molecule's names changed. Renamed G4DNADiffusionControlledModel to G4DNASmoluchowskiReactionModel.
- Hadronic builders:
  - New builders using Bertini and Fritiof for lepton-nuclear. Migrated most of the physics lists to use these new builders and the new cross-sections extracted from CHIPS.
  - Using new functionality of cross-sections registry to allow sharing of cross section data-sets. Migrated the Elastic and DElastic builders, and most of the physics lists to use factory mechanism for the new cross-sections extracted from CHIPS.
  - Updates the INCLXX builders for compatibility with the latest INCL++ developments. Updated QGSP_INCLXX physics list to treat light-ion-induced collisions with INCL++.
  - Reduced number of objects deleted in hadronic builders to avoid cases of double deletion.
  - Renamed G4IonFTFPBinaryCascadePhysics as G4IonPhysics (while the original G4IonPhysics has been renamed as G4IonLHEPPhysics). Migrated G4IonPhysics and G4IonBinaryCascadePhysics to use Glauber-Gribov nucleus-nucleus inelastic cross sections.
  - G4VHadronPhysics: include name of the hadron in the name of the process.
  - Added proper treatment of light anti-ions in G4HadronQElasticPhysics.
  - Removed obsolete class G4HadronInelasticQLHEP.
  - Improve creation of cascade to avoid one instantiation of Pre-compound in FTFP{Proton,Neutron,PiK,AntiBarion} builders.
  - Substituted use of G4WHadronElasticPhysics by G4HadronElasticPhysics in all elastic builders.
  - G4HadronInelasticQBBC: reuse G4PreCompoundModel if it is already instantiated.
  - Removed INCL builders and obsolete physics list QGSP_INCL_ABLA.
- Updates to lists:
  - Use Bertini model for pi-, K-, Sigma-, Xi- and Omega- for nuclear capture at rest in most physics lists. In addition use the FTF and Pre-compound models for antiproton, anti-Sigma+ and light anti-nucleus capture at rest in the same physics lists.
  - Added four new physics lists: QGSP_BERT_95, QGSP_BERT_95XS, QGSP_FTFP_BERT_95 and QGSP_FTFP_BERT_95XS.
  - Added nuclear capture at rest of anti-nuclei with Fritiof/Pre-compound.
  - Fix to use correct classes for Bertini gamma/electro-nuclear.
  - HadronPhysicsShielding: fixed problem in neutron cross-section for inelastic reaction below 20MeV.
  - Replaced G4QandFTFStoppingPhysics with the new class G4BertiniAndFritiofStoppingPhysics.
  - Replaced G4IonBinaryCascadePhysics with G4IonPhysics in some lists.
  - Changed default physics for stopping, lepto-nuclear, and ion. Only LHEP- and CHIPS-based physics lists keep using exactly the same physics as before, whereas all other physics lists migrate to the new default. Deprecated the physics lists that will be removed in next major release.
  - Consistent treatment of _EMV, _EMX, and _EMY physics lists.
- Added new factory class G4PhysListFactory implementing new automatic registration mechanism; added registry singleton class G4PhysicsConstructorRegistry and implemented generic physics list class G4GenericPhysicsList.
- Moved #includes from .hh to .cc to reduce compile dependencies.
- Explicitly use inclusion of headers for system of units and physical constants.
- Fixed cases of variable shadowing and Coverity defects.

### Run

- Offering more granular public methods of G4RunManager, to enable external frameworks with own event loop to execute each individual event without copying context of base class methods of G4RunManager.
- Destructor of `G4RunManager` now sets `G4State_Quit` in addition to `G4RunManagerKernel`.
- Added new subType process numbers for DNA processes.
- Moved constructors and destructor for G4VPhysicsConstructor base class to source.
- Fixed cases of variable shadowing.

### Track & Tracking

- Modified way of handling parent weight in AlongStep in accumulated way (same as for other properties). Fixed treatment of weights in G4ParticleChange. Addressing problem report #1283.
- Fixed bug in G4ParticleChange::AddSecondary(), where the local time of the parent was incorrectly used. Addressing problem report #1305. Added global time check for secondaries in G4VParticleChange.
- Modified output messages for CheckIt() and CheckSecondary(). Added G4Exception in G4ParticleChangeForRadDecay::AddSecondary().
- Fix in G4VelocityTable::Interpolation().
- G4ParticleChangeForMSC: allow for modification of position and direction along step.
- Explicitly use inclusion of headers for system of units and physical constants.
- Fixed cases of variable shadowing and Coverity defects.

### Visualization

- General:
  - Added commands (see help system or user guide for details):
    - /vis/scene/activateModel
    - /vis/viewer/copyViewFrom
    - /vis/set/colour
    - /vis/set/lineWidth
    - /vis/set/textColour
    - /vis/set/textLayout
    - /vis/scene/add/arrow
    - /vis/scene/add/arrow2D
    - /vis/scene/add/line
    - /vis/scene/add/line2D
    - /vis/scene/add/logo2D
    - /vis/scene/add/text2D
    - /vis/scene/add/date
    - /vis/scene/add/frame
    - /vis/viewer/save
  - Improved commands:
    - /vis/scene/add/axes - default size is now computed automatically, limit width to length/50.
    - /vis/scene/add/logo - default size is now computed automatically.
    - /vis/scene/add/scale - default size is now computed automatically.
  - Extended G4VisManager to support multiple user vis actions. Where previously one could only have a single user vis action, one can now register any number of such actions. Each action gets a specific name, and each can be assigned to any selected scenes. See the help system or user guide for details: /vis/scene/add/userAction.
  - Added Event ID to trajectory attributes so that in scenes that contain more than one event, one can tell which trajectory came from which event.
  - Removed creation date from EPS files (so that one can more easily use diff to tell that two files have the same graphics).
  - Implemented 'BeginDraw/EndDraw' and 'BeginDraw2D/EndDraw2D'. This forces all thus-bracketed Draw messages to have the same transformation. If an attempt to change the transformation is detected, a fatal exception is raised.
  - Migrated drivers to use G4VScenehandler::fObjectTransformation.
  - Added G4VViewer::RefreshView().
  - Added an extra refresh for auto-refresh viewers at end of run.
  - G4VisManager::EndOfEvent(): removed unwarranted DrawView() that was causing duplicate copy of the geometry to be drawn.
  - Marker size bug fix.
  - Fixed Ubuntu warnings about ignoring return value of system call.
  - Removed several instances of code duplication, unnecessary screen refreshing, incorrect buffer switching (necessitating extra refreshing), variable shadowing, etc.
  - Removed #ifdef G4VIS... from header files.
  - Protected against use of 2D primitives in viewers that can not handle these.
  - Improved handling of parallel worlds (some worlds had been missing from redraws).
  - Added SetBaseFullPVPath(). The base full path is the full path of the top physical volume (actually the full path of the mother of the top physical volume), so that even if a user issues '/vis/drawVolume sub-detector', the full path includes the base full path, i.e., the full path up to the world volume.
  - G4ModelingParameters: added VisAttributesModifiers, enums and a nested class for communicating a modification to the vis attributes for a specific touchable defined by PVNameCopyNoPath, to be used by new commands set, '/vis/touchable/set/...'.
  - Brought stray print statement under control of verbosity. Addressing problem report #1310.
- Fukui Rendeder (DAWN)
  - Implemented 2D text.
- OpenGL
  - Improved rendering speed through major re-design of scene and transient processing.
  - Added command /vis/ogl/set/eventsDrawInterval to specify how frequently image should update when accumulating multiple events. Defaults to 1, meaning to refresh after every event.
  - Improved Qt interface and viewer:
    - Introduced Qt tree ("Scene" panel in G4UIQt session).
    - Added search widget in scene tree.
    - Added depth-of-geometry slider.
    - Double-click to change color/transparency.
    - Record changes to colour and visibility of touchables so that they may be transmitted to other viewers.
    - Attempting to instantiate a Qt viewer when there is no Qt UI session used to cause a crash since the viewer requires the Qt UI session. We now protect against this, creating an alternate OpenGL viewer when a Qt viewer would not be appropriate.
    - Allow instantiation of a Qt viewer in batch - no window is opened, but one can create a scene, change view parameters and '/vis/ogl/printEPS' to get an EPS file in batch.
  - Improved handling of text in all X viewers:
    - Volumes drawn in surface mode now hide 3D text when appropriate.
    - Implemented text layout and offset.
    - Fixed cases where text was missing.
  - Corrected treatment of colour for transient objects.
  - Corrected treatment of transparency in OpenGL stored mode for trajectories that pass through or behind transparent persistent objects (detector components).
  - Fixed bug such that hidden markers can now be handled on-the-fly, i.e., without having to rebuild the display lists.
  - Fixed Qt batch mode printEPS. Addressing problem report #1368.
  - Fixed problem on Linux at startup. Addressing problem report #1385.
- OpenInventor
  - New option: /vis/open OIXE (in addition to the previous option, /vis/open OIX):
    - OIXE opens a G4OpenInventorXtExaminerViewer, an optional replacement for the standard SoXtExaminerViewer.
    - Provides many new capabilities such as ability to set viewpoints and to fly along a trajectory path.
    - This is an excellent viewer selection for accelerator studies or other situations in which it can otherwise be difficult to set appropriate views.
    - See help system or user guide for details.
    - Currently requires the Coin3D implementation of Inventor.
  - Fixed libXpm linking problem.

### Environments

- G4Py:
  - Updated configure script for CMake build.
  - Updated Geant4 interface according to latest changes to kernel.
  - Explicitly including units and constants headers.
  - Updated documentations in Markdown format.
  - Minor updates for examples.

### Data sets

- New low-energy data set, G4EMLOW.6.32:
  - Updated high granularity electron elastic cross-section data.
  - Updated data for Goudsmith-Sounderson model.
  - Removed unused files for obsolete Penelope01 models from the module Penelope.
  - Added new cross-section data files for microdosimetry models in Si, for electrons, protons, and ions.
  - Added updated Bremsstrahlung data files with extended grid from NIST (as in Penelope2008); added probabilities of scattering off electrons from S. M. Seltzer and M. J. Berger, Atom. Data and Nucl. Data Tables 35 (1986) 345-418.
  - Added new ionisation cross-section data for incident protons and alphas from the work of A. Taborda et al.
  - Updated data for Seltzer-Berger Bremsstrahlung model obtained from Geant4 Penelope dataset.
  - Updated icru73 ion stopping data with PASS code computations (main difference for Iron ions - Bragg peak is lower by about 10%).
  - Added optimized data files for Livermore gamma processes.
  - Added optimized muelec files.
- New neutron data set with thermal cross sections, G4NDL.4.2:
  - Most data is converted from ENDF/B-VII.r1 with processing by NJOY-99.u364 with reconstruction tolerance of 0.001. Following isotopes are exception: Cl35 (same as v.4.0), MT600, 4Be7, 25Mn55, 33As74, 39Y90, 40Zr90, 40Zr91, 40Zr92, 40Zr93, 40Zr94, 40Zr95, 40Zr96, 69Tm168, 69Tm169, 69Tm170, 74W180, 74W182, 74W183, 74W184, 74W186, 90Th232, 91Pa231 and 91Pa232.
  - New independent and cumulative fission product yield data within Fission/FF module, originating from ENDF/B-VII.1 neutron fis.yields sub-library.
  - Fixed problems in following isotopes: 44Ru105, 60Nd146, 63Eu152 and 92U238.
  - Separated thermal data from main data set distribution.
- New data set G4NEUTRONXS-1.2 for evaluated neutron cross section data on natural composition of elements:
  - Evaluated cross section data derived from new G4NDL set.
- New data set for radioactive-decay processes, G4RadioactiveDecay.3.6:
  - Added new files containing the forbidden Beta decay information for all nuclei known to have such decays in the ENSDF database.
  - Updated format of files exceeding 100 characters length. Addressing problem report #1336.
- New data set for evaluated SAID data-base, G4SAIDDATA1.1:
  - Fixed length of vectors.
- New data set PhotonEvaporation.2.3 for nuclear de-excitation data:
  - Corrected internal conversion coefficients for Cs133, Pa234, and TH231, according to ENSDF. Updated files z90.a231, z91.a234 and z55.a133.

### Examples

- Updated reference outputs; added CMake scripts where missing.
- Migrated to new g4tools histogramming system, where needed.
- Updates to apply new coding conventions and fixed variable shadowing.
- Added Doxygen documentation and comments. Updated README files
- advanced
  - air_shower
    - Removed use of `SetModel()` for optical physics, according to changes to optical process.
  - ChargeExchangeMC
    - Added "File" menu in gui.mac. Addressing problem report #1395.
    - Added icons.mac. Fixed compilation errors.
  - composite_calorimeter
    - Added icons.mac.
  - dnaphysics
    - Added messenger for material change.
    - Updated SteppingAction class.
    - Added more histogram variables.
  - gammaknife
    - New example application to simulate an advanced device for Stereotactic Radiosurgery.
  - gammaray_telescope
    - Changed logic of UI/GUI instantiation in the main(), to avoid problems when running in batch mode.
    - Fixed warnings due to two G4Regions without their own cut. Change physics list from QGSP_BIC to FTFP_BERT, to fix deprecation warnings for LEP models.
  - hadrontherapy
    - Remove IAEA detector and related files. Added Carbon beam line. Added GPS. Migrated to the new stopping physics. Renamed executable.
    - Replaced INCL with INCLXX in physics-list.
    - Included generic command for visualization vis/open OGL in input macro files where needed.
    - Fixed compilation warning on gcc-4.7.
  - iort_therapy
    - Migrated to the new stopping physics.
    - Included generic command for visualization vis/open OGL in input macro files where needed.
    - Fixed compilation warning on gcc-4.7.
  - lAr_calorimeter
    - Use of PhyListFactory instead of explicit instantiation of physics lists.
    - Added icons.mac.
  - medical_linac
    - Fixed compilation warnings and cleanup of unused files.
    - Cleared unnecessary calls to 'this'.
    - Added batch.mac to run without graphics.
    - Fixed compilation warnings on gcc-4.7 and clang.
  - microbeam
    - Added description of composition of cell.
    - Updated composition of cell cytoplasm.
  - microdosimetry
    - Added TrackingAction, counting N secondaries created in/outside "target" region.
    - G4ElectronCapture: clean up killing captured electron. Updated physics list for usage of SetEmModel() method.
  - nanobeam
    - Switched to touchables.
    - Renamed executable.
  - underground_physics
    - Removed obsolete call to G4OpBoundaryProcess::SetModel().
  - xray_fluorescence
    - Fixed compilation warnings on clang.
- basic
  - B1: Use QBBC physics list instead of QGSP_BIC_EMY, which becomes obsolete.
  - B4: replaced messenger classes with use of G4GenericMessenger.
- extended
  - analysis
    - Restructuring of AnaEx01, AnaEx02, AnaEx03 examples for use of shared classes; shared classes are now in a new directory, 'shared'.
  - common
    - Updated scripts for copying shared files.
    - Added functions to customize the HBOOK IDs by user.
    - Added setting locks introduced in the base class.
    - Fixed handling of directories for both histograms and ntuple.
    - Added GetNtuple() function to specific managers. Increased granularity of verbose levels (now 3 levels are available).
    - Making creating directories optional.
  - common/analysis
    - Adding additional information to analysis objects: units, activation option.
    - Make possible to book histograms/ntuple before opening a file.
    - Using new bN::configure functions in SetHN(..).
    - Messages from Fill() functions only in verbose level 3.
    - Fixes in memory management.
    - Added possibility to fill h1, h2 with values with automatically applied function. Pass units via a name instead of value.
    - Added functions for accessing h1, h2 by name.
    - Splitting verbose level 1 in 2 levels and shifting the upper levels.
    - Fixed GetH1[2]Width: return the correct value also when histogram is inactive.
  - electromagnetic/TestEm0
    - Updated PhysListEmStandard for GenericIon. Use G4UrbanMscModel96.
    - PhysicsList: added G4EmStandardPhysics_option4 Added more units for cross sections.
  - electromagnetic/TestEm1
    - New histograms for "total energy deposit", "energy of charged secondaries at creation", "energy of neutral secondaries at creation".
    - Use NIST materials in DetectorConstruction::SetMaterial().
    - Added StackingAction class.
    - PhysListEmStandard: use G4UrbanMscModel96.
    - PhysicsList: added G4EmStandardPhysics_option4. Added radioactive-decay and associated input macro.
    - Avoid to save random number per event.
  - electromagnetic/TestEm2, electromagnetic/TestEm3
    - Added PhysListEmStandardWVI. Use G4UrbanMscModel96. Added Em physics option4.
    - Added statistics on number of charged and neutral steps.
  - electromagnetic/TestEm4
    - Avoid to save random number per event.
  - electromagnetic/TestEm5
    - PhysListEmStandardSSM: added alternative single scattering models.
    - PhysListEmStandardWVI, PhysListEmStandardSS: more correct process order and WVI model.
    - Use G4UrbanMscModel96. Added Em physics option4.
    - Code cleanup and added protections against division by zero.
    - Avoid to save random number per event.
    - Added fluo.mac input macro. Fix in pixe.mac.
  - electromagnetic/TestEm7
    - PhysListEmStandard, PhysListEmStandardSS: more correct process order.
    - Use G4UrbanMscModel96. Added Em physics option4.
    - c2_functions: fixed compilation problems on gcc-4.7.
    - Added extra test case for low-energy ions.
  - electromagnetic/TestEm8
    - DetectorConstruction: added gas of ALICE TPC and macro testALICE.mac.
    - TargetSD: added zero-energy steps to histograms and step counters.
    - Added Em physics option4 to PhysicsList and decreased limit on cuts.
    - Fixed initialization in PrimaryGeneratorAction.
  - electromagnetic/TestEm9
    - Migrated to the new stopping and ion physics.
    - Added Em physics option4 to PhysicsList and decreased limit on cuts.
  - electromagnetic/TestEm10
    - Em10RunAction: fixed case of write outside boundaries of C-array. Cleanup initialisation.
    - Optimized rewrite of SteppingAction.
  - electromagnetic/TestEm11
    - Modified StepMax mechanism; added command /testem/StepMax.
    - PhysListEmStandard, PhysListEmStandardSS: more correct process order.
    - Use G4UrbanMscModel96. Added Em physics option4. Decreased limit on cuts.
    - New results in sandia/EGSnrc: e- 50 MeV, 150 MeV in Water.
  - electromagnetic/TestEm12
    - Modified StepMax mechanism; added command /testem/StepMax.
    - PhysListEmStandard, PhysListEmStandardSS: more correct process order.
    - Use G4UrbanMscModel96. Added Em physics option4. Decreased limit on cuts.
    - Printing correction in StepMaxMessenger.
  - electromagnetic/TestEm15
    - Printing corrections in `RunAction::EndOfRunAction()`.
    - Added emstandard_opt3 in PhysicsList to allow muMsc WVI model. Use G4UrbanMscModel96.
    - SteppingAction: set process name to 'muMsc'.
    - Added input macro muon.mac.
  - electromagnetic/TestEm16
    - Added Rayleigh scattering in PhysicsList.
  - electromagnetic/TestEm17
    - MuNuclearBuilder: use G4MuonNuclearProcess instead of G4MuNuclearInteraction.
  - electromagnetic/TestEm18
    - Printing corrections in `RunAction::EndOfRunAction()`.
  - eventgenerator/HepMC
    - Migration to "new" G4Exception scheme.
    - Fixed building Pythia6 in HepMCEx01 so that it works without CERNLIB.
  - eventgenerator/pythia/decayer6
    - Introduced use of classes from 'common' module.
    - Introduced a physics builder for adding the external decayer to an existing physics list.
    - Updated pythia6_decayer.in macro: added initialization (now required); added call to /pythia6Decayer/verbose.
    - Limited G4Pythia6Decayer verbose levels to 0, 1.
  - eventgenerator/exgps
    - Renamed exGPS.cc to exgps.cc to match exactly with directory name.
  - exoticphysics/phonon
    - New example demonstrates how phonon propagation in cryogenic crystals can be simulated.
  - field/field04
    - Reverse order of checking thePostLV and thePreLV, to fix run-time crash on Windows.
    - Removed use of `SetModel()` for optical physics, according to changes to optical process.
  - field/field06
    - New example exercising capability of tracking massive particles in a gravity field.
  - geometry/g3tog4
    - Removed cltog4 example, duplication of clGeometry.
    - Restructured clGeometry for use of classes from common. Changed gun particle position & direction in test macros to get particles to go through volumes inside HALL.
  - geometry/transforms
    - Simplified version, limited to geometry functionalities. Renamed classes, updated input macros.
  - hadronic/Hadr00
    - Use FTFP_BERT as default in physics-list.
    - Renamed main file to match exactly with directory name.
  - hadronic/Hadr01
    - PhysicsList: fixed bug for absence of elastic scattering.
    - Added G4EmUserPhysics builder. Use FTFP_BERT as default in physics-list.
    - Renamed main file to match exactly with directory name.
  - hadronic/Hadr02
    - Added first implementation of UrQMD interface.
    - Renamed main file to match exactly with directory name.
    - Migrated to the new stopping physics.
  - hadronic/Hadr03
    - New example demonstrating how to compute total cross-section from the direct evaluation of the mean free path.
  - medical/DICOM
    - Corrections in materials Z/A. Addressing problem report #1287.
    - Assign return value for fread() and fscanf() calls in DicomHandler. Fixes compilation warnings on Ubuntu.
  - medical/electronScattering
    - PhysListEmStandardWVI, PhysListEmStandardSS: more correct process order and fixed initialisation.
  - medical/electronScattering2
    - PhysListEmStandardWVI, PhysListEmStandardSS: more correct process order and fixed initialisation.
    - Corrected area calculation in ElectronRun.
  - medical/fanoCavity[1,2]
    - PhysListEmStandard_WVI: more safe initialisation method.
  - medical/GammaTherapy
    - Migrated to the new stopping physics.
  - optical/LXe, WLS
    - Removed use of `SetModel()` for optical physics, according to changes to optical process.
  - parallel/MPI
    - Migrated to CMake build with change of directory structure.
    - Migrated to new G4Exception signature.
    - Fixed infinite-loop of slaves when a macro does not exists.
    - Added support for execution of macro with /control/macroPath.
    - Added best guess of selection of a UI shell.
  - radioactivedecay/rdecay01
    - PhysicsList: use G4PhysicsHelper. Added atomic de-excitation.
    - RunAction : added protections against division by zero.
    - fullChain.mac: added example of command /grdm/nucleusLimits. New macro electronicCapture.mac. Added macros Cf238.mac and No252.mac to demonstrate UserRadData and UserEvapData files respectively.
    - Removed initialisation of de-excitation in PhysicsLists, to be compliant with changes in kernel processes.
  - radioactivedecay/rdecay02
    - Added ntuple RDecayProducts registering Z,A,time,energy, PID,weight of each radioactive decay product
    - Changed macro UserRadDataCf238Test.mac and UserRadData_z82.a210 to check that the mean life time given is properly taken into account in the code.
    - Merged modifications for the activation computation.
    - Migrated to the new stopping physics.
  - runAndEvent/RE01, RE02
    - Fixed elastic physics for ions in physics-list.
    - Renamed main file to match exactly with directory name.
  - runAndEvent/RE03
    - Corrected signature of `RE03UserScoreWriter::DumpQuantityToFile()` to according to changes done in 'digits_hits' module.
  - visualization
    - Corrected vis user action extent.
- novice
  - N03
    - Added icons.mac.
  - N06
    - Set '/tracking/verbose 3' in input macros to also test timing of optical photons.
    - Removed use of SetModel() for optical physics, according to recent changes to optical process.