# Geant4 6.0 Release Notes

Geant4 6.0 Release Notes

December 12th, 2003

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

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

## Contents

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

## 1. Supported and Tested Platforms

Official platforms:

- SUN Solaris 5.8, C++ CC-5.4 Patch 111715-02.
- Linux, gcc 2.95.2, gcc 3.2.
  This configuration was tested with the RedHat 7.3 distribution, versions of Geant4 have also been compiled successfully on other Linux distributions, like Debian, Suse or more recent RedHat systems. The default RedHat compiler gcc-2.96 distributed in RedHat 7.X is NOT supported. It has been verified that it produces incorrect binaries, therefore is not reliable. See also note below.
- Windows/2000 and CygWin Tools with: Visual C++ 6.0 Service Pack 5

More verified configurations:

- SUN Solaris 5.8, C++ CC-5.5.
- Linux, gcc 3.3.2.
- Windows/XP and CygWin Tools, .NET Visual Studio 2003 C++ 7.1

Platforms configured but not tested and not supported:

- 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
- AIX 4.3.2, xlC 6.0
- MacOS 10.2, gcc 2.95.2 / gcc-3.2

## 2. AIDA and CLHEP

Geant4 6.0 requires the installation of CLHEP.
Tests have been performed with CLHEP-1.8.1.0.

Geant4 6.0 examples with histogramming cowork with AIDA 3 implementations. These include:

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

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

## 3. Compiler Specific Problems

- Linux Red Hat 7.X, gcc-2.96.
  - The default compiler distributed by Red Hat since release 7.0 is NOT supported and not considered reliable for running a Geant4-based application. In more than one test case, binaries produced by gcc-2.96 have shown incorrect behavior, either due to wrong order of initialisation of static data in memory or to bugs in the system `iostream` classes, problems which apparently have all been solved in more recent versions of the compiler (3.X series).
    For information, gcc-2.96 is a compiler that has never been officially released, nor supported by the GNU team itself and is not considered reliable by the authors (for more information, see also http://gcc.gnu.org/gcc-2.96.html).

## 4. Known Run-Time Problems and Limitations

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

## 5. Compilation Warnings

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

## 6. Known Run-Time Warnings

The following messages can be written to error output while tracking. We believe none give rise to incorrect behaviour.

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

## 7. Major items for migration of user code

### Data sets

- The new data sets for low-energy EM processes `G4EMLOW2.3` is required for applications making use of such processes.

### Geometry

- In `G4VPhysicalVolume` it is no longer possible to retrieve the pointer to the physical mother volume. The related accessor declared obsolete since release 4.1, has been removed in this release.
  To properly access information about the current physical volume or its mother physical volume during the navigation, it is now required to adopt touchables through the pre/post-step point.
  Examples on how to do this are provided in the FAQ page
- Inherited user-defined physical volumes will have to adapt to the new interface by removing the method `Setup()`, now no longer required.
- A revision of methods in `G4Navigator` has taken place, some obsolete methods not used and available in the public interface have been removed, others originally meant for internal use have been moved to `protected` (see notes for details).
  `LocateGlobalPointAndSetup(p,v,history)` has been renamed to `ResetHistoryAndLocate(p,v,history)`.
- A revision of the inclusion of header files has been done in all geometry modules. This may require explicit inclusion of headers in the client code.
- `STEP` and `STEPinterface` modules have been archived and are no longer available in this release.
- Internal modules in the geometry have been reorganised. External frameworks taking into account the internal structure of the Geant4 modules will have to be adapted to the new configuration (see notes for the details).

### Magnetic Field

- The accuracy parameters `EpsilonMin` and `EpsilonMax` (for the relative integration accuracy of momentum, energy etc in a sub-step) have been moved from `G4PropagatorInField` to `G4FieldManager`, enabling different values.
  Default values have changed, in particular:
  - `EpsilonMin` to `0.001` (from `0.05`) for better energy / momentum integration.
  - `MaxLoopCount` to `1,000` (from `10,000`) to kill looping tracks.
- In `G4PropagatorInField` the methods `GetDeltaIntersection()`, `GetDeltaOneStep()` and their corresponding `Set` methods including `SetAccuraciesWithDeltaOneStep()`, will become obsolete in `G4PropagatorInField` at the next major release.
  These quantities are properties of `G4FieldManager`.
- Electric and electromagnetic fields must have their chord finder and equation of motion initialised directly. See the example in `examples/extended/field/field02`.

### Electromagnetic physics

- Standard electromagnetic processes now adopt a new design based on a model approach for energy loss and multiple scattering.
  User interfaces are maintained unmodified. However, the old process implementations (frozen at the release 5.2 versions) are still available as classes with "`52`" postfix to their name.
- The class `G4ionIonisation` is now assumed to be used for simulation of the energy loss of `GenericIons`.

### Hadronic physics

- The interface for registration of cross-sections has been changed. Cross-sections can now be registered directly with the process as follows:
  `aHadronicProcess.AddDataSet(myFavoriteDataSetPointer);`
- Exception handling is enabled and used to percolate up the calling stack and get more information as to what was the initial condition of a particular reaction.
- A design iteration of the implementation frameworks to enable biasing, and decouple from `G4ParticleChange` has been done; also in view of future provisions of a user hook for inspection of the initial and final states of hadronic interactions.

### Run

- Some mandatory kernel functionalities of the run-manager have been grouped in a new G4RunManagerKernel class so that advanced users who have their own run manager can easily use key functions of the Geant4 kernel.

### Visualization

- A new command, `/vis/scene/endOfRunAction`, has been implemented. The default behaviour is "refresh". In the case when `endOfEventAction` is "accumulate", it causes systems requiring post-processing, such as DAWN, or file-based systems, such as DAWNFILE and HepRep, to show the view (equivalent to `/vis/viewer/update`) at the end of run and screen-based systems, such as OpenGL, to clear the tracks. hits, etc., at the start of the next run. Usually this is the desired behaviour.
  The user will find that it is no longer needed to issue `/vis/viewer/update` (or `/vis/viewer/flush`) at the end of a run. To revert to the old behaviour, one should issue the command `/vis/scene/endOfRunAction accumulate`.
- The OPACS graphics driver has been removed since that graphics system has been superseded by OpenScientist.
- A new HepRep driver has been added, producing files suitable for viewing with the WIRED event display (or other HepRep clients).
  The previous HepRep driver that produced HepRep version 1 files from `/vis/open HepRepFile` is still supported. But a new driver producing HepRep version 2 files is now available from `/vis/open HepRepXML`.
  The newer HepRep format allows the WIRED event display to give you greater control over visibility of various event and detector components. It will also set the stage for many improvements to come in later versions of WIRED (such as the ability to edit and save attribute changes from the event display client and have these changes apply to subsequent Geant4 images that one reads, and the ability to adjust visibility based on cuts on attributes such as energy and momentum).
  `/vis/open HepRepXML` provides the following other additional benefits over `/vis/open HepRepFile`:
  - More compact files (by better hierarchical handling of repeated attributes).
  - Ability to save individual events directly to gzipped files.
  - Ability to save multiple events to a single zip file.
  For details, see the README in `$G4INSTALL/source/visualization/HepRep`.
  HepRep examples are included in the `$G4INSTALL/examples/novice/N03` and in `$G4INSTALL/examples/extended/analysis/A01`.
  A tutorial on HepRep and on WIRED for Geant4 users is also available.

## 8. Detailed list of changes and fixes

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

### Configuration

- Added entry for new geometry modules, `particles/utils`, `processes/cuts`, `digits_hits` and new hadronic modules.
- Removed setup for STEP and OPACS, now archived.
- Brought Configure installation script up-to-date.

### Digitization & Hits

- Imported files from directory digits+hits and changed name of compound library to 'G4digits_hits'.

### Event

- Design iteration implementing modular run-manager:
  - `G4EventManager` now toggles the application states between '`G4State_GeomClosed`' and '`G4State_EventProc`'.
  - New entry methods `G4EventManager::ProcessOneEvent()` are introduced:
    - taking `HepMC` event object instead of `G4Event` object.
    - taking `G4TrackVector` object.
  - Added mechanism for merging more than one kind of primaries (`HepMC` and `G4PrimaryVertex` or `G4TrackVector` and `G4PrimaryVertex`).
  - `G4HepMCInterface::HepMC2G4()` becomes a static service method.
  - `G4HepMCInterface::CheckVertexInsideWorld()` is moved to `G4VPrimaryGenerator` and also becomes a static service method.
  - Changed the trackID numbering scheme for '`PostposedToNextEvent`' tracks. They now use negative trackID.
  - Keep links between pre-assigned decay products and corresponding primary particle. Due to this, proper track-ID is assigned to `G4PrimaryParticle` objects of pre-assigned decays.
- Added treatment of proper decay time for preassigned decay products.
- Correctly set in `G4DynamicParticle` the pointer to the corresponding primary particle.
- Introduced `G4StackChecker` class, utility class to be used from the user stacking action for enhancing the verbosity on tracks being pushed into the stack.
- Introduced `G4VUserEventInformation` class. Objects of this class can be associated by the user to `G4Event`.
- Introduced new classes `G4VUserPrimaryVertexInformation` and `G4VUserPrimaryParticleInformation`, which can be associated by the user to `G4PrimaryVertex` and `G4PrimaryParticle` respectively.
- `G4GeneralParticleSource`:
  - Increased the array size from 256 to 1024 for user defined histograms.
  - Bug fix: make sure the `SideRefVec(1/2/3)` are unit vectors.
- `G4ParticleGun`, `G4ParticleGunMessenger`: added protection against shooting shortlived particles.

### Electromagnetic Processes (Low-energy)

- New models of Bremsstrahlung angular distribution (2BN, 2BS).
- New processes for electrons and positrons according to Penelope models.
- Improved user interface to select Bremsstrahlung angular distribution models.
- Performance optimisation in Penelope Bremsstrahlung and minor fixes.
- Bug fixes in `G4hLowEnergyIonisation` and `G4AtomicDeexcitation`.

### Electromagnetic Processes (Standard)

- Replaced standard processes with new 'STD' processes implementing the new design based on model approach for energy loss and multiple scattering.
  - No changes to interfaces. Old energy loss processes are frozen at the release 5.2 versions. They are stored in classes with "`52`" postfix to the name.
  - Substituted `G4Material` by `G4MaterialCutsCouple` in `dEdx` and `CrossSection` methods. Now throwing warning for obsolete interfaces which uses `G4Material` instead of `G4MaterialCutsCouple`.
  - Added methods to define energy range for multiple-scattering table and to change the energy range of the model.
  - Added PAI model processes and minor change of interface to `G4EmFluctuationModel` for PAI development.
  - Updated default settings for processes.
  - Tuning for tail of the angular distribution.
- Ionisation:
  - The class `G4ionIonisation` is now assumed to be used for simulation of the energy loss of `GenericIons`.
    Effective charge approach is introduced to `G4ionIonisation`.
  - Ion fluctuation models have been updated.
  - Updated energy intervals for ionisation models.
  - Removed forced `verbose=0` for `G4MuIonisation`.
- Multiple-scattering:
  - New Tuning of multiple scattering model
  - Fixed problems for width and tails of angular distributions.
  - Fixed numerical error for small stepsize in G4MscModel (z sampling).
  - Bugfix in `G4VMultipleScattering::AlongStepDoIt()` and added check `truestep <= range` in `G4MscModel`.
  - Set `highKinEnergy` back to 100 TeV for multiple scattering.
  - Set number of table bins to 120 for multiple scattering.
- Pair-production:
  - Changed secondary particle from e- to e+ for `G4MuPairProduction` to avoid problems with custom physics lists.
  - Fixes in `G4MuPairProductionModel`:
    - 2*xi in `ComputeDDMicroscopicCrossSection()`.
    - 8 integration points in `ComputeDMicroscopicCrossSection()`.
- Energy-loss:
  - Updated initialization of energy loss processes.
  - Updated logic of the messenger to provide independence on command sequence.
  - Fixed cases of negative energy loss.
- Added new method `DefineForRegion()` to `G4VEmModel`.
- Updated logic of `BuildPhysicsTable()` to take into account deactivated processes
- Increased verbosity for store/retrieve tables.
- Fixed wrong deletion and error in `SetRangeTable()`.
- Fixed bug and updated printout in `RetrievePhysicsTable()`.
- Fixed crash for case of inactivated ionisation and bremsstrahlung.
- Fixed problem of rounding of double in `G4UniversalFluctuations`.
- Fixed precision problems for high energy (PeV) particles.

### General Processes, Parameterisation, Cuts, Decay, Optical

- Introduced optical process for wavelength shifting, `G4OpWLS`.
- `G4OpBoundaryProcess`: now adopting `G4SurfaceProperty` from `materials`.
- New sub-category `cuts`: moved classes from `particles/management`
  - Fixed bugs in `G4VRangeToEnergyConverter` (and derived class).
  - Revised error messages in retreiving `G4ProductionCutsTable`.
  - Added `verboseLevel` in `G4ProductionCutsTable`.
- Use `G4ExceptionSeverity` for all `G4Exception` cases.
- `G4FastTrack`: use `G4Navigator::CreateTouchableHistoryHandle()` instead of `CreateTouchableHistory()` in method `FRecordsAffineTransformation()`.

### Geometry

- Logical reorganisation and restructure of modules:
  - Added new module `navigation` for navigation-releated classes.
  - Removed module `verification` and merged classes in `navigation`.
  - Archived `solids/STEP` and `solids/STEPinterface` modules.
  - Migrated calls to `G4Exception` to new scheme.
  - Code cleanup and header inclusions review.
- Divisions
  - First implementation of volume divisions for `G4Box`, `G4Tubs`, `G4Cons`, `G4Para`, `G4Trd`, `G4Polycone`, `G4Polyhedra` along the relevant axes.
- Importance biasing
  - First implementation of weight-window biasing technique.
  - Removed obsolete class `G4ImportanceFinder`.
- Management
  - Moved classes to geometry/volumes:
    `G4AssemblyVolume`, `G4PVParameterised`, `G4PVPlacement`, `G4PVReplica`.
  - Moved classes to new module geometry/navigation:
    `G4DrawVoxels`.
  - Imported files from geometry/volumes:
    `G4BlockingList`, `G4IdentityTrajectoryFilter`, `G4VCurvedTrajectoryFilter`.
  - Introduced new abstract class `G4VUserRegionInformation` for storing user information associated with a `G4Region`.
  - `G4VPhysicalVolume`:
    - Removed pointer to mother physical volume and related accessor methods: `SetMother()`/`GetMother()`.
    - Removed pure virtual method `Setup(G4VPhysicalVolume*)`, no longer necessary. Subclasses will require modification as well.
  - `G4LogicalVolume`:
    - Updated/fixed initialisation of data and fast-simulation manager according to above changes.
  - `G4SmartVoxelHeader`:
    - Cleared usage of `PV->Setup()`, according to above changes.
  - `G4VPVParameterisation`:
    - Added `G4Orb`, `G4Polycone` and `G4Polyhedra` to list of possible parameterisations by dimension.
  - `G4LogicalSurface`:
    - Modified to use generic `G4SurfaceProperty`.
- Navigation
  - Imported classes from `volumes`, and `management` modules:
    `G4AuxiliaryNavServices`, `G4GeometryMessenger`, `G4Navigator`,
    `G4NormalNavigation`, `G4ParameterisedNavigation`, `G4PropagatorInField`,
    `G4ReplicaNavigation`, `G4TransportationManager`, `G4VoxelNavigation`,
    `G4DrawVoxels`.
  - Imported all classes from `verification` module.
  - Cleared call to `PV->Setup()` according to changes in `G4VPhysicalVolume`. Affected classes:
    `G4Navigator`, `G4ParameterisedNavigation`, `G4VoxelNavigation`,
    `G4ReplicaNavigation`, `G4NormalNavigation`.
  - `G4DrawVoxels`:
    - Retrieve top transformation through touchable history in method `DrawVoxels()`. Removed old method `GetAbsoluteTransformation()`.
  - `G4GeomTestErrorList`:
    - Retrieve top transformation through touchable history in method `FindGlobalCoordinateSystem()`.
  - `G4PropagatorInField`:
    - Added option to turn On/Off the optimisation of using the safety in calling `G4Navigator`.
    - Pass safety sphere information to `G4ChordFinder` for optimisation.
    - Implemented move of `EpsilonMin/Max` to `G4FieldManager`.
    - Added boolean argument to method `LocateIntersectionPoint()` to return `true` if the endpoint has been recalculated.
      This fixes a problem that can occasionally cause the skipping of a volume boundary in the case when a re-integration was done near a boundary. Changed `ComputeStep()` to accept above recalculation.
    - New method `GetVerboseLevel()`, deprecating `Verbose()`.
    - Fixed `LocateIntersectionPoint()` for long-standing error.
      A section of the chord was not considered in use case where a previous chord at first appeared to have an intersection, but did not. Refined re-setting of `finalSection` (`Endpoint` recalculation is returned only for final section).
    - Fixed `ReEstimateEndPoint()` which ignored return code of `AccurateAdvance()` and moved to short end-point for long requests. It now leaves the endpoint unchanged, when it cannot improve it.
  - `G4Navigator` - methods review:
    - Made relevant methods `virtual` to allow specialization of navigators:
      `ComputeStep(p,v)`, `ResetHierarchyAndLocate(p,v,h)`, `SetupHierarchy()`,
      `LocateGlobalPointWithinVolume(p)`, `ComputeSafety(p)`,
      `LocateGlobalPointAndUpdateTouchableHandle(p,v,t)`, `ResetState()`,
      `CreateTouchableHistoryHandle()`, `GetLocalExitNormal()`.
    - Removed obsolete methods:
      `IsExitNormalValid()`, `GetLocalExitNormal()`.
    - Renamed method `LocateGlobalPointAndSetup(p,v,history)` to `ResetHistoryAndLocate(p,v,history)`.
    - Moved to protected methods:
      `GetCurrentLocalCoordinate()`, `ComputeLocalPoint()`, `ComputeLocalAxis()`,
      `NetTranslation()`, `NetRotation()`, `EnteredDaughterVolume()`.
    - Fixed consistency of inline/not-inline implementations of methods.
  - `G4TransportationManager`:
    - Removed initialisation of allocators for navigation levels, now moved to "volumes" module, where they should belong, in `G4TouchableHistory`.
- Solids
  - Archived `solids/STEP` and `solids/STEPinterface` modules.
  - Boolean solids:
    - Fixes to default safety to zero in DistIn/Out(p) methods.
    - G4ReflectedSolid: fixed trivial leak in constructor.
  - CSG solids:
    - Fixes to default safety to zero in DistIn/Out(p) methods.
    - New shape `G4Orb`.
    - `G4Sphere`:
      - Fix in `Inside()` for `Phi_start` (`0.5 kAngTol < phi < Phi_start`).
      - Revision of algorithm for `Phi` sections in method `Inside()`.
  - Specific solids:
    - `G4Polycone`, `G4Polyhedra`:
      - Added accessors to `original_parameters` for `G4Polycone` and `G4Polyhedra`.
        Made `G4PolyconeHistorical` and `G4PolyhedraHistorical` classes visible in global scope.
      - Added protections in constructors for invalid constructs with no contiguous segments in Z planes as input.
      - Added `SetOriginalParameters()` method.
    - `G4Trap`:
      - Fixed initialisation of planes in default constructor.
- Volumes
  - Moved classes to `geometry/management`:
    `G4BlockingList`, `G4IdentityTrajectoryFilter`, `G4VCurvedTrajectoryFilter`.
  - Moved classes to new module `geometry/navigation`:
    `G4AuxiliaryNavServices`, `G4GeometryMessenger`, `G4Navigator`,
    `G4NormalNavigation`, `G4ParameterisedNavigation`, `G4PropagatorInField`,
    `G4ReplicaNavigation`, `G4TransportationManager`, `G4VoxelNavigation`.
  - Imported files from geometry/management:
    `G4AssemblyVolume`, `G4PVParameterised`, `G4PVPlacement`, `G4PVReplica`.
  - Removed implementation of method `Setup()` and updated initialisation of data, according to changes in the base class `G4VPhysicalVolume`. Affected classes:
    `G4PVPlacement`, `G4PVReplica`.
  - Added protection to placement and replica constructors for cases where a volume is placed inside itself.
  - `G4TouchableHistory`:
    - Added initialisation of allocators for navigation levels, moved from `G4TransportationManager`, where they were introduced as workaround for solving static initialisation a long time ago.
  - `G4NavigationHistory`:
    - Fixed redundant calls and initialisations.
  - `G4NavigationLevel`, `G4NavigationLevelRep`:
    - Fixed implementation of `operator=()` for inlining.
  - `G4LogicalBorderSurface`, `G4LogicalSkinSurface`:
    - Now using generic `G4SurfaceProperty`.

### Global

- Added method `ExistPhysicsTable()` to `G4PhysicsTable`.
- `G4UnitsTable`: fixed units initialisation and deletion of objects in constructors.

### Graphical representations

- Introduced `G4Colour` <-> `G4ThreeVector` conversion operators.

### Hadronic Processes

- Internal restructuring of modules and physical architecture to flatten the package hierarchy, and dissolve bloated packages:
  - Moved `photolepton_hadron` from top-level directory `processes` to `hadronic/models`
  - Removed modules:
    `models/radiative_decay`, `models/generator/*`
  - New modules
    : `models/binary_cascade`, `models/de_excitation/evaporation`,
    `models/de_excitation/fermi_breakup`, `models/de_excitation/fission`,
    `models/de_excitation/gem_evaporation`, `models/de_excitation/handler`,
    `models/de_excitation/management`, `models/de_excitation/multifragmentation`,
    `models/de_excitation/photon_evaporation`, `models/de_excitation/util`,
    `models/im_r_matrix, models/management`, `models/parton_string/diffraction`,
    `models/photolepton_hadron/muon_nuclear`, `models/parton_string/hadronization`,
    `models/parton_string/management`, `models/parton_string/qgsm`,
    `models/pre_equilibrium/exciton_model`, `models/radioactive_decay`,
    `models/theo_high_energy`, `models/util`
  - Updated GNUmakefiles accordingly.
- Introduction of new G4Exception syntax at the top level catch of the C++ exception roll-back.
- Cleared many compilation warnings.
- Systematic scoping of std name-space.
- cross_sections
  - Bug fix in electro-nuclear cross-sections:
    - y now calculated correctly
    - photon cross-section integration fixed
    - Electro-nuclear reactions extended beyond 50 GeV
  - Added ion reaction cross-section parameterizations from Shiver, Kox, and most prominently Shen (see physics reference manual for details).
  - Bug fix in Tripathi's formula to do with rounding of atomic mass numbers.
- management
  - Isotope wise final state generation with a A^(2/3) approximation for the cross-section. Note: Design iteration of the cross-section classes is scheduled to decouple from `G4Element`, so this can be done more precisely.
  - Catching all exception thrown in context, and forwarding to G4Exception.
  - Cross-section biasing added for gamma and electro nuclear reactions.
  - Leading particle biasing added for the general case.
  - Design iteration to simplify the API for cross-section registration with hadronic processes.
  - Re-implementation of the energy-range manager logic using STL.
  - Model registration is now in terms of energy/nucleon for ion induced reactions.
  - Migration to a generic delete template.
  - Correction in logic of element selection for final state generation for materials with many elements.
  - Added automatic verboseness in case of unphysical conditions.
- processes
  - Design iteration to remove a few un-needed methods in Capture, elastic and fission process.
  - Adaption to the new framework behavior.
- stopping
  - Memory leaks fixed in AntiNeutronAnnihilation and AntiProtonAnnihilation.
- util
  - Corrected electronic charge-state treatment for residual nucleus.
  - Relaxing fixed constraint on the number of particles to result from a inelastic interactions.
  - Added exception classes for terminal and re-entrant exceptions.
  - Added utility methods and functors for treating STL collections of pointers, and issues relating to rounding in conversion from double to integer.
  - Added a template meta program to enable compile-time checking of inheritance of template arguments.
- models/binary_cascade
  - Added light ion reactions.
  - Optimized transition between cascade and pre-equilibrium decay.
  - Design iteration to enable generic action classes in the imaginary part of the R-matrix.
  - Minor fixes and corrections.
- models/cascade
  - Corrections for scattering on hydrogen and Iron.
  - Now applicable up to 10 GeV particle energy.
- models/chiral_inv_phase_space
  - The final State interaction is used to fix the Under Mass Shell problems.
  - The robustness of the code is greatly increased, in particular for anti-proton annihilation at rest.
  - Converted static Data Base of Particle Decays to a Singleton. This changes the rules of application of G4QCHIPSWorld in stand alone programs.
- models/de_excitation
  - Fermi breakup redesign.
  - New algorithm for nuclear splitting in Fermi breakup.
  - Improved sampling of energies in the micro-canonical phase space.
  - Added some protections to multi fragmentation.
  - Added protection to fission probability.
  - Corrected algorithm in excitation handler to take into account what can't be de-excited by Fermi breakup.
- models/high_energy
  - Adapted to the new framework behavior.
- models/im_r_matrix
  - Included pion induced reactions (up to 1.5 GeV).
  - Included S-wave absorption for pions.
  - Extended applicability for nucleon induced reactions to 8 GeV.
- models/leading_particle
  - Adaption to the new framework behavior.
- models/low_energy
  - Removed an internal limitation on the number of secondaries created in inelastic scattering.
  - Added protection for negative kinetic energies in elastic scattering off hydrogen (precision problem), resulting in negative velocities.
  - Adaption to the new framework behavior.
  - Small improvement in the fission barrier.
- models/neutron_hp
  - Added protection of interpolation schemes against invalid conditions.
  - Improved sampling of the fission neutron spectrum.
- models/parton_string
  - Improved meson splitting behavior in QGS model.
- models/photolepton_hadron
  - New directory, imported from processes/photolepton_hadron; technically adapted to the new framework behavior.
- models/pre_equilibrium
  - Bug fix in transition probabilities.
  - Several bug fixes in angular distributions.
  - Modified switch condition to de-excitation.
  - Fixed small memory leaks.
- models/util
  - Small correction of strong resonance decay, now taking exact lower limits for channel openness, in case of final state resonances.
  - Correcting decay, so it will work correctly in the presence of Pauli-blocking.
  - Removed calculations performed for conservative programming in inner loops.
  - Introduced tracking momentum in a nucleus.
  - Resolved issues related with conversion from double to integer.

### Magnetic Field

- `G4ChordFinder`:
  - Made `G4ChordFinder` a base class
    - to enable specialised implementations
    - virtual methods: `FindNextChord()`, `PrintStatistics()`
    - new method AccumulateStatistics() to aid in this.
  - Extended arguments of `AdvanceChordLimited()` and `FindNextChord()` adding the current safety sphere (origin, radius), for optimisation.
  - Fixed set functions which had side effect (on first fraction).
  - Set new default value of Accuracy:
    - Delta Chord to `0.25 mm` (from `3.00 mm`).
  - Created new class members for parameters used in heuristics:
    - fFirstFraction - for first step
    - fFractionLast - fraction of last step, if redoing
    - fFractionNextEstimate - confidence in step est from chord
    - fMultipleRadius - for small radii of curve.
  - Added new method to print statistics. Enhanced verbosity to enable optional printing of statistics in destructor.
  - Moved constructors to .cc file.
  - Changed fDefaultDeltaChord to a constant member variable.
- Added new class `G4ChordFinderSaf` (using `G4ChordFinder`) for performance optimisation, which adopts safety to create longer chords, so enabling propagation in fewer steps.
- `G4FieldManager`:
  - Changed default accuracy parameters to better values:
    - Epsilon Min Default to `5.0e-5` from `5.0e-7`
    - Epsilon Max Default to `0.001` from `0.05`.
  - Increased default accuracy. Changed default values of:
    - Delta One Step to `0.010 mm` (from `0.25 mm`)
    - Delta Intersection to `0.001 mm` (from `0.10 mm`).
  - Use field's `DoesFieldChangesEnergy()` method to set relevant member variables.
  - Added methods `Get/Set Min/MaximumEpsilonStep()`.
  - Added `fEpsilonMin fEpsilonMax` & default to member variables.
    Now these can be tailored for different parts of a detector or setup.
- `G4Field`, `G4ElectroMagneticField`, `G4MagneticField`:
  - Added virtual method `DoesFieldChangeEnergy()`.
  - `G4ElectroMagneticField` derives from `G4Field` and `G4MagneticField` derives from `G4ElectroMagneticField`.
- `G4MagErrorStepper` and derived classes (`G4ClassicalRK4`, `G4SimpleRunge`, `G4ExplicitEuler`, `G4ImplicitEuler`, `G4SimpleHeum`):
  Constructors take `G4EquationOfMotion` in place of a `G4Mag_EqRhs` as applicable to all types of equations (not just ones for magnetic field).
- `G4EqMagElectricField` now derives from `G4EquationOfMotion`.

### Materials

- Added base class `G4SurfaceProperty`.
- `G4OpticalSurface`: now inheriting from `G4SurfaceProperty`.

### Particles

- Moved classes related to cuts to new `processes/cuts` subcategory.
- Removed obsolete cut methods.
- Added new sub-module `utils`.
- Fixed `NULL` type pointer initialisation in `G4DynamicParticle` to `G4PrimaryParticle`.
- Fixed anti-particle PDG code for Gluon.

### Run, Intercoms and Interfaces

- `G4RunManager`:
  - Design iteration implementing modular run-manager
  - Introduced `G4RunManagerKernel` class and simplified `G4RunManager` implementation.
  - Introduced `PhysicsHasBeenModified()` method in `G4RunManagerKernel` class and related wrapper methods in `G4RunManager` and `G4RunMessenger`.
- `G4VUserPhysicsList`:
  - Cleanup error messages for store/retrieving physics table.
  - Removed dedicated treatment of anti-proton, neutron and anti-neutron from `BuildPhysicsTable()`.
  - Fixed typo for '`neutron`'.
- Interfaces
  - Archived obsolete OPACS module and cleared build setup.
  - `G4Xt`: removed unused and commented code.

### Tracking & Track

- `G4TrackingManager`:
  - Moved invocation of `PreUserTrackingAction()` after `SetInitialStep()`, so that geometrical infomation is available at `PreUserTrackingAction()`.
- `G4SteppingManager`:
  - Fixed problem in setting pointer to the user stepping action.
  - Renamed method `LocateGlobalPointAndSetup(p,v,history)` to `ResetHistoryAndLocate(p,v,history)` according to changes in `G4Navigator`.
- Fixed problem of setting default momentum direction for stoppped particle in `G4ParticleChange`.

### Transportation

- Introduced first implementation of weight-window biasing technique.
- Migrated `G4UserSpecialCuts` to model variant of EM physics.
- Adopt new `G4Exception` scheme and header inclusions and code cleanup.

### Visualization

- New HepRep XML driver for HepRep Version 2.
- RayTracer
  - Introduced `G4VRTScanner` and its default concrete implementation, `G4RTSimpleScanner`. It controls the shooting order of rays.
  - Added new command `/vis/rayTracer/backgroundColour`.
- OpenGL: cosmetic change to regularise names.
- Removed obsolete OPACS module.
- Tree: improved printing.
- Commands:
  - Added command `/vis/scene/endOfRunAction`.
  - Improved guidance for `/vis/scene/notifyHandlers`.
  - Bug fix in `/vis/scene/add/volume`:
    `requestedDepthOfDescent` now correctly propagated to world volume.
- management
  - `G4VisManager`:
    - Improved handling of auto refresh at end of event and run.
    - Removed PrintAllGraphicsSystems(), PrintInstalledGraphicsSystems() methods.
    - Bug fix in EndOfEvent().
  - `G4VisCommandsScene`: improved `endOfEventAction` and improved guidance.
  - Change initialisation of `G4VSceneHandler` so that there is always a clear on first drawing.
- `G4VRML2SceneHandlerFunc`: changed `const char* pv_name` to `G4String pv_name`.
- Patch in `G4OpenInventorSceneHandler::PreAddThis()` to cope with changes introduced in `G4VPhysicalVolume` where pointer to mother physical-volume is no longer available.
- `G4PhysicalVolumeModel::CalculateExtent()` always searches complete hierarchy.
- Introduced Doxygen documentation for management and OpenGL.

### Environments

- Added module MOMO with Java archives for UI tools from Naruto.
  Includes new version of MOMO with XML import/export abilities.
- Removed OPACS setup.

### Hadronic physics-lists

- New module `hadronic_lists` of physics lists for hadronic physics lists by use case.
  The module can only be built and installed separately in addition to the standard libraries installation.

### Data

- Updated data-sets for low-energy electro-magnetic processes (`G4EMLOW2.3`).

### Examples

- Fixed pedantic compilation warnings on Linux-g++.
- Updated reference outputs.
- Removed OPACS driver from vis-managers where needed.
- advanced
  - brachytherapy
    - Implemented migration to cuts by region.
    - Updates to geometry and sources.
  - composite_calorimeter
    - Removed hadronics physics-lists. Now using default setup provided in $G4INSTALL/hadronic_lists.
    - Removed GetCopyNo() and replaced it with GetReplicaNumber() using G4TouchableHistory.
    - Enabled possibility of running the simulation in HCal alone or HCal+ECal mode with the correct B-field + a few small bug corrections. Changed also the default stepper (in magnetic field).
  - gammaray_telescope
    - Updates to sensitive detectors.
  - lAr_calorimeter
    - Implemented migration to cuts by region.
    - Fixed compilation errors if histograms disabled.
  - Rich
    - Fixed compilation errors and warnings.
  - Tiara
    - Removed hadronics physics-lists. Now using default setup provided in `hadronic_lists` module.
    - Use decays for all particles.
  - underground_physics
    - Migrated to new hadronic processes for release 6.0.
    - Implemented migration to cuts by region.
- extended
  - analysis/A01
    - Renewed test to work with latest developments in AIDA 3.
  - biasing
    - Archived some obsolete files.
    - Extended to included new weight-window biasing technique.
  - electromagnetic/TestEm1
    - General revision. Renamed classes.
    - Migration to model variant of EM physics.
    - Added printout of total energy deposit.
    - Added process `G4eBremsstrahlungCMS`.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm2
    - General revision. Renamed classes.
    - Migration to model variant of EM physics.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm3
    - General revision. Renamed classes.
    - Migration to model variant of EM physics.
    - Added estimation of the mean energy leaving each absorber.
  - electromagnetic/TestEm4
    - General revision. Renamed classes.
    - Substituted obsolete interface to cut energy range.
    - Migration to model variant of EM physics.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm5
    - General revision. Renamed classes.
    - Suppressed sensitive detector and hits.
    - `EmPhysicsList`: use `SetFacRange()` in multiple scattering.
    - new classes `HistoManager`, `TrackingAction`, `StackingAction` in order to book and fill histograms.
    - new UI command `setHisto` to control the binning of histograms.
    - `StackingAction` and its messenger: added possibility to kill secondaries.
    - `DetectorConstruction::DefineMaterials()` invoked in constructor.
    - Updated and renamed macros according to authors of experimental results.
    - Migration to model variant of EM physics.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm6
    - Use `SetMaterial()` in constructor.
    - Updated all macros for `/run/initialize`.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm7
    - Updated hadronic physics according to new `hadronics_lists` module.
    - Updated BinaryCascade; added light ion interactions.
    - Migration to model variant of EM physics.
    - `G4NOHIST` replaced by `G4ANALYSIS_USE`.
  - electromagnetic/TestEm8
    - Upgraded PAI model, renewed test.
    - Removed obsolete classes.
    - Updated histogramming to work with AIDA 3.
  - electromagnetic/TestEm9
    - New example implementing a crystal calorimeter with demonstration of definition of different detector regions for cuts.
  - electromagnetic/TestEm10
    - Removed obsolete interfaces.
  - eventgenerator
    - Brought up-to-date with original novice examples.
  - field
    - Open geometry before clearing stores in `DetectorConstruction` class.
    - BlineTracer
      - New plug-in module for visualization of magnetic-field lines.
    - field01
      - Renamed F01ElectroMagneticField into F01FieldSetup.
      - Deleted forgotten inheritance from G4MagneticField.
      - New output format in F01SteppingVerbose.
      - Input macro: different energies, 1 track each in place
      of 100 events of 1 energy.
  - field02
    - Revised to work with new developments in magnetic-field:
      creation of chord finder for electric field is now explicit.
    - Created helper class F02ElectricFieldSetup, using nearly all of F02ElectroMagneticField, but not being a field.
  - field03
    - Renamed F03ElectroMagneticField into F03FieldSetup.
- geometry
  - Archived "cad" example.
- gdml
  - Updated to adopt XercesC 2.x family.
- medical/DICOM
  - Updated physics-list.
- parallel
  - Brought up-to-date with original novice examples.

- novice
  - N01
    - Cosmetics in material definitions.
  - N02
    - Cosmetics in material definitions.
    - PhysicsList: AddProcess(Bremsstrahlung,-1,3,3) ..etc..
  - N03
    - Suppressed sensitive detector and hits.
    - Suppressed specific code for curved trajectories.
    - `DetectorConstruction::DefineMaterials()` invoked in constructor.
    - `PhysicsList: AddProcess(Bremsstrahlung,-1,3,3)` ..etc..
    - Removed OPACS script from `visTutor`. renamed scripts 6/7/8/9 to 5/6/7/8 respectively. Added scripts to `gui.mac`.
    - Removed extraneous flushes from `visTutor/heprep.mac` to match new `endOfRunAction` behavior and cleaned up `vis.mac`.
  - N04
    - `DetectorConstruction::DefineMaterials()` invoked in constructor.
    - Physics-list: updated and `AddProcess(Bremsstrahlung,-1,3,3)` ..etc..
    - Cosmetics in material definitions.
  - N05
    - Added protection for negative proposed step in `ExN05MinEkineCuts`.
  - N06
    - PhysicsList: `AddProcess(Bremsstrahlung,-1,3,3)` ..etc..
    - DetectorConstruction: use `G4SurfaceProperty`.
    - Cosmetics in material definitions.
  - N07
    - PhysicsList: `AddProcess(Bremsstrahlung,-1,3,3)` ..etc..