Geant4 9.2 - patch-03 Release Notes ----------------------------------- 29 January 2010 List of fixes included in this public patch since the public release 9.2.p02: o Configuration: ------------- + binmake.gmk: removed extra space characters in definition of TARGOBJEXT, fixing issue with target for main() not being rebuilt according to dependencies change. Addressing problem report #1098. + Darwin-g++.gmk: added paths to $QTHOME/include and $QTHOME/lib to setup for Qt4 configuration. + Added G4OPTDEBUG option for hybrid optimized-debug build also to Darwin-g++ and WIN32-g++ configurations. o Digits_Hits: ----------- + Corrected counting of flux and current passing through curved surfaces (affecting cylinder and sphere surface scorers). + Added missing virtual keyword for qualification of CheckROVolume() and FindROTouchable() methods in G4VReadOutGeometry. o Error_propagation: ----------------- + Corrected usage of G4ThreeVector constructor in class G4ErrorMagFieldLimitProces. 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 Bug fix in G4EqEMFieldWithSpin, following report on Hypernews EM-field forum #161. Courtesy of Hiromi Iinuma (KEK). + management: o Fixed implementation of G4LogicalVolume::TotalVolumeEntities() to become invariant to call sequence. o Clear possible excess capacity in node vectors in G4SmartVoxelHeader BuildNodes() method. May reduce excess memory allocated in optimisation in large detector setups, with slight time increase in initialisation for geometry voxelisation. o G4VTouchable: moved inline vitual methods, constructor and destructor to source, to avoid problem of memory alignment in allocation of derived objects. + navigation: o Refinements in G4PropagatorInField: + Improved handling of repeated small steps at boundaries which are due to geometry imprecision, navigation optimisation, or the details of the algorithm used for tracking in field. Added new member 'fZeroStepThreshold', to enable tuning of this existing threshold for identifying tiny or zero steps. A new value for this threshold 'fZeroStepThreshold' is a large multiple (10^4) of 'kCarTolerance'. Addresses a problem of tracks stuck at boundaries of volumes reported by ATLAS. The condition for identifying a tiny step is changed in order to avoid misidentifying small proposed physical steps as problem tiny steps. + Changed parameters which determine the size of the next trial step. This is used only when trying to recover from consecutive tiny/zero steps. The default decrease factor is now 0.25 (from 0.1); when the step size is comparable to the value of 'fZeroStepThreshold' a different decrease factor is used. The value given to the decrease factor was changed to 0.35 (from 0.25). + Added new method RefreshIntersectionLocator() to update the state of helper class. + Improved printing of diagnostics. o G4VIntersectionLocator: fixed problem in ReEstimateEndPoint() for very small steps. Corrected constructor to ensure that it initialises all data members. Labelled methods in header to make noticable those that must change attributes at every step. + solids/CSG: o G4Cons: fix to DistanceToIn(p,v), added a check on the direction in case of point on surface. Fixes a problem of stuck tracks observed in CMS, due to wrong reply from the solid for points on the inner radius surface base with direction along the imaginary extension of the cone. o G4Torus: fix in SolveNumericJT() in order to take in account the difference in the value of theta for different intervals, [0:pi] or [-pi:0], and for SPhi in [0:twopi] or [-twopi:0]. Addresses problem report #1086. o G4Orb: moved debug warning in DistanceToIn(p,v) within G4CSGDEBUG flag. + solids/specific: o G4Ellipsoid: refined fix in DistanceToIn(p,v) for points located on the curved surface, and correct treatment of geometrical tolerance. Addresses problem report #1076. o Avoid redundant assignment of value to 3-vector in G4PolyconeSide and in G4TwistTubsSide. + volumes: o Fix in G4PVParameterised::CheckOverlaps() to not modify daughter volume transformation matrix for application to points in the daughter's frame. Adopt Inverse() instead of Invert() in call to G4AffineTransform. Addresses problem report #1078. o Added missing implementation for composing G4AssemblyVolume constructor. o Use G4Allocator for dynamic allocation of G4TouchableHistory objects. Should reduce the number of direct calls to malloc and memory fragmentation. Measured an average improvement of ~5% in CPU speed with same memory footprint. Moved inline constructors to source to avoid problems of memory alignment in allocation. o Global: ------ + Changed date for patch-03 to release 9.2. o Standard Electromagnetic Processes: ---------------------------------- + Utils: o G4ionEffectiveCharge: added protection to minimal kinetic energy. o G4EmCorrections: fixed computation of correction to ion stopping powers. o G4VEnergyLossProcess, G4VEmProcess: added protection against negative cross section; fixed problem in retrieving physics tables from file. o Hadronic Processes: ------------------ + cross_sections: o G4CrossSectionDataSetRegistry: more accurate deletion of cross-sections. o G4TripathiLightCrossSection: re-enabled low energy check code. + management: o G4HadronicProcessStore: added protection to Clean() method. + models/abrasion: o Fixed problems of negative sqrt() and made code more robust to potential loop problems. + models/CHIPS: o Fix in G4QElasticCrossSection for memory corruption caused by wrong setting of limit for the tabular initialization in method GetPTables(). Courtesy of Z.Marshall (ATLAS). + models/coherent_elastic: o G4HadronElastic: use static pointer to G4VQCrossSection in order to guarantee unique version of CHIPS cross-section class. Removed printout in destructor. + models/management: o G4HadronicInteractionRegistry: more accurate deletion of models. + stopping: o G4PiMinusAbsorptionAtRest and G4KaonMinusAbsorptionAtRest: fixed usage of 3vector constructor. o Generic Processes: ----------------- + Cuts: o G4VRangeToEnergyConverter: modified implementation of method ConvertCutToKineticEnergy() to improve performance. Measured a factor 2 to 3 improvement in initialisation speed when building physics tables. Modified BuildRangeVector() where integration is perfomed in this method; extended for e+/e-. Changed 'TotBin' to be constant (i.e. same for all converters) and set to 100 (200 for previous versions). Added 'MaxEnergyCut' (10 GeV set in default). Added 'fRangeVectorStore' to ensure that range-vector is created only once for each material. Do not apply converter for neutron, anti-proton, and anti-neutron. o A new method ResetConverters() has been added to G4ProductionCutTable. This method allows to reduce the memory footprint by clearing temporary loss tables and range vectors used at initialization, if invoked when starting the first run of a session. o Persistency: ----------- + gdml: o Corrected handling of 'quantity' tag; added missing caching of evaluation. o Examples: -------- + extended/radioactivedecay/exrdm: o Fixed trivial compilation warning when compiled without G4ANALYSIS_USE. ---------------------------------------------------------------------------- Technical Notes --------------- o This is a cumulative patch and can be applied on top of release 9.2, 9.2.p01 or 9.2.p02. 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.