Geant4 10.4 Release Notes

December 8th, 2017

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.13 High-Sierra with clang-4.0 (Apple LLVM/Clang-9.0.0)
- Windows-10 with Visual C++ 14.11 (Visual Studio 2017)

More verified and tested configurations (64 bits):

- Linux, gcc-4.9.3, gcc-5.3.0, gcc-6.3.0, gcc-7.2.0, clang-3.9
- Linux, Intel-icc 18.0
- MacOSX 10.10, 11, 12 with clang-3.6, 3.7, 3.8
- Windows-7, 10 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.4.0.0. 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.
- USolids specific flags have been fully replaced with VecGeom. From now on, configurations requiring the optional USolids/VecGeom component, will require to set VecGeom_DIR instead of USolids_DIR as path for the installation of VecGeom.

Geometry

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

Particles

- Particle data is updated to PDG-2017.

Electromagnetic and optical physics

- The new data sets G4EMLOW-7.3 and G4RealSurface-2.1 should be used.
- New UI commands and parameters for electromagnetic physics are added (see details in Application Development Manual).
- New interfaces are added to G4MaterialPropertyTable providing more CPU performant simulation for optical photon transport.

Hadronic physics

- The new data sets `G4PhotonEvaporation-5.2`, `G4ABLA-3.1`, `G4RadioactiveDecay-5.2` and `G4ENSDFSTATE-2.2` should be used. Updated also the optional data-set `G4TENDL-1.3.2`

Analysis

- The G4AnalysisManager::SetNtupleMerging() function, applicable with the ROOT output only, can take now four arguments instead of three. This changes the meaning of the last two optional arguments: the third one handles a selection of the merging mode (rowWise/columnWise) and the fourth one the basket size value.

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-7.3, G4ENSDFSTATE-2.2, G4RadioactiveDecay-5.2, G4PhotonEvaporation-5.2, G4ABLA-3.1, G4RealSurface-2.1`.
- In order to use `ParticleHP` for charged particles (protons, deuterons, tritons, He3 and alphas), an optional data set `G4TENDL-1.3.2` is required, and should be downloaded in addition from the Geant4 web site.

## 4. New Developments and Capabilities

Analysis

- Added support for the input/output in HDF5 format. It requires the HDF5 libraries installation and Geant4 libraries built with the -DGEANT4_USE_HDF5=ON CMake option.
- Preserving row-wise ntuple access when ntuple merging is activated with the ROOT output in multi-threading mode. The optional column-wise merging mode can be selected by the user via the SetNtupleMerging() call to G4AnalysisManager.

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.05.00`) should be specified. See the associated instructions file for configuration and installation.
- A new stepper, G4DormandPrince457, is now set as the default stepper for magnetic fields, if a driver/stepper is not explicitly specified. This is the recommended stepper for any type of field, as it requires fewer field evaluations per step, and provides higher accuracy than G4ClassicalRK4, the old default.
- A new construct, G4MultiUnion, is now available as native type. It implements a multiple-union of several volumes, each of which is a solid with a displacement and a rotation. As with simple unions, the resulting volume is a solid filled with a single material.

Electromagnetic physics

- New UI commands and parameters for electromagnetic physics are added (see details in Application Development Manual).
- Updated version of the Goudsmit-Saunderson model of multiple scattering is available.
- Revised version of the LivermorePhotoelectricModel is available.
- A new interface allows user to define density effect parameterisation for a material.
- New interfaces are added to G4MaterialPropertyTable providing more CPU performant simulation for optical photon transport.
- Updated G4LivermorePhotoElectricModel from EPICS 2014.
- New Geant4-DNA models from the CPA100 Monte Carlo code for electrons in liquid water.
- New Geant4-DNA cross sections for DNA related materials from PTB.

Hadronic physics

- Introduced smearing of resonance masses in Fritiof (FTF) string model.
- Extended INCLXX intranuclear cascade model to the strangeness sector, i.e. treatment of primary kaons and hyperons, and production of secondary kaons and hyperons.
- New gamma-nuclear combined final-state model (G4LENDorBERTModel) that uses LEND for low-energy (below 20 MeV) gammas, if data available, else BERT model; the latter is also used for gammas above 20 MeV. For cross-sections, LEND is used for gammas below 20 MeV if data available, else the default G4PhotoNuclearCrossSection is used.
- Production and transport of long-lived isomers is enabled in hadronic models which use native de-excitation module (e.g. not in Bertini if it is used with its own precompound/de-excitation). Only isomers with a half-life above a time threshold are created: by default it is set to 1000 seconds, unless radioactive decay is enabled in which case this threshold is 1 microsecond.
- Correlated gamma emission in radioactive decay is implemented but disabled by default.
- When radioactive decay is activated, atomic de-excitation (in particular fluorescence and Auger emission) are switched on by default (overriding any EM default settings).
- Added an experimental, alternative implementation of muon stopping using muonic atoms. Disabled by default.

Particles

- Basic functionality of handling muonic atom is introduced. To use this functionality, G4MUATOMS_INUSE option has to be set at installation.

Physics Lists

- The default EM physics includes the Livermore proto-electric model and the Rayleigh scattering process.
- Opt4 EM physics includes the Goudsmit-Saunderson model of multiple scattering.
- FTFQGSP_BERT: new experimental physics list which is similar to FTFP_BERT, but with QGS fragmentation of strings (instead of the Lund string fragmentation).
- Added ShieldingLEND as a new physics list, which is similar to Shielding, but with LEND for low-energy neutrons and gammas (below 20 MeV if data is available, else BERT model is used).

Run

- Most of thread-local objects including physics processes are now properly deleted at the end of program.

Visualization and Interfaces

- `/vis/scene/add/gps`: shows Geant4 General Particle Source sources. Consult guidance for details.
- `/vis/drawOnlyKeptEvents`: draws a selection at run time. Consult guidance for details.
- More colours from X11 (via g4tools). Use `/vis/list` to see.
- Improved picking for OGLSX and OGLQt.
- Arbitrary size of Ray Tracer rendering.

Examples

- A new set of extended examples, physicslists, is introduced to demonstrate usage of Geant4 reference physics lists and physics builders.

## 5. Expected effects on physics and computing performance

Geometry

- Improvements in the computation of the extent of the geometrical shapes and consequent more optimal organisation of the 3D voxels structure for navigation, was measured to provide few percents speedup on complex geometry setups. According to the complexity and shapes composition, additional speedup may come from the revised algorithms introduced in this release for basic shapes.

Electromagnetic physics

- More accurate simulation of gamma transport with the default EM physics.
- More accurate electron transport with Opt4 EM physics.
- Small (~1%) speedup of gamma/electron transport for calorimeters.
- Substantial speedup of optical photons transport.

Hadronic physics

- Hadronic showers remain very similar to those of version 10.3.

## 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:
  - Removed support for modulefile generation, as not used and generated files not compatible with relocatability. It's expected that software stack managers will generate a modulefile file according to their requirements.
  - Added new module G4CMakeMain.cmake for refactoring core implementation.
  - Added new GEANT4_USE_HDF5 option (OFF by defaults), to allow user to enable Hdf5 support in analysis library. Created a G4HDF INTERFACE target for uniform access to HDF5 headers and libraries at build, test and install time. Added check for HDF5 installation; requiring HDF5 >= 1.8.
  - Removed obsolete modules for interfaces provided by CMake built-in tools CMakeParseArguments, GNUInstallDirs and commands.
  - Refactored core Configure/Build and client script modules for clarity and cohesion.
  - Removed obsolete FindCLHEP.cmake module; updated internal/system CLHEP selection; simplified location/setup of system CLHEP as CLHEP (>= 2.3.3.0) now provides CLHEP_LIBRARIES set with appropriate single/granular targets with full usage requirements. Addressing enhancement request #1934.
  - Do not set or modify DYLD_LIBRARY_PATH in setup scripts on macOS. Addressing problem report #1960.
  - Set INSTALL_RPATH for MacOS systems; loading dylibs in Python can lead to resolution errors as they cannot locate each other. The option allows to append "@loader_path" to the INSTALL_RPATH for all Geant4 libraries.
  - Updated minimum version for system expat package to be >= 2.0.1, according to features required in the g4tools analysis package. Addressing problem report #2003.
  - Added GEANT4_INSTALL_EXAMPLES advanced option, ON by default; for use to disable/enable installation of examples code. Removed GEANT4_BUILD_EXAMPLES option.
  - Modules/Geant4OptionalComponents.cmake: added CTUBS, HYPE and PARA flags to enable wrapping of G4CutTubs, G4Hype and G4Para for VecGeom in GEANT4_USOLIDS_SHAPES.
  - Replaced USolids specific flags with VecGeom. From now on VecGeomConfig.cmake will be required and used instead of USolidsConfig.cmake, as well as VecGeom_DIR instead of USolids_DIR.
  - Corrected setting of USOLIDS_BASE_DIR path for GNUmake setup.
  - Added new advanced build option GEANT4_BUILD_MUONIC_ATOMS_IN_USE, set to OFF by default; when ON, adding G4MUTOMS_INUSE to compile definitions.
  - Restored reporting of C++ standard configuration.
  - Removed obsolete FindROOT module.
  - Updated data-sets versions.
- GNUMake:
  - binmake-gmk: added 'processes/solidstate' and 'processes/hadronic/models/gamma_nuclear' modules to include path.
  - geomconf.gmk: added selectors for G4GEOM_USE_UCTUBS, G4GEOM_USE_UHYPE and G4GEOM_USE_UPARA flags, to enable wrapping of G4CutTubs, G4Hype and G4Para for VecGeom. Updated flags for Scalar build of VecGeom.
  - In architecture.gmk, removed references to old USolids library; just use VecGeom.

### Analysis

- Profiles
  - Added GetP[1,2]Id(const G4String&) functions to the G4AnalysisManager public interface. Addressing problem report #1949.
- Ntuples
  - Added rowWise option to G4RootAnalysisManager::SetNtupleMerging().
  - Moved common implementation from G4V[R]NtupleManager in new G4Base[R]NtupleManager classes.
  - Introduced G4TRNtupleDescription, G4TRNtupleManager template classes.
  - Always create an ntuple from ntuple booking (removed usage of ntuple::create_column).
- Output types
  - Added full support for HDF5. Added optional directoryName argument in Read[Hn][Pn][Ntuple] functions in G4VAnalysisReader (needed for HDF5).
- Fixes
  - Fixed generation of file name on workers (adding _tN extension). Addressing Hypernews post #537 in analysis Forum.
- g4tools
  - Updated the g4tools version to g4tools-4.2.1.
  - Added support for HDF5, improved tests.
  - Updates in colorf, colors to make possible to use the tools/colors color table in G4Colour class.
  - Changes in wroot, rroot in order to handle row wise ntuple in case of MT or MPI.
  - See History_tools for the complete list of modifications.

### Digitization & Hits

- Renamed G4THitsMap to G4VTHitsMap: although G4VTHitsMap is not a pure virtual class, it has an additional template parameter for the map type, so it is not intended to be used directly; made G4VTHitsMap more generic in accepting the type of data stored (with more generic template overloads not specific to G4double and G4StatDouble). Fixed initialisation of G4StatDouble entries.
- Added G4THitsMultiMap, which functions like G4THitsMap but all entries are stored.
- Added G4THitsUnorderedMap, which functions like G4THitsMap but uses an unordered_map.
- Added G4THitsUnorderedMultiMap, which functions like G4THitsMap but stores all entries in an unordered multimap.
- Typedefs for map_type, value_type, iterator, and const_iterator for future generic usage.
- Defined begin(), end(), cbegin(), cend() so now G4VTHitsMap can be used in range-based loops.

### Electromagnetic Processes

- Requires data-set G4EMLOW-7.3.
- Adjoint
  - Correction for FPE cases in G4AdjointForcedInteractionForGamma.
  - G4eAdjointMultipleScattering: changed index of the default according to recent modifications in utils module.
- DNA:
  - Added new CPA100 classes. Added new G4DNAPTB* classes and the structure of the new material management system.
  - Added tagging of atomic de-excitation products in the ionisation models.
  - Extended upper energy limit of protons for G4DNARuddIonisationExtendedModel.
  - Introducing G4PhysChemIO class.
  - Moved call to G4TrackList::Pop(track) from G4ITTrackingManager to G4ITTrackHolder and make sure track status is set to fStopAndKill when G4ITTrackHolder::PushToKill is called.
  - G4DNAMolecularMaterial: removed newly introduced methods; added fatal exception if used. Added doxygen documentation.
  - Added new G4DNADummyModel and allow the combination of G4VEmModel and G4VDNAModel in G4DNAModelInterface.
  - Updated G4DNAModelInterface to correctly use G4DNAMolecularMaterial.
  - G4DNAExcitation, G4DNAIonisation: make coherent model initialisation.
  - G4DNAEmfietzoglouIonisationModel: added protection for out of bound access.
  - Updated variable types in models.
- High Energy
  - G4eeToHadrons, G4hhIonisation, G4mplIonisation: make coherent model initialisation.
  - G4GammaConversionToMuons: changed parameterisation of nuclear elastic form-factor; use integer Z; speeded-up sampling algorithm.
  - G4eeToHadrons, G4eeToHadronsMultiModel: implemented new method StreamProcessInfo() instead of PrintInfo().
  - G4hBremsstrahlung, G4hPairProduction: updated process description text.
  - Added dummy StreamProcessInfo() for html doc.
- Low Energy
  - G4LivermoreNuclearGammaConversionModel, G4BoldyshevTripletModel: Added possibility of triplet production; use G4Log; code cleanup.
  - Extended coverage of shell ionisation models.
  - G4LivermorePhotoElectricModel: new parameterisations using two intervals (in place of unique parameterisation), using the new EPICS-2014 data. The resulting data-sets are provided in the data directory livermore/phot_epics2014. Fixed resetting of pointer to nullptr, addressing problem report #1980. Fixed diagnostic text in case of G4Exception. Requires new data set G4EMLOW-7.3.
  - G4LivermoreRayleighModel: minor code cleanup and optimisations, added process description text.
  - Added protection against (rare) infinite loops in G4PenelopeOscillatorManager, which occurred for materials made of more than 20 elements.
  - G4MicroElecElastic, G4MicroElecInelastic: improved coherence of model initialisation.
  - G4LowECapture: added scaling of energy threshold for ions.
- Muons
  - G4MuBremmstrahlungModel, G4MuPairProductionModel: make all data members protected, allowing to reuse these classes as base for dark matter photons.
  - G4MuIonisation, G4MuMultipleScattering, G4MuPairProduction, G4ePairProduction: make coherent model initialisation. Switched from ProcessDescription() to StreamProcessInfo() for html output.
- Polarisation
  - G4PolarizedCompton, G4PolarizedGammaConversion, G4ePolarizedIonisation: make coherent model initialisation.
- Standard
  - G4GoudsmitSaundersonTable: new representation of the GS angular distributions (data size reduced from 16MB down to 5 MB). Fixed scattering power correction table.
  - G4GoudsmitSaundersonMscModel, G4GoudsmitSaundersonTable: added option to apply Mott-correction to the default GS model. The new class G4GSMottCorrection handles the Mott-correction to the angular distributions as well as correction factors to elastic, mfp, first and second moments.
  - G4MottCoefficients, G4ScreeningMottCrossSection, G4eSingleCoulombScatteringModel: tuned performance of the model making as fast as the default single scattering.
  - New form of PWA corrections in the Goudsmit-Saunderson multiple-scattering model that is active now both for e- and e+; improved scattering power correction computation in case of Mott-correction; changed step limit flag conventions in the GS model.
  - G4PairProductionRelModel: fixed inconsistency in calculating the LPM suppression for the pair-production model.
  - G4WentzelOKandVIxSection, G4WentzelVIRelXSection: added "ScreeningFactor" parameter to study accuracy of scattering models.
  - G4SauterGavrilaAngularDistribution: introduced more efficient algorithm of sampling using Penelope-2014 prescription; expected that simulation will be faster.
  - G4UniversalFluctuation: added extra parameter in the model and improved sampling for thin layers; added correction for small cuts. Added corrections for better E_mp and FWHM in the case of small steps.
  - G4BetheHeitlerModel, G4PairProductionRelModel: minor change in angular sampling. Use G4Pow in both classes instead of G4NistManager for fast math computations.
  - G4BetheHeitlerModel, G4PairProductionRelModel: code cleanup and optimisations; replaced remaining use of log, exp with G4Log and G4Exp.
  - G4eBremsstrahlungRelModel: use new interface to triplet model. Added class members and cross-sections for sampling of electron recoil.
  - G4WentzelVIRelModel: fixed typo responsible for numerical crash.
  - G4WentzelOKandVIxSection, G4eCoulombScatteringModel, G4WentzelVIModel, G4hCoulombScatteringModel: code and interface cleanup. G4WentzelVIRelModel: use inheritance from G4WentzelVIModel. G4WentzelVIRelXSection: use inheritance from G4WentzelOKandVIxSection.
  - G4UrbanMscModel: renamed and use flag for lateral displacement algorithm; if its value is "true" then the old lateral displacment algorithm is used, else a new one is applied. Cleanup of inline methods.
  - G4hIonisation: fixed energy intervals per EM model for super-heavy particles.
  - G4NuclearStopping: use activation limit for energy per nucleon. Fixed initialisation.
  - G4PAIModel. G4PAIPhotModel: added implementation of virtual method MinEnergyCut(), always return 25 eV, as PAI models are not applicable for smaller energy transfers. Set MinEnergyCut() to 12.5 eV, based on results study of gaseous detector simulations.
  - Switched from ProcessDescription() to StreamProcessInfo(). Added dummy ProcessDescription() to other processes.
  - Make coherent models initialisation.
  - Requires new data set G4EMLOW-7.3.
- Utils
  - G4EmParameters: added method with more correct name AddPhysics() in order to replace AddMsc in future (no change in functionality). G4EmSaturation may be created at any moment (added mutex). Fixed SetDeexcitationIgnoreCut() method. Set lateral displacement algorithm to 9.6 version as the default, Fixed typo in dump of parameters.
  - G4EmParametersMessenger, G4EmParameters: added parameter "ScreeningFactor", related modifiers and UI command. Allow atomic de-excitation commands in Init state.
  - G4VEmProcess: added DNA ionisation process to the list of discrete processes, which have auger and fluo flags for secondary particles. Added DNA ionisation process for hydrogen and helium to the list of processes, which have auger and fluo flags. Select models for ions by using energy per nucleon. Added method StreamInfo() allowing to print in any stream.
  - G4VEmModel: added triplet model pointer and Get/Set methods.
  - G4EmCorrections: removed computation of nuclear stopping power.
  - G4EmDataHandler: new class to keep physics tables in easy way.
  - G4EmParametersMessenger, G4EmParameters: added parameters "DNAFast", "DNAStationary" and "DNAMsc"; added Get/Set methods and UI command.
  - G4VMultipleScattering, G4VMscModel, G4VEnergyLossProcess, G4VEmProcess, G4EmConfigurator, G4EmConfigurator: new scheme of model initialisation in order to not create extra fake model objects and reduce number of calls at run time. Added initialisation printout for DNA particles. Code cleanup
  - G4EmParameters: changed to fully thread-safe singleton.
  - G4LossTableManager: added new method PrintHtml() to generate html doc.
  - G4VEnergyLossProcess, G4VEmProcess, G4VMultipleScattering: added new protected method StreamProcessInfo() to be used by derived processes. Modified doc outputs to set end-of-line string.
  - Fixed Coverity defects.
- Xrays
  - Changed material property keys by the enum (index) type defined in G4MaterialPropertiesIndex.

### Error Propagation

- Precision correction in G4ErrorFreeTrajState. Addressing problem report #2010.
- Migrated code to use new types for G4(Mag)IntegrationDriver and use its new GetEquation() method.

### Event

- G4SPSPosDistribution: added GetRotx,y,z() access functions and other accessors for use by G4GPSModel for visualisation.
- G4StackManager: added #ifdef protection for the case when a particle is a muonic atom.

### Externals

- Adapted CMake scripts to new configuration for internal/external packages of CLHEP, expat and zlib.
- Updated CLHEP module to version 2.4.0.0:
  - Updated MixMaxRng class to include latest C++ revision based on MixMax-2.0. Replaced skipping coefficients optional set for N=256 with N=240. Removed old C implementation files. Set MixMax as the default random number generator in HepRandom.
  - Fix in HepRotation::axis() for proper treatment of degenerating cases.
  - Added missing DLL_API specification for static data member in Transform3D class.
- Zlib:
  - Disabled warning on fallthrough in case statements on gcc-7.1.

### General Processes

- Biasing
  - Fix in G4BiasingProcessInterface for wrong setting of first/last GPIL/DoIt flags in case of charged particles, according to the fact that the multiple- scattering is now a pure along step process.
  - Removed duplicate class definition G4TrackTerminator.hh, which is part of the processes/transportation module.
- Decay
  - Moved muonic atom files to hadronic stopping module.
  - Replaced DECAY_MuonicAtomDecay process type with DECAY_MuAtom.
  - Added ProcessDescription to decay process.
  - Use nullptr in place of NULL or 0.
- Management
  - Added virtual method ProcessDescription(std::ostream& outfile) to G4VProcess so that all processes can output a description to html documentation.
  - Use G4Log in G4VProcess.
- Optical
  - Added DAVIS model for optical physics. Use the new model with reflection and added capability of transmitting photons based on LUTs. Requires new data set G4RealSurface-2.1.
  - Change material property keys by the enum type defined in G4MaterialPropertiesIndex.
- Solid State
  - New module including channeling and phonon modeling.
- Transportation
  - G4Transportation, G4CoupledTransportation: obtain equation of motion using dedicated method now provided through G4ProgatorInField.
  - Make appropriate setting/use of verbosity from base class G4VProcess, instead of re-defining/using local verbosity flag in G4Transportation and G4CoupledTransportation. Addressing problem report #1999.

### Geometry

- Magnetic field
  - Made G4DormandPrince457 the default stepper for magnetic fields in G4ChordFinder, when a driver/stepper is not specified.
  - G4FieldManager: revised behaviour of SetDetector(); it now passes the Field to the Equation, as is the natural user expectation. The previous behaviour is possible, using extra argument 'failMode' flag (values: 0 = silent; 1 (default) = warning; 2 or other = fatal exception). If the field is changed for an existing, working stepper it must be propagated to the equation of motion. Note: Error reporting behaviour of SetDetector is 'soft'. It does not complain by default if G4ChordFinder is not (yet) set (the default values of failMode is 0, i.e. quiet); if a chord-finder exists, it will still warn for other errors.
  - Introduced G4VIntegrationDriver base class for any driver algorithm. New concrete classes added: G4IntegrationDriver, implementation of templated driver algorithm for non-FSAL explicit Runge-Kutta steppers; G4FSALIntegrationDriver, implementation of driver algorithm for FSAL explicit Runge-Kutta steppers. G4MagInt_Drv, the old class, remains, and can be used with any Runge-Kutta stepper.
  - Added new steppers G4RK547FEq{1,2,3} which implement 7 stage embedded Runge-Kutta pairing 4th and 5th order formulae, with: FSAL property ('First Same As Last' steppers return derivative at endpoint for use in next step); stable equilibrium states (better stability in choosing step sizes). Each one can be used with all existing Runge-Kutta drivers.
  - A reduction in the number of field evaluations can be realised by using a FSAL steppers (including G4RK547FEq{1,2,3}) together with G4FSALIntegrationDriver. This driver is the only one to reuse the derivative of a successful step in a potential subsequent step.
  - Added G4FieldUtils utilities class, to extract data from arrays in conventions of the magneticfield integration.
  - Renamed G4FieldManager::SetFieldChangesEnergy() method to InitialiseFieldChangesEnergy() to clarify its utility.
  - Corrected destructor in G4FieldManagerStore and added simple accessor to return singleton pointer.
  - Fixed initialisation of coefficients in G4FSALBogackiShampline45 in method PrepareConstants() called by constructor.
  - Fixed significant memory leak in G4DormandPrinceRK56, in method SetupInterpolate_low(); improved initialisation of data.
  - G4BogackiShampine23: fixed initialisation of data and suppressed duplicate method isFSAL(), as existing in base class G4MagIntegratorStepper. Made copy constructor and equal operator private and not unimplemented.
  - G4MagInt_Driver: added GetEquationOfMotion() method for enabling common code with future development.
  - Fixed Coverity defects in several classes.
- Management
  - Added adapter class G4UAdapter for interfacing G4U* wrappers with VecGeom. Will replace G4USolid bridge class, and now deprecating USolids API in favour of direct use of VecGeom signatures and removal of one extra-level of indirection/inheritance. Requires new version 0.5 for VecGeom external library.
  - Removed G4USolid base wrapper for USolids. Only native VecGeom implementation through G4UAdapter is now supported.
  - Renamed ambiguous name Extent() in G4VSolid to BoundingLimits(). Modified G4ReflectedSolid accordingly. Change required in order to avoid signature conflict with VecGeom in G4U* wrappers.
  - Moved few key methods to be inline in G4USolid.
  - Fixed static memory leak from G4LogicalVolume, G4VPhysicalVolume and G4Region, for offsets allocated at initialisation.
  - Removed additional wrong lock in G4GeomSplitter for function SlaveReCopySubInstanceArray().
  - Added simple accessor to return singleton pointer for G4GeometryManager. Define IsGeometryClosed() as a static method, to avoid call to GetInstance(). Made related Boolean flag thread-local.
  - Enabled deletion of solids in G4SolidsStore destructor also for MT mode.
  - Added methods TriangelAreaNormal(), QuadAreaNormal(), PolygonAreaNormal(), ClosestPointOnSegment(), EllipsePerimeter(), EllipticConeLateralArea(), comp_ellint_2() and ClosestPointOnTriangle() to G4GeomTools. Added PointInPolygon() function, to determine the position of a point relative to a polygon in 2D.
  - Precision correction in G4ErrorPlaneSurfaceTarget. Addressing problem report #2011.
- Navigation
  - G4Navigator: loosened check on normal vector in GetGlobalExitNormal(), whether it is a unit vector; set tolerance to 10^-3 (was 10^-6). Improved clarity by using a constant 'perThousand' in this check.
  - Fix in G4PathFinder to cope with zero proposed step; the correction ensures that the 'physical' length of a step is used in minimum, rather than 'logical' value (i.e. kInfinity).
  - Modification in G4PathFinder, G4PropagatorInField and locator classes to use GetEquationOfMotion() method from G4MagIntegratorDriver.
  - Correction in destructors of G4TransportationManager and G4PathFinder. Avoid deletion of field-manager pointer in destructor of G4TransportationManager, as it is being deleted by G4FieldManagerStore.
  - Added simple accessor (to return singleton pointer - and not create it if has not already been instantiated) in G4PathFinder and G4TransportationManager.
- Solids (Boolean)
  - Added G4MultiUnion class, importing original implementation for a multiple-union structure from the USolids library. Removed the wrapper G4UMultiUnion, no longer necessary.
  - Revised SurfaceNormal() in G4UnionSolid, to correctly return average normal if point is on common surface.
  - Renamed ambiguous name Extent() in all shapes to BoundingLimits().
  - Fixed minor Coverity defects in G4MultiUnion.
- Solids (CSG)
  - Reviewed implementation of G4Box, G4Trap, G4Trd, G4Para and G4Orb; revised to make them more compact and performant.
  - G4Trap: modified computation of side planes; bounding box/envelope are computed directly from side planes. Added CheckParameters() and MakePlanes(pt), simplified constructors and SetAllParameters(). In G4UTrap, bounding box/envelope are computed directly from side planes as for G4Trap. Increased tolerance in the check of consistency of bounding boxes in Extent(). Added private method GetVertices(), calculating vertices of the trap from its side planes; removed private methods GetFaceArea() and GetPointOnPlane(). Improved GetCubicVolume() and GetSurfaceArea(); calculation of the volume and surface area is now done by using vertices calculated by GetVertices(). Improved/simplified other methods: StreamInfo(), MakePlanes(), MakePlanes(pt), Extent() and CalculateExtent(). Added more strict condition for trap definition in case when YZ section is a rectangle. Use specialization (fTrapType 3) for traps that could be also defined as G4Trd, where isosceles trapeziod is in the XY section, instead of XZ (faces at Xmin/Xmax symmetrical and have Z-component of normals equal to zero). Factorised code with case statements for the different specialisations.
  - Renamed ambiguous name Extent() in all solids and G4U* wrappers to BoundingLimits().
  - Removed clone class G4OTubs no longer necessary and removed inheritance from G4Tubs for G4CutTubs. Improved calculation of bounding-box in G4CutTubs.
  - Use G4RandomRadiusInRing() in G4CSGSolid::GetRadiusInRing().
  - Enabled adapter for VecGeom shapes in G4U* wrappers for all wrapped shapes. From now on, wrappers depends directly on VecGeom shapes implementation. USolids API is deprecated and no longer supported.
  - Removed redundant overloaded implementation for StreamInfo() in G4UBox wrapper.
- Solids (Specific)
  - G4ExtrudedSolid: added specialised implementation for constructs defining a convex or non-convex right prism. Temporarly disabled G4UExtrudedSolid wrapper, pending implementation of extruded solid in VecGeom.
  - Renamed G4SurfaceVoxelizer to G4Voxelizer and extended to support voxelisation of shapes in 3D space. Adapted G4TessellatedSolid accordingly.
  - G4TessellatedSolid: print also solid's name in StreamInfo().
  - Revised implementation of GetCubicVolume() and GetSurfaceArea() for G4EllipticalTube, to return exact values.
  - G4EllipticalCone: reviewed implementation of Inside(), DistanceToIn/Out(p), SurfaceNormal() and GetPointOnSurface(); made more compact and performant. Addressing problem report #1974. Improved GetPointOnSurface() to have uniform sampling of points, using function G4RandomPointOnEllipse(). Revised implementation of GetSurfaceArea() to return exact value; moved both GetCubicVolume() and GetSurfaceArea() to be not inline.
  - G4SolidsWorkspacePool: implemented CleanUpAndDestroyAllWorkspaces(), to be called by worker threads. Removed declaration (i.e. not implemented) of protected method ReleaseAndDestroyWorkspace(). Use DLL export flag for static thread-local symbol of the workspace.
  - Renamed ambiguous name Extent() in all solids and G4U* wrappers to BoundingLimits().
  - Enabled adapter for VecGeom shapes in G4U* wrappers for: paraboloid, polyhedra, polycone and GenericTrap. From now on, wrappers depends directly on VecGeom shapes implementation. USolids API is deprecated and no longer supported.
  - Temporarly disabled wrappers for G4Tet and G4GenericPolycone, pending their corresponding implementation in VecGeom. Added VecGeom wrapper G4UHype for G4Hype, not yet activated, pending fixes in VecGeom.
- Volumes
  - G4GeometryWorkspacePool: implemented CleanUpAndDestroyAllWorkspaces(), to be called by worker threads. Removed declaration (i.e. not implemented) of protected method ReleaseAndDestroyWorkspace(). Use DLL export flag for static thread-local symbol of the workspace.

### Global

- New structure for G4coutDestination functionality with division between sink and filter.
- Removed obsolete internal definition of abs() in templates.hh.
- Added function G4RandomDirection(G4double cosTheta) to G4RandomDirection.hh. Addressing enhancement request #1961. Use more performant G.Marsaglia (1972) algorithm for G4RandomDirection.
- G4TWorkspacePool: implemented CleanUpAndDestroyAllWorkspaces(), and Recycle() to be called by worker threads.
- Added G4RandomRadiusInRing(), G4RandomPointInEllipse(), G4RandomPointOnEllipse() and G4RandomPointOnEllipsoid() to functions collection in G4RandomTools utility class.
- Updated date of release for 10.4.

### Graphical Representations

- Added implementation of G4Colour::operator+=(), as required by RayTracer in its use of G4THitsMap. Adding colours, without also taking brightness into account, does not make sense, so made it synonymous with operator=(), which is equivalent to covering the old colour with the new, like a coat of paint.
- Rationalised code for colour map: made map no longer thread-local, as not needed, can be used from non-master threads; moved InitialiseColourMap() from private to public.
- G4Colour: added Set functions for components.
- HepPolyhedron: reverted default number of line segments per circle, from 72 to 24 (72 lines per circle cause troubles in the Boolean Processor).
- G4AttDefStore: made it shared (i.e., no longer thread-local).
- Removed G4VisExtent::NullExtent.

### Hadronic Processes

- Cross sections
  - G4NeutrinoElectronNcXsc: new class for the cross-section of elastic neutrino-electron scattering, for use in dark matter and neutrino experiments. Note that the cross section is small: ~10^-44 - 10^-42 cm^2 in the neutrino energy range 1-100 GeV.
  - G4NeutrinoElectronCcXsc: new class for the cross-section of neutrino-electron inelastic interaction (charge current).
  - G4NeutronElectronElXsc: new class for the cross-section of neutrons on atomic electrons. Ultra-relativistic approximation of the Rosenbluth formula is used, as more relevant for detector applications. In particular, for dark matter searches, this process can produce electrons with high energy, if there are high energy neutrons (more than 10 GeV).
  - Added possibility of biasing these new cross-sections.
  - Added G4MuNeutrinoNucleusTotXsc class implementing total muon (anti)neutrino-nucleus cross-sections in the simplified form as A-multiplied nu_mu-nucleon cross-sections.
  - Added method AddDataSet(G4VCrossSectionDataSet*,size_t), where the second argument specifies the priority of the data set in list.
  - G4ElectroNuclearCrossSection: fixed minor memory leak.
- Management
  - G4HadronicProcess: correctly check charge and energy balance in the case of e- internal conversion; improved initialisation for constructors.
  - G4HadronicProcessStore: in DumpHtml(), added printing for generic ion; added loop in PrintHtml() to print descriptions of "extra" processes; in Clean(), added exception to prevent deletion of G4RadioactiveDecay already deleted somewhere else.
  - Added fMuAtomicCapture in G4HadronicProcessType.
- Stopping
  - Define G4MuonMinusAtomicCapture as a process at rest. Added G4MuonicAtomDecay class.
- Utilities
  - G4NuclearPolarization: added extra members and updated for correlated gamma emission.
  - Models Utilities:
    - G4Fragment: added non-const method NuclearPolarization() allowing to get non-const pointer to the G4NuclearPolarization object. Do not delete G4NuclearPolarization object; from now on, other classes are responsible for its allocation/deletion.
    - G4NuclearPolarizationStore: new class to handle G4NuclearPolarization objects for correlated gamma emission simulation. Use fix length array instead of vector of pointers.
    - G4SampleResonance: added protection for rare cases when a wide parent resonance, with a very small dynamic mass, decays into another wide (daughter) resonance.
    - G4LegendrePolynomial: apply caching to speed up calculations.
    - Removed debug printout in G4NuclearPolarizationStore desctructor.
- Abla
  - Updated code to new C++ version of ABLA-07.
- Abrasion
  - G4WilsonAbrasionModel: removed dependence on G4FermiBreakUp, G4Evaporation, and G4MultiFragmentation; not needed redefinition of default objects. Fixed case of crash at initialisation.
  - Fixed memory leak in G4WilsonAbrasionModel; use nullptr instead of NULL.
- Bertini Cascade
  - G4CascadeParameters: use G4HadronicDeveloperParameters as a tool for sharing parameters between developers and experienced users. Need to set enviroment variable of "TEST_HDP" for testing the tool. Added FERMI_SCALE and RAD_TRAILING to changeable parameters from HDP. Lower and upper limits of changeable parameters from HDP are registered. Removed protection for using G4HadronicDeveloperParameters.
  - G4CascadeInterface: removed unnecessary rotation to z-axis in createBullet() and ApplyYourself(), which may cause irreproducibility. Addressing problem report #1990.
- Binary Cascade
  - Setting creator model for particles it creates; pass through time info.
- De-excitation
  - G4LevelReader, G4LevelManager, G4PhotonEvaporation: for stable states (ground state isotopes) life time is set to "-1"; changed all checks accordingly. Added extra G4Exception in file reading method.
  - G4LevelReader, G4NuclearLevelData: removed code for reading of old data structure.
  - G4LevelReader, G4LevelManager, G4NucLevel, G4PhotonEvaporation: use G4double for energy and life time. Addressing problem report #1964.
  - G4LevelReader: by default issue G4Exception only for Z<6, Fixed fill of 'mpRatio' parameter of a transition (was always zero before). Read updated data structure where "correlated_gamma" directory is located. Always create G4LevelManager for stable isotopes including light stable p, d, t, He3, He4.
  - G4LevelManager: removed obsolete method.
  - G4NuclearLevelData, G4NucLevel, G4LevelManager: added possibility to print nuclear level information into output stream; interface cleanup and fixed reading of user data file.
  - G4DeexPrecoParameters: set default time threshold for isomer production to 1000 seconds (if radioactive decay is enabled this time threshold is set to the limit of the G4NuclideTable, which is of 1 microsecond); this allows to limit the extra isomers which would be created when radioactive decay is not included in the physics-list. Disable possibility to read old data; throw fatal exception soon if the first file in the dataset cannot be read. Restore Get/SetInternalConversionFlag() methods; flag set to true by default. Use flag for internal conversion in G4PhotonEvaporation; for radioactive decay do not sample transition if no transition information is available. Added dummy variant of de-excitation when excitation energy transformed to kinetic energy of a fragment and no secondaries are produced; added also method to disable both precompound and de-excitation sampling.
  - G4DeexPrecoParameters, G4DeexParametersMessenger: added UI commands for configuration of de-excitation module and radioactive decay.
  - G4ExcitationHandler, fermi_breakup, photon_evaporation modules: removed obsolete FermiBreakUp model and corresponding classes. Implemented dummy variant of de-excitation.
  - G4ExcitationHandler, G4DeexPrecoParameters: define index of e- internal conversion and propagate it to reaction products.
  - G4ExcitationHandler, G4NeutronRadCapture: propagate index of e- internal conversion to base class G4HadronicProcess.
  - G4ExcitationHandler: added protection from incomplete initialisation when external evaporation instance is defined; improved debug printout.
  - G4NuclearLevelData: synchronise the list of isotopes with the current set of data files; extra rare isotopes are allowed; Z max is extended from 102 to 117. Hold and have access method to G4PairingCorrection and G4ShellCorrection classes; made it a fully thread safe singleton.
  - G4PhotonEvaporation: added handling of nuclear polarization for simulation of correlated gamma emission. Fixed problem of data race. Use new parameters to enable/disable correlated gamma.
  - G4FermiFragmentsPoolVI: fixed selection of decay chains for unphysical fragments, which happens when used by INCL++.
  - G4VEmissionProbability: added private method for general treatment of PDF functions.
  - G4EvaporationProbability, G4CompetitiveFission, G4CompetitiveFission, G4GEMProbability: modified according to updated base class.
  - G4EvaporationChannel: make choice of minimal evaporation energy Z-dependent.
  - G4FermiFragmentsPoolVI: improved handling of internal data structure.
  - G4PolarizationTransition: added warning in GenerateGammaCosTheta() and GenerateGammaPhi() when polarization entries are empty and return isotropic random in that case. Fixes rare crash. Added Jason warning of zero coefficient. Fix to avoid integer overflow in the argument of sqrt(), and caching to speed up the calculations. Use G4double, and std::sqrt(). Added new interface SampleGammaTransition(), which replaced 4 old methods. Use this new method in G4GammaTransition. Added protections inside GenerateGammaPhi() to avoid reading outside vector; reduced sampling loop from 1000 to 100.
  - G4GammaTransition: temporary workaround to avoid very long computations, by skipping polarization if initial state has angular momentum 2J > 6. Do not sample nuclear polarization if initial state has momentum 2J > 12.
  - G4PhotonEvaporation, G4GammaTransition, G4PolarizationTransition: improved debug printout. Cleanup creation and deletion of G4NuclearPolarization objects.
  - G4NeutronRadCapture, G4StatMFChannel, G4StatMFFragment, G4GEMChannel, G4CompetitiveFission, G4FermiPhaseSpaceDecay: use G4RandomDirection() for better CPU performance.
  - G4PairingCorrection, G4ShellCorrection: no longer singletons.
  - G4WilsonAblationModel: fixed case of crash at initialisation.
  - Fixed Coverity defects.
- Elastic scattering
  - G4NeutrinoElectronNcModel: new class for the final-state model of elastic neutrino-electron scattering, for use in dark matter and neutrino experiments.
  - G4NeutronElectronElModel: new model for neutron-electron elastic scattering. It produces recoil electrons resulting in visible energy deposition. The model is based on ultra-relativistic approximation of the Rosenbluth formula, since recoil electrons will have enough energy to be detected in the case of high energy neutrons, roughly > 1 GeV.
  - Fixed intialisation of data in G4NuclNuclDiffuseElastic constructor responsible for cases of zero scattering angle and no elastically scattered target particle. Addressing problem report #1979. Simplified implementation to fix reproducibility violations in ion-ion elastic scattering. On-the-fly sampling of the nucleus-nucleus elastic scattering is done according to the Coulomb law in the limits 0 < theta < thetaC, where thetaC is the Coulomb grazing angle; this means that hadron elastic works like Coulomb in the limits.
- Electromagnetic Dissociation
  - G4EMDissociation: removed unnecessary explicit instantiation of FermiBreakUp, Evaporation and MultiFragmentation models.
- Gamma-Nuclear
  - New module including G4LENDorBERTModel combined model; LEND is the first choice as final state generator (for gamma energies below 20 MeV); if no LEND data available for a target, then BERT model is used as the final state generator of the reaction.
- High Energy Theoretical
  - G4ParticleTypeConverter: all methods become const.
  - G4ConcreteMesonBaryonToResonance: fixed memory leak. Adding static objects with const only methods.
  - G4TheoFSGenerator: pass through creator model and time.
- INCLXX
  - Updated to INCL++ v6.0.
  - Implementation of strangeness.
  - Few nucleon removal improved; improved separation energies and added hypercluster emission.
  - Fixed bugs in eta/omega channels.
  - Note: native Geant4 de-excitation module is used by default, but ABLA can be used as alternative.
- Lend
  - Added G4LENDCombinedModel class.
  - G4LENDCrossSection: IsIsoApplicable() returns false for the case of target not existing.
  - G4LENDModel: ApplyYourself() returns unchanged final state for the case of target not existing, with warning message.
  - Fixed bug in G4LENDElastic.
  - Added DumpLENDTargetInfo() method. Reduced default (VerboseLevel=0) output from models and cross-sections.
  - Fixed gamma(2.2MeV) emission from n captured by H.
  - Fixed typo in names of cross-section data set.
- Lepto-nuclear
  - G4NeutrinoElectronCcModel: new class for the final-state model of neutrino-electron inelastic interaction (charge current).
- Particle High Precision
  - Added NRESP71 model for n on C reaction.
  - Fixed bug in coherent elastic scattering.
  - Changed tolerance value and implementation in calculation of KallbachZero, to overcome cases of FPE errors.
  - Code cleanup. Fixed Coverity defects.
- Parton-String
  - G4ExcitedStringDecay: introduced smearing of resonance masses (as requested by the PANDA Collaboration).
  - G4FTFAnnihilation: improved anisotropy of secondary pions in annihilation.
  - G4DiffractiveExcitation: added protection and improved kinematics.
  - G4LundStringFragmentation: a dependence of on S is introduced only for AntiP P annihilations.
  - Added FTF/diffraction configuration interface for baryon projectile: using G4HadronicDeveloperParameters as a tool for sharing parameters between developers and experienced users.
  - Minor code cleanup.
- Pre-equilibrium
  - G4PreCompoundModel: in ApplyYourself(), pass creator model and time. Added 'isActive' flag, which can be defined via G4DeexPrecoParameters interface.
  - G4PreCompoundEmission: use G4RandomDirection() if angular sampling is disabled.
- QMD Reaction
  - Set type of de-excitation channels to 'combined'.
- Radioactive Decay
  - G4RadioactiveDecay: in BuildPhysicsTable(), removed all settings of photon evaporation; now done in G4PhotonEvaporation and in physics list. Modified LoadDecayTable() to divide the branching ratio of a specific decay channel read in the database by 100 to avoid that it is higher than 1 as prevented by G4VDecayChannel. This branching ratio is given in pc in the database while it should be smaller than 1 when setting it by G4VDecayChannel::SetBR() method. Added method ProcessDescription(). Added StreamInfo() method for printing radioactive decay parameters; call this method in BuildPhysicsTable(). Disabled correlated gamma and removed unused EM headers. In DecayIt() use GetPDGStable() in the variance reduction branch, to allow the stable nucleus at the end of the decay chain to be added to the final state particle stack; addresses problem report #2007.
  - G4ITDecay: removed all manipulations of nuclear polarization in DecayIt(), now done in G4PhotonEvaporation.
  - G4ECDecay: set the probability for selection of L and M subshells to PL1/PL=0.995, PL2/PL=0.005, PM1/PM=0.995 and PM2/PM=0.005. Close to Fe55 case.
  - New classes G4Radioactivation and G4RadioactivationMessenger for biased use only. New classes G4RadioactiveDecayBase and G4RadioactiveDecayBaseMessenger for unbiased use only.
  - Changed name of classes G4RadioactiveDecayRateVector to G4RadioactiveDecayChainsFromParent and G4RadioactiveDecayRate to G4RadioactiveDecayRatesToDaughter.
  - Requiring new data set RadioactiveDecay-5.2.
  - Note: when radioactive decay is activated, atomic de-excitation (in particular fluorescence and Auger emission) are switched on by default (overriding any EM default settings).

### Intercoms

- Use DLL export flags for static symbols in classes. Removed inline specification for two static methods in G4UImanager.

### Materials

- Added DAVIS model for optical surfaces. Use the new model with reflection and the capability of transmitting photons based on LUTs.
- G4NistManager, G4NistElementBuilder, G4NistMaterialBuilder: fixed potential thread safety issues when building element or material.
- G4Material, G4IonisParMat: fixed definition of state of a material, when a material is constructed via based material. Addressing problem report #1997.
- G4Material: improved printout; always print temperature and pressure independently on the state of the material. Apply mutex lock when defining material properties table.
- Added class G4MaterialPropertiesIndex defining indices and names for G4MaterialProperties; use the enum type instead of G4String for keys in the material (constant) property table maps and provide necessary accessors and interfaces. Keep property and constant property maps and public methods in G4MaterialPropertiesTable; these methods, GetPropertiesMap() and GetPropertiesCMap() become obsolete from the next release; GetPropertyMap() and GetConstPropertyMap() should be used instead.
- G4IonisParMat: added possibility of defining custom density effect parameters and another possibility to request parameters of a base material, which may have not exactly the same atomic composition. Set lock when user defines density effect parameters.
- G4MaterialPropertiesTable: renamed SetGROUPVEL() to CalculateGROUPVEL() and moved it from GetProperty() to AddProperty() to resolve a MT scaling problem. SetGROUPVEL() will be removed in next major release.

### Particles

- Updated properties of particles according to PDG-2017.
- Fixed inconsistency between enum definition of G4FloatLevelBase and initialization of G4Ions::G4FloatLevelBase data. Addressing problem report #1968.
- Fixed leak at construction for data allocated through G4ParticleDefinition for the sub-instance offset in the splitter. Added static method Clean() to G4ParticleDefinition, called as last in the destructor of G4ParticleTable.
- Set life time to -1.0 for all stable particles.
- Fixed problem of G4DecayTable::SelectADecayChannel() in case of sum of BR is not equal to 1.0.
- Added protection for BR<0 or BR>1 in G4VDecayChannel.
- Introduced G4GenericMuonicAtom class, used only by G4IonTable and not for tracking; processes for G4MuonicAtoms should be registered with this class. Revised G4MuonicAtomHelper, added G4MuonicAtom support.
- Requiring new data-set G4ENSDFSTATE-2.2.
- Fixed Coverity defects.

### Persistency

- GDML:
  - Fixed schema for replicas along angular axis. Addressing problem report\ #1917.
  - Added possibility to specify material properties tables for optical surfaces. Addressing enhancement request #1947.
  - Added ability to export limited number of levels in the geometry hierarchy, by specifying this through the G4GDMLParser::SetMaxExportLevel(G4int) method.
  - Enabled import/export of G4MultiUnion as a native type, no longer bound to USolids module only.
  - Added commands to G4GDMLMessenger for enable/disable stripping of names for reading and for appending or not pointers to names for writing.
  - Handle all possible variants for G4TwistedTubs, included asymmetric ones. Updated TwistedtubsRead/Write() in G4GDMLRead/WriteSolids accordingly. Fixed export of shape to correctly export end-inner/outer radii.
  - Added handling of null pointer to material in case of parallel geometries. Addressing problem report #1984.
  - Use GetPropertyMap() and GetConstPropertyMap() instead of GetPropertiesMap() and GetPropertiesCMap() in G4GDMLWriteMaterials and G4GDMLWriteSolids.
  - New GDML schema version 3.1.6 (files: gdml.xsd, gdml_solids.xsd). Added general optical surface properties block to schema. Extended schema for coping with all possible parameters for G4TwistedTubs shape.

### Physics lists

- Builders:
  - New design with base class for all builders, to properly clean memory in MT mode; added c++11 compatibility; G4BuilderInterface renamed to G4PhysicsBuilderInterface and moved to run category. Removed unused class G4TheoModelFactory.
  - OrderingParameterTable: disabled PostStep multiple-scattering.
  - G4NeutronLENDBuilder: modified setting for selection of target data.
- Constructors:
  - decay
    - G4RadioactiveDecayPhysics: use a new method AddPhysics() instead of old AddMsc(). Set time limit for the de-excitation module the same as in G4NuclideTable, so only states from this table will be created as ions. Defined new set of default parameters; enabled only X-ray emission for atomic de-excitation; internal conversion sampling in nuclear de-excitation is left fully enabled. Enabled Auger cascade.
    - G4MuonicAtomDecayPhysics use new G4MuonicAtomDecay.
  - electromagnetic:
    - G4EmStandardPhysics_option4: set final step for all particles to 10 um (except for GenericIon). Note: expected to slightly slow down the simulation but increase accuracy of range simulation. Changed msc model for e-/e+ below 100 MeV from (Urban + UseDistanceToBoundary stepping) to (GS + Mott-correction + error-free stepping). Use different G4NuclearStopping instance for G4GenericIon and other baryons. Enable Auger cascade. Set default HEP settings of the GS physics constructor.
    - G4EmStandardPhysicsWVI: use G4WentzelVIRelModel and G4hCoulombScatteringModel to take into account relativistic corrections.
    - G4EmStandardPhysics: use RayleighScattering and LivermorePhotoElectricModel. Use new parameter SetLateralDisplacementAlg96().
    - G4EmStandardPhysicsGS: use most accurate settings for the Goudsmit- Saunderson multiple-scattering model (error-free stepping and Mott-correction). Set default HEP settings of the GS physics constructor.
    - G4EmLivermorePolarizedPhysics: use upper limit 100 TeV, do not apply high energy limit 1 GeV to gamma processes.
    - G4EmLivermorePhysics, G4EmPenelopePhysics: code cleanup.
    - G4EmStandardPhysicsSS: use G4hCoulombScatteringModel to take into account relativistic corrections.
    - G4EmParticleList: new class with the list of particles for which EM processes are instantiated
    - G4EmModelActivator: use new access methods RegionsPhysics() and TypesPhysics() instead of RegionsMsc() and TypesMsc(). Allow to use both "PAIphoton" and "pai_photon" names when activating PAIphoton model.
    - All EM physics constructors now do not share multiple and single scattering processes between proton and anti_proton. All now using G4EmParticleList.
    - All DNA physics constructors use gamma configuration as in Livermore; fixed usage of SetEmModel() and AddEmModel().
    - Added G4EmDNAPhysics_option6 constructor. Added elastic scattering process for ions to all DNA constructors.
    - G4EmDNAPhysicsActivator: apply solatation model below 7.4 eV (was 4 eV) in order to absorb low-energy e- and coherently initialise models; fix for hydrogen and for helium and generic ions; code cleanup.
    - Added Geant4-DNA stationary constructors.
    - Fixed Coverity defects.
  - factory:
    - Added Geant4-DNA stationary constructors.
  - gamma_lepto_nuclear:
    - G4EmExtraPhysics, G4EmMessenger, G4BertiniElectroNuclearBuilder: added option and UI command to enable/disable e+- nuclear process. Added extra UI commands to define cross-section factors for rare processes (requirement of ShiP experiment for dark matter search).
    - Added G4LENDBertiniGammaElectroNuclearBuilder, which uses LEND for low energy gamma-nuclear interaction. Added option and UI command to use the new builder in the physics constructor of EmExtraPhysics.
  - hadron_elastic:
    - G4ThermalNeutrons: new class for addition of thermal neutron scattering below 4 eV (backported from CMS simulation).
    - G4HadronHElasticPhysics: use G4NuclNuclDiffuseElastic for the elastic scattering of light and generic ions (this is possible now because the latest version of G4NuclNuclDiffuseElastic satisfies event reproducibility).
    - G4HadronElasticPhysicsLEND: modified setting for selection of target data. Dump LEND target information.
  - hadron_inelastic:
    - G4HadronPhysicsFTFQGSP_BERT: new hadron physics similar to G4HadronPhysicsFTFP_BERT, but with QGS fragmentation of strings (instead of the Lund string fragmentation).
    - Refactored code for FTFP_BERT and register physics builders.
    - Code refactoring of QGSP_BERT, QGSP_BIC variants.
    - Added G4HadronPhysicsShieldingLEND.
    - Fix registration of cross-section data set in G4HadronPhysicsShielding.
  - limiters:
    - G4StepLimiterPhysics: fixed thread safety issue; removed potential race condition.
- Lists:
  - FTFQGSP_BERT: new experimental physics list which is similar to FTFP_BERT, but with QGS fragmentation of strings (instead of the Lund string fragmentation). Added the new list to G4RegisterPhysLists, to make available to G4PhysListFactory.
  - Added messenger with two commands to G4PhysListFactory to enable radioactive decay or optical physics.
  - Added ShieldingLEND as a new physics list.
  - Fixed problem in LBE physics-list for radio-active decay model. Fixed initialisation of G4RadioactiveDecay.
  - Added __SS option to g4alt::G4PhysListFactory.
  - Allow g4alt factory to use bare physics constructor names as things to replace/add as well as the shorter predefined extensions (e.g."EMX").
  - Code formatting.
- Util:
  - Fixed address of site for downloading LEND data. Improved instructions about download file and environment variable for the LEND data.

### Run

- New functionalities for MT:
  - Modified design of physics-lists for allowing cleanup of memory in MT mode. Introduced new class G4PhysicsBuilderInterface which all physics-lists builders inherit from. Worker threads now call G4VUserPhysicsList::TerminateWorker() to clean up physics-list thread-specific objects. G4VPhysicsConstructor holds list of TLS builders.
  - G4WorkerThread: use CleanUpAndDestroyAllWorkspaces() from workspace pools in DestroyGeometryAndPhysicsVector(). Minor code cleanup.
  - Delete G4TransportationManager, G4FieldManagerStore, G4GeometryManager and G4PathFinder singletons in G4RunManagerKernel, clearing static leaks at exit.
  - Transform G4VPhysicsConstructor split-class to adopt pointers.
  - G4MTRunManager, G4WorkerRunManager: protect against null pointer for SetUserAction() method.
  - Properly delete G4RNGHelper singleton object at the end of program.
- Other changes (non MT related):
  - Prevent adding multiple times the same sensitive-detector to the same logical volume via G4VUserDetectorConsturction::SetSensitiveDetector(). In case skip and issue a warning.
  - G4RunManager: notify visualization-manager when world volune is re-initialized.
  - Added MuAtomicCapture and DecayMuAtom to G4PhysicsListHelper.

### Track & Tracking

- G4VelocityTable: use G4ThreadLocalSingleton pattern for proper instance deletion at the end of run; use G4Log and G4Exp consistently.
- Added a case, protected by #ifdef, when a particle is a muonic atom in G4SteppingManager.

### Visualization

- Management
  - Deprecated SetUserAction(). Use RegisterRunDurationUserVisAction().
  - Replaced G4VisExtent::NullExtent by G4VisExtent() throughout.
  - Added UI command '/vis/scene/add/gps'.
  - Improved commands guidance.
  - Fix to "/vis/viewer/interpolate" for file writing viewers.
  - Added G4VVisCommand::ConvertToColour. Now used throughout vis commands.
  - Added G4VVisCommand::ConvertToColourGuidance. This avoids having to repeat it for every command that uses it.
  - "/vis/viewer/save": added .g4view if an extension is not supplied by the user.
  - "/vis/viewer/set/defaultTextColour": changed default to blue and opaque to agree with default text vis attributes.
  - Added user-selected colour to "/vis/scene/add/gps".
  - Implemented UI command /vis/drawOnlyKeptEvents. To draw selected events, the user should set this flag, then in a user action select the event to keep from G4EventManager according to a certain criterion.
  - Improved end of run printing when /vis/disable.
  - Protect /vis/enable issued before run is established.
  - Initialise G4Colour colour map.
  - Reverted default number of line segments per circle to 24.
- Modeling:
  - Added class G4GPSModel for visualisation of General Particle Source. Can be used with new UI command '/vis/scene/add/gps'. Added user-selectable colour.
  - Improved checking of G4PhysicalVolumeModel.
  - Added G4ModelingParameters::PVPointerCopyNo.
  - Improved arrow drawing. Reduced default 'lineSegmentsPerCircle' to 6 for rapid yet adequate drawing. Similar improvement to magnetic field drawing.
  - Default can be changed with new command: /vis/set/arrow3DLineSegmentsPerCircle.
- HepRep
  - Fixed Coverity defect.
- OpenGL
  - G4OpenGLViewer: minor improvement to picking (suppressing "no hits" message). Code cleanup.
  - G4OpenGLXViewer: Reverted to XA_RGB_BEST_MAP.
  - Fixed picking on MacOS, which was not working for retina display due to a screen factor *2.
  - Refine content of output of picking.
- Raytracer
  - Changed back to XA_RGB_BEST_MAP (seems OK now).
  - Simplified passing of ray-tracer pointer.
  - Fixed a bug whereby the jpeg for RayTracer was always 600x600.
  - Expanded filename numbering to 4 digits.
  Useful for producing many files for a movie.

### Environments

- G4Py:
  - Updated interfaces for release 10.4.
- ZMQ:
  - New module zmq including ZeroMQ interface (experimental).

### Data sets

- New low-energy data set version, G4EMLOW-7.3:
  - Improved and reorganized GS data.
  - Added Mott-correction data to the GS angular distributions. Updated PWA- data to the GS multiple-scattering model..
  - Added new photoeffect parameterisation using EPICS-2014.
  - Updated ecpssr shell cross section proton and alpha files.
  - Added G4DNA-CPA100 files.
  - Added PTB cross sections to dna module.
  - Updated ecpssr shell cross-section proton and alpha files.
  - Updated photoeffect parameterisation using EPICS-2014 data.
  - Updated ion elastic data files for Geant4-DNA.
- New data files for nuclides properties G4ENSDFSTATE-2.2:
  - Corrected some levels for compliance with PhotonEvaporation data-base.
- New data set version G4PhotonEvaporation-5.2 for nuclear de-excitation data:
  - Changes in U234 (z92.a234): corrected decay from 809.907 to the ground according to gamma input in DDEP pdf table. Info is missing in ENSDF. Correction addressing problem report #1967. Corrected gamma intensities from level 1040.536 according to input in ENSDF file from DDEP.
  - Removed old data; correlated_gamma files moved to main module.
  - Correction of transitions for floating levels in last 60 correlated_gamma files.
- New data set version for radioactive-decay processes, G4RadioactiveDecay-5.2:
  - Modified z33.a83 to force beta- decay of As83 directly to the ground of 83Se. The populating of the excited levels of 83SE is poorly known and the gamma spectrum will be anyway not correct (not enough ENSDF data).
- New data files for nuclear shell effects G4ABLA-3.1:
  - Updated data for ABLA-07 model version.
- New data set version for optical processes, G4RealSurface-2.1:
  - Added data for support of DAVIS model.
  - Updated and more compact LUT data.
- New optional data set, G4TENDL-1.3.2 for incident proton data:
  - Fixed Alpha/Inelastic/CrossSection/6_12_Carbon.z.
  - Deleted F37 directories, "F37" is not defined in ParticleHPInelastic.
  - New data files for d on p, t on p and d, and he3 on p, d and t, generated by inverse reactions of p on d, p on t,,, of ENDF/B-VII.1.
  - Replaced data files for p on C13 by data based on TENDL-2014; ENDF/B-VII.1 proton file only provides radiative capture final state.
  - Updated READMEs.

### Examples

- Updated reference outputs, macros and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- advanced
  - brachytherapy
    - Avoid setting the initial seed to zero.
  - ChargeExchangeMC
    - Fixed build scripts; fixed shadowing compilation warnings.
    - Cleaned up init macro.
  - eRosita
    - Fixed compilation errors and updated build scripts.
  - hadrontherapy
    - Corrected carbon beam line geometry and added new modulators.
    - Corrected definition of geometry region.
    - Added cuts definition in PhysicsList.
    - Removed HadrontherapyAnalysisManager class; now using G4tools in HadrontherapyMatrix.
    - RippleFilter geometry on PassiveCarbonBeamLine.
    - Fix geometry build in LaserDrivenBeamLine.
    - Added TIFPA beam line.
    - Removed local obsolete ion-ion physics-list. Cleanup of physics-list and local data.
  - iort_therapy
    - Clean up visualization from batch.mac.
    - Fixed CMake script for Root flags.
  - medical_linac
    - Updated batch.mac macro.
  - microbeam
    - PhysicsList, PhysicsListMessenger: removed obsolete way of cut definition.
    - DetectorConstruction: thread safe definition of magnetic field.
    - SteppingAction: simplified implementation, added check on alpha leaving the world volume.
    - Cleanup and relaxed step size constraints.
    - Modified voxel dose normalisation; updated plot.C.
  - nanobeam
    - Added usage of std::floor() in TabulatedField3D.
    - Updated EM field settings for multi-threading; changed default.mac macro.
    - Updated handling of UI commands. Code cleanup.
  - xray_fluorescence
    - Use units for angles explicitly in XrayFluoDetectorConstruction.
- basic
  - B3
    - PhysicsList: register EM physics before radioactive-decay.
  - B4
    - Added analysis scripts plotHisto.C and plotNtuple.C.
  - B5
    - Removed use of G4AutoDelete utility for thread-local magnetic-field and its manager, since not necessary as now automatically deleted by kernel.
    - Use std::array for related data members in B5EventAction to reduce code.
    - Added data members for histogram Ids and the code to retrieve them by histogram names via G4AnalysisManager.
    - Corrected the list of 2D histograms in README.
- extended
  - analysis
    - AnaEx02: fixed CMake script for Root flags.
  - biasing
    - ReverseMC01
      - G4AdjointPhysicsList: avoid resetting lateral displacement algorithm in the Urban msc model. Use SetEmModel() instead of AddEmModel() where possible in order to get rid of initialisation warning.
  - common
    - Removed generic class names prefix and introduced a meaningful one when appropriate; removed osolete event and run action classes.
    - Replaced explicit messengers with use of G4GenericMessenger.
    - Use c++11 constructs (nullptr, auto).
  - electromagnetic
    - BeginOfRunAction(): disabled storage of random seed.
    - TestEm0
      - RunAction: updated max energy for CSDARange table. Write html documentation of physics list if G4PhysListName and G4PhysListDocDir are set.
    - TestEm5
      - DetectorConstruction: corrected definition of element Chrome.
      - Run: modified normalisation of histogram 1 and 10.
      - PhysicsList: use more uniform builder names. Added DNA constructors.
      - Added DNA histograms in HistoManager.
      - Added new flags in StackingAction.
      - Added dna.mac macro and updated pixe.mac macro. Updated fluo.mac macro.
    - TestEm7
      - Fixed macros.
    - TestEm8
      - PhysicsList, DetectorConstruction, DetectorMesenger, StepMax: made StepMax initialisation more thread safe.
      - PhysicsList: restored functionality for old command "/testem/phys/addPhysics pai".
    - TestEm12
      - Updated PhysicsList.
    - TestEm14
      - Fixed printout.
    - TestEm17
      - PhysicsList: fixed EM standard setting; added emstandard_opt4.
    - TestEm18
      - Revised implementation.
      - Allow for optional tracking of secondary particles.
      - Added edep.mac macro.
  - eventgenerator/pythia/decayer6
    - Updated for changes in common module.
    - Updated main(); removed G4UI_USE, G4VIS_USE macros and moved initialization in macros.
  - exoticphysics
    - channeling
      - Added support for G4Crystal.
      - Added support for G4Channeling process.
      - Modified sdht_ID to fSDHT_ID.
      - Removed G4VIS_USE, G4UI_USE.
    - dmparticle
      - Simplified example for light dark matter (LDM) particles. It consists of LDM Bremsstrahlung process for protons creating G4LDMPhotons. The latter decays creating G4LDMHi and G4LDMHiBar LDM scalar particles. They can scatter on nucleons and electrons. The first version has electromagnetic processes only. Hadron constructors can be added similarly to hadronic examples.
    - monopole
      - Migrated to multi-threading and g4tools for analysis.
      - Fixed lost functionality of histograms and monopole parameter definitions. Simplified histograms definition and filling.
      - Fixed geometry build in G4MonopoleTransportation.
    - phonon
      - Split build/run/compare test into three: build and run, compare timing outputs, compare caustic outputs. Added new CMake script ComparePhonon.cmake to perform comparison of timing and caustic output/reference files.
      - Fix in CMake macros to resolve CMP0054 related warnings on Windows.
      - Updated timing output files.
    - ucn
      - ExUCNDetectorConstruction: commented out a wrong use of AddConstProperty().
  - field
    - field01
      - Fixed Valgrind error in F01FieldSetup::CreateStepperAndChordFinder() method; first delete all dependent objects, then create new ones.
    - field02
      - Fixed F02ElectricFieldSetup::Update() method. Now all old objects are deleted first, and then new ones are created; renamed UpdateStepper() to UpdateIntegrator() to clarify its role.
    - field03
      - Fixed Valgrind errors in field setup's update method; first delete all dependent objects, then create new ones.
  - g3tog4
    - Updated for changes in common module.
    - Updated main(); removed G4UI_USE, G4VIS_USE macros and moved initialization in macros.
  - hadronic
    - BeginOfRunAction(): disabled storage of random seed.
    - Archived example Hadr05, now replaced by physicslist/genericPL.
    - Hadr00
      - Added possibility to enable radioactive decay.
    - Hadr01
      - Fixed histograms and radioactive decay.
    - Hadr03
      - SteppingAction: take into account e- from internal conversion.
    - Hadr05
      - This example has been removed from the extended/hadronic set and refactored in a new example, genericPL in the extended/physicslists set.
    - NeutronSource
      - Run: remove normalisation of all histograms.
      - Added comments.
  - medical/DICOM
    - Added DICOM Digital Head model. DICOM_HEAD library can be used as input data set. Added downloading of DICOM data in CMake build (used only with DICOM_USE_HEAD option).
    - Output files .g4dmc and .g4dcmb are now created in the user directory and no longer in the DICOM data library.
    - Using optional DICOM data-set G4DICOM-1.1.
  - medical/dna
    - chem2
      - Modified time steps.
    - dnaphysics
      - PhysicsList: limit high energy by 1 GeV. Updated flags for EM processes.
      - Added more variables to ntuple; improved SteppingAction.
      - Updated numbering scheme in SteppingAction.
      - Added flag for Capture.
      - Added visualisation to input macro dnaphysics.in.
      - Updated plot.C and numbering scheme.
    - icsd
      - New example for Ionisation Cluster Size Distribution. Allows the calculation of the distribution concerning the number of ionisations per event in an small cylinder of nanometers scale, typical dimensions of a 10 base pairs piece of chromatin. First use of new DNA-like material's cross-sections experimentally obtained at PTB (Rad. Phys and Chem. 130 (2017) 459-479) for electrons and calculated for protons on THF, TMP, PY and PU materials.
    - mfp
      - New example showing how to calculate mean free path of particles in liquid water using the Geant4-DNA physics processes and models.
    - microdosimetry
      - Adapted to same scheme as dnaphysics example.
      - Fix to analysis manager call in SteppingAction.
      - Updated physics-list; manual approach of G4DNA activator.
      - Fixed compilation problem when Qt is enabled.
      - Cleanup and reordering of processes.
      - Updated flags for EM processes.
    - microyz
      - Updated setup according to recent developments.
    - neuron
      - New example allowing for the modelling of neuron cell irradiation, including physical, physico-chemical and chemical processes (e.g. production of oxidative radical species in the vicinity of neurons). It uses realistic geometrical models of neurons generated from a standardized SWC file representing neuron morphology.
    - range
      - Reduced energy range in range.in macro. Code cleanup.
    - slowing
      - New example showing how to simulate slowing down spectra for electrons in liquid water using the Geant4-DNA physics processes and models.
    - spower
      - New example showing how to calculate stopping power of particles in liquid water using the Geant4-DNA physics processes and models.
    - svalue
      - Updated plot.C.
    - wvalue
      - Updated plot.C and wvalue.in macro.
      - Code cleanup.
  - medical/fanoCavity
    - PhysListEmStandard_GS, PhysListEmStandard_SS, PhysListEmStandard_WVI, PhysListEmStandard_option3: use the same step function as in physics_list factory for corresponding constructors, ensure that step function parameters may be redefined by UI commands.
    - Switch to NIST material description (keeping material densities defined in previous version).
    - Set default thread number to 2 instead of maximum number of cores.
    - Simplified default printout.
  - medical/fanoCavity2
    - Switch to NIST material description (keeping material densities defined in previous version).
    - Default thread number is not set to the maximum available cores.
  - medical/GammaTherapy
    - Ported to work in multi-threading.
    - Fixed bugs in PrimaryGeneratorAction and RunAction.
    - Improved main input macro.
  - optical/OpNovice
    - Exercising new DAVIS LUT surface model.
    - Fix gui.mac, which wrongly executed vis.mac.
  - parallel
    - MPI
      - Updated build scripts.
    - ThreadsafeScorers
      - Fixes to deletion/clearing of static maps between runs.
      - Removed some unnecessary typedefs.
      - Set the number of threads to the number of cores.
  - persistency
    - gdml/G02
      - Added commented block in G02DetectorConstruction to show how to limit the number of levels in the geometry hierarchy to be exported.
    - P01, P02
      - Include ROOTNewMacros for reflex_generate_dictionary. Updated generated source name.
      - Fixed CMake script for Root flags.
  - physicslist
    - factory
      - New example demonstrating the usage of G4PhysListFactory to build the concrete physics list.
    - extensibleFactory
      - New example showing how to define a physics list from Geant4 physics constructors; it demonstrates the usage of g4alt::G4PhysListFactory to build the concrete physics list.
    - genericPL
      - New example demonstrating the usage of G4GenericPhysicsList to build the concrete physics list at run time.
    - shared
      - New shared classes module for physics-lists examples.
  - radioactivedecay
    - Activation
      - New example for survey of the energy deposition and particle's flux from a hadronic cascade.
    - rdecay01
      - PhysicsList: read new PhotonEvaporation data set; set AugerCascade via G4EmParameters; in ConstructProcess(), couple SetARM() and SetAugerCascade(); SetStoreAllLevels(true). Use time limit from G4IonTable for de-excitation module.
      - TrackingAction: simplified way to get mean-life. Count primary ions.
      - Run: added printout of mean time life.
      - BeginOfRunAction(): disabled storage of random seed. EndOfRun(): print time life > 0 only.
      - Updated user data Cf238.mac and No252.mac, and related README.
      - Fixed format of data file UserRadData_z98.a238.
      - Added several macro files.
    - rdecay02
      - PhysicsList: use G4EmStandardPhysics and G4EmExtraPhysics; defined EM parameters as it was in previous version of the example, disabled electro- and muon-nuclear.
      - Removed EmStandardPhysics and GammaPhysics.
  - visualization/userVisAction
    - Copied exampleB1.in to userVisAction.in. Copied run1.mac and run2.mac from example B1. All macros now include /run/initialize.
    - Removed init.mac, no longer used. /run/initialize is in the new run1.mac and run2.mac.