Geant4 9.3 Release Notes

December 18th, 2009

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. CLHEP and AIDA
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. Known Run-Time Warnings
9. Geant4 Software License
10. Detailed list of changes and fixes

## 1. Supported and Tested Platforms

Official platforms:

- Linux, gcc-4.1.2 and gcc-4.3.2 (SLC5).
  Tested on 32 and 64 bit architectures (Intel or AMD) with Scientific Linux CERN 4 (SLC4) (based on RedHat Linux Enterprise 4) and Scientific Linux CERN 5 (SLC5) (based on RedHat Linux Enterprise 5). Geant4 has also been successfully compiled on other RedHat versions as well as Debian and Suse.
- MacOSX 10.5 with gcc-4.0.1 and 10.6 with gcc-4.2.1
- Windows/XP and CygWin Tools with: Visual C++ 9.0 (Visual Studio 2008)

More verified configurations:

- Linux, gcc-4.4.2, gcc-4.3.2, gcc-3.4.6 (SLC4)
- Linux, Intel-icc 11.1

Platforms configured but neither tested nor 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
- MacOSX 10.4, gcc-3.3
- SGI V6.5.5, CC 7.2.1
- SUN Solaris 5.8, C++ CC-5.5.

## 2. CLHEP and AIDA

This release of Geant4 has been verified with CLHEP, release 2.0.4.5. Use of a different CLHEP version may cause incorrect simulation results.

Geant4 9.3 examples with histogramming co-work with analysis tools compliant to AIDA 3.2.1 interfaces (for details, see Appendix 2 of the Users Guide for Application Developers). AIDA headers can be downloaded from: http://aida.freehep.org

## 3. Items for migration of the user code

Listed here is some relevant information on developments included in this release, some of which may require migrations (mainly for users of advanced Geant4 features) in order to upgrade from release 9.2 to release 9.3. Note that for all users a full re-installation of libraries (or a full recompilation) and a recompilation of user applications is required.

Run

- A new method `CheckParticleList()` has been added to `G4VUserPhysicsList` to check the consistency of the list of defined particles before instantiating the physics processes. For example, `e+, e-` and `gamma` should exist if any electromagnetic process is simulated... A fatal exception will be thrown if any particle type mandatory for the simulation is missing.
  It is possible to skip this check, by making use of the method `DisableCheckParticleList()` from `G4VUserPhysicsList`.

Low Energy Electromagnetic physics

- All Low Energy Electromagnetic Physics process classes have been entirely redesigned (migrated) in the Geant4 toolkit in order to offer to users a coherent approach for the modeling of electromagnetic physical interactions. The software design is now common to both 'standard' and 'low energy' electromagnetic modules. These changes affect Livermore, Penelope, ICRU'73 ion and Geant4-DNA Physics. Users are invited to modify their own physics-list(s) in order to use these new processes and models. The web page indicated below describe how to use these new processes and models, with examples of physics list implementations and new features of the adopted common design:
  https://twiki.cern.ch/twiki/bin/view/Geant4/LoweMigratedProcesses Please note that it is still possible to use previous implementation of the low energy processes for backward compatibility, however, these models are no longer maintained and will be removed in the near future. A warning message will also be displayed when running older low energy model versions.

Standard Electromagnetic physics

- It is recommended to migrate user custom physics-lists by replacing the `G4MultipleScattering` physics process with the following:
  - `G4eMultipleScattering` for `e+-`;
  - `G4MuMultipleScattering` for muons;
  - `G4hMultipleScattering` for hadrons and ions.
  The former `G4MultipleScattering` still exists in the Geant4 distribution but will be deleted in a future release.

  Nuclear stopping power is no longer part of ionization processes, and is now responsible only for electronic stopping power; for simulation of nuclear stopping, a new process `G4NuclearStopping` should be added to custom physics-lists.

Physics Lists

- Qualification for several physics-lists have changed. Several are now declared obsolete. A new category of 'experimental' is used for newer physics-lists or ones with new physics options. Some physics-lists have been removed. See in Section 10 for the details.

Visualization

- The OpenGL Print EPS facility now always depends on the compression library, `zlib`. An internal version of this library is provided for users whose system does not provide the library `libz`. To use this internal version, set the environment variable `G4LIB_USE_ZLIB`. Users who build with the standard Geant4 `Configure` script should not have to worry about this as the environment will automatically be set up correctly.

Data Sets

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

- New data for measured optical surface reflectance, RealSurface.1.0.
- New low-energy data set, G4EMLOW.6.9.

## 4. New Developments and Capabilities

Geometry & Field

- A new stepper `G4NystromRK4` offers better computing performance in integrating the trajectories of charged particles in a magnetic field. It uses the standard Nystrom method and a novel analytical estimation of the integration error. This reduces greatly the number of field calls per integration step (from 10 to 3). It achieves comparable accuracy with `G4ClassicalRK4` in test cases. It can be used only for pure magnetic fields which are not time-dependent.
- A new class `G4CachedMagneticField` caches the value of a magnetic field class, in order to reduce the number of calls to an expensive field calculation or interpolation method. For positions within the chosen radius of the previous position where it evaluated the field, it returns the last value of the field is automatically. It can be used only for pure magnetic fields which are not time-dependent.

Detector description persistency

- GDML: it is now possible to customise the reader as well as the writer to treat ad-hoc user extensions to the GDML schema. The GDML writer now also supports dumping of optical surface properties associated with surfaces and materials.

Low Energy Electromagnetic physics

- Software migration: as explained in section 3, all low energy electromagnetic processes and models are now adopting the same design as for the Standard Electromagnetic Physics, for a coherent approach of the modeling of electromagnetic physical interactions.
- Livermore Physics: new `G4LivermorePolarizedPhotoElectricModel` and `G4LivermorePolarizedGammaConversionModel` are available for the simulation of polarized photon interactions.
- ICRU'73 ion model : the upper energy limit of ICRU'73 stopping power tables was extended to `1 GeV/nucleon` (compared to `10 MeV/nucleon` in the previous release). Revised tables were included for `G4_WATER, G4_WATER_VAPOR, G4_Cu, G4_NYLON-6-6` (all tables provided by P. Sigmund/Univ. of Southern Denmark).
- Geant4-DNA Physics:
  - Energy range coverage of several Geant4-DNA Physics models has been extended: electron elastic Champion's model from `7.4 eV` up to `10 MeV`; electron ionization Born's model from `11 eV` up to `1 MeV`; proton excitation Born's model up to `100 MeV`; proton ionization Born's model up to `100 MeV`.
  - Geant4-DNA models are valid for liquid water only and use now the `G4_WATER` NIST material as liquid water material definition. Users should define liquid water as `G4_WATER` in their application(s).
- Data set: G4EMLOW version 6.9 is required.

Standard Electromagnetic physics

- The set of multiple-scattering models has been expanded:
  - `G4UrbanMscModel92` is the default model for `e+/e-` equivalent to the Urban model included in the previous release 9.2. It is used as the default and in the `Option1` electromagnetic physics constructors for physics-lists.
  - `G4UrbanMscModel93` is a tuned version of the Urban model used for `e+/e-` in all other physics constructors of physics-lists (`Option2, Option3, Livermore, Penelope`).
  - `G4GoudsmitSaundersonMscModel` is a new model for `e+/e-` based on formalism developed for Penelope and EGSnrc.
  A new relativistic model `G4PairProductionRelModel` is available for gamma conversion into `e+e-` pair. In this model, the LPM effect is taken into account. The model is suggested for use in high-energy astrophysics applications.

Hadronic physics

- Improved and extended the `FTF` model. Improved its pion absorption on nucleons, introduced Reggeon cascade stage, and added excitation energy calculation. Tuned the model parameters of nuclear de-excitation and implemented charge-exchange for `pn->np` in elastic and inelastic interactions.
- The validity of the pion-nuclear cross-sections in `G4PiNuclearCrossSections`, and the nucleon-nuclear cross-sections in `G4NeutronInelasticCrossSections` and `G4ProtonInelasticCrossSections` has been extended to `100 TeV,` by assuming a constant cross-section at very high energies.
- Glauber-Gribov cross-sections for ion-ion collisions are now available in the class `G4GGNuclNuclCrossSection`, spanning from `0.1 MeV` to `100 TeV`.
- The nucleon-nucleon and pion-nucleon partial cross-sections used in the Bertini cascade were reviewed and the incorrect cross-sections found below `1 GeV` were fixed. This results in slightly improved agreement with data below `1 GeV`.
- The CHIPS model has been extended with hadronic interactions covering all energies for all hadronic particles; in addition hadron- and lepton-nuclear reactions are extended to high energies (~TeV). It can be used by choosing the new `CHIPS` physics-list. CHIPS ion-ion elastic scattering model is also now available.
- An option was added to allow models for elastic scattering to be treated in a similar way to inelastic models. Models can now be assigned to the process class `G4WHadronElasticProcess`.
- `G4NeutronRadCapture` is a simplified new model which produces a single photon after neutron capture. 4-momentum is conserved in the reaction.
- Improved probabilities and channels in the `G4GEM` model bring it into closer agreement with data.
- Unit conversion errors were corrected in fission and Fermi break-up models.

Optical physics

- Measured angular reflectivity distributions for common surface treatments and reflectors have been incorporated as look-up tables (LUT).

Physics Lists

- New electromagnetic physics constructors combining standard and low-energy electromagnetic models are available: `G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmDNAPhysics, G4EmLivermorePolarizedPhysics`.
- New default builder for optical photon physics has been added: `G4OpticalPhysics` together with its messenger, `G4OpticalPhysicsMessenger`.
- All lists based on `FTF` and `CHIPS` modelling use the improved versions of `FTF` and `CHIPS`.
- Newly added physics lists:
  - `CHIPS`, a physics-lists which uses the CHIPS model for nuclear interactions of all energies and particles..
  - `QGSP_INCL_ABLA`, a list using INCL/ABLA. It is mainly intended for use with energies less than `3 GeV`. This is useful for e.g. spallation studies and Accelerator Driven Systems (ADS) applications.
- Other new physics-lists, already present in 9.3-Beta:
  - Some are based on existing lists, with different transitions between models:
    `FTFP_BERT_TRV`, lower the transition energy from BERTini to FTFP in the range from `6-8 GeV`.
  - Others offer options for EM physics:
    `FTFP_BERT_EMV, FTFP_BERT_EMX, QGSP_BERT_EMX, QGSP_BIC_EMY`.
- Attempts to reduce usage of LEP in the intermediate energy range:
  - `QGSP_BERT_NOLEP`, using QGSP starting from `8.5 GeV`;
  - `QGSP_FTFP_BERT`, using FTFP in the energy range between BERT and QGSP.

Visualization, Graphical Representations & Interfaces

- Improved ability of visualization system to render Boolean solids. Certain cases involving very near co-planar faces used to result in incorrect visualization (though not incorrect tracking). An existing mechanism to deal with this has been improved; this mechanism used to shift slightly the position of one solid in a chosen direction. Now it attempts shifts in different directions by varying small amounts until one is found that does not give an error. The system still can not handle every situation. However it results in far fewer visualization inaccuracies than were seen previously in such difficult cases.
- Visualization attributes can now be individually set for each volume within a nested parameterization.
- Rich Trajectories and Rich Trajectory Points now include additional information such as the complete volume path of the starting and ending volume including all replica and copy numbers, etc.
- A new command, `/vis/viewer/set/targetPoint`, sets a specific point to be the center of the view. Helps with doing extreme zoom in to a specific point.
- gMocrenFile: First Beta release of this new visualization driver to output data in the `gdd` format used by the gMocren volume visualization tool. `gMocrenFile` can include volume data from sensitive detector volumes, or from command-based scoring meshes, in addition to detector geometry and trajectories. Use new command `/vis/scene/add/psHits` to add scorer hits to gMocren output. For details, see the Application Developers Guide and the gMocren web site.
- `G4UIExecutive`: a new utility class for automatic instantiation of a user session selected according to defined environment variables `G4UI_USE_*`.
- Qt: Continued improvements to this new driver. The `Qt` visualization driver and the associated `Qt` User Interface now work well on almost all platforms and with both Qt3 and Qt4 (but still considered a Beta release due to a few rare combinations of commands on certain platforms that can cause crashes).
- PostScript printing: vector and bitmapped printing through the UI command `/vis/ogl/printEPS` is now fully functional for all OpenGL viewers (previously only for OGLIX and OGLSX). Related new commands are `/vis/ogl/set/printSize` and `/vis/ogl/set/printFilename`.
- HepRepFile: new UI commands of the form `/vis/heprep` allow easy control of output file name and output directory, whether a file name should be reused (rather than having a sequential suffix appended at each new file) and whether culled geometry volumes should be included. Also fixed a bug in representation of `G4Tubs` which had caused wrong visualization for cases in which the tube was at an unusual angle.

## 5. Expected effects on physics and performance

Geometry

- The new ad-hoc memory allocation system for touchables in navigation has shown an average CPU speed improvement of ~5% and a reduction of overall memory allocation and fragmentation for reasonably complex detector setups.

Low-energy Electromagnetic physics

- Computing performance of low energy models has been significantly improved thanks to new implementations for data loading and interpolation methods, transparent to the user's application.
  No significant changes on the physics outcomes are expected due to the new software design of process and model classes, or from these new implementations of data loading and interpolation methods.

Standard Electromagnetic physics and cuts

- Initialization of the physics-tables is now considerably faster, being measured up to a factor 3, depending on the application complexity.
- A more precise Spline interpolation for the physics-tables, provides accuracy of the order of 0.1%.
- A new method `ResetConverters()` has been added to `G4ProductionCutTable`. This method, if called once initialised the run, allows to reduce the memory footprint by clearing temporary loss tables and range vectors used at initialisation.

Hadronic physics

- Improvements in the de-excitation code (`G4CompetitiveFission`, `G4FermiBreakup`, etc.) produce better agreement with IAEA benchmark data below `200 MeV`.
- Bug-fixes in `G4GEM` evaporation code remove odd-even `A` (in fragment mass) discrepancies with triple differential benchmark data.
- Bertini cascade now generates 10% less memory churn (creation and deletion of objects) and is about 6% faster as a result.
- Improved low energy partial cross-sections in Bertini cascade give slightly better agreement with low energy benchmark data (`< 1 GeV`).
- Improvements in INCL/ABLA code allow `QGSP_INCL_ABLA` physics list to run much longer (several thousand events) without crashing.
- Improvements in the `FTF` high energy model, allow the model to be used successfully down to `3-5 GeV` incident particle energy.

## 6. Known Run-Time Problems and Limitations

- Reports have been made of particle tracks stuck at a volume boundary or at an interface between volumes. This occurs infrequently, on the order of one step per 10^11, but can effect large productions. The behaviour involved particles which do not progress but move in very small steps, and as a result the simulation of this track never finishes.
  - A partial solution is implemented in this release, which uses an existing mechanism to identify better these stuck tracks. It is able to find all such tracks in the setups reported, using a large multiple of the value of the geometrical tolerance for the setup. Users should pay attention that the value is chosen well for their setup in case they encounter a similar problem (using the existing functionality for setting this value).
  - The treatment for these stuck tracks is to abandon the relevant track. This results in the track being killed by the `G4Transportation` process. A warning is issued (if compiled in verbose mode, the default) in the case that the energy of the track is above a threshold energy. Its default value is `100 MeV`. This value should be chosen by a user in order to get warning for all particles of energy important to your simulation. A new value can be assigned using the `SetThresholdWarningEnergy` method of `G4Transportation`.

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. Known Run-Time Warnings

The following message may be written to standard output at the end of a program:

        G4Transportation: Statistics for looping particles
           Sum of energy of loopers killed:
           Max energy of loopers killed:

It provides the total energy (in `MeV`) of tracks killed due to excessive number of steps ('looping') during the simulation, and the maximum energy of such a track. Such behaviour can be due to looping in magnetic fields or being abandoned due to being stuck at geometrical boundaries, as mentioned in Section 6.

In case either of these reported energies is significant, we recommend increasing the verbosity of `G4Transportation` to obtain information for each track killed. A user can change the threshold energy above which particles are killed more reluctantly (only after significant additional effort) using the method `SetThresholdImportantEnergy` of `G4Transportation`. The default value is `250 MeV`.

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

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

- Configure script:
  - New simplified layout for queries and updated some defaults.
  - Fixed detection of QtCore library; addressing problem report #1079. Removed of -s switch to sed in Qt.U to fix problem with Qt setup.
  - Added flag to allow running with query options on non-interactive terminal. Resolves issue reported in Hypernews Install-and-Config #1213.
  - Added new data set for `G4REALSURFACEDATA` variable and updated `G4LEDATA` data set version.
  - Corrected text for installation of `g3tog4` module; `cernlib` is not required.
  - Removed query on analysis; now `G4ANALYSIS_USE` flag has to be set explicitely by the user, if necessary.
  - Added force build of `zlib` when WIN32 GL or Inventor vis drivers are built.
- Added `G4OPTDEBUG` option for hybrid optimized-debug build also to `Darwin-g++` and `WIN32-g++` configurations.
- Corrected inclusion of -lz for zlib in architecture.gmk; corrected also inclusion of the G4zlib library in link list in binmake.gmk for the case of global libraries.
- binmake.gmk: added include paths to new CHIPS modules.
- G4VIS_USE.gmk: fixed dependency issues on WIN32-VC for `gl2ps` utility library in visualization. Added new gMocren include path. Removed references to obsolete GAGTREE driver.
- Darwin-g++.gmk: added paths to `$QTHOME/include` and `$QTHOME/lib` to setup for Qt4 configuration.
- WIN32-VC.gmk: added `gd32.lib use32.lib` to `OGLLIBS` to fix problems of linking when `G4LIB_BUILD/USE_WIN32_SESSION` is not set.

### Digitization & Hits

- Corrected counting of flux and current passing through curved surfaces (affecting cylinder and sphere surface scorers).
- Added missing virtual keyword for qualification of `CheckROVolume()` and `FindROTouchable()` methods in `G4VReadOutGeometry`.
- Added a few accessors for visualization to `G4VScoringMesh`.

### Electromagnetic Processes

- Adjoint
  - New revised electromagnetic processes for "Reverse MonteCarlo" technique. All e- processes have been improved and adjoint proton and ion ionisation have been added. The use of adjoint cross section matrices can be now limited only to e- Ionisation and Ion ionisation.
- High Energy
  - Simplified initialisation in `G4mplIonisationModel` and `G4eeToHadronsMultiModel`.
  - `G4AnnihiToMuPair`: added method `CrossSectionPerVolume()`; added integral option to `PostStepDoIt()`, providing more precise simulation near cross-section threshold.
  - `G4eeTo3PiModel`: fixed vector product in matrix element.
  - Some code cleanup: improved comments, avoid inlined virtual methods.
- Low Energy
  - Added `G4PenelopeBremsstrahlungModel`, namely Bremsstrahlung according to Penelope model, now inheriting from `G4VEmModel`. Completed migration to standard-EM design for all Penelope processes.
  - Added `G4RayleighScattering` process (inheriting from `G4VEmProcess`) describing Rayleigh scattering. Removed `G4Rayleigh` to avoid duplication.
  - Added `G4LivermoreIonisationModel`, first implementation of low-energy ionisation in the new design. Updated Livermore photon processes classes for handling of compound materials; added gamma particle and energy range test in cross section computation.
    Updated public interface of `G4eIonisationCrossSectionHandler` in order to facilitate migration from `G4LowEnergyIonisation` to `G4LivermoreIonisationModel`. Set default angular generator in `G4LivermorePhotoElectric` as Sauter-Gavrila.
  - First fully tested version of `G4LivermoreBremsstrahlungModel`, completing migration of Livermore processes to new design.
  - General cleanup of new model classes for Livermore and Penelope processes.
  - Fixed bug in `G4PenelopeRayleigh` (calculation of `mfp` for compounds), and in momentum normalization in `G4PenelopeBremsstrahlungModel`. Fix in `G4PenelopePhotoElectricModel` to avoid misleading warnings.
  - Added proton case in `G4CrossSectionExcitationMillerGreenPartial`.
  - Design update, bug fixes and models update for atomic shell hadronic cross-sections calculation.
  - Cleared annoying printout from `G4AugerData` transition table.
  - Added `ActivateAuger()` method to Penelope Compton and Ionisation, so that all Penelope models have now the same interface.
  - Added protections in `G4eIonisationSpectrum` and `G4eIonisationParameters`, addressing problem report #1042.
  - Revision of `G4IonParametrisedLossModel`. Added `G4IonDEDXHandler`, a new handler class used by the revised model class. Added `G4VIonDEDXScalingAlgorithm`, used by the handler; removed `G4IonParametrisedLossTable`. Moved from original ICRU'73 classes to new class `G4IonStoppingData`, capable of reading stopping power data files stored in the data set; with the new tables the upper energy limit of ICRU'73 stopping powers is increased to `1 GeV/nucleon`. Added modifier for energy loss limit parameter. Changed default energy loss limit to smaller value (from 0.15 to 0.01) to avoid approximate loss description in case of large steps. Removed nuclear stopping from model since dedicated process is available in standard EM package. Minor fixes applied in energy loss computation. Bug fix avoiding wrong ion ranges in case different cuts are used for a given material in different regions. Added `UpdateRangeCache()` method, removed `GetRange()` method.
  - Added new scaling algorithm `G4IonDEDXScalingICRU73`, to obtain heavy ion stopping powers for ions not covered by ICRU'73 report (scaled from existing ICRU'73 data). Included algorithm in ion model, extending the applicability of the model to very heavy ions.
  - Geant4-DNA processes and models:
    - New migrated processes and models.
    - Added ability for DNA charge change processes to kill particle without total energy deposit.
    - Increased energy range validity of `e-` elastic Champion model up to `10 MeV`.
    - Extended high energy coverage of proton ionisation (`G4DNABornIonisationModel`) and excitation (G4DNABornExcitationModel); decreased temporarily high energy coverage of electron ionisation from `30 keV` to `20 keV`.
    - Added `G4_WATER` NIST material and verbose condition to all Geant4-DNA models.
    - Bug fix in `G4DNABornIonisationModel` for energy deposit.
    - Improved energy limit display.
    - Modified low energy limit of `e-` elastic Champion model to be used with new data set. Extended coverage of `e-` ionisation model as well.
    - Fixed cross section computation bug in `G4DNAScreenedRutherfordElasticModel` and `G4DNAChampionElasticModel`.
    - Added vapor water shell constants to `G4DNARuddIonisationModel`.
    - Added message to obsolete non-migrated Geant4-DNA cross section and final state classes, and non-migrated Livermore and Penelope classes.
  - Modified classes `G4VeLowEnergyLoss, G4eLowEnergyLoss` and `G4hLowEnergyLoss` according to updates in `G4PhysicsVector`.
  - New implementation for data loading and interpolation methods; `LoadData()` method now loads the data from the `G4EMLOW` dataset and, then calculates the respective logarithmic values during initialization. Both data formats (original and logarithmic) are loaded to EM datasets and used later by interpolation methods to perform faster calculations. `LoadNonLogData()` method implements the old version for data loading and interpolation.
  - Requires new data set G4EMLOW-6.9.
- Muons
  - `G4MuIonisation`: fixed initialisation for allowing to configure external model of fluctuations. Simplified initialisation in `G4MuBetheBlochModel`, `G4MuBremsstrahlungModel` and `G4MuPairProductionModel`.
  - `G4EnergyLossForExtrapolator`: removed hidden bin to use full scale of of `G4PhysicsVector`; set `linLossLimit` to 0.01.
  - `G4MuBetheBlochModel`: compute density effect correction using new method of `G4IonisParamMat` class, allowing to apply revised parameterization of the density effect.
  - `G4MuMultipleScattering`: use `G4UrbanMscModel90` by default.
  - Some code cleanup: improved comments, avoid inlined virtual methods.
- Polarisation
  - Bug fix in `G4PolarizationHelper::GetSpinInPRF()` for wrong normalization of `Y` component.
  - Bug fix in `G4PolarizedAnnihilationModel::PostStepDoIt()` for wrong treatment in error check.
  - Bug fix in `G4StokesVector::RotateAz()` for wrong usage of vector product.
  - Simplified initialisation in G4PolarizedAnnihilationModel.
- Standard
  - Simplified initialisation of all models and code cleanup.
  - `G4PEEffectModel`: substituted `ComputeMeanFreePath()` with `CrossSectionPerVolume()` resulting in minor CPU speedup for compound materials.
  - Added new class `G4HeatedKleinNishinaCompton`, prototype model for plasma.
  - New class `G4PairProductionRelModel`, relativistic model for gamma conversion.
  - Energy loss models:
    - `G4UniversalFluctuation`: modification in width correction, the dependence of the correction on energy deposition at previous steps is removed, width correction function is used instead. Addresses report from T2K setup.
    - `G4IonFluctuations`: removed extra phenomenological factor in fluctuation width.
    - `G4BohrFluctuations`: changed internal parameter to provide for smoother transition to Landau regime in the case of small cuts.
    - Set `linLossLimit` to 0.02 in `G4ionIonisation` allowing to smooth computations of mean energy loss of ions.
    - `G4BetheBlochModel` and `G4MollerBhabhaModel`: compute density effect correction using method of `G4IonisParamMat` class, applying revised density effect parameterisation.
    - `G4BetheBlochModel`: fixed and simplified initialisation for ions needed for the new `G4IonParametrisedLossModel` of low-energy package. Minor speedup in `CorrectionsAlongStep()` method.
    - `G4BetheBlochModel, G4BraggModel, G4BraggIonModel`: removed computations of nuclear stopping power, which will is provided by the dedicated process, some CPU speedup.
    - `G4WaterStopping`: fix to Ar data; added Fe ion data.
  - Added new classes `G4NuclearStopping` and `G4ICRU49NuclearStoppingModel`, a new model providing computation of nuclear stopping.
  - `G4PAIModel`, `G4PAIPhotonModel`: removed usage of random numbers at initialisation, to avoid potential non-reproducibility issues.
  - Added new `G4alphaIonisation` process to be used in experimental physics-lists.
  - Single and multiple scattering:
    - Added `G4UrbanMscModel92` and `G4UrbanMscModel93` classes, corresponding to 9.2 and 9.3 versions of the Urban multiple scattering model.
    - Set default model `G4UrbanMscModel92` for `G4eMultipleScattering`.
    - `G4UrbanMscModel93`: new tuning for the central part and for the tail of the angular distribution using the old e- scattering data only (Phys. Rev. 84 (1951) 634; Phys. Rev. 61 (1942) 254). New version of `theta0` and correction in tail tuning using MuScat data.
    - `G4WentzelVIModel` and all `G4UrbanMscModel*`: use generic methods of `G4VMscModel` to access safety and other information with the geometry modeller.
    - Added new alternative multiple-scattering model for `e+-`, `G4GoudsmitSaundersonMscModel`.
    - Added warning in obsolete multiple-scattering classes `G4MultipleScattering, G4UrbanMscModel, G4UrbanMscModel2, G4MscModel71`.
    - `G4hMultipleScattering`: removed unused obsolete methods.
    - `G4eCoulombScatteringModel`: added relativistic factor to Rutherford cross section; added cut per recoil using proton production threshold (`1 mm` cut in range corresponding to `100 KeV`); Reduced low-limit from `1 KeV` to `0.1 KeV` to provide smoother transport cross-section table. Added protection for very low energies and changed screening parameters; fixed kinematic for ion/ion scattering.
    - `G4CoulombScatteringModel`: fixed energy in the center of mass reference system; added cut per recoil using proton production threshold.
- Utils
  - `G4VEmModel`:
    - Moved multiple-scattering methods to derived class `G4VMscModel`.
    - Added new methods `SampleDeexcitationAlongStep()`, `GetParticleChangeForLoss`, `GetParticleChangeForGamma`.
    - Insure definition of pointers to the current `G4Element` and `G4MaterialCutsCouple` objects both at initialisation and at run time.
  - `G4VMscModel`:
    - Added generic methods used by all multiple-scattering models `InitialiseSafetyHelper()`, `ComputeSafety()`, `ComputeGeomLimit()` and `ComputeDisplacement()`.
    - Set default `facsafety` to 0.3 and `range-factor` to 0.04 to be the same as in `G4UrbanMscModel92`.
  - `G4VEnergyLossProcess, G4VEmProcess, G4VMultipleScattering`:
    - Set high energy limit to `10 TeV` and number of bins to 77. Adopt updated `G4PhysicsVector` with no longer hidden bin.
    - Added initialisation of `polarAngleLimit` and `highEnergyLimit` parameters for all models.
    - Fixed bug in method `RetrieveTables()`; check that each its physics-vector is retrieved before setting the `SplineFlag`.
  - `G4VEnergyLossProcess, G4VEmProcess`:
    - Added calls to de-excitation post-step; added de-excitation along-step per region.
    - Added `ActivateDeexcitation()` method in `G4EmProcessOptions` and related UI command to messenger.
  - `G4VMultipleScattering`:
    - Added initialisation of generic multiple-scattering model parameters
    - Added `SetModel()` method, allowing to overwrite default.
    - Removed obsolete method `GetMscContinuesStepLimit()`.
  - `G4LossTableManager, G4EmProcessOptions, G4EnergyLossMessenger`:
    - Added parameter `FactorForAngleLimit` with accessors, modifiers and UI command, to be used in the computation of limit on -t (invariant momentum transfer) inside single scattering and `G4WentzelVI` models.
  - `G4EmCalculator`:
    - Added possibility to be used by DNA low-energy processes taking into account special DNA particles.
    - Added method `FindIon()`
    - Improved computation for electronic stopping power of ions using `CorrectionAlongStep` method of `G4vEnergyLossProcess` allowing to be applied for any model including the model based on ICRU'73 data.
    - Fixed bug in selection of models.
  - `G4EmConfigurator`: fix for the case when only fluctuation model is set and main model is the default.
  - Added `G4EmConfigurator` in `G4LossTableManager` providing for easier addition of models per region.
  - `G4EmSaturation`: use PDG encoding instead of pointer to `G4ParticleDefinition`.
  - `G4EmCorrections`: fixed bug reported in physics-list forum #532.
  - `G4LossTableBuilder`: added protection in `BuildRangeTable()` against zero `dEdx`. Use copy constructors to create physics vectors in order to reduce number of calls to `exp()` function.
  - `G4EmModelManager`:
    - Fixed energy range selection algorithm for the case of a small intersection of model energy intervals.
    - Fixed energy range selection algorithm for the case when there is an intersection of energy regions of standard and low-energy models.
    - Reduced size and number of internal vectors if no model per region are initialized.
    - Avoid to initilise unused models; simplified initialisation by smoothing procedure. The size of executable should be reduced.
  - `G4EmElementSelector`: added protection for zero cross section at first and last bins of physics vector and disabled Spline interpolation.
  - Added `G4AtomicShell` class from use by the low-energy module.
  - Added new interface class `G4VAtomDeexcitation`.
- Xrays
  - Exclude short-lived particle from `IsApplicable()` for `G4Cerenkov` and `G4Scintillation` processes.

### Error Propagation

- Inclusion of `pi+, pi-` and proton in physics list.
- Added possibility to account for error deflation (needed to make 'smoothing').
- Corrected usage of `G4ThreeVector` constructor in `G4ErrorMagFieldLimitProces`.

### Event

- Introducing `G4SmartTrackStack` class. By using this new stack as the urgent stack of `G4StackManager`, the next track popped up from the stack is not necessarily the last track stored in the stack, but the track of same particle type as the previous one, as long as such a track exists in the urgent stack. This mechanism is expected to improve the performance for ultra-large scale simulation such as LHC, by increasing the cache hit rate of the physics tables.
  The use of `G4SmartTrackStack` is temporarily optional. To use it, one should uncomment the `#define` line in `include/evmandefs.hh`.
- Added UI comand `/event/stack/verbose` providing a short report of peak number of tracks in the urgent stack.
- New classes implementing the "Reverse MonteCarlo" technique: `G4AdjointPosOnPhysVolGenerator`, `G4AdjointPrimaryGenerator` and `G4AdjointStackingAction`.

### General Processes

- Cuts
  - `G4VRangeToEnergyConverter`: modified implementation of `ConvertCutToKineticEnergy()` to improve performance. Measured a factor 2 to 3 improvement in initialisation speed when building physics tables. Modified `BuildRangeVector()` where integration is perfomed in this method; extended for `e+/e-`. Changed `TotBin` to be constant (i.e. same for all converters) and set to 100 (200 for previous versions). Added `MaxEnergyCut` (`10 GeV` set in default). Added `fRangeVectorStore` to ensure that range-vector is created only once for each material. Do not apply converter for neutron, anti-proton, and anti-neutron.
  - A new method `ResetConverters()` has been added to `G4ProductionCutTable`. This method allows to reduce the memory footprint by clearing temporary loss tables and range vectors used at initialization, if invoked when starting the first run of a session.
  - Added possibility to handle cuts for protons.
  - Added new command `/cuts/setMaxCutEnergy` to messenger.
- Optical
  - Added capability of simulating surface reflections with Look-Up-Tables (LUT), containing measured optical reflectance for a variety of surface treatments. Requires new data set `RealSurface-1.0` controlled by environment flag `G4REALSURFACEDATA`. Courtesy of M.Janecek and W.Moses (LBNL).
  - `G4OpBoundaryProcess`: added initialization of reflectivity and efficiency at the beginning of the `PostStepDoIt()`; added method `BoundaryProcessVerbose()` which will now print the process status for every call to `PostStepDoIt()`. Change in `PostStepDoIt()` so that all `dielectric_dielectric` surfaces may now have a reflectivity less than 1; not only `frontpainted` as was the case in the past.

### Geometry

- Divisions
  - Allow for generic divisions along `Z` for polyhedras and polycones; now divisions can happen along `Z`-axis with width and offset, which fulfils the condition that division does not span over more than one segment.
  - Fixed initialization of division in `Phi` for polyhedras to not take into account user defined width.
- Magnetic field
  - New stepper `G4NystromRK4` for magnetic field with analytic estimation of integration error. Greatly reduces number of field value per step.
  - Added new virtual method `CalculateRightHandSide()` to `G4MagIntegratorStepper` for use in caching momentum (and field value) by `G4NystromRK4`; default implementation in `G4MagIntegratorStepper` calls `RightHandSide()`.
  - New simple class `G4CachedMagneticField` to cache value of magnetic field. Speeds up code when calculation of field value is complex.
  - New `G4EqEMFieldWithEDM` class for RHS of EofM in a combined electric and magnetic field, with spin tracking for both MDM and EDM terms. Courtesy of Kevin Lynch, Phys. Dept. at Boston Univ.
  - Bug fix in `G4EqEMFieldWithSpin`, following report on Hypernews EM-field forum #161.
- Management
  - Fixed implementation of `G4LogicalVolume::TotalVolumeEntities()` to become invariant to call sequence. Addressing problem report #1082.
  - Clear possible excess capacity in node vectors in `G4SmartVoxelHeader` `BuildNodes()` method. May reduce excess memory allocated in optimisation in medium/large detector setups, at the price of a slight time increase in initialisation for geometry voxelisation.
  - `G4VTouchable`: moved inline vitual methods, constructor and destructor to source, to avoid problem of memory alignment in allocation of derived objects.
  - `G4Region`: added pointer to field-manager and associated accessor/modifier, to allow for association of a local field to a geometrical region.
- Navigation
  - Refinements in `G4PropagatorInField`:
    - Activated field per region. A field manager can now be assigned to a region, and it will be used for all logical volumes it contains, except for those which override it by having a field manager of their own.
    - Improved handling of repeated small steps at boundaries which are due to geometry imprecision, navigation optimisation, or the details of the algorithm used for tracking in field.
      - Added new member `fZeroStepThreshold`, to enable tuning of this existing threshold for identifying tiny or zero steps.
      - A new value for this threshold `fZeroStepThreshold` is a large multiple (10^4) of `kCarTolerance`; the old value was `0.5*kCarTolerance`. Addresses a problem of tracks stuck at boundaries of volumes reported by ATLAS.
      - The condition for identifying a tiny step is changed in order to avoid misidentifying small proposed physical steps as problem tiny steps.
    - Changed parameters which determine the size of the next trial step. This is used only when trying to recover from consecutive tiny/zero steps.
      - The default decrease factor is now 0.25 (from 0.1)
      - When the step size is comparable to the value of `fZeroStepThreshold` a different decrease factor is used. The value given to the decrease factor was changed to 0.35 (from 0.25).
    - Added new method `RefreshIntersectionLocator()` to update the state of helper class.
    - Improved printing of diagnostics.
    - Deleted obsolete internal methods: `SetAccuraciesWithDeltaOneStep(), SetDeltaIntersection(), SetDeltaOneStep()`.
  - `G4VIntersectionLocator`: fixed problem in `ReEstimateEndPoint()` for very small steps. Corrected constructor to ensure that it initialises all data members. Labelled methods in header to make noticable those that must change attributes at every step.
- Solids (CSG)
  - `G4Sphere`:
    - Implemented speed improvements and corrections from joint code review. Cached computation for half-tolerances and use of Boolean flag for identifying if full-sphere, shell or section.
    - Implemented caching of trigonometric values, now directly computed inside modifiers for `Phi` and `Theta` angles as required for parameterised cases.
    - Rationalised usage of relative radial tolerances.
    - Correction in `DistanceToOut(p,v)` for `phi` sections for rays passing through zero.
    - Fix for the calculation of the normal in `DistanceToOut()` to avoid cases of division by zero in specific configurations. Addresses problem report #977.
  - `G4Tubs, G4Cons`: rationalised usage of modifiers for `Phi` angles and simplified constructors.
  - `G4Cons`: fix to `DistanceToIn(p,v)`, added a check on the direction in case of point on surface. Fixes a problem of stuck tracks observed in CMS, due to wrong reply from the solid for points on the inner radius surface base, with direction along the imaginary extension of the cone.
  - `G4Torus`: fix in `SolveNumericJT()` in order to take into account the difference in the value of `theta` for different intervals, `[0:pi]` or `[-pi:0]`, and for `SPhi` in `[0:twopi]` or `[-twopi:0]`. Addresses problem report #1086.
  - `G4Orb`: moved debug warning in `DistanceToIn(p,v)` within `G4CSGDEBUG` flag.
- Solids (Specific)
  - `G4Ellipsoid`: refined fix in `DistanceToIn(p,v)` for points located on the curved surface, and correct treatment of geometrical tolerance. Addresses problem report #1076.
  - Avoid redundant assignment of value to 3-vector in `G4PolyconeSide` and in `G4TwistTubsSide`.
- Volumes
  - Fix in `G4PVParameterised::CheckOverlaps()` to not modify daughter volume transformation matrix for application to points in the daughter's frame. Adopt `Inverse()` instead of `Invert()` in call to `G4AffineTransform`. Addresses problem report #1078.
  - Added missing implementation for composing `G4AssemblyVolume` constructor.
  - Use `G4Allocator` for dynamic allocation of `G4TouchableHistory` objects. Should reduce the number of direct calls to `malloc` and memory fragmentation. Measured an average improvement of ~5% in CPU speed with same memory footprint. Moved inline constructors to source to avoid problems of memory alignment in allocation.

### Global

- `G4PhysicsVector`:
  - Added `ComputeSecDerivative()` and `SplinePossible()` methods as a computation of Spline coefficients for small number of bins. Removed old obsolete hidden bin approach.
  - Added method `ComputeSecondDerivatives()` for the case when user provides first derivative at end-points; use "Not-a-Knot" algorithm for the computation of second derivatives in default method `FillSecondDerivatives()`.
  - Cleaned up initialisation of cached values; simplified `Value()` method, now not looking into previous bin; added method `ScaleVector()` needed for ICRU'73 data.
- New class `G4Pow` for fast computation of `log()` and `pow()` for integer and double arguments in the interval `[1-256]`.
- Added `G4ErrorStage` enum to `G4ErrorPropagatorData` class.
- Cleared warning for unused argument in `G4Allocator` internal method.
- Changed date for release 9.3.

### Graphical Representations

- Improved ability of visualization system to render Boolean solids. Certain cases involving very near co-planar faces had resulted in incorrect visualization (though not incorrect tracking). A previously included mechanism to deal with this by shifting the position of one solid in a chosen direction has been expanded by attempting shifts in different directions by varying small amounts until one is found that does not give an error. The system still can not handle every situation, but results in far fewer visualization inaccuracies than were previously seen in such difficult cases.
- Improved infrastructure for scoring (supporting new UI command `/vis/scene/add/psHits`).
- `G4VVisManager`: added notify scene handlers (`G4VGraphicsScene` objects) taking care to notify that the scene has changed so that they may rebuild their graphics database, if any, and redraw all views.
- `G4VMarker`: added enum `SizeType` {`none, world, screen`}; added `GetSizeType()` and `SetSize/Diameter/Radius()` methods.
- `G4VGraphicsScene`: added method `AddCompound(HitsMap)`.

### Hadronic Processes

- Cross sections
  - Added new Glauber-Gribov cross section for ions, `G4GGNuclNuclCrossSection`.
  - `G4IonsKoxCrossSection, G4IonsShenCrossSection, G4TripathiCrossSection, G4TripathiLightCrossSection`: added protections against numerical FPE exceptions.
  - Use as a default hadron-nucleon cross section parameterisation in `G4GlauberGribovCrossSection, G4GGNuclNuclCrossSection, G4NeutronElasticXS, G4NeutronInelasticXS, G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS`.
  - Bug fixes for `G4BGG*` classes and added new classes `G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS`.
  - Modified upper limit of validity to `100 TeV` in `G4PiNuclearCrossSection`, G4NeutronInelasticCrossSection and `G4ProtonInelasticCrossSection`. Use constant cross-section above original range.
- Management
  - `G4HadronicInteraction`: renamed `SampleT` as `SampleInvariantT`; added `recoilEnergyThreshold` parameter and accessor methods; use `const` pointers to `G4Element` and G4Material; moved `G4ReactionDynamics` instance to parameterised model class `G4InelasticInteraction`.
  - `G4HadronicInteraction`: added `SetModelName()` method.
  - `G4V3DNucleus`: added two functions to sort nucleons along +/- `Z`.
- Abrasion
  - Fixed problems of negative `sqrt()` and made code more robust to potential loop problems.
- Binary Cascade
  - Added interface to set de-excitation handler in `G4BinaryLightIonReaction` used to de-excite lighter initial nucleus; precompound handling low energy interactions can be set too.
  - Removed dependency on unused class `G4NucleiPropertiesTable`.
  - Made capture-threshold a tunable parameter in `G4GeneratorPrecompoundInterface`.
  - Changes to `G4BinaryCascade` to protects against energy non-conservation: shift of particle's formation times; inclusion of captured particles; correction in `GetExcitationEnergy()` for the case when all nucleons are ejected; correction for the nuclear field for baryons.
  - Bug fix in `G4BinaryCascade::ApplyCollision()`: decay products outside nucleus were nevertheless counted as if these were within nucleus.
  - Corrected assignment to 3-vector, avoid use of 3vector=0.
  - Added protection against void nucleus after cascade.
- Bertini Cascade
  - New class `G4PionSampler`: samples partial cross sections, multiplicities and final state particle types required for `pi+, pi-` and `pi0` scattering within a nucleus. This class uses re-evaluated pion partial cross-sections and includes production of strange particle pairs.
  - Added class `G4NucleonSampler` which replaces old `pp, pn` and `nn` partial and total cross-sections; also modified other classes which use them.
  - Added class `G4FinalStateSampler`.
  - `G4CascadeSigmaPlusNChannel`: corrected sigma plus cross-sections.
  - `G4CascadSpecialFunctions`: moved pion, kaon, hyperon total cross-sections to this class. Put copy of total cross-section method in `G4NucleiModel`, also removed unneeded energy scale arrays, now replaced with a new one.
  - `G4ElementaryParticleCollider`: re-written to use `G4PionSampler` class for cross-sections and multiplicities; removed method `reChargering()`, now redundant.
  - Moved large arrays which are instantiated at every call of frequently used methods. They are now initialized once in constructors.
  - `G4CascadeInterface`: moved instantiation of various collider classes outside of loop, and put on stack instead of heap.
  - `G4ElementaryParticleCollider`: redesigned to use `G4NucleonSampler` and remove instantiation of large arrays from within loops in code.
  - `G4CascadParticle, G4InuclElementaryParticle`: added integer argument to constructor to indicate which generation cascade particle belongs to. Changed `G4NucleiModel` and `G4BertiniNucleiModel` to use this.
  - `G4NucleiModel`: removed instantiation of large arrays from with loops; added new total cross section sampling, removed use of all but one energy scale. Updated `pi-` and `pi0` total cross-sections. Clean up of dead code.
  - Added assignment operator to class `G4CollisionOutput`.
- Chiral Invariant Phase Space (CHIPS)
  - First implementation of CHIPS ion-ion elastic.
  - Extended model for all energies for all particles. Removed obsolete classes.
  - Added photon and lepton-nuclear CHIPS inelastic; improved model to work for all targets, including Hydrogen. Added diffraction to CHIPS inelastic.
  - Added 8 new cross-section classes and bug fixes in pA cross-sections. Tuning of the `G4QCollision` for better description of the pA interactions (`E<290 MeV`).
  - Reorganised CHIPS classes in sub-modules: body, cross_sections, fragmentation, interface and processes. Better readability of the CHIPS code and code improvements.
  - Improvements in hadron+proton, heavy fragments in low-energy, various bug fixes in `G4QNucleus`, `G4QEnvironment`, `G4QCollision`.
  - Improvement of `G4QuasiFreeRatios` for application in `QGSC` from `E=0`.
  - `MuCaptureEMCascade` excluded from capture at rest for `mu-`; all the atomic de-excitation energy of capture is concentrated in the energy deposition.
  - Bug fix against division by zero in `G4QEnvironment`; improvement for the case when the Hypernucleus cannot decay in the residual nucleus and pion; now it is decayed in the residual nucleus and gamma.
  - Fixed non-initialised variables in `G4QContent` and fix in quasi-elastic for photons and leptons.
  - Change of `GetNuclearMass(A-1.,Z-1.)` (and similar) to `GetNuclearMass(A-1,Z-1)` to be consistent with changes in particles.
  - Replaced internal `RndmDir()` with general `G4RandomDirection()` in the code.
  - Bug fix in `G4QNeutronCaptureRatio` (Cu65): accelerate CuSc by 1.5.
  - Cleared dependency of now removed `G4NucleiPropertiesTable` class.
- De-excitation
  - GEM code:
    - Fixes in `G4GEMProbability` and `G4GEMChannel` to provide same probability as proposed in original papers. Fixed old problem in `G4GEMChannel`, computation of Coulomb barrier was not consistent with probability. Added protection on unphysical initial state in `G4GEMChannel`. Fixed units (`hbar_Plank -> hbarc`) in `G4GEMProbability`.
    - `G4EvaporationDefaultGEMFactory`: new class where light meson probabilities are computed from default classes and other fragments from GEM.
    - Introduction of new classes `G4GEMCoulombBarrier, G4AlphaGEMCoulombBarrier, G4DeuteronGEMCoulombBarrier, G4He3GEMCoulombBarrier, G4ProtonGEMCoulombBarrier, G4TritonGEMCoulombBarrier` and corresponding changes in other classes of the sub-package.
  - Added a `G4NeutronRadCapture` model, a simple 1-gamma emission with 4-momentum balance.
  - Fixed 4-momentum balance by using direct Lorentz computations in `G4CompetitiveFission`. Make use of internal units.
  - `G4Evaporation`: added method `SetCombinedCannels()` to define new evaporation factory `G4EvaporationDefaultGEMFactory`.
  - `G4FissionLevelDensityParameter, G4FissionParameters`: tuned against IAEA benchmark spallation data.
  - `G4FermiFragmentsPool`: fixed units (`keV -> MeV`), removed wrong levels, added new levels according to Broohaven data (see chart of nuclides).
  - Fixed `G4ExitationHandler` for the case when Fermi-BreakUp and multi-fragmentation model are activated.
  - Improved implementation of Gamma function computation in configuration weight inside `G4FermiConfiguration`.
  - Updated ablation largely to comply with updates in `G4Evaporation` and handling of `G4Fragment`; fixed a bug in fragment identification when evaporation isn't used.
- Elastic scattering
  - Model precise sampling and 'on the fly' table preparation in `G4DiffuseElastic`.
  - Migrated to the hadronic model design of elastic scattering. Modified `G4ElasticHadrNucleusHE` to be now capable to work with old and new interface.
  - Added new elastic process `G4WHadronElasticProcess`.
  - Added new class `G4VHadronElastic`, base class for elastic models with default GHEISHA model
  - New class `G4CHIPSElastic`, model interface to `CHIPS` parameterization.
  - Removed had-hoc NaN finder and printout in destructor of `G4HadronElastic`.
- High Energy Theoretical
  - Quasi Elastic part is made more used in `QGSC` at low energies to improve the performance of `QGSC` at low energies.
- Im_r_matrix
  - Fix in `G4CollisionComposite` reproducibility. Removed dependence of the energy grid of the cross-section set on the order of the particles by forcing heavier particle to be at rest when caching the cross section.
  - Reduced usage of strings; maps of cross-sections use `G4Particledefinition` in place of particle name.
- INCL/ABLA
  - Bug fixes to INCL nuclear potential handling; the interpolation function used to produce discontinuous results due to an array index off-by-one. This bug fix corrects the impact parameter distribution.
  - Fixed several variable initialization and F77 to C++ translation issues in INCL.
  - Added several safeguards for division by zero or negative sqrt().
  - Use centralised random number generator instead of built-in one.
  - Minor fix in the INCL particle reflection time calculation.
- Parton-String
  - Improved `FTF` model for pion obsorption on nuclei: introduced status of nuclear nucleon involved in an interaction (Status 0 - spectator, 1 - involved nucleon, 2 - absorbed nucleon); introduced connection between a participant nucleon and a nuclear nucleon in `G4InteractionContent`.
  - Completed `FTF` model with Reggeon cascade and added excitation energy calculation.
  - Tuned `FTFP` with parameters of nuclear de-excitation.
  - Implemented charge-exchange for `pn->np` in elastic and inelastic interactions simulated by `FTF`. Implemented also pion absorption by a nucleon.
  - New Boolean parameter added in `G4VSplitableHadron` class for activation and corresponding methods to operate with it; needed for absorption of meson in nuclear collision generated by `FTF`.
  - Fixed bug in `G4VLongitudinalStringDecay` for the calculation of formation/creation time, `c_light` was inserted. Due to this string tension parameter was set to the usual value (`1 GeV/fm`) in `G4LundStringFragmentation`.
  - `G4VParticipants`: use modified name of method to sort nucleons in `G4V3DNucleus`.
- Photolepton-hadron
  - Code cleanup.
- Pre-equilibrium
  - `G4PreCompoundModel`: CEM transition probabilities are set by default. In `G4PreCompoundTransitions`, CEM transition probabilities have been renormalized (transitions with Delta N=+2 are increased by factor 5).
  - `G4PrecompoundEmission`: modified `AngularDistribution()` to avoid floating point exceptions. Removed calls to `log()` in `rho()` and replaced by use of new `logfactorial()`.
- QMD Reaction
  - Fixed bug for incidence of neutral particles in `G4QMDReaction` and `G4QMDGroundStateNucleus`; verified for nucleon-nucleus interactions.
  - Beta version of code for enabling meson incidence.
- Radioactive Decay
  - Added dependence on EM 'util' module for usage of the `G4AtomicShell` class.
- Re-Parameterized Gheisha
  - `G4RPGInelastic`: added temporary message stating the `RPG` model is under development and should not be used for production.
- Stopping
  - Removed dependency on unused class `G4NucleiPropertiesTable`.
  - `G4PiMinusAbsorptionAtRest, G4KaonMinusAbsorptionAtRest`: fixed usage of 3vector constructor.
- Utils
  - Restored methods for storing/retrieving `G4SplitableHadron`, now in use in `FTF` model.
  - Corrected assignment to 3-vector, avoid use of 3vector=0.
  - `G4WilsonRadius`: fixed data vector type qualification.
  - `G4NuclearFermiDensity`: added protection to `GetDeriv()` for positions far outside the nucleus causing an FP overflow in `exp()`.

### Intercoms

- `G4UIcommandTree`: added a new function to complete a command path with maximum characters guess; `FindCommandTree()` will now return current tree when command path is "/".
  Fixed incorrect directory deletion of `G4UIcommandTree::RemoveCommand()`. Addresses problem report #1087.
- Added method `GetPreviousSession()` in `G4UIbatch`.

### Interfaces

- `G4UIExecutive`: new class for automatic instantiation of user interactive sessions.
- `G4VBasicShell`: better command completion in command line. Fix for commands strings that match shorter commands.
- `G4VUIshell`: added `SetLsColor()` method.
- `G4UIQt`: added interactor to be able to add button on file and help menu; added public method to get the main window. Added `CTRL+A` and `CTRL+E` to move to begin/end of command line. Fixed a problem on macOSX 10.6 with Qt 4.6-Beta. Added debug flags for Qt. Fixed compilation warnings.

### Materials

- ICRU'73 stopping power classes:
  - Migrated to the `G4VIonDEDXTable` interface: access methods of physics vectors have changed (vectors can also be identified via atomic number of material if material is pure). Classes now deliver mass stopping powers instead of stopping powers per unit length. Any dependency on ICRU'73 material densities was removed (no densities are included in the classes any longer). Stopping power vectors are now only built on request and not anymore in the constructor. Affected classes: `G4IronStoppingICRU73, G4MaterialStoppingICRU73` and `G4SimpleMaterialStoppingICRU73`.
  - `G4IronStoppingICRU73`: extended upper limit of the data vector from `10 MeV` to `1 GeV`; 53 bins are now used. Added `G4WATER` data. Also fixed `GetDEDX()` methods in these classes for `E=10 MeV` (upper limit).
  - `G4MaterialStoppingICRU73`: extended energy range of revised ICRU'73 tables for water from `0.025-10 MeV/u` to `0.025-1 GeV/u`. Added new function `AddPhysicsVectorFullRange()` for creating corresponding physics vectors. Changed material name from `G4_NYLON-6/6` to `G4_NYLON-6-6`.
- New class `G4IonStoppingData`, which can read ion stopping power vectors contained in `G4LEDATA` data set; allows for inclusion of larger physics vectors than those in the ICRU'73 classes, where vectors are restricted to the maximum energy `10 MeV/nuc`.
- `G4NistMaterialBuilder`: mean ionisation potential for `G4_WATER` is set to `78 eV` according to GSI Annual Report (2008) p.373, in order to be consistent with ICRU'73 tables. Fixed ICRU'73 data provided by Prof. P.Sigmund (Univ. Southern Denmark): `G4WATER, G4WATER_VAPOR, G4_NYLON-6-6` (in `G4MaterialStoppingICRU73`); `G4_Cu` (in `G4SimpleMaterialStoppingICRU73`). Changed material names, `G4_NYLON-6/6` to `G4_NYLON-6-6`, and `G4_NYLON-6/10` to `G4_NYLON-6-10`, to allow matching with ion stopping power data files. Old names can still be used for backward compatibility. Changed density of `G4_GRAPHITE` according to PDG-2008, added new material `G4_GRAPHITE_POROUS`.
- `G4NistMessenger`: added UI command to print parameters of density effect data. Improved implementation of UI commands in `G4NistManager`, G4NistMessenger and `G4NistElementBuilder`.
- `G4VIonDEDXTable`: added interface class for electronic stopping power tables for ions. Added new method `BuildPhysicsVector()` which invokes the build of physics vectors on demand in the initialisation phase. Added method `BuildPhysicsVector()` according to base class for `G4ExtDEDXTable, G4SimpleMaterialStoppingICRU73, G4MaterialStoppingICRU73` and `G4IronStoppingICRU73`.
- `G4ExtDEDXTable`: new utility class to handle external electronic stopping power tables for ions.
- Use 'const' references for strings as arguments/return-values in material properties tables and related classes. Inlined some methods and some minor cleanup.
- Added `Entries()` method to `G4MaterialPropertyVector` and accessors for maps in `G4MaterialPropertiesTable`, required for internal use in persistency of material properties. Make visible `GetEntry()` accessor in `G4MaterialPropertyVector` for use restricted to persistency.
- Increased flexibily of G4SurfaceProperty and G4OpticalSurface classes to allow for lookup-table boundary process simulations.
- `G4Element`: added method `GetNbOfShellElectrons()` returning the number of electrons on a shell.
- `G4DensityEffectData`: added data from Atom. Data Nucl. Data Tabl.30 (1984) 261, accessible via material name. added method `GetIndex()`
- `G4IonisParamMat`: added new members: `Eplasma, AdjustmentFactor, Delta0` parameter of density effect parameterisation, and hook to `G4DensityEffectData`. Fixed copy constructor. Added new access method and method `DensityCorrection()`. Fixed density effect computation; added plasma energy computation and access to `G4DensityEffectData` by the atomic number.

### Particles

- Added new classes for "Reverse MonteCarlo" technique: `G4AdjointProton` and light ions.
- Make use of new experimental class `G4NucleiPropertiesTableAME03` including data updated to the Ame-2003 atomic mass evaluation (II) by G.Audi, A.H.Wapstra and C.Thibault, Nuclear Physics A729, 2003.
- Removed obsolete class `G4NucleiPropertiesTable`.
- Added method `CreateAllIon()` in `G4IonTable` and added `/particle/createAllIon` UI command. By this method and command, all stable ions are created.
- `G4ParticleDefinition` should be created in `pre-init` state; a warning is thrown if constructors of `G4ParticleDefinition` are called in a different application state.
- Added `CalculateAnomaly()` method to `G4ParticleDefinition`.
- Fixed small difference of mass of taus, mesons, and anti-baryons between PDG-2009.
- Changed `G4ElectronOccupancies::MaxSizeOfOrbit` to 10 to allow for higher excited atom.

### Persistency

- ASCII
  - Inclusion of extruded and tessellated solids.
  - Additions of accessors and constructors of `G4tgbVolume` and `G4tgrVolume`.
- GDML
  - Implemented virtual layer for allowing customisation of the writer for user-extended schemas.
  - Implemented ability to write surface properties associated with surfaces and material properties.
  - Allow for reading/writing of constant material properties.
  - Added support for the GDML `assembly` tag, implementing assemblies of simple placements through `G4AssemblyVolume`.
  - Added support for GDML `expression` tag, implementing generic expressions stored as literal constants.
  - Corrected handling of `quantity` tag; added missing caching of evaluation.
  - Some code cleanup: rationalised inclusion of headers, replacing them with forward declarations where possible.

### Physics lists

- New physics lists and builders:
  - `QGSP_FTFP_BERT` based on `QGSP_BERT` replacing the bridging `LEP` with `FTFP`, and transitioning from `BERT` to `FTFP` between 7 and 9 `GeV`.
  - `FTFP_BERT_TRV` list as variant of `FTFP_BERT` with transition between 6 and 8 `GeV`.
  - `QGSP_BERT_TRV`: with transition energies to use `BERT ]0,9.9]`, `LEP [9.5, 15]` and `QGSP [10, inf[`.
  - New physics-lists with special EM options: `FTFP_BERT_EMV`, `FTFP_BERT_EMX`, `QGSP_BERT_EMX`, `QGSP_BIC_EMY` (opt3 EM physics).
  - `CHIPS` physics list, using `CHIPS` model for all energies. Added two builders `G4QNeutrinoPhysics, G4QPhotoNuclearPhysics` with messenger.
  - `QGSC_QGSC`: using `QGS` model with interface to `CHIPS` at all energies, starting from `E=0`; for neutrons it still uses `LHEP` models for the radioactive capture and fission.
  - `QGSC_CHIPS`: using `QGS` model with interface to `CHIPS` at all energies; for `pA` interactions the native `CHIPS` process `G4QCollision` is used below `290 MeV`.
  - Added builders for DNA, Livermore and Penelope physics processes. Upper limit of Livermore models is set to `1 GeV`. Adapted `G4EmLivermorePolarizedPhysics` builder as for the non polarized case. Added high energy limit to `e-` models in `G4EmLivermorePhysics` and `G4EmLivermorePolarizedPhysics`
  - Added `G4OpticalPhysics` and `G4OpticalPhysicsMessenger` classes.
- Physics lists qualification changes (obsolete/partially disabled/experimental/supported):
  - Obsolete and disabled (removed): `FTF_EMV`, replaced by `FTFP_BERT_EMV`; `QGSC_EFLOW`, replaced by `QGSC_CHIPS`; `QGSP_EMX`, replaced by `QGSP_BERT_EMX`.
  - Obsolete: `FTFC, LHEP_BERT, LHEP_BERT_HP, LHEP_PRECO_HP QGSP_BERT_DIF, QGSP_BERT_NQE, QGSP_DIF, QGSP_EMV, QGSP_EMV_NQE, QGSP_NQE, QGSP_QEL, FTFP, QGSP, QGSC, QGSC_CHIPS, QGSC_EMV, QGSC_QGSC.`.
  - Explicitely marked experimental: `QGSP_BERT_EMX, QGSP_BERT_TRV, QGSP_FTFP_BERT, QGSP_INCL_ABLA`.
  - Marked as supported: `FTFP_BERT, FTFP_BERT_EMV`.
    `G4PhysicsListFactory`: updated choice of supported physics-lists.
- EM physics builders and options:
  - `G4EmStandardPhysics, G4EmStandardPhysics_option1`: use 9.2 physics configuration; use `ApplyCuts=true`.
  - `G4EmStandardPhysics_option2`: use `G4eMultipleScattering` for `e+-`. Use default StepFunction for ions.
  - `G4EmStandardPhysics_option3`: use updated `G4UrbanMscModel2` and use `G4RayleighScattering` process.
  - Separated definition of processes for He3 and He4 ions; `G4eMultipleScattering` for `e+, e-, G4MuMultipleScattering` for muons.
  - `G4UrbanMscModel93` for `e+-` and `G4WentzelVIModel` for muons for all builders except `Opt0` and `Opt1`.
  - `G4ParameterizedIonModel` for `Opt3` and all combined builders.
  - StepFunction `(0.1, 0.02*mm)` for ions inside `Opt2`.
  - `G4EmStandardPhysics_option3, G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmLivermorePolarizedPhysics`: added `G4NuclearStopping` process for GenericIon, He3, alpha particles. Set `finalRange=10um` for ions.
- Updates to lists:
  - Added `MaxEnergy()` method in `FTF` builders.
  - `QBBC` list: removed templated interface and moved inline code to source; use new interface through `G4VHadronPhysics` class.
  - Change to `G4HadroHElasticPhysics` to make use of `G4WHadronElasticProcess` as part of the design review for elastic.
  - Change to `QGSP_BERT_EMV` to make use of `G4HadroHElasticPhysics`.
  - Updated `QBBC` physics-list and fixed cross-section for hadron elastic.
  - `QGSP_BERT_NOLEP`: use `G4HadronQElasticPhysics`.
  - Added initial version of `G4IonQMDPhysics`.

### Run

- `G4VUserPhysicsList`:
- Added method `CheckParticleList()` to probe consistency of list of particles before constructing processes; check being executed within call to `BuildPhysicsTable()`. Added `DisableCheckParticleList()` method as well and modified `BuildPhysicsTable()` to avoid problem when ions are created in the `Pre-Init` state.
- Adapted implementation for handling proton cuts.
- `G4RunManagerKernel`: now invokes `CheckParticleList()` from `G4VUserPhysicsList` just before invoking `SetCuts()`. Also checking `G4VUserPhysicsList` to confirm no particle is registered when `G4RunManagerKernel` is instantiated. Fixed two minor bugs for the dump printout of regions.
- Added UI command `/run/setCutForAGivenParticle` in `G4UserPhysicsListMessenger`.
- New classes implementing the "Reverse MonteCarlo" technique: `G4AdjointSimManager, G4AdjointSimMessenger, G4AdjointPrimaryGeneratorAction`.

### Track & Tracking

- Modified implementation of `GetVelocity()` for particle-change for performance improvement.
- Set `lowEnergyLimit` to `1 eV` in `G4ParticleChangeForLoss`. Added method `SetLowEnergyLimit()`, also to `G4VUserTrackInformation`; added a string property to indicate type of UserTrackInformation.
- Correction to `G4SteppingManager::InvokeAtRestDoItProcs()` in the handling of `G4Scintillation` process.
- New classes implementing the "Reverse MonteCarlo" technique: `G4AdjointCrossSurfChecker, G4AdjointSteppingAction`.
- `G4Trajectory, G4SmoothTrajectory, G4RichTrajectory`: added initial kinetic energy. `G4RichTrajectory`: added final kinetic energy. `G4RichTrajectoryPoint`: added "remaining energy" at each step and attributes.

### Visualization

- Overall
  - Rich Trajectories and Rich Trajectory Points now include additional information such as the complete volume path of the starting and ending volume including all replica and copy numbers, etc.
  - Fixed bug in screen location and screen ratio handling for `X/Xm/Qt/Win32` viewers.
  - Vector and bitmapped printing through `/vis/ogl/printEPS` is now fully functional for all OpenGL viewers (previously only for OGLIX and OGLSX). Related new commands are `/vis/ogl/set/printSize` and `/vis/ogl/set/printFilename`.
- Management
  - `G4VisManager`: implemented handlers notification. A user may notify scene handlers that the scene has changed, so that they may rebuild their graphics database, if any, and redraw all views.
  - Introduced `/vis/initialize` UI command; instantiating `/vis/verbose` and `/vis/initialize` in constructor of `G4VisManager` so that a user may set verbosity before initialisation.
  - New UI command, `/vis/viewer/set/targetPoint`, sets a specific point to be the center of the view. Helps with doing extreme zoom in to a specific point.
  - New UI command, `/vis/scene/add/psHits` for visualization of scoring quantities to `gMocrenFile`.
  - Improved end of run event keeping information.
  - Allow for arbitrary viewer deletion (fixes some situations that had caused crashes).
  - Allow refresh in `GeomClosed` as well as `Idle` state.
  - `G4VisExecutive`: made methods inline.
- Modeling
  - Added warning if logical volume is not defined.
  - `G4PhysicalVolumeModelTouchable`: new class to allow visualization attributes to be individually set for each volume within a nested parameterization.
  - Added unit to `setAux/StepPtsSizeType` UI commands so that size can be specified either in pixels or relative to screen size.
  - Added `G4PSHitsModel` for gMocren driver.
  - `G4ModelApplyCommands`: added call to `NotifyHandlers()` to force update of all viewers after a change of model, e.g., trajectory colour, point size, etc.
- Externals
  - gl2ps: Added dependency on zlib (even if `G4LIB_BUILD_ZLIB` is not set).
  - Corrected setup for building DLLs on Windows.
- gMocren
  - First Beta release of this new visualization driver to output data in the `gdd` format used by the gMocren volume visualization tool. `gMocrenFile` can include volume data from sensitive detector volumes, or from command-based scoring meshes, in addition to detector geometry and trajectories. Use the new UI command `/vis/scene/add/psHits` to add scorer hits to gMocren output. For details, see the Application Developers Guide and: http://geant4.kek.jp/gMocren/.
- HepRep
  - New UI commands of the form `/vis/heprep` allow easy control of output file name and output directory, whether a file name should be reused (rather than having a sequential suffix appended at each new file) and whether culled geometry volumes should be included.
  - Changed messenger to a singleton to facilitate sharing by `HepRepFile` and `HepRepXML`.
  - Fixed a bug in representation of `G4Tubs` which had caused wrong visualization for cases in which the tube was at an unusual angle.
- OpenGL
  - `G4OpenGLQtViewer`: ensure the GL frame size will be correct by setting a zero size margin around.
  - `G4OpenGLStoredQtViewer`: removed picking to true at initialisation.
- OpenInventor
  - Created new "externals" module for gl2ps library, moving out code from OpenInventor module. Added ability to draw markers.
- Qt
  - Continued improvements to this new driver. The `Qt` visualization driver and the associated `Qt` User Interface now work well on almost all platforms and with both Qt3 and Qt4 (but still considered a Beta release due to a few rare combinations of commands on certain platforms that can cause crashes).
- RayTracer
  - Fixed a crash of `RayTracerX` on some platforms. Addressing problem report #1072.

### Environments

- G4Py: updated configuration script and wrappers to physics-lists.
- Momo: updated documentation.

### Data sets

- New data for measured optical surface reflectance, RealSurface.1.0:
  - Path to data controlled by variable `G4REALSURFACEDATA`
- New low-energy data set, G4EMLOW.6.9:
  - Corrected corrupted data files: ioni/ion-sp-38.dat, ioni/ion-sp-56.dat and ioni/ion-sp-57.dat. Addresses problem report #1042.
  - Extended energy range of Champion e- elastic scattering model from `10 KeV` up to `10 MeV`.
  - Extended high energy coverage of proton excitation and ionization.
  - Improved precision of e- ionisation Born model.
  - Included ICRU 73 stopping powers and revised tables provided by P.Sigmund/Univ. of Southern Denmark.
  - Updated Geant4-DNA e- elastic Champion files and e- ionisation Born files.

### Examples

- Various fixes, improvements, adoption of new features.
- Updated reference outputs.
- advanced
  - Retired advanced examples: cosmicray_charging, radiation_monitor, Tiara.
  - air_shower
    - Changed UltraPhysicsList to use new processes `G4eMultipleScattering`, `G4MuMultipleScattering` and `G4hMultipleScattering`.
  - amsEcal
    - New example implementing the AMS Ecal calorimeter.
  - brachytherapy
    - Updated physics-list and analysis setup.
  - composite_calorimeter
    - Use `QGSP_BIC_EMY` as default physics-list to test the low-energy EM.
  - gammaray_telescope
    - Updated physics-list setup.
  - hadrontherapy
    - Reviewed physics implementation. Now Hadrontherapy can be launched with physics-lists, packages and built-in physic models. All models can be activated via macro command.
    - Implemented new low-energy models Livermore and Penelope.
    - Modified and revised the README (now in PDF format) and macro files.
    - Added messengers to control the event number and to draw only particular tracks.
    - Added a method to retrieve stopping power values for protons, alphas and electrons.
    - Added local INCL/ABLA physics list for deuterons, tritons and alphas.
    - Added first version of the IAEA benchmark geometry based on E.Haettner's thesis. Added ability to remove the phantom by setting its thickness to zero. Added ability to select the geometry using macro commands.
    - Collect simulation metadata: number of events, distance of the detector (IAEA geometry), depth of the phantom (IAEA geometry), beam energy, energy error. Added ability to produce angular distribution plots.
    - Added ability to change the name of the output file between runs.
    - Added ability to use command based scoring; IAEA geometry: now can produce Bragg peak using command based scoring.
    - Added possibility to make a graphical user interface (GUI) using the Qt libraries.
    - Added some functionalities in order to change, via messengers, geometry, voxelization of the detector and disposition in the space of the detector/phantom.
  - lAr_calorimeter
    - Use `QGSP_BIC_EMY` as default physics-list to tests the low-energy EM.
  - medical_linac
    - New release of the example: updated physics models and deleted old and no longer supported processes; added possibility to activate the physics lists and reference physics-lists directly via UI command; added possibility to set cuts and max allowed step lenghts via UI commands.
  - microbeam
    - Updated physics-list to migrated Livermore processes.
    - Corrected plotting fuctions and switching field value.
  - microdosimetry
    - Updated physics-list to migrated Geant4-DNA processes. Modified SteppingAction accordingly. Updated README.
    - Replaced H2O material by NIST `G4_WATER`.
    - Added GenericIon definition to PhysicsList.
  - radioprotection
    - Updated physics-lists setup.
    - Changed analysis output format to XML.
  - Rich
    - Added possibility to use `QGSP_BIC_EMY` as physics-list; by default, the example's physics-list is used still.
  - xray_fluorescence
    - Migrated physics-list to new low-energy processes design
    - Migrated `XrayFluoDataSet` to meet new specifications in `G4VEMDataSet`.
  - xray_telescope
    - Updated and simplified physics-list.
- extended
  - analysis/A01
    - `A01DetectorConstruction, A01MagneticField`: improved handling of field. Addresses problem report #1012.
    - Removed A01Trajectory, to now use default G4Trajectory.
    - Update physics-list to use new multiple scattering classes.
    - Introduced use of G4UIExecutive.
    - General update to README.
  - biasing/ReverseMC01
    - New example demonstrating the use of Reverse MonteCarlo technique in Geant4.
  - electromagnetic
    - Physics list: renamed "standard" to "local"; "emstandard" to "emstandard_opt0". Substituted obsolete low-energy physics builders with builders from the reference physics_list library.
    - Replaced obsolete G4MultipleScattering in PhysListEmStandard.
    - Updated README and macro files.
  - electromagnetic/TestEm2
    - Substituted obsolete low-energy physics builders with builders from the 'physics_list' module.
    - Reduced number of hard-coded materials, added a possiblity to use NIST materials.
    - Some cleanup to macro files.
  - electromagnetic/TestEm3
    - Fix to `HistoManager::PrintHisto()`: avoid empty ascii file.
    - Removed `G4EMConfigurator` in physics-list.
  - electromagnetic/TestEm5
    - Added UI command `/testem/phys/cutLimit` allowing to change low limit for production threshold.
    - Added missing notification to `G4RunManager` when geometry or material are modified between runs.
    - Added PAI models configuration to Physics List.
    - Modified cuts in PhysicsList. Added `blaha.mac` input macro.
    - Removed UI command `/testem/phys/cutLimit`.
    - PhysicsList: removed obsolete low-energy EM builders, substituted by builders from the 'physics_list' module; added "standardGS" option: use GoudsmitSaunderson multiple-scattering model.
    - New local physics-list `PhysListEmStandardGS`.
    - Removed G4EMConfigurator in physics-list.
  - electromagnetic/TestEm6
    - Increased upper limit of energy in the tables to `1000 TeV`.
    - Added StackingAction to allow for removal of secondary particles.
  - electromagnetic/TestEm9
    - Changed options to physics-list.
  - electromagnetic/TestEm18
    - Added UI command `/testem/phys/cutLimit` allowing to change low limit for production threshold.
    - Changed options to physics-list.
    - Removed UI command `/testem/phys/cutLimit`.
  - electromagnetic/TestEm13
    - Replacement with new Livermore and Penelope physics-lists.
  - electromagnetic/TestEm14
    - Replacement with new Livermore and Penelope physics-lists.
  - exoticphysics/monopole
    - Added messenger to define mass and charge of the monopole.
  - field
    - Fixed density of STP Carbon Dioxide in DetectorConstruction.
  - field/field04
    - Introduced `/rndm/autoSeed` UI command and changed default seeding of random generator.
    - Changed `F04PhysicsList` and `F04PhysicsListMessenger` to use `G4PhysListFactory`.
    - Introduced use of `G4UIExecutive`.
  - field/field05
    - New example to test the spin-frozen condition whereby the g-2 muon spin precession is canceled by an applied electric field. Courtesy of Hiromi Iinuma from KEK.
  - hadronic/Hadr00
    - Added possibility to define physics-list as a job parameter.
    - Added script for the test run of all physics-lists.
  - hadronic/Hadr01
    - Updated physics-list. Using `FTFP_BERT_TRV`.
    - Added histograms on energy depositions: total/electromagnetic, pion/proton.
  - medical/DICOM
    - Changed DICOM Handler to read CT files coming from CONQUEST DICOM server.
  - medical/electronScattering, electronScattering2
    - Two alternate approaches to simulating the published electron scattering benchmark experiment of C. K. Ross et al.
  - medical/fanoCavity[1,2]
    - Corrected computation of 'error' in EndOfRun.
    - Using GoudsmitSaunderson multiple-scattering model. Added cut for proton recoil in case of Single Scattering.
  - medical/GammaTherapy
    - Updated physics-list for EM.
  - optical/LXe
    - Exhibit the usage of a complex index of refraction for the photo cathode.
    - Use of `G4OpticalPhysics` builder/messenger, instead of `LXeOpticalPhysics`.
    - Introduced use of `G4UIExecutive`.
  - optical/wls
    - New example tracking optical photons in a realistic plastic scintillator bar geometry with a wave length shifting (WLS) fiber and propagating the WLS photons inside the fiber. Courtesy of Siu Pak Mok from TRIUMF.
  - persistency/gdml
    - `G01`: added new GDML samples for matrices+loops and optical-surfaces. Modified matricesandloops.gdml, following new specifications for loops. Added possibility to run application in batch mode giving a macro as input (e.g.: `load_gdml solids.gdml g01.gdml g01.in`); option to be used by system testing for batch test. Added assembly.gdml to demonstrate support for 'assembly' tags. Added usage of 'expression' and 'quantity' in solids.gdml.
    - `G02`: Added missing inclusion of headers after cleanup.
    - `G03`: Extended example to show also capability to write extended schema; added custom writer class. Renamed translation unit for main to "gdml_ext.cc".
  - persistency/P03
    - Use G4XMultipleScattering in physics-list.
  - polarisation/Pol01
    - Updated multiple-scattering physics.
  - radioactivedecay/exrdm
    - Fixed trivial compilation warning when compiled without `G4ANALYSIS_USE`.
- novice
  - Introduced use of `G4UIExecutive`.
  - N02
    - Use G4MuMultipleScattering for muons; separated alpha from GenericIon.
  - N03
    - Use G4MuMultipleScattering for muons; separated alpha from GenericIon.
  - N06
    - Use G4eMultipleScattering, G4MuMultipleScattering and G4hMultipleScattering instead of standard G4MultipleScattering.