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.