
                 Geant4 3.2 Release Notes
                 ------------------------

                                                      29th June 2001

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

  o Configuration:
    -------------
    - Added G4VIS_BUILD_ASCIITREE_DRIVER, G4VIS_USE_ASCIITREE and
      G4VIS_BUILD_GAGTREE_DRIVER, G4VIS_USE_GAGTREE variables to
      activate module for ascii/GAG hierachycal tree of geometry volumes.
    - Introduced changes for persistency: common.gmk is now split in three, 
      one general, and one for specific for transient and persistent each. 
      Dependencies now much better handled in persistency. 
    - Removed G4_NO_CBRT flag from WIN32-VC.gmk, no more needed.

  o Event:
    -----
    - Fixes to cowork with STL vector migration of 'geometry'.

  o Electromagnetic Processes (Low-energy):
    --------------------------------------
    - Migration to STL vector. Removed references to RW wrappers.
    - Fixed pedantic warnings detected on Linux ANSI setup.
    - Added new process for polarised Compton scattering.
    - Bug fix in anti-proton ionisation.

  o Electromagnetic Processes (Standard):
    ------------------------------------
    - Fixed pedantic warnings detected on Linux ANSI setup.

  o General Processes, Parameterisation, Decay, Optical:
    ---------------------------------------------------
    - Fixed pedantic warnings detected on Linux ANSI setup.

  o Geometry:
    --------
    - Migrated code to native STL vector. Removed all references to
      Rogue-Wave wrappers.
    - Management:
      o Adopt explicit initialisation for 'minExtents' and 'maxExtents' 
        in G4SmartVoxelHeader::BuildNodes(...).
    - Boolean solids:
      o Fix in G4IntersectionSolid::DistanceToIn(p,v) resolving 
        bug observed in problem report #153. 
    - BREPS solids:
      o Fixes to allow -ansi compilation on Linux-g++, gcc-2.95-2 compiler: 
        - G4Ray: changed usage of hypot(x,y) to sqrt(x*x+y*y). 
        - G4Hyperbola: changed usage of atanh(x) to 0.5*log((1+x)/(1-x)). 
      o G4ProjectedSurface: corrected initialisation of temporary
        G4Point3D objects, to use the correct CLHEP constructor. 
    - CSG solids:
      o Added G4CSGDEBUG preprocessor flag to discriminate for debug
        verbosity specific to CSG solids. Included in G4Exception of
        DistanceToOut() for "point p is outside" in G4Box, G4Cons,
	G4Tubs.
      o G4Trap: fixed memory leak in CalculateExtent() for creation of
        vertices in case of finite rotation.
    - Magnetic Field:
      o Updated G4Mag_SpinEqRhs for correction to spin tracking.
      o Fixed G4FieldManager constructors to give default values to
        delta parameters.
    - STEP reader:
      - Fix for porting on Linux-g++ 2.95-2 -ansi: removed usage of
        strdup() in dirobj.cc; replaced with existing solution for
        __O3DB__. 
    - Volumes:
      o G4AuxiliaryNavServices::CheckPointOnSurface(): added additional
        check to resolve endless looping of G4Navigator in case the track
        is passing through a point, edge or surface shared by two solids. 
        Fixes problem report #185. 
      o Fixes in G4ReplicaNavigation for bug reports #253 and #254: 
        - in VoxelLocate(...), treated particular case of rotational
          symmetry  with extent over 360 degrees. 
        - in DistanceToOutPhi(...), fix to correctly handle cases where
          the starting point is on boundary of replicas and direction is
          along boundary. 
      o Enabled the use of different field managers for different parts
        of the detector. This first implementation allows a volume that
        has a field manager to override the global one. 
        - Note: All field managers currently must refer to fields
                in global coordinates. 
        - New ability: setting of the delta accuracy parameters differently
                in different volumes (even while maintaining the same
                field as the global one).
      o Added new parameter to G4PropagatorInField 'fEpsilonMin' which is
        the minimal relative accuracy for MF driving. 

  o Global:
    ------
    - Added contructor to G4DataVector with additional argument 
      for initialising values of collection.
    - Removed definition of cbrt() in globals.hh to allow ANSI compilation
      on Linux-g++ architecture with compiler gcc-2.95-2.
    - Defined 'str_size' as G4std::string::size_type and replaced usage of
      'size_t' in G4String and G4SubString. Fixes problem report #40. 

  o Graphics Representations:
    ------------------------
  - Fixes in HepPolyhedron:
    o Extended implementation to cover unforeseen earlier situation 
      during preselection of faces without intersection. 
    o Made GetNumberOfRotationSteps() static and public.
    o Added GetSurfaceArea() and GetVolume(). 
  - Fixed warnings about possible use of uninitialized variables. 
  - Migrated to STL vector. Removed references to RW wrappers.
  - Bug fix in BooleanProcessor to address problem report #153. 

  o Hadronic Processes:
    ------------------
  - Migration to STL vector of the pre-compound and evaporation codes and
    removal of most warnings detected by Linux ANSI pedantic setup.
  - Management:
    o Fixes memory leak in G4InelasticInteraction: systematic search
      for leaks - energy scan 50MeV-10GeV. 
  - High energy model:
    o Energy- OR Momentum- conservation, can be chosen by the user.
    o Added production of Evaporation particles.
    o Better description of experimental data, mainly in Strange
      Particle Production.    
    o Cleared compilation warnings on Linux-g++.
    o Minor bug-fix in G4HEPionMinusInelastic.
    o Introduced temporary workaround in G4HEInelastic for high energy
      problem (number of particles created in one event larger than
      allocation).
    o Missing initialization of strangeness corrected, removing energy
      non-conservation in rare cases. 
  - Generator models:
    o Upgrade of angular distributions and fission yields in pre-compound
      and evaporation models.
    o Defined local cbrt() in G4FermiMomentum, to allow porting 
      on gcc-2.95-2 ANSI setup.
    o De-excitation: interface adjustment in G4ParaFissionModel.
    o Kinetic model: fixed exceptional condition for inelastic scattering
      off Hydrogene. No recoil required. 
  - Radiative-decay model:
    o Fixes to cowork with STL vector migration of 'geometry'.
  - Low energy neutron transport model:
    o New code revision: requires new set of data, G4NDL3.0 or later.
    o Includes also an upgrade of the doppler broadening.
      Allows for running on 0K data, and doing exact doppler broadening
      on the fly (according to the temperature specified in G4Material),
      with good performance up to about 5000K.
    o Bug fix in G4NeutronHPInelasticCompFS to get the correct Q-value
      for Lithium (the bug was introduced in recent development).
  - Utilities:
    o Fixed memory leak in G4ReactionDynamics: systematic search for
      leaks - energy scan verification 50MeV-10GeV.
    o Fixed bug in nuclear reactions for light ions. 

  o Materials:
    ---------
    - Fixed pedantic warnings detected on Linux ANSI setup.
    - Fix to explicitly initialise to zero values of G4DataVector used
      to fill sandia-matrix.

  o Particles:
    ---------
    - Added a0(980), f0(400-1200), f0(980).
    - Fixed bugs in G4ParticleDefinition::GetPDGIsospin().
    - Fixed element name in G4IonTable.
    - Fixed PDG encoding for excited Lambdas.
    - Added special treatment for Lamdas in G4PDGCodeChecker.
    - Fixed pedantic warnings detected on Linux ANSI setup.

  o Persistency:
    -----------
    - Removed useless declaration of typedef G4ThreeVectorList.
    - Adapted to new config setup. 
    - Changed usage of NULL to 0. 

  o Run and Intercoms:
    -----------------
    - Added binary mode for G4VUserPhysicsList::Retrieve/StorePhysicsTable().
    - Added G4VUserPhysicsList::RetrieveCutValues and related.
    - Added G4VUserPhysicsList::Set/ResetStoredInAscii() to switch on ascii
      mode for Retrieve/StorePhysicsTable().
    - Added 'setStoredInAscii' command in G4UserPhysicsList.

  o Tracking & Track:
    ----------------
    - Migration to STL vector. Removed references to RW wrappers.
    - Moved G4TrackingMessenger* messenger to the class scope in
      G4TrackingManager.
    - Fixed problem of vertex information loss for suspended tracks.
      Fixes problem report #240.
    - Fix to G4SteppingManager to explicitly initialise values in STL
      collections members of the class. 

  o Transportation:
    --------------
    - Correction for 'spin-update' to G4Transportation: to avoid overwrite
      of the spin value for photons and other non-charged particles (and
      for charged particles in zero field).

  o Visualization:
    -------------
    - Added two new commands:
      /vis/scene/add/text
      /vis/scene/add/axes
    - Improvements in /vis/scene/add/volume.
    - Added /vis/drawTree.
    - Introduced first version of G4ASCIITree to dump geometry hierarchy
      to standard output as ASCII stream.
      This requires two new environment variables:
      G4VIS_BUILD_ASCIITREE_DRIVER and G4VIS_USE_ASCIITREE.
    - Introduced first version of G4GAGTree to dump geometry hierarchy
      to GAG GUI system.
      This requires two new environment variables:
      G4VIS_BUILD_GAGTREE_DRIVER and G4VIS_USE_GAGTREE.
    - Migration to STL vector. Removed references to RW wrappers.
    - Removed OS dependence from the DAWN-network driver. 
      * gethostname() removed 
      * removed G4SocketConfig.hh and G4SocketMacro.hh. 
      NOTE: now "setenv G4DAWN_HOST_NAME hostname" is mandatory to use 
            the DAWN-network driver. 

  o G4toG4 Tool:
    -----------
    - Fix in GNUmakefile: G4MAKESHLIB replaced with G4LIB_BUILD_SHARED
      to allow building of shared library according to the new mechanism.
    - Fix in G3toG4BuildTree for a case of the placement a volume in
      cloned mothers. G3toG4BuildTree() has been split in two methods
      G3toG4BuildLVTree() and G3toG4BuildPVTree(), the first creating
      logical volumes only, the second performing placements afterwards.
    - Cleared pedantic warnings detected on Linux-g++ with ISO/ANSI setup.

  o Examples:
    --------
    - exampleN03: updated visualization macros in visTutor: 
      o Commands /vis/set/XXX's are replaced with /vis/viewer/set/XXX 
      o Commands /vis/camera/XXX's are replaced with /vis/viewer/XXX 
        except for /vis/camera/spin. 
      o Added exN03Tree0.mac for ASCII DTREE and exN03Tree1.mac for
        GAG DTREE 
    - Migrated novice/N05 to STL vector.
    - Added new interactive commands in extended/electromagnetic/TestEm5.
    - Updated examples:
      o extended/analysis/AnaEx01
      o extended/persistency/PersistentEx01 and PersistentEx02
      o advanced/xray_telescope

Notes: 

  o  Geant4 3.2 is based on STL and can be installed with strict
     ISO/ANSI C++ compliant setup or not. See notes below.

The code and some binary libraries are available through our "Source Code"
Web page:
- see our Geant4 Home 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.
Updates to the documentation for Geant4 3.2 are expected to be published as
usual within three weeks from the release date.


Contents
--------

  1. Supported and Tested Platforms
  2. ANAPHE and CLHEP
  3. The Standard Template Library (STL)
  4. Persistency
  5. Compiler Specific Problems
  6. Known Run-Time Problems
  7. Compilation Warnings
  8. Known Run-Time Warnings


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

  o SUN Solaris 5.6/5.7, C++ 4.2 Patch 104631-04, C++ 5.2 Patch 109508-03.
  o HP 10.20, aCC C++ B3910B A.01.23
  o Linux 2.2.17-7, gcc C++ egcs-2.91.66 (egcs 1.1.2), gcc 2.95-2.
      This configuration was tested with the RedHat 6.1 distribution, but
      versions of Geant4 have also been compiled successfully on more recent
      RedHat, Debian and Suse distributions.
  o NT 4.0 with Service Pack 4 or Windows-2000 and Cygnus Tools b20 with:
      Visual C++ 6.0 Service Pack 2

Platforms also tested but giving rise to some problems - see below:

  o DEC V4.0, cxx C++ V6.1-027.

Platforms configured but not tested and not supported:
  o SGI V6.5.5, CC 7.2.1 with ObjectSpace
  o AIX 4.3.2, xlC compiler with ObjectSpace


2. ANAPHE and CLHEP
-------------------

Geant4 3.2 requires the installation of CLHEP. 

See CLHEP (http://cern.ch/clhep/INSTALLATION/clhep.html).
Tests have been performed with CLHEP 1.6.0.0.

By default, the CLHEP installation scripts will activate ISO/ANSI C++ features
if the compiler is capable. You need to explicitly disable CLHEP settings in
case you wish non-ISO/ANSI setup on specific compilers.

Geant4 3.2 coworks with ANAPHE 3.6.0 and components included therein:
  Objectivity 6.1 
  ObjectSpace 2.1
  HepODBMS 0.3.2.9
  CLHEP 1.6.0.0

For more information about ANAPHE, see:  http://cern.ch/anaphe


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

The following versions of STL have been tested:

   ObjectSpace STL on SUN (CC 4.2).

          See ObjectSpace (http://www.objectspace.com).

   "Native" STL on: Windows/NT, Linux, HP, DEC and SUN (CC 5.2).

This is selected at installation/compile time by the environment variable
G4USE_OSPACE in the case of the former - see documentation.

NOTES:
- Be aware that by default, the installation scripts will expect to use
  the native STL implementation. You must set the G4USE_OSPACE variable
  in the environment in order to select the ObjectSpace implementation.

- Platform specific setup:
  o DEC:   ObjectSpace is required in non ISO/ANSI setup.
           Native STL is required for ISO/ANSI setup.
  o HP:    Native STL is used (non ISO/ANSI setup).
  o SUN:   ObjectSpace is required in non ISO/ANSI setup (CC 4.2).
           Native STL is required for ISO/ANSI setup (CC 5.2 only).
  o Linux: Native STL is required (non ISO/ANSI setup).
  o NT:    Native STL and ISO/ANSI setup required.


4. Persistency
--------------

 Platform
 --------

 Persistency in Geant4 3.2 release is tested on the following
 platforms:

 G4SYSTEM       OS        C++ compiler   HepODBMS    Objectivity
 ---------  -----------   ------------   ---------   -----------
 SUN-CC     SunOS 5.6     CC 4.2         0.3.1.4     5.2.1
 SUN-CC5    SunOS 5.7     CC 5.2         0.3.2.10(*) 6.1.3 (*)
 Linux-g++  RedHat 6.1    egcs-2.91.66   0.3.1.4     5.2.1
 Linux-g++  RedHat 6.1    egcs-2.95.2    0.3.2.3 (#) 6.0   (#)

 (*) HepODBMS header files must be prepared with "ooddlx -noline"
     option. See below.
 (#) Setup scripts for HepODBMS and Objectivity has been changed on
     CERN AFS.  See g4odbms_setup[.sh.csh] in example PersistentEx01
     in 'geant4/examples/extended/persistency' for example setup scripts.

 Known Problems
 --------------

 - There are several warning messages on some platforms during the
   installation of the libraries and the compilation of the examples.
   Most of them can be safely ignored.  It is annoying but hard to get
   rid of them due to various reasons.

 - A warning message "Could not find naming root directory" appears at
   runtime of the persistency examples. It is generaged by
   HepDbApplication in HepODBMS. It can be ignored.

 - On Solaris7 (SUN-CC5), persistent header files has to be generated by
   ooddlx with "-noline" option to work around a bug in C++ compiler.
   This workaround applies not only to Geant4 Persistency category but
   also to HepODBMS, and the user defined ddl files as well.  This
   option removes the "#line" directive of the file name and the line
   number of the original .ddl file.  As a consequences, C++ compiler
   no longer "tells" the correct file name and the line number of the
   .ddl file if compiler error occurs.  Try to identify the compiler
   error by first looking into the header file generated by ooddlx,
   and then locate the source of the problem by looking into the .ddl
   file. A patch to the compiler is expected from SUN.


5. Compiler Specific Problems
-----------------------------

  o DEC V4.0, cxx C++ V6.1-027.

    - We have found cases of mis-compilation of min and max templates
      on DEC.  We have traced those which cause serious malfunction
      but there is no guarantee that there are no other cases.
      Detailed inspection of assembler output suggests that this
      problem might not be confined to min and max.  This has been
      reported to DEC/Compaq.  We understand a new version 6.2 of the
      compiler is now available.  However we cannot guarantee correct
      execution of Geant4 on DEC with the current version of the
      compiler.
    - A bug in cin.getline() system function causes an anomalous
      behavior when running in interactive-mode on DEC-cxx 6.1 in
      ISO/ANSI mode. We tested the bug has been fixed in more recent
      versions of the compiler.


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

    http://cern.ch/geant4/problemreport


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


8. 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. 
