Geant4 11.2-beta-01 Release Notes --------------------------------- 30 June 2023 Migration Notes & Main New Features ----------------------------------- o Reviewed/simplified stream buffer and I/O classes. o New Quantum State Simulation (QSS) integration method, an alternative method of integration offering built-in interpolation capability and enabling faster finding of the intersection of the trajectory with surfaces. o Added possibility to set alternative grammar for schema validation while reading a GDML file. o Implemented single scattering per region, active inside the region and disabled outside. o Rewritten G4DNARuddIonisationExtendedModel G4DNA model, applicable for scaled energy interval from 100 eV to 100 MeV. o New submodule "channeling", implementing fast-simulation channeling model in oriented crystals with Baier Katkov method for the calculation of radiation probability, radiation point and parameters of photon production as well as spectrum accumulation. o Implemented interface allowing the coupling between Binary Cascade (BIC) and Abla, i.e. using BIC for the cascade and then Abla for the nuclear de-excitation. o Extended Bertini model to allow the use of Abla as alternative post-cascade nuclear de-excitation (the default de-excitation remains unchanged). o Major extension of the INCLXX model to handle antiproton annihilation at rest. All INCLXX-based physics lists now use INCLXX for the antiproton annihilation at rest. o Accurate modeling of elastic resonant scattering in heavy nuclei by the use of DBRC (Doppler Broadening Rejection Correction) algorithm. o Removed most calls to environment variables in hadronic physics classes. o New physics list QBBC_ABLA, behaving as QBBC, but using the ABLA model for nuclear de-excitation, instead of Precompound. o New physics list QGSP_BIC_HPT, similar to QGSP_BIC_HP, but with special treatment of elastic scattering of thermal neutrons activated. o Added 6 new physics lists to physics factory, for "HPT" variants (i.e. with special treatment of elastic scattering of thermal neutrons) of physics lists with "HP" already present (FTFP_BERT_HPT, QGSP_BIC_AllHPT, Shielding_HPT, ShieldingM_HPT). o New physics list names Shielding_HP and ShieldingM_HP, as alias of, respectively, Shielding and ShieldingM. o First version of the TSG_[QT,X11,XT,WINDOWS]_ZB sub drivers, allowing for interactive 3D rendering bypassing native graphics systems. o TSG_QT driver temporarly enabled by default with OGL driver choice, to allow support of Qt6. o Supporting first implementation of a no-frills GUI-side scene tree in the Qt GUI. o Implemented "generic cutaways" in visualization. Clips, sections and cutaways will now be available to *all* viewers (OpenGL still uses OpenGL clip planes. Use another driver, e.g., TSG, to get "generic cutaways). o New extended hadronic example, FlukaCern, showing the interface between Geant4 and (Fortran) FLUKA-Cern: this allows to get, in a Geant4 application, hadron-nucleus reaction cross sections and final states from FLUKA-Cern. o Enabled first-level support for Qt6. Fixed minimum supported version for Qt5 to be 5.9. o Split build of G4persistency library into G4mctruth, G4geomtext and (optional) G4gdml libraries. o Added support for declaring headers of a source code module private. Headers declared private are not installed. Partial refactoring of modules. o Removed deprecated GNUmake scripts for libraries build. o Build option with VecGeom requires VecGeom-1.2.3 or higher. o Requires CLHEP-2.4.6.4 for external CLHEP installation. o New data sets: G4EMLOW-8.4, G4ABLA-3.3, G4INCL-1.1. ---------------------------------------------------------------------------- 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 13.4, Apple LLVM/clang-14.0.3 (Intel or Apple Silicon). + Windows/10 with Visual C++ 14.34 (Visual Studio 2022) o More verified configurations: + Linux, with gcc-9.3/10.3/11.2/12.1/13.1, clang-10/11/12/13/14/15/16. + Linux, with Intel-icx 2022.2/2023.1. + MacOS 11.6 and 12.6, with Apple LLVM/clang-12/14. o External dependencies + CLHEP-2.4.6.4, suggested for external installation of the CLHEP library. + VecGeom-1.2.3 or later, for optional use of VecGeom geometry primitives. + PTL-2.3.3, for external installation of the PTL tasking library. o New data sets: + G4EMLOW-8.4, G4ABLA-3.3, G4INCL-1.1. 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.1.p02: o Configuration: ------------- + CMake: o Added support for declaring headers of a source code module private. Headers declared private are not installed; geant4_module_check reports an inconsistency if a private header is used non-privately. o Updated Qt MOC application for G4UI implementation in place of G4UIbasic/G4UIcommon. o Streamlined VTK cmake components. o No longer link to QtPrintSupport, which is not used in the toolkit. o Support finding and use of Qt6 on request for beta testing. Fixed minimum supported version for Qt5; requiring Qt5 >= 5.9 if Qt5 support is selected. Find and refind Qt6OpenGLWidgets module in Qt6 for use by Qt/OpenGL consumers. Find and refind Qt6OpenGLWidgets module in Qt6 for use by Qt/OpenGL consumers. o Handling TOOLSSG_[X11,XT,WINDOWS,QT]_ZB vis drivers. o Export VTK_DIR and QtX_DIR to package cache to assist in refinding both. o Added new capabilities to geant4_module_check.py script: given a module, print list of modules that depend on it; print all modules sorted in descending order of the number of modules using them; show which headers from linked modules are included by a module in its usage requirements output. o Updated configuration scripts for splitting of G4persistency library. o Removed setting of -D flags in Geant4Config to enable visualisation drivers. Libraries now export compile definitions for what they support to move to a "use on link" model. o Removed obsolete and confusing GEANT4_BUILD_TESTS option and configuration. o Make linking a source code module to a final Geant4 library a cmake-time error. o Updated to datasets: G4ABLA-3.3, G4INCL-1.1 and G4EMLOW-8.4. + GNUMake: o Removed deprecated GNUmake scripts for libraries build. o Updated UI/interfaces include paths to reflect new organization. o Updated scripts for splitting of the G4persistency library. o No longer link to QtPrintSupport, which is not used in the toolkit. o Digits & Hits: ------------- + Applied clang-tidy corrections and general code modernization. + Moved docstrings prior to function declarations for doxygen/IDE compatibility. o Externals: --------- + CLHEP: o Synchronised with CLHEP-2.4.6.4. - Fixed compilation warnings for implicit type conversions on macOS/XCode 14.1 in Random and Evaluator code. - Fixed cases of C++20 deprecated arithmetics with unnamed enumerations in Vector classes. + g4tools: o Updated to g4tools 6.2.0: - Added support for Qt6 in glarea. - Enabling Qt, Xt, X11, Windows viewers for the tools/zbuffer rendering. - Fixed compilation warnings on Intel/icx compiler for mismatched array bounds. Fixed Coverity defect. + zlib: o Updated to upstream zlib-1.2.13, retaining prior Geant4 patches. o Geometry: -------- + Applied clang-tidy fixes (readability, modernization, performance, ...). + biasing: o Use G4AutoLock in G4IStore and G4ImportanceAlgorithm instead of static mutex data member. + magneticfield: o Added new Quantum State Simulation (QSS) integration method, an alternative method of integration which creates approximation functions for each coordinate (x,p), changing the interpolation polynomials when the deviation from exact solution is larger than a threshold value. Offers built-in interpolation capability, enabling faster finding of the intersection of the trajectory with surfaces. Currently restricted to using only with a pure magnetic field. + navigation: o G4PropagatorInField: added parameters for big steps. New parameter 'fMaxStepSizeMultiplier', needed to reduce costly unnecessary integration in QSS; new parameter 'fMinBigDistance' used as minimum distance in case of long steps. Updated default values: 'fLargestAcceptableStep' = 100 * meter ( from 1000* meter ); 'fMaxStepSizeMultiplier' = 0.1 ( from 100 ). + solids/Boolean: o Added external Boolean processor visualisation interface G4VBooleanProcessor. + solids/specific: o Use const iterator in G4Voxelizer::GetPointVoxel(). o Fixed use of index in G4Tet::GetPointOnSurface(). o Global: ------ + Removed public interface to G4strstreambuf: G4strstreambuf becomes a private implementation detail of G4ios. Minimized coupling among G4cout/G4strstreambuf/G4coutDestination. + Added G4debug output stream for logging messages at lower priority than G4cout. If used with the Qt GUI, G4debug output is highlighted. + G4PhysicsModelCatalog: added the new INCLXX model of antiproton annihilation at rest. + Added G4VERSION_REFERENCE_TAG macro to distinguish release/development versions and cycle of the latter. + Removed obsolete and no longer used G4SIunits header. + Changed date for release 11.2-beta. o Graphics Representations: ------------------------ + Supporting first implementation of a no-frills GUI-side scene tree. Added G4SceneTreeItem class, an aggregate of data members that represent properties of objects in the scene (G4Scene). Its data members are low-level types, so that it can be used across categories, avoiding coupling. + Added data member 'fExpanded' to G4SceneTreeItem. o Intercoms: --------- + Replaced direct access to G4cout/etc stream buffers with call to G4coutDestination installer function. + Implemented ReceiveG4debug() for G4UIsession et al. + Applied clang-tidy and clang-format fixes plus normal ordering of docstrings/access specifications. + Removed unused/pointless operators. Use C++17 type aliases. + Refactored G4UIaliasList to simplify implementation and in particular memory management. + Simplified G4UImessenger implementation. + Factor G4UIcommand/parameter range validation functions to reduce code duplication. + Moved clear implementation detail classes to private headers. o Interfaces: ---------- + Implemented ReceiveG4debug for concrete sessions. For the Qt GUI (G4UIQt) HTML code is added in order to highlight G4ddebug output. + First implementation of user-specified output styles: "/gui/outputStyle". Output streams: cout cerr warn error debug (extendible, see G4VInteractiveSession header). Only used by G4UIQt at present. + Support for first implementation of a no-frills GUI-side scene tree. + Refactored modules into G4UIcore and G4UIimplementation to isolate core/always on functionality from concrete UIs requiring external libraries. Both modules are still built into a G4interfaces library, with no change to user interface for applications. + Applied clang-tidy and clang-format fixes, together with public/protected/private ordering in headers. + G4UIQt: fixed mutex bug in implementation of G4UIQt::ReceiveG4debug(); This "workaround" is to make sure all flushed output appears on the terminal after a crash. Fixed QSplitter issue, necessary for Qt6 support. Introduced new scene tree - Add colour choice. Introduced widget for 'mouseDoubleClickEvent'. Implemented callbacks SceneTreeItemExpanded() and SceneTreeItemCollapsed(). Improved command; allow for leading space in 'pvpath'. Code tidying. Reworked double-click to use QTreeWidget::itemDoubleClicked. + Removed header no longer used in Qt5, which is also not present in Qt6. Removed support for Qt < 5.9 in CMake script. + Export public compile definitions to indicate availablity of specific UIs. Moves to "use on link" model. o Materials: --------- + Applied standard and extended clang-tidy fixes, normal order access specifiers and docstrings; applied clang-format. o Parameterisations: ----------------- + New submodule "channeling", implementing fast-simulation channeling model in oriented crystals with Baier Katkov method for the calculation of radiation probability, radiation point and parameters of photon production as well as spectrum accumulation. o Particles: --------- + G4IonTable: fixed GetIon() method for the case when the ground state level of an isomer is floating. Removed some code duplication in FindIon() and GetIon() methods. + G4NuclideTable: taken into account the possibility of floating ground state levels. + G4Ion: added protection against unphysical index of floating level. + Applied core/recommended clang-tidy fixes. o Persistency: ----------- + Split build of G4persistency library into G4mctruth, G4geomtext and (optional) G4gdml libraries. + GDML: o Added possibility to set alternative grammar for schema validation while reading a GDML file. This can be achieved by either calling the new method SetImportSchema(..) from G4GDMLParser, providing the absolute path and file name of the XML schema, or by using the new UI command: /persistency/gdml/schema "[absolute_path]/schema_filename" before importing the GDML file. By setting a locally stored alternative grammar, it will instruct the parser to ignore the default schema specified in the GDML file and therefore no longer require access to the network for retrieving the schema. o Allow setting of alternative grammar for schema validation via an environment variable G4GDML_SCHEMA_FILE; it overrides the value set by SetImportSchema() if both are non-empty strings. Forcing parser to ignore any schema set in the input GDML file. Checking of grammar and schema override will fail on missing schema. o In G4GDMLWriteStructure::ExportSD(), use GetMasterSensitiveDetector() from logical volume to retrieve the shadow pointer of the sensitive detector. o Physics Lists: ------------- + Constructors: o electromagnetic: - G4EmBuilder, G4EmModelActivator, G4EmStandardPhysicsSS: fixed issue in single scattering model definition per region for e+, e-, and light hadrons. Addressing problem report #2530. - G4EmBuilder, G4EmStandardPhysicsSS: use new constructor for the G4CoulombScattering process. - G4EmModelActivator: use new constructor for the G4CoulombScattering process; allow adding G4EmStandardPhysicsSS on top of G4EmStandardPhysics_option3. Implemented single scattering per region by adding extra single scattering process, which is active inside the region and not active outside; multiple scattering and single scattering processes for a given charged particle are disabled in the region. Addressing problem report #2530. - New G4ChemDissociationChannels and G4ChemDissociationChannels_option1 classes. - G4GammaGeneralProcess: added method GetGammaNuclear(). - G4EmParticleList: added method EmChargedPartNames(), returning a minimal list of charged EM particles. - Fixed compilation warnings on macOS/XCode for implicit type conversion. o factory: - Added G4StoppingPhysicsWithINCLXX in G4RegisterPhysicsConstructors. o gamma_lepto_nuclear: - G4EmExtraPhysics: activate biasing in processes, not in cross-sections. o constructors/hadron_elastic - New class G4HadronElasticPhysicsHPT, inheriting from G4HadronElasticPhysicsHP and activating the special treatment of elastic scattering of thermal neutrons. - G4HadronElasticPhysicsHP: changed method ConstructProcess() from "final" to "override", to be able to define the ConstructProcess() method for the derived class G4HadronElasticPhysicsHPT. o constructors/hadron_inelastic - New class G4HadronInelasticQBBC_ABLA, similar to G4HadronInelasticQBBC_ABLA, except that for the final-state of nuclear inelastic interactions of charged pions and nucleons projectiles, the ABLA model is utilized for nuclear de-excitation, instead of the usual Precompound/de-excitation. Meant for testing purposes. In principle, these couplings with ABLA nuclear de-excitation can be extended to all types of projectiles and to other reference physics lists, but, for the time being, it is restricted to pion+, pion-, proton and neutron, and only for QBBC. o constructors/stopping (phys-ctor-stopping-V11-01-00) - G4StoppingPhysicsWithINCLXX: new class, similar to G4StoppingPhysics, with the only difference that the INCLXX model (instead of FTFP) is utilized for the antiproton annihilation at rest. + lists: o New class QBBC_ABLA, which is similar to QBBC, except that for hadron inelastic the constructor G4HadronInelasticQBBC_ABLA is used, instead of G4HadronInelasticQBBC. This means that the physics list QBBC_ABLA behaves as QBBC, with the only difference that for the final-state of nuclear inelastic interactions of charged pions and nucleons projectiles, the ABLA model is being used for nuclear de-excitation, instead of the usual Precompound/de-excitation. o New class QGSP_BIC_HPT, which is similar to QGSP_BIC_HP, but with special treatment of elastic scattering of thermal neutrons activated. o Use the new class G4StoppingPhysicsWithINCLXX (instead of G4StoppingPhysics) in INCLXXPhysicsListHelper: all the INCLXX-based physics lists use INCLXX for the antiproton annihilation at rest. o G4PhysListFactory: added 6 new physics lists, corresponding to "HPT" variants (i.e. with special treatment of elastic scattering of thermal neutrons) of physics lists with "HP" already present (FTFP_BERT_HPT, QGSP_BERT_HPT, FTFP_INCLXX_HPT, QGSP_INCLXX_HPT, QGSP_BIC_HPT, QGSP_BIC_AllHPT, Shielding_HPT, ShieldingM_HPT). Of these, only one (QGSP_BIC_HPT) corresponds to a concrete new physics list, whereas the others are obtained from the "HP" physics lists by adding the physics constructor G4ThermalNeutrons. Introduced new physics list names Shielding_HP and ShieldingM_HP, as alias of, respectively, Shielding and ShieldingM. These new aliases allow to have a consistent notation _HPT for all the HP-based physics lists when the special elastic scattering treatment of thermal neutrons is enabled. o Shielding: added information note that the new physics list names (to be used with the physics list factory), Shielding_HP and ShieldingM_HP, are equivalent to, respectively, Shielding and ShieldingM. o G4PhysListFactoryMessenger: added the new UI command "/physics_lists/factory/addThermal" to enable the special treatment of elastic scattering of thermal neutrons for HP-based physics lists. o Electromagnetic Processes: ------------------------- + DNA: o Reorganised multiple material model of PTB. G4VDNAModel plays like a data layer for multiple material models. The concrete models are independent of G4DNAModelInterface. o G4DNARuddIonisationExtendedModel: rewrite of the model, applicable for scaled energy interval from 100 eV to 100 MeV. If for an ion data is not available, proton x-section and effective charge are used, sampling of delta-electron is done using the two regions regression method. Sharing data between threads. o Introduced G4DNAMaterialManager to handle available DNA materials and keep DNA cross-section data shared across threads. o Replaced string to material index and some code cleanup in PTB models. o Added material pointer members for each concrete PTB models. o Code cleanup in G4DNAModelInterface for the model combination of different materials. o Added PTB model data to G4DNAMaterialManager singleton. Updated RegisterModel() function with new structure. o Added DNA cross-section to dna_option6. o Use analytical method for DNA material in option6, water is unchanged. Minor correction for DNA material in option6. o Added time structure (pulsed beam) to water radiolysis (G4VUserPulseInfo). o Corrected initial values of G4DNAEventScheduler. o Use analytical method for DNA material in option6, water is unchanged. Minor correction for DNA material in option6. o Modified DNA cross-section file name, according to new G4EMLOW-8.4 data set. o Fixed Coverity defects for uninitialised scalar variables. o Fixed compilation warnings on macOS/XCode for implicit type conversions. + High Energy: o G4GammaConversionToMuons, G4AnnihiToMuPair: removed using namespace std and applied cling-tidy base fixes. + Low Energy: o In G4LivermorePhotoElectricModel and G4LivermoreRayleighModel removed calls to environment variables and use G4EmParameters method instead. Added lock for reading data on the fly; minor code formatting. o G4LivermoreGammaConversionModel, G4LivermoreGammaConversion5DModel: fixed Spline interpolation by calling FillSecondDerivatives(). o G4LowEWentzelVIModel: updated according to Coulomb scattering models. o Use access to G4LEDATA via G4EmParameters for G4LivermoreComptonModel, G4LivermoreGammaConversion5DModel and G4LivermoreGammaConversionModel. o Applied clang-tidy and clang-format to Livermore code. + Standard: o G4UrbanMscModel: check IsLocked() method before definition of lateral displacement algorithm and positron correction; improved code formatting. o G4CoulombScattering: added SetCombined() method allowing the user to configure the process; improved code formatting and initialisation. Added constructor with changed signature, which uses flag "isCombined" instead of process name. Added extra constructor to address all existing cases; for pure single scattering, integral method type is changed and Spline interpolation is used. Addressing problem report #2530. o G4UrbanMscModel: code optimisation; no functional changes. o Code cleanup in G4PAI* classes. o Removed use of std::getenv() from model classes, use G4EmParameters instead. o G4eCoulombScatterinModel: improved initialisation and code formatting. o G4BraggModel, G4BraggIonModel: use proton stopping data for for all ions except alpha; make data-sets pointers static. Addressing problem report #2532. o G4BetheHeitlerModel, G4PairProductionRelModel, G4eBremsstrahlungRelModel, G4SeltzerBergerModel: reorganized initialisation. Initialisation of static element data is performamed only once for the first object independently on how many objects of this kind is created in a thread. Results of simulation are identical. Addressing problem report #2543. o In G4BetheBlochModel, G4BraggIonModel and G4BraggModel, updating effective charge of an ion at each step of simulation or at each call to G4EmCalculator. o G4eBremsstrahlung, G4SeltzerBergerModel: avoid changing LPM flag at initialisation; avoid repeating base class initialisation; improved comments in code. o G4eBremsstrahlungRelModel: use LPM flag from G4EmParameters and improved comments in code. o G4WaterStopping, G4hIonisation: codee clean-up. o G4ionIonisation: do not use G4WaterStopping; code clean-up. o Updated hadron/ion ionisation models; initialise stopping power data once: PSTAR and ICRU90 in G4BraggModel, ASTAR in G4BraggIonModel, ICRU73 and ICRU90 ion (Z>2) data in G4LindHardSorensenIonModel. o G4BraggIonModel inherits from G4Bragg model; fixed stopping power of heavy ions at moderate energies. o G4LindhardSorensenIonModel: use G4BraggModel for preliminary computation of DEDX at initialisation for G4GenericIon instead of G4BraggIonModel, which fixes a problem of low-energy ion tracking recently introduced. + Utils: o G4EmParameters: added extra member and access method to G4LEDATA path allowing checking of the environment variable for the EM data only once. o G4VEnergyLossProcess: make more straightforward computation of ion effective charge. o G4VEmModel: trigger computation of ion effective charge for G4EmCalculator. Use LPM flag from G4EmParameters. o G4ionEffectiveCharge: minor optimisation. o G4VEnergyLossProcess, G4VEmProcess, G4VMultipleScattering: use flag of master thread from G4LossTableManager. o G4VEnergyLossProcess: added extra protection excluding negative range; renamed class member; changed condition to stop low-energy ion, use kinetic energy and not scaled energy. Added extra protection for the case of negative range of low-energy particles. Addressing problem report #2542. o G4LossTableManager: reserve memory for internal vectors; simplified destructor; move a part of initialisation of class members to header. o G4EmCorrections: code formatting; removed lock of threads, use instead flag from G4LossTableManager. o Improved printout in G4EmCalculator. o G4LossTableBuilder, G4VEnergyLossProcess: improved debug printout. o Generic Processes: ----------------- + Scoring: o Applied core clang-tidy/format fixes. o Make G4EnergySplitter a private implementation detail of the module. Make dependency to 'intercoms' private. + Transportation: o In G4TransportationParameters, added a method to set both warning and important energies; added method to report lock errors. Improved reporting of inconsistent changes of 'warning' & 'important' energies (not only enforce warning_E < important_E but also warn about violations). o Hadronic Processes: ------------------ + cross_sections o Removed calls to environment variable G4PARTICLEXSDATA, use G4HadronicParameters access method instead. o In G4CrossSectionDataStore, reduced number of calls to environment variables, which are done only to print output for documentation. Removed remaining calls to getenv() and use G4HadronicParameters instead. o G4ElNeutrinoNucleusTotXsc: uncommented methods for interface with G4ElNeutrinoNucleusProcess. o G4GammaNuclearXS: general code clean-up: instantiate data only once for all instances of this cross-section class; upload data for all elements before the first run; simplified computation of isotope cross-section; added extra public method LowEnergyCrossSection(). More accurate usage of cache; simplified GetIsoCrosssection() and SelectIsotope() methods. o Fixed compilation warnings for implicit type conversions on macOS/XCode>=14.1. + management o G4HadronicProcess: removed usage of "DebugFlag" and "RandomFile". Replaced access to environment variables with call to G4HadronicParameters. Added extra G4Exception for the case where a worker cannot share initialisation with the master thread. Addressing problem report #2528. Improved diagnostics. o G4HadronicProcessStore: avoid checking of environment variables, call G4HadronicParameters instead. + models/abla o G4AblaInterface: implemented method ApplyYourself() to allow the coupling between Binary Cascade (BIC) and Abla, i.e. using BIC for the cascade and then Abla for the nuclear de-excitation. + models/binary_cascade o G4BinaryCascade, G4BinaryLightIonReaction: avoid calls to getenv(), use G4HadronicParameters instead. + models/cascade o Extended Bertini model to allow the use of Abla as alternative post-cascade nuclear de-excitation (the default de-excitation remains unchanged). There are two ways to set Abla as de-excitation for Bertini: via C++ interface, by calling G4CascadeInterface::useAblaDeexcitation(); via environmental variable, by setting G4CASCADE_USE_ABLA=1. o G4AblaDeexcitation: new class that does the nuclear de-excitation, after the Bertini cascade, by using the Abla model, and then tranforms the secondaries in Bertini objects. o G4CascadeInterface: added new method useAblaDeexcitation() which sets Abla as nuclear de-excitation; this method can be called directly by the user, or automatically in the constructor of the class when the flag G4CascadeParameters::useAbla() is enabled. o G4InuclCollider: added new method useAblaDeexcitation() which creates an instance of the new class G4AblaDeexcitation. o G4CascadeParameters: added Boolean flag that enables the Abla de-dexcitation model in the case that the new environmental variable G4CASCADE_USE_ABLA is set. o Fixed coverity defect for incorrect integer divide in fission part of G4EquilibriumEvaporator::deExcite(). + models/de_excitation o G4LevelReader: allow to add more levels of a given isotope than the hardcoded limit=635 (max number of levels in G4LEVELGAMMADATA). Addressing problem report #2534. o G4LevelManager: added extra public accessor method allowing users to check level energies and other parameters. o G4DeexPrecoParameters: moved part of initialisation to header; do not use autolock, use internal flag instead to allow only one dump of paramenters; print all pre-compound parameters, separate pre-compound and de-excitation printouts. o G4NuclearLevelData: fixed uploading of data before the run. + models/inclxx o Major extension of the INCLXX model to handle antiproton annihilation at rest. + models/lend o Fixed coverity defect; G4LENDGammaCrossSection::SelectChannel() may return negative array index, same in G4LENDGammaCombinedCrossSection; initialize 'iChannel' to a positive number. + models/particle_hp o Accurate modeling of elastic resonant scattering in heavy nuclei by the use of DBRC (Doppler Broadening Rejection Correction) algorithm. In G4ParticleHPManager, added new member variables and corresponding methods, related to the DBRC algorithm. In G4ParticleHPMessenger, added new UI commands to enable DBRC (which is off by default) and to specify its parameters. In G4ParticleHPVector, added new method GetMaxY() to provide the maximum cross-section in the interval between two kinetic energy values. In G4ParticleHPChannel, modified method ApplyYourself(), with an extra argument, for a special treatment of the elastic channel. In G4ParticleHPElastic, modified G4ParticleHPChannel::ApplyYourself() call, with an extra parameter. In G4ParticleHPElasticFS, implemented the DBRC algorithm in the new method GetBiasedThermalNucleus(); modified the method ApplyYourself() to call the new method GetBiasedThermalNucleus(); introduced two more new methods, InitializeScatterKernelParameters() and RegisterCrossSection(), and corresponding new member variables. o G4ParticleHPMessenger: when changing the neutron kinetic energy threshold for applying the SVT algorithm, as part of the setting of the DBRC (Double Broadening Rejection Correction) algorithm, update the corresponding value in G4HadronicParameters. o G4ParticleHPManager: removed the neutron kinetic energy threshold for applying the SVT (Sampling of the Velocity of the Target) algorithm, as this parameter is in G4HadronicParameters. o G4ParticleHPElasticFS: get the neutron kinetic energy threshold for applying the SVT algorithm from G4HadronicParameters; in the method GetBiasedThermalNucleus(), corrected mistake in the interval where the max neutron cross-section is considered for rejection. o G4ParticleHPDeExGammas: removed internal counter; delete only objects which are created. o Removed G4ParticleHPGamma and G4ParticleHPLevel classes. o G4ParticleHPEnergyDistribution, G4ParticleHPContAngularPar, G4ParticleHPEnAngCorrelation: fixed Coverity warnings. o Applied clang-format and clang-tidy fixes. + models/parton_string o G4BaryonSplitter, G4MesonSplitter, G4QGSMSplittableHadron, G4SPBaryon: some code cleanup. + models/qmd o Fixed Coverity defect for uninitialized variable. o Code cleanup in G4QMDMeanField in attempt to fix false positive on gcc-13.1 diagnostics on alma9. + models/radioactive_decay o Fix in stairstep beta decay spectrum. Addressing problem report #2367. Created new class G4BetaSpectrumSampler to sample a sloped distribution instead of a flat one. Changed G4BetaMinusDecay and G4BetaPlusDecay to use the above sampler. Added protection against very large arguments in std::exp within G4BetaDecayCorrections::ModSquared. o Fixed Coverity defect for uninitialized data in G4BetaSpectrumSampler, G4RadioactiveDecay and G4BetaSpectrumSampler. + processes o G4(El,Tau)NeutrinoNucleusProcess, G4NeutrinoElectronProcess, G4MuNeutrinoNucleusProcess: update neutrino cross-section biasing in selected detector-region. o G4ElNeutrinoNucleusProcess: updated process name to be "el-neutrino-nucleus". o New process G4NuVacOscProcess or 3-flavour neutrino oscillation in vacuum. o G4NeutronGeneralProcess: added two access methods, an extra set method and removed possible variable shadowing. o G4HadronElasticProcess, G4NeutronGeneralProcess: fixed problems identified by Coverity. o G4TauNeutrinoNucleusProcess: cleanup of constructor and destructor to fix Coverity warning. + stopping o G4HadronicAbsorptionINCLXX: new class to handle annihilation at rest by INCLXX; for the time being, only for antiproton. + util o G4HadronicParameter: introduced the neutron kinetic energy threshold for applying the SVT (Sampling of the Velocity of the Target) algorithm. This is needed to have a consistent value in methods GetBiasedThermalNucleus() in G4Nucleus and G4ParticleHPElasticFS respectively, to avoid circular dependency with 'particle_hp' module. Removed two obsolete environment variables and access methods; added flag for charge exchange. Added class members defined via environment variable and access methods for these members, this allows to remove the majority of calls to std::getenv(). Added two strings and extra methods to access environment variables used in G4HadronicProcessStore. These variables are not used in ordinary runs but are checked in each thread and for each particle. With this update these variables will be checked only once. Added G4Exception for the case, when environment variable G4PARTICLEXSDATA is not defined. Added extra Boolean method for accessing debug flag for Binary Cascade, which may be defined via environment variable G4BINARY_CASCADE_DEBUG. o G4Nucleus: in the method GetBiasedThermalNucleus(), get the neutron kinetic energy threshold for applying the SVT algorithm from G4HadronicParameter in method DoKinematicsOfThermalNucleus(), and corrected the way to pass the last parameter, by reference instead of by value. Split the method GetBiasedThermalNucleus() into two parts, by introducing a new public method, DoKinematicsOfThermalNucleus(), which is used also by G4ParticleHPElasticFS to implement the DBRC algorithm. o Run: --- + Refactor random state file copying to use std::filesystem for portability. + Applied core and optional clang-tidy fixes, plus clang-format and tidying: removed obsolete comments/dead blocks; normal order access specifiers and make docstrings Doxygen/IDE compatible. o Track & Tracking: ---------------- + Applied standard and extended set of clang-tidy/format fixes. o Visualization: ------------- + Isolated private headers and updated dependencies. + Link to new G4UIcore/UIimplementation modules in place of former G4UIbasic/UIcommon. + Exporting public compile definitions to indicate availablity of specific drivers. Moves to "use on link" model. + management: o Introducing scene tree in G4VViewer. The scene tree is a tree of G4SceneTreeItem objects; its root is a data member fSceneTree of all viewers by virtue of G4VViewer inheritance. The root G4SceneTreeItem has children that represent the models (G4VModel sub-classes) in the scene. For a G4PhysicalVolumeModel (detector components), its children and children's children, etc., imitate the geometry hierarchy of that model. These descendants are called "touchables". There may be more than one G4PhysicalVolumeModel, depending how the user creates his/her scene. The scene tree is reviewed, and updated if necessary, at every pass of G4VSceneHandler::ProcessScene(). This is called a "kernel visit". A kernel visit is triggered by vis commands (e.g.,"/vis/viewer/rebuild") and by a viewer if deemed necessary. For example, a kernel visit may not be required for a rotation, zoom, etc., but required for a change from surface to wireframe. The idea is that the scene tree can be passed to a GUI, the GUI can create a tree widget, and interactions with it raise UI commands such as "/vis/scene/activateModel", "/vis/set/touchable" and "/vis/touchable/set/"... The viewer decides if this requires a kernel visit, otherwise it must update 'fSceneTree' itself (utilities are provided). o Add code to build a scene tree in G4VSceneHandler::ProcessScene(). o First implementation of a no-frills GUI-side interactive scene tree. Works with touchables; can change the visibility of a touchable. A view can be prepared with a graphical driver, such as OGL, TSG, OI or Vtk, and transferred it to Ray Tracer, TOOLSSG_OFFSCREEN, etc., simply with "/vis/open RayTracer", etc. o Implemented "generic cutaways". It relies on the Boolean Processor which handles the Boolean operations on polyhedral representations of solids. Clips, sections and cutaways will now be available to *all* viewers (OGL viewers still use OpenGL clip planes). o New scene tree: implementing expand and collapse of touchables. Expand only to depth 2, thereafter sub-trees are collapsed. When the scene tree is expanded or collapsed it is remembered in the viewer-side scene tree and may be propagated to other viewers. o G4VSceneHandler: protect material pointer used to name G4Mesh item. If null, use name of container. It avoids cases of crash when a G4Mesh is in a parallel world. In RequestPrimitives(), improved test for invalid Boolean solid. In CreateSectionSolid() and CreateCutawaySolid(), improved algorithms. o In G4VViewer::SceneTreeScene::FindOrInsertTouchable(), fixed Coverity warning. Augmented to handle depth of descent. o G4VVisCommand: added static G4SceneTreeItem 'fExistingSceneTree', used for remembering scene tree of previous viewer. o G4VisCommandsSceneHandler: if there is an existing viewer, store scene tree. o G4VisCommandsViewer: if there is an existing viewer, store scene tree. Copy existing scene tree to the new viewer. o With "/vis/viewer/select", call UpdateGUISceneTree() to ensure the scene tree of the newly selected viewer is in sync. o G4VViewer: add scene tree and related functionality. Improved G4VViewer::SceneTreeScene::FindOrInsertTouchable(). Simplified ghost-touchable transition. Added "utility" function UpdateGUISceneTree(). o Correct Special Mesh Rendering Option default. o G4ViewParameters: initialise fSpecialMeshRenderingOption' (meshAsDefault). o Default special mesh rendering for viewers which can render all objects. o Improved vis-side scene tree creation and maintenance. o G4VisCommandsTouchableSet: with "/vis/touchable/set/visibility", added one-time warning about circumstances in which the command may appear not to work. o In G4VisExecutive, temporary divert OGL to TSG for allowing support of Qt6. Declare TOOLSSG_[X11,XT,WINDOWS,QT]_ZB drivers. o In G4VisCommandsTouchable, introduced UI command "/vis/touchable/twinkle". o Improved layout in G4VViewer::SceneTreeScene::FindOrInsertModel(). o Code cleanup in G4VUserVisAction: made protected Draw() virtual method; improved comments. o Fixed compilation warning for implicit type conversion on macOS/XCode>=14.1. + modeling: o G4VModel: removed unnecessary reference to G4PhysicalVolumeModel. o G4PseudoScene: added G4VisAttributes (this was always available, but never previously made onward available to sub-classes). o Added static utility G4PhysicalVolumeModel::GetPVNamePathString(). o Updates to implement "generic cutaways". o G4PhysicalVolumeModel: in DescribeSolid(), improved tests for invalid Boolean solid in code for section and cutaway. Fixed Coverity warnings. + OpenGL: o Removed obsolete G4OPENGL_VERSION_2 symbol and G4OpenGLVboDrawer class. o Make "modeling" module a private dependency, unless Qt is active, when it must be public. o First implementation of a no-frills GUI-side scene tree. o G4OpenGLQtViewer: disabled "old" scene tree. o No longer link to QtPrintSupport, which is not used in the toolkit. o Removed support for Qt less than version 5.9. Clarify remaining version checks using QT_VERSION_CHECK instead of raw hex. o Minimum build and code changes required to compile/link against both Qt5 and Qt6. + OpenInventor: o First implementation of a no-frills GUI-side scene tree. o No longer link to QtPrintSupport, which is not used in the toolkit. o Support compilation against Qt5 and Qt6. + Qt3D o Support compilation against Qt5 and Qt6. + ToolsGS: o First version of the TSG_[QT,X11,XT,WINDOWS]_ZB sub drivers, allowing the rendering with g4tools/zbuffer (the same used by TSG_OFFSCREEN). They allow interactive 3D rendering bypassing native graphics systems. It is fully standalone over the standard C/C++ libs and the standard pixmap logic of X11, Xt, Qt, Windows, running only the CPU. Tested with Qt5 and Qt6. o First implementation of a no-frills GUI-side scene tree. o No longer link to QtPrintSupport, which is not used in the toolkit. o Link to Qt6OpenGLWidgets library when using Qt6 to access QOpenGLWidget. o Fixed Coverity warnings. + Vtk: o Refactor of VTK viewer with pipelines, geometry stores; improved 2D rendering, streamlined VTK cmake components. o G4VtkSceneHandler: text justification to given coordinate. o Separated pipelines into source and include files. o Use class inheritance for pipelines G4VVtkPipeline and added ability to chain pipelines. o Separated interactive cutters, clippers. o 2D transparent image overlay. o Improved geant4 commands (/vis/vtk/..). o Added vtkUnstructuredGridPipeline for special mesh rendering. o Applied clang-tidy and clang-format fixes. o Removed dead code and no-ops. o Fixed compilation warnings for implicit type conversions on macOS/XCode>=14.1. o Data Sets: --------- + G4EMLOW-8.4: o Updated microelec data for electrons. o Updated DNA data. o Added README to all subdirectories. + G4ABLA-3.3: o New file named "mass2016.dat" with experimental atomic mass evaluation from 2016. o New file "mass2020.dat" with the binding energies from the atomic mass evaluation AME2020. + G4INCL-1.1: o Addec new files for antiproton annihilation at rest of INCL. o Examples: -------- + Updated reference outputs, macros, READMEs and scripts. + advanced/eFLASH_radiotherapy o Removed visualization in batch mode. + advanced/fastAerosol o General code cleanup, including clang-tidy. + advanced/ICRP110_HumanPhantoms o Now building two executables: ICRP110phantoms and ICRP110standalone. ICRP110standalone allows allows visualisation of the phantom without the overhead of the run manager and initialising of all the physics tables (i.e. cannot visualise trajectories). o standalone.mac: disable auto refresh *before* creating scene. For auto-refresh viewers, without this change the viewer attempts to draw the detector with the default view parameters, and in the case of this phantom, it overwhelms the graphics system. o This phantom should be displayed with special mesh rendering. + advanced/ICRP145_HumanPhantoms o Introduce ICRP145standalone. Building two executables: ICRP145phantoms and ICRP145standalone. ICRP145standalone allows visualisation of the phantom without the overhead of the run manager and physics tables and geometry initialisation. Of course, you cannot run or visualise trajectories. Disabled auto refresh *before* creating scene. + advanced/stim_pixe_tomography o New application for simulating three-dimensional STIM or PIXE tomography experiments. References: NIM Phys.Res. B (536) 2023: 38-44; Phys. Med. (94) 2022: 85-93; Phys. Med. (65) 2019: 172-180. + advanced/xray_TESdetector o New example of the application of Geant4 in a space environment. It represents an x-ray detector derived from the X-IFU, the X-ray spectrometer designed and developed by the European Space Agency (ESA) for use on the ATHENA telescope. The main purpose of the simulation is the estimation of the particle radiation background impacting on the detector. + advanced/xray_SiliconPoreOptics o New example demonstrating an application of Geant4 in space environment. The geometry used in this example represents a single reflective pore used to simulate on a smaller scale the effect of the millions of pores forming the mirror of the ATHENA Silicon Pore Optics (SPO), as described in: V.Fioretti et al., STI: Ultraviolet to Gamma Ray. Vol.10699. SPIE, 2018. The main purpose of the simulation is the estimation of the induced residual background at the pore exit caused by proton scattering at grazing angles. + basic/B4 o In PrimaryGeneratorAction, default e-, 300 MeV. o RunAction: adjusted binning of histograms. o Updated run1.mac and run2.mac macros. + extended/biasing/ReverseMC01 o Removed inclusion of unneeded and now obsolete G4strstreambuf header. + extended/electromagnetic/TestEm0 o New input macro ion.mac. o RunAction: restore output format. o Code revision of all headers. + extended/electromagnetic/TestEm1 o New input macro etaDecay.mac. o PhysicsList::AddRadioactiveDecay(): set ARM false. o Code revision of all headers. + extended/electromagnetic/TestEm2 o Code revision of all headers. + extended/electromagnetic/TestEm3 o Compute and plot energy leakage and total energy. o Run: fixed division by zero for the case if energy deposition in a layer is zero. o Code revision of all headers. + extended/electromagnetic/TestEm4 o RunAction: print run conditions and histograms statistics. o Code revision of all headers. + extended/electromagnetic/TestEm5 o Code revision of all headers. + extended/electromagnetic/TestEm7 o Added extra macro for test muon dEdx and Range. + extended/electromagnetic/TestEm8 o Applied clang-format and code revision of all headers. + extended/electromagnetic/TestEm11 o Compute and plot energy leakage and total energy. o In PhysicsList::RadioactiveDecay(): setARM = false. o Revised headers. + extended/electromagnetic/TestEm12 + extended/electromagnetic/TestEm13 + extended/electromagnetic/TestEm14 o Code revision of all headers. + extended/electromagnetic/TestEm18 o Fix in destructor of StakingAction. o Code revision of all headers. + extended/hadronic/FlukaCern o New Geant4-FLUKA interface and two hadronic examples, providing access to FLUKA-Cern hadron-nucleus inelastic physics: - ProcessLevel/CrossSection: allows the study of Geant4 cross-sections, and FLUKA-Cern hadron-nucleus reaction cross-sections. - ProcessLevel/FinalState: shows how to simulate inelastic hadron-nucleus interactions, using Geant4 or FLUKA-Cern models. + extended/hadronic/Hadr01 o Added UI commands to enable neutron general process and extra macro file. o HistoManager: added protection agains secondary zero-energy particles. + extended/hadronic/Hadr03 o In main(), set ProduceFissionFragments to true. o PhysicsList: return to use QGSP_BIC_HP. o SteppingAction: added protection against secondaries. o Run::EndOfRun(): format adjustement. o Code revision of all headers. + extended/hadronic/Hadr04 o PhysicsList: removed definition of meV. o Code revision of all headers. + extended/hadronic/Hadr05 o Compute and plot Edep, Eleak, Etotal=Edep+Eleak. + extended/hadronic/Hadr06 o Compute and plot total energy released. o Code revision of all headers. + extended/hadronic/Hadr07 o Compute and plot Edep, Eleak, Etotal=Edep+Eleak. + extended/hadronic/Hadr10 o In SteppingAction, protecting the argument of acos() to be within range. + extended/hadronic/ParticleFluence o Run, TrackingAction: replaced G4int with G4long for keeping the information on the multiplicity of particle production. This avoids rare cases of negative multiplicities due to integer overflow, seen for runs with at least 4000 events, in particular with heavy materials, such as Tungsten and Lead. + extended/medical/dna/dnadamage2 o New example providing scoring of plasmid DNA strand breaks using the IRT method (J. Ramos-Mendez, et al., Medical Physics, 2020, 47(11), 5919-5930). Extends the chem6 example by adding DNA molecule information and the scoring of Strand Breaks. Experimental conditions are considered such as oxygen and DMSO molar concentrations. + extended/medical/dna/icsd o PhysicsList: deleted unused models; apdated RegisterModel() function with new structure. Deleted G4DNAVacuumModel. + extended/medical/dna/moleculardna o Migrated data download to CERN EOS area for examples. o Added ability to read particles from a space phase file (csv). o Updated ecoli.mac file. o Overall code revision with clang-tidy. + extended/medical/dna/range o Added DNA materials. o Simplified PhysicsList. o Use G4RunManagerFactory in main(). + extended/medical/dna/spower o Added DNA materials. o Simplified PhysicsList. o Added extra macro alpha.in. o Code cleanup in main(). + extended/medical/dna/UHDR o New example showing how to activate the mesoscopic model in chemistry and combine with SBS model (Tran et al.,Int. J. Mol. Sci. 22 (2021) 6023). It allows to simulate chemical reactions longtime (beyond 1 us) of post-irradiation. + extended/parameterisations/gflash o gflasha: use G4PhysListFactory for physics list initialization. o gflash2: removed unused statics from DetectorConstruction class. o Some code cleanup in gflash1,2,3,a. o Overall code revision with clang-tidy and clang-format. + extended/persistency/gdml/G01 o Added comment in main() to demonstrate how to set alternative schema file for validation while parsing a GDML document. + extended/visualization/perspective o PerspectiveVisAction: fixed missing include for G4Transform3D header. o In PerspectiveVisAction header, removed unnecessary forward class declarations. Applied clang-format. + extended/visualization/standalone o Included an example of DrawGeometry. DrawGeometryVisAction shows how to visualise the geometry alone, i.e., without run manager and physics. ----------------------------------------------------------------------------