Geant4 3.0 Release Notes ------------------------ 15th December 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 Analysis -------- - New module for analysis/histogramming management and concrete drivers interfaces through AIDA: JAS, Lizard, OpenScientist. o Configuration: ------------- - Added unsupported configuration WIN32-g++ for Windows/NT/9X and Cygwin with g++ compiler. - Introduced changes to handle analysis module. - Incorporated building of shared libraries into .gmk files (NOTE: tests on shared libraries currently perfomed only on Linux-g++ and SUN-CC platforms) o Introduced new variables steering the building of shared/static libraries (static still default): G4LIB_BUILD_SHARED and G4LIB_BUILD_STATIC. o Introduced new variable (G4LIB_USE_GRANULAR) to force using of granular libraries. - Added rules for "includes" gmake target, to copy all header files in a single location specified by $G4INCLUDE path. - Introduced SUN-CC5 G4SYSTEM architecture for SUN CC 5.1 compiler. o Event: ----- - Added new Set methods to G4PrimaryVertex and G4PrimaryParticle. - Introduced ParticleGun for Ions and weights for primary vertex and particle: o G4ParticleGun: added Set/GetParticleCharge methods for ions. o G4ParticleGunMessenger: added new command of /gun/ion; modified command of /gun/particle. o G4PrimaryParticle: add Set/GetCharge methods, added weight. o G4PrimaryVertex: added weight. o G4PrimaryTransformer: use G4PrimaryParticle::GetCharge to give dynamic charge in G4DynamicParticle; set weight of G4Track. - Introduced G4GeneralParticleSource and related classes. G4GeneralParticleSource is an alternative primary source generator to G4ParticleGun. It has all the functions of G4ParticleGun plus many options for specifying the primary event particle and vertex. o Electromagnetic Processes (Low-energy): -------------------------------------- - Bug fix to G4hLowEnergyIonisation, relevant for particles with absolute charge value greater than 1. - Bug fix on electron energy loss fluctuations. - New features on antiproton ionisation, extending the model for application to generic materials. - Modifications in hadron classes (renaming of classes). - Bug fix related to the charge dependence of ion fluctuations. - Fixes to G4LowEnergyUtilities to replace the obsolete HepString with G4String. - Bug fixes for problems found on setting cuts. - Bug fix for nuclear stopping table name, improvements in code quality and added comments for the Software Reference Manual. o Electromagnetic Processes (Standard): ------------------------------------ - G4eBremsstrahlung : new cross section and energy-loss parametrisation. - Update to G4VhEnergyLoss.cc, G4VhEnergyLoss.hh, G4hIonisation.cc in order to simulate energy losses of ions; correction to cross section for particles with spin 1. - Removed class G4ionIonisation. - Fix in G4VhEnergyLoss and G4ionIonisation in AlongStepDoIt for particles with Charge^2 > 1. - Stopped very low energy photons in photo electric effect. - Moved ElossMessenger to G4VEnergyLoss. - Bug fix in G4Cerenkov and G4Scintillation: corrected usage of the 'step length' to position the origins of secondaries. - Corrections on Polarized Compton: o Sampling of Phi o Depolarization probability - G4IeBremsstrahlung: o new cross section/en.loss parametrisation, LPM flag. o corrections in the LPM implementation. - Changed signature in GetLossWithFluct. - G4EnergyLossMessenger: created subdirectory /process/eLoss. Added class description for Software Reference Manual. - EnergyLossTable: use "const G4Material*" where required. - Introduced correction to G4Cerenkov to fix a problem when an optical medium has refraction indices all equal to 1. o General Processes, Parameterisation, Decay, Optical: --------------------------------------------------- - Bug fix in G4Decay to avoid direct modification of G4Track by the Decay process. - Fixed bugs in G4ProcTblElement::operator= - Removed destruction of processes in G4ProcessTable destructor. - Implemented full STL migration in G4ProcessVector. - Added thePILfactor and GPIL methods in G4VProcess. - Added Store/RetrievePhysicsTable() methods. o Geometry: -------- QA code cleanup. Cleanup warnings issued by "-Wall -ansi -pedantic" g++ compiler options. - Boolean solids: o G4SubtractionSolid.cc: relaxed behavior in SurfaceNormal(p), where it is now allowed for a point to be inside the solid. A message is thrown to cerr instead of a G4Exception. o Added new set methods for matrix/vectors to G4DisplacedSolid: SetTransform(G4AffineTransform&), SetDirectTransform(G4AffineTransform&), SetFrameRotation(const G4RotationMatrix&), SetFrameTranslation(const G4ThreeVector&), SetObjectRotation(const G4RotationMatrix&), SetObjectTranslation(const G4ThreeVector&). - BREPS solids: o Fix in G4Ellipse::Project() for computation of u as function of atan2(). o Changed return value to be "const" pointer to functions: - G4BREPSolid::GetPlace() - G4BREPSolid::GetBBox() o G4Assembly: fix in destructor, added call to clearAndDestroy(). o G4BREPSolid: changed method NumberOfFaces() to GetNumberOfFaces(). o G4Curve: fixed obsolete workaround for XlC compiler. o G4OsloMatrix: changed internal class "Matrix" to "G4PointMatrix" and updated classes making use of it. o G4ThreeMat:removed unused overloaded operators =, +, -, +=, -=, *. - CSG solids o Fix to G4Tubs and G4Cons in DistanceToIn/DistanceToOut: + fixes to DistanceToOut(p,v,...) to make roots of quadratic equations more stable. + added check against negative distance returned. o Fixes to G4Cons: + corrected condition on conical surface to consider a real projection of the conical surface thickness on XY plane (0.5*kCarTolerance*secRMin instead of 0.5*kCarTolerance), when dealing with cons with large opening angle. + fix in constructor to check if one of the Rmin different than 0, to avoid degenerated cones. o G4Torus: introduced Newton-based numerical method for computing roots of equations in DistanceToIn() and DistanceToOut(). o Bug fixed in G4Tubs::Inside(p) for analysis of phi positioning when on +-fDz surface. o Fix in G4Tubs::DistanceToOut(p,v,...): initialised sr and sphi to kInfinity and re-introduced additional condition on check for Rmin intersection (t2 >= 0). - Specific solids: o Fix in G4IntersectingCone.cc: the check for a zero radical has been adjusted to be less sensitive to round off error in LineHitsCone1(), LineHitsCone2(). - STEP o dirobj.h: protected from missing definition of MAXNAMLEN, S_IFMT and S_IFDIR originally defined in /usr/include/sys/stat.h. - STEPinterface o Added GetInstanceManager() method to G4GeometryCreator. o Changed return value to "const char*" to method Name() and made post-const in all creator classes. o Fix in G4Axis2Placement3dCreator::CreateSTEPGeometry(void*). - Magnetic Field o Fix in G4FieldManager: added check on existence of allocated fChordFinder in CreateChordFinder(G4MagneticField*) method. o Changed return value to be "const" pointer to functions: + G4EquationOfMotion::GetFieldObj() + G4FieldManager::GetDetectorField() + G4MagIntegratorDriver::GetStepper() o Fixed and corrected signature to G4MagIntegratorDriver::SetHmin(). - Management o Fixed bug in destructor of G4SolidStore. Memory corruption at application exit was occuring when Boolean solids were involved. o Fix in G4VSolid::CalculateClippedPoligonExtent(): removed assumption that pMinngamma inelastic channel o Added recoil production to several inelastic channels o Added protections in cases interpolations between expansions in terms of legendre polynomials lead to non-physical cross-section integrals. - radiative_decay o Fix to const-ness of G4DynamicParticle to co-work with latest changes in 'track' module. o Code correction in integration of Fermi beta functions. - diffractive_string o Updated sampling of impact parameter for re-use. - kinetic_model o Fixed a memory leak o Added protection in case to pre-compound phase was registered - management(gen) o Added impact parameter sampling possibility to G4V3DNucleus. - quark_gluon_string o Fixed memory leak in G4SPBaryon and G4SPBaryonTable o Introduced improved of low energy cut-off for string creation o Updated sampling of impact parameter for re-use - string_fragmentation o Design iteration to allow for use of quark molecular dynamics. - util o Updated G4Parton to allow for use of quark molecular dynamics. o Bug-fix in Lorentz boost in G4Fancy3DNucleus o Added protection of G4Fragment against negative excitation energies o Fixed memory leaks in G4KinetiTrack - pre_equilibrium o Design iteration o Update of barrier penetration factors - string_common o Design iteration to allow for usage of quark molecular dynamics. 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: ---------- - Modified G4UIterminal, G4VUIshell, G4UIcsh and G4UItcsh to display the break status as a prompt characters. - Minor fixes in G4VInteractorManager and G4VUIShell. o Materials: --------- - Fixed initialization of pointers in G4SandiaTable constructor and corrected deletion of fPhotoAbsorptionCof in destructor. o Parameterisations ----------------- - New top category for specific parameterisation models: G4FoamXrayTRmodel, G4GamDistrXrayTRmodel, G4IrregularXrayTRmodel, G4PAIclusterModel, G4PhotoClusterModel, G4PlateIrrGasXrayTRmodel, G4RegularXrayTRmodel, G4VClusterModel, G4VXrayTRmodel. o Particles: --------- - Added const to G4DynamicParticle::GetPreAssignedDecayProducts. - Added method G4IonTable::GetElementNumber. - Added neutron life time. - Fixed stable flag for G4PionMinus. o Run and Intercoms: ----------------- - Modified G4RunManager and G4RunMessenger: eliminated G4StateManager::Pause(). - Made G4UImanager state dependent. - Added Retrieve/StorePhysicsTable() and related methods in G4VUserPhysicsList and modified BuildPhysicsTable() method. - Added store/retreivePhysicsTable command in G4UserPhysicsListMessenger. - Moved default place for storing random number status out of main directory. - Added G4VModularPhysicsList and G4VPhysicsConstructor to modularize UserPhysicsList. - Fixed bug in G4VUserPhysicsList::StorePhysicsTable(). o Tracking & Track: ---------------- - Added protection when PiMinusAbsorptionAtRest and Decay processes are deactivated. - Bug fixes in copy constructor of G4ParticleChange. - Added "const" to G4DynamicParticle pointer of returned value of G4Track::GetDynamicParticle o Visualization: ------------- - Fixed bug in /vis/lights/direction to not refresh view. - G4PhysicalVolumeModel: added protection against volumes without material. - Removed /vis/viewer/update from compound commands /vis/drawVolume and /vis/specify. o G4toG4 Tool: ----------- - Moved tests clGeometry and cltog4 from source/g3tog4/test to examples/extended/g3tog4. Default build mechanism is now used. - Bug-fix in destructor for G3RotTable. - Added handling of ELTU (Elliptical Tube) solid. - Fixed initialisation of pDPhi for CONS in G3toG4MakeSolid.cc. - G4PhysicalVolumeModel: added protection against volumes without material. - Added protection against multiple positiong of the same physical volume and added methods ClearG3PosCopy(G4int) and ClearDivision() in G3VolTableEntry . - Removed useless G3toG4Debug global method and file. Replaced verbosity by G3G4DEBUG flag. - Removed obsolete class/files G3CalcParams[.hh.cc]. - Examples: -------- o New "advanced" examples for specific applications: xray_telescope, brachyterapy and gammaray_telescope. Notes: o Geant4 3.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 3.0 are expected to be published as usual within three weeks from the release date. Contents -------- 1. Supported and Tested Platforms 2. ANAPHE and CLHEP 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/5.7, C++ 4.2 Patch 104631-04, C++ 5.1 Patch 109490-01. 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. o NT 4.0 with Service Pack 4 and Cygnus Tools b20 with: Visual C++ 6.0 Service Pack 2 Platforms also tested but giving rise to some problems - see below: o DEC V4.0, cxx C++ V6.1-027. 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. ANAPHE and CLHEP ------------------- Geant4 3.0 requires the installation of CLHEP. See CLHEP (http://cern.ch/clhep/INSTALLATION/clhep.html). Tests have been performed with CLHEP 1.6.0.0. 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 specific compilers (for example, DEC). Geant4 3.0 coworks with ANAPHE 3.2.0 and components included therein: Objectivity 5.2.1 ObjectSpace 2.1 HepODBMS 0.3.1.4 CLHEP 1.6.0.0 For more information about ANAPHE see: http://cern.ch/anaphe 3. The Standard Template Library -------------------------------- The following versions of STL have been tested: ObjectSpace STL on DEC, HP and SUN (CC 4.2). See ObjectSpace (http://www.objectspace.com). "Native" STL on: Windows/NT, Linux, HP, DEC and SUN (CC 5.1). 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.1 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, part of the code in Geant4 3.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 -------------- Platform -------- Persistency in Geant4 3.0 release is tested on the following platforms: G4SYSTEM OS C++ compiler HepODBMS Objectivity --------- ----------- ------------ --------- ----------- SUN-CC SunOS 5.6 CC 4.2 0.3.1.4 5.2.1 SUN-CC5 SunOS 5.7 CC 6.0 0.3.2.3 (*) 6.0 (*) Linux-g++ RedHat 6.1 egcs-2.91.66 0.3.1.4 5.2.1 (*) HepODBMS header files must be prepared with "ooddlx -noline" option. See below. Known Problems -------------- - There are several 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. - A warning message "Could not find naming root directory" appears at runtime of the persistency examples. It is generaged by HepDbApplication in HepODBMS. It can be ignored. - On Solaris7 (SUN-CC5), persistent header files has to be generated by ooddlx with "-noline" option to work around a bug in C++ compiler. This workaround applies not only to Geant4 Persistency category but also to HepODBMS, and the user defined ddl files as well. This option removes the "#line" directive of the file name and the line number of the original ddl file. As a consequences, C++ compiler no longer "tell" the correct file name and the line number of the ddl file if compiler error occurs. Try to identify the compiler error by first looking into the header file generated by ooddlx, and then locate the source of the problem by looking into the ddl file. A patch to the compiler is expected from Sun. 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. 6. Known Run-Time Problems and Limitations ------------------------------------------ For a complete list of outstanding run-time problems and to submit any problem you may find running this version of Geant4, please refer to the Geant4 Problem Reporting System, available on the Web at this address: http://cern.ch/geant4/problemreport 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.