Geant4 10.3 Release Notes

December 9th, 2016

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

Platforms:

- Linux, gcc-4.8.5.
  Tested on 64 bit architectures (Intel or AMD) with CERN CentOS Linux 7 (CC7) (based on CentOS Linux 7).
- MacOSX 10.12 Sierra with clang-3.8 (Apple LLVM/Clang-8.0.0)
- Windows-10 with Visual C++ 14.0 (Visual Studio 2015)

More verified and tested configurations (64 bits):

- Linux, gcc-4.9.3, gcc-5.3.0, gcc-6.2.0, clang-3.9
- Linux, Intel-icc 16.0
- MacOSX 10.10 with clang-3.6
- MacOSX 10.11 with clang-3.7
- Windows-7 with Visual C++ 14.0 (Visual Studio 2015)
- Linux for Intel Xeon Phi with Intel-icc 16.0 (gcc-4.9 compatibility layer)

Note: Windows platforms are supported/verified only for the sequential mode. Multi-threading capability is not yet supported on Windows.

## 2. Supported CLHEP version

This release of Geant4 requires and has been verified with CLHEP, release 2.3.4.3. 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. 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

- Minimum required version of CMake to build Geant4 is 3.3.

Run

- A new application state `G4State_Init` is introduced. Geant4 becomes this state during initialization of geometry and physics. Ordinary users who use G4RunManager or G4MTRunManager won't see any difference, and thus no migration is required. For users having their own custom run manager which changes the Geant4 application state, it is required to make sure the state change to `G4State_Idle` takes place after the initialization of geometry and physics. User's custom run manager does not need to change Geant4 application state to `G4State_Init` as it is taken care by G4RunManagerKernel.

Geometry

- A new minor release of the GDML schema, GDML-3.1.4, is used, supporting export of scaled volumes. The new schema is fully compatible with old schema versions and schema validation thorugh network is already activated against it.

Senditive Detectors

- An explicit call to G4SDManager::AddNewDetector() must now be added in order to register a sensitive-detector. The use of G4VUserDetectorConstruction::SetSensitiveDetector() no longer does this implicitly.

Electromagnetic and optical physics

- The data file G4EMLOW-6.50 should be used.
- It is recommended to use C++ interface to G4EmParameters and/or UI commands from G4EmParametersMessenger for EM parameters definition. The class G4EmProcessOptions still exist but may provide wrong configuration of EM physics, this class will be removed in the next public release.

Hadronic physics

- The new data sets `G4PhotonEvaporation-4.3`, `G4RadioactiveDecay-5.1` and `G4ENSDFSTATE-2.1` should be used. Updated also the optional data-set `G4TENDL-1.3`
- The `G4PhotonEvaporation-4.3` data sets include two sets of gamma level data. By default the old set (equivalent to `G4PhotonEvaporation-3.2`) is used. When radioactive-decay is enabled (G4RadioactiveDecayPhysics constructor added to the physics-list), the new data format for gamma-level data is used.

Analysis

- The parameter classes G4Parameter<T>, G4VParameter and G4ParameterManager are renamed to G4Accumulable<T>, G4VAccumulable and G4AccumulableManager respectively, to better reflect the meaning of the accumulable objects.
- Stopped support of HBOOK output format.

Data Sets

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

- New data set versions: `G4EMLOW-6.50, G4ENSDFSTATE-2.1, G4RadioactiveDecay-5.1, G4PhotonEvaporation-4.3`.
- In order to use `ParticleHP` for charged particles (protons, deuterons, tritons, He3 and alphas), an optional data set `G4TENDL-1.3` is required, and should be downloaded in addition from the Geant4 web site.

## 4. New Developments and Capabilities

Analysis

- Implemented merging of ntuples in multi-threaded mode with Root output type.

Geometry

- A configuration option allows an installation to use the VecGeom Unified Solids Library primitives, to replace the original Geant4 solids, as in the previous release. The path to an external installation of the VecGeom library (VecGeom version `v00.03.00`) should be specified. See the associated instructions file for configuration and installation.
- New magneticfield stepper classes G4BogackiShampine23 (BS23), G4BogackiShampine45 (BS45) and DormandPrince745 (DP45), implementing third order (BS23) and fifth order (BS45, DP45) embedded RK tableaus; together with new FSAL integrator driver classes and steppers.

Electromagnetic physics

- Upper energy limit of physics tables is extended from `10 TeV` to `100 TeV`.
- A set of new UI commands is added which allows defining models per region. In particular, UI commands defining PAI model, DNA models, MicroElec models for a given geometrical region (G4Region) on top of any EM physics configuration. It is also possible to define alternative reference physics configurations for a particular region on top of any other reference EM physics.
- A new process of `e+e-` pair creation by electron or positron is added to `Option3` and `Option4` EM physics configurations.
- Sampling of lateral displacement for the Urban model has been updated in `Option3`, `Option4`, `Livermore` and `Penelope` physics configurations. Due to that, the Urban model predictions become close to predictions of Goudsmit-Saunderson and Wentzel-VI models.

Hadronic physics

- Achieved consistent set of data - G4ENSDFSTATE-2.1, G4RadioactiveDecay-5.1, G4PhotonEvaporation-4.3, in terms of isomer excitation levels - and physics models which use these data - radioactive-decay and photon-evaporation, in terms of energy and lifetime of excited nuclides.
- Precompound/de-excitation code has been restructed in order to use the same data as radioactive-decay model and former, internal hard-coded data are not used any longer. The possibility to simulate correlated emissions of gammas has been introduced but not yet activated.
- Improved the evaporation spectrum of Bertini-like intra-nuclear cascade model (BERT). This reduces the overproduction of low-energy neutrons and protons.
- Extended the INCLXX intra-nuclear cascade model to include eta and omega meson production.
- Fritiof (FTF) string model is similar to the one in version 10.2.p02, except for the treatment of the excited nuclear remnant, in order to produce hadronic showers similar to those in version 10.1.

Particles

- Particles properties have been updated according to PDG-2015.
- New floating level base to ions and related classes is introduced in this release, and the nuclide table has been adapted to conform to the new scheme.

Physics Lists

- A new set of UI commands is available allowing to enable a specific EM physics configuration per G4Region by a name of EM physics constructor.
- The physics lists `FTFP_BERT` and `FTFP_BERT_HP` have changed the transition region between Bertini-like (BERT) and Fritiof/Precompound-de-excitation (FTFP) models: now it is between `3` and `12 GeV` (instead of `4` and `5 GeV`), for pions, kaons, proton and neutron (for hyperons it remains unchanged between `2` and `6 GeV`; for anti-baryons, FTF is used everywhere).

Visualization and Interfaces

- Significant improvements in the Qt interface and graphics.
- A significant speed-up for OpenGL viewers (including Qt) on some platforms due to better use of the graphics pipeline. The associated command that controls this behaviour is `/vs/ogl/flushAt [endOfEvent endOfRun eachPrimitive NthPrimitive NthEvent never]`. The default is `/vis/ogl/flushAt NthEvent 100`.
- A new feature is the ability to fly-through saved views with `/vis/viewer/interpolate` (not yet available on Windows). Use the help command to see options (one may make movie sequences this way).
- A default icon toolbar for the Qt driver. The file `icons.mac` in some examples is no longer needed. Viewer properties (editable) and pick informations have been moved to this new icon toolbar.
- A new command, `/gui/defaultIcons [enable disable]`, to manage the default icon toolbar.
- Improved command line completion in the Qt interface.

## 5. Expected effects on physics and computing performance

Electromagnetic physics

- Expected similar CPU/memory performance and physics results for the default EM physics configuration.
- High energy EM showers will be narrower on per-mille level due to fixed LPM effect treatment for the bremsstrahlung.
- Sampling scattering by the Urban model should be improved for `Option3`, `Option4`, `Livermore` and `Penelope` physics configurations.

Hadronic physics

- Based on tests performed on simplified calorimeters, hadronic showers are similar to those in version 10.1. Some differences - in particular wider hadronic showers and smoother behaviour as a function of the projectile energy, especially between `4` and `12 GeV` - are due to the change of transition region between FTFP and BERT in the physics lists `FTFP_BERT` and `FTFP_BERT_HP` (now set to `3-12 GeV`).
- The energy response of hadronic showers in Iron and Copper is similar to the one in version 10.1, i.e. a few percent lower than in version 10.2; for heavier absorbers (Tungsten and Lead), it is a few percent lower than both versions 10.1 and 10.2.

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

- Set CLHEP-2.3.3.0 as the minimum required version for external CLHEP library.
- Fix to preserve same build optimisation settings of libraries installation when building applications/examples. Currently applicable only for single-mode installation.
- Added option for TEXT output file in FindStatTest.cmake script.
- Provided placeholder variable for adding setting of XercesC library path. Addressing problem report #1877.
- Added options `-fno-math-errno`, `-ftree-vectorize`, `-fno-trapping-math` to default flags in Release mode for gcc and clang compilers to assist in auto-vectorization; move optimization level to `-O3` on all supported compilers.
- No longer use --whole-archive for physics-lists module on static builds.
- Change default build type to Release when using single mode tools like Make/Ninja.
- Fix bug in Qt4/5 handling on Windows. Added expansion variable for Qt dynamic loader setup and fixed export of Qt settings to GNUmake configuration scripts.
- Added FindDCMTK.cmake needed for extended/medical/DICOM example.
- Correctly export USolids/VecGeom settings to GNUmake configuration scripts.
- Fixed optimization level in Release mode for Windows to be `-Ox`.
- Always convert exported data paths to native CMake paths. Prevents parse errors on Windows, where native paths are exported.
- Updated data-sets versions.

### Analysis

- Accumulables
  - Extended and improved current implementation of parameters: parameters names are optional; extended merge mode with kMaximum, kMinimum and removed kUser (not needed anymore); added access to paremeters via iterators and ids (defined by the order of registering); introduced G4MergeFunction type and apply merging via a function defined according to the merge mode.
  - Added prefix, postfix increment operators to G4Accumulable.
- Histograms & Profiles
  - Enabled creating/configuring profiles without cut values (vmin, vmax). These values are now treated in a special way.
- Ntuples
  - Implemented merging of ntuples in MT mode with Root output type. Merging ntuples in a selected number of output files. Merging has to be activated in user applications.
  - Added parallel ntuple in g4tools: on a same booked nutple, pass baskets from threads or mpi ranks to a "main ntuple" tied to a file.
  - Added methods to tools/impi for passing ntuple data.
- Output types
  - Stopped support of HBOOK output format.
- Fixes
  - Fixed incompatibility with Root 5.x and 6.x formats.
  - Fixed writing of CSV profiles; fixed duplicating ntuple header.
  - Use of nullptr and return 0. when the return type is double.
  - Fixed compilation warnings on Windows-64.
- g4tools
  - Updated the g4tools version to g4tools-2.3.0.

### Digitization & Hits

- Removed implicit addition to manager of sensitive-detector passed via G4MultiSensistiveDetector proxy. Addressing problem report #1908.
- Built-in scorer now uses G4StatDouble.
- Further clean up in G4THitsMap, G4VScoringMesh with c++11 templates.

### Electromagnetic Processes

- Adjoint
  - Added new adjoint process G4AdjointForcedInteractionForGamma to force the reverse interaction of adjoint gamma.
  - Modification in G4AdjointBremsstrahlungModel to use the direcet angular model to compute the direction of the adjoint secondary.
  - Added G4UrbanAdjointMscModel and G4eAdjointMultipleScattering classes.
  - Slight modifications of G4VEmAdjointModel for new forced interaction.
- DNA:
  - G4DNAScreenedRutherfordElasticModel: modified handling of energy boundaries at init time. Deprecated SetKillBelowThreshold() method; modified initialisation to prevent erasing/rewriting data.
  - G4DNAChemistryManager: reversed logic in CreateWaterMolecule() for interface with physics models.
  - G4DNAChampionElasticModel: rearranged declaration of attributes. Deprecated GetKillBelowThreshold() method; removed attributes; modified Theta() method. Reset check ekin >= LowEnergyLimit(). Added missing computation of 'sigma'.
  - G4DNAUeharaScreenedRutherfordElasticModel: added exception at init time if model is used for anything other than e-. Deprecated SetKillBelowThreshold() and GetKillBelowThreshold() methods, use G4LowECapture or G4DNAElectronSolvatation; modified SelectHighEnergyLimit() method; removed attributes. Added possibility to extend applicability limit.
  - G4DNAChampionElasticModel, G4DNAUeharaScreenedRutherfordElasticModel: added pre-processor flag to control Verbose check mode; checking energy boundaries in Initialise(), removed call to G4Electron; cleanup in CrossSectionPerVolume by removing unnecessary checks and calls to map; removed energy checks in SampleSecondaries().
  - Updated fast computation of G4DNAScreenRutherfordElasticModel and G4DNAUeharaScreenedRutherfordElasticModel.
  - Renamed class G4DNAElectronSolvatation to G4DNAElectronSolvation.
  - G4DNAOneStepThermalizationModel: using pre-processor flag to control check mode verbosity; removed call to G4Electron at initialization.
  - G4DNATransformElectronModel: using pre-processor flag to control check mode verbosity; removed call to G4Electron at initialization; added check for creation of solvated electron.
  - G4MoleculeCounter: at initialization time, prevent creating entries for unregistered molecule definition. Removed check of c++ version for unique_ptr/auto_ptr selection.
  - G4DNAMeltonAttachmentModel, G4DNASancheExcitationModel: removed usage of internal energy boundaries.
  - G4DNASancheExcitationModel: removed warning when SANCHE_VERBOSE is OFF.
  - G4VUserChemistryList: added flag; some code cleanup.
  - Added nrj extensibility to SR and USR models.
  - Replaced usage of std::exp() by G4Exp().
  - Added stationary mode to sub-excitation electron processes.
  - G4Scheduler: moved G4IosFlagsSaver to Process().
  - Added G4VMoleculeCounter and enabled using custom molecule counter. Pass location information to molecule counter
  - G4ITNavigator2: relocate voxelNavigator before every call to ComputeStep() and ComputeSafety().
  - Updated displacers; changed electron thermalization distribution in WaterDisplacer. OneStepTherm: two inner thermalization models can be chosen as template argument.
  - G4VMolecularDissociationDisplacer: added missing initializer.
  - G4VMolecularDissociationDisplacer and G4DNAWaterDissociationDisplacer: displacement types can be thread shared.
  - Requires G4EMLOW-6.50 data-set.
- High Energy
  - Use C++11 features explicit, override, delete, nullptr.
- Low Energy
  - Removed verbosity in G4AtomicTransitionManager. Addressing problem report #1874.
  - Fixed typo in G4hParameterisedLossModel. Addressing problem report #1876.
  - Adopt c++11 features in Penelope models (nullptr, range-based loops).
  - G4MicroElecInelasticModel: changes to allow faster computation.
  - Requires G4EMLOW-6.50 data set.
- Muons
  - G4ePairProduction: new process e+e- pair production by e+-.
  - Use C++11 features explicit, override, delete, nullptr.
- Polarisation
  - G4PolarizedCompton, G4eplusPolarizedAnnihilation, G4ePolarisedIonisation: in PostStepGPIL(), use cached values of 'currentInteractionLength'; fixes problem at boundaries where updated value was incorrectly used.
  - C++11 migrations: explicit, override, delete operators on function declarations; remaining nullptr; write floats/doubles with '.'. Use C++11 features nullptr and range-based for loop in G4PolarizationManager.
- Standard
  - G4UrbanMscModel: use new lateral displacement algorithm in opt-3 and opt-4 physics-lists. Modified randomisation of "true path length".
  - G4UniversalFluctuation: fixed bug in Glandz part, Gaussian sampling. The sampling is symmetrical around 'emean' now. Some code cleanup.
  - G4SeltzerBergerModel: fixed data handling for Z > 92. Addressing problem report #1870, about invalid read of data at run time.
  - G4eBremsstrahlungRelModel: change LPM constant such that it gives suppression variable consistent with Migdal's one; fixes small issue in LPM function computation.
  - G4SeltzerBergerModel, G4eBremsstrahlungRelModel, G4eBremParametrizedModel: use G4Element::GetZasInt().
  - G4eBremsstrahlungRelModel: removed unused variables.
  - G4eBremsstrahlung: improved printout.
  - G4alphaIonisation, G4hIonisation, G4ionIonisation: do not define StepFunction in constructor.
  - G4ASTARStopping, G4PSTARStopping, G4NISTStoppingData, G4BraggModel: data arrays become float, computation is left double.
  - G4BraggModel, G4BraggIonModel, G4BetheBlochModel: use float for local static data.
  - G4MottCoefficients, G4ScreeningMottCrossSection and G4eSingleCoulombScatteringModel: fix to use nuclear form-factor options via G4EmParameters.
  - G4ScreeningMottCrossSection: fixed precision lost in relativistic kinematics when E > 30 TeV.
  - G4WentzelOKandVIxSection: added alternative nuclear form-factor approximations.
  - G4BetheHeitlerModel, G4ICRU49NuclearStoppingModel, G4IonFluctuations, G4GoudsmitSaundersonMscModel, G4IonFluctuations: use better name for G4Pow pointer.
  - G4eeToTwoGammaModel, G4eplusAnnihilation: fixed polarisation of final gamma.
  - Added c++11 keywords: explicit, final, override, delete; use nullptr and use G4Element::GetZasInt().
- Utils
  - G4VEmProcess, G4EmModelManager: added extra methods to access models.
  - G4VEnegryLossProcess, G4EmCorrections: removed unused class members.
  - G4EmParameters, G4EmParametersMessenger: moved remaining parameters from G4EmProcessOptions, which now becomes obsolete.
  - G4EmParameters: allow to change parameters only from the master thread and only at PreInit or Idle states.
  - G4EmCalculator, G4LossTableBuilder, G4LossTableManager, G4VMscModel, G4VEmModel, G4VEmProcess, G4VEnergyLossProcess: use only G4EmParameters class interfaces for initialisation, improved debug printout.
  - G4NuclearFormfactorType: added new enumerator.
  - G4VMultipleScattering: moved position change to AlongStep. Added method NumberOfModels().
  - G4EmModelManager: reviewed and fixed model configuration for DNA physics.
  - G4EmCorrections: make part of data static, make internal vectors static, shared between threads.
  - G4LossTableManager, G4VEmModel, G4VMultipleScattering: cleanup of static const data.
  - G4VEmModel, G4VAtomDeexcitation, G4EmCalculator: use new method GetZasInt() from G4Element.
  - G4VEmModel: fix in SelectRandomAtomNumber() method. Fixed destruction in MT mode.
  - G4VAtomDeexcitation: fixed possible data race at initialistion. Extended printout at initialisation. Completed migration to G4EmParameters interface.
  - G4AtomicShell: make methods inlined.
  - G4DummyModel: set default low-enegry limit to 0 (needed for DNA).
  - G4EmParameters, G4VEmProcess, G4VEnergyLossProcess: default upper energy limits are extended from 10 TeV to 100 TeV.
  - Fixed typo in G4EmBiasingManager. Addressing problem report #1876.
  - G4AtomicDeexcitation, G4EmParameters, G4EmParametersMessenger: added new methods and UI command to define optional EM physics per geometrical region. Added interface and UI command to enable thread safe built-in Birks saturation corrections; added access to G4EmSaturation.
  - G4EmSaturation: make it thread safe, added data for G4_PbWO4; fixed data for G4_lAr, according to recent report from ATLAS. Run-time methods are now "const".
  - G4LossTableManager: changed initialisation of G4EmSaturation.
  - G4EmCorrections, G4ionEffectiveCharge: use better name for G4Pow pointer.
  - Use C++11 keywords explicit, override, delete and nullptr.
  - Fixed Coverity defects.
- Xrays
  - Added new class G4ScintillationTrackInformation and use it in G4Scintillation.
  - Use C++11 features explicit, override, delete, nullptr.
  - Added stacking flag to G4Scintillation and G4Cerenkov and new GetNumPhotons() method.

### Error Propagation

- G4ErrorPhysicsList: replaced direct use of 'aParticleIterator' with GetParticleIterator().

### Event

- Introducing G4MultiEventAction to allow multiple user actions in the same job.
- Particle gun now can shoot ions with floating level base.
- Modified G4AdjointStackingAction for the implementation of splitting in reverse MC tracking.
- Set polarization to pre-assigned decay products in G4PrimaryTransformer. Addressing problem report #1914.
- Changed the way of deleting G4PrimaryVertex objects to avoid stack overflow for very large number of primary vertices.

### Externals

- Updated CLHEP module to version 2.3.4.3:
  - Added use_atomic.h header to use std::atomic if compiler supports it.
  - MixMaxRng: corrected initialisation and use of 'numberOfEngines' when more than one threads calls the constructor. Use simple loop for flatArray(); engine built-in function turns out to be extremely slow and unefficient. Use seed_spbox() for seeding MixMax with single seed. Avoid hard-coded constant for initialisation of VECTOR_STATE_SIZE in MixMaxRng, to directly use actual value of "N" from mixmax generator. Corrected check for counter range in method getState(). Changed default number of N in mixmax generator to 17 (was 256). Removed use of obsolete 'register' keyword. Provided new skipping coefficients for the new value of N and for the optional case N=8.
  - HepRandom: revised settings of "defaults" to use a single thread_local pointer.
  - Fixed array initialisation in Evaluator static method function().

### General Processes

- Biasing
  - management:
    - Checked for unbounded while loop in G4ProcessPlacer.
    - Cleanup G4BiasingAppliedCase enum for obsolete logic related to BAC_DenyInteraction case.
  - generic:
    - Introducing parallel geometry capability in generic biasing:
      - G4BiasingProcessInterface: checks for biasing operator in mass and parallel geometries;
      - G4ParallelGeometriesLimiterProcess is a new process that limits the step on the boundaries of the parallel geometries. One instance handles all parallel geometries the generic biasing has to be aware of;
      - G4BiasingProcessSharedData (already existing class for data shared among biasing processes related to a same G4ParticleDefinition) has been extended to carry information related to parallel geometries;
      - G4BiasingHelper is extended to handle addition of G4ParallelGeometriesLimiterProcess to the process manager.
    - Clean up the obsolete code related to DenyProcessPostStepDoIt() in G4BOptnForceFreeFlight, in accordance with the clean up in G4BiasingAppliedCase above. (The corresponding logic case was merged in ApplyFinalStateBiasing() in a more general manner in 10.1.)
    - Fixed Coverity defect in G4ParallelGeometriesLimiterProcess.
- Decay
  - Added G4MuonicAtomDecay class for decay of muonic atoms.
  - Added better diagnostics in exception in G4Decay::DecayIt().
- Optical
  - Added flag for InvokeSD() method call in G4OpBoundaryProcess.
  - Fixed potential problem of photon stuck when traveling almost perpendicular to the surface normal. Addressing problem report #1888.
- Parameterisations
  - New G4FastSimulationManagerHelper utility, used for adding G4FastSimulationManagerProcess to a process manager.
  - Fixed Coverity defects.
- Scoring
  - G4ParallelWorldProcess: added verbosity to check update of field-track.
  - Fixed Coverity defects.

### Geometry

- Magnetic field
  - Added new stepper classes G4BogackiShampine23 (BS23), G4BogackiShampine45 (BS45) and DormandPrince745 (DP45), implementing third order (BS23) and fifth order (BS45, DP45) embedded RK tableaus.
  - Added new stepper classes embedded RK method: DoLoMcPriRK34 (6-stage 3/4 RK, interpolation), DormandPrinceRK56 (9-stage 5/6 RK, interpolation, FSAL-able) and DormandPrinceRK78 (13-stage 7/8 RK, interpolation).
  - Added TsitourasRK45 stepper.
  - First version of FSAL classes: FSAL Integrator Driver (concrete, stand-alone driver); FSAL Integrator Stepper (base class); FBogackiShampine45 (FSAL-version of BogackiShampine45 stepper); FDormandPrince745 (FSAL-version of FDormandPrince745 stepper).
  - G4MagIntegratorStepper: added counter for calls to equation RHS, with Get/Reset() methods.
  - G4HelixMixedStepper: fixes and added new (5th order) stepper choices.
  - Fix in G4CashKarp for the size of arrays holding intermediate values.
  - G4PropagatorInField: fix to pass accuracy values to Intersection Locator after re-evaluating epsilon.
  - Fixed G4ClassicalRK4 header with protection against multiple inclusions.
  - Checked while-do loops against potential infinite loops.
- Management
  - Added G4ScaleTransform class for Cartesian scaling transformations.
  - Introduced G4BoundingEnvelope helper class to be used for the calculation of the extent of a solid within the limits defined by the G4VoxelLimits object.
  - Properly use 3D transformations in G4ReflectedSolid. Removed unused affine-transformation data and related methods; removed not used cached inverse transformation. Simplified code. Re-implemented CalculateExtent() to use new class G4BoundingEnvelope.
  - Removed redundant check in G4GeomSplitter::UseWorkArea(). Addressing problem report #1876.
  - Added checks for bounding-box extents in G4USolid. Make direct use of extent from shapes for computing bounding-box in CalculateExtent().
  - New utility class G4GeomTools providing static utility methods for geometry related calculations.
  - New class G4LogicalCrystalVolume, representing an extended logical volume for crystal description.
  - G4LogicalVolume: added virtual keyword to destructor for extended types in the kernel. Added IsExtended() method.
  - Added Extent() virtual method to G4VSolid and G4ReflectedSolid.
  - Fixed use of iterator in G4LogicalVolume::ClearDaughters(); simplified implementation.
  - Moved initialisation of G4GeomSplitter thread-local data to be inline along with generic template type. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.
- Navigation
  - Fix in G4Navigator::GetGlobalExitNormal() to synchronise caching of 'fExitNormalGlobalFrame' before returning. Addressing problem report #1750.
  - More diagnostics in G4VERBOSE mode in G4Navigator::GetGlobalExitNormal().
  - G4ReplicaNavigation: use Cartesian tolerance in distance evaluation in DistanceToOutPhi(). Addressing problem report #1902.
  - G4Navigator: in ComputeStep() force abortion of event if track gets really stuck, but avoid check for overlaps if push-verbosity is set to false. Extended printout for stuck tracks, to show also local coordinates.
  - G4PhantomParameterisation: revisited precision checks.
  - Fixed recursion test for overlaps in G4GeomTestVolume to iterate on all daughters.
  - Added annotations for while-do loops.
- Solids (Boolean)
  - Added new class G4ScaledSolid providing ability to scale dimensions of a shape in X, Y or Z.
  - Boosted computation of GetPointOnSurface() for G4BooleanSolid; reimplemented algorithm, using cached list of primitives.
  - Added warning in G4BooleanSolid::GetPointOnSurface() in case of non convergence after fixed number of trials.
  - Removed tolerance argument to call to G4BoundingEnvelope in G4ScaledSolid::CalculateExtent().
  - G4SubtractionSolid: directly return previously computed distance in DistanceToIn(p,v) if no progress is made (zero step).
  - Implemented Extent() method for all constructs and use it in CalculateExtent().
- Solids (CSG)
  - Re-implemented CalculateExtent() to all solids and related USolids wrappers, to make use of G4BoundingEnvelope. Implemented bounding-box to take into consideration cuts in phi and construction of bounding envelope for rotated cases. Removed no-longer used method CreateRotatedVertices() implementations.
  - Added Extent() method and checks on extent validity to all solids. Use G4GeomTools::DiskExtent() for calculation of bounding box in Extent() for G4Tubs, G4Cons and related USolids wrappers.
  - Disabled check for intersection of cut planes in G4CutTubs constructor, as too strict and not necessary. Addressing problem report #1887.
- Solids (Specific)
  - Revised implementation for GetSurfaceArea() and GetCubicVolume() in G4GenericTrap.
  - Added 'const' qualifier for methods in G4ExtrudedSolid.
  Added CheckPolygon() to remove collinear and coincident points from polygons.
- Improved algorithms for computation of area in G4TriangularFacet and G4QuadrangularFacet. Added post-const qualifier to GetArea().
- G4QuadrangularFacet: added exhaustive tests in constructor to catch potential problems with a quadrangular facet: collinear vertices, non planar surface, degenerate, concave or self intersecting quadrilateral.
- G4TriangularFacet: improved test in constructor to detect degenerate (too small or too narrow) triangles.
- Fixed minor typo in function Create() for G4Polycone, G4Polyhedra and G4GenericPolycone. Fixed minor typos in G4GenericTrap::SurfaceNormal() and G4VTwistSurface::CurrentStatus::ResetfDone(). Issues detected by PVS-Studio static code analyzer. Addressing problem report #1876.
- Moved accessors/modifiers for splitter data to non-inline in G4PolyhedraSide and G4PolyconeSide. Moved initialisation of G4GeomSplitter thread-local data to be inline along with generic template type. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.
- Reimplemented CalculateExtent() in G4Polycone, G4Polyhedra, G4EllipticalCone, G4Paraboloid, G4ExtrudedSolid, G4Hype, G4GenericPolycone, G4TessellatedSolid, G4TwistedTubs, G4Tet, G4GenericTrap, G4EllipticalTube, G4VTwistedFaceted and associated USolids wrappers, to make use of G4BoundingEnvelope. Removed no-longer used method CreateRotatedVertices().
- Added caching of corners and implementation of GetCorner() in G4UPolycone in order to assure correct translation.
- Extended G4UPolyhedra wrapper to cache corners and start/end Phi parameters, to assure correct treatment of angles.
- Fix in G4PolyPhiFace for potential unitialised data in Inside().
- Correction in G4EllipticalCone::DistanceToOut(p) to make it more accurate.

- Volumes
  - Moved initialisation of G4GeomSplitter thread-local data to be inline along with generic template type. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.

### Global

- Added 'us' and 'ps' units symbols for microsend and picosecond respectively to G4UnitsTable. Requiring new CLHEP library 2.3.4.2 for external CLHEP library.
- Converted all units and constants from "static const" to "static constexpr".
- Introduced new utility class G4MTBarrier implementing a synchronization point between threads.
- Changed exception code in G4TWorkspacePool from G4TWorkspacePool to "WorkspaceNN".
- Fix in G4UnitsTable and G4UnitDefinition to be properly shared by all threads. Addressing problem report #1869.
- G4UnitsTable: use 'hep_pascal' instead of 'pascal' to avoid potential symbol conflicts on Windows.
- Added kilovolt/m and megavolt/m to G4UnitsTable for electric field. Addressing enhancement request #1891.
- G4PhysicsVector, G4PhysicsTable and derived classes: general cleanup. Removed duplicate methods; more correct names for some variables; adoption of c++11 keywords; updated comments; removed unnecessary files.
- G4StatDouble: fixed computation of RMS and added new constructor.
- G4UnitsTable: added IsUnitDefined() method, checking existance of a unit in the table. Addressing problem report #1880.
- Made initialisation of G4TWorkspacePool thread-local data to be inline along with generic template type. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.
- G4Threading: added GetNumberOfRunningWorkerThreads() function.
- Fixed compilation warning on MacOS Sierra in MT mode in function G4Threading::G4GetPidId().
- Updated date of release for 10.3.

### Graphical Representations

- G4VisAttributes: added flag to force auxiliary edge visibility, i.e., to record if the user has asked for forcing; introduced default argument 'true' for SetVisibility(), SetDaughtersInvisible(), SetForceWireframe(), SetForceSolid() and SetForceAuxEdgeVisible(); improved logic for setting force drawing style and auxiliary edge visibility; moved above methods and static metohds to be non inline.
- G4VisAttributes::GetInvisible(): changed to use a static instance instead of G4VisAttributes::Invisible; moved implementation to be not inline.
- G4VisAttributes::Invisible: deprecated.
- G4VGraphicsScene: built-in scorer now uses G4StatDouble instead of G4double for maps. Added pure virtual methods AddSolid() for G4Orb and G4Ellipsoid.
- HepPolyhedron: changed default number of line segments per circle (DEFAULT_NUMBER_OF_STEPS) to 72.
- Fixed compilation warning on Linux with -O3 optimisation mode.

### Hadronic Processes

- Cross sections
  - G4ComponentGGHadronNucleusXsc: added two new fields to be used by final string generators.
  - G4CrossSectionDataSetRegistry: removed termination trick from ParticleHP models introduced in previous release.
  - G4VCrossSectionDataSet, G4CrossSectionDataStore: fixed minor Coverity report.
  - G4CrossSectionDataStore: added "throw" to hadronic exception; minor optimisation in G4ComponentGGHadronNucleusXsc and G4ComponentGGNuclNuclXsc. Addressing problem report #1876.
  - Checked do-while loops for potential infinite loops.
- Management
  - G4HadronicProcess: added flag for "integral" approach to take into account cross-section change at a step. Do not create new materials in GetElementCrossSection(), just try to find existing simple G4Material ones instead. Adopt C++11 keyword nullptr.
  - G4HadronicProcessStore: call initialisation of all G4HadronicInteractions.
  - G4HadronicProcess: added check on the final-state secondaries to see if kaon0 or anti_kaon0 are present: if this the case, they are transformed into either kaon0S or kaon0L, with equal (50%) probability.
  - G4EnergyRangeManager: fixed Coverity defect.
  - Models Management:
    - G4HadronicInteractionRegistry: added InitialiseModels() method. G4HadronicInteraction: added InitialiseModel() method.
    - G4VPreCompoundModel, G4VIntraNuclearTransportModel, G4HadronicInteractionRegistry, G4HadronicInteraction: added c++11 keywords, minor cleanup.
- Processes
  - UCN processes: fixed incorrectly calculated MicroRoughness correction to absorption probability. Corrected calculation of refracted velocity after transmission.
- Stopping
  - Added G4MuonMinusAtomicCapture process.
  - G4EmCaptureCascade: added c++11 keywords.
- Utility
  - Fix in G4Nucleus::GetThermalNucleus() in branch on total energy calculation using relativistic energy at higher energies. Addressing problem report #1911.
  - Models Utility:
    - G4KineticTrack: improved decay part by checking whether the sampled decay channel is kinematically below threshold; if this is so, then the sampling is repeated (but no more than a max number of trials).
    - G4GeneralPhaseSpaceDecay: added "throw" to hadronic exception. Addressing problem report #1876.
    - Added new method SetDefinition() to G4Parton class, needed for implementation of quark exchange processes in QGSM.
    - Fixed Coverity defect in G4Fragment.
- Bertini Cascade
  - Added 8- and 9-body final states to K-, K0 and K0b induced reactions.
  - G4EquilibriumEvaporator: in deExcite(), replaced sampling of evaporation spectrum with original Dostrovsky method.
  - G4InuclCollider: fixed case of segmentation-fault in photonuclearOkay(). Addressing problem report #1883.
- De-excitation
  - G4EvaporationChannel, G4EvaporationProbability: improved initialisation of run time members. Use new interface to the sampling of energy. Fixed kinematics and added discrete excitation energy for the residual fragment if the excitation is below maximum known level energy.
  - G4EvaporationProbability: fixed bug in computation of probability density function; use new method FindLevel() in G4NuclearLevelData when sampling kinetic energy of emitted particles; changed interface for sampling method. More detailed grid for probabilities. Use same sampling algorithm as in the pre-compound model (do not interpolate probability). Tuned protons/light ions probabilities, more accurate intergration.
  - G4UnstableFragmentBreakUp: new class helping to decay exotic states which have zero probability to be de-excited via any of normal decays; now residual nucleus is checked and if it has gamma level data, the decay chain is continued by normal decays.
  - G4VEvaporationChannel, G4Evaporation, G4UnstableFragmentBreakUp: implemented improved mechanism of decay of exotic fragments by G4Evaporation (very biased number of protons and neutrons). Sample a decay differently if the residual nucleus is n, p, d, t, He3, He4; this happens if excitation of an initial fragment is high.
  - G4DeexPrecoParameters, Evaporation: use default channel factory.
  - Protect G4DeexPrecoParameters::Dump() to print the parameters only in the master thread.
  - G4NuclearLevelData: added extra methods allowing to access the maximum level energy per isotope in level DB. Added method FindLevel() allowing to find discrete level for any consumer model; added method to access low-edge levels. Full description of floating levels and transition angular momentum and parity; by default old files are downloaded; to enable reading of new files a flag should be changed inside G4DeexPrecoParameters.
  - G4DeexPrecoParameters, G4NuclearLevelData: added new class for parameters. Added full list of pre-coumpound parameters and extra de-excitation ones. Allow to change parameters only from the master thread and only at PreInit or Idle states. Added initialisation printout.
  - G4NucLevel, G4LevelManager, G4LevelReader, G4PhotonEvaporation: changed data structure for the transition data; instead of final energy, index of final level, added multi-polarity of the transition. Substituted asserts by G4Exception.
  - Added interface for correlated gamma emission simulation; added ability to sample correlated gamma emission in G4PhotonEvaporation and G4GammaTransition (not enabled by default).
  - G4ExcitationHandler, G4EvaporationChannel, G4EvaporationProbability, G4NeutronRadCapture: use G4DeexPrecoParameters for initialisation; initialisation is done once at the first event. This will allow for correlated gamma emission. Fixed initialisation in MT mode if physics-list has only radioactive decay. Use recent interface to GetIon().
  - G4ExcitationHandler: allow addition of new evaporation or FermiBreakUp models after the initialisation of the handler. Removed G4Exception when MF model is called, instead increase default limit on excitation energy per nucleon to 100GeV.
  - G4VEvaporation, G4Evaporation, G4VFermiBreakUp, G4FermiBreakUp, G4PhotonEvaporation, G4ExcitationHandler: cleaned up initialisation; added G4VFermiBreakUp pure virtual methods allowing to have alternative models.
  - G4Evaporation: allow change of the channel factory after initialisation.
  - G4NeutronRadCapture: added initialisation of G4PhotonEvaporation.
  - G4KalbachCrossSection: more smooth inverse cross section for transitions of high energy. Use Coulomb barrier from standard parameterisation instead of hard-coded one in computation of probability of a fragment emission; improved neutron cross-section parameterisation below 0.5 MeV.
  - Removed specific GEMCoulombBarrier classes per ion - a general Coulomb barrier is used.
  - Cleaned up code in CoulombBarrier and FermiFragment classes.
  - Added new GEM model G4GEMChannelVI; use model in G4EvaporationGEMFactoryVI.
  - Removed G4PhotonEvaporationOLD and all associated classes. Removed obsolete interfaces in G4VEvaporationChannel, G4VEvaporation, G4VFermiBreakUp and derived classes.
  - G4FermiBreakUpVI, G4FermiFragmentsPoolVI, G4FermiPair, G4FermiFragment, G4FermiDecayProbability, G4FermiChannels: new classes for new Fermi BreakUp model, fully based on nuclear level structure DB. Enabled new model by default in G4ExcitationHandler and G4Evaporation.
  - Added c++11 keywords in many headers.
  - Fixed Coverity defects.
- Elastic scattering
  - G4LMsdGenerator: restored hadronic internal decay scheme allowing for stable decay of the Roper resonances.
  - G4hhElastic: fixed wrong pointer initialization.
  - G4NuclNuclDiffuseElastic: comment out redundant if-statement. Addressing problem report #1876.
- INCLXX
  - Updated to INCL++ v5.3.
  - Added implementation of eta and omega meson production.
  - Better N-induced eta production cross-sections. Modified INCLXXInterface.
  - Few minor fixes.
- Lend
  - Fixes to use G4Random.
  - Improved memory consumption in multi-threaded runs.
  - Fixed compilation warning in GCC with -O3 optimisation option.
- Lepto-nuclear
  - G4MuonVDNuclearModel: increased number of points in energy from 8 to 73; G4ElementData is added instead of 3D array; data class is now static, shared between threads and mu+, mu-. Added ModelDescription() method, code cleanup including removal not used headers. Reduced number of bins for transfer energy from 1000 to 800.
- Particle High Precision
  - Changed default option of GNUmake script; G4PHPDEBUG flag was unintentionally activated.
  - G4ParticleHPPhotonDist: added missing protection against null pointer; G4ParticleHPLabAngularEnergy: removed redundant if-statement; G4ParticleHPThermalScattering: added missing throw statements. Addressing problem report #1876.
  - Introducing G4PARTICLEHPDATA as default base name for data modules.
  - As in the previous release, the mode "PHP_AS_HP" is the default (so there is no need to set this environmental variable because it is set automatically); users can change this behaviour by setting the environment variable of "DO_NOT_SET_PHP_AS_HP" before compilation. Fixed problem of uninitialisation of cache in G4ParticleHPContAngularPar happening for "DO_NOT_SET_PHP_AS_HP" mode; fixed case of infinite loop. Fixed also problem of divide by zero error BuildByInterpolation().
  - Fixed wrong residual in case of He3 projectile. Addressing problem report #1906.
  - Fixed problem of divide by zero error in G4ParticleHPVector::ThinOut().
  - Introduced cache of cross-section in GetIsoCrossSection().
  - Added protection with flag G4PHP_DO_NOT_ADJUST_FINAL_STATE to G4ParticleHPInelasticBaseFS.
  - Fixed warning messages from clang 3.8/3.9.
  - Fixed Coverity defects.
- Parton-String
  - Reverted implementation to "stable" versions for both Fritiof (FTF) and Quark-Gluon-String (QGS) models. For FTF, the model is similar to the one in G4 10.2.p02, except for the treatment of the excited nuclear remnant, in order to produce hadronic showers similar to those in G4 10.1.
  For QGS, this means that the model is very similar to the one in G4 10.2, which in turn was very similar to the one in G4 10.1.
  - In G4VPartonStringModel, instead of having the string creation loop (with max 20 attempts) and the string fragmentation loop (with max 100 attempts) separated, there is now one single loop for string creation and fragmentation, with max 1000 attempts, and in the case of failure a just-warning exception is thrown. Also, increased the number of max attempts to fragment strings from 10 to 100 in G4ExcitedStringDecay.
- Pre-equilibrium
  - G4PreCompoundModel: changed non-equilibrium condition to switch to de-excitation; this allows to perform pre-equilibrium emission for light nuclei.
  - Migrated classes to use G4DeexPrecoParameters; removed obsolete class G4PreCompoundParameters.
  - G4GNASHTransitions: fixed problem in computation of probability.
  - Use nullptr and define internal const as static const.
  - G4VPreCompoundFragment, G4PreCompoundEmission, G4PreCompoundFragment, G4PreCompoundNucleon: use Coulomb barrier from standard parameterisation instead of hard-coded one in computation of probability of a fragment emission.
  - G4PreCompoundEmission, G4VPreCompoundFragment, G4HETCFragment, G4PreCompoundIon and G4PreCompoundNucleon: changed identifier names.
  - G4VPreCompoundFragment, G4PreCompoundFragment: minor performance improvement.
- QMD Reaction
  - Set type of de-excitation channels to 'combined'.
- Radioactive Decay
  - G4RadioactiveDecay: renamed several methods and variables to more closely represent their meaning. In DoDecay(): added protection for zero pointer in case of missing decay channel. Added new method AddDeexcitationSpectrumForBiasMode(). In BuildPhysicsTable(), removed initialization of atomic de-excitation to avoid overwriting its initialization in EM. Throw fatal exception if initialization not done somewhere. Initialisation should be now done in physics-lists.
  - Added production of gamma and electron spectra from de-excitation of excited levels in the biased mode.
  - Removed obsolete class G4RIsotopeTable.
  - G4NuclearDecayChannel, G4RadioactiveDecay, G4RadioactiveDecaymessenger: switch to use new gamma level data.
  - G4RadioactiveDecay: enabled reading of floating levels and entry as unique nuclides into decay tables.
  - Allow nuclides with floating levels to decay in G4RadioactiveDecay and all specific decay channel classes.
  - G4NuclearDecay: added Get() method for floating level.
  - Removed obsolete class G4NuclearDecayChannel and all classes based on it: G4AlphaDecayChannel, G4BetaMinusDecayChannel, G4BetaPlusDecayChannel, G4ITDecayChannel, G4KshellECDecayChannel, G4LshellECDecayChannel, G4MshellECDecayChannel and G4ProtonDecayChannel.
  - G4BetaMinusDecay::SetUpBetaSpectrumSampler: added missing initialization of spectrum sampler; added protection in DecayIt() for spectrum sampler to avoid cases of unitialized data. In SetUpBetaSpectrumSampler(), corrected array creation.
  - G4RadioactiveDecayRate: fix in copy-constructor to restore precision level in cout.
  - G4RadioactiveDecay::LoadDecayTable: fixed unexpected behavior when decay file is not found.
  - Fixed bug in G4RadioactiveDecay::LoadDecayTable(), to ignore IT decay when no entries are found in the database; fixed case of segmentation-fault due to attempted deletion of empty decay table.
  - Requiring new data set RadioactiveDecay-5.1.

### Intercoms

- G4UIcontrolMessenger: added new commands strif, strdoif, ifBatch, ifInteractive, doifBatch and doifInteractive. Improved command `/control/getVal`.
- G4UIcommandTree: sdded GetFirstMatchedString() public method.

### Interfaces

- Added a new command /gui/defaultIcons to enable/disable default icon toolbar.
- G4UIQt:
  - Fix a bug on Qt5.7 with an extra whitespace (at the end of "search" in help tree + at the end a the command line)
  - Added completion widget.
  - Added a default icon toolbar.
  - Moved eventFilter init at sessionStart() to avoid bad init state in the help tree and events to be sent twice or more.
  - Prevent potential crash on Windows by protecting master G4coutDestination assignment with G4MULTITHREADED guard.
  - Fixed bug in `/gui/defaultIcons` command.
  - Removed (multiple) scene tree from a tab to put it in a single, auto-update widget.
  - Removed (multiple) viewer properties from a tab to put it in a outside dialog.
  - Removed (multiple) pick infos from a tab to put it in a outside dialog.
  - Fixed bad signal/slot connection for the filter of the scene tree.
  - Changed pick icon.
  - Renamed GetSceneTreeComponentsTBWidget() to GetSceneTreeWidget().
  - Fixed a problem when issuing `/run/beamOn 1`; the parameter was not taken in account in the icon toolbar.

### Materials

- G4DensityEffectData, G4IonisParamMat: fixed density effect parameters corrections for the case when NIST mean ionisation potential is not equal to that parameter in Shternheimer table.
- G4NistElementBuilder, G4NistMaterialBuilder: added access to the mean ionisation potential; put liquid water in front of the list of NIST materials (index=0), so pure materials can be easier accessed via atomic number (index = Z).
- Added new class G4AtomicShells_EADL which extends shell data up to Z=120.
- G4MaterialPropertiesTable: moved complex methods from inline to source.
- G4UCNMicroRoughnessHelper: all methods declared as const.
- G4NistManager, G4NistMaterialBuilder, G4NistElementBuilder: added new const methods FindElement(), FindMaterial() and FindSimpleMaterial(), for possible run-time use in MT mode.
- G4Material: avoid deletion of G4MaterialPropertyTable.
- G4Element: added method GetZ_asInt().
- G4AtomicShells, G4SandiaTable: substituted asserts by G4Exception.
- G4NistMaterialBuilder: reviewed and updated BioChemicalMaterials() method, which now instantiate two type of materials: G4_XXXXX (molecule in its free state) and G4_DNA_XXXXX (molecule, considering atoms lost in bonding).
- Introduced G4ExtendedMaterial and G4VMaterialExtension for specific extensions to G4Material; added G4CrystalExtension, derived class of G4ExtendedMaterial for the description of crystals.
- Introduced G4CrystalUnitCell with the crystalline unit cell parameters, G4AtomicFormFactor for the calculation of the form factor and G4AtomicBond for G4CrystalUnitCell.
- Fixed incorrectly calculated index for MicroRoughness lookup table in G4UCNMaterialPropertiesTable. Fixed incorrectly calculated MicroRoughness amplitude in G4UCNMicroRoughnessHelper.
- Fixed Coverity defects.
- Code cleanup; adoption of nullptr, use of const/static.

### Parameterisations

- GFlash: removed redundant condition in GFlashHitMaker::make(). Addressing problem report #1876.

### Particles

- Updated properties of particles according to PDG-2015.
- Introducing floating level base to G4Ions and related classes. Migrated G4NuclideTable to the new floating level base scheme; temporarily disable new scheme for G4IsotopeMagneticMomentTable.
- Fixed G4IonTable::GetIon() with non-zero level.
- Changed default life of ion and hyper nucleus from -1 to 0.
- Fix G4DynamicParticle in case that difference between the PDG mass and dynamical mass is very small (<10 eV).
- Skip check of daughter mass and parent mass in case of one body decay in G4VDecayChannel::FillDaughters(). Skip check for one body decay in G4VDecayChannel::IsOKWithParentMass().
- Updated floating level base for G4Ions, G4IonTable and related classes. Ground-level ion with floating level base now has a name with its floating level base.
- Minor Fix for G4PhaseSpaceDecayChannel.
- Removed redundant check in G4PDefSplitter::UseWorkArea(). Addressing problem report #1876.
- Changed the way of deleting G4PrimaryVertex and G4PrimaryParticle objects to avoid stack overflow for very large number of primary vertices or primary particles.
- Introduced new class G4NucleiPropertiesTableAME12, used by default in G4NucleiProperties.
- Added G4MuonicAtom class, along with minimal changes to G4IonTable to allow creation of muonic atoms.
- Added decay channel placeholders for G4MuonicAtom DIO and nuclear capture physics.
- Fixed bug in the case of two or more levels have a same excitation energy.
- Removed obsolete G4PDefSplitter class, replaced by G4PDefManager, concrete class with implementation. This addresses initialisation problems of static data previously in template. Moved G4PDefData::initialize() to source. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.
- Improved error message when potentially using a wrong version of the ENSDFSTATE data-set.
- Requiring new data-set G4ENSDFSTATE-2.1.
- Fixed Coverity defects.

### Persistency

- GDML:
  - Added ability to automatically export the names of sensitive detectors as auxiliary information.
  - Added ability to import and export scaled shapes. Extended GDML schema by adding "scaledSolid" tag supporting scaled shapes.
  - New GDML schema version 3.1.4 (files: gdml.xsd, gdml_solids.xsd).
  - Fixed check for correctness of the units for divisions along angular axis.
  - Replaced obsolete call to 'Invisible' with 'G4VisAttributes::GetInvisible()' in G4GDMLReadStructure::GetWorldVolume().
  - Fixed check for correctness of units for replicas in case of angular axis. Addressing problem report #1912.
- mctruth:
  - Fixed typo in G4PersistencyCenterMessenger::GetCurrentValue() in selection of verbose mode. Addressing problem report #1876.

### Physics lists

- Replaced direct use of 'aParticleIterator' with GetParticleIterator().
- Builders:
  - Disabled multiple-scattering at post-step in OrderingParameterTable.
- Constructors:
  - electromagnetic:
    - Added SetScintillationTrackInfo() method to G4OpticalPhysics with associated command in G4OpticalPhysicsMessenger. Fixed memory leak in G4OpticalPhysicsMessenger.
    - Partial fix for allowing calls to optical UI commands in "PreInit" state. Partially addressing problem report #1832.
    - Added flag and command for whether or not to call InvokeSD() method of G4OpBoundaryProcess.
    - Fixed G4Exception message in G4OpticalPhysicsMessenger.
    - G4EmStandardPhysics_option3, option4: added process of e+e- pair creation by e+ and e-; enabled lateral displacement for muons and hadrons.
    - G4EmStandardPhysicsGS: set default range factor to 0.1.
    - G4EmStandardPhysicsWVI: changed option set.
    - G4EmStandardPhysics_option4: disabled lateral displacement beyond safety.
    - DNA and ModelActivator constructors: corrected model/process names; adjusted high energy threshold of solvation (kill) in respect to the energy range of the elastic model. Added G4DNAElectronSolvation to all DNA constructors.
    - Updated G4EmDNAPhysics_option5 and G4EmDNAChemistry.
    - Updated G4EmDNAPhysics_option7 constructor.
    - G4EmDNAPhysics: added G4EmParameters::Instance()->SetDefaults(); Reconfigured activation of atomic deexcitation.
    - In all EM builders only one explicit constructor is left.
    - Livermore and Penelope physics defined below 1 TeV (default 100 TeV). Opt3, Livermore and Penelope enable sampling of lateral displacement for hadrons.
    - G4EmDNAPhysicsActivator: new class for DNA models configuration. Introduced new methods for DNA configuration per particle type. G4EmModelActivator: take out DNA physics and move it to the new class G4EmDNAPhysicsActivator. Use Uehara model with chemistry. Corrected elastic process name for ions.
    - G4EmModelActivator: added configuration of EM physics per geometrical region via UI commands.
    - G4EmModelActivator: added SS physics-list per region; fixed PAI model activation (disabled PAI for ions). Added initialisation of atomic deexcitation for radioactive-decay (also for the cases when radioactive-decay is registered before EM physics or is the only process).
    - G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysicsGS, G4EmLivermorePolarizedPhysics, G4EmStandardPhysicsWVI: use same style for names as for EM physics constructors.
    - Replaced direct use of 'aParticleIterator' with GetParticleIterator().
    - Fixed Coverity defects.
  - decay
    - Added G4UnknownDecayPhysics constructor.
    - G4RadioactiveDecayPhysics: enabled atomic de-excitation by the call to EM parameters in ConstructProcess() method. Enabled reading from new gamma evaporation files, enabled Auger cascade, do not apply cuts. Fixed initialisation when radioactive decay is registered before EM physics or is the only physics constructor.
    - Added G4MuonicAtomDecayPhysics constructor to enable decay of muonic atoms.
    - Replaced direct use of 'aParticleIterator' with GetParticleIterator().
  - factory:
    - Use G4_REFERENCE_PHYSCONSTR_FACTORY so that registry works in the case of static library builds, even without forcing linker to load whole library (which is not possible for MS Visual Studio). Implemented G4_REFERENCE_PHYSCONSTR_FACTORY_NS in case physics constructor lives in a namespace.
  - gamma_lepto_nuclear:
    - G4EmExtraPhysics, G4EmMessenger: added rare high energy EM processes, disabled by default but may be enabled via UI command or C++ interface.
  - hadron_inelastic:
    - G4HadronPhysicsFTFP_BERT and _HP: changed the transition energy region between FTFP and BERT model to be between `[3, 12] GeV` (instead of `[4, 5] GeV`) for pions, kaons, protons and neutrons (for hyperons, left as it has always been, i.e. `[2, 6] GeV`).
    - G4HadronPhysicsQBBC: use de-excitation for the Bertini cascade.
  - ions:
    - G4IonINCLXXPhysics: corrected transition regions between INCLXX and FTF, now 3 GeV/nucleon.
  - limiters:
    - G4StepLimiterPhysics: added option which allows to apply the step limit to all particles (by default the step limit is applied to charged particles only).
    - G4GenericBiasingPhysics: added methods to configure physics lists to activate parallel geometry functionality introduced in generic biasing.
    - Added G4FastSimulationPhysics to configure physics list for activating fast simulation. It uses the G4FastSimulationHelper utility.
- Lists:
  - FTFP_BERT_TRV: Switch on the low-mass diffraction dissociation used in G4HadronHElasticPhysics. Use GS multiple scattering with the most precise "error-free" stepping instead of the default (Opt0), for the purpose of studying the impact of multiple scattering on hadronic showers.
  - Moved code to be inline in G4RegisterPhysLists so that it gets compiled as part of the G4PhysListRegistry compilation unit. This ensures that all the physics lists declared to the registry are referenced by it such that the linker will include them if libraries are built statically.
  - Added G4_REFERENCE_PHYSLIST_FACTORY[_NS] for pulling in lists from static libraries. Fixed issue where G4PhysListRegistry didn't properly exit if a requested extension didn't exist in its list.

### Run

- New functionalities for MT:
  - Renamed all MT related exceptions to have new code matching pattern.
  - Use scoped enum for G4MTRunManager::WorkerActionRequest and added PROCESSUI action.
  - Added G4MTRunManager::GetNumberActiveThreads() method.
  - Use new class G4MTBarrier to implement synchronization points.
  - Introduced skeleton for new functionality to force workers to execute UI commands w/o beamOn. Introduced new UI command: `/run/workersProcessCmds` to trigger execution of UI commands by workers even without a `/run/beamOn`; C++ API is G4MTRunManager::RequestWorkersProcessCommandsStack().
  - When workers are terminated they execute the UI commands issued after the last /run/beamOn.
  - G4WorkerRunManager: minor printout improvement.
  - G4MTRunManager: GetNumberOfActiveThreads() returns size of the threads pool.
  - Grouped #include statements in G4WorkerThread.
- Other changes (non MT related):
  - Added handling of multiple actions to be instantiated and handled by user code. Added G4MultiRunAction class to allow for multiple run actions in a single job; added G4MultiPrimaryAction to allow for multiple user-primary generation actions in a single job.
  - Geant4 is now in G4State_Init state while initialization phase; enforced also in G4GunManagerKernel.
  - Fixed potential memory leak in G4RunMessenger.
  - Disabled multi-scattering during post-step in G4PhysicsListHelper. Fixed default process ordering parameters for G4UnknownDecay that should not have AtRest.
  - G4AdjointSimManager: correction in the use of run actions to avoid infinite loop during an adjoint simulation.
  - G4AdjointPrimaryGenerationAction: removed 3 times splitting of primary adjoint gamma.
  - Modified G4AdjointSimManager, G4AdjointPrimaryGeneratorAction and G4AdjointSimMessenger for the implementation of splitting in reverse MC tracking.
  - Fixed initialisation of G4UnitsTable and G4UnitDefinition to be properly shared by all threads. Addressing problem report #1869.
  - Removed redundant check in G4VUPLSplitter::UseWorkArea(). Addressing problem report #1876.
  - Added method GetParticleIterator() in G4VPhysicsConstructor and in G4VUserPhysicsList; make these methods const and protected in both classes. Moved static GetInstance() method in G4RNGHelper to be not inline. Moved initialisation of G4VUPLSplitter thread-local data to be inline along with generic template type. Removed explicit initialisation of thread-local data from workspaces, as now happening inline in G4TWorkspacePool. Fixing compilation/linking errors on clang-3.9 and XCode-8 on MacOS.
  - Removed #define for 'aParticleIterator' in G4VPhysicsConstructor header. Moved #define for 'theParticleIterator' to G4VUserPhysicsList source.
  - G4GunManagerKernel: G4Exception is replaced with G4cout when the world volume is assigned at PreInit or Idle state.
  - Create unique names with logical-volume pointer for G4MultiSensitiveDetector and avoid to register target sensitive-detector implictly. Addressing problem report #1908.

### Track & Tracking

- Change G4VUserTrackInformation pointer in G4Track to mutable and setters to be const-methods. This allows the user to set his/her G4VUserTrackInformation pointer without casting G4Track const pointer.
- New G4Multi{Stepping,Tracking}Action classes to allow for multiple user-actions in the same job.
- Modified G4AdjointTrackingAction and G4AdjointSteppingAction for the implementation of splitting in reverse MC tracking.
- G4AdjointSteppingAction: removed print information on the weight, when stopping reverse tracking for the implementation of the splitting of the reverse MC tracking.

### Visualization

- Removed (multiple) scene tree/pick and viewer parameters from a tab to put it in a single, auto-update widget.
- Fixed a bad signal/slot connection for the filter of the scene tree.
- Management
  - Fixed the GetColour() problem.
  - MT mode: moved flush to end of visualization thread; this is so that all trajectories are flushed from the thread before switching back to master thread. Also fixing picking in MT mode.
  - Introduced UI command `/vis/viewer/interpolate`.
  - Added some calls to SetView for security.
  - Inhibited use of BeginRun, BeginEvent, EndEvent and EndRun when vis is not enabled, for example after /vis/disable. In particular this prevents the start of the vis thread in multi-threading mode.
  - G4VisExecutive: registered drawing and filtering by encountered volume.
  - G4VisCommandsSceneAdd: removed incorrect check on existing models in command `/vis/scene/add/volume`. It was preventing parallel worlds being added individually.
  - Fixed mistake in introductory vis manager message.
  - Improved error tracking: introduced error code to track error conditions in G4VVisCommand; tracked error conditions for `/vis/open` and `/vis/drawTree` in G4VisCommandsCompound.
  - Improved `/vis/viewer/save`.
  - Use SetWorldVolume() for OriginVolume drawing and filtering.
  - Code cleanup in G4VisCommandsSceneHandler.
  - Fixed Coverity defects.
  - Taking account of new flag `IsForceDrawingStyle`.
  - Changed defaults of some command parameters to reflect obvious meaning in the command name.
  - Minor improvements to scale and axes.
  - Built-in scorer now uses G4StatDouble instead of G4double for hits maps.
  - Implemented auxiliary edge drawing for G4Orb, G4Sphere, G4Torus and G4Ellipsoid, unless otherwise specified.
  - G4VViewer: introduced TouchableSetVisibility() and TouchableSetColour(). Introduced SetTouchable() to set the touchable for `/vis/touchable/set/...` commands.
  - G4Scene: replaced warning reference to obsolete. G4VisAttributes::Invisible to G4VisAttributes::GetInvisible().
  - /vis/viewer/save and /vis/viewer/interpolate: default filename extension changed to .g4view.
  - Removed duplicate operator<<.
  - Moved Vis Attributes Modifiers (VAMs) back to G4ModelingParameters.
  - Replaced all r-value references, e.g., `auto&&`, with simple l-value references, e.g., `const auto&`.
  - GetColour()/GetColor() no longer take an argument.
  - Make sure applicable vis attributes are obtained.
  - G4VSceneHandler: in RequestPrimitives(), tidied and improved error message for the case that a polyhedron pointer is null.
  - G4VisManager: fixed inappropriate warning message in MT batch mode.
  - Changed default number of line segments per circle from 24 to 72.
  - Fixed display at end of run in Qt/Extra refresh for auto-refresh viewers. Fixed same problem in X and Xm.
  - Fixed the GetColour() problem.
  - Limited WARNING about up-Vector to first time only.
- Modeling:
  - Introduced drawing and filtering by encountered volume. i.e., `/vis/modeling/trajectories/create/drawByEncounteredVolume`, `/vis/filtering/trajectories/create/encounteredVolumeFilter` and their associated commands. This selects only by a single string, the physical volume name. If there are more than one physical volumes with that name then any trajectory encountering any one of those volumes will be selected. If the user sets more than one physical volume name (by using the set command more than once) the trajectory will be selected if it encounters either of those volumes and which of the attributes (e.g., colour) associated with those volumes is chosen is arbitrary. A more comprehensive facility would allow the user to select by encountered touchable, i.e., by the full path and copy numbers of the physical volume - but that is a job for the future if a use case arises.
  - Added specific arguments to LocateGlobalPointAndSetup() to handle multi-threading mode in G4TrajectoryDrawByOriginVolume::Draw() and G4TrajectoryOriginVolumeFilter::Evaluate().
  - G4TrajectoryModelFactories: added G4TrajectoryDrawByEncounteredVolumeFactory.
  - G4TrajectoryFilterFactories: added G4TrajectoryEncounteredVolumeFilterFactory.
  - Added new files and classes: G4TrajectoryDrawByEncounteredVolume and G4TrajectoryEncounteredVolumeFilter.
  - G4ModelColourMap: sdded new access function GetBasicMap().
  - G4ModelingParameters: added VisAttributesModifier set commands.
  - Tidied uo G4TrajectoryDrawByOriginVolume.
  - G4TrajectoryDrawByOriginVolume: tidied #include statements.
  - Replaced TouchedVolume by EncounteredVolume in trajectory drawing and filtering. Functionally identical.
  - Taking account of new flag `IsForceDrawingStyle`.
  - Improved safety. Improved comments.
  - Moved Vis Attributes Modifiers (VAMs) back from G4ViewParameters.
  - G4PhysicalVolumeModel: use static to ensure a plausible visualisation attributes pointer.
  - G4ModelingParameters.cc: improved output of PVNameCopyNoPath.
  - Updated according to changes in graphics_reps module.
  - G4PhysicalVolumeModel: improved efficiency for the case that there are no vis attributes modifiers. Added new `operator<<()`.
  - Changed default number of line segments per circle from 24 to 72.
  - G4ArrowModel: default lines per circle = 6.
- FukuiRenderer
  - GetColour()/GetColor() no longer take an argument.
  - Make sure applicable vis attributes are obtained.
  - Fixed GetColour() problem.
- HepRep
  - GetColour()/GetColor() no longer take an argument.
  - Make sure applicable vis attributes are obtained.
  - Restored color to trajectories, avoid two different OpenGL version in case of Qt+X.
  - Fixed GetColour() problem.
  - Fixed Coverity defects.
- OpenGL
  - Fis a color problem on transparent volumes
  - Fix the gray/white/black screen when launching a new OGLQt viewer on some configurations.
  - Xm: Ensure all items get flushed to screen, even when 'eventsDrawInterval' is set greater than 1.
  - Fixed some inconsistencies in `/vis/ogl/set/eventsDrawInterval` and `/vis/ogl/set/displayListLimit` commands.
  - Fixed bug in picking output text.
  - G4OpenGLXViewer: Added thread awareness regarding glXMakeCurrent.
  - Fix for notifying multiple OGL X views.
  - Fix in G4OpenGLViewer::getRealPrintFilename() so that files can easily be referenced in alphanumeric order.
  - CompareForKernelVisit(): tested for total visualization attributes modifiers instead of just for size.
  - Fixed typo for macro G4CONDITIONBROADCAST.
  - Introduced `/vis/ogl/flushAt` command.
  - Adapted to the move of Vis Attributes Modifiers back to G4ModelingParameters.
  - Added flag to handle scene tree interaction better.
  - Re-instated G4OpenGLStoredQtViewer::CompareForKernelVisit().
  - Uses G4VViewer::TouchableSetVisibility() and TouchableSetColour().
  Added calls to SetTouchable().
- GetColour()/GetColor() no longer take an argument.
- Make sure applicable vis attributes are obtained.
- Go back on the glCheckFramebufferStatus(); commented out this command.
- Fixed problem of gray/white/black screen when launching a new viewer.
- Fixed to colour problem with transparent volumes in DrawDisplayLists.
- Restored color to trajectories, avoid two different OpenGL version in case of Qt+X.
- Code cleanup.

- OpenInventor
  - G4OpenInventorXtExaminerViewer: designed new icons (XPM) for the "Extended Pick Mode" and "Pick Reference Trajectory" buttons.
  - Modified the mouse-over-trajectory output to make it more clear.
  - Improved diagnostics for Bookmark file handling.
  - New approach for determining distance along the reference path, using element centers instead of bounding boxes. Solves problems with spurious bounding box warnings and incorrect distance values.
  - G4OpenInventorXtExtended & G4OpenInventorXtExtendedViewer: suppressed some unwanted diagnostic output.
  - Fixed setting of transparency type (SoGLRenderAction::SORTED_OBJECT_ADD).
  - Fixed dispatching.
  - Fixed Coverity defects.
- Tree
  - G4ASCIITreeSceneHandler: prevent multiple writing of the informational header on the output file.
  - Changed default verbosity to 1 (shows logical volume names).
  - Improved printing and guidance.
- VRML
  - GetColour()/GetColor() no longer take an argument.
  - Make sure applicable vis attributes are obtained.
  - Fixed GetColour() problem.
- Externals
  - Fixed compilation warning in gl2ps for gcc -O3.
- XXX
  - CompareForKernelVisit(): tested for total visualization attributes modifiers instead of just for size.

### Environments

- G4Py:
  - Updated interfaces for release 10.3.
  - Modified CMake scripts for unit/integration tests with CTest.

### Data sets

- New low-energy data set version, G4EMLOW-6.50:
  - Added epics2014 files to 'livermore' module.
  - Updated MicroElec files for faster performance.
- New data files for nuclides properties G4ENSDFSTATE-2.1:
  - Added missing data for AC225, SI25, 193RN, TE140.
  - Added floating level information as -,+X,+Y,+Z,... string.
  - Set Spin of excited levels as in PhotonEvaporation Database.
- New data set version PhotonEvaporation-4.3 for nuclear de-excitation data:
  - New data files updated with floating levels, multipolarity and mixing ratio data. New files are in Z*.txt files, documented in README-LevelGammaData_Extended.
  - Reformatted z* files in 'correlated_gamma' directory. Corrected few data in these files. Added explode files z*.a* from z* files. Corrected few gamma intensities in z6.a12, z16.a33, z17.a42, z34.a76, z38.a95, z38.a97, z41.a88, z56.a129 and z74.a187. Corrected order of levels.
- New data set version for radioactive-decay processes, G4RadioactiveDecay-5.1:
  - Added KM coefficients for e- capture and taken from DDEP data.
  - Added floating levels (X, Y, Z, etc.).
  - Correction to Fe55.
  - Corrected 0 lifetime for Ac225.
  - Correction in Mn54 z25.a54. Addressing problem report #1852.
  - Corrections for some daughter levels of U235,TH232,PA233,U239.
  - Added proton decay for excited levels of 13N for the simulation of beta-plus proton delayed decay of 13O.
  - Add neutron decay for excited levels of 16N and 17O in order to simulate the beta-minus neutron delayed decay of 16C and 17N.
- New optional data set, G4TENDL-1.3 for incident proton data:
  - Compressed version of the library.
  - Added information of source (ENDF/B-VII.1 or TENDL-2014) for each file.
  - Fixed problem to Deuteron/Inelastic/F01/1_3_Hydrogen.z.
  - Added carbon(C12 and C13) data from ENDF/B-VII.1(Proton) and TENDL-2014(Deuteron, Triton, He3 and Alpha).
  - Deleted F37 directories, "F37" is not defined in ParticleHPInelastic.
  - Added remark for unsupported projectile-target combinations in README. Fixed minor error in Proton/README and Triton/README.
  - Fixed the reference of ENDF/B-VII.1.

### Examples

- Updated reference outputs, macros and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- Replaced direct use of 'aParticleIterator' with GetParticleIterator().
- advanced
  - air_shower
    - Replaced usage of std::log() by G4Log().
    - Now using modular physics lists.
    - Removed drawing of step points from visualisation macro.
    - Explicit set of sensitive-detector to manager.
    - Fixed compilation warning for unused variable in UltraDetectorConstruction.
    - Updated build scripts.
  - amsEcal
    - PhysListEmStandard: use G4EmParameters.
  - brachytherapy
    - Added comparison to reference data for the Flexisource.
    - Added Flexisurce and TG186 reference source; added method to calculate relative dose rate to compare to reference data.
  - ChargeExchangeMC
    - Removed icons.mac, now automatically loaded.
  - composite_calorimeter
    - Replaced usage of std::exp() by G4Exp().
    - Fixed issues with a char* length.
    - Removed icons.mac now automatically loaded.
  - gammaknife
    - Use G4StatDouble instead of G4double in maps.
    - Modified macros for correct scorer rotation.
  - gammaray_telescope
    - Extended physics list to give the possibility to handle polarized gamma-rays.
    - Explicit set of sensitive-detector to manager.
  - hadrontherapy
    - Added new modulator class.
    - Fixed bug, addressing problem report #1879.
    - Explicit set of sensitive-detector to manager.
  - human_phantom
    - Explicit set of sensitive-detector to manager.
  - lAr_calorimeter
    - Removed icons.mac, now automatically loaded.
  - microbeam
    - Replaced usage of std::exp() by G4Exp().
    - Relaxed conditions on max step size and magnetic field parameters in DetectorConstruction.
    - Updated analysis script.
    - Fixed compilation warnings on clang compiler.
  - microelectronics
    - Fixed multiple-scattering definition in PhysicsList.
    - Removed icons.mac, now automatically loaded.
  - nanobeam
    - Replaced usage of std::exp() by G4Exp().
  - radioprotection
    - Explicit set of sensitive-detector to manager.
  - underground_physics
    - DMXPhysicsList: migrated EM physics to G4EmParameters.
    - Explicit set of sensitive-detector to manager.
  - xray_fluorescence
    - Explicit set of sensitive-detector to manager.
- basic
  - B1
    - vis.mac: addition to make "Envelope" transparent blue.
  - B2
    - Explicit set of sensitive-detector to manager.
    - Removed icons.mac, now automatically loaded.
  - B3
    - Explicit set of sensitive-detector to manager.
    - Removed obsolete B3b/exampleB3.cc.
  - B4
    - Activated merging of ntuples.
    - Added c++11 features.
    - Removed analysisManager->SetFirstHistoId(1); setting and added meaningful names to histograms.
    - Explicit set of sensitive-detector to manager.
    - Removed icons.mac, now automatically loaded.
  - B5
    - Activated merging of ntuples.
    - Fix in gui.mac to replace undefined /globalField/setValue by /B5/field/value.
    - Updated B5ActionInitialization: event action is instantiated also on master thread; needed for ntuple merging.
    - Added c++11 features and code improvements.
    - Fixed a missing /gui/defaultIcons command in vis macro.
- extended
  - analysis
    - AnaEx01: removed Hbook. Activated merging of ntuples.
    - Updated main programs according to basic examples.
  - biasing
    - biasing/GB03
      - Explicit set of sensitive-detector to manager.
    - biasing/GB05
      - New example illustrating a technique that uses physics cross-sections to determine the splitting [killing] rate in a shielding problem. Applied here for neutrons.
    - biasing/GB06
      - New example demonstrating the use of parallel geometries in generic biasing, on a classical shield problem, using geometry-based importance biasing.
    - biasing/ReverseMC01
      - Modification in RMC01AnalysisManager to loop over the list of tracks reaching the external surface. Corrected computation of the mean and error of energy deposition.
      - Modified physics-list to make use of the processes G4AdjointForcedInteractionForGamma and G4eAdjointMultipleScattering.
      - Use GetParticleIterator() method in place of 'theParticleIterator'.
  - electromagnetic
    - electromagnetic/TestEm0
      - PhysicsList: use G4EmParameters.
      - RunAction: fixed computation of Tmax.
      - PhysicsList: removed hardcoded enabling of CSDA range table.
      - Added UI commands enabling print of list of EM parameters and enabling computation of CSDA range in TestEm0.in input macro.
      - DetectorConstruction: do not re-create geometry when changing material.
    - electromagnetic/TestEm1
      - PhysicsList::AddRadioactiveDecay(): set like threshold to 0.1*picosecond in G4NuclideTable. Updated radioactive.mac. Use G4EmParameters.
      - Added decayinfly.mac macro.
      - Modified colors in vis.mac.
      - PrimaryGeneratorMessenger: restore command SetDefaultKinematic. Updated all macros.
      - PhysicsList: enabling of CSDA range computation is moved to UI command in input macro TestEm1.in
      - DetectorConstruction: do not re-initialise geometry when changing box size.
    - electromagnetic/TestEm2
      - PhysicsList: use G4EmParameters.
    - electromagnetic/TestEm3
      - PhysicsList: use G4EmParameters.
    - electromagnetic/TestEm4
      - Modified EventAction, adding call to AddEdep().
    - electromagnetic/TestEm5
      - EventAction: corrected filling of histogram 1.
      - PhysicsList: use G4EmParameters.
      - Removed geant3 sub-directory.
      - Corrected typo in Run.cc.
    - electromagnetic/TestEm7
      - Fix in c2_functions.
      - PhysicsList: removed local PhysListEmStandardSS and usage of G4EmProcessOptions.
      - PhysListEmStandard: use G4EmParameters.
      - DetectorConstruction, DetectorMessenger: fixed warnings for incorrect calls to kernel, updated UI commands. Updated macro files accordingly.
      - Renamed MaxTally constant in kMaxTally.
      - Fixed compilation warnings on gcc-6.1.
    - electromagnetic/TestEm8
      - TestParameters, Run, PrimaryGeneratorAction, PrimaryGeneratorMessenger: reorganized printout of beam particle; use energy smearing as an addition of noise, so smeared noise should be added in units of energy.
      - Run: fixed RMS computation by G4StatDouble.
      - Explicit set of sensitive-detector to manager.
    - electromagnetic/TestEm9
      - Added validation of EM physics per geometrical region in TestEm9.in macro.
    - electromagnetic/TestEm10
      - Major example revision & clean-up: simplified class names; refactored detector construction & its messenger classes; revised scoring, removed unused code and replaced histograms with standard calls to g4tools; added StackingAction which accounts XTR gamma, all gamma and all e- spectra; changed to a modular physics list and introduced TransitionRadiationPhysics builder; clean-up of the primary generator action; added test_suite.sh script.
      - DetectorConstruction, DetectorSimpleALICE: fixed run-time warning by properly defining cuts per region.
    - electromagnetic/TestEm11
      - PhysicsList: added radioactiveDecay process; use G4EmParameters.
      - Removed G4DiscreteScattering.
      - Run: compute energy deposit per absorber.
      - PrimaryGenerator: restored SetDefaultKinematic().
      - Updated macro radioactive.mac.
      - Added alpha.mac and ionC12.mac input macros.
    - electromagnetic/TestEm12
      - PhysicsList, PhysListEmStandard: use G4EmParameters.
      - PhysicsList: moved enabling of the CSDA flag in order to guarantee correct flags setting.
      - RunAction: added dump of EM parameters.
      - Set default number of threads 4 in main().
      - DetectorConstruction, DetectorMessenger: allow to change number of layers only in the PreInit state; do not clean and reinitialise geometry when changing sphere radii.
    - electromagnetic/TestEm13
      - PhysicsList: use G4EmParameters.
      - Removed geant3 sub-directory.
    - electromagnetic/TestEm14
      - PhysicsList: use G4EmParameters.
      - Removed geant3 sub-directory.
    - electromagnetic/TestEm15
      - PhysicsList: use G4EmParameters.
    - electromagnetic/TestEm16
      - Removed icons.mac, now automatically loaded.
    - electromagnetic/TestEm17
      - Removed obsolete EventAction, EventActionMessenger classes.
      - HistoManager: fixed violation report in automatic checking of coding guidelines.
  - electromagnetic/TestEm18
    - PhysListEmStandard: use G4EmParameters.
- eventgenerator/pythia/decayer6
  - Adding extern keyword to data declarations to fix problem on MacOS.
- exoticphysics/channeling
  - Removed GPS initialisation.
- exoticphysics/phonon
  - Avoid setting random seed in run.in to allow for reproducible output files.
  - Added clang/icc specific references and switch depending on compiler.
  Corrected selection of caustic reference on MacOS in MT mode; set compiler ID to AppleClang on Mac.
- Explicit set of sensitive-detector to manager.

- exoticphysics/ucn
  - Removed icons.mac, now automatically loaded.
- field/field01
  - Replaced F01PhysicsList with FTFP_BERT with G4StepLimiterPhyiscs.
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- field/field02
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- field/field03
  - Replaced F03PhysicsList with FTFP_BERT with G4StepLimiterPhysics.
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- field/field05
  - Replaced F05ExtraPhysics with use of G4StepLimiterPhysics.
  - Removed icons.mac, now automatically loaded.
- field/field06
  - Replaced F06ExtraPhysics with use of G4StepLimiterPhysics; apply step limiter process to all particles by calling the new function G4StepLimiterPhysics::SetApplyToAll(). Code cleanup.
  - Removed icons.mac, now automatically loaded.
- geometry/transforms
  - Removed debug.mac macro.
- hadronic/Hadr01
  - Removed data. Functions and commands to define cuts from PhysicsList and PhysicsListMessenger. Using Geant4 commands.
  - Updated PhysicsList and removed obsolete G4EmUserPhysics.
- hadronic/Hadr03
  - PhysicsList: removed obsolete G4HadronElasticPhysicsPHP; added particleHP constructors.
  - Changed name GammaPhysics to GammaNuclearPhysics.
- hadronic/Hadr04
  - DetectorConstruction: added HeavyWater description.
- hadronic/Hadr06
  - Added NE213 material.
  - PhysicsList: added G4StoppingPhysics.
  - EmStandardPhysics: use G4EmParameters.
  - DetectorConstruction: added HeavyWater description.
- hadronic/Hadr07
  - New example to survey energy deposition and particle's flux from an hadronic cascade.
- hadronic/NeutronSource
  - New example illustrating the cooperative work of nuclear reactions and radioactive decay processes.
- medical/DICOM
  - Added new DICOM reader based on DCMTK.
  - Explicit set of sensitive-detector to manager.
- medical/dna
  - chem4
    - New example showing how to activate chemistry code and score the radiochemical yield G.
  - clustering
    - Removed obsolete EventActionMessenger class.
    - Added GNUmakefile and reference output.
  - dnaphysics
    - PhysicsList: use G4EmDNAPhysicsActivator; added flagProcess value for electron capture.
    - DetectorConstructor, DetectorMessenger: ensure that geometry is created once; material may be changed for next runs.
    - SteppingAction: added label for solvation.
    - Added 2nd argument in SteppingAction for number of threads.
    - /run/initialise moved from code to macro.
    - DNA physics configuration moved from code to macro.
  - microdosimetry
    - Increase cuts of G4ElectronCapture to 7.4 eV to remain compatible with the energy validity of the Champion's elastic model.
  - microyz
    - Explicit set of sensitive-detector to manager.
  - range
    - Changed physics constructor selection.
    - Added positron test in TrackingAction.
  - svalue
    - Added plot.C macro.
  - wvalue
    - Changed physics constructor selection.
- medical/electronScattering
  - PhysListEmStandard: use G4EmParameters.
  - PhysListEmStandard_WVI, SS: added SetMscThetaLimit().
- medical/electronScattering2
  - Explicit set of sensitive-detector to manager.
- medical/GammaTherapy
  - PhysicsList: fixed warnings; make use of G4EmParameters.
  - DetectorConstruction, DetectorMessenger: do not change detector between runs.
- optical/LXe
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- optical/OpNovice
  - Explicit set of sensitive-detector to manager.
- optical/WLS
  - Replaced use of physics-vector by RegisterPhysics() in constructor of WLSPhysicsList.
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- parallel/MPI
  - Porting of scoring merging to new G4StatDouble based hits.
- parallel/TBB
  - Ported code following last updates to 'run' category.
  - Explicit set of sensitive-detector to manager.
  - Removed icons.mac, now automatically loaded.
- parallel/ThreadsafeScorers
  - Explicit set of sensitive-detector to manager.
  - Corrected GNUmakefile.
- parameterisations/Par01
  - Use new G4FastSimulationPhysics physics constructor to configure the physics list for fast simulation. Suppressed Par01PhysicsList.
- persistency/gdml/G01
  - Added test case for scaled solids: scaledTube.gdml.
  - Added missing gdml files to CMake installation script.
  - Replaced std::cout with G4cout.
- persistency/P03
  - Explicit set of sensitive-detector to manager.
- polarisation/Pol01
  - PhysicsList: move to use current method of ConstructParticle().
- radioactivedecay/rdecay01
  - Initialize atomic de-excitation in PhysicsList::ConstructProcess() instead of in G4RadioactiveDecay to avoid overwriting initializtion in EM. Fixed MT settings.
  - Set world size to 2 cm and gun direction along X.
  - Added survey of each nuclide in a given time window. Print-out activity of each nuclide.
  - Added neutron.mac and proton.mac input macros.
- radioactivedecay/rdecay02
  - PhysicsList: register hadronic processes.
- runAndEvent/RE01
  - Removed obsolete use of readout geometry.
  - Added protection against a track sticking on the calorimeter inner boundary.
  - Use G4UnknownDecayPhysics constructor and removed ad-hoc physics-list.
  - Explicit set of sensitive-detector to manager.
- runAndEvent/RE03
  - Migrated to use G4THitsMap.
- runAndEvent/RE04
  - Added command "/vis/drawVolume worlds" to vis.mac.
- runAndEvent/RE05
  - Renamed RE05CalorimeterROGeometry in E05CalorimeterParallelWorld.
  - Explicit set of sensitive-detector to manager.
- runAndEvent/RE06
  - Explicit set of sensitive-detector to manager.