
                 Geant4 10.1 - patch-02 Release Notes
                 ------------------------------------

                                                            19 June 2015

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

  o Configuration:
    -------------
    + CMake:
      o Added extensions to allow use of system CLHEP granular libraries.
        Provide new advanced option GEANT4_USE_SYSTEM_CLHEP_GRANULAR, which can
        be set to enable use of CLHEP granular libraries from the system; when
        activated, use new FindCLHEP interface to search for Geant4's required
        Export and document a new variable "Geant4_system_clhep_ISGRANULAR" that
        clients can query to check whether the system CLHEP was linked in granular
        mode. Support CLHEP granular library listing in '--libs' argument.
        Added CLHEP_ROOT_DIR to CMake cache, allowing it to be edited in the
        CMake curses/GUI.
      o Updated AppleClang version regex to properly parse LLVM version
        number in Xcode 6.3.
      o Corrected Qt5 settings for test applications.
      o Added '-no-gcc' compilation option for Intel-icc compiler.
    + GNUMake:
      o Updated CPPFLAGS for Linux-icc and WIN32-g++ configurations.

  o Analysis:
    --------
    + Updated to g4tools 1.17.2: changes for Windows (MinGW) to use '_MSC_VER'
      in place of 'WIN32' flag. Addressing problem report #1721.

  o Event:
    -----
    + Increased level of verbosity of /gps/verbose command.
      /gps/verbose now acts globally on all sources in case of multiple ones
      (no need to activate verbosity for each source).
      Protecting the command /gps/source/set in case of out-of-bound index.
      Addressing problem report #1744.
    + Clean up code and removed not needed thread-local data that 
      need to be shared for UI commands to work properly.
    + Fixes for Coverity defects.

  o Externals:
    ---------
    + CLHEP:
      o Fixed usage of std::abs() in RandGaussZiggurat.
      o Moved static methods handling static data in G4RandGauss from inline
        to source. Addressing problem report #1754.
      o Switch off warnings for deprecated calls to auto_ptr in Utility headers.
    + USolids:
      o Corrected string returned as type-ID by GetEntityType() to conform
        to shape kind in: UExtrudedSolid, UMultiUnion, UQuadrangularFacet,
        UTessellatedSolid, UTrap, UTriangularFacet and UVCSGfaceted.
      o Replaced Exception IDs in UUtils to avoid clashes with wild global
        extern functions in Root.
      o UVector3: made data private and defined accessors x(), y() and z().
        Made implementations operators +(), -(), *(), and /() inline.
        Adapted all classes to the change.
      o Fixed DistanceToOut(p) and Inside(p) in USphere for sphere cut in theta
        for point (0,0,0) and for cases when Start/End angle have not to be taken
        in account (STheta==0 || eTheta==pi).
      o Added method GetPointOnEdge() to UBox.
      o Fixed Coverity defect for unused variable quantity in UCons.
      o Some code cleanup and minor fixes...

  o Geometry:
    --------
    + divisions:
      o G4VDivisionParameterisation: avoid creation/deletion of rotation matrix
        for ChangeRotMatrix(). Addressing problem report #1743.
      o Fixed Coverity defect in G4ReplicatedSlice for uninitialised pointer.
    + management:
      o Added streaming operator <<() to G4AffineTransform.
      o Removed unused data-member in G4LogicalVolume, and fixed minor
        Coverity defect for unitialised member 'fBiasWeight' in constructor.
      o G4USolid: use accessors x(), y() and z() from UVector3, instead of
        directly accessing its data-members.
        Use scoped enum for EnumSide if c++11 enabled.
    + navigation:
      o Enabled ComputeStep() in navigation helper classes (Normal, Voxel,
        and Parameterised) to recognise invalid points outside the mother
        volume. Before it was not recognised, but used instead as a numeric
        value (kInfinity). In case it was kInfinity, this meant the volume
        could not be chosen, and the track never exited the volume. This
        invalid response now triggers an immediate exit from the volume
        and daughters do not need to be considered.
        Use return value of motherSolid DistanceToOut(p,v), each time
        that it is called. Correct 'invalid' answer ('kInfinity' or
        negative) to zero.
      o Improvements in G4PropagatorInField to enable identification of first
        and last step in a volume, when tracking in a field.
        Addressing old problem report #1032.
        Added new methods to report looping and stuck tracks and correction
        for roundoff issue.
      o NavigationLogger: added method for Reporting a point is outside the
        mother volume: CheckAndReportBadNormal(), CheckDaughterEntryPoint().
      o G4AuxiliaryNavigationServices: optimised to reuse dot product, rather
        than recomputing; added optional printout (protected by debug flag).
      o G4VIntersectionLocator: added PrintStatus() method with additional
        ostringstream argument.
      o Code cleanup and various minor fixes.
    + solids/Boolean:
      o G4UMultiUnion: use accessors x(), y() and z() from UVector3, instead
        of directly accessing its data-members.
    + solids/CSG:
      o Fixed calculation of Normal in G4Para for kPX and kMX sides in
        DistanceToOut(p,v) and ApproxSurfaceNormal(p).
        Addressing problem report #1736.
      o Fixed DistanceToOut(p) and Inside(p) in G4Sphere for sphere cut in theta
        for point (0,0,0) and for cases when Start/End angle have not to be taken
        in account (STheta==0 || eTheta==pi).
        Added corresponding test cases to unit test for testG4Sphere.
        Fix triggered by analysing setup provided in problem report #1702.
      o Use accessors x(), y() and z() from UVector3 in USolids wrappers, instead
        of directly accessing its data-members.
      o Fixed Coverity defect for unused variable quantity in G4Cons.
    + solids/specific:
      o Use accessors x(), y() and z() from UVector3 in USolids wrappers, instead
        of directly accessing its data-members.
    + volumes:
      o Simplified implementation in G4NavigationHistoryPool to make use of simple
        stack of free entries. Pre-allocate size of vectors and inlined GetLevels().
        Also addressing problem report #1730.

  o Generic Processes:
    -----------------
    + Transportation:
      o G4Transportation, G4CoupledTransportation: added ability to identify last
        step in volume for the case of propagation in field.
        Addresses old problem report #1032.

  o Global:
    ------
    + Fix in G4StatDouble to return RMS 0 instead of -1 in the case the number
      of entries is below 2 (fixes arithmetic exceptions in examples for run
      with 1 event only).
    + Fixed bug in G4CacheReference::Destroy(); modified behavior to identify
      internal inconsistencies and throw exception.
    + Added copy constructor and assignment operator to G4Cache.
      Addressing problem report #1739.
    + Corrected logic for use of TLS on clang compiler for the Random module.
    + Added guard against potential loop in G4RandomTools::G4LambertianRand().
    + Added "g/mole" Molar mass definition to G4UnitsTable.
    + Define G4THREADSLEEP(tick) macro in G4Threading.hh also for sequential
      builds.
    + Updated date and version for 10.1.p02.

  o Materials:
    ---------
    + G4NistManager: corrected printout of elements and materials.
      Addressing problem report #1747.

  o Persistency:
    -----------
    + GDML:
      o Added missing "dichroic" surface model for optical property,
        consistent with addition done since release 10.0.
      o Avoid use of standard evaluator for import of units; adopt G4UnitsTable
        instead, in order to avoid loss of precision due to unit's conversion.
      o Correction for optional stripping of world-volume.
      o Corrected parsing of shape type-ID for MultiUnion in G4GDMLWriteSolids.
      o Improved text in G4Exception for failed import of file in G4GDMLRead.
      o Fixed non-initialised boolean flag in G4GDMLRead, reported by Coverity.

  o Physics Lists:
    -------------
    + constructors/gamma_lepto_nuclear:
      o G4EmExtraPhysics, G4EmMessenger: clean up messenger and added new
        UI commands. Addresses problem report #1752.
      o Fixed Coverity defects.

  o Processes - Electromagnetic:
    ---------------------------
    + dna:
      o Fixed reproducibility of the chemistry module.
      o Fixed bug for "no reaction table found"; new class G4ITReaction.
      o Added Fe56 into G4DNARuddIonisationExtendedModel.
      o BornIonisation: corrected array cleaning.
      o ScreenRutherfordElastic: corrected retrieval of water density.
      o Added missing virtual GetValue() method in G4DNAChemistryManager.
      o Removed "virtual" keyword when accessing position in G4IT.
      o G4shared_ptr refers to std::shared_ptr when C++11 is activated.
      o Some code cleanup.
    + high-energy:
      o G4eeTo3PiModel: do not use default constructor for G4LorentzVector.
    + low-energy:
      o G4LivermorePhotoElectricModel: implemented protection to avoid rare
        precision lost in de-excitation.
      o G4EMDataSet: fixed Coverity defects.
    + standard:
      o G4WentzelVIModel: repeat check on safety for new steps.
        In SampleScattering optimized use of random engine.
      o G4UniversalFluctuation, G4KleinNishinaCompton, G4KleinNishinaModel:
        define local pointer to random engine.
      o G4WentzelOKandVIxSection: improved angular sampling.
      o G4KleinNishinaModel, G4WentzelOKandVIxSection: accurate initialisation
        of G4ThreeVectors and G4LorentzVector in constructors.
      o G4PAIModel, G4PAIModelData, G4PAIPhotModel, G4PAIPhotModelData: fixed
        initialisation of cuts to happen only in run-time methods; added copy
        of vector of G4MaterialCutsCouple from master to worker threads.
        Addresses problem report #1731.
    + utils:
      o G4VMultipleScattering, G4VMscModel, G4VEmAngularDistribution: accurate
        initialisation of G4ThreeVectors and G4LorentzVector in constructors.

  o Processes - Hadronic:
    --------------------
    + cross_sections:
      o G4ComponentGGHadronNucleusXsc: extended applicability for kaons down
        to 0.1*MeV.
    + models/binary_cascade:
      o Use const address as argument to typeid() in method
        G4BinaryCascade::DebugApplyCollisionFail(), fixing compilation
        warning on clang-3.6.
    + models/cascade:
      o G4PreCompoundDeexcitation: properly delete precompound products (i.e.
        G4ReactionProduct objects). Fixes issue of constant memory growth in
        the use of G4Allocator. Also addressing problem report #1735.
    + models/de_excitation:
      o G4NeutronRadCapture: added check on initial kinematics for all isotopes;
        proper initialisation of G4LorentzVector in class constructor, fixed
        Coverity reports.
    + models/parton_string:
      o G4FTFParticipants: added a new method to clean up the member vector;
        using the above new method in G4FTFModel::GetStrings() to release
        memory allocated and otherwise leaked; reduces observed memory growth
        in use of G4Allocator. Also addressing problem report #1735.
      o G4FTFModel: fixed bug in the method SamplingNucleonKinematics().
        Addressing problem report #1741.
        Fixed energy non-conservation in nucleus-nucleus interactions.
      o G4FTFParameters: fixed bug in nucleon-nucleon cross-section, and
        added protection against zero inelastic cross-section.
    + models/pre_equilibrium:
      o G4PreCompoundTransition: added protection against numerical problem
        due too high excitation energy; use G4Log and G4Exp instead of G4Pow;
        cleanup sampling of number of charged excitons.
      o Fixed Coverity defects and some code cleanup.
    + models/quasi_elastic:
      o Code cleanup: removed unneeded statics and thread-local variables.
    + models/theo_high_energy:
      o Updated according to new quasi-elastic code cleanup.

  o Track
    -----
    + Improved G4ParticleChangeForTransport by adding update for FirstStep
      in volume. Also addressing problem report #1715.

  o Examples:
    --------
    + Updated reference outputs.
    + extended/electromagnetic/TestEm8:
      o PhysicsList: fix in configuration of models per G4Region in MT mode.
        Addressing problem report #1731.
      o Run: added protection against numerical exception for run
        with 0 or 1 events

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

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

  o  This patch should be applied on top of release 10.1 or 10.1.p01.
  o  Technical notes distributed for release 10.1 are also applicable and
     valid for this patch.

The code and rebuilt binary libraries for release 10.1.p02 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.
