Geant4 11.1-beta-01 Release Notes --------------------------------- 30 June 2022 Migration Notes & Main New Features ----------------------------------- o Added ability to optionally check for overlaps in parallel geometries through the "/geometry/run/test" UI command. o Improved computation of surface area and cubic volume in specific solids. o Revised implementation of G4CoupledTransportation: now inheriting from G4Transportation and removed duplicated variables and methods. o Provided choice of the model of fluctuations with the default G4UrbanFluctuation, alternative G4UniversalFluctuation (more accurate for thin targets), and G4LossFluctuationDummy (no fluctuations); new UI command defines model of fluctuations for the full setup; inside user physics lists it is possible to configure different fluctuation models per G4Region. o In G4UrbanMscModel, moving safety computation before step limitation algorithms in order to save few instructions; should not affect results. o New G4TransportationWithMsc specialised tranportation process combined with multiple-scattering, enabled by default with G4EmStandardPhysics_option1. May be enabled for any EM physics via the new UI command. Added also possibility to enable internal stepping. o In EM processes, updated methods to access cross-sections at run time. o In G4EmStandardPhysics_option3, use options providing more accurate simulation without loss of CPU performance; significantly improving fanoCavity results. o Use G4LinhardSorensenIonModel for GenericIon in physics-lists for G4EmStandardPhysics_option3, G4EmStandardPhysics_option4, G4EmPenelopePhysics and G4EmLivermorePhysics. o G4EmStandardPhysics_option4: use Penelope ionisation model for e- below 100 keV. o Set EPICS2017 cross sections to be the default for Livermore gamma processes. o New utility class G4EmDNABuilder, providing instantiation of standard and DNA processes/models in physics lists. Made G4EmDNAPhysics the base class for DNA physics constructors. Optimised IRT-syn DNA model. o Added parameters in DNA including the chemical molecules and reaction list involved in the radiolysis. o In G4DNA, incorporated model based on RPWBA to transport protons at 100-300 MeV and updated data structure to improve performance of the mesoscopic model. o Added flush() method to the fast simulation models, allowing to process the input buffer of the fast simulation model before the end of an event; triggered inside the event loop of G4EventManager, when the stack is empty. o Added a new utility method to access a process via sub-type. o New integral method for hadronic processes. o Extended cross-sections for computation of light anti-nuclei on hydrogen. o In G4Evaporation and G4UnstableFragmentBreakUp, completed fix about production of unphysical fragments. o In hadronic de_excitation, added limitation (A < 30) on decay of unphysical fragment, allowing for removal of light unphysical states and providing improved isotope production for the spallation fragments. o Improved FTF fragmentation to better describe the production of strange mesons and baryons in proton-proton interactions, as measured by the NA61/SHINE Collaboration. o Added option to G4HadronicParameters to control the diffraction dissociation for nucleon projectile on target nucleus with baryon number greater than 10: by default, both projectile and target diffraction are switched off (but they are both active in the case of target nucleus with baryon number below or equal to 10; if instead the flag is set to "true", then both projectile and target diffraction are activated regardless of the target nucleus). o Added temporary check and protection in G4HadronicProcess against anomalous condition leading to rare crashes recently observed with neutronHP and fixed also rare reproducibility problems in particleHP. o Implemented Twinkling in visualization, i.e, the rhythmic variation of brightness of given touchables. o Introducing 'FALLBACK' visualisation drivers for TSGQt and VTKQt and new commands to facilitate the drawing of plots at the end of a run. o Retired "tasking" module and merged contents in "global" and "run" categories. o New meshing features in visualization. Allowing for multiple meshes in a single screen; relevant for special mesh rendering. Improved graphics representation. o Use standard install location for CMake installation scripts, now being installed in $CMAKE_INSTALL_PREFIX/lib/cmake/Geant4. o Added required configuration to be able to generate DEB/RPM packages with CPack. o Dataset environment variables are now optional in CMake builds. Consistently use G4FindDataDir() in place of std::getenv() in code for accessing data-sets. o Added support for Intel-icpx/icx compiler. o Preliminary configuration support for Qt5 and Qt6. o New set of extended examples, implementing different setups showing how to score particle fluences. o Updated tasking system to upstream PTL version 2.3.3. o Build option with VecGeom requires VecGeom-1.2.0 or higher. o Requires CLHEP-2.4.5.3 for external CLHEP installation. o New data sets: G4EMLOW-8.1, G4NDL-4.7. ---------------------------------------------------------------------------- Technical Notes --------------- o Tested platforms: + Linux, gcc-8.3.1. Tested on 64 bit architectures (Intel or AMD) with Linux CentOS8. Versions of Geant4 have also been compiled successfully on other Linux distributions, Ubuntu, Debian, Suse or other RedHat systems. + MacOS 12.4, Apple LLVM/clang-13.1.6 (Intel or Apple Silicon). + Windows/10 with Visual C++ 14.31 (Visual Studio 2022) o More verified configurations: + Linux, with gcc-9.3/10.3/11.2/12.1, clang-10/11. + Linux, with Intel-icc 2022.1, Intel-icx 2022.1. + MacOS 11.6 and 10.15, with Apple LLVM/clang-12. + Windows/10 with Visual C++ 14.29 (Visual Studio 2019) o External dependencies + CLHEP-2.4.5.3, suggested for external installation of the CLHEP library. + VecGeom-1.2.0, for optional use of the VecGeom geometry primitives. + PTL-2.3.3, for external installation of the PTL tasking library. o New data sets: + G4EMLOW-8.1, G4NDL-4.7. Please refer to the Geant4 User Documentation: http://cern.ch/geant4/support/user_documentation for further information about using Geant4. ---------------------------------------------------------------------------- List of features and fixes included in this Beta release since 11.0.p02: o Configuration: ------------- + CMake: o Added support for Intel-icpx/icx compiler and updated compilation flags for all Intel compilers. o Enable ToolsSG and backends based on use of external libraries (Qt, X11, Xm, Win32). Backends made non-mutally exclusive; removed GEANT4_USE_TOOLSSG public CMake option. o Avoid setting LD_LIBRARY_PATH configuration on MacOS; adding paths to DLL into PATH on Windows. o Corrected logic error in checking whether module is already composed. o Deprecated tags `geant4_define_module`, `geant4_global_library_target`; decouples the source code organisation and the module/library composition commands; implementation reduced to emitting a CMake warning message on what to replace with. o Updated CMake build scripts in all modules, by replacing `geant4_global_library_target` with direct file inclusion and call to `geant4_add_category` to define library build from source modules. o Reorganised DLL import/export flags for single-module categories. o Set default value of GEANT4_BUILD_BUILTIN_BACKTRACE to OFF. o Do not use CMAKE_VERBOSE_MAKEFILE when building tests. o Rationalized declaration and use of internal builds of required externals CLHEP, zlib, expat, PTL and tools libraries. o Support declaration and composition of header-only modules and libraries. o Adding geant4_module_sources command to enable appending of headers/sources to a module after creation. o Providing GEANT4_BUILD_ENABLE_ASSERTIONS option to enable assert() in all release build modes (Release, RelWithDebInfo, MinSizeRel). o Forward `CMAKE__FLAGS[_]` flags to `geant4_add_test` so that a consistent set is used through the project. o Removed retired "tasking" module and library from configuration files. o Removed deprecated functions in G4DeveloperAPI and fixed typo that prevented installation of headers. o Allow library composition to be overriden in developer builds. o Do not use "readlink -f" to support pre-Monterey macOS systems. o Adding -Og to GNU/Clang default debug flags. o Copy .clang-tidy file to build directory to assist run-clang-tidy reporting. o In G4ConfigurePkgConfigHelpers.cmake, geant4-config.in for geant4-config generation: adding new flag "--features" (add vtk and qt3d features); allow use of md5sun if openssl missing; canonicalise prefix path. o Added options --sh and --csh to geant4-config script. o In G4ConfigureGNUMakeHelpers.cmake for geant4.[c]sh, geant4.bat generation: allow full path source in zsh, sh; unset local variables at the end; introducing GEANT4_DATA_DIR, with all data-set paths relative to this. o Added commands for working with categories analagous to module commands. o Preliminary configuration support for Qt5 and Qt6. o Added required configuration to be able to generate DEB/RPM packages with CPack. o Use more standard install location for CMake files. o Remove version from default installation directories. o Rationalised interlinked PTL/TBB build options. o G4ConfigureGNUMakeHelpers.cmake (geant4.[c]sh, geant4.bat generation): use the environment variable GEANT4_DATA_DIR as top data directory; the environment variables for individual dataset commented in scripts. o Added source validation exception for G4FindDataDir generated header. o New data set G4EMLOW-8.1 and G4NDL-4.7 with new TermalScattering data. o Updated tag-IDs for 11.0-beta. + GNUMake: o Added Linux-icx.gmk configuration for Intel OneAPI DPC++ compiler. Updated compilation flags for Intel icc/icx compilers. o Enable -pthread only for MT builds in other configurations. o Retired "tasking" category and library from build. o Analysis: -------- + Added UI commands for visualization: '/analysis/hn|pn/getVector'. + Changed namespace for g4tools code from "tools" to "toolx" for externals. + Use geant4_category_modules in CMake script to optionally add G4hdf5 module to category. o Digits & Hits: ------------- + Canonicalise implementations of custom new() and delete() operators that use G4Allocator. Removed un-needed/duplicated checks on static allocator creation in member functions. o Event: ----- + Added call to G4GlobalFastSimulationManager::Flush() method in the event loop. + Canonicalise implementations of custom new() and delete() operators that use G4Allocator. o Externals: --------- + Rationalising externals builds to decouple them from the core module/category definitions. + CLHEP: o Synchronised with CLHEP-2.4.5.3. + g4tools: o Updated to g4tools 6.0.1: - Fixed compilation warnings on Intel compiler and Coverity defects. - Use thread-safe version of gl2ps-1.4.2. In gl2psPrintPostScriptPixmap(): pass greyscale, nbit in arguments to avoid a dead code issue; in gl2psPDFgroupListInit(), fixed issue for uninitialized pointer read; removed commented out code. - sg/text: corrections in update_sg() due to copy-paste error. - Moved g4tools code externals from "tools" to "toolx" module. Concerns code related to Qt, Windows, X11, Xt, OpenGL, hdf5, expat, mpi, zlib. o In toolx/X11/base_session, check in show_window() that the window is not already mapped. + ptl: o Updated to upstream PTL version v2.3.3: - New/improved support for initialization and finalization routines in ThreadPool. - Threading: fix in GetNumberOfPhysicalCpus(), to never return zero. - Fixed verbose message to cerr to be protected within verbosity level. - Fixes for C++20 compilation warnings and updates to build scripts. - Removed outdated TiMemory implementation. - Code formatting. o Minor fixes for macOS/Clang and use as a subproject. o Updated CMake install directory for PTL to match recent changes in default install directories in Geant4. o Use any existing value of PTL_SANITIZER_TYPE to set the cache value to prevent override. o Geometry: -------- + management: o Get rid of heap allocations in G4BoundingEnvelope. o G4ReflectedSolid: added GetCubicVolume(), GetSurfaceArea(). + navigation: o The "/geometry/run/test" UI command can now check for overlaps in parallel worlds if "/geometry/run/check_parallel" is set to 'true'. o G4Navigator: minor code improvements in ComputeSafety(), ComputeStep(), and LocateGlobalPointAndSetup(). o Added constant 'kMassNavigatorId' in G4TransportationManager and make use of it in G4SafetyHelper. + solids/Boolean: o G4DisplacedSolid: added GetCubicVolume(), GetSurfaceArea(). + solids/specific: o G4GenericTrap: implemented calculation of volume using analytical expression in GetCubicVolume(); in GetSurfaceArea(), improved calculation of the area of lateral faces; removed private function GetFaceCubicVolume(); private functions GetFaceSurfaceArea(), GetTwistedFaceSurfaceArea() replaced with private function GetLateralFaceArea(). o G4Ellipsoid: in LateralSurfaceArea(), enhanced calculation of the lateral surface area. o G4VTwistedFaceted, G4TwistedBox, G4TwistedTrd: optimised calculation of volume and surface area. o G4VTwistedFaceted: fCubicVolume, fSurfaceArea made protected; GetCubicVolume() and GetSurfaceArea() no longer inlined and moved to source. o G4TwistedTubs: implemented GetSurfaceArea() based on analytical expressions; added private functions GetLateralArea(), GetPhiCutArea(). o G4Hype: use analytical expression in GetCubicVolume() and GetSurfaceArea(). o G4VTwistedFaceted: use numerical evaluation of a single integral to calculate lateral face surface area. o G4ExtrudedSolid, G4UExtrudedSolid: added default values for parameters in the constructor with two z-sections. Added default constructor to ZSection. o Global: ------ + Define G4lrint as std::lrint; removed unused G4lint and G4rint. + Imported from "Tasking" module all core interfaces that only depend on PTL. + Corrected G4ErrorPropagatorData destructor. + Commented out debug printout in G4ThreadLocalSingleton constructor. + Make dataset environment variables optional in CMake builds. + G4FindDataDir: correction for windows runtime, G4MULTITHREADED flag. Use the environment variable GEANT4_DATA_DIR as top data dir. + Removed obsolete CMakeLists.txt script in "management" module. Declare "HEPGeometry" dependencies as INTERFACE as the module is header-only. Removed dependency on TBB which is not a direct dependency of the global category. + Changed date for release 11.1-beta. o Graphics Representations: ------------------------ + HepPolyhedron, G4Polyhedron: added new constructors taking vertices and faces; added derived classes HepPolyhedronTetMesh, G4PolyhedronTetMesh; added SetVertex(), SetFacet() functions and made SetReferences() and InvertFacets() public methods. Implemented JoinCoplanarFacets() function, move constructor and move assignment operator. + Implemented faster version of HepPolyhedronTetMesh. + Revised HepPolyhedronEllipsoid, fixed visibility of edges in case of cut ellipsoid. + G4Visible: added "user" data member 'fInfo' from G4VMarker, with access and operator<<() functions, intended to offer the user/developer a way of communicating information. + G4VisExtent: in Transform(), use 'const auto&' to avoid copying. o Intercoms --------- + Applied set of clang-tidy modernize, readability and performance fixes. o Interfaces ---------- + G4InteractorMessenger: prevent propagation of "/gui/*" commands to workers. + Fixed compilation warning on Intel compiler for shadowing data. + Preliminary build support for Qt5 and Qt6. + Use geant4_module_sources to add optional sources in CMake script. Added required G4VIS_USE_VTK_QT flag here instead of "Vtk" visualization module. Added dependency on Qt5 Widgets to "common" sub-module CMake script. o Materials --------- + G4MaterialPropertyVector, G4OpticalMaterialProperties: organise material property vectors in increasing order of energy. Modified from GitHub PR#42 (https://github.com/Geant4/geant4/pull/42). + Corrected G4UCNMicroRoughnessHelper destructor. + Applied set of clang-tidy modernize, readability and performance fixes. + G4NistManager, G4NistMaterialBuilder, G4NistElementBuilder: use G4AutoLock for code simplification. + Replaced getenv() calls for data variables with G4FindDataDir() in G4IonStoppingData, G4MicroElecMaterialStructure and G4OpticalSurface. + G4Material: fixed trivial Coverity warnings. o Parameterisations: ----------------- + Added flush() method to the fast simulation models. This method allows to process the input buffer of the fast simulation model before the end of an event. It is used when particles are grouped together before the processing. The 'flush' is triggered inside the event loop of G4EventManager, when the stack is empty. The fast simulation model may add secondaries to the stack, which will then be processed by Geant4. o Particles: --------- + In G4NuclieTable, replaced getenv() calls for data variables with G4FindDataDir(). + Minor code formatting. o Physics Lists: ------------- + Constructors: o Replaced getenv() calls for data variables with G4FindDataDir() in data readers. o electromagnetic: - G4EmModelActivator: fixed mechanism to define PAI model per region. - In G4EmStandardPhysics_option3, G4EmStandardPhysics_option4, G4EmPenelopePhysics, G4EmStandardPhysicsSS, and G4EmLivermorePhysics use G4LinhardSorensenIonModel for GenericIon. - Adding possibility to enable new G4TransportationWithMsc for multiple-scattering. Enabled by default in G4EmStandardPhysics_option1. - G4EmBuilder: enable internal stepping in G4TransportationWithMsc if requested. - G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4: adopt identical configuration for msc, muon, hadron, and ion physics. - G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4, G4EmStandardPhysics: selection of the model for energy loss fluctuation is included in ionisation processes according to the type defined in G4EmParameters. - G4EmStandardPhysics, G4EmStandardPhysics_option3, G4EmStandardPhysics_option4: use G4GammaGeneralProcess by default. - G4GammaGeneralProcess: implemented new method GetCreatorProcess(). - G4EmStandardPhysics_option4: use Penelope ionisation model for e- below 100 keV. - G4EmBuilder: use check on process sub-type, do not substitute G4CoupledTransportation with G4TransportationWithMsc. - G4EmDNABuilder: new utility class, which provides instantiation of standard and DNA processes/models; this reduces code duplication for DNA physics, energy intervals for DNA models are defined in one place. Added option2,3,4,6,8 configurations. Added extra utility methods to find or to build electron processes. - Made G4EmDNAPhysics the base class for DNA physics constructors. Added interface to G4EmDNABuilder. - G4EmDNABuilder, G4EmDNAPhysicsActivator: make consistent the configuration of DNA physics on top of standard physics. - Simplified code in G4EmDNAPhysics_option1, G4EmDNAPhysics_stationary, G4EmDNAPhysics_option5 and G4EmDNAPhysics_stationary_option4. - G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: use "fast" option. - G4EmDNAPhysics_option7, G4EmDNAPhysics_stationary_option6, G4EmDNAPhysics_option3, G4EmDNAPhysics_stationary_option2: simplified code. - Added G4DNABrownianTransportation, SBS and IRT_syn models in G4EmDNAChemistry_option3. o gamma_lepto_nuclear: - G4EmExtraPhysics, G4EmMessenger: use C++11 keywords; suppressed broadcasting of UI commands. o limiters: - G4SpecialCuts: added setting of process type 'fGeneral' and sub type. - G4MinEkineCuts: removed setting of process type 'fUserDefined'. - Moved G4UserSpecialCuts class from "transportation" module. + util: o G4PhysListUtil: added new utility method to access a process via sub-type, simplified methods to access hadron processes. Use dynamic_cast instead of static_cast. o Electromagnetic Processes: ------------------------- + Adjoint: o G4AdjointComptonModel, G4AdjointCSManager: use updated interface to cross-section from G4VEmProcess. o G4AdjointBremsstrahlungModel: use updated interface to G4EmModelManager. + DNA: o Added G4DNAPolyNucleotideReactionProcess and G4VDNAHitModel classes for DNA damage applications. o Prefer pointer to 'const G4Material' where possible. Removed useless 'const_cast' of G4VSensitiveDetector. o Optimised IRT-syn model, use reaction radius and reaction type from the reaction table. o Deleted G4VReactionType, G4DNAReactionTypeManager, G4DNAIRT_geometries, G4DNATotallyDiffusionControlled and G4DNAPartiallyDiffusionControlled. o G4ITTransportation: Make PrepareState() more function-like, expect semicolon. o G4DNAPolyNucleotideReactionProcess: moved 'PrepareState' and 'State' macros in source file; made PrepareState() more function-like, expect semicolon; moved variable 'pMoleculeA' under G4VERBOSE. o Added condition of water material for the OUTSIDE_OF_MOTHER_VOLUME warning in G4DNAMolecularDissociation::DecayIt(). o Added protection in G4DNACPA100IonisationModel for cumulative cross-section interpolation. o Added flag 'OctreeFinder' in IRT_syn's Initialize() method. o Added parameters including the chemical molecules and reaction list involved in the radiolysis. o Modified the macro in G4Molecule and G4ITType for linker problems on Windows. o Save local instances for recurrent access to particle definition in G4DNAMillerGreenExcitationModel, G4DNARuddIonisationExtendedModel and G4DNARuddIonisationModel. o Revised code to use G4Pow and G4Log consistently. o In G4DNARuddIonisationExtendedModel, do not include ions that are not defined in G4DNAGenericIonsManager. o Fix in G4KDTree algorithm. Addressing problem report #2235. Minor code cleanup. o Added G4VUserBrownianAction class, used in G4DNABrownianTransportation and in G4DNAMolecularDissociation. o Use int64_t for molecules width integer types. o Added 'fResetScavenger' data member in G4SchedulerMessenger. o Incorporation of model based on RPWBA to transport protons at 100-300 MeV. o Added G4DNARPWBAExcitationModel and G4DNARPWBAIonisationModel. o Updated data structure to improve performance of the mesoscopic model. o Change scavenging filter of the IRT beyond 1 us. o Use thread-local flag in G4VMoleculeCounter. o Replaced std::getenv() calls for data variables with G4FindDataDir() in data readers. o Corrected DNA ion definitions in G4DNARuddIonisationExtendedModel. o Added missing headers inclusions for self-consistency. + Low Energy: o G4LivermoreGammaConversionModel, G4LivermorePhotoElectricModel and G4LivermoreGammaConversion5DModel: set Spline interpolation for EPDL97. o Fixed use of potential uninitialised pointer in G4AtomicDeexcitation::GenerateParticles(..). o Replaced getenv() calls for data variables with G4FindDataDir() in data readers. o Removed Latin-1 characters from description in banners. + Muons: o G4MuIonisation: added selection of the model for energy loss fluctuations. Use G4MuBetheBloch model above 0.2 MeV. o G4MuBremsstrahlungModel: moved low energy limit from 1 GeV to 100 MeV. o G4MuPairProductionModel: moved low energy limit from 1 GeV to 850 MeV. Some code cleanup: formatting, removed extra space lines. + Polarisation: o Prefer pointer to 'const G4Material' where possible. + Standard: o G4UrbanMscModel: moving safety computation before step limitation algorithms in order to save few instructions; should not affect results. Added two extra class members. Improved code comments. Extended cache data with 5 variables for positrons; removed unused headers; minor saving of instructions. o G4eIonisation, G4hIonisation, G4ionIonisation: added selection of the model for energy loss fluctuations. o G4PairProductionRelModel, G4eBremsstrahlungRelModel, G4PairProductionRelModel and G4eBremsstrahlungRelModel: added inclusion of headers of G4Exp, G4Pow to to make translation unit self-consistent. o In G4WentzelVIRelModel, G4WentzelOKandVIxSection, G4LindhardSorensenIonModel and G4ICRU49NuclearStoppingModel, use G4AutoLock. o G4BetheHeitler5DModel: do not instantiate G4MuonPlus, G4MuonMinus inside the model to allow usage of this class in physics lists without muons. o G4eBremsstrahlung, G4hIonisation: improved initialisation. o G4eBremsstrahlungRelModel, G4eBremParametrizedModel: code cosmetics. o Run clang-tidy, use nullptr, default and auto keywords; removed unneeded nullptr checks when deleting. o Replaced getenv() calls for data variables with G4FindDataDir() in data readers. + Utils: o New G4TransportationWithMsc specialised tranportation process; added related flag to G4EmParameters. o G4EmConfigurator implemented model per region for G4TransportationWithMsc. Updated interfaces. o G4EmTableType: added 3d peak energy in the data structure needed for Bremsstrahlung. o G4VEnergyLossProcess: fill data structure for Bremsstrahlung type of cross-section only in the master thread; do not repeat in each thread; removed ineffective cache from run time computation of cross-section. o G4EmParametersMessenger: improved instantion order of UI directories; directories are created only in the master thread. o G4EmModelManager: updated interface to Initialise() method; removed obsolete method Update(). o G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering: use updated method of G4EmModelManager. o G4EmParametersMessenger: restored UI command "/process/em/integral". o G4VEmProcess: updated methods to access cross-section at run time; implemented new virtual method GetCrossSection(); removed unused methods. o G4EmCalculator: use updated method from G4VEmProcess. Fixed variable shadowing. o G4EmUtility: a new utility class. o G4VMultipleScattering: updated arguments for AddEmModel(..), SetEmModel(..), and EmModel(..) methods from G4VEmModel* to G4VMscModel*. o G4LowEnergyEmProcessSubType: added sub-type ID (66) for DNAScavenger process. o G4EmTableUtil: new utility to perform common computations at initialisation. o G4VEmModel, G4EmCalculator, G4EmConfigurator: use G4EmUtility. o G4VEmModel, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering and G4LossTableManager: use new utiity methods; updated sampling of random elements in compounds and random isotopes; code cleanup. o G4EmLowEParameters: change default photon database to EPICS2017. o G4VEmProcess, G4VEnergyLossProcess: for integral method, use master thread cross-section type and pointers directly; simplifying initialisation. o G4EmParameters: update flag to tri-state for enabling it. Added extra parameter: type of fluctuation model. o G4EmExtraParametersMessenger: fixed typo. Addressing problem report #2492. o G4VEnergyLossProcess: moved out common computations to G4EmTableUtil; use G4EmDataHandler and removed unused headers/methods. Fixed trivial Coverity warnings. o G4VEnergyLossProcess, G4EmDataHandler: improved StorePhysicsTable(..) method and debug printouts. o G4EmParametersMessenger: added extra UI command to define fluctuations model. o Code cleanup with clang-tidy: use default constructors; nullptr, auto and using keywords. + Xrays: o Code cleanup with clang-tidy: use default constructors; nullptr and auto keywords. o Generic Processes: ----------------- + Management: o G4VDiscreteProcess: added virtual method GetCrossSection() needed for integral approach both in hadronics and EM modules. Added virtual method MinPrimaryEnergy(..). o G4VProcess: introduced new virtual method GetCreatorProcess(). + Optical: o Prefer pointer to 'const G4Material' where possible. o Code cleanup with clang-tidy: use default constructors; auto keyword; remove 'void' function argument; don't check for nullptr before delete; use operator==() for string comparisons. + Parameterisation: o Added flush() method to the fast simulation models. This method allows to process the input buffer of the fast simulation model before the end of an event. It is used when particles are grouped together before the processing. The 'flush' is triggered inside the event loop of G4EventManager, when the stack is empty. The fast simulation model may add secondaries to the stack, which will then be processed by Geant4. + Solids State: o In G4LatticeReader, replaced getenv() calls for data variables with G4FindDataDir(). + Transportation: o Revised implementation of G4CoupledTransportation: now inheriting from G4Transportation and removed duplicated variables and methods; use new constant 'kMassNavigatorId' from G4TransportationManager. o G4CoupledTransportation: set flags from G4Transportation: replaced 'fFirstStepInAnyVolume' with 'fFirstStepInVolume'; replaced 'fAnyGeometryLimitedStep' with 'fGeometryLimitedStep'; removed wrong check in case of zero steps. o G4Transportation: removed wrong check in case of zero steps; set step status on volume boundary. Removed non-working check for any field. o Moved G4UserSpecialCuts to "physics_lists/constructors/limiters" module. o Removed useless 'const_cast' of G4VSensitiveDetector. o Hadronic Processes: ------------------ + Replaced getenv() calls for data variables with G4FindDataDir() in data readers. + cross_sections o G4CrossSectionDataStore, G4VCrossSectionDataSet: preparation for integral method; removed unused methods. + management o G4HadronicProcess: temporary check and protection against anomalous condition leading to rare crashes recently observed with neutronHP; when a secondary particle has a huge kinetic energy (i.e. higher than the max energy allowed - by default 100 TeV), throw a warning exception and neglect the particle concerned (i.e. corresponding G4Track object is not created). Propagate the information on parent resonance (in the FillResults() method, from G4HadSecondary to G4Track). o G4HadronicProcess: implemented integral method. o G4HadXSTypes, G4HadXSHelper: new helper classes. + models/binary_cascade o G4GeneratorPrecompoundInterface, G4BinaryCascade: propagate the information on parent resonance (in the ApplyYourself() method, from G4ReactionProduct to G4HadSecondary; in other methods, from G4KineticTrack to G4ReactionProduct). + models/cascade o Fixed wrong comparison between two arrays in findCrossSection(..) for G4CascadePPChannel, G4CascadeNPChanneland G4CascadeNNChannel. + models/de_excitation o G4Evaporation, G4UnstableFragmentBreakUp: completed fix about production of unphysical fragments; improved debug printout. Addressing problem report #2355. o G4EvaporationChannel, G4Evaporation: added limitation (A < 30) on decay of unphysical fragment, allowing for removal of light unphysical states and providing improved isotope production for the spallation fragments. o G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability, G4VCoulombBarrier, G4CoulombBarrier: use new method from G4Fragment. o G4VEvaporationChannel, G4EvaporationChannel, G4VEmissionProbability and G4EvaporationProbability: improved inverse cross-section parameterisation at threshold. o G4PhotonEvaporation: fixed situation when excited fragments are created with excitation energy not corresponding to level energies from G4LEVELGAMMADATA. Addressing problem report #2434. Also fixing event non-reproducibility for the case when radioactive decay is enabled on top of any physics list. Simplified handling of floating levels. For floating levels check if levels with the same energy can be used for sampling transitions; code clean-up. o G4EvaporationProbability: reduced usage of cache. o G4ExcitationHandler: use IsLongLived() flag from G4Fragment to decide if de-excitation of the fragment should be stopped. o G4VEmissionProbability: limit number of bins for numerical integration to 50. o G4VEmissionProbability: updated sampling of the emitted fragment energy needed. Addressing proble report #2443. Fixed sampling of tail of distribution; added numerical protections. More strong limit on accuracy of integrated probability; improved debug printout. o G4CoulombBarrier: tuned parameters. o G4LevelManger, G4NuclLevel: removed verbose printouts; code clean-up. o G4NuclearLevelData: use G4AutoLock. o Use G4BestUnit in G4DeexPrecoParameters::StreamInfo(). o Code cleanup. + models/em_dissociation o G4EMDissociation: updated according to G4Fragment modifications. + models/inclxx o G4INCLParticle, G4INCLEventInfo, G4INCLNucleus, G4INCLDeltaDecayChannel, G4INCLXXInterface: set and propagate the information on parent resonance. o G4INCLPiNElasticChannel: erase the information on parent resonance in the case of charge exchange. o G4INCLPiNToDeltaChannel, G4INCLPiNToOmegaChannel, G4INCLPiNToEtaChannel, G4INCLPiNToMultiPionsChannel, G4INCLNpiToLKpiChannel, G4INCLNpiToLK2piChannel, G4INCLNpiToNKKbChannel, G4INCLNpiToSK2piChannel, G4INCLNpiToSKpiChannel, G4INCLNpiToSKChannel, G4INCLNpiToLKChannel, G4INCLNpiToMissingStrangenessChannel: erase the information on parent resonance in inelastic channels (where the nucleon and pion initial-state objects are re-used for the final state). + models/lend o Fixed potential use of pointer after free in nf_utilities/nfu_realloc(..) function. + models/particle_hp o G4ParticleHPContAngularPar: added protections against evaluations of arrays at negative index (-1), fixing rare reproducibility problems and rare crashes that have been recently observed. o G4ParticleHPContEnergyAngular: fixed Coverity report. Expected no effect. o G4ParticleHPThermalScatteringNames: updated to use new ThermalScattering data in G4NDL-4.7. + models/parton_string o Allow control of diffraction for baryon number greater than 10 in G4FPFParameters. The option comes from G4HadronicParameters and the default behaviour remains the same (i.e. off). o Fixes to get isotropic distributions in annihilations at rest: in G4DiffractiveSplitableHadron, set proper parton index. In G4DiffractiveExcitation, in the CreateStrings() method, take into account that strings are created in G4FTFAnnihilation; by default, the method CreateStrings() creates a string from a wounded nucleon/hadron, but this is not needed in the case of annihilation. In G4FTFAnnihilation, removed splitting of hadron; fixed bugs in the calculations of kinematical properties; set quark momenta at string ends, to properly account for string order on rapidity. o G4HadronBuilder: added a new argument in constructor, and a new data member to the class. This is needed to set a special mixing of pseudo-scalar and vector mesons for s-sbar mesons. Introduced to describe phi-meson production in proton-proton interactions measured by NA61/SHINE. o G4VLongitudinalStringDecay: tuned the probability of pseudo-scalar meson production, to describe K*0 meson production in proton-proton interactions according to NA61/SHINE data. Introduced also a new parameter (probability of pseudo-scalar meson production in s-sbar mesons) to increase the phi-meson yield in proton-proton interactions. Fixed a bug in mixing eta_prime and phi mesons in the quark systems d-dbar, u-ubar and s-sbar. o G4LundStringFragmentation: introduced few changes for special treatment of the last string decay in the case of ss-q or ss-qq, ss-sbar sbar last string decay. This improves the yield of anti-Xi hyperons in proton-proton interactions according to the NA61/SHINE data. o G4VSplitableHadron: changed the method Splitting() from "protected" to "public" (needed to change the status of SplitableHadron in G4FTFAnnihilation, to get isotropic distributions in annihilations at rest). + models/radioactive_decay o Cosmetics in G4RadioactiveDecay::StreamInfo(). + models/theo_high_energy o G4TheoFSGenerator: propagate the information on parent resonance (in the ApplyYourself() method, from G4ReactionProduct to G4HadSecondary). + processes o Prefer pointer to 'const G4Material' where possible. + util o G4Fragment: added 'IsLongLived' flag and Get/Set methods needed for the de-excitation module; clean-up inline methods. Fixed computation of binding energy for hypernuclei; added a new private method to recompute ground state mass, excitation energy and to check consistency of input; left inlined only simple methods; added new methods SetZAandMomentum(..) and RecomputeGroundStateMass(); improved comments and warning messages. o G4HadronicParameters: added flags for switching on/off the integral approach for hadron elastic and, independently, inelastic processes; by default, it is enabled for inelastic. Moved G4Threading header to source. o Added option to G4HadronicParameters to control the diffraction dissociation for nucleon projectile on target nucleus with baryon number greater than 10: by default, both projectile and target diffraction are switched off (but they are both active in the case of target nucleus with baryon number below or equal to 10; if instead the flag is set to "true", then both projectile and target diffraction are activated regardless of the target nucleus). o G4KineticTrack, G4HadSecondary, G4ReactionProduct, G4DecayKineticTracks, G4DecayStrongResonances: propagate the information on parent resonance. o Run --- + Imported implementations of task-based interfaces/implementations from the "Tasking" module. See History.tasking file for History of tasking code. + Added new G4DNAScavenger in PhysicsListHelper for DNA processes. o Tasking ------- + Retired module. Contents merged in "global" and "Run" categories. o Track & Tracking ---------------- + In G4ParticleChangeForTransport, simplified UpdateStepForAlongStep(), assuming that transportation is always the first process. Apply proposed step length; further simplified UpdateStepForAlongStep() method, assuming that transportation is always the first process. + Only set step status of 'fGeomBoundary' when on volume boundary. + In G4SteppingManager, refactor and simplify processing of secondaries; use new virtual method GetCreatorProcess() when processing secondaries. Corrected 'ProcessDefinedStep' for AtRest case. Removed check on cuts and removed dependence of tracking from EM physics; real implementation of ApplyCut() is done within EM physics classes. Merged G4SteppingManager translation units. + G4Track: added methods to get/set information on (short-lived) parent resonance. o Visualization: ------------- + Updated build scripts and internal dependencies. + Preliminary build support for Qt5 and Qt6. + management: o Implemented Twinkling, i.e, the rhythmic variation of brightness of given touchables: in G4VVisCommand added Twinkle() method; exploit twinkling in UI commands in G4VisCommandsTouchable and G4VisCommandsViewer. o Re-worked and rationalised special mesh rendering utilities. The idea is that these are "standard" functions that are optional. They are optimised for OpenGL but they also work fine for ToolsSG and Qt3D. An attempt to draw a mesh with any other driver will result in a warning and only the container will be drawn. Other drivers will have to implement their own AddCompound(...G4Mesh...) function or choose to use the standard functions or some thereof. o Take advantage of recent developments in HepPolyhedron for rendering: conversion of tetrahedra to enclosing polyhedron removing inner surfaces; conversion of boxes to enclosing polyhedron removing inner surfaces. Also take advantage of developments in G4PhysicalVolumeModel: when a mesh has been found, an artificial node is created and added to the PVPath whose physical volume points to the parameterisation. It is used in G4VSceneHandler to transmit the material name so that, for example, the Qt viewer scene tree shows items by material. In the case of a medical phantom, the materials are usually given the name of the organ, so users can select on them. o G4VisCommandsViewer: "/vis/viewer/centreOn" and "centreAndZoomInOn": only fly and twinkle if 'KernelVisitElapsedTimeSeconds < 0.1'. It is not feasible for complex scenes; in that case go straight to requested volume without flying and twinkling. Introducing "/vis/viewer/resetCameraParameters" UI command, resetting *only* the camera parameters (view direction, etc.). o G4VSceneHandler: added utility function Draw3DRectMeshAsDots(..); for a rectangular 3-D mesh, draw as coloured dots, one dot randomly placed in each visible cell. Tidy Draw3DRectMeshAsDots(). Allow for multiple meshes in a single screen; relevant for special mesh rendering. Renamed 'PseudoSceneFor3DRectMeshAsDots' to 'PseudoSceneFor3DRectMeshPositions'; serves both dots and surfaces. Added 'Draw3DRectMeshAsSurfaces'. Make sure dots (markers) are treated as "hidden", i.e., use the z-buffer like other primitives (the default is "non-hidden"). Make sure dots and vertices are in local coordinate system and ask the rendering train to transform them to world coordinates in the normal way through BeginPrimitives(..). Replaced 'NameAndColour' by 'NameAndVisAtts'. Exploit move operator when creating polyhedra for Special Mesh Rendering. Numerous improvements to comments and messaging. o Introducing drawing of parameterised tetrahedral mesh. G4VSceneHandler::DrawTetMeshAsDots(): default tet mesh drawing. o Ensure X-geometry string is copied correctly to a new viewer. o G4VisCommandsCompound: improved command guidance of "/vis/open". o G4VisCommandsViewer: improved command guidance of "/vis/viewer/create". o G4VisParameters: added new accessors IsWindowLocationHintX/YNegative(). o G4VisCommandsTouchable: augment "/vis/touchable/draw", added Boolean argument: if true, draw the extent (bounding box); Default false. In "/vis/touchable/dump", fix missing dump of vis attributes. o G4VViewer: added data member and access method for 'KernelVisitElapsedTimeSeconds'. This is measured in ProcessView(). o In G4VisExecutive, introducing 'FALLBACK' drivers for TSGQt and VTKQt. A FALLBACK vis driver is selected if the user chooses a UI session that is not compatible with the requested driver. For example, if the user has built Geant4 with Qt, the TSGQt driver will be available and be the "default" driver, so "/vis/open TSG" will attempt to open TSGQt. But if the user has chosen a dumb terminal session, the vis manager selects TSGX11, for example, instead. o Improved messaging for the case that a driver is not found in the candidate list. o Introduced compound command: "/vis/plot ". This is the first part of a programme to facilitate the drawing of plots (if any have been registered with the analysis manager) at the end of a run. At the moment only the ToolsSG vis driver can offer this, so the vis manager issues appropriate messages. Later, we hope to introduce something like "/vis/reviewPlots", which will allow the user to view all available plots in sequence. o G4VisManager: added access method: IsEnabled(). Register the new commands. In EndOfEvent(), protect view checking with mutex lock in MT mode, and deal better with the case of scene requesting no kept events (greatly speeds plotting). Only print list of available histograms if more than one per category. Fixed crash in G4VisManager::GeometryHasChanged() observed in example AnaEx01. GeometryHasChanged() is a method that is called by the run manager. Sometimes the user chooses to delete the existing geometry tree and ask the run manager to construct a new detector geometry. Previously existing vis models of the geometry become invalid and the vis manager had to pick up the new geometry. The vis manager removes invalid models from the vis scenes and now adds the new version of the world back in. Other types of models, trajectory drawing, for example, if specified in the original scene, are kept in the new version of the scene. o G4VisCommandsSceneAdd: new command "/vis/scene/add/plotter", to add G4PlotterModel to end-of-run list. Adapted "/vis/scene/add/volume" UI command to new G4PhysicalVolumesSearchScene. o G4VisCommandsCompound: introducing "/vis/plot " command. o G4Scene: redefined IsEmpty(). o G4VisCommandsViewerSet: improved messaging for "/vis/viewer/set/lineWidth"; this simply prints a message saying how *actually* to change line width. o Introducing "/vis/viewer/set/specialMeshRenderingOption " UI command; "dots" draw one dot per mesh point; "surfaces" group mesh points by colour and material and compute the outer surface or envelope, removing internal shared faces. So far, only the "dots" option is implemented for some drivers. o Introducing "/vis/viewer/set/lineWidth" UI command, a do-nothing command that tells how to change line width. o Implemented "/vis/reviewPlots" UI command. o G4PlotterManager: removed not used inclusion of . o G4VisCommandsSceneAdd: changed the default width of axes added to the scene with automatic length and width determination. + modeling: o G4Mesh: augmented available data for 3D rectangular mesh. Programmed for parameterised tetrahedron mesh. Simplified algorithm: now finding 1-deep rectangular meshes such as G4PhantomParameterisation. Added 'fpParameterisedVolume' pointer and accessor. o G4PhysicalVolumeModel: added 'LocalExtent' and 'GlobalExtent' to method GetAttDefs(). In TouchableProperties, added 'fTouchableFullPVPath'. Added modifiers; for AddCompound(mesh), provide an artificial node as an (optional) hook for anything that might be generated. o Migrated G4PhysicalVolumesSearchScene and G4TouchablePropertiesScene to use 'fTouchableFullPVPath'. o Retired G4BoundingSphereScene and G4PhysicalVolumeSearchScene. G4BoundingSphereScene accumulated bounding spheres and often overestimated the extent of the scene; it is now superseded by G4BoundingExtentScene. G4BoundingExtentScene deals directly with extents, which makes it neater and more tightly estimates the overall extent of the scene. o G4PhysicalVolumeSearchScene is superseded by G4PhysicalVolumesSearchScene. G4PhysicalVolumesSearchScene finds all occurrences of a physical volume and returns a "findings vector". Removed last ambiguous and misleading argument in the constructor. o G4PseudoScene: added AddCompound(const G4Mesh&) method; if special mesh rendering is set, this catches mesh candidates (certain types of parameterisations) and avoids descending into the parameterisations. o G4PhysicalVolumeModel: added SetSpecialMeshRendering(true) to avoid traversing (certain types of) parameterisations (see above). Eliminated goto statements. o Allow arrow proportions to be greater than 1/100. Produces more visible arrows for field visualisation and also obeys the input parameters more closely. + externals/gl2ps: o Fixed Coverity warnings in gl2ps. + gMocren: o G4GMocrenFileSceneHandler: removed redundant header inclusion. + OpenGL: o G4OpenGLSceneHandler: in AddCompound(..), use base class utility G4VSceneHandler::Draw3DRectMeshAsDots(..); for parameterised tetrahedron mesh, call default G4VSceneHandler::DrawTetMeshAsDots(); added missing return statement for unimplemented cases; code tidy. o Retired display list re-use and display list limit. o Added G4gl2ps, a class frontend to tools/gl2ps intended to be used by OpenGL and OpenInventor; does not depend directly of OpenGL. o Have G4OpenGLViewer use the thread safe tools/gl2ps. o Use StandardSpecialMeshRendering(mesh). + OpenInventor: o G4OpenInventorViewer: removed misleading obsolete comment regarding kernel visit in the case of a change in vis attribute modifiers. o G4OpenInventorQtExaminerViewer: fixed compilation warning on Intel compiler for shadowing data. o Have G4OpenGLOpenInventorViewer and SoGL2PSAction using the thread safe tools/gl2ps. + Qt3D o G4Qt3DViewer: re-implemented wheelEvent() for perspective projection; now taking into account the extent of the scene. o G4Qt3DSceneHandler:in AddCompound(..), use base class utility G4VSceneHandler::Draw3DRectMeshAsDots(..). o G4Qt3DSceneHandler::AddCompound(): for parameterised tetrahedron mesh, call default G4VSceneHandler::DrawTetMeshAsDots(). o G4Qt3DSceneHandler: updated AddPrimitive(..) to current usage. Commented out line elimination in AddPrimitive(..), as too expensive for a large polyhedron; allow the graphics-reps utilities to optimise this. Use StandardSpecialMeshRendering(mesh). o Fixed compilation warnings about shadowing. + ToolsGS: o G4ToolsSGViewer: reimplement wheel_rotate() for perspective projection; now taking into account the extent of the scene. Currently, the ToolsSG viewer cannot draw trajectories in MT mode, so in function SwitchToMasterThread() we draw any events that have been kept by the vis manager. It fixes an issue where plots were being drawn twice. o Reactivate G4ToolsSGQtGLES::IsUISessionCompatible(), paves way for permitted instantiation of multiple TSG drivers. o Access G4VVisCommand::G4VisManager pointer through static function GetVisManager() to prevent DLL issues on Windows. o G4ToolsSGSceneHandler: in AddPrimitive(), define dots as a single pixel; Use GetMarkerSize() for circles and squares. In AddCompound(): for parameterised tetrahedron mesh, call default G4VSceneHandler::DrawTetMeshAsDots(). Adding warning message if plot cannot be found. In SetPlotterHistograms(), suppressed "/control/verbose" messages for "/analysis/*/get*" commands. In AddPrimitive(..), comment out common line elimination, as too expensive for a large polyhedron; allow the graphics-reps utilities to optimise this. Use StandardSpecialMeshRendering(mesh). o Changed namespace for g4tools code from "tools" to "toolx" for externals. + Vtk: o Moved setting of G4VIS_USE_VTK_QT flag to "interfaces" module. o Data Sets: --------- + G4EMLOW-8.1: o Added DNA files for the RPWBA models. + G4NDL-4.7: o Updated "ThermalScattering" component, obtained from thermal scattering data from JEFF-3.3, and adding the ENDF/BVIII-0 materials not in JEFF-3.3, coupled to JEFF-3.3 nuclear cross-sections. o Examples: -------- + Updated reference outputs, macros, READMEs and scripts. + advanced/air_shower o Define all material properties in order of increasing energy. + advanced/amsEcal o Prefer pointer to 'const G4Material' where possible. + advanced/brachytherapy o Migration to C++11/14/17 features. + advanced/ChargeExchangeMC o CexmcHadronicProcess: disabled integral method, as not applicable to this example. + advanced/eRosita o Replaced getenv() calls for data variables with G4FindDataDir(). + advanced/hadrontherapy o Prefer pointer to 'const G4Material' where possible. + advanced/ICRP110_HumanPhantoms o Use special mesh rendering. o Corrected error in reading the first voxels (in x=0, y=0). o Migration to C++11/14/17 features. + advanced/iort_therapy o Simplified calls to SetProductionCut(). + advanced/microbeam o Moved back to original switching field value. + advanced/STCyclotron o Removed no-op lines; simplified calls to SetProductionCut(). + basic/B3 o Set new analysis file name for the second run in run2.mac to avoid overwriting the output from the first run. + extended/electromagnetic/TestEm3 o Prefer pointer to 'const G4Material' where possible. + extended/electromagnetic/TestEm5 o Allow changing the gun position via UI command. + extended/electromagnetic/TestEm9 o Updated all user actions: more correct count of creator processes; use C++11 keywords; removed not needed headers; moved ScoreNewTrack(..) from Tracking to Stepping action class. + extended/electromagnetic/TestEm15 o Added description of UI commands to control G4BetheHeitler5DModel. + extended/eventgenerator/particleGun o Updated reference in PrimaryGeneratorAction2. + extended/exoticphysics/monopole o G4MonopoleTransportation: set step status on volume boundary. o Removed useless 'const_cast' of G4VSensitiveDetector. + extended/hadronic/Hadr03 o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/hadronic/Hadr05 o Prefer pointer to 'const G4Material' where possible. o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/hadronic/Hadr06 o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/hadronic/Hadr07 o TrackingAction: print ions with zero meanLife. o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/hadronic/NeutronSource o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/hadronic/ParticleFluence o New set of examples implementing different setups showing how to score particle fluences (Sphere, Concentric Spheres, Layer, Calo). + extended/medical/dna/chem4 o Added macro commands to control chemical molecules and reactions. o Minor correction for reaction type in macro file beam.in. o Use thread-local flag in G4VMoleculeCounter. + extended/medical/dna/chem5 o Use thread-local flag in G4VMoleculeCounter. + extended/medical/dna/chem6 o Adding condition for only one event, to avoid potential FPE crash. o Added PhysicsListMessenger. o Added short chemical reaction list. o Use thread-local flag in G4VMoleculeCounter. o Added missing headers inclusion for self-consistency. + extended/medical/dna/dnaphysics o In main(), enable visualisation only in interactive mode; use G4RunManagerFactory. o PhysicsList: added RadioactiveDecayPhysics. + extended/medical/dna/microyz o Added UI commands for TrackerSD radius selection. o Added missing headers inclusion for self-consistency. + extended/medical/dna/moleculardna o New example showing how to simulate physics, physico-chemistry and chemistry processes in DNA geometries, for simulating DNA damage. + extended/medical/dna/scavenger o Use thread-local flag in G4VMoleculeCounter. + extended/medical/dna/spower o In main(), enable visualisation only in interactive mode; use G4RunManagerFactory. + extended/optical/OpNovice2 o Added new macro complexRindex.mac, using dielectric-metal surface with the surface having a complex index of refraction. o Added new histograms to record separately Fresnel reflection, TIR, absorption, etc. o Use new histos to plot spike reflection/absorption vs angle on surface (useful for complex refractive index). o PrimaryGeneratorMessenger: fixed command /opnovice2/gun/randomDirection. Based on GitHub PR#33 (https://github.com/Geant4/geant4/pull/33). o Added local SteppingVerbose to print velocity with /tracking/verbose 1. + extended/parallel/MPI o Removed use of obsolete G4DeveloperAPI functions from CMake script. o Changed namespace for g4tools code from "tools::mpi" to "toolx::mpi". + extended/parameterisations/Par04 o Added python training scripts. o Added model conversion to ONNX and LWTNN to the training script. o Fixed warnings and lwtnn macro. o Changed visualization scripts for fast simulation. o Added new control histograms. o Changed extension of macros from .in to .mac. + extended/radioactivedecay/Activation o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). + extended/radioactivedecay/rdecay01 o PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2). ----------------------------------------------------------------------------