Geant4 9.1 Release Notes
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
- Supported and Tested Platforms
- CLHEP and AIDA
- Items for migration of the user code
- New Developments and Capabilities
- Expected effects on physics and performance
- Known Run-Time Problems and Limitations
- Compilation Warnings
- Known Run-Time Warnings
- Geant4 Software License
- Detailed list of changes and fixes
 
1. Supported and Tested Platforms
Official platforms:
- Linux, gcc-3.4.6.
 Tested on 32 bits architectures and 64 bits architectures
    (Intel or AMD) with the Scientific Linux CERN 4 (SLC4) distribution
    (based on RedHat Linux Enterprise 4).
    Versions of Geant4 have also been compiled successfully on other
    Linux distributions, like Debian, Suse or other RedHat systems.
- MacOSX 10.4, gcc-4.0.1
- SUN Solaris 5.8, C++ CC-5.5.
- Windows/XP and CygWin Tools with: Visual C++ 8.0 (Visual Studio 2005)
More verified configurations:
- Linux, gcc-3.2.3, gcc-4.2.2
- Linux, Intel-icc 9.1
- SUN Solaris 5.8, C++ CC-5.4 Patch 111715-02
- Windows/XP and CygWin Tools with: Visual C++ 7.1 .NET
Platforms configured but not tested and not supported:
- AIX 4.3.2, xlC 6.0
- DEC V4.0, cxx C++ V6.1-027
- HP 10.20, aCC C++ B3910B A.01.23
- SGI V6.5.5, CC 7.2.1
 
2. CLHEP and AIDA
Geant4 9.1 requires the installation of
CLHEP.
Tests have been performed with CLHEP-2.0.3.2
 
Geant4 9.1 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 advanced uses of
features in Geant4) in order to upgrade from release 9.0 to release 9.1.
Note that a full re-installation of libraries (or a full recompilation) and
a recompilation of user applications is required.
 
Geometry
 
The revision of G4TessellatedSolid required a name change for some
public methods. User code making explicit use of these methods should migrate
accordingly.
 
Low Energy Electromagnetic physics
 
The prototype interfaces of beta-version G4DNA* processes have been
replaced by a unique process. Prototype user code is required to migrate; in
principle the migration is limited to replacing typedef statements.
 
Standard Electromagnetic physics
 
The G4Cerenkov process was changed from being an AlongStep
process to a PostStep process. Custom user physics-lists that
include G4Cerenkov must be changed accordingly:
   pmanager->AddContinuousProcess(theCerenkovProcess);
to:
   pmanager->AddProcess(theCerenkovProcess);
   pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
 
Hadronic physics
 
Gamma level file warnings in G4NuclearLevelManager have been 
suppressed, so if an isotope has no data, no warning will be issued.
To turn them on again, set the pre-compiler flag GAMMAFILEWARNING
as follows:
   CPPFLAGS += -DGAMMAFILEWARNING
and re-build the library in
processes/hadronic/models/de_excitation/photon_evaporation of Geant4.
 
Fast Parameterised Simulation
 
The process G4FastSimulationManagerProcess (G4FSMP) can be
used for trigger fast simulation models. These can be attached either to a region of the primary 'mass'
geometry or to a region of a parallel (ghost) geometry.
In the first case, the user has to attach an instance of the G4FSMP
process as a PostStep process to particles having a fast simulation
model in the mass geometry; this remains unchanged.
A change is required in the second case, of a ghost geometry: the G4FSMP process now must be attached as an AlongStep+PostStep
process to particles having fast simulation models bound to regions of the
ghost geometry.
The AlongGetPhysicalInteractionLength() method of the G4FSMP
process must be placed second-to-last in this case (i.e. after the Multiple
Scattering, but before the Transportation processes). An example is given in
the physics-list defined in examples/novice/N05.
 
Data Sets
 
This release introduces a new data set and two new versions.
Please see the last section for the corresponding details.
- New data for neutron cross-sections, G4NDL.3.12.
- New low-energy data set, G4EMLOW.5.1.
- New data set for nuclear shell effects, G4ABLA3.0 used by the new ABLA .
 
4. New Developments and Capabilities 
Geometry
- Introduced new  navigation for phantoms and similar regular
    structures. The new algorithm provides  fast navigation
    and no memory overhead for  voxels phantoms and similar geometries.
    An option is available to skip volume boundaries, when the volumes on either side hold the same material. The example  in extended/medical/DICOM has been
    revised to demonstrate the usage of the new parameterisation required and the corresponding navigation. In addition it
    enables  comparison against existing algorithms, including the nested parameterisation (which had reduced memory overhead) and the older  3D optimisation.
GDML detector description persistency
- A plugin-module for GDML can be installed optionally  in Geant4.  This replaces the dependency on the external GDML (GDML-2.X series) library. The new
    module includes all the features supported in the old GDML library for
    importing GDML descriptions, except for handling of parameterised volumes
    and material optical properties. (These will be added in a future version
    of the new plugin.) It remains possible to use the old external
    GDML library, if needed.
Low Energy Electromagnetic physics
- Fully functional capabilities of physics processes in liquid water for
    microdosimetry simulation are provided in this release; details can be
    found in S. Chauvie et al., "Geant4 physics processes for
    microdosimetry simulation: design foundation and implementation
    of the first set of models", IEEE Trans. Nucl. Sci., vol. 54,
    no. 6, Dec. 2007.
Standard Electromagnetic physics
- Non-ionizing energy loss is filled by ion ionisation processes and is
    available to user actions.
- The new process G4ionGasIonisation is available. It is recommended
    to be used for simulation of ion transport in low-density media.
- The process G4CoulombScattering was verified and is proposed to
    be used instead of the multiple scattering process for simulation of
    scattering in low-density media.
- The G4ScreenNuclearRecoil process developed by the Vanderbilt
    University group is available with the extended example TestEm7.
    This process is an alternative to the multiple scattering process for
    ions.
- The simulation of energy loss of the classical magnetic monopole is
    provided. The example of Physics List with the monopole is available with
    the new extended example exotic_physics/monopole.
Hadronic physics
- Extended applicability of the Binary cascade. G4BinaryCascade::Propagate() method is first released.  This allows
    the use of the Binary cascade to transport the remnants of a high energy collision, as it has become model in the high energy
    framework (G4TheoFSGenerator::SetTransport()). This feature is
    aimed for expert use currently, as validation is starting.
 The binary cascade can now be used for pions, benefiting from a bug fix for
    incident pions; validation is in progress.
- The first,  alpha release of  the new   INCL (Liege) cascade module is included. This will be an alternative to the 
    Binary and Bertini cascades,  are already offered in Geant4, and valid up
    to 3 GeV. It has been converted from the Fortran implementation and its  validation is ongoing.
- First, alpha release of new QMD (quantum molecular dynamics) nucleus-nucleus
    interaction code. Its validation is ongoing.
- High precision neutrons: G4NDL 3.12 data set is now released. This uses
    JENDL entries for Cd isotopes, and adds four new elements with their
    corresponding isotopes: Hg, Ra, Br, and
    La.
 
Physics Lists
 
Several new physics lists are offered, providing new configurations or new
modeling options. Feedback via the Hypernews Forum on physics lists is welcome.
The new physics lists are:
- FTFP_BERT and QGSC_BERT: both of these reduce the use of
    parameterized modeling. For proton, neutron, pion and kaon induced
    inelastic hadronic interactions the parameterized model is not used.
- QGSP_DIF and QGSP_BERT_DIF: for diffractive scattering of
    proton and neutron at high energies a diffractive scattering model
    provided by CHIPS is used.
- QGS_BIC and FTF_BIC: offering new developments of
    Binary cascade. For more details, see the detailed notes.
Command-based scoring
- The user can 
    use this new ability to score on an arbitrary three-dimensional scoring mesh, using only new user commands. No user code needs be
    written to apply the scoring. It utilises a parallel world making the mesh geometry
    can be independent of the mass geometry. An arbitrary number of physics
    quantities to be scored and filters affecting these scorers can be assigned
    to the mesh. After scoring has been applied (i.e. after the run), the user
    can visualize the score map and also dump scores into a file. Relevant
    UI commands are listed in the Application Developers Guide, and the new
    extended/runAndEvent/RE03 example demonstrates their usage.
- Command-based scoring is in Beta release; commands and methods are subject
    to modification in future releases. Feedback will be greatly appreciated.
 
5. Expected effects on physics and performance
Standard Electromagnetic physics
- Improved simulation of the high-energy gamma tail for muon Bremsstrahlung
    (rare process, important for background simulation - NA49).
- Improved simulation of straggling for ions; the width of the Bragg peak
    becomes stable versus modification of the cut in range.
Hadronic physics
- Fixed problem reported by ATLAS of high energy collision of sigma+
    and a nucleon producing a high energy backward proton. This problem has
    been in the hadronic code since the beginning and was due to incorrectly
    selecting evaporated nucleons as leading particles. At 1 TeV
    incident energy, this type of event occurred 0.5% to 1% of the time when
    the HEP models are used. After the fix, no high energy backward nucleons
    are observed, with the effect that such events will not exist to mimic
    exotic reactions.
- Bug fixes and completed implementation of theory in G4PreCompoundModel
    and G4Evaporation have produced a 10-15% increase in neutron flux
    for 2.5 GeV/c protons incident on Pb.
- Correct time is now set for secondaries, instead of global time. This will
    primarily affect neutron times for users of the HP neutron package.
- An angular distribution bug in Bertini cascade has been fixed. Previously,
    double differential cross sections showed an excess of events at high 
    energy and small to medium scattering angles. The fix removes this by
    using an exp(t) distribution for nucleon-nucleon scattering above
    2.8 GeV. This will result in only a small reduction of average
    particle energy in the secondaries.
- Bug fix in quasi-elastic scattering may cause shower shapes to be a bit 
    shorter and wider when using QGSC/QGSP physics lists.
 
6. 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.
 
7. Compilation Warnings
There are compilation warnings on some tested 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 energy is significant, we recommend to
increase 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
- New modules added to binmake.gmk:
    digits_hits/scorer, processes/hadronic/models/rpg,
    processes/hadronic/models/incl (Liege cascade),
    processes/hadronic/models/qmd and persistency/gdml.
- Introduced G4LIB_BUILD_GDML/G4LIB_USE_GDML flags to trigger
    compilation of gdml plug-in. Added setup for XercesC. Required
    path XERCESCROOT to XercesC installation if
    G4LIB_BUILD_GDML is set.
- Added setup for QT in UI scripts (variables QTHOME,
    G4UI_BUILD_QT_SESSION, G4UI_USE_QT, G4VIS_BUILD_OPENGLQT_DRIVER,
    G4VIS_USE_OPENGLQT).
- Use gfortran instead of g77 on MacOSX.
- Updated Configure script to handle new modules and data libraries.
Digitization & Hits
- Created new module scorer now including all scorer and filter
    classes. The module utils is now used for interactive scoring
    utilities.
- First implementation of interactive parallel world scoring.
- Introducing command-based scoring mechanism: Beta release.
    Currently shape of scoring cell is limited to boxes.
Electromagnetic Processes
- High Energy
    
    - G4mplIonisation: introduced theoretical asymtotic low-energy
        parameterization of dEdx and fixed intermediate
        parameterization between low-energy and high-energy models
        for classical magnetic monopole..
 
- Low Energy
    
    - Refactoring of Geant4-DNA domain. Added G4DNAProcess and
        G4DNAFinalStateProduct classes.
- New Geant4-DNA models for electrons: Elastic Scattering (screened
        Rutherford, Brenner-Zaider), Ionisation (Emfietzoglou), Excitation
        (Emfietzoglou).
- New Geant4-DNA models for protons: Excitation (Dingfelder,
        Emfietzoglou), Ionisation (Rudd, Dingfelder 1st Born approximation),
        Charge Change (Dingfelder).
- New Geant4-DNA models for hydrogen: Excitation (Dingfelder),
        Ionisation (Dingfelder), Charge Change (Dingfelder).
- New Geant4-DNA models for helium and its charge states: effective
        charge scaling from proton models.
- Fixes to handle Z=100 in the Livermore library and to correct
        problem report
        #933.
- Fix in G4PenelopeRayleigh to address problem report
        #965.
- Correction in G4AtomicDeexcitation, addressing problem Report
        #986.
- Requires new data set G4EMLOW5.1, where a new dna/directory has been
        added containing Geant4-DNA data tables for interpolation.
 
- Muons
    
    - G4EnergyLossForExtrapolator: added maxEnergyTransfer
        parameter for the computation of energy loss.
- G4MuBremsstrahlungModel: updated sampling algorithm to provide
        more precise predictions for the tail of the gamma energy spectra
        (NA49 problem).
- G4MuBremsstrahlungModel and G4MuPairProductionModel:
        added ignoreCut flag, if true both models provide
        zero dEdx and full cross sections.
- G4MuMultipleScattering, G4MuMscModel: new classes
        for simulation of multiple scattering for muons (beta-version).
 
- Polarisation
    
    - G4eplusPolarizedAnnihilation: added enabledAtRest
        flag.
- Implemented more general cross section framework; removed dependencies
        to models. Now cross sections can be used independent of any model,
        e.g. in a cross section calculator class.
- Added polarized photo-electric effect.
- Bug fix in G4PolarizedAnnihilationCrossSection correcting
        error in calculation of polarisation dependent total cross section
        (wrong interaction-length for positrons in applications where particle
        and media are polarised).
 
- Standard
    
    - G4UrbanMscModel:
        
        - Use SampleScattering() method instead of
            SampleSecondaries().
- For skin > 0 (computed distance to the geometry boundary):
            
            - use range instead of TrueStepLimit for the computation
                of the distance to a boundary to provide more stable step
                limitation by GeomFactor;
- default values stepmin = 1 nm,
                tlimitmin = 10*stepmin;
- default value 10^-16 is used to avoid lost of
                precision and occasional NaN values.
 
- New, simpler model functions for mean scattering angle
            theta0. Now the form of theta0 is the same as
            in the Highland formula, but the parameter values are different
            for e+/e- and the other (heavy) particles.
- Fixed old bug in sign of theta0 for negatively charged
            particles.
- Fixed old bug in SampleCosineTheta(): now the value of
            prob is always between [0,1].
- Compare new value of safety with zero after sampling of 
            lateral displacement to identify if track is on boundary.
- Changed initialisation for ions: protecting parameters from
            modification.
- Tuned ComputeGeomPathLength() in order to get better low
            energy behaviour for heavy particles (mu, hadrons).
 
- G4UrbanMscModel90: new class which keeps the version of
        sampling of scattering angle as the one of version 9.0 but includes
        also protections and fixes of G4UrbanMscModel.
        Used by G4hMultipleScattering.
- G4CoulombScattering, G4CoulombScatteringModel,
        G4eCoulombScatteringModel:
        
        - Updated InitialiseProcess() and PrintInfo()
            methods to ensure that the parameters of models change between
            runs.
- Added nuclear size effect; added separate simulation of scattering
            on atomic electrons taking into account cuts; fixed cross section
            for compounds.
- Reorganised initialisation of kinematics and screening
            parameters.
- Using precomputed Z^1/3 and log(A) values to
            speed up code.
- Fixed crash happening at initialisation when several elements
            with the same Z are defined.
 
- G4BraggModel, G4BraggIonModel:
        
        - More safe computation of scattering angle.
 
- G4ionIonisation:
        
        - Removed obsolete method DefineMassCharge()
- Added protected methods BetheBlochEnergyThreshold() and
            NuclearStoppingFlag().
 
- G4ionGasIonisation:
        
        - New ion ionisation process with discrete ion charge and no
            equilibrium between ion and media.
 
- G4IonFluctuations:
        
        - Added dependence on cut in the formula of width to
            reduce cut dependence of the Bragg peak width for ions;
            use Fermi energy from G4Material.
 
- G4PAIphotonModel, G4PAIModel:
        
        - Fixed MaxSecondaryEnergy() method for e- and
            e+ and use it for definition of max energy transfer;
            protected printouts by verbosity flag.
- General cleanup and fixed memory leak in G4PAIModel.
 
- G4eplusAnnihilation: added flag enabledAtRest.
- G4PAIySection: new class which substitutes
        G4PAIxSection, fixing memory leak problems.
- G4ionIonisation, G4ionGasIonisation,
        G4CoulombScatteringModel: fill NIEL energy deposit.
 
- Utils
    
    - G4VEnergyLossProcess:
        
        - Use prestep time for subcutoff secondaries and avoid precise
            computation ot the time using GetVelocity() method.
- Improved energy loss computation for the case of big step,
            allowing for slight improvement in CPU performance.
- Use STL vector of G4VEmModel* instead of C-array.
 
- G4VEmProcess:
        
        - Added cut as a parameter of ComputeCrossSectionPerAtom()
            method allowing models to use the cut (used by single scattering
            model and potentially by others); added vector of cuts to the list
            of members of the class.
- Integral option now coupled with buildLambdaTable option:
            integral cannot be activated if buildLambdaTable is not
            activated.
 
- G4VEmModel:
        
        - Compare cross section with DBL_MIN instead of zero.
- Added SampleScattering() method for multiple-scattering
            models.
 
- G4VEnergyLossProcess, G4VEmProcess,
        G4VMultipleScattering:
        
        - Fixed memory leak at destruction; proper deletion of
            G4PhysicsTables.
- Moved virtual functions, like
            PostStepGetPhysicalInteractionLength()
            from inline to body of classes; moved simple methods from body
            to inline.
- Fixed handling zero cross section in
            PostStepGetPhysicalInteractionLength() method to avoid
            problem happening in FanoCavity example when cross section
            inside cavity is zero.
 
- G4VEnergyLossProcess:
        
        - Simplified logic to switch on/off fluctuations.
 
- G4VMultipleScattering:
        
        - Use SampleScattering() method in PostStep.
- Added vector of cuts for electrons (needed for combined multiple 
            scattering processes).
 
- G4EmCalculator: fixed default region name.
- G4ionEffectiveCharge: use Fermi energy from G4Material
        and not recalculate it at each step; reorganized formulas: less calls
        to mathematical functions.
- G4EmModelmanager: added pointers to G4Gamma and
        G4Positron at initialisation.
- G4EmProcessOptions: added missing initialisation of
        G4LossTableManager parameters together with parameters of
        concrete processes (fixed initialisation when an option is defined
        before phyics list construct processes).
 
- Xrays
    
    - G4Cerenkov: changed inheritance to G4VDiscreteProcess,
        and changed the arguments of
        G4Cerenkov::GetAverageNumberOfPhotons().
        Added warning in G4Cerenkov constructor.
- G4VXTRenergyLoss: general cleanup of old comments;
        removed all static members; protect verbosity within flag.
- G4XTRTransparentRegRadModel, G4XTRRegularRadModel,
        G4StrawTubeXTRadiator: cleanup; protect verbosity within flag.
 
Error Propagation
- G4ErrorFreeTrajState: corrected bug in one of the transformation
    matrix terms. Addresses problem report
    #971.
- G4ErrorFreeTrajParam: corrected normalization of Y and Z
    coordinates.
- G4ErrorPropagator: removed call to exit() and some cleanup.
Event
- Added class member particle_momentum and method
    SetParticleMomentum().
- Added UI commands /gun/momentum and /gun/momentumAmp.
- Added private copy constructor and =, ==, += operators to
    G4ParticleGun. Addressing problem report
    #984.
- Modified G4SPSEneDistribution to adress problem report
    #988.
General Processes
- Biasing
    
    - Fix in G4ProcessPlacer to put biasing process at the second
        place for AlongStep as well as for PostStep.
        A bug fix which would feature for charged particles.
- Added printout for AlongStep process vector.
 
- Decay
    
    - Added G4PionDecayMakeSpin class: set the daughter muon spin
        for 2-body decays of pi, K and K0_long.
- Added method DaughterPolarization() in G4Decay
        to set polarization vector for daughters.
 
- Management
    
    - Added method SetProcessOrderingToSecond() to
        G4ProcessManager, which puts the process at the second
        position in the DoIt list.
- Added method CheckOrderingParameters() to
        G4ProcessManager, in order to check whether given ordering
        parameters are set for valid DoIts.
- Added methods to G4VProcess to indicate that the specified
        DoIt is valid for the process.
- G4WrapperProcess: fixed double definition of method
        PreparePhysicsTable() in the header and moved inline
        implementations of virtual methods to source file.
 
- Optical
    
    - Added capability of calculating the reflectivity off a metal surface
        by way of a complex index of refraction.
- In G4OpWLS, allow for the MeanNumberOfPhotons to be
        different from 1, in case the constant property
        WLSMEANNUMBERPHOTONS is provided and, if so,
        NumPhotons is sampled with Poisson.
 
- Parameterisation
    
    - Added Along methods to G4FastSimulationManagerProcess.
- Minor corrections to G4FastSimulationManagerProcess: added
        call to G4PathFinder::PrepareNewTrack(); deactivated ghost
        navigator in EndOfTracking() method.
 
- Transportation
    
 
    - G4Transportation:
        
        - Modified behaviour of  G4Navigator
            for small straight steps - when a track does less than the safety. 
			Before only a simple, quick estimation of the starting point's safety was done, using the 
			last available value of the isotropic safety (from the Navigator). 
			Now the navigator is called to compute this safety. This  improves the value 
			and avoids roundoff issues. It gives better stability in comparisons with 
			CoupledTransportation. The costs are additional calls to the Navigator. 
			A new  method  EnableShortStepOptimisation controls this. 
			Note:  this only affects  neutral particles and charged particles when no field is present.  
- Fixed StartTracking() to reset number of looping steps
            and to clear propagator state ( issue with caching of safety, which is multi-valued in case of
            overlaps, is now addressed.)
-  Change to enable a user to switch on a global field (off was already
            possible), when a track goes between volume (or regions) of a setup. Was response 
			to requirement of ATLAS. Done by moving the call to ConfigureForTrack() 
		    before the check for zero field, in AlongStepGPIL().
 
- G4CoupledTransportation:
        
        - Fix for problem in condition for relocation. It was incorrect when only a
            parallel geometry limited the step.
- Changed condition for recalculation of the safety used, to improve  stability to roundoff.
- Corrected treatment of time integration.
- Fix to reset looping counter also when no field or charge is present.
- Fix for case of zero proposed step: missed to set end position.
 
 
Geometry
- Biasing
    
    - Modified Weight-Window algorithm: do not introduce extra variance in
        the case of splitting to the survival weight when the weight is above
        the upper weight window.
 
- Magnetic field
    
    - New class G4EqEMFieldWithSpin to allow tracking of spin also
        in case of electromagnetic fields.
 
- Management
    
    - Fixed typo in forcing minimum number of points in method
        G4VSolid::EstimateSurfaceArea(). Addresses problem report
        #981.
 
- Navigation
    
    - Introduced new specific navigation for regular structures and
        phantoms. New classes: G4RegularNavigation,
        G4PhantomParameterisation.
- G4PathFinder:
        
        - Make singleton definition canonical.
        
- New method to return the safety sphere last calculated for a
            PreStep point. If last step(s) were smaller than safety,
            then for a linear track (no field or no charge) navigator's
            ComputeSafety() is not called. Older PreStep
            point is stored for this and provided.
- Fixed return value for ComputeStep() in case of step
            smaller than tolerance (now kInfinity).
- Added calculation of start-point safety in
            DoNextCurvedStep() and corrected GetCurrentSafety()
            accordingly.
- Added method to obtain safety of one navigator (after call to all).
- Deleted obsolete data member fMinSafety.
        
- Optimisation: if only one geometry, do not call WhichLimited()
            in DoNextLinearStep(). DoNextLinearStep() also
            only calls ComputeStep() for a navigator whose safety
            greater than the step; if there's one geometry, no longer calls
            ComputeSafety() at start.
- ComputeSafety(): save the values of isotropic safety for
            each navigator.
- Fix for result of ObtainSafety(), used in
            G4CoupledTransportation.
- Some code cleanup. Switched off additional optimisation for safety
            in method DoNextLinearStep().
        
- PrepareNewTrack() clears safety to avoid potential
            problems in overlaps. Added calls to re-initialise
            SafetyHelper (reset safety).
- Fix to now set fNoGeometriesLimiting in
            DoNextLinearStep() in the case of one navigator
            optimisation.
- Added new methods GetNumberGeometriesLimitingStep()
            and GetMinimumStep() needed by
            G4CoupledTransportation to see whether to relocate.
- Fix for problem of another process shortening steps (between calls
            to ComputeStep() by different processes in same step).
- Check to verify that fNoGeometriesLimiting is set by
            DoNext*Step methods. Revised data type of
            fNoGeometriesLimiting to be a int, so that less
            than 0 means unset.
 
- G4Navigator:
        
        - Corrected calculation of fStepEndPoint in 
            ComputeStep() for case of step not limited by geometry.
- Replaced call to LocateGlobalPointWithinVolume() with
            calls to sub-navigators.
- Made fVerbose protected.
 
- G4PropagatorInField:
        
        - Fixes for compilation of code under G4DEBUG_FIELD (problem report
            #982).
- Added extra check of method LocateIntersectionPoint()
            arguments.
 
- Protected verbosity with compiler flags in G4PathFinder
        and G4MultiNavigator.
- Set fRecomputeFactor in G4SafetyHelper to zero, to
        switch off internal optimisation and allow for reproducibility of
        steps when using different transportation classes.
- Added method CheckPointExiting() in
        G4AuxiliaryNavServices utility class.
- Reuse fVerbose from G4Navigator in
        G4MultipleNavigator and some cleanup.
- G4SafetyHelper: Improved ComputeSafety() not to
        call G4Navigator if exactly on safety 'center'.
- Fix in G4ReplicaNavigation::DistanceToOut() for exact
        classification of the linear step for Cartesian case.
- Made IdentifyAndPlaceSolid() method inlined in
        G4ParameterisedNavigation.
- Cleared compilation warnings for shadowing of variables in classes
        within the module. Minor cosmetics and cleanup.
 
- Solids (Boolean)
    
    - Boosted performance for response of Inside() for
        G4SubtractionSolid and G4UnionSolid according to
        suggestion in problem report
        #979.
 
- Solids (CSG)
    
    - G4Torus:
        
        - Fixed bug in CalculateExtent() for case of non-rotated
            full-Phi torus definition: added protection against
            negative value for sqrt() and corrected formula for
            delta. Fixes problem of NaN detected in initialisation
            by CMS.
- Fixed bug in SolveNumericJT(): corrected handling of
            complex roots, rootsrefined is used only if the number
            of refined roots is the same as for primary roots. Addresses
            problem report
            #969.
 
- Fixed problem of undefined side for valid surface normal in case of
        Phi section and direction through the center of either a
        G4Tubs or G4Cons shape.
 
- Solids (Specific)
    
    - New specific shape G4Paraboloid with cuts along the
        Z axis.
- Revision of G4TessellatedSolid classes:
        
        - Fixed problem report
            #931
            for proper handling of concave surfaces.
            Modified classes G4TessellatedSolid and
            G4TriangularFacet.
- Modified data and accessor centroid and
            GetCentroid() for G4VFacet;
            replaced by circumcentre and GetCircumcentre()
            respectively.
- Reviewed implementation of CalculateExtent() to
            make it more robust and precise. Addresses problem report
            #983.
- Added utility class G4TessellatedGeometryAlgorithms.
 
- Removed debug printout in G4Polycone::GetPointOnCone().
- Added formulas for calculating SemiAxis and Zheight
        in G4EllipticalCone.
 
- Volumes
    
    - Added explicit initialisation of first volume entry to zero, to ensure
        correct behavior for out-of-world touchable handle.
- Minor cleanup in G4LogicalBorderSurface and
        G4LogicalSkinSurface classes.
- Added inline specification to methods in G4AssemblyTriplet
        class.
 
Global
- Cleared compilation warnings for non-inlining and shadowing of variables.
    Removed unnecessary virtual specifier to G4String
    destructor.
- Changed date for release 9.1.
Graphical Representations
- Added G4Paraboloid to HepPolyhedron and
    G4Polyhedron.
Hadronic Processes
- Cross sections
    
    - Added log(0) protection in
        G4NeutronInelasticCrossSection and
        G4ProtonInelasticCrossSection.
 
- Management
    
    - G4HadronicProcess::FillTotalResult(): fix addressing problem report
        #967, replaced call to aT.GetGlobalTime() with the
        internal variable time.
 
- Binary Cascade
    
    - Developments for propagate interface.
- Correcting bug for pion incident at low energy causing crash in Precompound
- G4BinaryLightIon: adapted to changes in Binary Cascade.
 
- Cascade
    
    - Fixed angular distribution for nucleon-nucleon elastic scattering
        above 2.8 GeV.
 
- Chiral Invariant Phase Space (CHIPS)
    
    - Bug fix in quasi-elastic, which may influence the shower shape, it
        should be now a bit shorter and wider when using QGSC/QGSP physics
        lists.
- Introducing Single Target Diffraction.
- R&D level implementation of ion-ion elastic and low-energy inelastic.
- Added (e,nu) reaction to G4QCollision and weight
        support in all CHIPS processes.
- Corrected neutral currents normalization for neutrino-nuclear
        interactions.
- Chain of bug-fixes in G4Quasmon, G4QEnvironment, G4QNucl*
        classes.
- More accurate decay transition from G4QEnvironment to
        G4QNucleus.
- Improvement in G4QNucleus class to boost CPU speed.
 
- De-excitation
    
    - Removed atomic mass number from "gamma factor" for
        G4DeuteronEvaporationProbability,
        G4TritonEvaporationProbability,
        G4He3EvaporationProbability and
        G4AlphaEvaporationProbability.
- Introduced missing Rj (Q_beta) factor in the evaporation
        module. Protected against occasionally divide by zero.
- Corrected the Coulomb-barrier to the formalism of Dostrovski as
        described in the Physics Reference manual.
- Fix in photon evaporation to address problem report
        #952.
- Suppressed gamma-level file warnings in G4NuclearLevelManager.
 
- Elastic scattering
    
    - G4DiffuseElastic: added Coulomb elastic scattering amplitude
        using Wentzel model. Do initialisation of the model for each new
        target nucleus on-fly; the model is initialised in constructor with
        particle definition for the vector of available elements. Tuning at
        high energies. Added control on verbosity at initialisation.
- Updated G4ElasticHadrNucleusHE: included difference in
        scattering off protons and neutrons; optimised computation of the
        distribution function (important for heavy targets); fixed model for
        scattering off hydrogen; tuned model parameters for better description
        of total and elastic cross sections.
- G4LEnp: removed erroneous code for identity exchange of
        particles.
- G4UHadronElasticProcess: introduced verbosity checks within
        VERBOSE flag inside methods called at each step.
 
- High Energy
    
    - G4HEInelastic::TuningOfHighEnergyCascading(): fixed incorrect
        assignment of leading particle to low energy backward nucleons and
        fragments. This bug caused high energy backward particles to be
        emitted from high energy collisions.
- G4HEPionMinusInelastic: fixed incorrect Imax in
        sampling of charge exchange.
 
- High precision Neutron
    
    - Allow for _nat_ final state even for isotoped cross sections.
- Enabled element based cross-section dump.
- Fixed bug in G4NeutronHPChannel for treatment of Z
        in elements.
 
- Im_r_matrix
    
    - Incorporated changes for G4CollisionComposite.
- In G4ParticleTypeConverter, removed warning on unknown
        particle; occurs for eta_prime, k_star+, anti_... etc. in
        BIC propagate interface.
 
- INCL/ABLA
    
    - First version of the Liege cascade INCL Model, including ABLA
        evaporation and fission.
        Requires new external data set (G4ABLA3.0) including files for
        nuclear shell effects, with new environment variable G4ABLADATA
        to be set to point to the directory where the data are stored.
 
- Pre-equilibrium
    
    - New developments to reflect the literature and units expected for the
        exciton model: introducing an Rj factor into the probability
        calculation; correcting the units for the Pauli Blocking Factor
        (missing a g factor); decreasing the number of charged particles if
        the number excitons is decreased (previously this number was only
        increased with increasing excitons).
- New development with respect to light ion production.
- Correction for integer arithmetic bug in G4PreCompoundModel
        and concerning the ratio of charged to neutral excitons.
 
- QMD Reaction
    
    - First implementation of QMD reaction model based on JQMD
        (Niita et al., JAERI-Data/Code 99-042).
 
- Re-Parameterized Gheisha
    
    - First version of a 'Re-Parameterized Gheisha-style' model. This 
        version is essentially a re-factored copy of the low energy
        parameterized model which also contains several bug fixes and
        physics improvements.
 
- Theoretical High Energy
    
    - Added channel for projectile diffractive scattering.
 
- Stopping
    
    - G4StopElementSelector: fixed typo in Primakoff formula for
        capture velocity.
- G4MuonMinusCaptureAtRest: fixed old memory leak.
- Removed old-style copyright from all headers and fixed Software
        Reference Manual tags.
 
- Utils
    
    - Removed initialization by random number of angular momentum vector 
        from G4Fragment constructors which could cause change of
        random sequence after physics initialisation.
- Use production version of G4Fancy3DNucleus.
- G4LightMedia: fixed coding errors in inequalities for
        charge exchange occurrence in PionPlusExchange,
        KaonZeroShortExchange, and NeutronExchange.
 
Interfaces
- G4UItcsh: added ability to store shell history across sessions.
- Updated the implementation of the signal handler for Ctrl-C.
- New classes G4UIQt and G4Qt for handling of Qt interface
    (Beta version with support restricted to Qt-4).
- Removed improper dependency from basic sub-module to run.
Materials
- G4NistManager: extended interfaces to build new materials; added
    G4State, temperature, pressure (gases are allowed) with default
    values. Simplified logic of Print() methods. Providing destruction of all
    materials and elements.
- G4NistElementBuilder: for given Z, build only one Nist element
    and allow user to create other elements with given Z (HP physics
    requirement).
- G4NistMaterialBuilder: modified FindOrBuildMaterial()
    method: NIST materials are now built even if user creates a material with
    the same name, therefore NIST materials parameters -cannot- be
    substituted.
- G4Material, G4Element: extended destructors, now all materials
    and elements are deleted at the end of a run.
- G4SandiaTable: separated computations of tables photo-absobtion
    coefficients for photo-electric effect and PAI model;
    general cleanup and reduced number of static variables.
    Fixed memory leak at destruction.
- G4IonisParamMat: added commutation and accessor methods for
    parameters of ion ionisation: Fermi energy, effective Z, effective
    L-factor; values will not be recomputed at each step.
Particles
- Added G4HyperNucleiProperties class so that hyper-nuclei can be
    created for G4Ions. G4ParticleTable can return a pointer
    to hyper-nucleus by using GetIon() and FindIon() methods.
- Modified G4PDGCodeChecker to support PDG code for hyper-nuclei.
- Changed G4ParticleTable::GetIonTable() to give 'non-const' pointer
    in order to allow users to use G4IonTable::GetIon() methods
    directly.
- Added check for atomic number (less than 1000) in G4IonTable.
- Added new classes G4PionRadiativeDecayChannel and
    G4MuonRadiativeDecayChannelWithSpin.
Persistency
- Introduced new gdml plugin sub-module, based on new GDML
    release 3.
    Added G4LIB_BUILD_GDML/G4LIB_USE_GDML flags and
    XERCESCROOT path. The new GDML plugin does not yet support
    parameterised volumes and material optical properties.
- Moved existing classes to mctruth sub-module;
    renamed libraries.
Physics lists
- New physics lists QGSP_DIF and QGSP_BERT_DIF; as QGSP or QGSP_BERT with projectile diffraction
    for proton and neutron enabled.
- New physics list QGSC_BERT; use QGSC down in energy to overlap with BERT. LEP is not
    used for proton, neutron, pions, kaons, except for neutron capture and
    neutron induced fission.
- New physics list FTFP_BERT: FTFP with Bertini cascade.The energy ranges of FTFP and BERT 
    overlap, so LEP is not used for proton, neutron, pions, kaons, except for neutron capture and
    neutron induced fission.
- New physics list QGS_BIC, equivalent to QGSP_BIC, but using binary also for
    pion and for rescattering via the propagate interface; the deexcitation
    implicitely uses precompound.
- Several fixes in QBBC: fixed bug in adding of cross section for pions
    and mesons; tuned energy thresholds between string and cascade models;
    corrected interface to CHIPS model; reviewed options: QBBC, QBBC_DEL,
    QBBC_HEL, QBBC_HP.
- New physics list FTF_BIC, equivalent to QGS_BIC but using FTF model for high
    energy interactions.  For protons, neutrons and pions LEP is not used,
    as BIC is used up to 5 GeV, thus overlapping with FTF starting at 4 GeV.
- Added possibility to activate G4SynchrotronRadiation and mu-nuclear
    betwen runs.
- Change QGSP builders to enable use of projectile diffraction in QGSP-like lists.
- Added optional builder G4RadioactiveDecayPhysics.
- Added G4HadronDElasticPhysics builder and fixed name to
    G4HadronHElasticPhysics.
- G4EmStandardPhysics_option2: increased number of bins in tables.
- G4LEPNeutronBuilder: when the limit for MaxInelastic
    is zero, do NOT add LEP for inelastic. Change needed for FTFP_BERT list.
Run
- Added ability to handle G4ScoringManager in G4RunManager.
- First implementation of interactive parallel world scoring.
- Introducing new /random/setSeeds command allowing to set initial
    seeds.
- Now /random/setDirectoryName command creates directories if needed.
- Reordered commands in G4RunMessenger so that obsolete commands
    appear last. Obsolete UI commands now do nothing except warning messages.
Track & Tracking
- Added accessors for non-ionizing energy deposit in G4Step.
- Added protection in G4Track::GetVolume() to avoid cases of
    dereferencing of null pointer.
- G4SteppingManager: fix to use Cartesian tolerance in
    Stepping() and CalculateSafety() for the computation
    of endPointSafety.
Visualization
- Management
    
    - Replaced references to Wired3 in command guidance.
- Minor improvements in messaging.
 
- Modeling
    
    - Minor improvements in messaging.
 
- HepRep
    
    - Adjusted geometry hierarchy for parallel worlds.
 
- OpenGL
    
    - Removed redundant G4OpenGLXViewerMessenger class.
- Minor improvements in design and messaging.
- Added GEANT4_QT_DEBUG flag to test Qt interfaces.
 
- OpenInventor
    
    - Initialise local vectors in SoPolyhedron implementation; fixing
        compilation warnings on gcc-4.2.2.
 
Environments
- Python interface (G4Py): added support for embedded GDML plugin.
    Updated physics-lists bindings.
Data sets
- New data for neutron cross-sections, G4NDL.3.12:
    
    - Changed Cadium data. Added Hg, Radium, Br and La data.
 
- New low-energy data set, G4EMLOW.5.1:
    
    - Added dna/directory including Geant4-DNA data tables for interpolation.
 
- New data set for nuclear shell effects, G4ABLA3.0.
Examples
- Updated reference outputs.
- advanced
    
    - air_shower
        
        - Adjust to the G4Cerenkov process now become a
            G4VDiscreteProcess.
 
- hadrontherapy
        
        - Updated physics commands in macro files. Updated README.
 
- underground_physics
        
        - Corrected micrometer unit in macros from mum to um (old bug
            since 8.2).
 
- Rich
        
        - Adjust to the G4Cerenkov process now become a
            G4VDiscreteProcess.
 
 
- extended
    
    - electromagnetic/TestEm1
        
        - Added material CO2 at 10^-6 atm.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- electromagnetic/TestEm2
        
        - PhysicsLists: added options from physics_lists library.
- TestEm2.in update to provide the same reference output
            as before.
 
- electromagnetic/TestEm3
        
        - Updated TestEm3.in macro.
- Added PhysListEmStandardIG experimental PhysList.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- electromagnetic/TestEm5
        - New histogram numbering (see README). Changed all macros
            accordingly, also in Geant3 version.
- Reordered processes in PhysListEmStandardSS.
        
- Added histos 17->20: energy fluence.
- Fixed usage of elastic builders.
- RunAction: compute and print energy leakage and energy balance.
        
- PhysListEmStandard: PhysicsTables set with 100 bins per decade (EmOptions).
        
- Added PhysListEmStandardIG experimental PhysList.
- TrackingAction: new histos (4,5) to plot vertex position
            of secondaries.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
 
- electromagnetic/TestEm7
        
        - PhysListStandardSS: reviewed process ordering.
- Added PhysListStandardIG, ion G4ionIonisation
            process is substituted by G4ionGasIonisation and for
            Coulomb scattering the model taking into account the recoil is
            used.
- Added class G4ScreenNuclearRecoil and ancillary utilities
            for ion-ion scattering provided by Vanderbuilt University.
- PhysListStandardSS: use G4ionGasIonisation.
- PhysListStandardIG: use G4ScreenNuclearRecoil.
- Fixed usage of elastic builders.
 
- electromagnetic/TestEm8
        
        - Use components of physics lists from physics_list module.
- Fixed memory leak in the UI interface.
- Removed used lines from PAI physics constructors, added pai_brem
            constructor PhysListEmPAI in which AlongStep from
            Bremsstrahlung is allowed.
- Fixed logic in SteppingAction.
        
 
- electromagnetic/TestEm9
        
        - Added PhysListEmStandardIG experimental physics list.
 
- electromagnetic/TestEm11
        
        - Added histo 8: energy profile as function of x/range.
- Added input macro sandia.mac.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- electromagnetic/TestEm12
        
        - HistoManager: modified way to get csdaRange from
            G4EmCalculator and compute stepMax for histo 8.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- electromagnetic/TestEm14
- electromagnetic/TestEm15
        
        - HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- electromagnetic/TestEm18
        
        - PhysicsList: added more EmOptions.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
 
- exoticphysics/monopole
        
        - New example demostrating simulation of a classical magnetic
            monopole and computation of the energy deposited.
 
- field/field04
        
        - New example showing how to define/use overlapping field elements.
            Fields might be either magnetic, electric or both
            (contributed by T.Roberts and Muons Inc., G4BEAMLINE).
 
- gdml
        
        - Updated to co-work with built-in GDML plugin module GDML-3.
- Showing loading of modular GDML files.
 
- hadronic/Hadr01
        
        - Physics list updated according to recent changes in hadronics and
            physics_lists package. Added QGSC_BERT physics list.
 
- medical/DICOM
        
        - Deep review: on the input files and the way how the geometry is
            built. Now using new specialised fast navigation and parameterisation
            according to G4PhantomParameterisation.
- Added color by voxel and possibility to also use
            nested-parameterisations.
 
- medical/fanoCavity
        
        - DetectorConstruction: wallRadius automatically
            recomputed; added materials graphite and aluminium.
- PhysicsList: implemented G4CoulombScattering
            process as option; use 100 bins per decade (emOptions)
            in physics tables.
- MyKleinNishina: do not cancel Compton cross-section in
            cavity.
- EventAction: added histogram of energy deposit in cavity
            per incident gamma.
- RunAction: compute error on energy deposit and mean
            kinetic energy.
- HistoManager/HistoMessenger: printing selected histos
            on ascii file.
- Syntax correction in DetectorMessenger.
 
- medical/fanoCavity2
        
        - New example demonstrating computation of the dose deposited in an
            ionization chamber by an extended (one dimensional) monoenergetic
            electron source, making use of a reciprocity theorem.
 
- parallel/MPI
        
        - New module including a Geant4 MPI UI library and a couple of
            examples showing how applications can be parallelized with
            different MPI compliant libraries, such as LAM/MPI, MPICH2,
            OpenMPI, etc.
 
- persistency/P02
        
        - New example showing how to store in a binary file and read back
            the geometry tree using the 'reflection' technique for
            persistency.
 
- polarisation/Pol01
        
        - Use new polarized photo electric effect, important for polarisation
            transfer from photon to electron in certain regions of the
            phasespace (see also E166 experiment).
 
- optical/LXe
        
        - Adjust to the G4Cerenkov process now become a
            G4VDiscreteProcess.
 
- radioactivedecay/exrdm
        
        - Use decay and radiactive decay builders from physics_lists
            module.
- Added elastic, stopping, ion and extraEm physics.
- Minor fix to low-energy EM physics builder.
 
- runAndEvent/RE03
        
        - New example demonstrating how to use UI-command based scoring.
            It creates a parallel world for defining scoring mesh(es).
 
novice
    - N02
        
        - Explicitely delete allocated parameterisation and step-limit
            objects in ExN02DetectorConstruction class.
 
- N03
        
        - Added option to activate Qt rendering.
 
- N05
        
        - Modified physics list to take into account usage of Along
            method in G4FastSimulationManagerProcess.
 
- N06
        
        - Adjust to the G4Cerenkov process now become a
            G4VDiscreteProcess.