
                          Geant4 5.1 Release Notes
                          ------------------------

                                                      30 April 2003

The code and some binary libraries are available through our "Source Code"
Web page (http://cern.ch/geant4).

Please refer to the Geant4 User Documentation
(http://cern.ch/geant4/G4UsersDocuments/Overview/html)
for further information about using Geant4.


Contents
--------

  1. Supported and Tested Platforms
  2. AIDA and CLHEP
  3. The Standard Template Library (STL)
  4. Compiler Specific Problems
  5. Known Run-Time Problems
  6. Compilation Warnings
  7. Known Run-Time Warnings
  8. Features at Run-Time
  9. Items for migration of user code


1. Supported and Tested Platforms
---------------------------------

  o SUN Solaris 5.8, C++ 5.4 Patch 111715-02.
  o 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 or Suse.
      The default RedHat compiler gcc-2.96 ditributed in RedHat 7.X is NOT
      supported. It has been verified that it produces incorrect binaries,
      therefore is not reliable. See also note below.
  o Windows-2000/XP and CygWin Tools with: Visual C++ 6.0 Service Pack 5

Platforms configured but not tested and not supported:
  o DEC V4.0, cxx C++ V6.1-027
  o HP 10.20, aCC C++ B3910B A.01.23
  o SGI V6.5.5, CC 7.2.1
  o AIX 4.3.2, xlC 6.0 
  o MacOS 10.2, gcc 2.95.2 / gcc-3.2


2. AIDA and CLHEP
-----------------

Geant4 5.1 requires the installation of CLHEP
(http://cern.ch/clhep/INSTALLATION/clhep.html).
Tests have been performed with CLHEP 1.8.0.0.

Geant4 5.1 examples with histogramming cowork with AIDA 3.0 implementations.
These include:
- ANAPHE and components included therein
  (see: ANAPHE - http://cern.ch/anaphe)
- JAS (Java Analysis Studio)
  (see: JAS - http://jas.freehep.org)
- Open Scientist
  (see: Open Scientist - http://www.lal.in2p3.fr/OpenScientist)

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


3. The Standard Template Library
--------------------------------

Native versions of STL have been tested on the following platforms:

   Windows/2000, Linux, and SUN.

NOTES:

- Platform specific setup:
  o SUN:     Native STL is required for ISO/ANSI setup.
  o Linux:   Native STL is required (non ISO/ANSI setup for egcs compiler only).
  o Windows: Native STL and ISO/ANSI setup required (VC++ 6.0).


4. Compiler Specific Problems
-----------------------------

  o 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).


5. 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, available on the Web at this address:

    http://cern.ch/geant4/problemreport


6. Compilation Warnings
-----------------------

There are compilation warnings on some platforms.  We do not believe
that any will lead to incorrect run-time behaviour, but we are working
on reducing them.


7. Known Run-Time Warnings
--------------------------

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

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


8. Features at Run-Time
-----------------------

 o In this release, the implementation of the G4RunManager has been
   substantially modified. The calculation of the physics cross-section
   tables takes place -after- the "BeamOn" command is issued. Thus, the
   initialisation of the run-manager (either through the initialize()
   method or the UI command "run/initialize") is noticeably faster
   compared to the previous version. On the other hand, more time is
   required to get the event loop starting, once issued the "BeamOn"
   command.
 o Production thresholds are now adopted only for gammas, electrons and
   positrons. Other particles do not use the concept of production threshold;
   setting cut values for particles rather than the cited three will have no
   effect in the application, but will result in a warning message.


9. Items for migration of user code
-----------------------------------

o User applications having user-defined production cuts will work with
  no required transition to the new interface, as long as regions are
  not used. The new interface for setting production cuts will be
  required for using the 'cuts-by-region' feature (see the User's
  Guide for Application Developers).
  The old interface for setting/controlling production cuts (methods
  and UI commands) will be made obsolete in the next public release and
  later-on removed.
  An example showing the utilisation of the 'cut-by-region' technique is
  available in examples/novice/N07.
o The file format of storing physics tables has been changed. Thus all
  the stored physics tables must be rebuilt.
o Advanced applications making use of a sub-classed run-manager will have
  to migrate to the new initialization scheme and interface defined in
  G4RunManager. Particularly, users must be aware of the change in the
  sequence of building the physics tables. G4RunManager::BuildPhysicsTable()
  must be invoked from G4RunManager::RunInitialization().
  G4VUserPhysicsList::SetCuts() does not trigger the construction of the
  physics tables, it is just aimed to set the production thresholds (cuts).
  All other user mandatory initialization classes are kept as before.
o Applications making use of the prototype STD EM processes and messenger
  will have to migrate according to the design iteration implemented in
  this new release, examples showing the usage of these processes can be
  found in examples/extended/electromagnetic: TestEm2, TestEm3.
o The new data sets for low-energy EM processes G4EMLOW2.1 is required
  for applications making use of such processes.


 ----------------------------------------------------------------------------

                        List of changes and fixes
                        -------------------------

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


  o Digitization & Hits:
    -------------------
    - Fixed G4VSensitiveDetector::GetCollectionID() for more than one
      sensitive detector objects instantiated from one detector class.

  o Electromagnetic Processes (Low-energy):
    --------------------------------------
    - Included development for 'cuts-by-region':
      o Made relevant physics processes "region-aware".
    - First implementation of Penelope processes for photons.
      Minor design iteration on Bremsstrahlung, to accomodate variable
      number of parameters compatible with Penelope processes.
      Requires new data set G4EMLOW2.1.
    - New Ziegler2000 parameterisation for G4hLowEnergyIonisation.
      and fix in calculation of step-limit.
    - Use particle SubType for ions.
    - Bug fix to the Auger effect, in response to user report.
    - Bug fix to G4LowEnergyGammaConversion for angular distribution.

  o Electromagnetic Processes (Standard):
    ------------------------------------
    - Included development for 'cuts-by-region':
      o Made relevant physics processes "region-aware".
      o Made the set of model per region available.
      o Made SubCutoff regime available per region.
      o Fixes for store/restore physics tables for ions.
      o Made step-limit calculation region aware
        and added finalRangeRequested for region handling.
    - First implementation of G4AnnihiToMuPair process.
    - Important modifications in Multiple Scattering
      (both in default classes and STD version):
      o new algorithm to reduce the step dependence
      o new sampling for the geometrical path-lengths.
      o Introduced base class G4VMultipleScattering.
    - MuPairProduction::PostStepDoIt(): removed 'tracking cut' of muon.
    - Fixed problem in cut control in G4PAIonisation.
    - Fixed problem of computation of mean-free-path for PAI process.
    - STD processes:
      o Fixed problem in fluctuations.
      o Fixed problem of negative step limit.
      o Fixed problems with lambda and range tables for hadrons/ions.
      o Added Initialise() method to calculate PartialSumSigma.
      o Added GetDEDXDispersion() method to loss tables.
      o Removed UI messenger.
    - Fix in setting of 'costeta' in ElecThetaDistribution() for
      PhotoElectricEffect.
    - Added warning and G4Exception in G4EnergyLossTable in case of using
      the old interface when more than one region is defined. 
    - Made energy-loss messanger active at PreInit state.
    - Use particle SubType for GenericIons.

  o General Processes, Parameterisation, Decay, Optical:
    ---------------------------------------------------
    - Management:
      o Fixed PostStepGetPhysicalInteractionLength() for discrete processes
        to avoid unrealistic step of length 0 in rare cases of precision
        mismatch. Fixes bug report #465.
      o Cleared few trivial strict pedantic warnings.
    - Decay:
      o Corrected initialisation of TouchableHandle for decay products.
    - Optical:
      o Modified logic for the assignment of the index of refraction 
        of the 2nd material. Most applications should not notice a change.
        Fixes bug-report #444. 

  o Geometry:
    --------
    - Importance biasing
      o G4ParallelNavigator: modified shift mechanism in method
        ComputeStepLengthShifted().
      o Modified implementation of IsInWorld() in G4IStore using
        G4LogicalVolume::IsAncestor().
      o Cleared strict pedantic warnings.
    - Management
      o Included development for 'cuts-by-region':
        + Introduced new classes G4Region and G4RegionStore.
        + Modified G4LogicalVolume to handle recursive propagation
          of regions to daughters.
        + Updated G4LogicalVolumeStore to handle de-registration of
          root regions for volumes which are explicitely deleted.
      o G4LogicalVolume:
        + Added check for invalid geometry constructions. Issue an
          exception if a placement is attempted in a volume already
          containing a replicated daughter.
        + Added method for scanning recursively the volume tree and
          retrieve if the current LV is ancestor of a given PV:
          G4bool IsAncestor(const G4VPhysicalVolume*) const
    - Solids
      o Boolean solids:
        + Fixed trivial strict pedantic warnings in G4ReflectedSolid
          and G4ReflectionFactory.
      o BREPS solids:
        + Fixed trivial strict pedantic warnings in compilation.
      o Specific solids:
        + Fixed initialisation of base class in copy contructor for:
          G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide.
        + Fixed trivial pedantic warnings on G4Polycone and G4Polyhedra.
      o STEPinterface:
        + Fixed trivial strict pedantic warnings in compilation.
    - Volumes
      o G4NavigationHistory: fix in  methods Clear() and SetFirstEntry().
        Correctly initialise navigation levels. Resolves discrepancy in the
        copy number assigned to the world volume, if retrieved through the
        touchable or explicitely through the physical volume.
      o G4GeometryMessenger: added UI command for setting navigator
        verbosity at run-time (/geometry/navigator/verbose [n], n in [0..4]).
      o G4ReplicaNavigation: fixed debug statement in VoxelLocate().
      o G4VoxelNavigation: fixed debug statement in destructor.
      o G4Navigator: removed redundant calculation of localPoint in method
        LocateGlobalPointWithinVolume()
      o Fixed few trivial strict pedantic warnings in compilation.

  o Global:
    ------
    - Removed copies of SystemOfUnits.h and PhysicalConstants.h, now using
      directly headers from CLHEP: changed globals.hh and G4SIunits.hh.
    - Fixed trivial strict pedantic warnings in copy constructor for
      G4PhysicsTable and G4strstreambuf. Also for unused parameters in
      a couple of methods in G4String.
    - Removed unnecessary usage of GNU_GCC preprocessor flag in G4Allocator
      and G4strstreambuf.

  o Graphical representations:
    -------------------------
    - Fixed trivial strict pedantic warnings in compilation.

  o Hadronic Processes:
    ------------------
    - cross_sections
      o Introducing an upper limit in the alternative pion cross-section
        class G4PiNuclearCrossSection.
    - models/generator/scattering
      o Fixed critical bug affecting binary-cascade model.
    - models/low_energy
      o Removed two un-physical exceptions in G4LENeutronInelastic.
        No run-time change.
    - stopping:
      o Fixed bug in stopping muons (G4MuonMinusCaptureAtRest).
        Fixes bug-report #457.

  o Magnetic Field:
    --------------
    - Fixed definition of copy constructors in fields inheritance chain.
    - Moved obsolete method StepWithEst() to private in G4RKG3_Stepper,
      G4CashKarpRKF45 and G4ClassicalRK4.
    - Cleared strict pedantic warnings.

  o Particles:
    ---------
    - Included development for 'cuts-by-region':
      o Dismissed 'cuts-by-material' temporary implementation.
      o Removed concrete implementation of method
        'CalcEnergyCuts( const G4Material* )' from affected particles.
      o Removed ComputeLoss(), BuildRangeVector() from G4Electron and
        G4Positron.
      o Added classes G4MaterialCutsCouple, G4ProductionCuts,
        G4ProductionCutsTable, G4RToEConvForAntiNeutron,
        G4RToEConvForAntiProton, G4RToEConvForElectron,
        G4RToEConvForGamma, G4RToEConvForNeutron, G4RToEConvForPositron,
        G4RToEConvForProton, G4VRangeToEnergyConverter
        in processes/management.
      o Removed G4ParticleWithCuts class and changed to alias of
        G4ParticleDefinition to handle new cuts scheme.
      o Implemented Store/Retrieve Cut in G4ProductionCutsTable.
        G4ProductionCuts contains cuts only for gamma and e+/-.
    - Embed a string of file version to physics table file.
    - Added particle SubType for nuclei to distinguish static or
      dynamic objects.
    - G4DynamicParticle:
      o Fixed case of negative sqrt in Set4Momentum(), occasionally
        resulting in computation of negative interaction length. 
        Fixes problem report #360. 
      o Fix to resolve a known problem in pi-0 decay.

  o Run, Intercoms and Interfaces
    -----------------------------
    - Included development for 'cuts-by-region':
      o In G4VUserPhysicsList, removed the following methods:
        ReCalcCutValue(), SetCutValueForOthers(), SetCutValueForOtherThan(),
        ReCalcCutValueForOthers(), StoreMaterialInfo(), StoreCutValues(),
        RetrieveCutValues(), CheckForRetrievePhysicsTable(),
        CheckMaterialInfo(). Added method BuildPhysicsTable().
      o Modified G4RunManger to properly handle new cuts scheme based
        on regions.
      o Added commands for setting cuts.
      o Implemented store/retrieve physics list methods.
    - Removed BuildPhysicsTable() from Initialize() and moved to BeamOn.
      and invoke it for dynamically created ions.
    - Added GenerateRun() method in G4UserRunAction.
    - Cleared inline virtual method in G4Run.

  o Tracking & Track:
    ----------------
    - Included development for 'cuts-by-region':
      o Modified implementation of stepping to cope with new scheme for
        cuts and regions.
      o Updated G4Track, G4Step, G4StepPoint and G4ParticleChangeForTransport
        to properly handle new G4MaterialCutsCouple.
    - Fix in G4Step::InitializeStep(): added initialization of fCharge
      in StepPoint.
    - G4SteppingVerbose: fixed retrieval of phys-volume name, adding
      check for NULL pointer for post-step physical volume returned.
    - G4SteppingManager:
      o recover ApplyCuts() for cuts-by-region.
      o fixed initilization of fAtRestDoItProcTriggered.

  o Transportation:
    --------------
    - Included development for 'cuts-by-region':
      o Made G4Transportation and G4UserSpecialCuts "region-aware".
    - Cleared pedantic warnings and some cosmetic cleanups.

  o g3tog4 tool:
    -----------
    - Fixed trivial strict pedantic warnings in compilation.

  o data
    ----
    - Updated data-set for low-energy EM processes: G4EMLOW2.1

  o Examples:
    --------
  o Updated reference outputs.
  - advanced:
    o composite_calorimeter
      + Fixed G4cout/G4endl in CCalAnalysis and cleaned some
        compilation warnings. 
  - extended:
    o Updated PhysicsList for cut by region.
    o analysis
      + A01
        - Added 2 more histograms to the example 
        - Fixed NullPointerException by letting SDManager delete the
          detectors  created in DetectorConstruction. 
        - Added comment when quitting Geant4 that JAS window still
          needs closing. 
    o biasing
      + Changed the replica number of the world volume from -1 to 0.
      + Initialize() of the G4RunManager is now called after all Materials
        and volumes (also in the parallel geometry) are built.
    o electromagnetic
      + TestEm1
        - Fixed verbose problem.
        - Removed old interfaces to cuts.
        - Added definition of mean excitation energy for water.
      + TestEm2
        - Use logical mother for G4PVPlacement and G4PVReplica.
        - Completed migration to cuts by region.
        - Update modular structure of PhysicsList.
      + TestEm3
        - Change in all macros: /run/particle/setCut -> /testem/phys/setCuts.
        - Material CsI and example of SetMeanExcitationEnergy().
        - Defined BGO material.
        - Added example of static ion: IonC12 class and ionC12.mac.
        - Use logical mother for G4PVPlacement.
      + TestEm4
        - Use logical mother for G4PVPlacement.
      + TestEm5
        - PhysicsList: removed cutForProton (old interface).
        - Fixed problem of 'OutOfWorld' volume.
        - Use logical mother for G4PVPlacement.
      + TestEm6
        - Use logical mother for G4PVPlacement.
  - novice:
    o Updated PhysicsList for cut by region.
    o Use pointer to logical mother for placements.
    o Added new novice example N07 demonstrating cuts-by-region,
      material parameterisation, run-time modification of part of the
      geometry setup, sharing of a sensitive detector definition for
      different sub-detectors, customization of the G4Run, store/retrieve
      physics table.
    o N04
      + Added capture and fission in HadronPhysicsList.
    o N06
      + Corrected OpWaterSurface to be dieletric_dieletric.
