
                 Geant4 9.2 - patch-02 Release Notes
                 -----------------------------------

                                                            28 August 2009

List of fixes included in this public patch since the public release 9.2.p01:

  o Configuration:
    -------------
    + Configure script: 
      o Rewritten check on make/gmake on WIN32-VC systems to avoid problems
        with cygwin and Matlab.
      o Added check to build Qt driver only when Qt UI module is built;
        reordered moc checks and added cross-check on moc version.
        Added safety reset of OpenGL QT build and use variables.
      o Commented out echo compatibility warning.
        Addresses problem report #1067.
    + Corrections in analysis.gmk for AIDA setup on Windows.
    + Improved non-standard setup for Qt on Linux, Mac and Windows.
    + Removed "-lcxa -lunwind" LOADLIBS addition in Linux-icc.gmk,
      no longer necessary since icc version 11.0.083.
    + Added -arch_multiple option to LDFLAGS in Darwin-g++.gmk to force more
      diagnostics for wrong architecture errors at link stage.
    + binmake.gmk: moved definition of TARGOBJEXT to place not dependent
      on G4EXLIB, such that the extension is defined when no lib is present
      (change required for upgrading exercisers in testing).

  o Digits_Hits:
    -----------
    + Replaced usage of non-Standard calls to sprintf() with ostringstream,
      to fix compilation errors reported by gcc-4.4.0 compiler.

  o Environments:
    ------------
    + G4Py: updated configuration scripts and some minor fixes.

  o Event:
    -----
    + Minor changes to G4GeneralParticleSourceMessenger to now use full range
      of predefined units for length, energy and angle.
    + Fixed gcc-4.4.0 compilation warning message for non-initialised variable
      in G4SPSEneDistribution.

  o Geometry:
    --------
    + magnetic_field:
      o Minor enhancement in G4ChordFinder::ApproxCurvePointS() in order to
        speedup Brent locator.
      o Added 3rd term of BMT equation (Spin x Beta x Efield) to
        G4EqEMFieldWithSpin, as reported in the Emfield Hypernews Forum
        posting #155.
      o Moved renormalization of spin from G4EqEMFieldWithSpin and
        G4Mag_SpinEqRhs to G4ClassicalRK4 and G4SimpleHeum.
      o Added Spin propagation errors to the criteria for 'OneGoodStep' in
        G4MagIntegratorDriver; not added it yet to the decision logic.
      o Some code cleanup and formatting.
    + management:
      o Added explicit initialisation of min/max extent in method
        BuildReplicaVoxels() in G4SmartVoxelHeader.
      o Adopt 'const' references for strings as arguments/return-values in
        G4LogicalSurface. Some minor cleanup...
    + navigation:
      o Fix in G4Navigator::ComputeStep() for the computation of rotation of
        the 'LocalExitNormal' in cases when DistanceToOut() returns non-valid
        normal for optical photons in rotated solids.
        Addresses problem report #1059.
      o Fix in G4PathFinder: a geometry is at a boundary if its step is within
        tolerance of the minimum step for any defined geometry.
      o Enhancement to the 'FB_intersects' algorithm in order to speedup Brent
        locator.
      o Fix in the usage of the geometrical tolerance in G4VIntersectionLocator
        in method AdjustementOfFoundIntersection().
      o Fix in G4PropagatorInField::SetNavigator() to forward new navigator to
        G4VIntersectionLocator.
      o Added method BuildContainerSolid() taking a solid as argument to
        G4PhantomParameterisation and added protection to GetMaterialIndex()
        for zero index.
    + solids/CSG:
      o Introduced to DistanceToIn(p,v) splitting of the distance for point
        very far from intersection area and big difference between solid
        dimensions and distance to it; resolves issue observed on 64 bits
        systems. Affected solids: G4Tubs, G4Cons, G4Sphere, G4Orb.
        Addresses problem report #1022.
    + solids/specific:
      o G4Ellipsoid:
        - Fixes in Inside(p) and in DistanceToIn(p,v) for points
          located on the curved surface within tolerance. Final fix for issue
          reported in problem report #1050 and concerning warnings reported by
          grid_test.
        - Introduced to DistanceToIn(p,v) splitting of the distance for
          point very far from intersection area and big difference between
          solid dimensions and distance to it; resolves issue observed on
          64 bits problem. Also addressing problem report #1022.
        - Fix to DistanceToIn(p,v) in the calculation of the roots of
          the quadratic equation and in DistanceToOut(p,v) in the calculation
          of the normal on cut surfaces. Final fix for problem report #1022.
        - Adopt pre-computed half-tolerance values for optimisation.
      o G4PolyconeSide: added protection in method Normal().
        Addressing problem report #1073.
      o Corrected typo in base implementation of GetSurfaceArea() in
        G4VCSGfaceted, which was erroneously returning cubic volume estimation.
        Addresses problem report #1062.
      o Relaxed error in G4TessellatedSolid::Inside(p) to warning,
        for excess of max trials and anomalous conditions in distance
        calculation. Added more printout information when error condition is
        detected.
    + volumes:
      o Get rid of unnecessary call to Reset() in G4NavigationHistory
        destructor.
      o Some code formatting.

  o Global:
    ------
    + Some improvements to G4String and G4SubString implementation of
      operators and comparison stub functions, to reduce generation of
      temporaries. Removed obsolete static hash(s) method in G4String.
    + Changed date for patch-02 to release 9.2.

  o Particles:
    ---------
    + Ascertain that the absolute of the argument to boost is <1.0
      in G4MuonRadiativeDecayChannelWithSpin.

  o Standard Electromagnetic Processes:
    ----------------------------------
    + Muons: added protection against numerical problem due to negative
      value of transfered energy in G4MuPairProductionModel.

  o Hadronic Processes:
    ------------------
    + cross_sections:
      o G4IonsKoxCrossSection, G4IonsShenCrossSection, G4TripathiCrossSection,
        G4TripathiLightCrossSection: added protections against numerical
        exceptions. Added simple check that cross-section is positive and
        removed not optimal control in G4TripathiLightIonCrossSection class.
        Added default constructor and destructor to G4TripathiCrossSection.
      o G4GGNuclNuclCrossSection: updated Glauber-Gribov cross section for ions.
      o G4CrossSectionDataSetRegistry: fixes for better memory management.
    + models/neutron_hp:
      o Fixed bug in IC electron emissions for G4NeutronHPPhotonDist and
        G4NeutronHPInelasticCompFS.
    + models/parton_string:
      o Fix in G4SPBaryon for anti-baryon: a diquark & quark was given instead
        of anti-diquark & antiquark; note the reverse order, too.
        Fixes problems with incident anti-baryons, e.g. anti-proton,
        manifesting in problems with forming hadrons.
      o Changed pt sampling in G4LundStringFragmentation to avoid near endless
        loop; this should improve overall performance slightly.
        Addresses problem report #1066. Affected G4VLongitudinalStringDecay,
        where SampleQuarkPt() is implemented; added new optional argument of
        max Pt to SampleQuarkPt().
      o Modifications in G4GammaParticipants and G4QGSParticipants for
        applying QGSC from zero energy.
    + models/qmd:
      o Fixed bug in gamma (mass zero) participants in G4QMDCollision.
      o Changed object data member to pointer in G4QMDReaction.
    + models/rpg:
      o Removed global variables (pointers to static particle definitions) in
        G4RPGInelastic and replaced with local array. Fixing issues of wrong
        order for static initialization.
    + processes:
      o Fix to address problem report #1056: cross section data set now are
        created dynamically in G4PhotoNuclearProcess, G4ElectronNuclearProcess
        and G4PositronNuclearProcess.
      o Moved inline constructor and destructors to source in class
        G4PositronNuclearProcess.

  o Generic Processes:
    -----------------
    + Cuts:
      o Added missing implementation of GetParticleType() in
        G4VRangeToEnergyConverter.
      o Replaced usage of std::abs() with std::fabs() where appropriate.
    + Optical:
      o Fix in G4OpBoundaryProcess for complex index of refraction: resample
        the reflectivity every time for DielectricMetal, and do not re-calculate
        normal to facet; also fixed possible infinite loop by resetting iTE and
        iTM inside GetReflectivity().
      o Added exception for cases where invalid normal is returned;
        following problem report #1060.

  o Persistency:
    -----------
    + gdml:
      o Defined missing copy constructor and operator=() to G4GDMLMatrix
        internal class, to avoid cases of memory corruption when handling
        matrices.
      o Correction in materials and solids tags for allowing parsing of
        definitions within the tag scope; possibility foreseen by the schema.
      o Correction in G4GDMLWriteSolids::BooleanWrite() in order to handle
        cases of nested displaced solids given to both operands in a Boolean
        operation (ATLAS use case).
      o Renamed flag for maximum number of transformations applied to a solid
        and moved to G4GDMLWriteSolids base class.
      o First virtual layer for custom writer classes; added empty default
        constructor and virtual destructor to classes in new inheritance chain.
      o Restricted usage of loops only for placement of volumes. Now correctly
        handling most common use-case of multiple copies of the same
        volume/solid through loop statement. Addressing problem report #1063.

  o Physics Lists:
    -------------
    + Fix to address problem report #1056: all cross section data sets are
      created dynamically and no longer member of the class.
      Fix in G4HadronInelasticQBBC: cross sections are created dynamically
      not by value, fission only instantiated for HP.
    + Inline constructor and destructors are moved to source for classes:
      G4VNeutronBuilder, G4VPiKBuilder, G4VProtonBuilder, G4WarnPLStatus.

  o Visualization:
    -------------
    + HepRep: added inclusion of <cstdio> in DeflateOutputStreamBuffer
      header to resolve compilation errors reported by gcc-4.4.0.

  o Examples:
    --------
    + Removed unnecessary AIDA setup in GNUmakefiles wherever necessary.
    + advanced/air_shower:
      o Updated README file.
    + advanced/nanobeam:
      o Fixed compilation warnings on gcc-4.3 on SLC5.
    + advanced/radiation_monitor:
      o Added macros reproducing run results: new results with proton at
        254MeV, 150 Mev and 50 Mev of energy; new macros with Kapton material.
      o Changed limits of LENeutronInelastic for 0.1 GeV in
        RadmonPhysicsNeutronBertini and RadmonPhysicsNeutronBinary classes.
      o Fix for compilation error in RadmonTLabelledCollection.
    + advanced/xray_fluorescence:
      o Reviewed physics setup and analysis.
    + extended/analysis/AnaEx01:
      o Corrected GNUmakefile and some cleanup.
    + extended/field/field04:
      o Commented out timing on initial seed for reproducibility of results.
    + extended/persistency/gdml/G01:
      o Modified loop.gdml to restrict multiple placements within a loop.

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

                             Technical Notes
                             --------------- 

  o  This is a cumulative patch and can be applied on top of relese 9.2
     or 9.2.p01.
  o  Technical notes distributed for release 9.2 are also applicable and
     valid for this patch.

The code and rebuilt binary libraries for release 9.2 are available
through our "Download" Web page:
   http://cern.ch/geant4/support/download.shtml

Please refer to the Geant4 User Documentation:
   http://cern.ch/geant4/support/userdocuments.shtml
for further information about using Geant4.
