# Geant4 10.0 Release Notes

Geant4 10.0 Release Notes

December 6th, 2013

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.4.7.
  Tested on 64 bit architectures (Intel or AMD) with Scientific Linux CERN 6 (SLC6) (based on Red Hat Linux Enterprise 6.
- MacOSX 10.8 with gcc-4.2.1 and clang-3.3
- Windows7 with Visual C++ 11.0 (Visual Studio 2012)

More verified configurations (64 bits):

- Linux, gcc-4.7.2, gcc-4.8.2
- Linux, Intel-icc 14.0
- MacOSX 10.9 with gcc-4.2.1 and clang-3.3
- Windows7 with Visual C++ 9.0, 10.0, 12.0

Note: Windows platforms are supported/verified only for the sequential mode. Multi-threading capability of this release does not support Windows.

## 2. Supported CLHEP version

This release of Geant4 has been verified with CLHEP, release 2.1.4.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 in order to upgrade from release 9.x series to this release. 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.

General

- Multi-threading:
  - This release includes support for multi-threaded Geant4 applications. Parallelism is achieved at the event level, with events dispatched to different threads. To use multi-threading it is necessary to build and install Geant4 with the option of multi-threading ability activated.
  - The default build of Geant4 is sequential.
  - Existing (or new sequential) applications can be built and run without code changes, on either a sequential and a multi-threading capable installation of Geant4 - provided, of course, that mandatory changes are made to address other migration issues.
  - To enable event level-paralellism first configure a build of Geant4 using the cmake switch GEANT4_BUILD_MULTITHREADED=ON (default is OFF); then build the Geant4 libraries and instantiate a G4MTRunManager (or a user-derived class) in place of G4RunManager in the relevant function of the program (e.g. the main function).
- Migrating applications to Multi-threading:

- The steps required to migrate an existing application to multi-threading is summerized in the TWiki migration page.
- Migrated examples for demonstrating use of multi-threading are:
  - basic: B1, B2 , B3, B4, B5;
  - extended: AnaEx01, B02, B03, GB01, GB02, TestEm1, TestEm2, TestEm4, TestEm5, TestEm11, exgps, Hadr00, Hadr04, Hadr05, DICOM, electronScattering2, field01, field02, field03, field04, LXe, OpNovice, wls, gflash, Par01, P03, RE01, RE02, RE03, RE04, RE05, RE06;
  - advanced: air_shower, brachytherapy, dnaphysics, gammaknife, human_phantom, microbeam, microdosimetry, nanobeam, radioprotection.
- Even if Geant4 library is compiled with multi-thread support, legacy sequential application can run.

- Removed from Geant4 headers the implicit inclusions of SystemOfUnits and PhysicalConstants headers of CLHEP . This may trigger compilation errors in user's code. This will require making the user code self-consistent, by explicitly including these missing headers files.
- Introduced checks for variable/parameters shadowing. Compilation warnings may show up in user code in case it is also compiled using the Geant4 build setup, or using the same compiler flags.
- The old GNUMake build system is no longer supported. It is strongly recommended to adopt CMake for the installation.

Geometry

- Archived GeomTest* classes for overlaps checking through grid/cylinder lines. UI commands are replaced with calls to built-in overlaps checking based on random points located in surface. User's scripts relying on old UI commands may require migration accordingly.
- The `G4Polycone` solid no longer supports the case in which either the outer or the inner surface has more than one cone or tube section over a finite interval of Z values. These shapes must use the new class `G4GenericPolycone` instead. The general constructor of `G4Polycone`, which uses a series of vertices, includes a check whether the vertices are monotonic along Z for its inner and outer surfaces, and issues an error if not.
- Removed deprecated BREPs module and obsolete classes G4VCellScorer and G4VCellScorerStore.

Electromagnetic and optical physics

- A single `G4UrbanMscModel` class provides the improved tuning of the Urban multiple-scattering model. It replaces all previous variants of the Urban model (Urban90, 93, 95 and 96), which have been removed.
- `G4MuElec*` processes and models for microdosimetry in silicon have been renamed as `G4MicroElec*` processes and models.
- Instead of `G4PAIPhotonModel` of ionisation, it is recommended to use `G4PAIPhotModel`.

Hadronic physics

- The CHIPS package, the parameterized (Gheisha-like) models LEP/HEP and the isotope_production module have been removed.
- GetIon() and FindIon() methods are removed from G4ParticleTable class. These methods have moved to G4IonTable class with some enhancements.

Physics Lists

- Physics lists based on the CHIPS package (e.g. CHIPS, QGSC_BERT) or on the parameterized (Gheisha-like) models LEP/HEP (e.g. LHEP) have been removed.
- Physics lists that used LEP in a restricted energy range have been retained but revised: LEP has now been replaced by Fritiof and/or Bertini models. Typical of this case was the use of LEP modesl to bridge the gap between QGS and the intra-nuclear cascade model, in particular over the region of 9.5-25 GeV in QGSP_BERT which was replaced by use of the FTF/Fritiof model.

Data Sets

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

- New data set versions: `G4EMLOW-6.35, G4NDL-4.4, G4NEUTRONXS-1.4, G4RadioactiveDecay-4.0, G4PhotonEvaporation-3.0, G4ABLA-3.0, G4ENSDFSTATE-1.0`.

## 4. New Developments and Capabilities

General

- Geant4 Version 10.0 supports (optional) event-level parallelism. In a multi-threaded application, at the end of first kernel initialization, worker threads are started and initialized. These worker threads are responsible for simulating events.
- Event each thread is tasked is in first_come_first_served basis, so that event numbers each thread has are not sequential, and order of finished events are not sequential.
- The objects that consume the largest fraction of memory (geometry and Electromagnetic physics tables) are shared among threads, while all other objects (in particular user-action and sensitive detectors) are thread-private.
- If the user employs built-in command-based scorers or makes use of g4tools histogramming facitlities, the reduction of results is performed automatically at the end of a run. To accumulate user-specified quantities, the user has to implement his/her own Run class derived from `G4Run` base class to implement the reduction.
- More information:
  - Geant4 multi-threading capabilities are based on POSIX standards (pthreads) and on Thread Local Storage (TLS) extension.
  - Several aspects of threading model can be customized by user. This includes the possibility to use an external library or package (e.g. TBB) to achieve paralelization. See the examples/extended/parallel directory and its content.
  - A dedicated Twiki page contains up-to-date information of multi-threading with Geant4 including links to relevant documentation.

Geometry

- A new module for geometrical primitives, whose classes are imported from the AIDA Unified Solids Library, is available. It includes alternative implementations for several shapes, aiming to provide CPU speed improvement in most cases. The shapes currently included are: Box, Cons, GenericPolycone, Orb, Polycone, Polyhedra, Sphere, Tet, Trd, Tubs.
- This module can be used in two modes. The first mode is available in a standard installation; a USolid can be used as an alternative implementation of a shape, using a different name. This provides the opportunity to test the implementations one by one, e.g. `G4UPolycone` which has shown significant speedup.
- In the second mode they can replace the default implementations of the corresponding solids - this requires a special build and must be enabled at configuration/build time, by adopting the dedicated compiler flag `G4GEOM_USE_USOLIDS`.

Materials

- The NIST material Manager and related classes always create an isotope vector for each element, using natural abundances.

Electromagnetic physics

- The model of electron-positron pair production by muons and hadrons has been updated to use more detailed grid in tabulation of differential cross-sections.
- The PAI and PAI-photon models were cleaned up and can be used for very low (down to zero) cut values.
- A new angular generator model is added `G4DeltaAngle` which may be optionally used by any ionisation model. It is used by default by PAI models.
- Magnetic monopole ionisation models were upgraded to be applicable for non-relativistic case for any material.

Hadronic physics

- The Fritiof (FTF) model has been retuned, based on an enlarged set of thin-target data, and the modelling of nucleon-nucleon diffraction has been improved.
  The Fritiof model can now handle nucleus-nucleus collisions.
- The Bertini-like (BERT) model has been improved, in particular in the two-body angular distributions and in multibody phase space, and it can handle muon capture.
- Long-lived meta-stable isotopes (isomers) are now produced in hadronic interactions. By default, only isomers with half-lives above 1 microsecond are considered. However, an enlarged set of isomers can be activated by setting the environmental variable G4ENSDFSTATEDATA to point to the new (optional) data set of nuclei properties from the Evaluated Nuclear Structure Data File, G4ENSDFSTATE-1.0.
- The isomers that are produced can be decayed by activating the RadioactiveDecay module (which is not used by default in physics lists, with the only exception of Shielding).
- The new data libraries G4PhotonEvaporation-3.0 and G4RadioactiveDecay-4.0 are required.
- The neutron high-precision (HP) model is now capable of reading compressed data files, and this allowed to reduced significantly the size of the G4NDL library.
- A new verbosity control allows the suppression of warning messages.
- A new fission fragments generator (Wendt) has been introduced.

Phonon Physics

- A new minimal framework for low-temperature phonon physics has been introduced, with acoustic phonon particle types (`G4PhononLong, G4PhononTransSlow, G4PhononTransFast`), container classes for lattice dynamical constants, and processes for propagation and scattering of phonons, and anharmonic downconversion.
- The associated example (`examples/extended/exoticphysics/phonons` has been migrated to use the new toolkit classes.

Generic Biasing

- A new biasing capability has been introduced to allow physics-based biasing --process interaction occurence biasing, process final state production biasing-- and non-physics-based biasing --e.g. splitting, killing-- to be handled through a set of common classes: `G4VBiasingOperator, G4VBiasingOperation`.
- The `G4VBiasingOperation` class is to represent an 'atomic' biasing operation (occurence biasing, final state biasing, splitting, killing, etc.).
- The `G4VBiasingOperator` class is to pilot the biasing, it selects the biasing operations to be applied in the current step.
  A biasing operator may also delegate the biasing operation choices to an other operator.
- Biasing operations are applied by a third class `G4BiasingProcessInterface` which provides the interface between the tracking and the biasing. It collects the biasing operations to be applied from the current biasing operator.
  It can act as a wrapper class, controlling an underneath physics process on top of which it applies the biasing operations selected by the operator; it provides the statistical weight computation for the case of the occurence biasing.
  It can also be free of physics process, in what case it collects and applies non-physics-based biasing operations.
- A biasing operator is attached to a `G4LogicalVolume` inside which, and only inside which, it is active. Outside, the standard tracking goes.
- Two examples have been created:
  `examples/extended/biasing/GB01` shows how to bias process cross-sections,
  `examples/extended/biasing/GB02` shows how to use an MNCP-like 'force collision' operator implemented within the present scheme (this 'force collision' consists of a track entering a volume which is cloned, one copy making a forced collision inside the volume, the other copy flying though with no interaction).

Physics Lists

- In all physics lists, the neutron capture process has been significantly improved, both for the cross section (replacing Gheisha with G4NeutronCaptureXS) and the final-state modelling (now using G4NeutronRadCapture instead of G4LCapture). This affects the response and lateral width of hadronic showers in tungsten-based simplified calorimeters.
- The more accurate inelastic cross section G4NeutronInelasticXS is used for the simulation of low-energy neutrons (i.e. below 20 MeV) in all physics lists which do not contain the precise neutronHP models. This replaces the Barashenkov cross-sections. The NeutronXS cross-sections are average in bins of kinetic energy derived from neutronHP data. They are meant as an approximated, fast approach similar to the multi-group approach of other Monte Carlo radiation transport tools.
- The fission process has been removed in physics lists without the precise neutronHP models. For the HP-based physics lists, the parameterized model G4LFission is kept and used only above 19.9 MeV.
- Fritiof and/or Bertini models are now used in all physics lists to replace the parameterized (Gheisha-like) model LEP/HEP, which were used in several physics lists. This is neccesary for the QGS-based physics lists, since the QGS model has not been extended to as low energies (currently it is used above 12 GeV) as the FTF model (which can be used above 3 GeV).
- Three new physics lists (all making use of the intranuclear cascade INCLXX) have been introduced: QGSP_INCLXX_HP, FTFP_INCLXX, FTFP_INCLXX_HP.
- All the six electromagnetic variants of the physics lists: _EMV, _EMX, _EMY, _EMZ, _LIV, _PEN
  are available only by using the physics list factory G4PhysListFactory. This option can be specified as part of the physics list name. As before, the name string must be either an argument of a particular method of the factory, or else provided in the environmental variable PHYSLIST.
- The following obsolete physics lists have been removed: CHIPS, CHIPS_HP, QGSC_BERT, QGSC_CHIPS, QGSP_BERT_CHIPS, LHEP, LHEP_EMV, QGSP, QGSP_QEL, QGSP_BERT_TRV, QGSP_BERT_95, QGSP_BERT_95XS, QGSP_FTFP_BERT_95, QGSP_FTFP_BERT_95XS.

Visualization and Interfaces

- Visualization now supports multi-threading with basically the same feel as in sequential mode. Note however that if your application includes special visualization behaviors involving direct C++ calls to specific visualization draw methods, these parts of your visualization will only appear in sequential mode.
- Added command to display magnentic field: /vis/scene/add/magneticField. For details, see the command guidance.

## 5. Expected effects on physics and computing performance

Electromagnetic physics

- About 5% speedup is expected mainly due to migration from std::log, std::exp to G4Log and G4Exp functions.

Hadronic physics

- Simulated hadronic showers with the recommended physics list FTFP_BERT remain similar to those obtained with Geant4 9.6, except for tungsten-based calorimeters, where the energy response becomes lower, and lateral shape narrower, mainly due to the improved simulation of neutron capture.
- Slight (few percent) CPU improvement for the simulation of hadronic showers with FTFP_BERT physics list with respect to Geant4 9.6.
- Possible larger variations (for both observables and CPU speed) for the simulation of hadronic showers with other physics lists (e.g. QGSP_BIC) with respect to Geant4 9.6, mainly due to the replacement of parameterized (Gheisha-like) model LEP/HEP with Fritiof and/or Bertini models.

Sequential application with multi-threaded Geant4 library

- If a Sequential application is linked with the Geant4 library that is compiled in multi-threaded mode, a small performance overhead (~1%) may be observed.

## 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:
  - Added 'multithreaded' component to indicate if Geant4 is built with multithreading. If requested, and the build is multithreaded, append the -DG4MULTITHREADED compile definitions. Added build option GEANT4_BUILD_MULTITHREADED set to OFF by default. Use -pthread flag for clang and gcc compilers.
  - Added patch for self-location to C-shell template generation. Addressing problem report #1399.
  - Enabled option GEANT4_USE_SYSTEM_ZLIB to locate system zlib if requested and otherwise use internal version. Addressing probem report #1322.
  - Added build mode dependent compiler definition to the build of each target in the form GEANT4_DEVELOPER_[CONFIG] where [CONFIG] is the uppercased build mode. Addressing problem report #1353.
  - Added build option GEANT4_BUILD_TPMALLOC (defaults to OFF) which can be enabled on UNIX platforms to optionally allow through LD_PRELOAD the use of tpmalloc in place on system malloc in multi-threaded mode. Modality currently disabled.
  - Corrected output of "--has-feature" for CLHEP feature. Addressing problem report #1477.
  - Added FindTBB.cmake module for Intel Threading-Building-Blocks library.
  - Fix in FindROOT.cmake script to remove "/usr/include" from list of include directories passed to rootcint when generating dictionaries. Workaround for a bug experienced in rootcint.
  - Set variables GEANT4_USE_BUILTIN_{CLHEP,EXPAT,ZLIB} when the builtin versions of these packages are used. This is to assist the generation of Geant4Config.cmake using simple expansion variables.
  - Tidy up layout in scripts and removed obsolete files and documentation.
  - Removed GEANT4_INSTALL_EXAMPLES option. Always install 'example' directory.
  - Suppress error messages from FindAIDA module for informative options. Addressing problem report #1485.
  - Corrected check for clang version. Fixes problem with being unable to change C++ Standard for clang when using latest version.
  - Disabled granular libraries build model issue fatal error if GEANT4_BUILD_GRANULAR_LIBS variable is set.
  - Added FindXvfb checking if fake X server Xvfb is installed in system.
  - When building in multithreaded mode on a UNIX system, added verification check for support of thread local storage.
  - Implemented new export function for datasets. Added new '--datasets' argument to print out space separated dataset name, envvar name and path, with information for each dataset on a separate line. Implemented new --check-datasets and --install-datasets tasks; the former checks that the known datasets are installed in the configured location, reporting status; the latter is a stub for implementing post-install download and unpack of datasets.
  - Fixed bug in configuration of binary directory PATH which resulted in G4INCLUDE being overwritten.
  - Added support for use of experimental USolids module through the compiler flag G4GEOM_USE_USOLIDS. Marked as advanced option.
  - Fixes in geant4-config.in to add core compiler flags to cflags and added support for export of multithreading variables. Implemented post-install of datasets. Supplying the --install-data flag will perform a download and install of all datasets to the configured data directory.
  - Fix bug in checking of status of Xmu include path and library variables that resulted in no error being emitted if these were not found.
  - Added FindTBB to exported modules.
  - Added section for support of Wt and new FindWt.cmake module.
  - Provided scripts for support of Qt5 external libraries.
  - Set compilation flags for MT mode on Intel compiler to "-ftls-model=initial-exec -pthread" as for GNU and Clang.
  - Updated references to data libraries version for 10.0.
- GNUMake:
  - No longer supported, only for development/testing use.

### Analysis

- Added file compression in Root manager. Added use of zlib needed for compression.
- Extended analysis managers for handling more than one ntuple. Updated manager classes updated for MT; added data members and functions for mergings histograms (Root, Xml) from worker to master:
  `void AddH1Vector(std::vector<tools::histo::h1d*>& h1Vector);`
  `void AddH2Vector(std::vector<tools::histo::h2d*>& h2Vector);`
  These functions are automatically called on Worker::Write(). Added ThreadId to ntuple file names when processing on workers.
  Introduced managers per object types (H1, H2, Ntuple, File) and re-implemented G4VAnalysisManager as a composite of the objects managers; removed enum G4VAnalysisManager::ObjectType and replaced related methods with methods per object type.
- Fix in G4RootAnalysisManager::WriteOnAscii(). Addressing problem report #1473.
- Improved handling of files: empty files are now removed in CloseFile(). Moved generation of file name in G4VAnalysisManager.
- Fixed deleting fNtuple in G4RootNtupleDescription (the ntuple is deleted with Root file). Fixed the problem in Root files clean-up.
- Introduced subdirectories: csv, g4tools, hntools, management, root, xml. Updated build scripts accordingly.
- Adapted to use new interface with namespace for functions in G4Threading.
- Added possibility to define logarithmic binning for H1 and H2.
- Reorganized messenger classes per objects: they are now associated with the public interface (G4VAnalysisManager).
- Fixed incorrect setting of the list of free blocks in the Root file. Addressing problem report #1523.
- Fixed saving binScheme in H2 information.
- Adapted to new namespace interface from G4Threading. Use thread Id (now available) in generating file names instead of thread Pid.
- Do not call WriteH1[2]() when no histograms are defined. This allows to run application which uses only ntuples without a master instance of the analysis manager.
- Removed static G4AnalysisManager::Create(bool) function; the master/worker is now identified automatically.
- Reimplemented G4AnalysisManagerState::IsMT() with use of G4Threading functions.
- Removed virtual declaration for GetH1, GetH2, GetNtuple functions in manager classes (to follow NVI pattern).
- Updated histogramming tools to g4tools-1.7.0.

### Digitization & Hits

- Added Merge() methods to G4ScoringManager and G4VScoringMesh, needed for multi-threading.
- Changed method names in G4VScoringMesh and derived classes.
- Added missing options in command-based scorers in G4ScoreQuantityMessenger and G4ScoreQuantityMessengerQCmd.
- Added protoype cloning mechanism for sensitive-detectors, needed for multi-threaded mode.
- The pointer is now overwritten if a detector of same name is registered to G4SDManager. Issuing warning from G4SDStructure whene same detector name is used, if verbose level is set to 1 or higher..
- Issuing warning message if G4VReadOutGeometry is used. Readout geometry is no longer supported in version 10.0.
- Replaced deprecated calls to G4Sphere accessor methods in scorer classes.

### Electromagnetic Processes

- Adjoint:
  - G4AdjointPhotoElectricModel: use G4PEEffectFluoModel instead of obsolete G4PEEffectModel.
  - Modifications for limitation of convergence peak.
  - G4AdjointBremsstrahlungModel: biased the gamma->e.- reverse brem CS by factor 100.
  - G4AdjointComptonModel: biased the CS by a factor 0.1.
  - G4ContinuousGainOfEnergy: changed interface to G4VEmFluctuation.
  - G4AdjointhMultipleScattering: use G4UrbanMscModel instead of Urban95.
- DNA:
  - Promoted to thread-global storage following classes: G4DNAGenericIonManager, G4DNAMolecularMaterial and G4DNAMolecularReactionTable.
  - G4DNASmoluchowskiReactionModel: enhanced exception description.
  - G4ITTrackingInteractivity: added Initialize() method to simplify initialization of daughter classes.
  - G4DNAChemistryManager: added AddEmptyLineInOuputFile() method.
  - Added G4KDMap utility class.
  - Requires new data-set G4EMLOW version 6.35.
  - Added G4DNAIons. Adapted G4DNAGenericIonsManager to use of G4DNAIons.
  - Fix in G4VITProcess to not override SubtractNumberOfInteractionLengthLeft() method from G4VProcess, as no longer a virtual methood since release 9.6.
  - Enhanced G4DNAChemistryManager to be the main interface exposed to user.
  - Removed G4VERBOSE testing in G4DNABrownianTransportation::BuildPhysicsTable().
  - Improved MT compatibility.
- High Energy
  - G4mplIonisationModel, G4mplIonisationWithDeltaModel: changed interface to G4VEmFluctuations.
  - G4hPairProductionModel: substituted SetCurrentElement() by SetElement() to avoid clash with the base class method.
  - G4hBremsstrahlung: use inheritence of G4MuBremsstrahlung; removed unused headers.
  - G4hPairProduction: use inheritence of G4MuPairProduction; removed unused headers; lowestEnergy limit should not be lower than 8*mass because in that case the model is not applicable.
  - G4hPairProductionModel: do not call obsolete SetElement() method; use G4Log and G4Exp.
  - G4hBremsstrahlungModel: use G4Log.
  - G4mplIonisationModel, G4mplIonisationWithDeltaModel: fixed electron gas ionisation part; before models were working correctly for very heavy monopoles in Silicon and not accurate for other media.
- Low Energy
  - G4IonDEDXHandler, G4LivermoreGammaConversionModel, G4IonParametrisedLossModel, G4PenelopeBremsstrahlungAngular: moved call to SetSpline(true) to be always after vector is filled; only in that case Spline interpolation is enabled, according to the most recent version of G4PhysicsVector.
  - G4LowEPComptonModel: fixed numerical problem detected with FPE. Withdrawn dependency on G4HadTmpUtil.
  - Fixed Mi shell cross-section computation in G4teoCrossSection.
  - G4AtomicDeexcitation is cloned from G4UAtomicDeexcitation.
  - Added protection for MT mode in G4PenelopeRaylModel.
  - G4LivermoreRayleighModel, G4LivermoreGammaConversionModel, G4LivermorePhotoElectricModel: migration to MT. Sharing of internal tables between threads; added two new methods InitialiseLocal() and InitialiseForElement().
  - Migrated G4LivermoreComptonModel and G4LivermoreBremsstrahlungModel to MT. Migrated to MT Penelope Bremsstrahlung and e+ annihilation.models; the angular generator of Penelope Bremsstrahlung is kept thread-local. Migrated to MT Penelope Compton asnd Ionisation models and related helper classes (including Penelope PIXE). Migrated to MT G4PenelopePhotoElectricModel, G4PenelopeRayleighModel and G4PenelopeGammaConversionModel. Enforce const for G4PenelopeBremsstrahlungFS methods used by the workers.
  - G4IonDEDXScalingICRU73: removed GetIon() for reference Fe and Ar, but use G4IonTable::GetIonMass() instead to prevent unnecessary instantiation of ion objects for individual threads.
  - Improved CPU performances of G4PenelopePhotoElectricModel.
  - G4LivermoreComptonModel, G4LivermoreGammaConversionModel, G4RayleighAngularGenerator: use G4Log, G4Exp.
  - Fixed Exception on G4PenelopeOscillatorManager for specific materials.
  - Adopt G4Cache in G4PenelopeBremsstrahlungFS, to better dynamic allocation in a MT-mode. Avoid deletion of physics-vectors in destruction of Livermore and Penelope models.
  - G4LivermoreGammaConversionModel, G4LivermoreRayleighModel, G4LivermorePhotoElectricModel, G4LivermoreComptonModel: more accurate read of data from file at run time. Do not upload data in SampleSecondaries() method in G4LivermorePhotoElectricModel, instead kill the gamma.
  - Added G4MicroElec* processes and models in replacement of G4MuElec*.
  - Fixed Coverity defects.
- Muons
  - G4MuPairProductionModel: extended grid of differential cross-section tables (from 8 to 40 points in muon energy); Added check on max energy to reduce number of bins in muon energy. Providing different initialisation for master and worker threads, sharing element selectors. Added protection and warning message if 'p1=p2' in SampleSecondaries(). Changed signature of the method MinPrimaryEnergy(). Replaced calls to pow() with G4Pow. Reimplemented sampling table as G4ElementData with 2D-tables per atomic number; rewritten sampling algorithm, data fully shared between threads. Fixed bining to 1000 for internal sampling table. Perform common initialisation of internal variables for all threads; fixes remaining cases of event non-reproducibility in MT mode. Merged SetElement() and MaxSecondaryEnergy() methods into one MaxSecondaryEnergyForElement() to improve performance and event reproducibility. Fixed problem with the end of the spectra by cleanup initialisation of sampling table.
  - G4MuMultipleScattering: G4UrbanMscModel is now the default.
  - G4MuBremsstrahlungModel: removed 'partialSubSigma' data structure, use G4ElementSelectors instead; providing different initialisation for master and worker threads sharing element selectors.
  - G4MuBremsstrahlungModel: Reduced 'minThreshold' from 1 keV to 0.9 keV to avoid extra warning printout. Fix to avoid unnecessary repeated initialisation of element selectors if model is shared between particle and anti-particle.
  - G4MuPairProductionModel, G4MuBremsstrahlungModel: added MinPrimaryEnergy() method implementation (all cross-section tables will start from the reaction threshold).
  - G4MuBremsstrahlung: changed signature of method MinPrimaryEnergy().
  - G4MuPairProduction: removed unused headers; lowestEnergy limit should not be lower than 8*mass because the model is not applicable. Improved initialisation printout.
  - G4MuBremsstrahlungModel, G4EnergyLossForExtrapolator, G4MuBetheBlochModel: use G4Log and G4Exp.
  - G4EnergyLossForExtrapolator: substitute G4eBremsstrahlungModel with G4SeltzerBergerModel. Use cut DBL_MAX to avoid creation of G4EmSelectors in lazy initialisation.
  - G4MuBremsstrahlungModel: set lowest energy to 1 GeV.
- Polarisation
  - G4ePolarizedBremsstrahlungModel: substitute G4eBremsstrahlungModel with G4SeltzerBergerModel.
  - Corrected destrucor for G4ePolarizedIonisation, G4PolarizedCompton and G4eplusPolarizedAnnihilation.
- Standard
  - G4ModifiedTsai, G4PairProductionRelModel, G4WentzelOKandVIxSection, G4WentzelVIRelXSection: removed obsolete methods and headers.
  - G4WentzelVIModel: more clean logic of sampling for single scattering mode.
  - G4UrbanMscModel: copied from G4UrbanMscModel96 and make become default for G4eMultipleScattering and G4hMultipleScattering. Modified format of warning about big scatterings. Modification in SampleCosineTheta() to provide higher stability versus step size. Modified to use G4Pow.
  - Removed obsolete models: G4UrbanMscModel90, G4UrbanMscModel92, G4UrbanMscModel93, G4UrbanMscModel95, G4UrbanMscModel96, G4eBremsstrahlungModel and G4PEEffectModel.
  - G4PEEffectFluoModel: changed interface to SandiaTable allowing materials to be shared between threads. Use const pointers to access Sandia table array; changed access to G4SandiaTable in ComputeCrossSectionPerAtom() by using pointer of G4MaterialCutsCouple (before static method was used).
  - G4SeltzerBergerModel, G4PAIxSection, G4PAIySection, G4GoudsmitSaundersonTable, G4GoudsmitSaundersonMscModel: removed end-line in printout from G4ExceptionDescription.
  - G4SeltzerBergerModel: increased 'elowlimit' in method SamplingSecondaries() from 10 to 20 keV in order to fix problem of majoranta exceeded in heavy media. Reduced limit on number of warning printouts. Changed interface to use read-only G4Physics2DVector.
  - Fixes issue of zero step length for eIoni, eBrem and annihilation in flight. Added new geometrical limit 0.01 nm to allow scattering in very small steps. Use G4Pow in compute transport cross section.
  - G4eplusAnnihilation: use G4VParticleChange interface to add secondary track for more clean weight update; cleanup headers.
  - G4eCoulombScatteringModel, G4hCoulombScatteringModel, G4eSingleCoulombScatteringModel: use G4IonTable::GetIon() instead of G4ParticleTable interface to create a recoil ion.
  - G4KleinNishinaModel: added protection and warning against possible energy non-conservation due to inconsistency in shell energies.
  - G4PEEffectFluoModelL use binding energy from G4LEDATA and not from G4AtomicShell class in the case when fluoresence is enabled in order to provide energy balance.
  - G4PEEffectFluoModel, G4KleinNishinaModel: correction to ensure energy conservation when fluorescence is on.
  - G4WaterStopping: enable Spline after vector with data is filled, according to last G4PhysicsVector modifications.
  - G4eCoulombScatteringModel: do not use ElementSelectors for ions.
  - G4hIonisation: added special treatment for ions.
  - G4ScreeningMottCrossSection: fixed numerical problem for very small scattering angles.
  - G4PAIModel, G4PAIySection: fixed initialisation. Added G4SandiaTable as a class member in G4PAIModel. G4PAIPhotonModel: added extra methods.
  - G4BohrFluctuations, G4IonFluctuations, G4PAIModel, G4PAIPhotonModel, G4UniversalFluctuation: changed interface to G4VEmFluctuation; in SampleFluctuations() G4Material pointer is substituted by G4MaterialCutsCouple pointer.
  - G4PAIModel: corrected usage of indexes.
  - G4IonFluctuations, G4UniversalFluctuations: use G4Pow for log(), exp(), pow() in run time methods; expected slightly improve CPU performance.
  - G4PAIModelData: new class to handle PAI internal data.
  - G4PAIModel: data handling extracted to G4PAIModelData, data class may be shared between threads. Code cleanup.
  - G4BetheBlochModel, G4BraggIonModel: returned back method MinEnergyCut() in order to protect from cases reported in problem report #1481.
  - G4BetheHeitlerModel, G4KleinNishinaCompton, G4KleinNishinaModel, G4PairProductionRelModel, G4eBremParametrizedModel: implemented InitialiseLocal() method in order to share element selectors between threads.
  - G4DeltaAngle: angular generator for delta-electrons taking into account electron motion. Use it in G4PAIModel.
  - G4SeltzerBergerModel: sanity check for MT mode when loading data.
  - G4BraggModel, G4BraggIonModel, G4BetheBlochModel, G4MollerBhabhaModel: added possibility to use an angular generator.
  - Added new classes G4DeltaAngleFreeScat, G4PAIPhotModel and G4PAIPhotData.
  - G4ESTARStopping: added reading from G4LEDATA. Added ESTAR stopping power data.
  - G4WentzelVIModel: added GetWVICrossSection() access method.
  - General cleanup of many classes: use G4Log and G4Exp. Replaced use of std::pow(x,y) with G4Exp(G4Log(x)*y). Moved 'static const' data initialisations to source to simplify MT setup. Significant speedup of initialisation and some speedup at run time.
  - G4IonCoulombScatteringModel, G4eCoulombScatteringModel, G4eSingleCoulombScatteringModel, G4hCoulombScatteringModel: if primary particle is below low-energy threshold and is killed add its energy to energy deposition and not to recoil energy; no effect on ordinary simulation results.
  - Avoid deletion of physics-vector at destruction in G4ASTARStopping, G4ESTARStopping, G4PSTARStopping, G4PAIModelData, G4PAIPhotData, G4PAIModelData, G4PAIPhotData, G4PAIPhotonModel.
  - G4eBremsstrahlungRelModel, G4eCoulombScatteringModel: implemented MinPrimaryEnergy() method needed to set low-energy limit for cross-section tables.
  - G4PAIxSection, G4PAIySection: fixed problem of division by zero.
- Utils
  - G4VMultipleScattering: reduced geometrical limit from 1 um to 0.01 um; fixed list of models per multiple-scattering process for ions.
  - Removed obsolete classes G4VEnergyLoss, G4VBremAngularDistribution.
  - G4VEmProcess, G4VMultipleScattering: removed obsolete methods SetModel() and Model(). Removed calls to obsolete methods in G4LossTableManager.
  - G4VEmProcess: fixed CrossSectionPerVolume() method, use extra 'tablePrim' for high energy if this table is defined.
  - G4ionEffectiveCharge: static array become "const G4double".
  - G4LossTableManager, G4EmModelManager: removed end-line from description of exceptions.
  - G4VEnergyLossProcess, G4VEmProcess: clean up filling of secondary particles to particle change; use AddSecondary() from G4VParticleChange in all cases; little performance improvement expected. Density factor correction array is assigned to a process in BuildPhysicsTable() instead of PreparePhysicsTable() in order to get correct pointers in worker threads.
  - G4VEnergyLossProcess: avoid unnecessary deletion of tables between runs. Fixed CrossSectionPerVolume() method. Make ion initialisation assuming that each ion may have an individual process. Do not destroy old tables in worker thread for the new run. Added local cache inside GetRangeForLoss() method.
  - G4VEmModel: added extra methods needed for MT: InitialiseLocal(), InitialiseForMaterial(), InitialiseForElement(), GetElementSelectors(). Take into account reaction threshold when initialising G4EmElementSelectors; set smallest number of bins to 3 (was 5) and fixed initialisation. Fixed SetCrossSectionTable() method.
  - G4VEnergyLossProcess, G4VEmProcess, G4VEmModel, G4VMscModel: introduced cache for indexes in tables to restore CPU performance after change made to G4PhysicsVector, now read-only.
  - G4EmCalculator: added call to InitialiseForMaterial() to give possibility to a model to read data in any thread.
  - G4LossTableBuilder: optimized number of bins for tables built for models.
  - G4LossTableManager: added new method to provide correct copy and setup process parameters in MT mode. Optimisation for MT mode; do not insert concrete ions into particle/energy loss process map, only G4GenericIon is inserted; added LocalPhysicsTables() method to copy pointers of G4PhysicsTables from master to local threads.
  - G4LossTableManager, G4VEnergyLossProcess, G4VMultipleScattering, G4VEmModel, G4VMscModel: implemented copy of transport cross-sections tables from master to worker threads; implemented a possibility to copy element selectors from master to worker threads (model may use or not this feature).
  - G4VEmFluctuationModel changed interface in SampleFluctuations() method; G4Material pointer is substituted by G4MaterialCutsCouple pointer. Change required by PAI model Changed interface to G4VEmFluctuationModel in G4VEnergyLossProcess.
  - G4EmModelManager: check MinEnergyCut() method. Addressing probkem report #1481.
  - G4VEmProcess, G4LossTableManager: added master/worker initialisation to discrete processes.
  - G4VEnergyLossProcess, G4VMultipleScattering: use GetMasterProcess() method in PreparePhysicsTable() and BuildPhysicsTable() methods.
  - G4VEmAngularDistribution: added extra virtual method SampleDirectionForShell().
  - G4VMultipleScattering: increased lowestLimit from 1 eV to 10 eV. Added Get/Set methods for this parameter. Urban multiple-scattering model cannot handle low-energy e- below 10 eV.
  - G4EmModelManager: fixed control on cut value per G4Region, the problem was observed when PAI model is used in a some region with very low cut.
  - G4VEmProcess, G4VEnergyLossProcess, G4VAtomDeexcitation: added model ID for secondary tracks (allows to user code to distingwish secondary gamma and electrons generated by atomic de-excitation model).
  - G4VEmModel: added extra flag 'useAngularGenerator' and Get/Set methods. Added extra method SelectRandomAtomNumber(). Fixed bug in Fano-Cavity test: element selectors are created even if cut value is high.
  - G4EnergyLossMessenger, G4EmProcessOptions: added UI command and interface to set verbose level for worker thread.
  - New class G4AngleDirect, dummy angular generator.
  - G4ionEffectiveCharge: use G4Log, G4Exp, G4Pow.
  - Adopt G4ThreadLocalSingleton in definition of G4LossTableManager. Avoid deletion of physics-vector at destruction in G4VEmProcess, G4VEnergyLossProcess and G4VEmModel.
  - G4VEmProcess, G4VEnergyLossProcess: fixed bug in GPIL computation when a particle enters a volume in which current EM model has different activation energy range than in previous region (due to this bug interation happens on the boundary of G4Region in microdosimetry advanced example).
  - G4VEmModel: improved definition of min and max energy for element selectors.
  - Fixed Coverity defects.
- Xrays
  - G4Scintillation: for consistency, give the 'YieldRatio' priority in cases when the 'ExcitationRatio' is both 0.0 or 1.0. Fixed bug in 'ScintillationYieldByParticleType' mode to correctly produce photons for nonlinear scintillators, accounting for variable particle step size in the scintillator (dependent on tracking and production cuts) and attempting to best simulate photon density along the particle track. Fixed incorrect call to GetMaxValue() with GetMaxEnergy().
  - G4Cerenkov, G4Scintillation: added BuildPhysicsTable() method which is doing initialisation as before but at the moment when material list is fully defined; it is assumed that the list of materials is not changed for the next runs.
  - G4VXTRenergyLoss, G4StrawTubeXTRadiator: use const declaration to array of G4SandiaTable values.
  - G4SynchrotronRadiation: added interface to G4VEmAngularDistribution and use `G4DipBustGenerator` by default.

### Error Propagation

- Adapted code to implemented changes for split-class mechanism of base class G4VUserPhysicsList (needed for multi-threading).
- G4ErrorPhysicsList: remove inclusion of unnecessary header.

### Event

- G4ParticleGunMessenger: added UI command 'ionLvlCmd' so that particle gun can shoot ions with integer isomer level. Added 'ionL' command to G4GeneralParticleSourceMessenger.
- G4ParticleGunMessenger: /gun/particle commands now consults to the particle table for all available particles except general ions.
- Fix the way of detecting improper process manager. Fix incorrect initialization in G4ParticleGunMessenger class for /gun/ionL command.
- Remove G4ParticleTable::GetIon() and use G4IonTable::GetIon() instead.
- Modified adjoint classes to migrate to the new RMC schema where reverse and forward trackings of equivalent adjoint and forward primaries are processed in same events, in preparation for the migration to MT mode.

### Externals

- Updated CLHEP module to version 2.1.4.1:
  - Added RandGaussZiggurat and RandExpZiggurat distributions.
  - Added new units for Radioactivity: kilo/mega/gigabecquerel, milli/microcurie.
- Added internal zlib module, moved from visualization/externals. Updated package to zlib-1.2.7, now shipping the full library including the reader. Adapted package structure, code and CMake scripts.
- Added 'tpmalloc' and 'memoryprotection' utility modules (currently disabled).

### General Processes

- Biasing
  - New directory structure to introduce generic biasing framework classes: biasing/management, biasing/generic, biasing/importance.
  - Previously existing 'importance' classes are moved to biasing/importance, except G4VProcessPlacer and G4ProcessPlacer moved to biasing/management.
  - Contents:
    - biasing/management:
      - G4VBiasingOperation, G4VBiasingOperator and G4VBiasingInteractionLaw, for biasing modeling,
      - and satellite classes G4BiasingAppliedCase, G4BiasingOperationManager, G4BiasingTrackData, G4BiasingTrackDataStore.
    - biasing/generic:
      - G4BiasingProcessInterface, G4ParticleChangeForNothing, G4ParticleChangeForOccurenceBiasing, for biasing-tracking interface.
      - Concrete implementations of biasing modeling classes : G4VBiasingOperator : G4BOptrForceCollision ; G4VBiasingOperation : G4BOptnChangeCrossSection, G4BOptnCloning, G4BOptnForceCommonTruncatedExp, G4BOptnForceFreeFlight, G4BOptrForceCollision ; G4VBiasingInteractionLaw : G4InteractionLawPhysical, G4ILawTruncatedExp, G4ILawCommonTruncatedExp, G4ILawForceFreeFlight.
      - G4BiasingHelper: utility class to help setting G4BiasingProcessInterface instances properly in a G4ProcessManager. Used in particular by limiters/G4GenericBiasingPhysics physics constructor.
    - biasing/importance:
      - collects previously existing 'importance' classes in old substructure-less biasing directory except for
      - G4VProcessPlacer and G4ProcessPlacer moved to biasing/management.
      - Migrated geometrical importance biasing to work in MT mode.
- Cuts
  - Modified G4RToEConvFor* classes removing unnecessary static declarations for local variables and moved to be simple members of the class.
  - Fixed all loops for G4PhysicsLogVector: upper index is nbins+1. Stop calling Reset() from its destructor (now controlled in run-manager).
  - Fix bug in G4ProductionCuts copy constructor.
- Management
  - Added shadow master-thread pointer to G4VProcess and modifiers methods. required for new design of sharing of tables (EM & HAD) for multi-threading. Added worker initialization virtual method for multi-threading.
  - Remove unused and obsolete intermediate layer classes G4IVContinuousDiscreteProcess and G4IVRestDiscreteProcess.
  - Now G4VProcess::SubtractNumberOfInteractionLengthLeft() is inlined.
  - Corrected name for G4Upsilon meson.
  - Added process type for phonon processes to G4ProcessType.
- Optical
  - Added capability of simulating the transmission of a dichronic filter; in this first implementation, the photon is either reflected or transmitted without changing direction. Also requierd to supply a 2D data file with the format and properly set the environment variable G4DICHROICDATA to point to the dichroic.data file.
  - Fix for WLS photons to have a longer wavelength than the photon being absorbed/shifted. Addressing report from G4Hypernews Forum #509.
  - G4OpWLS and G4OpRayleigh: added BuildPhysicsTable() method which is doing as before but at the moment when material list is fully defined.
  - Fixes in made G4OpBoundaryProcess to work properly with parallel worlds.
  - G4OpBoundaryProcess now invokes the ProcessHit() method of the sensitive detector associated with the PostStepPoint volume when optical photons are detected at the entrance boundary.
  - Fixed assignment of status for Dichroic.
  - Fixed Coverity defects in G4OpBoundaryProcess.
- Phonon
  - New module containing processes for phonon propagation and interaction in materials: G4LatticeManager, G4LatticeReader, G4PhononDownconversion, G4PhononPolarization, G4PhononReflection, G4PhononScattering, G4PhononTrackMap, G4VPhononProcess.
- Scoring
  - Removed unnecessary printout.
- Transportation
  - Adapted G4Transportation and G4CoupledTransportation to use G4ChargeState for charge/spin/magnetic moment, and to message the equation of motion directly with it.
  - Initialize missing data members in G4CoupledTransportation constructor Addresses issue identified by Coverity.

### Geometry

- Removed deprecated BREPs module.
- Removed obsolete classes G4VCellScorer and G4VCellScorerStore.
- Removed references to NURBS from all solids.
- Biasing
  - Adapted to support running in MT-mode. G4IStore and G4WeightWindowStore are now shared singletons; added Clear(), SetWorldVolume() and SetParallelWorldVolume() methods.
- Divisions
  - Adaptation to splitted G4Polycone into G4GenericPolycone.
  - Added G4Ellipsoid among solids enabled for parameterisation.
- Magnetic field
  - Introduced new class G4ChargeState to hold charge, spin, magnetic moment. Changed the signature of SetChargeMomentumMass() in G4EquationOfMotion to take G4ChargeState as first argument.
  - Revised number of field components (to allow up to 24). 18 are required for new applications (B, E, Gravity, B-gradients).
  - Deleted SetChargeMomentumMass*() from G4ChordFinder, G4PropagatorInField and G4MagInt_Driver.
  - Prevent case of division by zero and shortcut spin tracking for spin==0 particles in G4Mag_SpinEqRhs, G4EqEMFieldWithSpin and G4EqEMFieldWithEDM.
  - First implementation of cloning mechanism, needed for multi-threaded mode.
  - Added new G4RepleteEofM class, EofM that includes force due to B, E, and gravity field as well as mu*grad(B) and spin tracking.
  - Fixed and improved HelixMixed Stepper: corrected the default stepper for small steps to be ClassicalRK4. Added Angle-threshold parameter (default remains 0.33 radians). Added more Steppers, including G4NystromRK4. Revised Id numbers of steppers, to make the best more visible.
- Management
  - Added splitter class G4GeomSplitter for MT splitting mechanism.
  - Added geomwdef.hh header including definition of G4GEOM_DLL flag for import/export of symbols for Windows DLL build.
  - Added method UseWorkspace() to G4GeomSplitter for handling of thread-local allocated memory in geometry.
  - Minor cleanup to G4LogicalVolume and G4VPhysicalVolume: moved description of helper classes to bottom of headers, and macros to .icc files; revised source code to use Get/Set methods in place of 'macros' for MT.
  - G4LogicalVolume: added AssignFieldManager() method and new methods for handling workspace data.
  - Fix to G4VSolid::EstimateCubicVolume() to make proper use of specified accuracy. Addressing problem report #1493.
  - Added parameter to specify maximum number of overlap errors to report in G4VPhysicalVolume::CheckOverlaps().
  - Added methods G4VPhysicalVolume::VolumeType() and G4LogicalVolume::CharacteriseDaughters() to be used by G4Navigator.
  - Added G4Ellipsoid among solids enabled for parameterisation.
- Navigation
  - Archived GeomTest* classes for overlaps checking through grid/cylinder lines. UI commands are replaced with calls to built-in overlaps checking based on random points located in surface. Defined commands are:
    - `/geometry/test/tolerance [double] [unit]`
      -- to define tolerance by which overlaps should not be reported. Default is '0'.
    - `/geometry/test/verbosity [bool]`
      -- to set verbosity mode. Default is 'true'.
    - `/geometry/test/resolution [int]`
      -- to establish the number of points on surface to be generated and checked for each volume. Default is '10000'.
    - `/geometry/test/recursion_start [int]`
      -- to set the starting depth level in the volumes tree from where checking overlaps. Default is level '0'.
    - `/geometry/test/recursion_depth [int]`
      -- to set the total depth in the volume tree for checking overlaps. Default is '-1', which means checking the whole tree.
    - `/geometry/test/maximum_errors [int]`
      -- to fix the threshold for maximum number of errors to report for overlaps from a volume.
    - `/geometry/test/run`
      -- to start overlaps checking recursively through the volumes tree.
  - G4Navigator: added new helper object G4VoxelSafety owned by a navigator instance, to avoid including header it is stored as pointer. Resolving an issue with multi-threading. Made copy-ctor and assignment operator private, as not supposed to be copied or cloned.
  - G4MultiNavigator: fixed use of enum as Boolean in GetGlobalExitNormal().
  - G4VoxelSafety: corrected calculation of edges of voxels. Identified when point's coordinate is beyond the range of voxels. Made new safety (from G4VoxelSafety) the default in G4Navigator.
  - G4PropagatorInField: deleted SetChargeMomentumMass() method.
  - G4SafetyHelper: added protection against storing 'fake' safety.
  - Rationalised implementation of VolumeType() and CharacteriseDaughters() in G4Navigator, to use implementation now provided in G4VPhysicalVolume and G4LogicalVolume respectively.
  - Added G4Ellipsoid among solids enabled for parameterisation in G4PhantomParameterisation.
  - Added new messenger class G4GlobalMagFieldMessenger defining UI commands for creating/deleting the global uniform magnetic field and activating/inactivating it according to the set field value.
  - Relaxed condition for reported move in G4PathFinder::Locate() to exclude reports for intentional pushes.
- Solids (CSG)
  - Corrected sanity check for wrong/small dimensions in G4Box constructor.
  - Correctly initialise fSPhi to zero in G4Sphere constructor.
  - Moved function-scoped 'static const' values for half-tolerances to private data members of classes, to overcome false-positive race-conditions defects reported by Valgrind in MT mode.
  - Added switch mechanism for USolids (box, cons, orb, sphere, trd, tubs). Added related G4U* wrappers for enabling use of USolids implementation. Defined temporary class G4OTubs to be used internally by G4CutTubs, in provision to have UCutTubs in the USolids library.
- Solids (Specific)
  - Fixed import/export of static symbols for WIN32 DLLs build.
  - Fix in G4SurfaceVoxelizer affecting tessellated-solid (and extruded-solid) for incorerct computation of DistanceToIn(p,v) for points outside, when optimisation is active.
  - Fix in G4TessellatedSolid::DistanceToIn(p,v) for specific cases where points are located near surface.
  - Enabled G4Ellipsoid for parameterisation.
  - Created G4SolidsWorkspace and G4SolidsWorkspacePool classes, to create, initialize and destroy per-thread state of polyCone and polyHedra Sides.
  - Split G4Polycone to now treat only polycones with increasing Z-sections. Introduced new class G4GenericPolycone for polycones with decreasing Z-sections.
  - Extended method SetOriginalParameters() in G4Polycone in order to handle all possible cases of conversion of generic polycone to polycone with (Rmin,Rmaz,Z) parameters. Addressing problem report #1462.
  - Fixed conversion of generic construct for G4Polyhedra. Fix for in G4Polyhedra::SetOriginalParameters().
  - Moved G4PolyconeHistorical and G4PolyhedraHistorical to separate translation units.
  - Added switch mechanism for USolids (generic-polycone, polycone, polyhedra, tet). Added related G4U* wrappers for enabling use of USolids implementation.
  - Move function-scoped 'static const' values for half-tolerances to private data members of classes, to overcome false-positive race-conditions defects reported by Valgrind in MT mode.
- Solids (USolids)
  - Imported classes from the AIDA Unified Solids Library Enabled by adopying compiler flag G4GEOM_USE_USOLIDS. Shapes provided: Ubox, Ucons, UGenericPolycone, UOrb, UPolycone, UPolyhedra, USphere, UTet, UTrd, UTubs. Includes bridge class G4USolid.
- Volumes
  - Added parameter to specify maximum number of overlap errors to report. Adapted code in CheckOverlaps() in G4PVPlacement and G4PVParameterised to take into account the threshold.
  - Added new classes G4GeometryWorkspace and G4GeometryWorkspacePool, to create and manage thread-local data and keep workspace objects respectively. Separated functionality for Solids (PCone/PHedra Sides) from G4GeometryWorkspace into separate class G4SolidsWorkspace in solids/specific.

### Global

- Introduced G4Log and G4Exp headers for fast log and exp; converted from the VDT library. Make them matching to std::exp and std::log on Windows plaatform. Adopt them within G4Pow and G4Poisson. Expected slight performance boost.
- G4PhysicsVector, G4Physics2DVector: modified to become read-only classes; removed use of cache and related classes. Modified signature of methods accordingly.
- G4PhysicsVector: make FindBin() method public, added method FindLinearEnergy() for sampling of energy for vectors with cumulative probability function.
- Fix in G4PhysicsVector::FindBinLocation() to add extra checks for Log/Lin vectors to avoid rare cases when bin is computed incorrectly due to limited numerical precision of computations. The method is now inlined and not virtual; using table type different algorithms to compute bin number; using G4Log.
- Removed FindBinLocation method from G4PhysicsLogVector, G4PhysicsLinearVector, G4PhysicsOrderedFreeVector, G4LPhysicsFreeVector, G4PhysicsFreeVector and G4PhysicsLnVector.
- G4Physics2DVector: make FindBinLocationX() and FindBinLocationY() methods public, added method FindLinearX for() sampling of energy for 2D cumulative probability functions; added new inline method Value() with different signature.
- G4Pow: added new methods logX() and expA(); improved accuracy of logA(), A13(), log10A() and powA(): now all these methods provide accuracy better than 0.1% for any value of argument. Added post-const qualifier to all methods.
- Introduced G4AllocatorList class to store pointers of all G4Allocator objects for each thread so that they can all be cleanly deleted at program termination. Added G4AllocatorBase base class defining virtual destructor and virtual utility methods for G4Allocator.
- Added call to clear() in G4PhysicsTable::clearAndDestroy().
- G4StatDouble: added new method add(G4StatDouble*) to be used in MT mode.
- G4ConvergenceTester: tuning format of output result.
- Added 'safe' inclusion of <windows.h> from G4Threading.hh, in new header windefs.hh. Simplified setup for import/export flags on Windows.
- Added first version of stack backtrace in G4FPEDetection when FPE exception is detected (Linux only).
- Added new classes implementing platform independent threading G4AutoLock and G4Threading. Added IsWorkerThread(), G4GetNumberOfCores() and G4GetThreadId() global helper functions.
- New G4Cache classes for handling thread-private data members in shared objects.
- Added G4ThreadPrivateSingleton class for thread-private singleton handling and G4AutoDelete namespace with utility function for simplified garbage-collection.
- Generalised flags for MacOS multi-threaded mode.
- Added new cout streaming for MT: on file and with header at each line with optional buffering.
- G4MTcoutDestination now has a capability of printing out only for the selected thread to make the display readable.
- Code cleanup for HEPRandom module and new introduced MT classes. Added G4heprandom sub-library to the build system.
- Corrected MT defects identified by DRD: protected G4MTcoutDestination; corrected check of already-locked condition for G4AutoLock; protected creation of shared resource in G4MTHepRandom. Add namespace 'G4Threading' to functions defined in G4Threading unit.
- New class G4PhysicsModelCatalog to be used by physics models and G4Track.
- Enable MT mode for MacOSX with gcc >= 4.7.
- Update date of release for 10.0.

### Graphical Representations

- Introducing G4VVisManager::IgnoreStateChanges() virtual method. This method should be invoked by a class that has its own event loop, such as the RayTracer, material scanner, etc. If the argument is true, the following state changes among 'Idle', 'GeomClosed' and 'EventProc' are ignored. The same method with false should be invoked once such an event loop is over.
- Added dummy += operator to G4Colour.
- Added GetExtent() method in G4VGraphicsScene.

### Hadronic Processes

- Removed deprecated CHIPS classes and modules.
- Removed obsolete models 'isotope_production', 'high_energy' and 'low_energy'.
- Renamed model 'lll_fission' to 'fission'.
- Cross sections
  - Fixed old outstanding bugs in G4ChipsProtonInelasticXS and G4ChipsNeutronInelasticXS.
  - G4HadronCrossSection: fix in IsApplicable() method, return false if particle is not in the list and not G4HadronicException.
  - Use GetNaturalAbundanceFlag() for elements in G4CrossSectionDataStore. Fixed logic to compute cross-section for not natural isotopes.
  - G4NeutronCaptureXS, G4NeutronInelasticXS: set 'IsIsoApplicable' to "true". Cleaned up isotope data retrieve.
  - Adapted mechansim of cross-section factories to work with MT applications. Factory registry is now a class on its own and it is shared among threads. TLS CrossSectionDataSetRegistry accesses the shared resource to get the cross-sections. Cross-sections data sets can be created now per-thread or shared.
  - Fixed access to ions via the G4IonTable class and GetIon() method.
  - G4BGGNucleonInelasticXS: reduced number of operation in the CoulombFactor method. Use G4Pow to compute Coulomb correction factor (some CPU improvement). Added threashold of 1 millibarn; if cross-section is less, it is set to zero.
  - G4BGGNucleonElasticXS: added Coulomb barrier for protons (as in G4BGGNucleonInelasticXS); for Hydrogen target added linear approximation between SAID data and PDG data: SAID upper energy 3.3 GeV, PDG low energy 5 GeV.
  - Made verbose level modifiers in G4VCrossSectionDataSet into virtual functions.
  - Use G4Exception instead of G4HadronicException for flagging incorrect use/setting of SAID data set.
  - Major clean up and restructuring in G4ElectroNuclearCrossSection and G4PhotoNuclearCrossSection. Calculation is now done for average N. Replacing 'per isotope' methods by 'per element'. Adopting cross-section factory.
  - G4ComponentSAIDTotalXS, G4NeutronElasticXS, G4UPiNuclearCrossSection: avoid deletion of physics-vectors at destruction.
  - Fixed Coverity defects.
- Management
  - Added material in G4HadronicProcessStore::GetCrossSectionPerAtom(). Improved dump text in processes summary.
  - Added dump method in G4EnergyRangeManager.
  - Models Management:
    - Reduced limit for "fatal" energy non-conservation from (10% && 5 GeV) to (2% && 1 GeV).
    - Made verbose level modifiers in G4HadronicInteraction into virtual functions.
    - Removed obsolete classes G4VIsotopeProduction and G4IsoParticleChange.
- Stopping
  - G4MuonMinusCaptureAtRest: fix to access ions via G4IonTable class and GetIon() method.
  - Replaced native PreCompound model with Bertini in G4MuonMinusCapture.
  - Removed deprecated stopping classes.
  - Fixed Coverity defects.
- Utility
  - Added family of "phase space" generator functions, intended to replace model-specific redundancies. G4HadDecayGenerator provides a simple interface, with algorithm selection handled via constructor argument.
  - Protect LorentzContraction for at Rest nucleus.
  - Fixed warning in G4NuclearShellModelDensity.
- ABLA
  - Restored ABLA model to work in conjuction with INCL++. Fixed case of segmentation-fault on the production of exotic fragments.
  - Requires G4ABLA-3.0 data set, controlled by G4ABLADATA flag for path.
- Bertini Cascade
  - Added new cross-section data to G4CascadeT1GamNChannel.
  - Introduced muon-capture handling, with new particle types and three-body muon-dibaryon interactions.
  - Introduced multi-body final state momentum distribution classes and factory, modelled on the two-body angular distribution system.
  - Added detailed two-body final state angular distributions for (gamma,p) and (gamma,n) reactions, using tables of numerical integrals to sample cos(theta).
  - Added detailed two-body final state angular distributions for pp->pp, nn->nn, and np->np, using numerically integrated SAID cross-sections and pp scattering data. For pp, below 2.75 GeV SAID calculations were used with Coulomb interactions turned off.
  - New interface for momentum and angular distribution generators, subclasses of new class G4VHadDecayAlgorithm in "models/util" module.
  - G4TwoBodyAngularDist: added interface to access three-body distributions, used in G4CascadeFinalStateAlgorithm.
  - G4CascadeChannelTables: implemented global Print() function which dumps all tables registered in map. Converted class to thread-local singleton.
  - G4ElementaryParticleCollider: allow direct grouping by initial state. Replaced kinematics generation, except for pion-dibaryon absorption, with G4CascadeFinalStateGenerator. Simplified implementation of collide() method.
  - G4IntraNucleiCascader: added exciton and trapped-decay info to history.
  - G4InuclSpecialFunctions: added new randomInuclPowers() function to compute power expansion of random value for momentum and cos(theta) distributions.
  - G4NucleiModel: Added function to select random point along particle's trajectory, weighted according to nuclear density and cross-sections, use with incident photons at initial step to nucleus. Fixed rare cases of non-reproducibility in generateParticleFate(). Fixed access to ions via the G4IonTable class.
  - Reorganised de-excitation modules to use G4Fragment throughout process. Only final ground-state nucleus will be instantiated as a G4InuclNuclei object. This should substantially reduce the load on G4IonTable in multi- thread operations.
  - G4CascadeDeexciteBase: new concrete subclass of G4VCascadeDeexcitation. Takes over "operational" support from G4CascadeColliderBase, including explosion() functions, local copy of G4CascadeCheckBalance, and conservation checking functions. Provides utilities to extract common data from input G4Fragment for all modules, and to construct a G4Fragment.
  - Improved encapsulation of pion and muon absorption through dibaryons.
  - G4CascadeCheckBalance: added interface to take G4Fragment initial state. G4InuclCollider: use G4Fragment interface to de-excitation modules.
  - G4CascadeParameters: added new flag to perform internal conservation checks. Use such run-time flag in G4CascadeColliderBase to conditionally instantiate CheckBalance. G4EquilibriumEvaporator: removed turning-off of conservation checks after fission.
  - G4CascadeParameters, G4CascadeParamMessenger: added new environment variable, G4CASCADE_USE_PHASESPACE, and associated functions, to switch between multiparameter and Kopylov N-body generators.
  - G4CascadeFinalStateAlgorithm: added Kopylov N-body phase space generation, with function code copied from G4HadPhaseSpaceKopylov.
  - Added use of "Id" and "Name" keywords where missing.
  - Moved local statics to file scope to avoid thread collisions. Fixes for thread safety in G4InuclSpecialFunctions, G4*EquilibriumEvaporator and paraMaker.
  - G4InuclParticleNames: provide particle identification functions, equivalent to those in G4InuclElementaryParticle, for direct use of type codes. G4InuclElementaryParticle: replaced identification functions with calls through to new G4InuclParticleNames functions.
  - G4CascadeInterface: replacing "Z=1" with "Z==1" in Boolean ternary operation. Addressing problem report #1513.
  - Replaced usage of std::log, std::exp, and std::pow with G4Log, G4Exp and G4Pow functions with faster polynomial implementations respectively.
  - G4EquilibriumEvaporator, G4NucleiModel: fixed to avoid race condition in MT mode.
  - Removed obsolete directories 'evaporation' and 'utils'.
  - Fixes for coverity defects.
- Binary Cascade
  - Implemented interface to Precompound model for nucleus-nucleus interactions at high (> 2GeV/N).
  - Use of simplified G4GeneratorPrecompoundInterface::Propagate() for hadron-nucleus interactions and adoption of PropagateNuclNucl() for simulation of nucleus-nucleus interactions.
  - G4RKFieldIntegrator: make static array in fuction a const array.
  - Revised signature of method SetChargeMomentumMass() for fields in G4KM_NucleonEqRhs and G4KM_OpticalEqRhs). Made these virtual methods non-inline.
  - Added cloning of Dummy Field, required for multi-threading.
  - G4BinaryCascade, G4BinaryLightIonCascade: fixed infinite exception output by removing G4Fragment.SetParticleDefinition() for ions. Ion definition is not used inside G4Fragment class.
  - G4BinaryCascade: fixed typo. Addressing problem report #1511.
- De-excitation
  - G4StatMF, G4StatMFMicroCanonical, G4StatMFMicroManager, G4StatMFMicroPartition: use integer Z and A.
  - G4VEvaporationChannel: added virtual method GetLifeTime().
  - G4StatMFParameters, G4FermiFragmentsPool, G4PairingCorrection, G4ShellCorrection are now singletons initialised once and shared between threads. Made G4Cameron*Corrections and G4Cook*Corrections classes no longer singleton but simple utility classes keeping static data which is initialised once. Modified G4EvaporationLevelDensityParameter and G4FissionBarrier accordingly.
  - G4PhotonEvaporation: correctly propagate time limit to discrete de-excitation. Changed time limit to 1 microsecond to be coherent with the isomere table.
  - G4ExcitationHandler: use new methods from particle category to find isomere via level index. Added check if an ion exist in isotope table.
  - G4ExcitationHandler: fixed typo in SetMaxAForFermiBreakUp() method.
  - G4WilsonAblationModel: fixed typo and added warning that the model is not well validated.
  - G4ContinuumGammaTransition: use G4UniformRand and a simple algorithm to sample continuous gamma transition instead of G4RandGeneralTmp; changed number of bins for sampling to 100 instead of 200 Deleted redundant class G4RandGeneralTmp.
  - G4NeutronRadCapture: added isomere production according to the updated MT interface; added time propagation (correct time for delaied capture).
  - Use G4Log and G4Exp instead of standard math functions.
  - Fixes for compilation issues detected on Windows/VC18 from Visual-Studio 12.
  - G4NeutronRadCapture, G4ExcitationHandler: changed max isomer level number to 8 (before was 9) due to limitations of PDG encoding.
  - Fixes for Coverity defects.
- Elastic scattering
  - G4NuclNuclDiffuseElastic: moved long methods from inline to source.
  - Fixed access to ions via the G4IonTable class and GetIon() method in G4DiffuseElastic and G4NuclNuclDiffuseElastic.
- Electromagnetic dissociation
  - Fixed memory leak of products from G4ExcitationHandler.
- Fission
  - New module directory copy of 'lll_fission' with addition of the LEP fission class, G4LFission.
- High Energy Theoretical
  - Added interface for manipulation of nucleus-nucleus interactions.
  - Fixed access to ions via the G4IonTable class and GetIon() method in G4QuasiElasticChannel.
  - Removed deprecated G4ProjectileDiffractiveChannel class.
- Im_r_matrix
  - Fixes for multi-threading: make static arrays const to avoid having these thread-local.
  - Fixes for coverity defects.
- INCLXX
  - Updated to INCL++ v5.1.14: relies on pre-compound for reactions below 1 MeV (configurable via the G4INCLXXInterfaceMessenger); use pre-compound only for incident nucleons.
  - Several adjustments in the nucleus-nucleus sector. Fixed critical bug which involved light targets. Some code refactoring.
  - Experimental support for neutron skins.
  - Experimental support for fuzzy r-p correlations.
  - Debug output controlled by G4INCL_DEBUG_VERBOSITY environment variable.
  - Rely on BIC for pion-nucleon and nucleon-nucleon reactions.
  - Fix crash for light targets.
  - Replaced defines in G4INCLLogger by adding prefix "INCL_" to avoid clashes with specific macros defined in Windows system. Adapted code accordingly.
  - Adapted some of the MT modifications and some code refactoring.
  - Fixed crash in very low-energy (~1 MeV) p+He4 reactions and in light-ion-induced reactions.
  - Largely reduced memory churn. Get rid of calls to G4ParticleTable::GetIonTable() and GetIon().
  - Prepare the G4INCLXXInterface to handle different de-excitation models through the SetDeExcitation() method.
  - Resample interaction if four-momentum conservation is violated.
  - Fixed bug in forced pion emission at the end of cascade and in phase-space decay of exotic clusters.
  - Several other minor fixes and code refactoring.
- Lend
  - Changed default evaluation from endl99 to ENDF.B-VII.0.
  - G4LENDManager: made sensitive to isomer level of isotope in material.
  - Fixed Coverity defects in G4LENDManager, G4LENDModel and G4LENDCrossSection.
- Lepto-nuclear
  - Adapted to use GetElementCrossSection() from G4PhotoNuclearCrossSection.
  - Removed redundant check for cross-section greater than zero. Removed unused variables.
- Neutron High Precision
  - Modified code to allow for reading compressed data files. Adapted build setup to use zlib library.
  - Deleted deprecated HP or low-energy parameterization models and data sets.
  - G4NeutronHPFinalState: added capability to disable adjustment of final state photons in capture. Addressing problem report #1279.
  - Added package-wise verbose level control. Allow for suppression of warning messages from G4NeutronHPName through verbosity level.
  - Removed call to BuildPhysicsTable() from constructor in G4Neutron*Data classes.
  - Added capability to register user prepared thermal scattering file.
  - Enable use of single temperature data file.
  - New implementation of fission fragments generator.
  - Fixed problem on Wendt model and various compilation warnings.
  - Fixed problem on Windows platform to echo environment variable.
  - Made data arrays 'const' in place of thread-local in G4NeutronHPFastLegendre and its source files.
  - Fix for extrapolation problem.
  - Change call to G4ParticleTable::GetParticleTable()->GetIon() to G4IonTable::GetIonTable()->GetIon(), according to recent intrerface.
  - Requires new data set G4NDL-4.4.
- Parton-String
  - Improved interface for manipulation of nucleus-nucleus interactions. Lowered low energy limit of FTF model. Expected no problem with high energy interactions. Simulation of anti-nuclei can be affected. Fixed energy-momentum non-conservation in AA-interactions.
  - Added implementation of nucl-nucl interaction simulation.
  - Improved annihilation at rest simulation.
  - Fixed bug in Reggeon cascading.
  - Fixed cases of division by zero in G4FTFAnnihilation and G4FTFParameters.
  - New parameterizations of FTF process cross-sections. Returning 10% of Delta-isobar probability. Reaching better description of experimental data on hP, hA interactions. Results of FTF become close to QGSM, especially for heavy targets.
  - Replaced use of CLHEP::RandFlat with G4RandFlat in G4DiffractiveExcitation.
  - Fixed two bugs in the index manipulation of the BaryonWeight 4-dimensional vector in G4LundStringFragmentation.
  - Code clean-up and formatting.
- Pre-equilibrium
  - G4HETCFragment, G4LowEIonFragmentation, G4GNASHTransitions: use integer Z and A.
  - G4PreCompoundParameters: make it as a normal class not singleton.
  - G4GNASHTransitions: more accurate definition of static data.
  - G4PreCompoundModel: fixed logic of "soft-cutoff" option.
  - Use G4Log and G4Exp instead of standard math functions in G4PreCompoundModel, G4PreCompoundEmission and G4PreCompoundProton.
- QMD Reaction
  - Change call to G4ParticleTable::GetParticleTable()->GetIon() to G4IonTable::GetIonTable()->GetIon(), according to recent intrerface.
  - Fixed double deletion problem on G4QMDCollision.
  - Fixed most Coverity defects.
- Radioactive Decay
  - G4RIsotopeTable: fix in checking if DB files have been loaded (accessing map without protection).
  - G4RadioactiveDecay: moved initialisation of Isotope table from constructor to BuildPhysicsTable() method. Initialise Isotope table only for master. Fixed memory leak by adding deletion of the IsotopeTable to destructor. Removed setting of nuclear decay tables to G4ParticleDefinition and replaced with local decay table map to fix issues with multi-threading. Remove IsLoaded() method and data member, now redundant. Move registry of isotope table from BuildPhysicsTable() to constructor (fixing problem of missing secondaries for MT). Fix in LoadDecayTable() to read data file only once in MT mode. Search internal library of decay tables in GetDecayTable(), using name of ion, not integer key (fixing "level 9" problem). Fix end-point energy loaded into decay channel for beta+ decay in LoadDecayTable(); subtract 2 electron masses. Fix in GetMeanFreePath() for a problem preventing isomers from decaying in flight, replacing GetPDGStable() with lifetime == -1 as test for nuclide stability. Also cleaned up calculation of pathlength.
  - G4NuclearDecayChannel: use integer metastable state levels instead of energy values. Where only energy is known search for nearest integer level. Added protection in DecayIt() in loop to search for isomer levels. Issue fatal exception for zero pointers when daughter ions are not found. Added an electron mass to the parent nucleus in case of electron capture. This fixes the G4GeneralPhaseSpaceDecay::Pmx() mass deficit warning. Allow explicit decay of IT channels in DecayIt() and send residual nucleus to final state for tracking. In the case of IT, get excitation energy from parent nucleus, not daughter; remove subtraction of gamma energy from variable 'daughterExcitation'. Cleaned out unused print-outs.
  - Fixed bugs causing decay chains to stop prematurely.
  - Requiring new data set RadioactiveDecay.4.0.

### Intercoms

- Fix in G4UIcmdWith3VectorAndUnit and G4UIcmdWithADoubleAndUnit. to check and reject incorrect unit which can be given in input. Addressing problem report #1535.
- Introducing '/control/cout/' command category for handling thread-local printing on cout/cerr and '/control/cout/ignoreThreadsExcept' to select thread for which enabling printout on cout.
- Modified G4UImanager, G4UIcommandTree and G4UIcommand classes to make such that all UI commands defined in the worker thread are visible by the G4UImanager of the master thread, so that undefined command or wrong parameters given in input are correctly detected.
- Added 'IgnoreCmdNotFound' into G4UImanager required for multi-threading. This option is set bu default to thread-local G4UImanager objects. Added flags for commands to be broadcasted to thread-local UI mamaners. By default, all UI commands are broadcasted to worker threads at the moment such worker threads start local event-loop.
- A UI command directory may be specified as such that all commands in that directory and all descendant directories should not be broadcased to worker threads. This setting must be made by the argument of G4UIdirectory constructor and cannot be changed. Each individual command may still be set to be broadcasted by accessing to G4UIcommand::SetToBeBroadcasted() method individually. G4UImessenger constructor with command directory now may take a Boolean flag of not-to-be-broadcasted.
- Fixed problem with G4GenericMessenger where SetUnit() and SetRange() were not working together. Fixed variable shadowing in G4AnyType header. Introduced two methods for declaring a method that has a unit; required to have G4GenericMessenger working in MT mode.

### Interfaces

- G4UIQt: added some tooltips. Set fix size font in output.
- Coverity fixes to G4UIQt, G4Qt, G4Xt.
- Improvements to Wt driver configuration.
- Added cmake configuration for Wt and Qt5 in "common" and "basic" modules.
- Removed deprecated G4UIXaw driver class.
- Added first implementation of G4Wt and G4UIWt for handling Wt (web based interfaces).
- G4UIQt: fix SecondaryLoop for Qt, now processing events until exitPause=true. Added a field to memorise the last open directory on Icon->Open In ReceveiveG4Cerr() now displaying an alert box only if it will aborting or quitting the program; sll G4err messages are now in red; when entering a command, if this command is multiple line it will now take it in account as multiple commands. Improved OGL window resizing by opening to a bigger size, changing strech factors and others little effects. Changed the name of the file-selector on the open/save Icon. Fixed potential problem on the ToolBar. Minor improvements to interface: minimised border size; OpenGL windows size changing when app size changes. Removed QWidget unuseful argument for G4QtTabWidget. Fixes for support of Qt5. Fix for a non UTF8 character; addressing problem report #1487.
- G4VBasicShell: added information in ExecuteCommand() when command not found.

### Materials

- G4NistManager, G4NistMaterialBuilder, G4NistElementBuilder: always create isotope vector with natural abundances.
- G4NistMaterialBuilder, G4IonisParamMat: updated NIST material parameters: replaced AddElementByWeightFraction() by AddElementByAtomCount(); commented out ill-defined material G4_GLUCOSE; fixed density and atom composition of G4_POLYCHLOROSTYRENE, G4_POLYVINYL_BUTYRAL and G4_TERPHENYL. Minor cleanup of chemical formula names.
- G4NistElementBuilder: added post-const qualifier to all access/print methods.
- G4NistMaterialBuilder: added post-const qualifier to all access/print methods. Added formatting of printout. Addressing problem report #1423.
- G4NistManager: throw G4Exception in case G4NistManager is instantiated in a worker thread.
- G4Element: do not recompute Aeff and Neff (effective material parameters will not be changed). Some code cleanup.
- G4ElementData: added array of 2D-tables.
- G4Material, G4IonisParamMat: made classes thread safe, such that objects are shared between all threads.
G4SandiaTable: changed signature of GetSandiaCofPerAtom() to make it thread safe.
- G4Material: issue warning if new added material has duplicate name.
- G4IonisParamMat: fixed density effect parameterisation.
- G4SandiaTable, G4StaticSandiaData: added data for water.
- New classes G4LatticeLogical, G4LatticePhysical for logical (physics info) and physical (oriented) crystal lattices. Ported from exoticphysics/phonons example.
- Partially fix for Coverity errors in G4OpticalSurface. Added dichroic filter surface.

### Particles

- Simplified implementation for IsIon() and IsAntiIon() in G4IonTable. Modified G4IonTable::FindIon() to remove use of 'EnergyTolerance'. causing issues for event reproducibility and fixed a bug for light ions.
- Added Isomer Level to G4Ions: Modified G4IsotopeMagneticMomentTable to deal with isomer level.
- G4IonTable: modified GetIon() and CreateIon() to remove string comparisons; compare excited energy with precion of 0.1 keV; set excitation energy consistently with mass and AtomicMass. CreateIon() now can be used in Pre_init state. Modified GetIon() methods with isomer level.
- Modified element name for Z>111.
- Fixed bugs in G4MuonPlus and leptons for setting magnetic moment. Updated magnetic moment for proton and charged leptons.
- Fixed problem of using ProcessManager in G4ParticleDefinition and in using 'thePDGMass'.
- Added splitter class G4PDefSplitter for MT splitting mechanism for G4ParticleDefinition. Added G4ParticleDefinition::SetMasterProcessManager() method needed for MT.
- Fixed name and class name for Upsilon meson.
- Simplified use of allocator for G4DynamicParticle.
- Fixed bug in G4ParticlePropertyTable::SetParticleProperty(). Addressing problem report #1506.
- Removed ShortLivedDictionary in G4ParticleTable. Added method GetIon(Z,A,level).
- Added warning message if a process manager is to be registered to a particle during the event loop.
- G4ParticleTable: update thread-local dictionaries when a particle is created during event loop. Particle table and ion table in the master thread are properly updated even if a particle is instantiated during event loop.
- Unified naming convention of isomers and general excited nuclides; they always appear with excitation energy in unit of keV.
- New G4NuclideTable class: ground state and some isomer levels are pre-loaded from this table before the first beamOn, while other excited states are created during the tracking time as needed. Allowing to read a data file if needed for additional states through environment variable G4ENDFDATA for path.
- Fix to G4IonTable so that it properly uses isomer levels defined by G4NuclideTable even if other physics processes may set their own isomer tables. Protect G4IonTable against rare cases when only the excited states are preloaded while the ground state with non-zero epsilon energy is created on the fly.
- All generic ions share the object ID with GenericIon so that TLS pointers to G4ProcessManager are not created for them.
- Added isomer level to G4IsonTable::GetNucleusMass().
- Added G4ParticleDefinition::IsGeneralIon() method.
- Added DNA particles for setting 'isGeneralIon' flag in G4Ions constructor.
- Fix in G4ExcitedBaryonConstructor::GetCharge() and in G4ExcitedMesonConstructor::GetCharge() to replace G4ThreadLocal specification with 'static const' for local variable; also fixing compilation error in MT mode on the icc compiler.
- Corrected energy tolerance for G4IonTable::FindIon(Z,A,E).
- Fix in G4NeutronBetaDecayChannel, addressing problem report #1532.
- Added new G4Phonon{Long,TransSlow,TransFast} particles to bosons. These will not be built as part of G4BosonConstructor; user physics lists must create them explicitly.
- Fixed Coverity defects.

### Persistency

- ascii:
  - Corrected typo in G4tgrPlaceParameterisation::operator<<(). Addressing problem report #1504.
  - Added support for G4GenericPolycone.
  - Replaced deprecated calls to solids accessor methods.
  - Corrected typo in G4tgrUtils::WordIsUnit().
  - Removed handling of deprecated BREPS solids.
- gdml:
  - Added 'generic' Polycone and Polyhedra to GDML Reader and Writer. Splitted definition of Polycone to ordinary and generic.
  - Added 'generic' Polycone and Polyhedra to the schema. Added support for parameterisation of 'genericPolyone' and 'genericPolyhedra'. GDML schema updated to version 3.1.0.
  - Added G4Ellipsoid among solids enabled for parameterisation in G4GDMLParameterisation.
  - Added parameterisation for Ellipsoid to readear/writer and schema.
  - Fix in G4GDMLReadParamvol::ParametersRead() for reading parameterised Sphere, Orb, Torus and Para. Added support for parameterisation of 'genericPolyone' and 'genericPolyhedra'.
  - Replaced deprecated calls to G4Sphere accessor methods.

### Physics lists

- Major restructure of the module, with submodules: builders (now only keeping hadronic builders), constructors (now keeping only hadronic constructors), lists (keeping only physics-lists) and util (keeping utility classes).
- Adaptation for MT with new G4VUserPhysicsList API, needed to share physics-list objects between threads.
- Cleanup of obsolete physics lists and associated builders and physics constructors.
- Builders:
  - Added new builders: G4FTFPPionBuilder, G4FTFPKaonBuilder, G4QGSBinaryPionBuilder and G4QGSBinaryKaonBuilder.
  - Removed LHEPStopping* builders and G4StoppingHadronBuilder in LHEP physics list. Replaced obsolete stopping processes with builder in LBE.
  - Introduced Boolean parameter to G4NeutronBuilder constructor to switch on fission process. The default is fission off, but for the HP-based physics lists it is activated.
  - Modified INCLXX proton and neutron builders to use PreCompound below 2 MeV. Using G4NeutronInelasticXS.
  - Removed G4LEPPiKBuilder, G4LEPPionBuilder, G4LEPNeutronBuilder, G4LEPProtonBuilder and G4MiscBuilder.
  - Coverity fixes.
- Constructors:
  - electromagnetic:
    - Use Get/Set methods to access master process manager pointer for G4ParticleDefinition in EmDNA constructor.
    - In all constructors use G4UrbanMscModel instead of Urban93 or Urban95.
  - ions:
    - Replaced LEP with FTFP in G4IonBinaryCascadePhysics, G4IonINCLXXPhysics and G4IonQMDPhysics.
  - hadron_elastic
    - G4HadronDElasticPhysics: DiffuseElastic model active above 10 MeV, LHEP model active below 10.1 MeV.
    - Create G4IonElasticPhysics Elastic Scattering for GenericIon.
    - G4HadronHElasticPhysics: code cleanup.
  - hadron_inelastic:
    - Replaced LEP with FTFP+BERT in all inelastic physics constructors. Fixed quasi-elastic treatment (on for QGS; off for FTF).
    - Replaced LEP neutron capture (Gheisha cross-section and G4LCapture model) with G4NeutronCaptureXS (cross-section) and G4NeutronRadCapture (model) in all physics lists.
    - Removed LEP fission (Gheisha cross-section and G4LFission model) in all physics lists which do not make use of neutron_HP. For the HP-based physics lists, used LEP fission only above 19.9 MeV.
    - Use G4NeutronInelasticXS for neutrons in the following physics lists (besides QBBC and FTFP_BERT_TRV which already use it): FTFP_BERT, FTF_BIC, QGSP_FTFP_BERT, QGSP_BERT, QGSP_BIC, QGS_BIC.
    - Improved use of kaon cross-sections in G4HadronPhysicsShielding.
    - Fixed possible null-pointer dereferencing in HadronPhysicsINCLXX.
  - limiters:
    - Introducing G4ParallelWorldPhysics; adapted to work for layered mass geometry.
    - Added G4GenericBiasingPhysics, G4ImportanceBiasing and G4WeightWindowBiasing constructors.
    - In G4StepLimiterPhysics, objects of G4StepLimiter and G4UserSpecialCuts are now instantiated in ConstructProcess() method so that these process objects are thread-local.
- Lists:
  - PhysListFactory: fix for problem report #1458. Corrected printout of available physics-lists. Clean up of the code.
  - LBE physics list: replaced LEP/HEP with FTFP+BERT.
  - Added new INCL++-based physics-lists: QGSP_INCLXX_HP, FTFP_INCLXX and FTFP_INCLXX_HP, based on the new INCLXXPhysicsListHelper class.
  - LBE: use G4UrbanMscModel instead on Urban93.
  - Make the *_HP variants of the INCLXX-based physics list use ElasticHP.
  - Activate production of fission fragments in Shielding PhysicsList.
  - Set proton cut value to 0 for producing low energy recoil nucleus.
  - Use G4IonElasticPhysics for Elastic Scattering of GenericIon.
  - LBE: deleted stoppingPhysics in the destructor (fixes Coverity defect).
  - Removed CHIPS-based lists and configurations.

### Run

- New functionalities for MT:
  - Introducing G4MTRunManager, G4MTRunManagerKernel, G4WorkerRunManager and G4WorkerRunManagerKernel for multi-threading mode. Enabled MT mode for multiple runs in a job.
  - Set default number of threads to 2 in MT mode. Added Get/SetNumberOfThreads() methods. Introduced new UI command /run/numberOfThreads.
  - Updated APIs for users: introduced and enabled class G4VUserActionInitialization.
  - Make G4VUserDetectorConstruction::ConstructSDandField() be invoked from G4WorkerRunManager for multi-threaded mode and from G4RunManager for sequential mode. Introduced SetSensitiveDetector() method.
  - Added G4VUserParallelWorld::ConstructSD() for the use-case of defining sensitive detector in a parallel world. G4RunManager and G4WorkerRunManager are modified accordingly.
  - Added 'isMaster' Boolean flag to G4UserRunAction. It is set to true for the user run action object assigned to G4MTRunManager.
  - Added G4WorkerRunManager::MergePartialResults() re-factor reduction of local results into global. By default, it takes care of reduction of scores in built-in command-based scorers and user-defined `Run`. Derived class cen re-implement reduction.
  - Number of events processed on each thread varies based on the availability of each thread; the array of random number seeds and event-ID are centrally managed by G4MTRunManager.
  - Introducing G4MTRunManager::SetEventModulo() and correspondng /run/eventModulo command to specify the number of events to be sent to a worker thread at one time and set the random number seeds.
  - Activating new interfaces for worker thread G4VProcess initialization in G4VUserPhysicsList for [Prepare,Build]PhysicsTable().
  - G4WorkerRunManager invokes G4VVisManager::SetUpForAThread() method so that G4VisManager will get noticed at the end of event of each worker thread.
  - Introduced G4FORCENUMBEROFTHREADS shell variable to force the number of threads regardless of G4MTRunManager::SetNumberOfThreads() or corresponding UI command.
  - Added new method G4RunManager::ReinitializeGeometry() to correctly handle rebuild of geometry from scratch in users code for MT. Can optionally wipe out solids and volumes geometry stores.
  - Threads use new cout streaming, controllable by UI commands in /control/cout commands set.
- Handling of ions:
  - Added explicit initialization of all ions and isomers needed for MT.
  - All generic ions share the object ID with GenericIon so that TLS pointers to G4ProcessManager are not created for them.
- Random Number Generation:
  - Random engine is "cloned" in worker threads from master thread one.
  - New UI command /random/saveEachEventFlag: if true save random seed for each event in a file with unique name: runXXXevtYYY.rndm. Workers write out random files in files with G4WorkerXX postfix.
- Other changes (non MT related):
  - Fixed bug in PhysicsListHelper for DNABrownianTransportation.
  - Removed obsolete UI commands, including obsolete UI commands for random number handling.
  - Modified G4PhysicsListHelper::AddTransportation() that would prevent to add the G4Transportation to 'Molecules'.
  - Enabling possibility for user to alternate G4UserRunAction objects.
  - Introducing /run/printProgress command. Changed print-out for /run/printProgress command.Fixed guidance text in G4RunMessenger.
  - Modified adjoint classes to migrate to the new RMC schema where reverse and forward trackings of equivalent adjoint and forward primaries are processed in same events. This in for the migration to MT mode.

### Track & Tracking

- Added protection against null pointer for the process manager of secondaries in case secondaries are generated at zero kinetic energy.
- New class G4AdjointTrackingAction and modified G4AdjointSteppingAction in order to treat the reverse tracking of an adjoint particle and tracking of its equivalent forward particle in the same event. This is required for the migration of ReverseMC to MT mode.
- G4TrackingMessenger: moved invokation with G4TransportationManager from G4VisCommandsSceneAdd to this messenger; G4TransportationManager is now thread-local, and G4VisCommandsSceneAdd cannot access to it.
- G4SteppingManager: 'fTouchableHistory' data member is rest to zero in the destructor to avoid cases of double-deletion in MT mode.
- G4TrackingManager: added handling for StoreTrajectory().
- Moved constructor and destructor of G4VelocityTable singleton to private.
- Removed 'i_mode' parameter from DrawTrajectory().

### Visualization

- General:
  - Support multi-threading. Events are kept until end of run, then drawn. Drawing from user code is explicitly ignored.
  - Added command to display magnentic field: /vis/scene/add/magneticField. For details, see the command guidance.
  - `/vis/scene/add/date`: changed positioning.
  - Fixed many minor defects reported by Coverity and PVS code-checking tools.
  - Replaced deprecated calls to solids accessor methods.
  - Removed NURBS code and references to i_mode (a long-since deprecated way to control trajectory hits drawing).
- Management
  - G4VViewer: added new virtual function GetPrivateVisAttributesModifiers() so that privately accumulated vis attributes modifiers may be concatenated with the standard vis attributes modifiers for commands such as /vis/viewer/set/all and /vis/viewer/save.
  - G4VisManager: added missing push_back for /vis/touchable/; addressing problem report #1503.
  - Removed check on fpSceneHandler->GetModel() in method DispatchToModel() of G4VisManager; addressing problem report #1499.
  - In /vis/touchable/set/colour and several other commands parameter guidance may be called only once. So instances of multiple calls to parameter guidance have been eliminated. Any extended information that was in parameter guidance has been moved to command guidance. This fixes a problem whereby guidance information was being lost and fixes a crash in the GAG interface.
- HepRep
  - Fixed problem report #1322 for zlib move.
- OpenGL
  - Fixes to lay groundwork for eventually support of Wt (but not supported yet).
  - Fixed text position in Qt.
- Externals
  - Moved G4zlib package to source/externals.

### Environments

- G4Py:
  - Added support for CMake build (experimental). Suppression of warnings.
- MOMO:
  - Updated MOMO.jar (GPE disactivated, EnvPanel update) and sources. Updated on-line Help document.

### Data sets

- New low-energy data set version, G4EMLOW.6.35:
  - Added cumulated diff cross-section files for Born ionisation.
  - Corrected UNIX file permissions.
  - Updated data for Compton cross-section and Livermore Bremsstrahlung.
  - Added ESTAR data for electron stopping and ranges.
  - Updated data for MicroElec processes.
- New neutron data set version with thermal cross sections, G4NDL.4.4:
  - Providing compressed data for Elastic, Inelastic, Capture, Fission and ThermalScattering.
  - Thermal-neutron data is distributed together with standard data.
  - Corrected 74W182 and 90Th232, for inconsistency of inelastic cross-sections with final state data.
- New data set version G4NEUTRONXS-1.4 for evaluated neutron cross section data on natural composition of elements:
  - Evaluated cross section data derived from new G4NDL set.
- New data set version for radioactive-decay processes, G4RadioactiveDecay.4.0:
  - Fixed files with duplicate entries for nuclear level and lifetime.
  - Added missing decay information for excited states to: z47.a100, z60.a133.
  - Corrected half-life and added missing decay information to: z20.a48.
  - Corrected BetaMinus level 73.92 to 78.92 for z90.a234.
  - Recomputed from latest ENSDF: z41.a100.
  - Removed BetaPlus and added Alpha decays in z100.a250.
  - Update to ENSDF 2012 version.
- New data set version PhotonEvaporation.3.0 for nuclear de-excitation data:
  - Update to August-2012 version of ENSDF.
  - Correction to README.
- New data set G4ABLA-3.0:
  - Data set for INCL/ABLA hadroni models, including:
    - flalpha.dat - alpha ground state deformation
    - frldm.dat - ground state shell corr. frldm for a spherical g.s.
    - vgsld.dat - difference between deformed g.s. and ldm value
    - pace2.dat - default mass for A, Z nucleus.
- New data set G4ENSDFSTATE-1.0:
  - Optional data set for properties of nuclei state from Evaluated Nuclear Structure Data File.

### Examples

- Updated reference outputs and scripts
- Updates to apply new coding conventions.
- Fixed compilation warning on clang32 for unused data members.
- Updated examples to new interface changes and common tools.
- advanced
  - air_shower
    - Migrated to enable use of multi-threading.
    - Added G4Ellipsoid among solids enabled for parameterisation.
  - amsEcal
    - Changed to port to new G4VUserPhysicsList split-class mechanism.
  - brachytherapy
    - Migrated to enable use of multi-threading.
    - Introduced modular Physics List.
    - Substituted G4ParticleGun with G4GeneralParticleSource.
    - Introduced Radioactive Decay. Energy spectrum of gamma deriving from radioactive decay.
    - Now possible to switch among brachy sources.
    - Fix bug in BrachySteppingAction (replace = with ==). Use G4ParticleDefinition instead of string.
  - composite_calorimeter
    - Corrected search of AIDA tools. Addressing problem report #1491.
  - dnageometry
    - New example implementing a setup of a realistic nucleus model of a cell, including chromosomes, in combination with Geant4-DNA physics.
  - dnaphysics
    - Migrated to enable use of multi-threading.
    - Changed default water definition.
    - Removed unused electron capture process.
    - Changed process naming scheme.
  - gammaknife
    - Migrated to enable use of multi-threading.
  - gammaray_telescope
    - Updated physics list: removed inelastic models for hyperons and anti-hyperons (only EM and decay left); use FTFP model down to zero energy for anti-p and anti-n (Bertini cascade not available); use FTFP+BERT for d,t and alphas.
    - Removed dependency from HEP and LEP models.
  - hadrontherapy
    - Included class for average LET computations.
    - Removed dependency from HEP and LEP models.
    - Renamed hadronic physics class.
  - human_phantom
    - Migrated to enable use of multi-threading.
    - Testes and Genitalia modelling added for MIRD model.
    - G4HumanPhantomPhysicsList is derived from G4VModularPhysics.
    - Substituted G4ParticleGun with G4GeneralParticleSource.
  - iort_therapy
    - Removed G4HadronQElasticPhysics, and replaced G4QStoppingPhysics. Updated for renamed physics builders.
  - lAr_calorimeter
    - Minor updates.
  - medical_linac
    - Removed obsolete G4HadronQElasticPhysics.
    - Fixed compilation erros on VC++12.
  - microbeam
    - Migrated to enable use of multi-threading.
    - Removed comparisons of strings in MicrobeamSteppingAction.
    - Added G4Ellipsoid among solids enabled for parameterisation.
  - microdosimetry
    - Updated multiple-scattering model.
  - microdoelectronics
    - New example simulating tracks of a 5 MeV proton in silicon, exercising new G4MicroElec* processes and models.
  - nanobeam
    - Migrated to enable use of multi-threading.
    - Changed selection of volumes in SteppingAction using names.
    - Updated CMake script to make explicit required use of external CLHEP.
  - purging_magnet
    - Explicitly use G4CsvAnalysisManager to be compliant with restructure of analysis module.
  - radioprotection
    - Replaced oroginal REMSIM example with characterisation of novel diamond detector for radiation protection, using microdosimetric approach.
    - Migrated to enable use of multi-threading.
  - underground_physics
    - In DMXMinEkineCuts, migrated calculation of the range from G4EnergyLossTable (obsolete class) to G4LossTableManager.
    - Removed dependency from HEP and LEP models.
  - xray_fluorescence
    - Fixed compilation erros on VC++12.
- basic
  - Migrated to enable use of multi-threading.
  - Fixes to GUI macros.
  - basic/B1
    - Removed B1EventInformation for keeping maximum simplicity.
    - Use /run/printProgress. Cleanup in EventAction.
  - basic/B2
    - Replaced magnetic field classes (B2MagneticField, B2FieldMessenger) with use of new G4GlobalMagFieldMessenger class.
    - Added G4Ellipsoid among solids enabled for parameterisation in B2b.
  - basic/B3
    - B3PrimaryGeneratorAction: changed G4ParticleTable::GetIon() to G4IonTable::GetIon(), as the former method became obsolete.
  - basic/B4
    - Fixed EndOfRunAction() to get the printed histogram statistics correctly.
  - basic/B5
    - New example, copy of original extended/analysis/A01 example.
    - Replaced messenger classes with use of G4GenericMessenger.
    - Changed magnetic tube material to G4_Air (was G4_Galactic) Resolves issue of low-energy electrons spinning forever in vacuum.
    - Changed step limit size to 1 m (more sutable for demonstration of the smooth trajectory visualization option).
- extended
  - Renamed example 'analysis/A01' to 'basic/B5'.
  - Removed obsolete 'geometry/olap' example.
  - analysis
    - Example N03Con replaced with B1Con.
    - Removed use of G4AnalysisManager::Create(isMaster). Added G4RunManager::ReinitializeGeoemtry() in set methods that change geometry. Removed Update method and UI command in shared DetectorConstruction.
    - analysis/AnaEx01
      - Migrated to enable use of multi-threading.
      - Updated setup for added classes in Hbook analysis code.
  - biasing
    - Removed references to obsolete G4CellScorer classes and code cleanup.
    - biasing/B01
      - Replaced B01PhysicsList with FTFP_BERT as part of LHEP removal.
    - biasing/B02
      - Migrated to enable use of multi-threading.
      - Removed dependency from LEP models.
    - biasing/B03
      - New example derived from B02 but adopting modular physics-lists.
      - Migrated to enable use of multi-threading.
    - biasing/GB01
      - New example illustrating how to bias process cross-sections.
    - biasing/GB02
      - New example illustrating how to make a force collision biasing in a way that is essentially similar to the approach in MCNP.
    - biasing/ReverseMC01
      - Slight modifications into the main in order to migrate to the new RMC tracking schema where reverse tracking and forward tracking of adjoint and forward equivalent particles are processed in the same events.
      - Migrated to use g4tools.
  - common
    - When building materials with NistManager do not set isotopes argument (was set to false), as all materials have to be built from isotopes.
    - common/analysis
      - Extended the manager class for handling more than one ntuple.
      - Refactoring ExG4Hbook manager class following changes in analysis module.
      - Implemented functions for user defined/logarithmic binning for H1 and H2; in case of H2 an exception is (not available in HBOOK).
  - electromagnetic
    - In HistoManager: use new analysis manager method SetH1Activation().
    - Updated setup for added classes in Hbook analysis code.
    - PhysListEmStandard: use default G4UrbanMscModel.
    - electromagnetic/TestEm0
      - Use G4SeltzerBergerModel instead of obsolete G4eBremsstrahlungModel.
      - DirectAccess: use G4PEEffectFluoModel instead of obsolete G4PEEffectModel.
    - electromagnetic/TestEm1
      - Migrated to enable use of multi-threading.
      - PhysicsList::AddDecay(): use G4PhysicsListHelper.
      - Make use of G4GlobalMagFieldMessenger.
      - Removed HBOOK tools.
    - electromagnetic/TestEm2
      - Migrated to enable use of multi-threading.
    - electromagnetic/TestEm4
      - Migrated to enable use of multi-threading.
      - Removed HBOOK tools. Removed EventActionMessenger.
    - electromagnetic/TestEm5
      - Migrated to enable use of multi-threading.
      - Make use of G4GlobalMagFieldMessenger.
      - Removed HBOOK tools. Removed EventActionMessenger.
    - electromagnetic/TestEm6
      - PhysicsList: restored G4GammaConversionToMuons.
      - Added cross section factor to gamma->mu+mu- process to TestEm6.in macro.
    - electromagnetic/TestEm7
      - PhysListEmStandardSS, PhysListEmStandardNR: updated according to Option4 physics list models and parameters.
      - PhysListEmStandardNR: use G4UrbanMscModel instead of G4UrbanMscModel95.
      - Removed use of obsolete class G4HadronQElasticPhysics.
    - electromagnetic/TestEm8
      - Stacking action and its messenger are added allowing to kill secondary electrons inside GasDetector region and add this energy to total energy deposit (option by default off).
      - PhysicsList: substituted obsolete G4PAIPhotonMOdel with G4PAIPhotModel.
      - HistoManager: added histogram for energy deposition in units of ADC counts; added extra UI command "/testem/setEnergyPerChannel".
    - electromagnetic/TestEm11
      - PhysListEmStandard: use default G4UrbanMscModel.
      - Make use of G4GlobalMagFieldMessenger.
      - Removed EventActionMessenger.
    - electromagnetic/TestEm12
      - PhysListEmStandard: use default G4UrbanMscModel.
      - PhysListEmStandardWVI and PhysListEmStandardSS: reduced low-energy threashold for the single scattering model to 10 eV.
    - electromagnetic/TestEm14
      - PhysicsList: restored G4GammaConversionToMuons.
    - electromagnetic/TestEm15
      - Updated name of muon-nuclear process from "muNucl" to "muonNuclear".
      - HistoManager, RunAction: make theoretical histogram back.
    - electromagnetic/TestEm17
      - Updated name of muon-nuclear process from "muNucl" to "muonNuclear".
      - HistoManager, RunAction: make theoretical histogram back.
  - eventgenerator/HepMC
    - Added G4Ellipsoid among solids enabled for parameterisation in HepMCEx01.
  - eventgenerator/particleGun
    - Simplified histograms management.
  - eventgenerator/pythia/decayer6
    - Fixed use of particle iterator in P6DExtDecayerPhysics.
    - Fixed compilation warnings for shadowed variables.
  - eventgenerator/exgps
    - Migrated to enable use of multi-threading.
    - Migrated to use g4tools.
  - exoticphysics/monopole
    - G4MonopolePhysics: fixed warning at initialisation.
    - G4MonopoleTransportation: use 'verboseLevel' variable from base class.
    - G4MonopoleTransportation, G4MonopoleEquation: adapted to use G4ChargeState to pass Magnetic & Electric Charge.
  - exoticphysics/phonon
    - Removed particles, lattice classes, and processes, now all in new library module. Eliminated use of G4VUserTrackInfo, creating a singleton (thread-local) map between tracks and wavevectors, for use by the stacking action and by processes.
    - Fixed printout in XLogicalLattice.
  - field
    - Migrated examples to enable use of multi-threading.
    - field/field05
      - Changed GetFieldValue() signature and added F05SteppingVerbose to print global time.
    - field/field06
      - Fix for uninitialized variables in F06PrimaryGeneratorAction.
  - hadronic/Hadr00
    - Migrated to enable use of multi-threading.
  - hadronic/Hadr01
    - Migrated to enable use of multi-threading.
    - PhysicsList: removed CHIPS and LHEP builders. Migrated to new structure of physics_lists.
  - hadronic/Hadr02
    - Replaced LEP capture with G4NeutronRadCapture.
    - Migrated to cross-sections extracted from CHIPS.
    - Disabled energy/momentum check.
  - hadronic/Hadr03
    - DetectorConstruction: add function MaterialWithSingleIsotope(). Suppressed natural abundance flag. Improved material definition.
    - DetectorMessenger: added command to set an isotope.
    - PhysicsList: QGSP_BERT_HP replaced by FTFP_BERT_HP. Re-enabled G4HadronPhysicsINCLXX. Migrated to new physics_lists directory structure and classes.
    - RunAction: compute crossSection per atom. Added material in GetCrossSectionPerAtom().
    - Use G4RunManager::ReinitializeGeometry() to trigger geo rebuild. Remove UI command to update geometry.
    - In HistoManager: use new analysis manager method SetH1Activation().
  - hadronic/Hadr04
    - New example focussed on neutronHP physics, especially neutron transport, including thermal scattering.
  - hadronic/Hadr05
    - New example derived from Hadr00 demonstrating the usage of G4GenericPhysicsList to build the concrete physics list at the run time.
  - medical/DICOM
    - Migrated to enable use of multi-threading.
    - Fix in DicomHandler for problems when using DCM files other than those provided in the examples.
    - Added DicomPhantomZSliceMerged class to handle inconsistencies in DCM file meta-data.
    - Extended DicomPhantomZSliceHeader class to hold density and material ID data and the printing of data to files instead of DicomHandler.
    - Added more anonymous DICOM files and adapted configuration scripts.
    - Replaced LEP model for alphas by extending Binary cascade to zero energy.
    - Added G4Ellipsoid to solids enabled for parameterisation in DicomNestedPhantomParameterisation.
  - medical/electronScattering
    - In HistoManager: use new analysis manager method SetH1Activation().
  - medical/electronScattering2
    - Migrated to enable use of multi-threading.
    - PhysListEmStandard: removed G4UrbanMscModel95; use default model.
  - medical/fanoCavity[1,2]
    - PhysListEmStandard_option3: use G4UrbanMscModel instead of Urban95.
    - In HistoManager: use new analysis manager method SetH1Activation().
  - medical/GammaTherapy
    - When building materials with NistManager do not set isotopes argument (was set to false), as all materials have to be built from isotopes.
  - optical/LXe
    - Fixed overlap in geometry. Fixed data initialisation.
    - Migrated to enable use of multi-threading.
  - optical/OpNovice
    - New example, copy of the original novice example N06.
    - Migrated to enable use of multi-threading.
  - optical/WLS
    - Migrated to enable use of multi-threading.
  - parallel
    - Moved ParN02, ParN04 and info in a new TopC directory, New directory TBB.
    - parallel/TBB
      - New module with example derived from original basic/B2b demonstrating how to interface a simple application with the Intel Threading Building Blocks library (TBB), and organise MT event-level parallelism as TBB tasks.
  - parameterisations
    - Added G4Ellipsoid among solids enabled for parameterisation.
    - parameterisations/gflash
      - Removed ExGflashMaterialManager class; now using NIST manager.
      - Migrated to enable use of multi-threading.
      - Fixed event action destructor in case fNevent == 0.
      - Changed /gps/centre 0 0 0 to /gps/pos/centre 0 0 0 to clear gps deprecating command message in test.mac.
    - parameterisations/Par01
      - New example, extracted as copy of novice/N05.
      - Migrated to enable use of multi-threading.
  - persistency/gdml/G01
    - Added test case for 'genericPolycone' and 'genericPolyhedra'.
  - persistency/P01
    - Added G4Ellipsoid among solids for parameterisation.
  - persistency/P03
    - Migrated to enable use of multi-threading.
  - polarisation/Pol01
    - Migrated to g4tools.
  - radioactivedecay/rdecay01
    - In PhysicsList set the half life threshold of the G4RadioactiveDecay to nanosecond.
    - TrackingAction: suppress AbortEvent() for single decay mode.
    - DetectorConstruction: set 'fWorldSize' to 2 um.
    - In HistoManager: use new analysis manager method SetH1Activation().
  - radioactivedecay/rdecay02
    - Migration to new physics_lists directory structure.
    - exrdmPhysicsList: use standard constructors for EM physics, removed local low-energy EM physics. Use standard constructors for hadronic builders instead of obsolete. Replaced G4LElastic and G4LCapture with G4HadronElastic and G4NeutronRadCapture.
  - runAndEvent
    - Migrated examples to enable use of multi-threading.
    - runAndEvent/RE01
      - Replaced obsolete class G4QStoppingPhysics with G4StoppingPhysics.
      - Added G4Ellipsoid among solids enabled for parameterisation.
    - runAndEvent/RE02
      - Replaced G4AntiProtonAnnihiliationAtRest with G4AntiProtonAbsorptionFritiof.
      - Added G4Ellipsoid among solids enabled for parameterisation.
    - runAndEvent/RE04
      - Added G4Ellipsoid among solids enabled for parameterisation.
    - runAndEvent/RE05
      - New example, extracted as copy of novice/N04.
      - Updated pythia_main.f and data file. Number of events in event data is 100; increased digits for PDG code of HEPEVT.
      - Readout geometry is disabled, as no longer supported. Migrated to parallel world that descibes the readout geometry.
    - runAndEvent/RE06
      - New example, extracted as copy of novice/N07.
  - visualization
    - Replaced physics list QGSP_BIC_EMY with FTFP_BERT.
- novice
  - Archived module. Old novice examples are now mapped as follows:
    - N01 - removed
    - N02 - basic/B2
    - N03 - basic/B4
    - N04 - extended/runAndEvent/RE05
    - N05 - extended/parameterisations/Par01
    - N06 - extended/optical/OpNovice
    - N07 - extended/runAndEvent/RE06