# Geant4 9.2 Release Notes

Geant4 9.2 Release Notes

December 19th, 2008

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, 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-3.4.6 (SLC4), gcc-4.2.1 (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, gcc-4.0.1
- Windows/XP and CygWin Tools with: Visual C++ 9.0 (Visual Studio 2008)

More verified configurations:

- Linux, gcc-4.3.2
- Linux, Intel-icc 11.0

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
- SGI V6.5.5, CC 7.2.1
- SUN Solaris 5.8, C++ CC-5.5.

## 2. CLHEP and AIDA

Geant4 requires the installation of CLHEP, release 2.0.4.2.
The installation of CLHEP-2.0.4.2 is mandatory for consistency in the definition of masses and widths of particles. Earlier versions of CLHEP may link, but they will not give correct results.

Geant4 9.2 examples with histogramming cowork 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.1 to release 9.2. Note that for all users a full re-installation of libraries (or a full recompilation) and a recompilation of user applications is required.

Geometry

An additional optional Boolean argument has been added to the signature of `ComputeSafety()` in `G4Navigator`. Any class inheriting from `G4Navigator` has to adapt to the new signature.

Particles

Masses and widths of particles have been updated to be compliant with PDG-2008. To maintain consistency this requires the upgrade to a new version of the underlying CLHEP library (CLHEP-2.0.4.2), which includes up-to-date constants as used by Geant4.

Low Energy Electromagnetic physics

- Geant4-DNA processes:
  new elastic scattering models are available for electrons, replacing the old ones. The user may use in his/her physics list either the Screened Rutherford model or the Champion model; the models are alternatives and must not be used together.
  To use the Screened Rutherford model in the physics list, one should define the elastic process as follows:

          typedef G4DNAProcess<G4CrossSectionElasticScreenedRutherfordHE,
                               G4FinalStateElasticScreenedRutherford>
                  ElasticScreenedRutherfordHE;
          typedef G4DNAProcess<G4CrossSectionElasticScreenedRutherfordLE,
                  G4FinalStateElasticBrennerZaider>
                  ElasticScreenedRutherfordLE;

  and register it as follows:

          processManager->AddDiscreteProcess(new ElasticScreenedRutherfordLE("ElasticScreenedRutherfordLE"));
          processManager->AddDiscreteProcess(new ElasticScreenedRutherfordHE("ElasticScreenedRutherfordHE"));

  More details can be found in the advanced example `microdosimetry`.
  To use the Champion model in the physics list, define the process as follows:

          typedef G4DNAProcess<G4CrossSectionElasticChampion,
                               G4FinalStateElasticChampion> ElasticChampion;

  and register it as follows:

          processManager->AddDiscreteProcess(new ElasticChampion("ElasticChampion"));

  Documentation is also available from the Low Energy EM working group page.
- New alternative implementation of Penelope processes compatible with the standard EM design are included as Beta release. Information on how to use these processes (Compton, Rayleigh, Gamma conversion, photo-electric, annihilation and ionisation) is available through these migration notes.

Hadronic physics

- The method `MeanFreePath()` in `G4HadronicProcess` will become protected in the next release. A new public method will be provided.
  The obsolete method `SetDispatch()`, which is no longer used, has been removed.

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 neutron cross-sections, G4NDL.3.13.
- New low-energy data set, G4EMLOW.6.2.

## 4. New Developments and Capabilities

Geometry & Field

- New locator classes and options are available for identifying the intersection point of a charged particle in a field. These are Simple, Brent, and Multi-level and allow the user to investigate tradeoffs between increased accuracy and CPU speed according to the use case. Multi-level is used by default to provide for robustness; the Brent method is introduced as an alternative.

Detector description persistency

- A new module for importing detector descriptions in ASCII text format is now part of Geant4. Such a description can be used as an alternative to GDML or other persistency techniques, and is provided with a corresponding set of UI commands.
- GDML: the GDML plugin module adds export capabilities, and thus replaces completely the external GDML module required in older versions of Geant4. The GDML schema has been upgraded to support missing solids and parameterisations. The new GDML-3_0_0 schema is now recommended.

Interfaces & Visualization

- The layout of the Qt interface, `G4UIQt`, which was introduced in release 9.1 as a Beta release, has been improved. It now supports both common versions of Qt: Qt3 and Qt4, and provides all the functionality of previous graphical user interfaces (such as Xm, Win32...). Also implemented a help widget to easily browse the entire Geant4 command system.
- Major Improvements have been made to the Qt visualization driver. This driver now includes all of the capabilties of the other OpenGL drivers, but adds additional controls to rotate, translate, zoom, to export to many graphics formats (jpeg, eps, ps, pdf) and to easily create visualization movies.
- The 2D drawing capability has been extended; added in previous release just for `G4Text`, it now also include `G4Circle, G4Polyhedron, G4Polyline, G4Polymarker` and `G4Square`. It allows placement in the 2D "screen window". Useful for tasks such as creating legends or logos that stay put on the screen while you otherwise rotate, translate or zoom the visualization.

Low Energy Electromagnetic physics

- The Doppler broadening effect is added in `G4LowEnergyCompton` and `G4LowEnergyComptonPolarized` (using identical model in both cases).
- Ionisation cross sections for particle-induced X-ray Emission (PIXE)
  - New Orlic semi-empirical model for L-Shells with protons projectiles (`G4OrlicLCrossSection`);
  - New ECPSSR model for K-Shells with protons and alpha projectiles (`G4ecpssrCrossSection`);
  - New Paul model for K-Shells (`G4PaulKCrossSection`).
- Added new stopping power model for ions, using by default ICRU 73 data tables. New templated classes are `G4IonParametrisedLossModel` and `G4IonParametrisedLossTable`.
- Geant4-DNA processes:
  - New charge transfer process by incident protons: two cross-section and one final state policy classes: `G4CrossSectionChargeTransferCH`, `G4CrossSectionChargeTransferExp`, `G4FinalStateChargeTransferProton`;
  - Two new total cross section classes for electron elastic scattering in liquid water below and above `200 eV`: `G4CrossSectionElasticScreenedRutherfordLE` and `G4CrossSectionElasticScreenedRutherfordHE`;
  - New alternative elastic scattering model for electrons in liquid water from C.Champion's model: `G4CrossSectionElasticChampion` and `G4FinalStateElasticChampion`.

Standard Electromagnetic physics

- Cubic Spline interpolation of `dedx` and cross section tables is enabled by default. Better interpolation was found to increase stability when varying transport parameters, such as cuts, of energy deposition of hadrons. The old variant of linear interpolation is available as an option.
- A new process, `G4eMultipleScattering`, specialized for simulation of `e+ and e-` multiple scattering has been added. This process in turn uses a new model, `G4UrbanMscModel2`, which is based on the `G4UrbanMscModel` of previous releases but has an improved sampling algorithm and has been retuned to experimental data. Several reference physics lists such as `G4EmStandardPhysics` now use this new `G4eMultipleScattering` process.
- A new class `G4WentzelVIModel` for multiple scattering of muons and hadrons is available as a prototype for validation.
- New bremsstrahlung model class, `G4eBremsstrahlungRelModel`, includes advanced description of LPM effect; it can be applied for electrons and positrons with `E > 1 GeV` and provides gamma spectra which agree well with thin-target experimental data.
  The density suppression effect in the old `G4eBremsstrahlungModel` has been reviewed and improved.
- The `G4IonFluctuations` model has been updated: at high energy it uses `G4UniversalFluctuation`, which provides Landau tail of fluctuations. At low energies it uses Gaussian distribution based on experimental data.
- The `G4Cerenkov` process now enforces a step limitation at the Cerenkov threshold and a new user defined step limitation provides for smoother X-ray emission.
- A new `G4EmSaturation` class is introduced for sampling of Birks saturation.
- A new `G4ElectronIonPair` helper class based on the ICRU'31 report has been added; it can be used for sampling electron/ion pairs in sensitive detectors.
- A new `G4EmConfigurator` class can be used for configuration of models in physics lists.
- Initialization of `SubType` has been added for all processes.
- The printout describing processes, models and their parameters initialised for a run have been upgraded.

Hadronic physics

- A new hadronic process subtype enumeration `G4HadronicProcessType` has been created in order to identify active hadronic processes:

          enum G4HadronicProcessType
          {
            fHadronElastic =   111,
            fHadronInelastic = 121,
            fCapture =         131,
            fFission =         141,
            fHadronAtRest =    151,
            fChargeExchange =  161
          };

- Bertini cascade:
  - Barrier penetration has been added to the Coulomb barrier.
  - A bug in the final state multiplicity sampling has been fixed, thereby correcting the quasi-elastic peak which was too large.
  - Very low values of two-body internal pion cross sections above `7 GeV` have been brought up to PDG values.
- Binary cascade: the cascade part remains unchanged, however, changes in the pre-compound and de-excitation code will affect results for low-energy secondaries.
- The INCL/ABLA cascade/evaporation model is now officially released. It can be used for incident `p, n, d, t, 3He, alpha` and `pions` from `200 MeV` up to `3 GeV`, on nuclei ranging from carbon to uranium.
- The quantum molecular dynamics (QMD) model for nucleus-nucleus collisions is now in Beta release. It is valid from `50 MeV` to `5 GeV`.
- The class `G4GlauberGribovCrossSection` now provides a smooth transition with the Barashenkov cross sections at `90 GeV`.
- `G4ChargeExchangeProcess` and `G4ChargeExchange` model are now ready to be used in physics lists; the low energy threshold is set to `1.0 MeV`.
- Several improvements have been made to the pre-compound model. Missing pieces of theory were added and several code fixes were made to `G4PreCompoundModel` and related classes.
- De-excitation and evaporation:
  - Several corrections to the multi-fragmentation model to ensure it conforms with the original SMM model. These were donated by authors of the SMM model and collaborators.
  - New inverse cross sections and fixes of evaporation probabilities
  - FermiBreakUp is now switched off by default.
  - The pairing correction in excitation energy have been fixed in `G4GEMChannel`.
- Nuclear mass tables: in order to use nuclear masses consistently throughout the the hadronic code, changes have been made for the usage of `G4NucleiProperties` methods to also conform to changes made in the particles module.

Physics Lists

- A new `G4EmStandardPhysics_option3` physics constructor has been added; it can be used for simulation, where required spatial precision is much less than `1 mm`.
- A new utility, `G4PhysicsListFactory`, is introduced; it allows any reference physics list to be built.

Command-based scoring

- Beta release of cylindrical scoring mesh is included in this release. Any feedback on issues and functionality is welcome.
  Please, also see known issues affecting this new development in Section 6 of this document.

## 5. Expected effects on physics and performance

Geometry

- Implementation improvements in `G4Cons` and `G4Tubs` bring speed improvements on the order of 20% for those shapes with pure-tracking (i.e. without field propagation or physics).

Low-energy Electromagnetic physics

- An updated version of the `G4LogLogInterpolation` class is included in this release. This update improves the speed of low energy EM Physics processes that use this class. Only insignificant changes result in the interpolated values obtained and in physics observables.

Standard Electromagnetic physics

- More precise multiple scattering model for electrons and positrons provides wider shower (about 0.5% measured for the CMS calorimeter).
- New relativistic Bremsstrahlung model is applied for electrons and positrons; it provides gamma spectra which agree with thin-target CERN and SLAC data.
- The usage of the Spline approximation of `dedx` and cross section tables provides a Bragg peak position which is stable within `0.1 mm` versus variation of production cut or step limit.
- Visible energy in sampling calorimeters may increase on the order of 1% due to upgraded model of multiple-scattering and usage of Spline approximation.

Hadronic physics

- Changes to the Bertini cascade code have resulted in several changes to energy spectra and shower shapes:
  - the bug fix to multiplicity sampling resulted in cutting the quasi-elastic peak height in half, more in line with the binary cascade;
  - the same fix increased the multiplicity and decreased the mean energy of pion secondaries, thus shortening the length of showers in calorimeter tests by roughly 2% (depending on the physics list);
  - CMS test beam studies show a significant reduction in non-linearities in energy response to MIP like particles between `5` and `10 GeV`;
  - improvements to the Coulomb barrier have significantly reduced the number of protons below `20 MeV`.
- Improvements in the precompound model have resulted in more realistic neutron spectra at low energies. For `22 MeV` protons on aluminum, for example, the neutron spectrum now falls exponentially, as expected from data. Before the changes, this spectrum was more or less flat. This results in proportionally more neutrons at lower energies.
- Performance measurements carried out on realistic setups when using `QGSP_BERT` for `50 GeV pi-`, show an improvement of about 25% in CPU time. A slight degradation in performance of 1 to 3% is instead measured for `QGSP_EMV`.

## 6. Known Run-Time Problems and Limitations

Command-based Scoring

The following known issues affect the cylindrical scoring mesh feature and are expected to be fixed in the next release.

- Rather frequent warning messages may be issued during tracking by the `G4Navigator`, concerning zero-length steps. This does not affect the correctness of the results and has been identified in the cases where a track enters at exactly the center of the top/bottom circular face along the local z-axis of the scoring cylinder.
- Speed of transportation in cylindrical mesh is known to be non-optimal and will be improved in the next release.
- A problem for some scorers which use the volume size for cylindrical mesh is identified due to faulty calculation of the geometrical volume in such configurations. The following scorers currently should not be used for cylindrical meshes (unless you hand-correct for the volume after results are obtained): `G4PSCellFlux, G4PSDoseDeposit, G4PSPassageCellFlux, G4PSCylinderSurfaceCurrent, G4PSCylinderSurfaceFlux`.

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 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 can 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 encountering problems at geometrical boundaries.

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 not killed 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

- Integrated improvements to `Qt` setup. Automatically detecting Qt3 or Qt4 installations.
- Embedded `AIDA` setup in central configuration scripts, simplified `GNUmakefile`s in examples.
- `binmake.gmk`: added sub-modules `persistency/ascii`, `particles/adjoint` and `electromagnetic/adjoint`.
- Implemented temporary workaround in `Darwin-g++` for automatically set `GLLIBS` for Leopard. Implemented temporary workaround in `Linux-g++` for automatically detect and correctly set `X11LIBS` and `GLLIBS` for 32/64-bits dual systems on Linux.
- Defined `$FIND, $SORT, $TOUCH` variables overridden in Windows setup for defining proper absolute path to CygWin tools, to avoid clashes with Windows native tools.
- `G4UI_USE.gmk`: added `-DG4UI_USE` to `CPPFLAGS`.
- `Configure` script: brought up-to-date with new data sets and configuration options for Qt.

### Digitization & Hits

- Introducing cylindrical scoring mesh (`G4ScoringCylinder` and related classes); Beta release.
- Introducing log-scale color map (`G4ScoreLogColorMap`).
- Fixed incorrect index number in `G4ScoringMessenger`.

### Electromagnetic Processes

- Adjoint
  - First release of adjoint (reverse Monte Carlo) processes for Compton, photo-electric, ionisation and Bremsstrahlung.
- High Energy
  - Added new Bremsstrahlung and pair-production models for hadrons.
  - Added initialization of `SubType` for all processes.
  - `G4eeCrossSections`: migrated to PDG 2006 data.
  - New models: `G4eeTo3PiModel`, `G4eeToPGammaModel`, `G4ee2KChargedModel`, `G4ee2KNeutralModel`.
  - `G4eeToHadronsMultiModel`: added main reaction channels for `omega` and `phi` resonances.
  - `G4GammaConversionToMuons`: replaced legacy exit() statements by warnings.
  - Updated processes enumeration and printouts.
- Low Energy
  - Added PIXE cross section, L-shells, for protons in `G4OrlicLCrossSection`. Added semi-Empirical model implementation for L-SubShells-Cross-Section with protons projectiles.
  - New charge transfer process by incident protons (two cross-section and one final state policy classes).
  - Added Doppler broadening to `G4LowEnergyCompton`, based on Y.Namito, S.Ban and H.Hirayama, NIM A 349, pp. 489-494, 1994. Added Doppler broadening in `G4LowEnergyComptonPolarized`, same model as in `G4LowEnergyCompton`.
  - Added new stopping power model for ions, using by default ICRU 73 data tables. New templated classes: `G4IonParametrisedLossModel` and `G4IonParametrisedLossTable`.
  - Added new photon models (Penelope and Livermore) compatible with standard EM design (Beta release).
  - First inclusion of `G4PenelopeIonisationModel`. Correction for `G4PenelopeComptonModel`: now the cross section table calculated by the model corresponds to the original Penelope; the difference was only for compounds materials and below 1 keV. Fixes to `G4PenelopeBremsstrahlungContinuous`.
  - Allow for loading the complete Auger dataset on initialization.
  - Cleaned and updated energy limits for DNA processes.
  - Added new elastic scattering process for electrons (Geant4 DNA) from C.Champion's model (`G4CrossSectionElasticChampion` and `G4FinalStateElasticChampion`). First implementation of process for positronium production from C.Champion's model. Updated `G4DNAGenericIonsManager`. NOTE: new processes work only with version 6.2 of `G4EMLOW` data.
  - Removed printout in `G4LowEnergyCompton`. Addressing problem report #1026.
  - Removed `AddEnergyDeposit` below low energy limit in final state classes.
  - Decreased low energy limit for e- to `12.61 eV` in `G4CrossSectionIonisationBorn` and `G4FinalStateIonisationBorn` instead of `25 eV`.
  - Corrected wrong upper energy limit for hydrogen in class `G4CrossSectionIonisationRudd`, and proton in `G4ChargeDecrease`. Raised lower energy limit of `G4CrossSectionExcitationEmfietzoglou` up to `10 eV`. Updated low energy limits of Geant4-DNA e- models (Brenner-Zaider and Champion's elastic scattering and Emfietzoglou's excitation).
  - Added two new classes for electron elastic scattering below and above `200 eV`.
  - Added protection against negative log() argument in `G4LogLogInterpolation`.
  - Added protection against energies above `200 eV` and corrected bug in computation of differential cross-section maximum in `G4FinalStateElasticBrennerZaider`.
  - Added protection in `G4FinalStateIonisationBorn` causing run-time error detected by Valgrind.
  - Requires new data set `G4EMLOW.6.2`.
- Muons
  - Added initialization of `SubType` for all processes.
  - Added Spline option and promoted to public method `ComputeTrueStep()` in `G4EnergyLossForExtrapolator`. Added method `TrueStepLength()`; fixed initialization before a step.
  - Several fixes and further developments in `G4Mu*` models and associated processes in order to be used as base classes for hadron induced bremsstrahlung and `e+e-` pair production.
- Polarisation
  - Added initialization of `SubType` for all processes.
- Standard
  - Added initialization of `SubType` for all processes.
  - Multiple Scattering:
    - New multiple-scattering model `G4WentzelVIModel` used in new muon physics processes.
    - Cloned `G4UrbanMscModel` class into `G4UrbanMscModel2`:
      - Introduced several fixes and tunings. Tuned central part of scattering angle (`theta0`) and tail of the scattering angle distribution, using some `e-` scattering data.
      - Use screening function from `G4eCoulombScatteringModel` and fixed screening parameter of the single scattering part.
      - Added extra protection for `UseDistanceToBoundary` option.
      - Fixed bug in `ComputeTruePathLengthLimit()`.
      - Fixed NaN in sampling of cosine theta for `50 GeV e-`.
    - `G4UrbanMscModel`, `G4UrbanMscModel2`, `G4UrbanMscModel90`:
      - Fixed cases of string comparison when compute transport cross-sections, compare masses instead.
      - Using `StepStatus` from preStepPoint to identify first step for a given track instead of the step number. Fixing a problem observed in ATLAS of small step limits with suspended tracks when using Cerenkov process.
      - Added protection against sampling scattering angle with zero transport cross section.
    - New process `G4eMultipleScattering` specialized for `e+,e-`, which uses `G4UrbanMscModel2` as a default model.
  - Bremsstrahlung:
    - `G4eBremsstrahlungModel`: corrected Migdal constant to be set to the value as in `G4eBremsstrahlungRelModel`.
    - `G4eBremsstrahlungRelModel`: revised LPM and density effect suppressions; results fit CERN thin target experimental data at 150-300 GeV; defined threshold energy for LPM effect depending on atomic number; defined Thomas-Fermi screening function (a'la Tsai).
    - `G4eBremsstrahlung`: uses `G4eBremsstrahlungRelModel` above `1 GeV` by default.
  - Ionisation:
    - `G4ionIonisation`, `G4hIonisation`: removed `InitialiseMassCharge()` and `CorrectionsAlongStep()` methods; limits of kinetic energy for models now taken from the base class and from models; separated treatment of `He` ions.
    - `G4ionGasIonisation`: is exact clone of `G4ionIonisation`.
    - `G4hIonisation`: switched off nuclear stopping for `pi` and `K` mesons.
    - `G4IonFluctuations`: added protection to the computation of the correction factor to dispersion which provide smooth transition to small velocities of an ion; added protection in computation of dispersion on allowing have a corrected dispersion below Bohr value. Avoid Poisson sampling. Avoid loop over elements of material; use effective `Z`. Added `G4UniversalFluctuation` model to provide a smooth transition from high to low energies.
  - `G4eCoulombScatteringModel`:
    - Speedup run-time computations using precomputed nuclear form-factors per element.
    - Added extra protection for precision lost in computation of recoil energy and for ions. Added protection against precision loss in computation of cross section at high energy.
    - Added usage of `G4ElementSelector` vector.
  - `G4PAIxSection`: new functions for resonance and Rutherford collisions.
  - `G4PAIPhotonModel`: changed model name.
  - Fixed nuclear size correction for the `G4BetheBlochModel`. Added methods `GetParticleCharge()`, `GetChargeSquareRatio()`, `CorrectionsAlongStep()` needed for ions in `G4BetheBlochModel`, `G4BraggModel` and `G4BraggIonModel`; defining low and high energy limits inside the model. Take into account effective charge change over the step.
  - `G4WaterStopping`: using Spline interpolation and mass number instead of atomic mass.
  - `G4WaterStopping`: added extra data.
  - `G4PSTARStopping, G4ASTARStopping`: fixed `SiO2`, TEFLON, and GRAFITE data.
- Utils
  - New class `G4VMscModel` to keep general multiple-scattering parameters and Get/Set methods.
  - New class `G4EmElementSelector`, a helper class to sample random `G4Element` in a compound material.
  - New helper classes: `G4EmConfigurator`, class to add model per particle type, process, energy range and geometrical region.
  - `G4ElectronIonPair`: class to sample number of primary ionisations in detectors.
  - Added `G4EmProcessSubType` enumerator, defining sub-types for all EM processes and changed enumeration names in `G4EmTableType` to avoid clashes.
  - Added new `G4EmSaturation` helper class.
  - `G4VEnergyLossProcess`: fixed computation of NIEL at the last step of a particle.
  - `G4LossTableManager`: fixed logic in compute `dEdx` table for an inactive process. Added register/deregister mechanism and deletion at the end of job for `G4VEmModel`. Propagated Spline flag to `G4LossTableBuilder`. Set spline option to `true`, `LPM` effect to `true` by default. Removed legacy calls to `exit()`.
  - `G4LossTableBuilder`: removed dependency on `G4LossTableManager`. Removed legacy calls to `exit()`.
  - `G4EmModelManager`: fixed crash in destructor when verbosity is greater than 1; fixed selection of models per energy; updated printout with `DumpModelList()` method.
  - `G4VEmModel`, `G4VEmProcess`, `G4VMultipleScattering`, `G4VEnergyLossProcess`:
    - Reordering of members and methods of classes and improved comments.
    - Setting default table size `0.1 keV - 100 TeV` in 84 bins.
    - Renamed and improved method `MicroscopicCrossSection()` by `CrossSectionPerVolume()`.
    - Using new `DumpModelList()` method from `G4EmModelManager` in the verbosity output.
  - `G4VEmModel`:
    - Provided optimizations of `SelectRandomAtom()` and `SelectIsotope()`.
    - Added methods `GetParticleCharge()`, `GetChargeSquareRatio()`, `CorrectionsAlongStep()` and `ActivateNuclearStopping()` needed for simulation of ion transport.
    - Added LPM flag and access methods.
    - Added threshold on secondary energy used in Bremsstrahlung model and access methods.
    - Use STL vector for cross sections per atom instead of C array to avoid limits of compound materials.
  - `G4VEnergyLossProcess`: added pointer to current `G4VEmModel`; removed method `CorrectionsAlongStep()`, using instead corresponding method of a model.
  - `G4EmCorrections`:
    - Added interfaces to ion effective charge.
    - Disabled computation of ion corrections if `G4hIonisation` process is used for ions.
    - Added new correction methods in order to provide a smooth transition between low-energy parameterization and Bethe-Bloch model.
    - `dEdx` data for ions are initialized at the start of a run for materials used in geometry.
    - Updated search for ion/material pairs.
    - Defined the correction vector `25 keV - 2.5 MeV` in 20 bins as it is in ICRU'73 table.
  - `G4VEmFluctuationModel`: added method `SetParticleAndCharge()`.
  - `G4EnergyLossMessenger`: added UI command `/process/em/applyCuts`.
- Xrays
  - Added scintillation with Birk's law and make now use of `G4EmSaturation` to implement Birks correction.
  - Added `SetProcessSubType()` method to `G4Cerenkov` and `G4Scintillation`.
  - `G4Cerenkov`:
    - Added extra step limit `MaxBetaChangePerStep` and enforced a step limit at the Cerenkov threshold.
    - Modified sampling of the Cerenkov photon origins assuming linear decrease in the `MeanNumberOfPhotons` over the step.
    - Use direct inheritance from `G4VProcess`.

### G3toG4

- Fixed compilation warning for gcc-4.3.X in `clparse`.

### General Processes

- Biasing
  - Fixed use of `WeightCutOff` now correctly working in a mass geometry.
  - Archived obsolete class `G4CellFinder`.
- Cuts
  - Added `G4ProductionCutsTableMessenger` class.
- Decay
  - `G4DecayWithSpin`: modified `DecayIt()` to allow spin precession also for EM fields.
  - Fixed process sub-type enumeration.
- Management
- Optical
  - In `G4OpWLS` now use `SetTouchableHandle()` for the secondaries in the `DoIt()`.
  - `G4OpBoundaryProcess`: correctly initialise pointer `Surface`; corrected use of signatures for `G4SwapPtr()` and `G4SwapObj()`, also addressing problem report #1020; changed unsafe cast to surface to `dynamic_cast`, according to suggestion in problem report #1014. Use `G4RandomTool` utilities.
  - Replaced process sub-type IDs with corresponding enum IDs. Added local `G4OpProcessSubType` enum.
- Scoring
  - Added copying of non-ionizing energy deposit in `G4Step`.
- Transportation
  - `G4Transportation, G4CoupledTransportation`: Performance improvement: avoid to compute safety at end of step for neutral particles. Push value & origin of safety to `G4SafetyHelper` only when its value comes from `ComputeSafety()`.

### Geometry

- Divisions
  - Added division along `X` for G4Trd (that results in G4Trap's).
  - Enhanced `G4PVDivision` internal utility methods to allow divisions solids to have type different than mother.
- Magnetic field
  - Revised signature of `G4ChordFinder::FinderNextChord()`, making `FieldTrack` argument passed as reference.
  - Added `ApproxCurveV` to method `G4ChordFinder::ApproxCurvePointS()` in order to better calculate the curve length.
  - Added new stepper class `G4ConstRK4`, performing integration of one step with error calculation in constant magnetic field; implementation derived from `G4ClassicalRK4`.
  - Added `SetAnomaly()` and `GetAnomaly()` accessors to `G4EqEMFieldWithSpin`. Renormalised spin to 1.
  - Some code cleanup.
- Management
  - `G4VSolid`: explicitely reserve memory for polygon vectors in clipping algorithm to help reducing memory footprint.
- Navigation
  - `G4Navigator`: introduced optional `Boolean` argument to `ComputeSafety()` to allow for computation of safety without modifying the state of the navigator. Modified accordingly involved classes, for calls to `ComputeSafety()`.
  - `G4VoxelNavigation`: implemented additional check when running in `check` mode; if it is on the surface, ensure that it can move on next step; either `DistanceToIn(p,v)` or `DistanceToOut(p,v)` should return a finite value greater than the tolerance.
  - `G4PathFinder`: cleared unecessary calls to `ComputeSafety()` in `ReLocate()`.
  - Moved method `LocateIntersectionPoint()` in `G4PropagatorInField` to a separate class `G4VIntersectionLocator`, now allowing to use different location algorithms: Brent, MultiLevel, Simple. New classes: `G4VIntersectionLocator`, `G4SimpleLocator`, `G4BrentLocator` and `G4MultiLevelLocator`.
  - Introduced first implementation of new optional method in locator classes `AdjustementOfFoundIntersection()` using surface-normal of the intersecting solid to boost accuracy. Added the optional call to the new method in each concrete locator.
- Solids (CSG)
  - `G4Tubs`, `G4Cons`: implemented speed improvements and corrections from joint code review of `G4Tubs` and `G4Cons` classes. Cached computation for half-tolerance and use of Boolean flag for identifying if full-cone/tubs or section. Implemented caching of trigonometric values, now directly computed inside modifiers for `Phi` angles and required for parametrised cases (improvement bringing up to 20% speedup in normal tracking for tube/cone-sections placements).
  - `G4Sphere`: defined `Get/SetInnerRadius()` accessors to be compliant with other CSG solids.
- Solids (Specific)
  - Corrected algorithm in `G4TriangularFacet::GetPointOnFace()` according to suggestion advanced in problem report #1025. Fixes a problem of false overlaps detection related to `G4ExtrudedSolid` and `G4TessellatedSolid`. Corrected initialisation of algorithm in `G4TriangularFacet` constructor.
  - `G4ExtrudedSolid`: fixed bug in the decomposition of polygonal sides for quadrangular facets in `MakeFacets()`. Addresses problem report #1029.
  - Enhanced `GetPointOnSurface()` for generic `G4Polycone` and `G4Polyhedra` constructs.
  - Added missing accessors to `G4EllipticalCone`.
- Volumes
  - `G4ReflectionFactory`: corrected singleton definition; return `const G4String&` instead of copy in `GetVolumesNameExtension()`.

### Global

- `G4UnitsTable`: added units for electric-field, `V/m`.
- `G4PhysicsVector`: introduced cubic spline interpolation, optionally selectable. Optimised implementation of `GetValue()` method.
- `G4LPhysicsFreeVector`: corrected use of `GetValue()` to adopt implementation available from the base class.
- Corrected initialisation of vectors to conform to definition in `G4PhysicsVector`, and added protections against empty vectors.
- Corrected definition of copy-constructor and `operator=()` in `G4PhysicsVector` and added corresponding definitions in derived classes, where needed.
- Added missing constructor `G4String(const char*, str_size)`.
- Modified `G4RandomDirection` global function to use unit radius sphere surface algorithm instead of 8-quadrants technique, giving ~30% performance boost in dedicated stress tests.
- Added header `G4RandomTools.hh`, implementing global utility methods for random Lambertian vector and random plane vector. Implementation derived from `G4OpBoundaryProcess`.
- Changed date for release 9.2.

### Graphical Representations

- `HepPolyhedronHype`: fixed arrays upper-bound in constructor, responsible for memory corruption in visualization of `G4Hype` shape.

### Hadronic Processes

- Replaced usage of `G4NucleiPropertiesTable::GetBindingEnergy(Z,A)` with `G4NucleiProperties::GetBindingEnergy(A,Z)` in all affected classes.
- Replaced usage of `G4NucleiPropertiesTable::IsInTable()` with `G4NucleiProperties::IsInStableTable()` where necessary.
- Cross sections
  - `G4CrossSectionDataStore`: added method `SampleZandA()`, returning a `G4Element` and filling `G4Nucleus`.
  - `G4GlauberGribovCrossSection` provides a smooth transition from Barashenkov cross-sections at `90 GeV`; set threshold to `90 GeV` where this cross-section is used.
  - `G4PiNuclearCrossSection`: commented out debug calls to `G4ping`.
  - `G4BGGPionElasticXS, G4BGGPionInelasticXS, G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS, G4UPiNuclearCrossSection`: added proper Coulomb barrier and cleanup implementations.
- Management
  - Added class `G4HadronicProcessStore`, singleton class to keep pointers to all registered hadronic processes and to provide dump of process and models used in Physics List.
  - Introduced new hadronic process subtype enum `G4HadronicProcessType`; added to `G4HadronicProcess` to identify process sub-types.
  - Set process sub-type to `fHadronInelastic` for all process
  - `G4HadronicProcess`:
    - Some cleanup; use method `SampleZandA()` to select an isotope and avoid use of debug local `NanCheck()`; avoid checking environment variables at run-time; directly fill `G4HadronicWhiteBoard`.
    - Implemented `PostStepDoIt()` and `DumpPhysicsTable()` methods.
    - Removed obsolete method `SetDispatch()`.
    - Make `MeanFreePath()` public to avoid interface change (addressing problem report #1035). In future this method will become protected; a specific public method will be provided for it.
    - Cleanup derived processes (`G4HadronInelasticProcess`, `G4HadronElasticProcess`....) moving destructors to source of a class and use methods from the base class.
- Binary Cascade
  - `G4BinaryCascade, G4BinaryLightIonReaction`: added name of the model; commented out welcome message.
  - Made static instance of `G4Scatterer` in `G4BinaryCascade` class a data member instead, to avoid issues of static destruction at job closure; resolves issue detected by Valgrind.
- Cascade
  - Implemented code review for optimization and speed up.
  - `G4ElementaryParticleCollider`: in method `GenerateMultiplicity()`, removed large_cut which increases multiplicity from 3 to 4 abruptly at `4 GeV` and above. This caused a sharp drop-off in the single pion spectra from `pH` reactions. The effect in heavier nuclei is small.
  - Introduced simple wrapper class `G4CascadeMomentum` meant to replace usage of `std::vector` in the cascade code, to reduce memory allocations. Modified cascade code accordingly.
  - Added Coulomb barrier plus barrier penetration in `G4IntraNucleiCascader`.
  - Fixed multiplicity sampling in `G4ElementaryParticleCollider` method `generateMultiplicity()`. Now partial cross-sections are normalized to the total cross section instead of just the sum of 2-body to 6-body final state cross sections. Also fixed 2-body cross-sections above 7 GeV where they were too small. Fixed the same cross-sections which appear in `G4CascadSpecialFunctions`.
  - Added comments to cross section tables in `G4CascadSpecialFunctions` and `G4ElementaryParticleCollider`.
  - Replaced `GetAtomicMass()` with `GetNuclearMass()` in `G4InuclEvaporation` and `G4BertiniEvaporation`.
  - Added name `Bertini Cascade` to `G4CascadeInterface`.
- Chiral Invariant Phase Space (CHIPS)
  - Added `G4QIonIonElastic` process
  - Added general process type to several processes. Set process sub-type to 11 (elastic) for `G4QElastic`, `G4QIonIonElastic`; sub-type 12 (inelastic) for `G4QCollision`, `G4QDiffraction`, `G4QGluonString`, `G4QLowEnergy`; sub-type 13 (capture) for `G4QCaptureAtRest`; sub-type 15 (stopping) for `G4PionMinusNuclearAtRestChips`, `G4ProtonAntiProtonAtRestChips`; sub-type 16 (quasi-elastic) for `G4QCoherentChargeExchange`; sub-type 10 (unknown) for `G4QAtomicElectronScattering`, `G4QDiscProcessMixer`. Set process type ID to `fHadronAtRest` for `G4QCaptureAtRest`, `G4PionMinusNuclearAtRestChips` and `G4ProtonAntiProtonAtRestChips`.
  - `G4QCaptureAtRest`: added registration in `G4HadronicProcessStore` and `PrintInfo()` by adding `PreparePhysicsTable()` and `BuildPhysicsTable()`.
  - `G4GammaNuclearReaction`: moved implementations from header to source and added ID name "CHIPS".
  - `G4ElectroNuclearReaction`: moved instantiation of HE model to constructor from run time and added ID name "CHIPS".
- De-excitation
  - `G4PhotonEvaporation`: atomic relaxation model is no longer applied following internal electron conversion. Instead the vacant shell index is passed to radioactive decay model, where the ARM is applied.
  - New inverse cross sections:
    - OPT=1 Chetterjee's parameterization to reaction cross sections from optical potential global fittings;
    - OPT=2 as OPT=1 but for protons the Wellisch's parameterization for protons is used (DEFAULT);
    - OPT=3 Kalbach's modifications of Chatterjee's parameterization of cross sections;
    - OPT=4 as OPT=3 but for protons the Wellisch's parameterization for protons is used.
  - Integraded fixes in `G4EvaporationProbabilities`; OPT=2 is set.
  - Switched off FermiBreakUp by default.
  - Upgrades to evaporation and handler.
  - Fixed problem report #1028 in `G4CompetitiveFission::FissionCharge()`; trivial change of `A` to `Af`.
  - Fix in `G4GEMChannel` according to `(anA,aZ) -> (AResidual,ZResidual)` for pairing correction in `ExEnergy`.
  - Fix from JMQ for Zirconium
  - Fixed minor memory leak in `G4ExcitationHandler` and `G4EvaporationChannel`.
  - Increased verbosity in `G4Evaporation` to try to understand channel probability failure in very rare case.
  - Trivial fix to prevent negative cross-sections for incident protons on targets with `A < Carbon`.
- Elastic scattering
  - `G4ChargeExchangeProcess`: added high and low energy protections to cross-section. Process and model prepared to be used in physics lists; energy threshold is set to `1.0 MeV`.
  - `G4HadronElastic`: added counts of abnornal sampling results and printing out values in the destructor; fixed sampling of scattering angle outside kinematically allowed interval.
  - Set process sub-type according to enumerator for `G4UHadronElasticProcess` and `G4ChargeExchangeProcess`.
- High precision Neutron
  - Improved energy and angular distributions for both scattered neutron and recoil targets. Fixed missing inelastic gamma-ray lines. Addresses problem report #1008.
  - Fixed bug for missed pouch-out particles.
  - Introduced A and Z values of used NDL data for residual reconstruction.
  - Adjusting final states based on the energy and momentum conservation.
  - Limiting the sum of secondary energies.
  - Fixed minor bug in `G4NeutronHPLabAngularEnergy`.
  - Changed interpolation scheme for histogram in `G4NeutronHPInterpolator`.
  - Fixed bug in `Sample()` and `GetXsec()` in `G4NeutronHpVector`.
  - Prohibit level transition to oneself in `G4NeutronHPDeExGammas`.
  - Fixed memory leak in `G4NeutronHPPhotonDist` and correcting data disorder which could happen when both `InitPartial()` and `InitAngular()` methods were called in same instance.
  - Fixed calculation of residual momentum in `G4NeutronHPInelasticCompFS` and `G4NeutronHPDiscreteTwoBody`. Added protection for negative energy results in very low energy (`1E-6 eV`) scattering in `G4NeutronHPElasticFS`.
  - Fixed minor memory leak in `G4NeutronHPPhotonDist`.
  - Fixed problem in G4NeutronHPProduct resulting in too many secondaries production in nd rections.
  - Added protection in `G4NeutronHPName` for selecting data in hydrogen and alpha.
  - Fixed case of definition of `G4PhysicsVector` of length zero in `G4NeutronHPIsoData`.
  - Fixed memory leak in `G4NeutronHPThermalScattering`.
  - Added protection for invalid read in `G4NeutronHPFissionData` which caused run time errors.
  - Fixed bug in `G4NeutronHPChannel::Register()`; added limitation of trial for creating final states and added protection for pure 1H case in `G4NeutronHPInelastic`.
  - Updated data set to G4NDL3.13.
- Im_r_matrix
  - `G4XNNElasticLowE, G4XNNTotalLowE`: avoid use of static call to `G4ParticleDefinition` in destructor; resolves issue detected by Valgrind.
- INCL/ABLA
  - Provided two fission models: by default GSI SimFis3 fission is used. Optional: SimFis18.
  - Fixed serious data reading bug affecting the reading of some data files.
  - Fixed initialisation of several variables to zero and target nucleus quantities. Improved coding style.
  - Several array index handling (off-by-one) bugs fixed.
  - Partial fix to the Alpha evaporation energies and fix to neutron energies.
  - Switched the transformation matrix indices in ABLA.
  - Use `GetNuclearMass()` instead of `GetAtomicMass()` in `G4AblaEvaporation`.
- Parton-String
  - Revised string fragmentation and tuned parameters in FTF model for `Pi+P` and pion-nucleon interactions. Implemented quasi-elastic hadron-nucleus scattering in FTF and formation time; tuned string tension.
  - Fixed logic in `G4QGSParticipants` algorithm: avoid usage of iterator decrementing in loops. Addresses problem report #1018.
  - Fixed memory leak in `G4FTFModel` destructor.
- Photolepton-hadron
  - `G4MuNuclearInteraction`: added `SubType` to `fHadronInelastic` and registration in the `G4HadronicProcessStore`; added `PreparePhysicsTable()` method and some code cleanup.
- Pre-equilibrium
  - Fixed `G4PreCompoundNeutron` using data for 22 MeV protons off Zirconium.
  - Added data member initialisation to `G4VPreCompoundTransitions`, responsible for run-time errors detected by Valgrind.
  - Added protection for close to zero excitation energy in `G4PreCompoundModel` to not try to de-excite.
- QMD Reaction
  - Fixed and changed sampling method of impact parameter in `G4QMDReaction`. Added `deltaT` in signature of `CalKinematicsOfBinaryCollisions()`. Fixed bug in nucleon projectile.
  - Added `Update()` method to `G4QMDMeanField`. Added `hit` flag and related methods to `G4QMDParticipant`. Added `Erase/InsertParticipant()` methods to `G4QMDSystem`.
  - Added several required updates of Mean Field; modified handling of absorption case in `G4QMDCollision`.
  - Fixed minor memory leaks.
- Radioactive Decay
  - `G4NuclearDecayChannel`: ARM is no longer applied in photon-evaporation for IT mode and is now applied at the end of `DecayIt()`; now using the correct shell index in appling ARM and switching on Auger electron production. Checking the residual kinetic energy after ARM and adding it to the atom.
  - Replaced legacy calls to `exit()` with `G4Exception` in `G4RadioactiveDecay` and `G4NuclearDecayChannel`.
- Re-Parameterized Gheisha
  - Fixed energy non-conservation problem in `G4RPGFragmentation` and in `G4RPGReaction`. Fixed `K0` ID problem in `G4RPGInelastic`.
- Processes
  - Set sub-types for `G4HadronCaptureProcess` (to `fCapture`), `G4HadronFissionProcess` (to `fFission`) and to `G4HadronElasticProcess` (to `fHadronElastic`).
  - Use `PostStepDoIt()` and `DumpPhysicsTable()` from the base class `G4HadronicProcess`.
- Stopping
  - Set process sub-type to corresponding IDs in enumerator for `AtRest` processes.
  - `G4MuonMinusCaptureAtRest`: added registration in `G4HadronicprocessStore` and `PrintInfo()` by adding `PreparePhysicsTable()` and `BuildPhysicsTable()` methods.

### Intercoms

- Added a new function in `G4UIcommandTree` to find a subtree.
- Fixed improper comment treatment for line continue characters "_" in class `G4UIbatch`. Addresses problem report #1034.

### Interfaces

- Improved layout of the `Qt` interface for `Qt3`.
- Added ability to launch `G4Qt` visualization without a `G4UIQt` interface.
- Added ability to have an external Qapp.
- Extended Qt driver help widget to include a search area.
- Removed Moc files, now autogenerated through central scripts.

### Materials

- `G4NistElementBuilder`: provide unique name for each isotope of an element. Use best known parameterisation for total binding energy of atoms, use standard masses for lightest stable isotopes.
- `G4IonisParamElm`: added Fermi velocity and L-factor (both used for parameterizations of the effective charge and straggling of ions). `G4IonisParamMat`: use Fermi velocity and L-factor from `G4IonisParamElm`.
- Added new classes `G4IronStoppingICRU73`, `G4MaterialStoppingICRU73` and `G4SimpleMaterialStoppingICRU73` for ICRU'73 data on stopping powers in the range `25 keV/n - 10 MeV/n`.
- Added virtual destructor to `G4SurfaceProperty` and derivated. Addresses problem report #1014. Changed method name from `DumpInfo()` to `DumpTableInfo()`.
- `G4Material`: use array size defined in material constructor, extend it if a component is a compound material.
- `G4Element`: use G4int(fZeff) coherently in the implementation.
- `G4Isotope`: use `AtomicMass` instead of `NuclearMass`.
- Added `SetName()` method to `G4Element, G4Isotope, G4Material` for use in detector persistency. Use `const G4String&` for accessors, instead of implicit copy.
- `G4NistManager` and `G4NistElementBuilder`: added method `GetTotalElectronBindingEnergy()`.
- `G4NistManager`: added inline methods to speed up EM computations.
- `G4IonisParamMat`: added `fMeanEnergyPerIon` and Set/Get methods.
- Added dummy default constructor in `G4OpticalSurface` and `G4SurfaceProperty`.

### Particles

- Added UI command for setting the verbosity level on the particle-table.
- Modified proton mass to be equal to `proton_mass_c2` from updated PDG-2008 values in CLHEP. Updated masses and widths according to PDG-2008.
- Avoid direct comparison of strings in method `G4IonTable::IsIon()`.
- Hidden all methods of getting mass of nucleus except for `G4NucleiProperties::GetNuclearMass()`, which should be now used. Cashed pointers/masses of light nuclei in `G4NucleiProperties`.
- Added a table of sum of masses of orbital electrons and their binding energy in `G4NucleiProperties`. Added methods of taking `A` and `Z` arguments as double. Added `IsInStableTable()` as replace of `G4NucleiPropertiesTable::IsInTable()`. Promoted to public methods `GetBindingEnergy()` and `GetMassExcess()`.
- Fix for using raw number of electron mass in calculation of magnetic moment for `e+/-`.
- Fixed magnetic momentum for leptons.
- New sub-module `adjoint` for adjoint-particles to be used in reverse MC simulations.
- Added more printout in `G4HtmlPPReporter` class.

### Persistency

- ASCII
  - First implementation of a new reader module for detector persistency in ASCII text format, derived from GAMOS application.
- GDML
  - Introducing GDML writer: material properties; support for parameterised volumes; division volumes; replica volumes; matrices; naming of physical volumes; Twistedtrap, Twistedtubs, Tet, Twistedbox, Twistedtrd, Hype, Orb, Para, Ellipsoid, Ellipticaltube, Polyhedra, Torus, Cone, Tube, Extruded, Boolean (intersection, subtraction, union), Reflections (using scaled transformation) solids; elements and composite materials.
  - Updated schema to include new features introduced in reader/writer plugins. Now requiring GDML_3_0_0 version of the schema.
  - Added support for new serializer API as introduced in Xerces-3.0.0.
  - Added support for modular files in GDML writer and reader. Added handling of precision and optional rounding of errors for imported/exported values. Added schema validation mechanism and schema files.
  - Implemented mechanism for importing GDML descriptions with extensions to the GDML schema, identified by a new tag `extension`.
  - Added features to reader: physical-volumes name; temperature, pressure and state of materials; NIST support. Added support for border surface and skin surface properties.
  - Added optional handling if precision on values loaded.
  - Implemented filtering of names in reader to remove from entity names appended reference pointer which may have been generated. Simplified name generated for physical-volumes. Added argument to Write() in G4GDMLParser for specify if appending or not reference pointer to generated names; default is TRUE.
  - Enhanced name stripping in `G4GDMLRead`, to remove also additional IDs prepended to the original name of entities in the case of modular GDML files. Added `StripNamePointers()` method to `G4GDMLParser`, utility to be invoked in the user-code to strip off pointers from entity names in a GDML modular setup after loading all modules. Get rid of module-name pre-pended to entity names.
  - Fixes in naming convention for solids; added specification of units where missing. Introduced parsing of vertices for tessellated solids to avoid duplication in writing.
  - Added possibility to read/write replication for Rho and Phi axes.
  - Added `G4Paraboloid` and `G4EllipticalCone` to list of supported solids for reader and writer.
  - Added class `G4STRead`, for importing of STEP-Tools generated geometry setups.
  - Cleared compilation warnings on Intel-icc compiler; general code review.

### Physics lists

- Updated `FTF*` lists and physics NOT to use quasi-elastic from CHIPS. FTF now has quasi-elastic included in the FTF model itself.
- Updated `option2` EM physics (EMX) and added `option3`.
- Added hadron induced bremsstrahlung and pair production for proton and pions.
- Set `inactive` for `AlongStep` for Bremsstrahlung and pair production processes in all EM builders, bringing a minor CPU improvement.
- Added specialized `G4eMultipleScattering` for electrons and positrons in all EM builders.
- Added `sigma_c+, sigma_c++` in the list of stable hadrons.
- New helper class `G4PhysListFactory` for building Physics Lists.
- `G4NeutronTrackingCut`: added methods for directly defining time and energy limits.
- `G4HadronElasticPhysics`: added optional Barashenkov cross-section.
- `G4ChargeExchangePhysics`: new builder for hadronic charge exchange process for proton, neutron and pions.
- QBBC: use FTF as a default, removed obsolete methods. Added temporary variant to QBBC, equivalent to QGSP_BERT without LHEP for protons, neutrons and pions. Added charge exchange process. Added QBBCG option and `G4PhysListFactory`.
- Added names to string models builders.
- Removed obsolete class G4HadronProcessStore.

### Track & Tracking

- `G4SteppingManager`: corrected conditions for default (`InActivated`) and `NotForced` processes. Fixed missing update of secondaries utility counter.
- Reset non-ionizing energy loss in `G4Step::ResetTotalEnergyDeposit()` in order to initialize NIEL in each step.
- `G4Track`: changed to `const` pointers `fpCreatorProcess` and `fpLCAtVertex`.
- `G4StepPoint`: changed to `const` pointer `fpProcessDefinedStep` data member.

### Visualization

- Overall
  - Extended 2D drawing capability, covering now also `G4Circle, G4Polyhedron, G4Polyline, G4Polymarker` and `G4Square`.
  - Fixed gcc-4.3.0 compiler warnings.
- Management
  - Trapped recursive use of `/vis/reviewKeptEvents`.
  - Added function for IncrementPan with X,Y,Z values.
- Modeling
  - Improved messages.
- OpenGL
  - Fixed `DBL_MAX` problem in 2D drawing.
  - Qt driver
    - Added many improvements for Qt3.
    - Changed last letter of driver names to lower case, from `OGLSQT/OGLIQT` to `OGLSQt/OGLIQt`.
    - Fixed crash that occurred when had no scene.
    - Added commands for mouse wheel zoom.
    - Fixed problem when launching QT VIS without QT UI (N02 for example).
    - Added movie making dialog panel (Right button->Actions->Movie parameters).
    - Added ability to "auto rotate" volume via quick mouse move.
    - Added moving camera on left/right/up/down arrow, going forward/backward with SHIFT+up/down, zoom in with +/- keys.
    - Fixed bug in help command whereby click callback on a item was not working on Windows.
    - Fixed crash at exit on Mac.
    - Added many graphic export options (vector and pixel) including EPS.
    - Fixed aspect ratio deformation on widget resize.
    - Removed Moc files, now autogenerated through config/common.gmk.

### Environments

- Introduced `g4py` module name.
- Removed legacy interface to GDML external module.
- Updated G4Py configure scripts, fixed some minor bugs and general code cleanup.

### Data sets

- New data for neutron cross-sections, G4NDL.3.13:
  - Added rest of isotope in JENDL_HE neutron files: `N(7), Ti(46, 47, 48, 49 50), V(51), Cr(50, 52, 53, 54), Mn(55), Co(59), Ni(58, 60, 61, 62, 62), Zr(90, 91, 92, 94, 96), Nb(94), W(180, 182, 183, 184, 186), Hg(196, 198, 199, 200, 201, 202, 204)`
  - New Elastic and Inelastic cross section from "JENDL High Energy File 2007" All 107 isotopes are converted (except for `Am242m`).
  - Added data file: `Inelastic/Gammas/z63.a149`.
  - Replaced `Nitrogen15` data (source: ENDF6).
  - Corrected wrong entries in some Inelastic and Capture data. Previous files are still available in each directory with suffix of .org.
- New low-energy data set, G4EMLOW.6.2:
  - Added in DNA tables for: Champion elastic scattering model and Champion Positronium creation model.

### Examples

- Various fixes, improvements, adoption of new features.
- Updated reference outputs.
- advanced
  - brachytherapy
    - Corrected and updated input macros.
  - gammaray_telescope
    - Fixed compilation problems in `MuonPhysicsList` class.
  - hadrontherapy
    - Reviewed example to update to the new beam line setup.
    - Corrections in the Low Energy Electromagnetic physic lists. Improved the electromagnetic models for the generic ions. Corrected cross sections definitions for ions. Revised the definition and use of the electromagnetic options for the use with the Standard models.
    - Added new approach for the choice of the physic models. Now packaged physic lists can be used as alternative to the physic models implemented in the class files EM, HE and HI.
    - Fixed path of macro files.
  - microbeam
    - Corrected typos in zero field region in `MicrobeamEMField`.
  - microdosimetry
    - New application simulating 10 keV tracks Helium+ (positive charge is +e) particle in liquid water using only `G4DNA` processes.
  - Rich
    - Fixed compilation problems in `EventAction` class.
- extended
  - Updated EM standard physics-lists and EM options and changed default histograms format in EM examples.
  - electromagnetic/TestEm7
    - Added process type to `G4SceenNuclearRecoil`.
    - Added
    - standardICRU73
    physics list in which ion ionisation is simulated using new model G4IonLossParametrisedModel, configured via `G4EmConfigurator`.
- electromagnetic/TestEm8
  - Removed local components of `PhysicsList` and use `G4EmConfigurator` to configure PAI model.
- electromagnetic/TestEm9
  - Added computation of ratios E1/E9 and E1/E25.
  - Added PhysLists with relativistic LPM model and updated macros.
  - Added control on number of events with Edep < 80%.
- eventgenerator/exgps
  - Updated analysis code and macros with AIDA.
- eventgenerator/pythia
  - New example `decayer6` of external decayer implementation based on Pythia6.
- field/field04
  - Fixed setup of random engine in `main()`.
  - Changed physics list to `emstandard`. Added charge exchange.
- hadronic/Hadr00
  - New example demonstrating how to use `G4PhysListFactory` to build physics lists and `G4HadronicProcessStore` to access cross sections.
- hadronic/Hadr01
  - Improved physics-lists output. Added charge exchange.
- medical/DICOM
  - Included `G4PSDoseDeposit_RegNav` to distribute dose along voxels, including msc and energy loss corrections, for the case of skipping voxel with equal materials when using regular navigation.
- medical/fanoCavity[2]
  - Updated EM standard physics-lists and EM options and changed default histograms format.
- optical/LXe
  - Added Birks constant for the LXe scintillator and Polystyrene scintillator.
  - Added call to `SetMaxBetaChangePerStep()` of Cherenkov in `LXeOpticalPhysics`.
- persistency/gdml
  - Added examples set for GDML plugin module: new example `G02` showing how to use GDML module for reading and writing; also showing how to import STEP Tools CAD files. Imported old GDML example originally placed inside `extended/gdml` and renamed `G01`.
  - `G01`: updated `loop.gdml` and `solids.gdml` descriptions to fix schema validation warnings; added new GDML samples compliant with GDML_3_0_0 and removed obsolete ones. Added example in `main()` how to retrieve auxiliary information.
  - `G03`: new example showing how to extend the GDML schema in input.
- persistency/P03
  - New example showing usage of ASCII text persistency for detector description.
- radioactivedecay/exrdm
  - `exdrmMaterialMessenger`: fixed units for density.
  - `exdrmPhysicsList`: fixed definition of cuts; simplified logic for setting of hadronic physics; corrected problem of double instantiation of radioactive decay.
  - Use AIDA setup from central scripts. Updated analysis code and macros with AIDA.
  - Fixed compilation warnings.
- runAndEvent/RE03
  - Add new input macro `run4.mac` with cylindrical scoring mesh.

- novice
  - N02
    - `PhysicsList`: added method `AddStepMax()` for `G4StepLimiter`. Updated EM standard physics-list.
    - `DetectorConstruction`: added method `SetMaxStep()`.
    - `DetectorMessenger`: added command `/N02/det/stepMax`.
  - N03
    - Updated EM standard physics-list.
    - Use `G4hMultipleScattering` for muons and protons.
    - Added Qt setup to vis macros.
  - N06
    - Use `dynamic_cast` for surface in `ExN06DetectorConstruction`.
    - Added call to `SetMaxBetaChangePerStep()` of Cherenkov in `ExN06PhysicsList`.