Geant4 8.0 Release Notes

December 16th, 2005

The code and binary libraries for the supported systems are available through our Source Code Web page.

Please refer to the Geant4 User Documentation for further information about using Geant4.

## Contents

1. Supported and Tested Platforms
2. AIDA and CLHEP
3. Known Run-Time Problems
4. Compilation Warnings
5. Known Run-Time Warnings
6. Items for migration of the user code
7. Detailed list of changes and fixes

## 1. Supported and Tested Platforms

Official platforms:

- SUN Solaris 5.8, C++ CC-5.4 Patch 111715-02.
- Linux, gcc 3.2.3.
  This configuration was tested on 32 bits architectures (Intel) and 64 bits architectures (AMD) with the Scientific Linux CERN 3 (SLC3) distribution (based on RedHat Linux Enterprise 3). Versions of Geant4 have also been compiled successfully on other Linux distributions, like Debian, Suse or other RedHat systems.
- Windows/XP and CygWin Tools with: Visual C++ 7.1 .NET

More verified configurations:

- SUN Solaris 5.8, C++ CC-5.5
- Linux, gcc-3.4.4, gcc-4.0.2
- Linux, Intel-icc 8.0
- MacOS 10.4, gcc-4.0
- Windows/XP and CygWin Tools with: Visual C++ 8.0 (Visual Studio 2005)

Platforms configured but not tested and not supported:

- AIX 4.3.2, xlC 6.0
- DEC V4.0, cxx C++ V6.1-027
- HP 10.20, aCC C++ B3910B A.01.23
- SGI V6.5.5, CC 7.2.1

## 2. AIDA and CLHEP

Geant4 8.0 requires the installation of CLHEP.
Tests have been performed with CLHEP-1.9.2.2
The software has been verified also with CLHEP-2.0.2.2.

Geant4 8.0 examples with histogramming cowork with AIDA 3.2.1 implementations. These include:

- PI and included components
- JAS (Java Analysis Studio)
- Open Scientist

AIDA headers can be downloaded from: http://aida.freehep.org

## 3. Known Run-Time Problems and Limitations

For a complete list of outstanding run-time problems and to submit any problem you may find running this version of Geant4, please refer to the Geant4 Problem Reporting System.

## 4. Compilation Warnings

There may be compilation warnings on some platforms. We do not believe that any will lead to incorrect run-time behaviour.

## 5. Known Run-Time Warnings

The following message can be written to error output while tracking. We believe it does not give rise to incorrect behaviour.

        G4PropagateInField: Warning: Particle is looping
        -  tracking in field will be stopped.
           It has performed 1000 steps in Field while a maximum of 1000
           are allowed.

## 6. Items for migration of the user code

Some migrations may be necessary for advanced uses of features in Geant4 in order to upgrade from release 7.1 to release 8.0. Note that a full reinstallation of libraries (or a full recompilation) and a recompilation of user applications is required.

Creating and instantiating physics lists : impact of the revised, "non-static", particle definitions

In this release, all particle-definition objects are instantiated dynamically when the method `ConstructParticle()` of the user's `G4VUserPhysicsList` is called. This method is invoked when the user's physics list is assigned to the `G4RunManager` (whereas previously it was called at the time of `G4RunManager::Initialize()`). The new scheme allows the user to set a number physics quantities to alternative values (e.g. masses of elementary particles) before particles are instantiated with the values provided by Geant4. This new scheme creates some restrictions which can affect on the existing users's codes, in particular when user-defined physics lists are used:

1. Physics processes and models must be instantiated in the `ConstructProcess()` method of the user's physics list.
   In particular physics processes or models must not be data members of a physics list. The reason is that some existing physics processes and models require that particles have been instantiated already. If a process is a data member of the physics list, it is instantiated when the physics list's constructor is called, and thus before the invocation of `ConstructParticle()`.
   The "educated-guess" physics lists distributed with previous Geant4 releases are affected by this change. The revised physics lists, which are distributed with this release, should be used in their place. A user adopting his/her own physics list, will need to perform a similar revision in case a `G4Exception` with the following message occurs when the physics list is instantiated:
   Error message:

             Access to G4ParticleTable for finding a particle or equivalent operation
             occurs before G4VUserPhysicsList is instantiated and assigned to
             G4RunManager. Such access is prohibited by Geant4 version 8.0.
             To fix this problem, please make sure that your main() instantiates
             G4VUserPhysicsList and set it to G4RunManager before instantiating
             other user classes such as G4VUserPrimaryParticleGeneratorAction.

   Fix: All physics processes and models defined as data members of the physics list must be moved to the `ConstructProcess()` method, and must be explicitly instantiated by `new` operator. The revised physics lists provide a reference for this revision.
2. User action classes (derived from `G4VUserPrimaryGeneratorAction, G4UserRunAction, G4UserEventAction, G4UserStackingAction, G4UserTrackingAction` and `G4UserSteppingAction`) must be instantiated after the physics list is instantiated and after it is set to `G4RunManager`. Please note that the user's detector construction class is a user initialization class and thus is not affected by this restriction.
   The user should revise the `main()` function if the following `G4Exception` occurs:
   Error message (for `G4VUserPrimaryGeneratorAction`):

             You are instantiating G4VUserPrimaryGeneratorAction BEFORE your
             G4VUserPhysicsList is instantiated and assigned to G4RunManager.
             Such an instantiation is prohibited by Geant4 version 8.0. To fix this
             problem, please make sure that your main() instantiates G4VUserPhysicsList
             AND set it to G4RunManager before instantiating other user action classes
             such as G4VUserPrimaryParticleGeneratorAction.

   Fix: Edit `main()` to make sure all user action classes are instantiated after the physics list is set to `G4RunManager`.

`G4VProcess` base class

A signature change is implemented in the `G4VProcess` base class.
The virtual method `StartTracking()` defined in `G4VProcess` now takes `const G4Track*` as argument in its signature. Users implementing their own physics process and making use of this virtual method, will have to modify the signature accordingly.

Multiple Scattering electromagnetic process

In the electromagnetic standard package major changes have been introduced concerning the Multiple Scattering process. To improve the behaviour of low energy particles (electrons in particular, but affecting also hadrons), the Multiple Scattering now limits the step size for the particles. This restriction is undertaken using several criteria, and is applied systematically, in all volumes and materials. In addition a model of the correlation between lateral displacement and final direction has been implemented (see the Physics Reference Manual for further information).
As a result, most physical observables become more stable when varying production cuts (i.e. less "cut dependent"). There is a corresponding cost, a CPU-time penalty, when utilising the same value of the production thresholds. This penalty can be significant, depending on the user's setup and the cut values. For many use cases the increased stability will allow the choice of higher production thresholds, recovering computing performance while maintaining physics performance.
To enable the user to investigate its benefits, a mechanism is provided to deactivate this step limitation. The new method `MscStepLimitation(bool)` of `G4MultipleScattering` disables these new step limitations. In addition, in order to help the transition, the old version is available for this release 'frozen' in the class `G4MultipleScattering71`. Several examples (in extended/electromagnetic) provide sample physics lists which use this older version.

Geometry modeler

For setups including parameterised geometries by material, an interface extension is introduced in `G4VPVParameterisation` base class for the `ComputeMaterial()` method. An optional argument has been added, that provides a constant pointer to the touchable of the parent of the current volume, enabling access to its copy number and other properties, and those of all its ancestor volumes. User code making use of this feature will have to be updated accordingly. A compilation warning should flag to take into account this interface change.

Internal classes implementing the framework for twisted solids have been renamed. User code depending on this framework will have to be modified accordingly.

Fast parameterisation

The concept of "envelope" and "ghost-volume" for fast-parameterisation has been merged with the `G4Region` in this release. Therefore, a logical-volume no longer acts directly as an "envelope", since this attribute now assigned to `G4Region`. Please refer to the User Guide for Application Developers for the detailed information. The relevant modules have migrated accordingly. See `exampleN05` which has been revised to demonstrate this new mechanism.

A design iteration has taken place for the GFlash fast shower parameterisation model and some classes were renamed to follow the new implementation and design for envelopes. User code making use of the GFlash tool should migrate accordingly.

TRD models for cluster parameterisation have been retired. The functionality is now provided directly as physics processes and included in the `electromagnetic` packages.

Migration to `<sstream>` from deprecated `<strstream>`

`<strstream>` types are no longer in use by the Geant4 kernel in this release. Also any protection from compilation warnings by the compiler for deprecation of such header are no longer implicitely included. User code therefore will be exposed to implement such migration to `<sstream>`, if not already done.

System of Units and Physical Constants

Geant4 8.0 can be used either with version 1.9.2.2 of CLHEP or 2.0.2.2. Explicit usage of the `CLHEP` and `HepGeom` namespaces is made in the Geant4 code. However, for what concerns Units and Physical Constants, these are still kept available in the global namespace for convenience and backward-compatibility.

New Installation flags

New installation flags have been introduced:

- `G4VIS_BUILD_RAYTRACERX_DRIVER, G4VIS_USE_RAYTRACERX`: allowing installation and usage of a new optional `RayTracer` module based on X11 graphics and allowing for interactive ray-tracing visualization.

## 7. Detailed list of changes and fixes

These are the main new features/fixes included in this release since the last patched public release (for the detailed list of fixes/additions, please refer to the related History files provided in most packages):

### Configuration

- `Configure` script:
  - Added new RAYTRACERX driver to setup.
- Added `G4VIS_BUILD_RAYTRACERX_DRIVER` and `G4VIS_USE_RAYTRACERX` control flags.
- Added workaround to `binmake.gmk` to allow for physics-lists to link with DLLs on Windows. Added new options to WIN32-VC setup for porting on VC++8 compiler.

### Digitization & Hits

- Introduced new `G4VPrimitiveScorer` and `G4VSDFilter` base classes, `G4THitsMap` template class, `G4MultiFunctionalDetector` class and several concrete scorer and filter classes. These enhancements make ease for scoring applications in particular in medical and space fields, such as dose or energy-deposition scoring.
- Added a new sub-directory "utils" for new concrete primitive scorers and concrete filters. Introduced `G4THitsMap` template class.

### Electromagnetic Processes (Low-energy)

- Fixes in atomic relaxation and `G4hLowEnergyIonistation`.
- Implemented migration to `<sstream>` from deprecated `<strstream>`.

### Electromagnetic Processes (Standard)

- Standard
  - `G4MultipleScattering`:
    - General update: stepping algorithm has been modified; this affects most results; the algorithm is now much less cut dependent and provides more precise energy in sampling calorimeters with normal cuts about 1 mm. By default the the process now limits the step (step limitation on), with `facrange = 0.02`.
    - New function `MscStepLimitatiion(bool,double)` to allow for switching the step limitation algorithm and change the `facrange` factor.
  - `G4MscModel`:
    - Updated version: now taking into account `theta-phi` correlation in the final state.
    - Nuclear size correction is removed; it is now included in the tabulated cross section values for `Tkin > 10 MeV`.
  - `G4MultipleScattering71, G4mscModel71`: new classes corresponding to the old frozen version of the multiple-scattering algorithms included in release 7.1.p01. Default `facrange = 0.2`.
  - `G4UniversalFluctuation`:
    - Cut dependence of the energy-loss distribution has been reduced.
    - Introduced correction for very small loss to avoid zero energy loss.
  - `G4eBremsstrahlungModel`: now taking into account electron recoil into in the final state. Important for hard bremssrahlung emission.
  - `G4BraggIonModel`: not using `G4Alpha`.
  - `G4PEEffectModel, G4BetheHeilterModel, G4eplusAnnihilation`: final energy of incident particle is set to zero in PostStep.
  - `G4GammaConversion52, G4BetheHeitlerModel`: replaced usage of `RandBit()` by `G4UniformRand()` to correct cases of event irreproducibility.
  - `G4PAIModel, G4PAIPhotonModel`: changes for support of CLHEP 2.0.X series.
- Muons
  - `G4MuPairProductionModel`: added protection needed for sampling of pair energy in the case of low cuts.
- HighEnergy
  - `G4BraggNoDeltaModel, G4BetheBlochNoDeltaModel`: magnetic change is removed, models are assumed to be used only for very heavy electrically charged particles.
  - `G4hhIonisation`: new class for simulation of very heavy electrically charged particles (ATLAS request).
  - `G4eeToHadrons`: fixed verbosity; fixed initialisation.
  - `G4eeToHadronsModel`: fixed verbosity.
  - Minor cleanup: removed inline constructors and destructors.
- Utils
  - `G4EmCorrection`: fix on calculation of effective charge and Mott correction for ion energies about 10 MeV. Relevant for heavy ions like Pb.
  - `G4EmProcessOptions`: fixed verbosity definition for energy loss processes (LHCb request).
  - `G4EmCalculator`: fixed problem in `ComputeDEDX()` for ions.
  - `G4VMultipleScattering`:
    - Introduced mechanism of step limitation for multiple scattering. Added public method `SetMscStepLimitation(bool)` to allow for switching on/off the new mechanism, which may affect both CPU performance and quality of results.
    - Fix in a protection in `GetContinuousStepLimit()`.
  - `G4VEnergyLossProcess`:
    - New default parameters: `Integral=true; SetStepFunction(0.2,1mm), lambdaFactor=0.8`. Fixes also problem report #780 connected with d-electron production `tmax < cut`.
    - Updated subcutoff regime; `G4VSubCutoffProcessor` is not used any longer.
  - `G4VEmModel`:
    - Fixed default energy range from `0.1*keV` to `100*TeV` to make easier initialisation of PAI models.
    - Removed inlined constructors and destructors.
  - `G4VEmModelManager`: added protection for arithmetic operations with `cut=DBL_MAX`.
  - `G4VEmProcess`: using integral mode only for charged particles; default lambdaFactor=0.8.
- Xrays
  - `G4XTRRegularRadModel, G4XTRGammaRadModel, G4XTRTransparentRegRadModel`: new models for simulation of transition radiation, they are using the interface `G4VXTRenergyLoss::fExitFlux=true` for the description of XTR at the exit of the radiator.
  - XTR process is now transformed to be discrete.

### Event

- Removed dependency on HepMC, moved G4HepMC classes to extended examples.
- Issue exception from constructors of `G4UserEventAction` and `G4UserStackingAction` to protect against their instantiation before `G4VUserPhysicsList` is instantiated and set to the run-manager.
- Put protection against null pointer in `G4ParticleGun::SetParticleDefinition()`.
- Modified `GNUmakefile` to follow intercoms->graphics_reps migration for `G4VGraphicsScene` and `G4VVisManager` classes.

### General Processes: Management, Cuts, Parameterisation

- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Management
  - `G4VProcess::StartTracking()` now takes `G4Track*` as an argument. `G4ProcessManager::StartTracking()` now invokes this new method. Functionality to be used for future developments.
- Cuts
  - Implemented migration to new scheme considering `G4Region` as envelope for fast-parameterisation.
- Parameterisation
  - Implemented migration to new scheme considering `G4Region` as envelope for fast-parameterisation. Corrected setting of envelope volumes and solid in `G4FastTrack`.
  - Migrated from old scheme for `G4Exception` and some cosmetics.

### Geometry

- Implemented changes for support of CLHEP-2.0.X.
- Added fake default constructor for all concrete volumes, solids, base classes and relevant utility classes for handling of direct object persistency.
- Merged concept of "envelope" to `G4Region` for fast-parameterisation.
- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Divisions
  - Protected case of generic construct for `G4Polyhedra` and `G4Polycone` currently NOT supported for divisions.
- Management
  - Added virtual method `GetPointOnSurface()` to `G4VSolid` to be implemented in the concrete solids classed for returning a random-point uniformly distributed on the surface. Added concrete implementation to `G4ReflectedSolid`.
  - Added new pure virtual methods to identify regular structures in physical-volume: `IsRegularStructure()` (returns `true` if the underlying volume structure is regular) and `GetRegularStructureId()` (Returns non-zero code in case the underlying volume structure is regular, voxel-like). If non-zero the volume is a candidate for specialised navigation such as 'nearest neighbour' directly on volumes).
  - Revised `G4VPVParameterisation`: changed signature of `ComputeMaterial()`, adding parent touchable pointer; this refinement enables easy use of nested parameterisations. Additional methods allow for nested parameterisation to be identified (`IsNested()`) and to provide their material via new interface class `G4VVolumeMaterialScanner` (`GetMaterialScanner()`).
- Navigation
  - Added ability to use nested parameterisations to parameterised navigation.
- Solids
  - Added concrete implementation for `GetPointOnSurface()` to relevant solids. The method returns a random point according to a quasi-uniform distribution along the surface.
  - CSG:
    - Fixed bug in `G4Torus::Inside(p)` for `phi` sections. Fixes problem report #810.
  - Specific:
    - Introduced new solid `G4EllipticalCone`, a full cone with elliptical base that can be cut in `Z`.
    - Introduced new solid `G4Tet` implementing a tetrahedra defined by 4 points in space.
    - Introduced new solid `G4Ellipsoid` with possible cut in `Z`
    - `G4Polyhedra`, `G4Polycone`: protected case of generic construct for visualization. Introduced explicit flag and method `IsGeneric()` to identify the kind of constructor used.
    - Renamed baseline classes for twisted solids. Added polyhedron definition for `G4TwistedTrap`, `G4TwistedTrd`, `G4TwistedBox` and `G4TwistedTubs` for visualization. Fixed bug in `G4VTwistSurface::ComputeLocalPoint(p)` for point coordinate transformation.
- Volumes
  - Introduced first implementation for optional check of overlaps at construction to `G4PVPlacement` and `G4PVParameterised` volumes. Default resolution of 1000 points is defined for the check. The check is disabled by default.
  - Introduced method `CheckOverlaps(p)` for placements and parameterised volumes. The resolution for the check can be specified providing the number of points wished to be generated.
  - Added `G4VNestedParameterisation` class with ability to use parent information to compute/change material.
  - Added methods to identify regular structures in physical-volume derived classes (replicas, parameterised-volumes, placements).

### Global

- Added Surface/Mass unit (cm2/g) in `G4UnitsTable`.
- Added `G4Version` header, including definitions for software versioning.
- Get rid of hard-coded numbers for `DBL_MIN, FLT_MIN, DBL_DIG, DBL_MAX, FLT_DIG, FLT_MAX/MAXFLOAT`. Use `numeric_limits` from `<limits>` instead in `templates.hh`.
- Revised `G4strstreambuf` for migration to `<sstream>` from deprecated `<strstream>`.
- Introduced changes for support of CLHEP-2.0.X series:
  - Introduced explicit usage of `CLHEP::` and `HepGeom::` namespaces for vector and geometry types.
  - Added wrapper headers for units and constants to allow for usage in the global namespace. NOTE: units and constants are currently NOT moved to the CLHEP namespace.
- Removed `#undef __DEPRECATED` statement in `G4Types.hh` for `<sstream>` deprecation by the gcc compiler. Added forward declaration for `__void__` type to be used for definition of fake default constructors for usage of direct object persistency.

### Graphical Representations

- Added polyhedron descriptions for new `G4Ellipsoid` and `G4EllipticalCone` shapes.
- Source code cleanup: removed redundant intermediate class `G4VVisPrim` and redundant virtual assignment operators.
- Added time to set of allowed attributes in `G4AttValues`.
- Moved `G4VGraphicsScene` and `G4VVisManager` from intercoms module; replaced default arguments `G4Transform3D::Identity` by `G4Transform3D()` to avoid initialisation problems with static objects with dynamic libraries.
- Fixed dispatch method name to `DispatchToModel()` in `G4VVisManager`.
- `G4Colour` now has a `G4String->G4Colour` colour map and static data members for common colours.
- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Implemented changes to support CLHEP-2.0.X series, adding explicit namespace to CLHEP types in `HepPolyhedron` and `BooleanProcessor`.

### Materials

- `G4NistMaterialBuilder`: added chemical formulas for number of materials, added temperature and pressure explicitly for each material; it will allow to have other than STP parameters for gases.
- Added fake default constructor for isotopes, elements, materials and relevant related classes, for usage of direct object persistency of detector description.
- Added default boolean argument for warning in methods `GetMaterial()`, `GetElement()`, `GetIsotope()`.

### Hadronic Processes

- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Implemented changes to support CLHEP-2.0.X series.
- models/coherent_elastic:
  - `G4ElasticHadrNucleusHE`: added high energy elastic scattering on protons.
  - `G4HadronValues`: use PDG value instead of static particle pointers.
  - Fixed memory leaks, fixed 4-momentum balance. Fixed compiler warnings.
- models/cascade:
  - Added `G4ElasticCascadeInterface` and modified `G4CascadeInterface` to allow for elastic scattering of `p, n, pi+, pi-, gamma` using the Bertini cascade model.
- models/chiral_invariant_phase_space:
  - The Charged Currents `(nu,mu)` neutrino-nuclear reactions are now implemented for all energies. The recommended energy is below 320 `GeV`, where the model is compared with data. Above 320 `GeV` it is just a formal extrapolation. Both Quasi Elastic and Inelastic interactions are implemented. In future the developed non-perturbative CHIPS method can be used for simulation of `(nu,e)` reactions.
  - New capture process `G4QCaptureAtRest` valid for `pi-, K-, anti-proton, mu-, tau-, Xi-, Omega-, neutron, anti-neutron, anti-Sigma+`.
  - Muon neutrino and anti-neutrino scattering added to `G4QCollision` process.
  - New cross section classes: `G4QANuMuNuclearCrossSection` and `G4QNuMuNuclearCrossSection`.
  - Memory leak fix for nuclear mass management in `G4QPDGCode` to use Geant4 masses of nuclear fragments.
- models/low_energy:
  - `G4LElasticB`:
    - Copy of `G4LElastic` process with modified relativistic kinematics. Addresses problem report #534.
      Added protection for low momentum (`<10 MeV/c`) particles where CM sampling of `cos(theta)` is not valid.
  - `G4LCapture`: fixed incorrect unit in momentum components. Addresses preblem report #726.
- models/neutron_hp:
  - Added four new models: `G4NeutronHPorLCapture`, `G4NeutronHPorLEInelastic`, `G4NeutronHPorLElastic`, `G4NeutronHPorLFission`.
    These models should be used instead of the corresponding `G4NeutronHPCapture`, `G4NeutronHPInelastic`, `G4NeutronHPElastic` or `G4NeutronHPFission` models when a detector setup contains elements or isotopes not found in the G4NDL data set. The new models use the existing high precision models when data exist, but switch to the Low Energy Parameterized models when data is absent, thus avoiding a crash.
- models/parton_string:
  - Fixed bug in `G4ExcitedStringDecay` for method `EnergyAndMomentumCorrector()`: removed comparisons of 4-ector quantities with integers, replaced with comparisons of doubles.
  - Corrected and simplified code for random number generation in `G4QGSMSplitableHadron`, avoiding unnecessary crashes.
- models/radioactive_decay:
  - Replaced usage of NULL with 0.

### Parameterisation Models

- Archived old TRD parameterised models. Functionality now included in standard EM processes.
- gflash:
  - Design iteration. Added concrete sampling shower parameterisation and tuning classes.
  - Corrected typo to name `GFlashHomoShowerParamterisation`, to become `GFlashHomoShowerParameterisation`. Replaced affected files.
  - Fixed usage of random numbers to allow for event reproducibility. Code cleanup for Software Reference Manual.
  - Implemented migration to new scheme for considering `G4Region` as envelope for fast-parameterisation.

### Particles

- Introduced new scheme for non-static particle definitions.
- Implemented migration to `<sstream>` from deprecated `<strstream>`.

### Run, Intercoms and Interfaces

- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Intercoms:
  - Moved `G4VGraphicsScene` and `G4VVisManager` to graphics_reps module.
- Run:
  - Implemented migration to new scheme considering `G4Region` as envelope for fast-parameterisation.
  - Invoke exception in constructors of `G4VUserPrimaryGeneratorAction` and `G4UserRunAction` to protect against their instantiation before `G4VUserPhysicsList` is instantiated and set to the run-manager.
  - Removed redundant invokation of `ConstructParticle()` from `G4RunManagerKernel::InitializePhysics()`. All particles must be instantiated in `ConstructParticle()` method in the physics list along with the introduction of non-static particle definition scheme.
  - Use `G4Version.hh` for version and date in `G4RunManagerKernel` constructor.
  - Added necessary changes for support of CLHEP-2.0.X series.

### Track and Tracking

- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Track
  - Fix in `G4Track::GetVelocity()`. Use the material pointer in the PreStepPoint.
  - Modified `G4ParticleChangeForGamma` to update the step for the 'PostStep' in any case.
- Tracking
  - Issue exception in constructors of `G4UsertrackingAction` and `G4UserSteppingActio` to protect against their instantiation before `G4VUserPhysicsList` is instantiated and set to the run-manager.
  - Modifications to `G4VTrajectory::DrawTrajectory()` for enhanced trajectory drawing.
  - Added new development classes `G4RichTrajectory` and `G4RichTrajectoryPoint`.

### Visualization

- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- management
  - Added enhanced trajectory drawing to let interactively change how trajectories are modeled. Initial options are `/vis/modeling/trajectories/create/drawByCharge` and `/vis/modeling/trajectories/create/drawByParticleID`, with additional commands to set specific colors. Coming in the next release will be `drawByMomentum`, `drawByOriginLogicalVolume`, etc. There is also a mechanism to let define a user's own `drawBy` class and then invoke it from the command line. More information can be found in the User Guide for Application Developers.
  - Added `/vis/viewer/rebuild` comand to force visit of kernel.
  - Removed `MyVisManager` (was deprecated in previous major release).
  - Initial window size can now be set from `/vis/open` and `/vis/viewer/create` (RayTracer, OpenGL and OpenInventor).
  - Background colour can now be set by `/vis/viewer/set/background` (RayTracer, OpenGL and OpenInventor).
  - Non-uniform scaling is now supported, `/vis/viewer/scale` (and `scaleTo`). Like `zoom` (and `zoomTo`) but provides different scale factors along different axes (OpenGL and OpenInventor).
  - Comand `/tracking/storeTrajectory 1` is now issued automatically when doing `/vis/scene/add/trajectories`.
  - Attempt to add volume to a scene already containing the world now gives now a warning.
  - Introduced optional second pass over run-duration models in `G4VSceneHandler::ProcessScene()`.
- modeling
  - Added enhanced trajectory drawing (see notes in management section above).
  - Fixed (non-)culling of transparent volumes.
  - Implemented radial replicas for G4Tubs.
- OpenGL
  - Initial window size can now be set from `/vis/open` and `/vis/viewer/create`.
  - Background colour can now be set by `/vis/viewer/set/background`.
  - Non-uniform scaling is now supported (see notes in management section above).
  - Added `G4OpenGLViewerDataStore` to facilitate access of viewer data by scene handler.
  - Re-implemented transparency button in OpenGLXm.
  - Fixed treatment of triangular polygons for drawing of auxiliary edges (also known as soft lines).
  - Fixed bug in which stored transparent objects were being lost.
  - Introduced rendering of transparent polyhedron objects.
  - Introduced smooth shading. Also window size hints for Xm.
  - Added `G4OpenGLXmViewerMessenger`. Corrected text position.
- OpenInventor
  - Initial window size can now be set from `/vis/open` and `/vis/viewer/create`.
  - Background colour can now be set by `/vis/viewer/set/background`.
  - Non-uniform scaling is now supported (see notes in management section above).
  - Allowing to read a `g4view.iv` file at creating of a view. If found, the scene graph in `g4view.iv` is added at head of the overall scene graph. Permits easy out of band customization of the scene without having to touch the code.
  - Corrected treatment of edgeflags.
- RayTracer
  - Introduced RayTracerX driver. Builds same jpeg file as RayTracer, but simultaneously renders to screen interactively.
  - Initial window size can now be set from `/vis/open` and `/vis/viewer/create`.
  - Background colour can now be set by `/vis/viewer/set/background`.
- Tree
  - Refined guidance and printing.
- XXX
  - Improved guidance for rendering polyhedron objects.

### Physics lists

- Implemented migration of physics lists to non static particles scheme. Hadronic lists upgraded to Package 5.0.
- Added verbosity level as argument for the physics lists (default is with verbosity on).
- Defined hadron-ionisation and multiple-scattering to the same list of hadrons as in version 7.1.
- Do not allow installation of shared libraries when Geant4 granular libraries are installed and used.

### G3toG4 Tool

- Implemented migration to `<sstream>` from deprecated `<strstream>`.

### Examples

- Updated reference outputs.
- Implemented migration to `<sstream>` from deprecated `<strstream>`.
- Implemented changes for support of CLHEP-2.0.X series.
- advanced
  - brachytherapy
    - Fixed bug in the RunAction. The results of the simulation (energy deposit, position) are stored in a hit collection.
  - composite_calorimeter
    - Updated hadronic physics list (commented QGSP_Model)
  - cosmicray_charging
    - Updated hadronic physics setup.
  - gammaray_telescope
    - Introduced GammaRayParticles and updated hadronic physics setup.
  - hadrontherapy
    - Updated initialisation of particles and input macros
  - medical_linac
    - Added new methods to messengers for the selection of detector features.
    - Updated input macro for visualization and code cleanup.
  - radioprotection
    - Added Eta and EtaPrime particles and introduced ions.
    - Introduced usage of general particle source and updated macros.
  - Tiara
    - Removed obsolete `G4VisManager` reference..
    - Migrated to non-static particles and to CLHEP namespace.
    - Updated configuration scripts.
  - underground_physic
    - Migrated to non-static particles and hadronic constructor required for `G4Decay`.
    - Removed step limitation from multiple-scattering.
  - xray_fluorescence
    - Fixed compilation problem with `UIXm` and allow for running in batch-mode.
  - xray_telescope
    - Allow compilation without analysis and batch mode, abilitated ASCII output also without usage of AIDA.
    - Updated obsolete GPS commands and code cleanup.
- extended
  - analysis/AnaEx01
    - Made .aida as the default file format.
    - Updated README, analyis/Lab/AnaEx01.py to work with OpenScientist-v14r0.
    - Made application easily instrumentable with `G4Lab::UIOnX`.
  - biasing/B01 & B02
    - Tidied up code for correct deletion at the end of run in main(). Addresses problem report #802.
  - electromagnetic/TestEm1
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
  - electromagnetic/TestEm2
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
  - electromagnetic/TestEm3
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
    - Corrected bug in lateral leakage calculation (stepping action).
    - Introduced `TrackingAction` for energy flow initialization.
    - Modified energy flow calculation in geant3 exercise.
  - electromagnetic/TestEm5
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
    - Fixed initialisation of non-static hadrons according to new particle definition scheme.
  - electromagnetic/TestEm6
    - Added GenericIon to the PhysicsList.
    - Extended test to `mu+mu-` and `pi+pi-` pair creation processes and `G4hhIonisation` in order to test all involved processes.
  - electromagnetic/TestEm7
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
    - Fixed initialisation of non-static hadrons according to new particle definition scheme.
  - electromagnetic/TestEm9
    - Added new command `/testem/phys/mscStepLimit`.
    - Fixed initialisation of non-static hadrons according to new particle definition scheme.
  - electromagnetic/TestEm10
    - Production cuts are moved to Physics list providing independent gamma, electron and positron cuts in radiator and detector regions.
  - electromagnetic/TestEm11
    - Created PhysListEmG4v71 (g4v71) for `G4MultipleScattering71`.
  - electromagnetic/TestEm12
    - New example illustrating how to use the concept of 'process' in order to implement a constraint on the step size of the particle trajectories.
  - field/field02
    - Removed cluster models from detector construction.
  - field/field03
    - Removed cluster models from detector construction.
  - medical/DICOM
    - Updated interface to parameterisation and documentation.
  - medical/GammaTherapy
    - Added g4v71 builder.
  - paralled
    - Synchronised examples according to evolution of kernel libaries.
  - parameterisations/gflash
    - New example showing usage of gflash fast shower parameterisation.
  - runAndEvent/RE02
    - New example demonstrating full functionality of new filter and scoring classes.
  - visualization
    - New examples for UserVisAction and standalone demo.
- novice
  - N03
    - Modified physics list.
    - Quietened vis manager in batch mode.
  - N05
    - Implemented migration to new scheme considering `G4Region` as envelope.
    - Use `RandGamma` from CLHEP end removed custom RandomGamma function.
  - N07
    - Fully revised to use new filter and scoring classes.