
                 Geant4 2.0 Release Notes
                 ------------------------

                                                     30th June 2000

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

  o Electromagnetic Processes:
    -------------------------
    - internal reorganisation of the EnergyLoss classes.
      Introduced one level of abstraction through the G4VEnergyLoss class
      for muons, electrons and hadrons.
    - introduced new functionalities for the energy loss fluctuation model, 
      and bug fixes.  
    - removed *Plus* process classes and merged to standard processes:
      optimized generation of delta rays near the geometrical boudaries is
      now performed as the default.
    - bug fixed in the multiple scattering.
    - bugs fixed in G4eIonisation and G4hIonisation.
    - absolute min gamma energy fixed to 10 keV in G4eBremsstrahlung.
    - bugs fixed in G4MuIonisation and G4MuPairProduction.
      Updated Physics Reference Manual for muon processes. 
    - Added new models of Transition Radiation radiators
      in processes/parametrisation.

  o Electromagnetic Processes, Low-energy :
    -------------------------------------
    - fixes in G4LowEnergyBremsstrahlung for continuous energy loss.
    - modifications for integration of cross sections, corrections of
      fluorescence transition probabilities to take into account
      non-radiative transitions.

  o General Processes, Parameterisation, Decay :
    ------------------------------------------
    - introduced new set of models for X-ray transition radiation
      parameterisation.
    - implemented full migration to STL for processes/parameterisation
      and processes/management modules.
    - added process registration into ProcessTable in copy constructor.
    - fixed registration of "shortlived" particles for G4Decay.

  o Geometry:
    --------
  - magneticfield:
    o corrected helical steppers.
    o fix in G4LineSection to prevent divisions by 0 and sqrt(<0).
    o modified method for finding new trial step in G4ChordFinder. 
  - management:
    o design change in G4VSolid for visualization utilities: changed pure
      virtual method G4VSolid::GetExtent() to virtual. Added default
      implementation based on CalculateExtent().
  - BREPS solids:
    o Decoupled BREPS module from the STEP Reader;
    o Memory leak fixes and some code cleanup.
  - CSG and specific solids:
    o created new module solids/specific and moved therein all non-CSG
      shapes previously placed in solids/CSG.
    o Added new shape in solids/specific: G4EllipticalTube.
    o Fixed bug in G4PolyhedraSide::Normal(...). This fixes a problem
      observed in G4Polyhedra::SurfaceNormal. Fixes in G4Hype.
    o Fixed typo in method name in G4Polyhedra.: changed GetNumSIde() to
      GetNumSide().
    o Added more diagnostics in G4Cons, G4Sphere and G4Torus in function
      DistanceToOut(p,v,...).
    o Fix in DistanceToIn(p,v) for G4Box and G4Trd to return zero
      distance in case computed value is less than 0.5*kCarTolerance.
    o Added safety against call from outside in DistanceToOut(p)
    o Fix to G4Tubs::DistanceToOut(p,v,...) in computation of xi, yi
      for (sphi>=-0.5*kCarTolerance).
    o Added more diagnostics in case of invalid enum for DistanceToOut.
    o Added new alternative functions SolveBiQuadratic/CubicNew in G4Torus.
  - solids/Boolean:
    o Implemented CreatePolyhedron method.
    o G4DisplacedSolid: reversed implementation of GetFrameRotation and
      GetObjectRotation, removing inappropriate invertion.
    o G4DisplacedSolid::GetConstituentMovedSolid() made const.
    o Fixed bug in G4SubtractionSolid::DistanceToOut(p,v,...).
      validNorm flag was uncorrectly set to true.
  - STEP:
    o Upgraded NIST STEP Reader to SCL (STEP Class Library) 3.2;
    o Implemented porting on supported platforms/compilers and
      ISO-ANSI C++ compliance.
  - STEP Interface module:
    o Implemented porting to support the new NIST STEP Reader;
    o Reduced inter-class dependencies by reorganising include
      statements.
    o Improved overall diagnostics and fixed internal memory-leaks;
    o Added protections for NULL pointers generated by missing geometry
      creators.
    o Implemented temporary solution for association of placements
      with manifolded solids for advanced BREP shape representations.
  - volumes:
    o introduced kCarTolerance for check over taken step length and 
      TruePathLength in G4PropagatorInField::ComputeStep().
    o fixes in G4ReplicaNavigation::ComputeStep() for zero-step length
      loops observed when point is on boundary.

  o Globals and Config:
    ------------------
    - Added class G4PhysicsLnVector implementing a physics vector with
      natural logarithmic scale for energy/momentum bins.
    - Added string identifier to G4UserLimits.
    - Defined G4complex type as complex type of doubles.
    - Fixes to STLInterface wrappers: fixed initialization of base STL
      vector in default constructor of vector collections.
    - Changed implementation of G4Integrator to a template class.
    - Config: implemented modular setup. Now system specific configurations
      are grouped in separated files $G4SYSTEM.gmk and placed in the new 
      directory config/sys.

  o Graphics Representations:
    ------------------------
    - Added HepPolyhedron class and re-implemented G4Polyhedron using this
      new class (which will become part of CLHEP).
    - Added boolean processor for boolean operations of HepPolyhedron
      objects.

  o Hadronic Processes:
    ------------------
    - management: allowing ion interactions in G4HadronInelasticProcess.
    - cross_sections: added new classes for ion-ion reactions, and for ion
       reactions on Hydrogen.
    - processes: added new process for ion induced reactions.
    - models/isotope_production: added model for proton induced isotope
       production, validity range is the proton spallation energy range
       (to use this, an update of the G4NDL library is required).
    - models/neutron_hp: enabled production of residual nuclei for some
       inelastic final states.
    - models/generator/de_excitation: design iteration to allow re-use of
       root-finding algorithms.
    - models/generator/quark_gluon_string: added gamma annihilation
       cross-sections and anti-nucleaon-nucleon annihilation. Bug fixes
       in AntiSigma SU(12) wafe-function. Extended G4SPBaryon.
    - models/generator/string_fragmentation: extended
       G4VLongitudinalStringDecay to allow string excitation dependent
       parameters.
    - models/generator/util: bug fixes and added functionality in
       G4KineticTrack.
    - models/radiative_decay: added model for simulating the decay of
       radio-active nuclei and isomeric states. Validity range is the
       range of materials available from ENSDF as of May 2000. To use
       this model a data set is provided in geant4/data/RadiativeDecay
       and the environment variable G4RADIOACTIVEDATA must be set.
    - fixes for memory leaks observed at event loop.

    NOTE: the consistent data sets for photon evaporation and radio-active
          decay (derived from the same version of the ENSDF data) are
	  provided from Web in the source download area. A previous version
	  of photon evaporation data is also provided.

  o Interfaces:
    ----------
    - Introduced new G4UITerminal (G4UItcsh) with UNIX-like shell
      (currently fully tested only on Linux-g++ and SUN-CC systems).
    
  o Particles:
    ---------
    - Full migration to STL performed.
    - Removed G4RhoPlus, G4RhoZero, and G4RhoMinus classes.
      Added "rho0" in G4ShortLivedConstructor.
    - Fixes in G4IsotopeTable and G4NucleiProperties classes.
    - Introduced ParticleSubType property in ParticleDefinition.
    - Added GetAtomicNumber() and GetAtomicMass() methods to G4VIon,
      G4Proton, and G4Neutron.
    - Added G4VDecayChannel::GetAngularMomentum() method.

  o Tracking & Track:
    ----------------
    - Added thePolarizationChange in G4ParticleChangeForTransportation.
    - Added cashing mechanism of pointer to material in G4StepPoint.
      to extract material information from parametrized volumes.
    - GetTouchable/SetTouchable methods have been changed to handle
      "const" pointers.
    - Introduced G4VUserTrackInformation class and associated to G4Track.
    - Fixed problem in deleting touchable in G4SteppingManager.

  o Visualization:
    -------------
    - Introduced first implementation of the G4RayTracer. With G4RayTracer
      all solids types supported in Geant4 can be visualised.
    - Added commands /vis/viewer/update, /vis/viewer/reset.
    - Added "compound" commands: /vis/open, /vis/drawVolume.
    - Added ability to visualise boolean solids through G4Polyhedron objects.
    - Added G4LogicalVolumeModel::DescribeSolid(), which explicitly adds
      components of composite solids as white forced-wireframe objects.
    - OPACS:
      o G4GoSceneHandler: correct polyhedron wire-frame in order to remove
        some edges.
      o G4WoViewer: changed camera name checking so that a viewer created
        by the GUI (Wo) could be hooked.
      o G4GoSceneHandler: changed circle rendering.
    - Bug fix in G4PhysicalVolumeModel for replicas.


Notes: 

  o  Geant4 2.0 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 2.0 are expected to be published as
usual within three weeks from the release date.


Contents
--------

  1. Supported and Tested Platforms
  2. LHC++ and CLHEP 1.5
  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, C++ 4.2 patch 104631-04.
  o HP 10.20, aCC C++ B3910B A.01.23
  o Linux 2.2.12-20, gcc C++ egcs-2.91.66 (egcs 1.1.2).
      This configuration was tested with the RedHat 6.1 distribution, but
      versions of Geant4 have also been compiled successfully on Debian
      and Suse distributions.

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

  o DEC V4.0, cxx C++ V6.1-027.
  o SUN Solaris 5.6, C++ 5.0 patches 107357-07, 107311-09.

Platforms configured but not yet tested (a patch will follow, if needed):

  o NT 4.0 with Service Pack 4 and Cygnus Tools b20 with:
      Visual C++ 6.0 Service Pack 2

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. LHC++ and CLHEP 1.5
----------------------

Geant4 2.0 requires the installation of CLHEP 1.5. 

See CLHEP 1.5 (http://cern.ch/clhep/INSTALLATION/clhep.html).

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 those compilers (for example, DEC).
Note that the installation of the "Hist" package in CLHEP for histogramming
is now disabled by default. If you wish to install CLHEP with the "Hist"
package, you need to edit the CLHEP installation scripts and add the
corresponding entry.

Geant4 2.0 coworks with LHC++ 2.0.0 and components included therein:
  Objectivity 5.2.1 
  ObjectSpace 2.1
  HepODBMS 0.3.1.3 
  CLHEP 1.5.0.0
 
3. The Standard Template Library
--------------------------------

The following versions of STL have been tested:

   ObjectSpace STL on
          DEC, HP and SUN.

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

   "Native" STL on: Linux, HP, DEC and SUN.

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:    either ObjectSpace or native STL can be 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.0 only).
  o Linux: native STL is required (non ISO/ANSI setup).
  o NT:    Native STL and ISO/ANSI setup required.

In the interest of stability, a significant part of the code in Geant4 2.0
still makes use of the "STL Interface" wrapper classes, used for allowing the
migration from Rogue Wave Tools.h++ container library.  For these the emphasis
has remained on correct behaviour, rather than performance.


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

- Platforms

  Persistency in Geant4 2.0 release has been tested on the following
  platforms/software versions:

  G4SYSTEM       OS        C++ compiler   HepODBMS   Objectivity
  ---------  -----------   ------------   ---------  -----------
   SUN-CC    SunOS 5.6      CC 4.2         0.3.1.4      5.2.1
  Linux-g++  Linux  RH6.1   egcs 1.1.2     0.3.1.1      5.2.1

- Known Problems

  There are many 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.
  
  For the detail of the warning messages, please refer to the release
  note of Geant4 1.0.


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.
      
  o SUN Solaris 5.6, C++ 5.0 patches 107357-07, 107311-09.

      Due to a compiler bug, some code in Geant4 cannot be compiled in
      optimised mode, patches are available from SUN (107357-09, 107311-10)
      which are claimed to fix this problem, we have not been able to test
      them yet. Tests have been performed only by using the debuggable
      version of the libraries.


6. Known Run-Time Problems and Limitations
------------------------------------------

- In the "high energy" hadronic model, a problem of energy non conservation
  has been observed. A fix for it is currently under test and will be
  available soon in a public patch.
- In multiple scattering, the nuclear size correction maybe not well adapted
  for electrons. A fix will come soon.
- The parametrisation of the total cross section for electron bremsstrahlung
  will be reviewed in order to allow generation of gamma below 10 keV.


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. 
