Geant4 11.3 Release Notes
The code and binary libraries for the supported systems are available
through our Source
Code Web page.
We are grateful for the efforts of Geant4 users who have provided
   detailed feedback or comprehensive reports of issues.
   We thank in particular those who have contributed corrections,
   improvements or developments included in this release.
Please refer to the
Geant4
User Documentation for further information about using Geant4.
Contents
- Supported and Tested Platforms
- Supported CLHEP, VecGeom and PTL versions
- Items for migration of the user code
- New Developments and Capabilities
- Expected effects on physics and performance
- Known Run-Time Problems and Limitations
- Compilation Warnings
- Geant4 Software License
- Detailed list of changes and fixes
 
1. Supported and Tested Platforms
Platforms:
- Linux, gcc-14.2.0.
 Tested on 64 bit architectures (Intel or AMD) with
    Alma Linux 9 (based on RedHat Linux Enterprise 9).
- macOS 15.1 Sequoia with Apple LLVM/Clang-16.
 Tested on 64 bit architectures (Intel or Apple Silicon).
- Windows-11 with Visual C++ 14.4 (Visual Studio 2022), 64 bits.
More verified and tested configurations (64 bits):
- Linux, gcc-9.4/10.3/11.3/12.1/13.2, clang-16/17/19
- Linux, Intel-icx 2024.2
- macOS 13.6 Ventura with Apple LLVM/clang-15
- macOS 14.7 Sonoma with Apple LLVM/clang-15
- Windows/10 with Visual C++ 14.36 (Visual Studio 2022)
 
2. Supported CLHEP, VecGeom and PTL versions
This release of Geant4 has been verified with
CLHEP, release 2.4.7.1.
Use of a different CLHEP version may cause incorrect simulation results.
NOTE: an internal module of the relevant CLHEP classes is provided and can be
used as alternative to an external CLHEP library installation.
A configuration option allows a Geant4 installation to use the
VecGeom Library
primitives, to replace the original Geant4 solids.
VecGeom version 2.0.0-rc3 or 1.2.10 can be adopted when using
such configuration.
PTL version 3.0.1 or later is required for external installation of the
PTL tasking library.
CMake 3.16 is the minimum version required to build Geant4.
 
3. Items for migration of the user code
Listed here is some relevant information on developments included in this
release.
Note that for all users a full re-installation of libraries (or a full
re-compilation) and a re-compilation of user applications is required.
 
General
 
- Fixed spurious compilation warnings on gcc when LTO settings are enabled.
- Set default for GEANT4_INSTALL_PACKAGE_CACHE to be OFF.
    This file is highly unstable on macOS and Spack installs, causing
    problems for most users. Retain the ability to install this file if
    really wanted, but change the default to NOT install it; in
    general this will not change anything for users provided they have a
    reproducible build environment setup.
- Removed configuration/setup of no longer supported TiMemory profiling.
 
Analysis
- The G4Accumulable class was renamed in G4AccValue including the related
    functions in G4AccumulableManager; the old class name is still available
    via using.
- The following G4AccumulableManager functions are deprecated (a warning
    will be issued in compilation if present in user code):
    
    - CreateAccumulable<T>() [new name: CreateAccValue<T>()]
- GetAccumulable<T>() [new name: GetAccValue<T>()]
- RegisterAccumulable<T>() [new name: Register<T>()]
 
- Newly added function Print(G4PrintOption) in the accumulable base
    class G4VAccumulable requires to adapt user classes which implement the
    Print() function without or with different arguments.
 
Electromagnetic and optical physics
 
- New dataset G4EMLOW8.6.1 is required and should be used.
 
Hadronic physics
 
- New hadronic datasets G4ENSDFSTATE-3.0, G4PhotonEvaporation-6.1,
    G4RadioactiveDecay-6.1.2, G4PARTICLEXS-4.1 are required and should be
    used.
- Since Geant4 version 11.2, the physics list QGSP_BERT_HP has a treatment
    of low energy (< 20 MeV) neutrons which is not the same as for
    the other HP-based reference physics list (FTFP_BERT_HP, QGSP_BIC_HP,
    Shielding, etc.).
    QGSP_BERT_HP is still under validation, therefore it is not recommended for
    physics studies, but users are welcome to try out and provide feedback.
- Renamed G4RadioactiveDecay to G4VRadioactiveDecay and G4Radioactivation
    to G4RadioactiveDecay. The header for G4Radioactivation is preserved to
    provide backwards compatibility.
 
Run
- G4TaskRunManager now organises workers so that each divides its events
    evenly across N tasks, rather than one task that processes all events for
    the worker. This should have no observable effect, though applications
    using the TBB backend to share it with non-Geant4 tasks may see different
    overall task numbers and ordering. Event order and reproducibility are not
    affected.
- Tuned verbose levels to reduce printouts during event loop.
- Added protection in G4VPrimaryGenerator::SetParticlePosition() to
    avoid and warn for attempts to place vertex position outside or on surface
    of the world volume.
- Cleanly delete G4Event objects at the end of each run as long as the
    events are not requested to be kept for redrawing during the following
    Idle state. The kept events are deleted at the beginning of next
    run or at program termination.
 
Visualization and Modeling
 
- Restored OpenGL as default backend for Qt6. Fixed open issues when using
    Qt6 with supported drivers. Qt6 is now fully supported.
 
Data Sets
 
- This release introduces new data set versions.
    Please see the corresponding details in
    Section 9 of this document.
    
    - New data set versions: G4ENSDFSTATE-3.0, G4PhotonEvaporation-6.1,
        G4RadioactiveDecay-6.1.2, G4CHANNELINGDATA-1.0, G4EMLOW-8.6.1,
        G4PARTICLEXS-4.1.
- New optional data sets: G4NUDEXLIB-1.0, G4URRPT-1.1.
- In order to use ParticleHP for charged particles
        (protons, deuterons, tritons, He3 and alphas), an optional data
        set G4TENDL-1.4 is required, and can be optionally
        downloaded in addition.
 
4. New Developments and Capabilities 
General
- First full implementation of sub-event parallelism, with creation and
    processing of sub-events in workers, and merging of results back into
    events on the main thread. Added sub-event parallel mode as an option
    in G4RunManagerFactory and new UI command for allowing trajectory merging.
Analysis
- Added support for accumulable collections in analysis module.
Geometry & Field
- Added option for performing the geometry initialisation phase,
    i.e. creating the 'optimisation' voxels for navigation, in parallel mode.
    The user can enable this option by calling the method
    RequestParallelOptimisation(optimise, verbose) of
    G4GeometryManager.
- New revised and optimised implementation of G4GenericTrap shape.
- Improved/optimised implementation of GetCubicVolume() in Boolean
    solids.
- Added new G4FieldBuilder class to construct what is needed (to carry out
    the propagation) for a user-specified type (class) of a magnetic or
    electromagnetic field; added also new classes to hold the accuracy
    parameters for the propagation tracks in magnetic or EM fields.
    Instantiating G4FieldBuilder also creates a set of UI commands in the
    /field directory, for changing the default field integrator,
    equation of motion and the accuracy parameters.
    Note: the field class can be either user-defined or an existing type
    from the toolkit, such as G4QuadrupleMagField or G4UniformElectricField.
Materials
- Extended diagnostics and output from material scanner.
Electromagnetic physics
- New processes G4DynamicParticleIonisation, G4DynamicParticleMSC and
    G4DynamicParticleFluctuation, which perform computations on the fly using
    only G4DynamicParticle data.
- Optimised step limitation algorithm in G4UrbanMscModel.
- G4eeToTwoGammaModel: fixed precision lost in sampling of final state
    for very high energies.
- New class G4EmDataRegistry, to keep EM data tables.
- New 5D model for e+e- pair production by muons; classes
    G4RiGeMuPairProductionModel and G4RiGeAngularGenerator.
- New G4OrePowellAtRestModel and G4PolarizedOrePowellAtRestModel classes,
    for Orel & Powell orto positronium decay model at rest, also polarized.
- Implemented new model of ionization losses for e+- ionization for
    channeling using the new channeling dataset.
- New process G4CoherentPairProduction for the simulation of coherent
    pair production by high energy gamma in an oriented crystal.
- Simplified computation of cross-section maximum for discrete processes
    in G4EmUtility.
- Introduced new classes G4UnknownParticle and G4ChargedUnknownParticle,
    part of ATLAS and LHCb request to assign automatically ionisation and
    multiple scattering processes to charged primary particles with valid PDG
    code but not known to Geant4.
- Implemented production and decay of omega(780) and f2(1270) for pion
    projectile and implemented decay of unstable isomers of recoil nucleus
    if not a natural isotope.
- New class G4XTRGaussRadModel, providing improved account on the origin
    of XTR photons.
- Updated adjoint simulation classes to allow running adjoint simulation
    in MT mode.
- Geant4-DNA
    
    - New classes implementing general models for ions heavier than Helium:
        G4GeneralIonIonisationModel, G4DNAIonChargeIncreaseModel and
        G4DNAIonChargeDecreaseModel.
- New class focusing on generating multiple-ionised water ions and
        calculating scale parameters to compute cross-sections of each
        multiple-ionisation process: G4DNAMultipleIonisationManager.
- New process classes for multiple-ionisation: G4DNADoubleIonisation,
        G4DNATripleIonisation and G4DNAQuadrupleIonisation.
- New model classes related to multiple-ionisation:
        G4DNADoubleIonisationModel, G4DNATripleIonisationModel and
        G4DNAQuadrupleIonisationModel.
- In G4EmDNAPhysics, defining default maximum kinetic energy
        600 MeV instead of 300 MeV in order to have standard
        ionisation and multiple scattering always defined for DNA physics
        configurations.
 
Hadronic physics
- The angular emission for 4-body and higher-body generation in the Bertini-like
    intranuclear cascade model BERT has been improved.
    This has a visible impact on the simulation of hadronic showers for most of the
    reference physics lists, including FTFP_BERT and QGSP_BERT.
- First implementation of the optional NuDEX nuclear de-excitation hadronic model,
    which provides a detailed emission of gammas and internal conversion electrons
    from the de-excitation of nuclei.
    This model relies on the new, optional dataset G4NUDEXLIB-1.0, accessed through
    the G4NUDEXLIBDATA environmental variable. 
    For the time being, NuDEX can be utilised only for neutron capture in the
    physics list QGSP_BERT_HP. To enable it, one needs to include the following
    C++ code line G4HadronicParameters::Instance()->SetEnableNUDEX(true);
    in the main program, before instantiating the physics list.
- For low-energy (< 20 MeV) neutrons, introduced the optional
    treatment of the Unresolved Resonance Region (URR) via Probability
    Table (PT), relevant for precise simulations of nuclear reactor criticality
    and shielding applications.
    This special treatment can be activated on top of any reference physics list
    based on HP or HPT by using the new physics list constructor class
    G4URRNeutrons. There are two possible types of probability tables - NJOY and
    CALENDF - and the choice between them can be done via the C++ code line, e.g.
    G4HadronicParameters::Instance()->SetTypeTablePT("njoy")
    in the main program, before instantiating the physics list.
    This treatment, when activated, needs the new, optional dataset G4URRPT-1.1,
    accessed through the G4URRPTDATA environmental variable.
- New class G4InterfaceToXS, to compute inverse cross-section using
    G4PARTICLEXS cross-sections for neutrons and light ions.
- Optimised G4ChargeExchangeXS, switching computations from level of
    isotopes to level of elements and making the code running faster
    without loss of accuracy.
- Added "HPT" extension to support adding G4ThermalNeutrons to extensible
    physlist factory.
- In de-excitation hadronic model, improved algorithm for handling of broken
    levels in G4LevelReader.
- Updates to cross-section classes to rationalise initialisation of data
    in MT mode.
Physics Lists
- New physics list constructor class G4ChargedUnknownPhysics, to be used
    on top on any reference physics list, to assign ionisation and multiple
    scattering (as well as transportation) processes to exotic charged particles,
    i.e. primary charged particles with valid PDG code but not known to Geant4.
- Added three new variants of Shielding physics list in
    G4PhysListFactory: ShieldingLIQMD, ShieldingLIQMD_HP and
    ShieldingLIQMD_HPT. These variants use the model G4LightIonQMDReaction.
    Note that ShieldingLIQMD and ShieldingLIQMD_HP are the same:
    the latter is introduced for consistency.
Visualization and Interfaces
- Improved plotting with /vis/plot if TOOLS_USE_FREETYPE flag is set.
    Set GEANT4_USE_FREETYPE=ON in CMake.
- Improved identification of scene tree models in visualisation.
    Now suppressing the scene tree if the number of touchables exceeds
    10000 (equivalent to about 20 MB).
Examples
- Extended example RE03 in 'extended/runAndEvent', demonstrating the ability
    to run in sub-event parallel mode.
- Introduced 'exoticphysics/channeling' examples category, created 'ch0'
    example out of the original example and added 'ch1', 'ch2' and 'ch3'
    examples. ch1: an easy demonstration of the minimum requirements necessary
    to integrate the G4ChannelingFastSimModel and the G4BaierKatkov model into
    a project in order to simulate the physics of channeling and channeling
    radiation/coherent bremsstrahlung; ch2: an enhanced version of ch1,
    providing the user with the full functionality of both demonstrated models,
    with parameters set up via a macro; ch3: demonstrating the minimum
    requirements necessary to integrate the G4CoherentPairProduction process
    into a project, along with the demonstrated models, to simulate the physics
    of electromagnetic showers in an oriented crystal.
- Created a new dna category for Geant4-DNA advanced examples, including
    moleculardna example, moved from extended category and new
    cellularPhantom application, showing how to simulate the
    irradiation of a 3D voxel phantom containing biological cells, created
    from a confocal microscopy 24-bit RGB image. Reference:
    P. Barberet et al., "Monte-Carlo dosimetry on a realistic cell monolayer
    geometry exposed to alpha-particle", Phys. Med. Biol. 57 (2012) 2189-2207.
- The Periodic Boundary Condition is implemented in the UHDR extended example
    for Geant4-DNA microdosimetry simulations, based on 
    https://github.com/amentumspace/g4pbc.
    The effective box model is also implemented in the UHDR example based
    on M. Karamitros et al., arXiv:2006.14225 (2020).
5. Expected effects on physics and computing performance
Electromagnetic physics
- Electromagnetic shower shapes will be affected on level of per mille
    if 3-gamma annihilation is enabled. For low energy positively charged
    particles the agreement of simulation versus data will be improved.
Hadronic physics
- Due to the improvement in the angular emission of >= 4 particles in the
    final-state of the BERT model, the hadronic showers for most of the reference
    physics lists, including FTFP_BERT and QGSP_BERT, have few per-cent higher
    energy response and narrower lateral shower shapes with respect to the
    previous version, Geant4 11.2.
    In other words, the hadronic string models (FTF and QGS) and the intranuclear
    cascade model BERT become closer to each other in this Geant4 release.
- The new hadronic dataset G4PhotonEvaporation-6.1 produces some visible differences
    in the final-state of the photo-evaporation model in Tungsten, with respect to
    the previous version.
    This has an impact, at the per-cent level, on hadronic showers in Tungsten
    calorimeters only for the physics lists QGSP_BIC and QGSP_INCLXX (whereas
    those that are based on BERT model, e.g. FTFP_BERT and QGSP_BERT, are not
    affected because BERT has its own internal nuclear de-excitation model that
    does not use the G4PhotonEvaporation-6.1 dataset).
 
6. Known Run-Time Problems and Limitations
For a complete list of outstanding run-time problems and to submit any
problem you may find while running this version of Geant4, please refer
to the
Geant4 Problem
Reporting System.
 
 
7. Compilation Warnings
There may be a few compilation warnings on some platforms.
We do not believe that any of these lead to incorrect run-time behaviour.
 
8. Geant4 Software License
A Software License applies to the Geant4 code.
Users must accept this license in order to use it.
The details and the list of copyright holders is available at
https://cern.ch/geant4/license
and also in the text file LICENSE distributed with the source code.
 
9. Detailed list of changes and fixes
These are the main new features/fixes included in this release since the
last patched public release (for more detailed lists of fixes/additions,
please refer to the corresponding History files provided in most packages):
 
Configuration
- CMake
    
    - Support running example build-and-run tests in XCode on macOS.
- Added support for use of sanitizers with XCode; ensure sanitizer flags
        are forwarded to the linker when using Xcode, and all linker flags are
        forwarded to builds of tests.
- Added compiler flags for GCC only to help detect/debug LTO-related
        problems when building with CMAKE_INTERPROCEDURAL_OPTIMIZATION.
- Provide CMake function to assist in linking unit tests to final
        libraries given required source code modules.
- Removed configuration/setup of no longer supported TiMemory profiling.
    
- Introduced new FullRelWithDebInfo build mode, -O3 -g,
        so maximum optimisation with debugging symbols.
- Simplifications to Geant4Config.cmake: removed obsolete and never run
        "whole archive" linking of G4physics_lists; replaced TOOLSSG
        visualisation driver variables that are just synonyms for more
        fundamental config options (e.g. GEANT4_USE_QT) with the underlying
        variable.
- Simplified CMake/CTest functions and settings: moved geant4_add_test
        function to dedicated module, retiring UseGeant4_internal file;
        reduced oversetting of Geant4_DIR variable for use by tests.
- Set default for GEANT4_INSTALL_PACKAGE_CACHE to be OFF.
        This file is highly unstable on macOS and Spack installs, causing
        problems for most users. Retain the ability to install this file if
        really wanted, but change the default to NOT install it; in
        general this will not change anything for users provided they have a
        reproducible build environment setup.
- Added optional install of new NuDEXLib and URRPT datasets.
- Bump minimum VecGeom version to 1.2.9.
- New data sets G4ENSDFSTATE-3.0, G4PhotonEvaporation-6.1,
        G4RadioactiveDecay-6.1.2, G4CHANNELINGDATA-1.0,
        G4EMLOW-8.6.1, G4PARTICLEXS-4.1,
        G4NUDEXLIB-1.0, G4URRPT-1.1.
- Updated tag-IDs for 11.3.
 
Analysis
- Added support for accumulable collections.
    New classes: G4AccArray, G4AccMap, G4AccUnorderedMap, G4AccVector.
- Added G4AccType enumeration for available accumulable types.
- Added functions for printing with G4PrintOption argument to all accumulable
    types and G4AccumulableManager (Note - this will require to update user
    classes which implement the Print() function without or with different
    arguments).
- Added VerboseLevel in G4Accumulables and its setter/getter
    in G4AccumulableManager.
- Internal changes:
    
    - Renamed class G4Accumulable in G4AccValue, and added a using for
        the old name for backward compatibility.
- In G4AccumulableManager, replaced RegisterAccumulable() with
        Register() and deprecated the function with the old name.
 
- Fixes:
    
    - Fixed setting of file compression level in G4GenericFileManager:
        propagate setting to all registered file managers.
        Addressing problem report
        #2625.
- Applyed clang-tidy checks to code (use of override, redundant data
        initialisation, use of emplace-back).
- Fixed reported Coverity defects (use std::move() and
        const auto&, to avoid copying).
 
Digitization & Hits
- Fixed reported Coverity defects, use consistently const G4String&
    to avoid implicit copy.
- Fixed class description in headers. Use G4 types.
Electromagnetic Processes
- Adjoint
    
    - Updates to allow running adjoint simulation in MT mode.
- Fixed reported Coverity defects for use of const G4String&
        and std::move().
- Minor code cleanup (use of default destructor, std::size_t,
        G4 types, ...).
 
- DNA:
    
    - Modified the molecule names of OH, HO2, O in MoleculeDefinition.
        Each molecule configuration has a molecule definition.
- Optimised IRT-syn at 1 ps for high LET applications.
- G4DNARuddIonisationExtendedModel: updated model to not use autolock but
        rather upload data in the class constructor once in all threads; use
        effective charge approach for all ions with Z > 2 (in order to
        have more correct computation of stopping power and ranges); precompute
        internal variables before sampling; optimised algorithm of sampling
        (at 10 MeV it becomes considerably faster); updated initialisation
        to allow be called from the general model; removed unused parameters.
- G4GeneralIonIonisationModel, G4DNAIonChargeIncreaseModel and
        G4DNAIonChargeDecreaseModel: new classes implementing general models
        for ions heavier than Helium.
- Fixed missing value in DNA PTB Ionization Structure.
- Fixed missing GetMaterial() in DNA PTB Excitation and Elastic
        models as suggested in
        GitHub PR#78.
- G4DNAChargeDecrease, G4DNAChargeIncrease: removed obsolete definition
        of min/max model energy inside processes class; some code clean-up.
- G4DNAElectronHoleRecombination: changed branch condition in
        FindReactant() to select only H2O+ ions involved in
        electron-hole recombination.
- G4DNAWaterDissociationDisplacer: added dissociative decay channels for
        multiple-ionised water ions.
- G4DNAMultipleIonisationManager: new class focusing on generation of
        multiple-ionised water ions and calculation of scale parameter to
        compute cross-section of each multiple-ionisation process.
- G4DNADoubleIonisation, G4DNATripleIonisation and
        G4DNAQuadrupleIonisation: new process classes for multiple-ionisation.
- G4DNADoubleIonisationModel, G4DNATripleIonisationModel and
        G4DNAQuadrupleIonisationModel: new model classes related to
        multiple-ionisation.
- G4DNAELSEPAElasticModel: modified to be compatible with density
        scaling.
- Fixed condition for node insertion in G4KDTree.
- Deleted DelayLists at the end of chemistry stage.
- Delete unused enum, as now adopting EmParameters to control chemistry
        models in G4EmDNAChemistry_option3.
- Fixed reported Coverity defects for use of std::move(),
        const auto& and const iterators.
- Fixed reported Coverity defects in G4LEPTSElossDistr and
        G4LEPTSDistribution for explicit null dereferenced pointer and
        out-of-bounds reads; minor code cleanup.
- Cleaned G4Scheduler and cleanup in CMake scripts.
 
- High Energy
    
    - Added new processes G4DynamicParticleIonisation, G4DynamicParticleMSC
        and G4DynamicParticleFluctuation, which perform computations on the fly
        using only G4DynamicParticle data (G4ParticleDefinition is not used).
 
- Low Energy
    
    - G4MicroElecCapture: fixed Coverity warning about division by zero via
        modification of the formula to compute MFP and added an upper limit
        500 eV for this process.
- Fix in G4PenelopeBremsstrahlungAngular, for a crash observed when the 
        angular generator is used with a Bremsstrahlung model other than 
        G4PenelopeBremsstrahungModel.
- In G4UAtomicDeexcitation, reset vector vacancyArray in
        GenerateParticles(), to avoid rare case of event
        non-reproducibility, observed when using EM Opt4 (EMZ) physics-list.
- G4FluoData, G4hIonEffChargeSquare, G4MicroElecInelasticModel_new:
        fixed reported Coverity defects.
- Fixed reported Coverity defects for use of std::move().
- G4MicroElecLOPhononModel: minor code cleanup.
 
- Muons
    
    - G4RiGeMuPairProductionModel, G4RiGeAngularGenerator: a new 5D model
        for e+e- pair production by muons.
- Fixed declaration of virtual destructors in several header files.
- G4MuPairProductionModel: minor cleanup for better code readability.
 
- Standard
    
    - New G4OrePowellAtRestModel class, Orel & Powell orto positronium decay
        model AtRest. New class G4PolarizedOrePowellAtRestModel for polarized
        Orel & Powell orto positronium decay model at rest.
- G4IonICRU73Data: fix for the case when target material has an element
        with Z>92; improved debug printouts. In the Lindhard-Sorensen
        model to compute dEdx the first try is to take it from ICRU73 or ICRU90
        data, if this class returns zero, then dEdx is computed from
        G4GenericIon and effective charge. Addressing problem report
        #2586.
- G4eeToTwoGammaModel: fixed precision lost in sampling of final state
        for the very high energy (ATLAS report).
- G4UrbanMscModel: optimised DistanceToBoundary step limitation
        algorithm currently used only in Opt3 EM physics.
- G4SimplePositronAtRestModel, G4AllisonAtRestModel: new classes to
        sample positron annihilation.
- Renamed G4eplusTo2GammaOKVIModel to G4eplusTo2or3GammaModel.
        Removed sampling at rest.
- G4WentzelOKandVIxSection: fixed rejection factor for sampling of single
        scattering with nuclear form-factor. Addressing problem report
        #2627.
- G4BraggModel: fixed issue observed with 4.12 MeV mu+ range,
        reported in Users Forum.
- Static initialization improvement for G4eBremsstrahlungRelModel.
        Use std::shared_ptr for LPMFuncs and ElementData.
- G4ionIonisation: use G4BraggIonModel only for alpha and G4BraggModel
        for other ions in the default EM physics.
- G4eplusAnnihilation: added selection of AtRest model; implemented
        ApplyCuts() for AtRest; implemented choice of positron
        annihilation model at rest. Use more const class members; changed
        model ID definition for produced tracks. Updated configuration of
        models AtRest, the choice of 2-gamma, 3-gamma final states is
        implemented in one place. Use orto positronium fraction from material
        property and not from EM parameters.
- G4BetheBlochModel: set flags isIon and isAlpha at
        initialisation and not at run time.
- G4BetheHeitlerModel: include optional possibility to use EPICS2017
        cross-section.
- G4BetheHeitler5DModel: added extra protection against division by zero.
- Fixed reported Coverity defects in several classes.
 
- Utils
    
    - G4EmElementXS: new helper class to cross-section data.
- G4EmParameters: increased low-limit on 'maxKinEnergy' parameter from
        10 MeV to 600 MeV in order to have standard ionisation
        and multiple scattering always defined for DNA physics configurations. 
        Added protection to fix segmentation fault when data is unavailable.
        Added flag to enable/disable the new Ricardo-Gerardo model of e+e-
        pair production.
- G4EmParameters, G4EmParametersMessenger: added enumerator and a new
        flag G4PositronAtRestModel, which allows selection and configuration of
        the model of positron annihilation at rest. Added orto positronium
        fraction flag. Added Ore-Powell models to the list of models for
        positron annihilation at rest. Added Boolean flag UseEPICS2017.
        Removed parameter defining fraction of orto positronium for all
        materials. Added flag to enable/disable 3 gamma annihilation on fly.
- G4EmConfigurator: handle G4TransportationWithMsc process name.
- G4TransportationWithMsc: set TRANSPORTATION_WITH_MSC process sub-type.
- G4LowEnergyEmProcessSubType: added fLowEnergyTripleIonisation
        and fLowEnergyQuadrupleIonisation for implementing
        multiple-ionisation processes in Geant4-DNA.
- G4VPositronAtRestModel: new virtual interface.
- G4EmDataRegistry: new class to keep EM data tables.
- G4VEmProcess: extended info printout for e+ annihilation at rest.
- G4VEmProcess, G4VEnergyLossProcess: improved identification of model ID
        for atomic de-excitation (fluorescence, Auger e-, PIXE).
- G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger: added
        DNA chemistry time step model.
- G4EmDataHandler: extended functionality.
- G4LossTableManager: identify master thread using std method.
- G4LossTableBuilder: more accurate use of static members and methods.
- G4VEmModel, G4VEmProcess, G4VEnergyLossProcess, G4EmTableUtil: updated
        according to change in the data.
- G4VMscModel: moved initialisation of tables for model to G4EmTableUtil.
- G4EmBiasingManager: minor cosmetic change.
- G4EmProcessSubType: added sub-types for dynamic EM processes
        (G4ParticleDefinition is not used, all computations on the fly).
        Added coherent channeling pair production process type.
- Fixed reported Coverity defects.
 
- Xrays
    
    - G4XTRGaussRadModel: new class providing improved account on the origin
        of XTR photons.
- G4VTRModel: added empty implementation to GenerateSecondaries()
        method  to resolve linker error on clang compiler.
- Fixed reported Coverity defect in G4VXTRenergyLoss.
 
Error Propagation
- Fixed reported Coverity defect in G4ErrorFreeTrajState for use of
    const G4String& and std::move().
Event
- Implementated new feature for creation and processing of sub-events.
- Added protection in G4VPrimaryGenerator in SetParticlePosition()
    to avoid and warn for attempts to place vertex position outside or on
    surface of the world volume.
- In G4Event, changed data member keepTheEvent to mutable
    so that KeepTheEvent() method can be invoked forconst G4Event
    object.
- G4PrimaryTransformer: adding sanity check of 4-momentum.
- Added UI command to switch on/off the vertex position check (default: on).
- Updated /gun/position UI command guidance in G4ParticleGunMessenger.
    Removed unnecessary setting of gun position to (0, 0, 0).
- Improved use of Mutex lock in G4EventManager for sub-event level parallelism.
- G4PrimaryTransformer: adapted and extended after introduction of the new
    class G4ChargedUnknownParticle (part of ATLAS and LHCb request to assign
    automatically ionisation and multiple scattering processes to charged
    primary particles with valid PDG code but not known to Geant4).
- Fixed reported Coverity defects: in G4GeneralParticleSourceMessenger for
    use of const auto& and use of const G4String&; in
    G4StackManager for copy/paste error in printout.
- Removed use of no longer supported TiMemory.
Externals
- G4tools:
    
    - Updated to version 6.3.3
- Fixed reported Coverity defects for use of const references
        and std::move(). Fixed cases of potential divide by zero.
- In wroot/file, fixed buffer size in function
        compress_buffer(). In wroot/basket, suppressed test
        in write_on_file(). Addressing problem report
        #2625.
- Fixed typo in columns class member name; issue picked up by
        clang-19 compiler on Linux.
 
- PTL:
    
    - Synchronised with version PTL-3.0.1. Retaining patches for Geant4
        source layout in configuration.
- Fixed reported Coverity defects for use of std::move() and
        removal of structurally dead code.
- Added max CMake version in PTLConfig.cmake.in to suppress warnings in
        latest CMake versions about support for 3.10 being dropped.
 
General Processes
- Biasing
    
    - Fixed reported Coverity defects, to use const G4String& for
        avoiding implicit copies.
 
- Management
    
    - G4ParticleTypes: added G4ChargedUnknownParticle class; part of ATLAS
        and LHCb request to assign automatically ionisation and multiple
        scattering processes to charged primary particles with valid PDG code
        but not known to Geant4.
 
- Optical
    
    - G4OpWLS2: change SetProcessSubType() from fOpWLS to fOpWLS2.
 
- Scoring
    
    - Added safeguard for zero energy deposited in G4EnergySplitter.
        Addressing problem report
        #2629.
 
- Solid State
    
    - Fixed reported Coverity defects in G4ChannelingOptrChangeCrossSection
        and G4ChannelingOptrMultiParticleChangeCrossSection.
 
- Transportation
    
    - Introduced TRANSPORTATION_WITH_MSC process sub-type in
        G4TransportationProcessType.
 
Geometry
- Biasing
    
    - Fixed reported Coverity defect in G4WeightWindowStore, to use
        std::move() for avoiding implicit copy.
 
- Divisions
    
    - Applied trivial clang-tidy fixes to classes, i.e. use of default
        constructor/destructor.
 
- Magnetic Field
    
    - Added new classes for automatic field construction from parameters:
        G4FieldBuilder[Messenger], G4FieldParameters[Messenger] and
        G4FieldSetup.
- Improved stability of static initialisation for StepperType()
        and StepperDescription() in G4DormandPrince745.
- Applied trivial clang-tidy fixes to classes, i.e. use of default
        constructor/destructor, auto and using statements.
- Minor cleanup in QSS classes.
- Fixed reported Coverity defects for use of std::move()
        and const auto&, to avoid copying.
 
- Management
    
    - Added new capability to run voxel optimisation in threads in MT mode.
        Parallelises only over volumes. The user can call the method
        RequestParallelOptimisation(optimise, verbose) from
        G4GeometryManager to turn it on/off (default is off).
        Set verbose=true to obtain statistics on the
        volumes with biggest contribution to memory size and CPU time for
        voxelisation.
        New method BuildOptimisationsParallel() can be called by
        G4WorkerRunManager to initialise. New method ReportVoxelInfo()
        to write out for verification. Checked with simple and complex/large
        geometries.
- Added new methods GetNumOfConstituents() and IsFaceted()
        to G4VSolid.
- Access G4GeometryManager singleton through its GetInstance()
        in stores.
- Applied trivial clang-tidy fixes to classes, i.e. use of default
        constructor/destructor.
 
- Navigation
    
    - G4TransportationManager now notifies G4FieldManager about the global
        field via its new function SetGlobalFieldManager().
        This provides the ability to access/revise the global field manager
        directly from G4FieldManager without dependency on the navigation
        module.
- In G4MultiLevelLocator, in EstimateIntersectionPoint(),
        moved repeated assertion on invalid intersection within G4DEBUG_FIELD,
        to avoid excess of warning printouts in rare cases of failed
        convergence, as reported by CMS.
- Applied trivial clang-tidy fixes to classes, i.e. use of override
        and removal of virtual keywords; use of default
        constructor/destructor.
 
- Solids (Boolean)
    
    - In G4BooleanSolid, propagate parameter to all constituents in
        SetCubVolStatistics() and SetCubVolEpsilon().
- In G4UnionSolid and G4SubtractionSolid, limit calculations with
        construction of temporary G4IntersectionSolid by 10 constituents for
        GetCubicVolume().
- Implemented new methods GetNumOfConstituents() and
        IsFaceted().
- G4MultiUnion: in GetCubicVolume(), use
        EstimateCubicVolume().
- G4BooleanSolid: in SetCubVolStatistics() and
        SetCubVolEpsilon(), added check for G4MultiUnion to avoid
        memory corruption.
- Added extra method to process solid and not perform external operations
        via G4Polyhedron. Successive Boolean mesh operations with floating point
        are invariably going to be unstable. Providing a method which takes a
        solid and returns the G4Polyhedron allows the external processor to use
        significantly more precise types and strategies to avoid ambiguity and
        then finally convert to double at the very last step.
 
- Solids (CSG)
    
    - Implemented new methods GetNumOfConstituents() and
        IsFaceted().
- Applied trivial clang-tidy fixes to G4CSGSolid, i.e. use of
        override.
 
- Solids (Specific)
    
    - Completely revised and optimised implementation of G4GenericTrap.
        Addressing problem report
        #2547.
- Implemented new methods GetNumOfConstituents() and
        IsFaceted().
- Removed internal cached state of G4TwistedTubs and G4VTwistedFaceted.
        Addressing problem report
        #2619.
- G4ExtrudedSolid: fixed defects reported by Coverity.
- Fixed reported Coverity defects in G4Voxelizer; use std::move()
        instead of plain vector copy in several methods.
- Applied trivial clang-tidy fixes to classes, i.e. use of override
        and default keywords.
 
- Volumes
    
    - Access G4GeometryManager singleton through its GetInstance()
        in G4AssemblyStore.
- Applied trivial clang-tidy fixes to G4AssemblyStore, i.e. removed
        unnecessary if check for null pointer in Clean()
        method.
- Fixed reported Coverity defect in G4ReflectionFactory, to not pass
        the same G4VisAttributes object to the reflected logical volume.
 
Global
- Moved flushing of G4cout to G4iosFinalization, resolving a problem of
    possible static destruction issue reported by ATLAS.
- Improved stability of static initialisation in G4ios; ensure unique
    initialisation and finalisation.
- Added method Report() to G4AllocatorList, for monitoring
    G4Allocator objects.
- G4StateManager, G4VStateDependent: added notifying methods when an event
    or a run is deleted to avoid a state-dependent class from accessing to an
    obsolete event/run object.
- G4PhysicsModelCatalog: added ID for the NuDEX nuclear de-excitation model;
    removed unnecessary ID (24110) for internal conversion.
- G4PhysicsTable: avoid crash in printout for the case when a vector in the
    table is not yet created (useful for debugging).
- Updated G4TBBTaskGroup for changes to underlying PTL-3.0.0 API.
- Added protection in G4ConvergenceTester in calStat() in case of
    zero histories.
- Addressed Coverity reported defects for use of std:move() to
    avoid copies in HEPNumerics; fixed potential division-by-zero in
    G4SimplexDownhill.
- Applied fixes from clang-tidy.
- Removed use of no longer supported TiMemory.
- Updated date of release for 11.3.
Graphical Representations
- G4SceneTreeItem: added G4String field FurtherInfo and access
    functions.
- G4Colour: clarify usage; added GetColor() (US spelling);
    added G4Exception.
- G4VVisManager: added EventReadyForVis(), used by
    G4SubEvtRunManager.
- In G4VVisManager, provide all base class interfaces in Sequential and MT
    modes, with an empty implementation modelling the Sequential case.
- In G4AttDef, deprecated output operator<<() that uses pointer.
- Minor improvements to messages in output operator<<() in G4VMarker
    and G4Visible.
- Fixed reported Coverity defects in BooleanProcessor and in 
    HepPolyhedronProcessor.
Hadronic Processes
- Cross Sections
    
    - New class G4InterfaceToXS, to compute inverse cross-section using
        G4PARTICLEXS cross-sections for neutrons and light ions.
- G4ChargeExchangeXS: switch computations from level of isotopes to
        level of elements; code becomes several times faster and accuracy is
        not lost. Added protections against negative components of cross-section
        and potential division by zero, which may be only possible at extreme
        high energy. Fixed problem in pion cross-sections according to
        prescription in the original paper. Handle special case of positive
        meson scattering off Hydrogen, the cross-section is propotional to the
        percent of deuterons.
- G4NeutronCapture: lowest energy limit is set to 10^-5 eV;
        below this energy no computations are done, to avoid numerical problems.
        Improved comments to the code.
- G4NeutronInelastic: implemented 1/v cross-section dependence below
        low-energy limit of the cross-section vector, if the cross-section
        does not start from null.
- Moved G4IsotopeList header to 'util' module.
- G4HadronXSDataTable: make class a singleton for registration and
        destruction of static objects with cross-section data; data are deleted
        only at the end of run. Use const pointers; fixed data structure;
        perform proper deletion of objects at exit.
- G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS, G4BGGPionElasticXS,
        G4BGGPionInelasticXS, G4ComponentBarNucleonNucleusXsc,
        G4HadronNucleonXsc, G4UPiNuclearCrossSection and
        G4CrossSectionDataSetRegistry: code clean-up; removed isMaster
        checks, removed mutex locks, removed unused variables and applied code
        formatting.
- G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS, G4NeutronInelasticXS,
        G4ComponentBarNucleonNucleusXsc, G4ComponentGGNuclNuclXsc, G4PiData and
        G4NucleonNuclearCrossSection: general clean-up of proton and neutron
        cross-sections; removed unused methods, removed not needed mutex locks,
        improved printouts, cross-sections outside data tables are equal to
        low or high edge of the table (not zero).
- G4BGGPionElasticXS, G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS:
        added check of G4VERBOSE compilation flag.
- In G4NeutronInelasticXS, in SelectIsotope(), fixed compilation
        warnings for implicit type conversions detected with macOS/XCode.
- G4ComponentGGNuclNuclXsc: removed debug printout, added check of
        G4VERBOSE.
- G4ParticleInelasticXS: perform initialisation of data only for given
        ion, not for all 5 ions.
- G4ParticleInelasticXS, G4NeutronElasticXS: access to G4PARTICLEXSDATA
        in class constructor; optimized usage of mutex lock; do not use
        isInitializer flag anymore.
- G4GammaNuclearXS: Use CHIPS parameterisation for Zr and W at all
        energies, for Cr and Y above 25 MeV and for Sn and Gd above
        16 MeV. The default transition energy 130-150 MeV
        remains for all other targets. Addressing problem report
        #2609.
- G4GammaNuclearXS, G4PhotoNuclearCrossSection, G4ParticleInelasticXS,
        G4NeutronInelasticXS: allow to reuse static data when several instances
        of cross-section classes are used.
- Fixed reported Coverity defect in G4ParticleInelasticXS,
        G4NeutronInelasticXS, G4EMDissociationCrossSection and in
        CHIPS inelastic cross-sections. Some code cleanup.
 
- Management
    
    - G4HadronicProcessStore: fixed handling of rare processes, printout, 
        cross-section maximum search, and deletion at the end of run.
        Fixed minor memory leak at exit by addition of G4ThreadLocalSingleton
        pattern and removed deletion of extra processes to avoid double
        deletion at exit.
- Fixed use of std::move() in G4ProcessTableMessenger,
        reported by Coverity.
 
- Utilities
    
    - G4HadronicParameters: introduced Get/Set methods for flag controlling
        the NuDEX gamma de-excitation module.
- Moved G4IsotopeList header with static data in this module, from
        'cross_sections'.
- G4IsotopeList: added table with low-energy threshold energies per
        atomic number.
- G4NucleaRadii: added two static functions to describe threshold shape
        by the old parameterisations derived from GHEISHA.
- G4HadronicParameters: introduced Getter/Setter for selecting the PT
        table type (a choice between calendf and njoy) for
        the URR treatment of low-energy neutrons; the choice must be done at
        initialization time, therefore it cannot be made via UI command in
        ParticleHP.
- G4LegendrePolynomial: optimized implementation as suggested in
        GitHub PR#70.
- Fixed reported Coverity defects for use of std::move() and
        const G4String&; in G4HadronicDeveloperParameters use
        const G4String& and const_iterator.
 
- Abla
    
    - Added array extension for super-heavy nuclei.
- Added the dissipation parameter for heavy hypernuclei.
- General code cleanup; removed unused data structures; consistently use
        G4 types; added pragma once for compilation.
- Fixed reported Coverity defects for uninitialised data in G4VarNtp
        and G4Abla.
 
- Bertini Cascade
    
    - Use G4UniformRand() instead of inuclRndm() wrapper
        which was defined and now removed in  G4InuclSpecialFunctions class.
- In G4CascadeFinalStateAlgorithm, in GenerateCosTheta(), for
        4-body and higher-body generation of cosTheta, use direct
        sampling of exp(1-cosTheta) instead of previously used
        rejection method on sinTheta*exp(-sinTheta). This removes the
        reflection about cosTheta=0 that caused a symmetric double
        bump in the Feynman-x distribution.
- Fixed reported Coverity defect in G4NucleiModel for use of
        std::move() and unitialised data.
 
- Binary Cascade
    
    - Fixed reported Coverity defects for use of std::move() in
        G4BinaryCascade. Minor code optimisation (use of nullptr,
        use of const iterators and pre-increment).
 
- De-excitation
    
    - G4Evaporation, G4EvaporationProbability, G4CompetitiveFission:
        provide initialisation of G4InterfaceToXS class also in the case of unit
        tests, when general initialisation is not performed; minor code
        clean-up. Results are not changed for the default configuration.
- G4DeexPrecoParameters, G4DeexParametersMessenger: added UI command to
        define inverse cross-section type.
- G4EvaporationProbability, G4VEmissionProbability: added use of
        G4InterfaceToXS as an alternative option.
- G4CameronGilbertPairingCorrections, G4CameronGilbertShellCorrections,
        G4NuclearLevelData, G4PairingCorrection: simplified computation of
        corrections; computations are now done in one place only, not spread
        among classes.
- G4EvaporationChannel, G4EvaporationProbability: fixed usage of pairing
        corrections; agreement with test data is improved.
        Improved implementation of methods ComputeInverseXSection(..)
        and ComputeProbability(..).
- G4EvaporationChannel: fixed computation of minimal kinetic energy of a
        fragment for odd-even residual nucleus.
- G4EvaporationProbability, G4EvaporationChannel, G4VEmissionProbability:
        do not apply Coulomb barrier for computation of minimum energy of
        emitted fragments if OPTxs=1 - use isotope cross-section
        instead; fixed minor memory leak at exit; define OPTxs
        parameter only in class constructor.
- G4DeexPrecoParameters: moved definition of int and bool parameters to
        source; improved comments; added default width of nuclear level needed
        for selection of final excitation in a decay of an excited state.
        Enable read and use of electron conversion data by default.
        For pre-compound model, use XS option 1 instead of 3.
- G4LevelReader: added two new protections to handle broken files with
        gamma level data: next level energy below previous one is ignored;
        transition from given level to itself with zero transition energy is
        ignored. Added two counters for limitation of warning printouts.
        Changed algorithm for handling of broken levels: do not change number
        of levels and number of transitions, broken levels or transitions are
        not deleted but protected. For the case that the energy of the next level
        is below the previous energy, its energy is set to Eprevious+2 eV.
        For the case of a transition to itself, the probability of such a
        transition is set to zero. Reduced printouts on problems in nuclear
        level data. Code clean-up and improved comments to code.
- G4PolarizationTransition: use optimized G4LegendrePolynomial.
- G4PhotonEvaporation: use std::abs() in all computations
        for 'JP', as it can be negative due to parity. Addressing problem report
        #2587.
- G4VEmissionProbability: renamed local variable to avoid possible
        shadowing. Use the new width parameter.
- G4ExcitationHandler: improved debug printout.
- G4ExcitationHandle, G4NeutronRadCapture: corrected model ID for IC
        electrons.
- G4GEMChannelVI, G4GEMProbabilityVI: updated interfaces and simplified
        algorithm of computation of probability.
- G4VCoulombBarrier, G4CoulombBarrier, G4GEMCoulombBarrier,
        G4FermiBreakUpUtil: code cleanup; removed unused headers and variables.
- G4CompetitiveFission: added normalisation factor if G4InterfaceToXS
        is used.
- G4CoulombBarrier: changed theRho parameter from 0.6 to 0.4.
- Fixed reported Coverity defects in G4VEmissionProbability, G4StatMF
        and G4PolarizationTransition.
- G4ShellCorrection, G4CookShellCorrections: code clean-up.
 
- Elastic scattering
    
    - In G4ChargeExchange, do not allow unphysical final state; implemented
        production and decay of omega(780) and f2(1270) for pion projectile;
        implemented decay of unstable isomers of recoil nucleus if not a
        natural isotope. Addressing problem report
        #2618.
- In G4ChargeExchange, fixed problem of the Hydrogen target; change event
        weight if cross-section biasing factor is applied.
        Added warning in G4ChargeExchangeProcess.
 
- Fission
    
    - G4FissLib: fixed compilation warning on gcc when LTO settings are
        enabled.
- Fixed reported Coverity defects for use of std::move().
 
- im_r_matrix
    
    - Fixed reported Coverity defects for use of std::move().
 
- INCLXX
    
    - Fixed reported Coverity defects for use of std::move().
 
- Lend
    
    - Fixed reported Coverity defects for pointless expression condition
        in ptwXY_div_ptwXY() operator, and dead code statement in
        MCGIDI_angularEnergy_parsePointwiseFromTOM() and
        in MCGIDI_energyAngular_linear_parseFromTOM().
 
- Lepto-nuclear
    
    - Fixed Coverity warning on unused variable in neutrino models.
 
- Nudex
    
    - New alternative and more sophisticated nuclear de-excitation model
        (NuDEX) as far as the emission of gammas and internal conversion
        electrons are concerned. The model relies on the dataset
        G4NUDEXLIB-1.0, which is pointed by the environment variable
        G4NUDEXLIBDATA. When NuDEX is not applicable - e.g. because the
        corresponding nucleus is not present in the dataset - the
        G4PhotonEvaporation class is utilised instead. Currently, the model
        will be used only for the neutron capture process, when ParticleHP is
        utilised; in the future it can be used more generally as one of the
        possible "evaporation" models. This, at the beginning, will only be
        possible for the physics list QGSP_BERT_HP.
 
- Particle High Precision
    
    - Introduced neutron treatment of the Unresolved Resonance Region (URR)
        via Probability Table (PT); relevant for precise simulations of nuclear
        reactor criticality and shielding applications.
        Reading probability table files in compressed format from the new
        G4URRPT-1.1 dataset pointed by the G4URRPTDATA environment variable.
- G4ParticleHPManager, G4ParticleHPProbabilityTablesStore,
        G4ParticleHPInelasticDataPT and G4ParticleHPInelasticURR: updated
        to use G4HadronicParameters for selecting the type of PT table for
        the URR treatment.
- Fixed cross-section computation with Doppler broading effect due to
        media temperature in G4CrossSectionXP.
- G4ParticleHPMessenger: removed recently introduced UI command for
        selecting the type of PT table (choice between calendf and
        njoy) for the URR treatment; replaced with a C++ interface in
        G4HadronicParameters that allows the selection to be made at
        initialization time.
- G4ParticleHPInelastic: fixed missed call to
        RegisterInelasticFinalStates() of G4ParticleHPManager in
        method BuildPhysicsTable() of G4ParticleHPInelastic.
- In G4ParticleHPElasticData, G4ParticleHPInelasticData,
        G4ParticleHPCaptureData, G4ParticleHPFissionData,
        G4ParticleHPThermalScatteringData and G4ParticleHPThermalScattering,
        use const pointer of G4ElementTable; removed unnecessary thread-local
        variables, dead code and commented code.
- Fixed reported Coverity defects for use of std::move() and
        const G4String&. Use const qualifier for methods
        where possible.
 
- Parton-String
    
    - G4FTFParameters: fixed typo, renamed method SetElastis() as
        SetElastic().
- G4ExcitedStringDecay: fixed minor memory leak suggested by Coverity.
- Fixed reported Coverity defect in G4NucleiModel for redundant assignment
        in G4LundStringFragmentation in Sample4Momentum().
    
 
- Pre-equilibrium
    
    - G4PreCompoundFragment: completed implementation of usage of XS
        cross-sections.
- G4VPreCompoundFragment, G4PreCompoundFragment: added a new option
        to use G4InterfaceToXS cross-section class.
- G4PreCompoundFragment, G4VPreCompoundFragment: removed shadowing and
        minor memory leak at exit; moved initialisation to constructors;
        define OPTxs parameter only in class constructor.
        Use G4InterfaceToXS class
 
- QMD
    
    - Fixed reported Coverity defects for use of std::move() and
        const std::string&.
 
- Radioactive Decay
    
    - Renamed G4RadioactiveDecay to G4VRadioactiveDecay and G4Radioactivation
        to G4RadioactiveDecay. The header for G4Radioactivation is preserved to
        provide backwards compatibility.
- Fixed reported Coverity defects for use of std::move().
 
Intercoms
- Unify range checking implementation in G4UIparameter/command; pure
    refactor to remove code duplication and complexity of user-facing
    classes.
- G4UImanager: in ApplyCommand(), fix to replace isMaster()
    with IsMasterThread() from G4Threading, to properly control
    highlighting of echoed commands in the Qt GUI in Serial mode.
- Fixed reported Coverity defects, use consistently const G4String&
    to avoid implicit copy.
- Removed use of no longer supported TiMemory.
Interfaces
- Improved identification of scene tree models: use full description,
    including embedded blanks.
- In G4UIQt, now all models are treated alike. Load tooltip with "further
    information", if any; inform user if scene tree is suppressed because
    of too many touchable. Fixed crash and bad rendering behaviour when
    using QOpenGLWidget with Qt6.
    Allow larger integers in widget response in function
    NewSceneTreeItemTreeWidget::ActWithAnInteger().
    Fixed case of opacity==0 for touchables.
- fixed case of compilation error in FilterOutput() in G4UIQt, with Qt-6.8.0
    version. Addressing problem report
    #2633.
- In G4UIWin32, fix in ConvertNewLines() to fix treatment of first
    character in G4cout output.
- Fixed reported Coverity defects, use consistently const G4String&
    to avoid implicit copy.
- Removed use of no longer supported TiMemory.
Materials
- G4IonisParamMat: added parameter for fraction of Orto positronium at rest.
- G4NistMessenger: added extra UI command for Orto positronium fraction;
    updated all commands for multi-threading.
- G4NistManager, G4NistElementBuilder, G4Material, G4Element, G4Isotope:
    general code clean-up; use std::size_t; simplified expressions;
    avoid use of static methods in class destructors.
- Improved stability of static initialisation: simplified G4NistManager
    singleton initialisation; migrated Isotopes, Materials, Elements's table
    to function static; delete the element of table at the same time as the
    table itself.
- Fixed reported Coverity defects in G4Material, G4NistElementBuilder,
    G4IonisParamMat and G4LatticePhysical.
Parameterisations
- Channeling:
    
    - Implemented new model of ionization losses for e+/- ionization
        G4VChannelingFastSimCrystalData with some updates in
        G4ChannelingFastSimModel and G4ChannelingFastSimCrystalData;
        fixed some bugs concerning particles of higher charges.
- Updated G4ChannelingFastSimCrystalData to be compatible with the new
        channeling dataset accessed through G4CHANNELINGDATA environment
        variable. Added option to use a custom input file.
- Added new process G4CoherentPairProduction for the simulation of
        coherent pair production by high energy gamma in an oriented crystal.
        It works as a G4VDiscreteProcess, not as a parameterisation and uses
        G4ChannelingFastSimCrystalData.
- Added some new accessor methods.
- Corrected semantic errors in G4BaierKatkov in RadIntegral() and
        in G4VChannelingFastSimCrystalData in CoulombElectronScattering().
- Fixed reported Coverity defect in G4VChannelingFastSimCrystalData.
 
- GFLASH:
    
    - Added GetEffDensity() function in
        GFlashSamplingShowerParameterisation.
- Applied correction of Es and sampling resolution function.
- Added Rossi approximation for Ec as comment.
- Applied clang-format to code.
 
Particles
- Added new class, G4ChargedUnknownParticle, similar to G4UnknownParticle for
    charged unknown particles. Part of ATLAS and LHCb request to assign
    automatically ionisation and multiple scattering processes to charged
    primary particles with valid PDG code but not known to Geant4.
- Applied correction suggested in
    GitHub PR#74,
    fixing G4ParticleMessenger never updating the currently selected particle.
    Simplified logic in patch to remove local static.
Persistency
- ASCII:
    
    - Fixed reported Coverity defects for use of const G4String&
        and std::move().
 
- GDML:
    
    - Added possibility to define G4GDML_DEFAULT_SCHEMALOCATION string as
        environment variable, to point to local path for the schema.
        Defined new flag G4GDML_DEFAULT_WRITE_SCHEMALOCATION for schema
        location in writing.
 
- mctruth:
    
    - Use G4String type consistently throughout the code, fixing reported
        Coverity defects.
 
Physics lists
- Constructors:
    
    - electromagnetic:
        
        - New constructor G4ChargedUnknownParticle, to be used on top on any
            reference physics list, to assign ionisation and multiple scattering
            (as well as transportation) processes to charged primary particles
            with valid PDG code but not known to Geant4.
- G4ChargedUnknownPhysics: replaced G4hIonisation and
            G4hMultipleScattering (which use G4ParticleDefinition) with the
            corresponding new classes G4DynamicParticleIonisation and
            G4DynamicParticleMSC (which use only G4DynamicParticle),
            respectively.
- G4EmStandardPhysicsWVI: return back ATIMA model for ionisation and
            fluctuations of ions in order to make comparisons with other
            models.
- G4EmStandardPhysics_option3: return back step limit type to
            fUseDistanceToBoundary and the default RangeFactor from
            0.03 to 0.04. This will allow to restore more
            accurate distributions for several medical benchmark tests.
- G4EmStandardPhysics_option3, G4EmStandardPhysics_option4,
            G4EmLivermorePhysics, G4EmLivermorePhysics, G4EmDNAPhysics: use
            fAllisonPositronium type of model for sampling of positron
            annihilation at rest (as in release 11.2).
- G4EmStandardPhysics_option4: use alternative model for positron
            annihilation on fly with 3-gamma annihilation channel enabled.
- G4EmStandardPhysics_option4, G4EmLivermorePhysics,
            G4EmStandardPhysics, G4EmStandardPhysicsWVI: added possibility to
            enable/disable 3 gamma annihilation on fly; take into account
            rename of the model G4eplusTo2GammaOKVIModel to G4eplusTo2or3GammaModel.
            By default it is enabled in G4EmStandardPhysics_option4 only.
            This option is not added to G4EmPenelopePhysics as here the
            original Penelope model for annihilation is used instead.
- G4GammaGeneralProcess: updated according to change in EM data
            tables.
- G4EmDNAPhysics: define default maximum kinetic energy 600 MeV
            instead of 300 MeV in order to have standard ionisation
            and multiple scattering always defined for DNA physics
            configurations.
            This allows to avoid situations when low-energy ions pass through
            DNA regions without interaction.
- G4EmDNAPhysics, G4EmDNAPhysicsActivator, G4EmDNAPhysics_option2,
            G4EmDNAPhysics_option4, G4EmDNAPhysics_option6 and
            G4EmDNAPhysics_option8: changed upper limit for DNA physics of
            Helium ions from 300 MeV to 400 MeV.
- G4EmDNABuilder: added nuclear stopping process for G4GenericIon
            below 1 MeV/u.
- Use EmParameters to control chemistry models in
            G4EmDNAChemistry_option3.
- Modified the molecule names of OH, HO2, O in MoleculeDefinition.
            Each molecule configuration has a molecule definition.
 
- decay:
        
        - G4UnknownDecayPhysics: extended to newly introduced
            G4ChargedUnknownParticle.
 
- factory:
        
        - G4PhysicsConstructorRegistry: fixed memory leak at exit, adopting
            G4ThreadLocalSingleton pattern.
- Minor code cleanup in G4PhysicsConstructorRegistry source.
 
- gamma_lepto_nuclear:
        
        - Added new G4CoherentPairProductionPhysics class, related to the
            process G4CoherentPairProduction of coherent pair production by
            high energy gamma in an oriented crystal.
 
- hadron_elastic:
        
        - Added self registration of G4ThermalNeutrons with the constructor
            factory.
 
- hadron_inelastic:
        
        - G4HadronPhysicsQGSP_BERT_HP: use alternative NuDEX model of
            gamma de-excitation.
- Introduced new class G4URRNeutrons to enable the special treatment
            of the Unresolved Resonance Region (URR) via Probability Tables (PT)
            for low-energy neutrons. It can be used on top of any _HP or _HPT
            physics list. Updated internal README.
 
- ions:
        
        - Updated description in G4LightIonQMDPhysics and internal README.
 
- limiters:
        
        - Fixed reported Coverity defect in G4FastSimulationPhysics and in
            G4GenericBiasingPhysics, to use const G4String& and
            std::move().
 
 
- Lists:
    
    - Added HPT extension to support adding G4ThermalNeutrons to
        extensible physlist factory.
- Changed how base phylist matching is done in G4PhysListRegistry in
        order to support _HP lists and new _HPT extension;
        requires match to be exact or the remaining part start with _
        or +.
- G4PhysListRegistry: fixed compilation on XCode for implicit type
        conversion. Minor code cleanup (use of nullptr, G4bool,
        std::size_t, singleton instance initialisation). Initialise
        the instance only the first time it gets created.
- G4PhysListFactory: use std::size_t.
 
- Util:
    
    - Static initialisation improvement for G4HadParticles.
 
Readout
- Fixed reported Coverity defects, use consistently const G4String&
    to avoid implicit copy.
Run
- Tuned verbose levels to reduce printouts during event loop.
- First full implementation of of sub-event parallelism, adding the
    creation and processing of sub-events in workers, plus the merging
    of results back into events on the main thread.
    No impact of the core changes needed to support sub-event parallelism in
    any other mode (Seq, MT, Tasking) other than some counting aspects with
    retained events.
- Set number of random numbers generated as the seeds of workers for
    sub-event level parallelism.
- Defined UI alias representing the run mode [sequential, eventParallel,
    subEventParallel]. This alias can be used in macro file.
- G4RunManagerFactory: added sub-event parallel mode as an option.
- G4RunMessenger: added a command for trajectory merging in sub-event
    parallel mode.
- G4SubEvtRunManager, G4WorkerRunManager, G4WorkerSubEvtRunManager: added an
    option to merge trajectories created by worker threads in sub-event parallel
    mode.
- Fix in G4WorkerTaskRunManager and G4TaskRunManager, to process only
    NumberOfEventsPerTask. Before this change, each thread would
    process all its events in a single task since
    GetNumberOfEventsToBeProcessed() returns the number of all events
    in the run. All other tasks would immediately return because no work is
    left.
- Fixed static memory leak of process and tracking managers in worker threads.
- Provide static initialization for masterWorlds in G4MTRunManager.
    Adapted G4SubEvtRunManager and G4TaskRunManager accordingly.
- G4RunManagerKernel, G4RunManager, G4SubEvtRunManager: cleanly delete G4Event
    objects at the end of each run as long as these events are not requested to
    be kept for redrawing during the following Idle state.
    The kept events are deleted at the beginning of next run or at program
    termination.
- G4Run: added GetNumberOfKeptEvents() method.
- Extended diagnostics and output from material scanner.
- Added call in G4WorkerRunManager to use parallel initialisation of
    voxels.
- In G4RunManager, in ReinitializeGeometry(), added call to new
    function from G4FieldBuilder Reinitialize().
- G4RunManagerKernel: removed call to ResetNavigator() during
    initialisation. ResetNavigator() is now invoked only at the
    beginning of BeamOn().
- G4PhysicsListHelper: added DNATripleIoni and
    DNAQuadrupleIoni for the implementation of multiple-ionisation
    processes in Geant4-DNA. Added XrayReflection (fGammaReflection).
- G4RunManager: added SetDefaultClassification() methods to enable
    setting the classification for tracks newly arriving to a stack.
- Access G4GeometryManager singleton through its GetInstance() call
    in G4RunManagerKernel and G4WorkerRunManager.
- Updated G4AdjointSimManager and G4AdjointSimMessenger to allow running
    adjoint simulation in MT mode.
- Removed use of no longer supported TiMemory.
- Fixed compilation warnings for implicit type conversions on macOS/XCode
    on G4MSSteppingAction. Use consistently G4 types.
- Fixed reported Coverity defects: in G4MSSteppingAction for restoring
    original stream format state; in G4RunManager and others, for use of
    std::move() and restructured conditionals. Also fixes in
    G4Task/SubEvtRunManager.
- Updated G4TaskRunManager for changes to underlying PTL-3.0.0 API.
    No changes to behaviour expected.
Track & Tracking
- Added optional copy of touchable when copy constructing a G4Track, to
    support sub-event level parallelism.
- G4Trajectory and G4TrajectoryPoint: added CloneForMaster() method
    for merging trajectories created by worker thread in sub-event parallel
    mode. Refined by introducing G4ClonedTrajectory
    and G4ClonedTrajectoryPoint classes for clean and safe use of G4Allocator.
    Also added G4ClonedSmoothTrajectory and G4ClonedSmoothTrajectoryPoint.
- G4RichTrajectory and G4RichTrajectoryPoint are modified to directly
    inherit G4VTrajectory and G4VTrajectoryPoint abstract base-classes to
    avoid double use of G4Allocator. Added G4ClonedRichTrajectory and
    G4ClonedRichTrajectoryPoint classes.
- Some code cleanup, providing more easy reading of class headers; expected
    tiny CPU speedup; identical results.
- G4Track, G4Step, G4StepPoint: some code cleanup; improved comments.
- G4Step: move methods to compute delta energy and momentum to inline
    removing G4Exception but improving comments to these methods; removed
    G4ThreadLocal variable.
- G4VParticleChange: improved layout of variables.
- G4ParticleChangeForGamma, G4ParticleChangeForLoss: reserve vector of
    secondaries.
- Fixed reported Coverity defects for use of std::move() in
    G4AdjointCrossSurfChecker.
- Removed use of no longer supported TiMemory.
Visualization
- General
    
    - Fixed reported Coverity defects.
 
- Management
    
    - Rationalisation, simplification and code tidying.
    
- Updated visualisation manager to correctly merge/handle asynchronous
        event merging (also resolving long standing issues with post
        processing). Implemented EventReadyForVis(), used by
        G4SubEvtRunManager; restructured EndOfEvent functions to accommodate
        this and avoid code duplication; this involved introducing:
        Relinquishable, EndOfEventKernel and
        EndOfEventCleanup.
- Corrected the use of KeepForPostProcessing/PostProcessingFinished.
- G4VisExecutive: restored OpenGL as default backend for Qt6.
- Improved identification of scene tree models: use full description,
        including embedded blanks.
- G4VViewer: check validity of arguments in SceneTreeScene constructor.
        Pre-calculate quantities in SceneTreeScene constructor; pre-calculate
        the number of touchable; if more than 10000, suppress them in the
        scene tree and add some information about it to the model item so that
        it pops up as a tooltip in the GUI.
        More logical order of some functions.
- G4VSceneHandler: specify the G4PhysicalVolumeModel for construction
        of scene tree. Simplified loop over models, added some printing.
        Print number of touchable by depth (if verbosity >= confirmations).
        Print problematic volumes (if verbosity >= confirmations).
        In DrawEvent(), DrawEndOfRunModels(), check if viewer is
        ReadyToDraw() at begin of method.
        Moved some printing outside the loop over models.
- Limit the number of scene tree items. For complex geometries, the scene
        tree can take up a lot of space, and, anyway, not easy to navigate.
        Now suppressing the scene tree if the number of touchable exceeds
        10000 (equivalent to about 20 MB).
- G4VisCommandsViewer: use GetSceneTree() rather than
        AccessSceneTree() when not necessary. Simplified use of view
        parameters of a pre-existing viewer; use the parameters of the most
        recent viewer whatever its type in /vis/viewer/create.
        Exclude GlobalMarkerScale from parameters copied from pre-existing
        viewer, thus each viewer is allowed to specify its own
        GlobalMarkerScale.
- In G4VisExecutive, trap use of run-time visualisation driver choice,
        and (if using run-time choice) insist the UI session is instantiated
        *before* G4VisExecutive.
        Keep argc, argv and user-specified system, if specified, for
        delayed use. Moved informational (G4warn) from G4VisManager.
        Removed duplicate instantiation of TOOLSSG_OFFSCREEN.
        Removed inclusion of QtGlobal header, no longer needed.
- Delay determination of the run-time-chosen default driver.
        The run-time-chosen default driver is not actually used until the first
        use of /vis/open or /vis/sceneHandler/create without
        driver parameter, so we delay to this point. This catches the situation
        when the user instantiates the UI session *after* instantiating the
        vis manager.
- G4VisManager: make GetDefaultGraphicsSystemName() virtual and
        non const.
        The code for choosing a default driver *has to be* in user space, i.e.,
        in G4VisExecutive, so that it has access to use flags. Modified the
        informational (G4warn) in PrintAvailableGraphicsSystems()
        to give advice and point to further information to be given after
        /vis/open.
        Protected Begin/EndOfRun() against invalid view (includes
        check on existence of a scene). Some tidying and streamlining.
        Introduced local Booleans isValidViewForRun and isFakeRun.
        Introduced PrintAvailableVerbosity().
        In GetVerbosityValue(), print verbosity options on unknown
        or empty argument. Call PostProcessingFinished() for _every_
        event in EndOfEventCleanup().
        Fixed "accumulate" bug in Serial mode, and other small improvements.
        Improved printing of colours in PrintAvailableColours() and
        advise on use. Rationalised code and tyding.
        Protect KeepForPostProcessing() mutex lock;
        KeepForPostProcessing() is called on a worker thread,
        PostProcessingFinished() is called on the vis sub-thread,
        so should be protected.
- G4VisManager, G4VisCommandsSceneAdd: optimised timing of G4Event for
        KeepForPostProcessing() and PostProcessingFinished()
        so that event object that are not requested to be kept are cleanly
        deleted at the end of each run. Kept events are deleted at the
        beginning of the next run or when the program terminates.
        Use GetNumberOfKeptEvent() from G4Run to properly display
        the number of kept events.
- G4VisCommandsTouchable: /vis/touchable/dump and findPath
        do not need a scene handler nor a viewer.
        Moved them to the beginning of SetNewValue() in
        G4VisCommandsTouchable, before the check on scene handler and viewer.
        This allows the user to /vis/touchable/dump even if not yet
        opened a viewer.
- G4VisCommands: in /vis/list, added printing of verbosity
        options. In /vis/verbose, changed default value to empty
        string.
- G4VisCommandsSceneAdd: date and time are updated for every event
        displayed. Ensure the logo respects the current requested
        number of sides per circle in /vis/scene/add/logo.
- G4VViewer: added virtual ReadyToDraw(), helps avoiding a
        crash on macOS if doing /run/beamOn in vis.mac at startup.
- G4ViewParameters: minor improvements to messages in output
        operator<<().
- Introduced TOOLS_USE_FREETYPE flag in vis management for /vis/plot
        UI command. In G4VisCommandsCompound, if TOOLS_USE_FREETYPE is set,
        augment /vis/plot UI command to take style argument.
- Removed use of G4MULTITHREADED symbol where not required, using
        runtime checks as far as possible.
 
- Modeling
    
    - G4PhysicalVolumeModel: added data field TotalTouchables and
        access functions. Code indentation.
- G4TextModel: use single quote (') to delineate actual text in
        description.
- G4TrajectoryDrawByEncounteredVolume, G4TrajectoryEncounteredVolumeFilter:
        replaced check on trajectory type using dynamic_cast with a
        simple check on the existence on the required G4Att.
 
- OpenGL
    
    - In G4OpenGLQtViewer, fixed MT issue of possible dead-lock in case
        multiple OGLI or OGLS viewers are enabled and when issuing
        /run/beamOn. Restored picking feature for Qt6 and implemented
        2D draw text in DrawText().
        Resolved the timing issues around switching to the vis sub-thread with
        the use of G4CONDITIONWAITLAMBDA.
- G4OpenGLQtViewer: fixed potential compilation error in
        currentTabActivated(). Addressing problem report
        #2633.
- In G4OpenGLImmediateQtViewer and G4OpenGLStoredQtViewer, removed usage
        of paintEvent() for Qt6, paintGL() should be
        sufficient. For updateQWidget, use update() to trigger a
        repaint. In Initialise() check validity of widget type, to
        avoid observed crash at startup on macOS; do the same in
        ClearView(), SetView().
- Fix in G4OpenGLImmediateQtViewer for Qt6 for producing animation when
        issuing /vis/viewer/interpolate viewfiles/movie-1.
- G4OpenGLStoredQtSceneHandler: in ClearStore(), commented out
        some code related to the old scene tree.
- Fixed small memory leak in G4OpenGLQtViewer in DrawText().
- Fixes for Qt5 and Qt6 to avoid a crash in case of /run/beamOn
        is called in vis.mac at startup.
- Use runtime checks for MT mode where possible.
- Make headers of implementation detail classes private.
 
- OpenInventor
    
    - G4OpenInventorQtViewer: in Qt6, reparent G4OpenInventorQtExaminerViewer
        in its own QWidget, allowing to restore correct behaviour when opening
        multiple viewers. Properly handle viewer destruction.
        Have addInTab done in Initialise() method. Avoid to
        do an examiner viewer "move/resize" in Initialise() method,
        as causing strange widget rendering behaviour.
- In G4OpenInventorQtExaminerViewer, allow with Qt6 to map a dialog in
        case being closed with the mouse. Have the title window reflecting the
        name of the viewer. In MT mode, fixed behaviour when issuing multiple
        /run/beamOn commands within multiple viewers.
- Make headers of implementation detail classes private.
 
- Qt3D
    
    - Added missing call to fpPhysicalVolumeObjects.clear() in
        EstablishG4Qt3DQEntities() in G4Qt3DSceneHandler. Fixes
        cases of crash when opening multiple viewers with "/vis/open Qt3D".
- In G4Qt3DViewer destructor, call setRootEntity(nullptr) to
        disconnect the scene from a viewer.
        Fixed timing issues around switching to the vis sub-thread
        with the use of G4CONDITIONWAITLAMBDA.
- In G4Qt3DSceneHandler destructor, clear the scene tree.
- In G4Qt3DViewer, implemented resizeEvent() method to avoid
        a bad aspect ratio at viewer creation. Fixes for Qt5 and Qt6 to avoid
        a crash in case of /run/beamOn is called in vis.mac at startup.
 
- ToolsSG
    
    - Replace TOOLSSG vis driver variables that are just synonyms for more
        fundamental config options (e.g. GEANT4_USE_QT) with the underlying
        variable.
- Use runtime checks for MT mode where possible.
- Make Freetype a private dependency in CMake script.
 
- Vtk
    
    - In G4VtxQtViewer, fixed MT issue of possible dead-lock in case multiple
        Vtk viewers are enabled and when issuing /run/beamOn.
        Fixed timing issues around switching to the vis sub-thread
        with the use of G4CONDITIONWAITLAMBDA.
        In DoneWithVisSubThread(), SwitchToMasterThread() protect
        against a possible null context; fixing crash in case of doing
        /run/beamOn in vis.mac at startup.
 
Data sets
- Updated photon evaporation data set version, G4PhotonEvaporation-6.1:
    
    - New database compliant with ENSDF version of March 5th 2024.
 
- Updated radioactive decay data set version, G4RadioactiveDecay-6.1.2:
    
    - New database compliant with ENSDF version of March 5th 2024.
- Corrected and checked files for neutron, proton and sp. fission.
        Restored some files from 5.7 set, that were already corrected in the
        past following user comments or from DDEP data.
- Fixed z2.a5 and z3.a5 elements and updated README.
 
- Updated aata set of nuclides state properties version, G4ENSDFSTATE-3.0:
    
    - New database compliant with ENSDF version of March 5th 2024.
 
- Updated version of data set for neutron energies, G4PARTICLEXS-4.1:
    
    - Updated data for all isotopes, for neutron, proton and light ion
        cross-sections. Fixed cross-sections for Argon, Promethium, Astatine,
        Radon, Francium. Fixed low-energy cross-section; low-energy limits of
        cross-sections per target are verified and updated based on neutron
        data.
 
- New data set for the simulation of channeling trajectories,
    G4CHANNELINGDATA-1.0:
    
    - New data set for the simulation of channeling trajectories. Includes
        the properties of the crystal lattice of a certain material and in a
        certain crystallographic direction (along either crystal planes or axes). 
        References:
        A. A. Samarskii and A. V. Gulin, Numerical Methods (Nauka, Moscow, 1989).
        G. I. Marchuk, Methods of Numerical Mathematics (Springer-Verlag, 1975).
        V. N. Baier, V. M. Katkov, and V. M. Strakhovenko, Electromagnetic
        Processes at High Energies in Oriented Single Crystals (W.Scientific, 1998).
 
- New optional data set for NuDEX hadronic model, G4NUDEXLIB-1.0:
    
    - New [optional] dataset required to enable the NuDEX hadronic model
        (E. Mendoza et al., NIMA 1047, 167894 (2023)
        https://doi.org/10.1016/j.nima.2022.167894).
        Including: data file with general parameters used by NuDEX; data tables
        to get internal conversion factors, obtained from BrICC; nuclear level
        schemes and densities downloaded from the RIPL-3 data library; files
        containing primary capture gamma rays, obtained from ENSDF; photon
        strength function parameters, obtained from RIPL-3 and from the IAEA
        Photon Strength Function Database; folder to change the default
        parameters for the decay of specific nuclei.
 
- New optional data set for the treatment of low-energy neutrons, G4URRPT-1.1:
    
    - New [optional] Probability Table dataset, used for the treatment of
        low-energy neutrons in the Unresolved Resonance Region (URR), at
        temperature of 293.15 K, processed with both NJOY and CALENDF.
        As described in: M. Zmeskal et al., Comp.Phys. arXiv:2404.16389.
 
Examples
- Updated reference outputs, macros, READMEs and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- Updated URL for schema validation in all GDML files to valid short address.
- Applied clang-format to basic and extended examples.
- advanced
    
    - Created a new dna category for DNA advanced examples.
        Moved moleculardna example from extended to advanced.
- dna/cellularPhantom
        
        - New application showing how to simulate the irradiation of a 3D
            voxel phantom containing biological cells, created from a confocal
            microscopy 24-bit RGB image.
            Reference: P. Barberet et al., "Monte-Carlo dosimetry on a realistic
            cell monolayer geometry exposed to alpha-particle", Phys. Med. Biol.
            57 (2012) 2189-2207.
 
- dna/dsbandrepair
        
        - Use EmParameters to control chemistry time step model.
- Modified the molecule names of OH, HO2, O in MoleculeDefinition.
            Each molecule configuration has a molecule definition.
- General code cleanup; merged classes that have the same
            functionality in PhysStage and ChemStage.
 
- dna/moleculardna:
        
        - Modified the molecule names of OH, HO2, O in MoleculeDefinition.
            Each molecule configuration has a molecule definition.
- Added plasmid geometry.
- Added missing plasmid analysis root macro file.
- Added chromosomal geometry related files.
- Updated /dnageom/interactionDirectRange to
            2.0 angstrom.
- Modification of TimeStepModel interface.
- Use the physico-chemistry builder.
- Fixed bug in DNAGeometryMessenger.
 
- eFLASH_radiotherapy
        
        - Added FlashPhysicsListMessenger class to allow changing the physics
            list by macro commands (opt3, opt4, Penelope and Livermore).
- Removed unused includes of analysis headers from FlashRunAction.
- Added a new geometry in DetectorConstruction; added an array of
            multiple small size silicon carbide detectors within the water
            phantom for dose distribution computation.
- Added sensitive detector class for the silicon carbide array.
- Updated macro files.
 
- eRosita
        
        - Avoid deleting anything after deletion of run-manager in
            main().
 
- exp_microdosimetry
        
        - Added SiC microdosimeter geometry in DetectorConstruction.
 
- fastAerosol
        
        - Updated for changes in accumulables: use new Register()
            method with shorter name.
 
- hadrontherapy
        
        - Updated main(), input macros, physics list, run action
            and passive proton beamline: general code cleanup, bug fixing and
            readability improvements.
- Updated for changes in accumulables: use new Register()
            method with shorter name.
 
- STCyclotron
        
        - Removed unused includes of analysis headers from STCyclotronRunAction.
 
- xray_telescope
        
        - Removed unnecessary use of G4VisManager and some UI commands
            fixing stability problems.
 
 
- basic
    
    - Simplified and modernized CMake scripts for all basic examples.
- B1
        
        - Updated for changes in accumulables: use new Register()
            method with shorter name.
 
- B3
        
        - Looping over G4THitsMap via range for loop instead of iterators.
- Updated for changes in accumulables: use new Register()
            method with shorter name.
 
 
- extended
    
    - biasing
        
        - GB06
            
            - Avoid call to static volumes store in DetectorConstruction class.
 
 
- electromagnetic
        
        - TestEm0
            
            - DetectorConstruction: introduced Xenon gas.
- Added new macro xenonGas.mac.
 
- TestEm1
            
            - Run, EventAction, TrackingAction, HistoManager: compute and
                plot energy leakage.
 
- TestEm4
            
            - PhysicsLists: fixed annoying warnings on decay table;
                removed obsolete methods.
- Run: code cleanup; removed Tabs.
 
- TestEm5
            
            - TrackingAction: added protection against wrong argument of
                std::acos(), rarely happening for very high energy
                projectile particles.
            
- Removed macro subcut.mac.
 
- TestEm7
            
            - RunAction: added protection to histogram binning for very
                low step limit.
 
- TestEm11
            
            - TrackingAction: in energy leakage, added special treatment
                for positron.
 
- TestEm12
            
            - Added comments to dna.mac input macro.
 
- TestEm15
            
            - SteppingAction: code cleanup; removed Tabs.
 
 
- eventgenerator
        
        - exgps
            
            - Updated build script for CTests definitions.
 
- pythia/py8decayer
            
            - Updated to Pythia8.3.10 for testing.
- Added Py8DecayerEngine to override Pythia8 native engine with
                the default one from Geant4 (CLHEP), to properly run in the
                MT/Tasking mode.
- Updated main() to use MT mode; some code cleanup.
 
- HepMC/HepMCEx01
            
            - Avoid deleting anything after deletion of run-manager in
                main().
 
 
- exoticphysics
        
        - Introduced 'channeling' examples category, created 'ch0' example
            out of original example and added 'ch1', ch2' and 'ch3' examples.
- channeling
            
            - ch1
                
                - An easy demonstration of the minimum requirements necessary
                    to integrate the G4ChannelingFastSimModel and the
                    G4BaierKatkov model into a project in order to simulate the
                    physics of channeling and channeling radiation/coherent 
                    bremsstrahlung.
 
- ch2
                
                - An enhanced version of ch1, providing the user with the
                    full functionality of both demonstrated models, with
                    parameters set up via a macro.
 
- ch3
                
                - New example demonstrating the minimum requirements necessary
                    to integrate the G4CoherentPairProduction process into a
                    project, along with the demonstrated models, to simulate
                    the physics of electromagnetic showers in an oriented
                    crystal.
 
 
- phonon
            
            - Updated build script for CTests definitions.
 
 
- field
        
        - Replaced FieldSetup and FieldMessenger classes with usage of new
            field builder class G4FieldBuilder.
- Moved setting field value (ThreeVector) from FieldSetup (now
            removed) in DetectorConstruction and its messenger and removed
            setting of Z-value only.
- field01
            
            - Use default Tasking run-manager from G4RunManagerFactory.
- Use default random number generator.
- Use GeometryHasBeenModified() in place of
                ReinitializeGeometry() in DetectorCostruction
                UI commands implementation, for thread safety.
 
- field02
            
            - Migrated to use G4RunManagerFactory.
- Use default random number generator.
- Use GeometryHasBeenModified() in place of
                ReinitializeGeometry() in DetectorCostruction
                UI commands implementation, for thread safety.
 
- field03
            
            - Migrated to use G4RunManagerFactory.
- Use default random number generator.
- Simplified F03DetectorConstruction() constructor.
- Use GeometryHasBeenModified() in place of
                ReinitializeGeometry() in DetectorCostruction
                UI commands implementation, for thread safety.
 
- field04
            
            - Migrated to use G4RunManagerFactory.
- Use default random number generator.
- Avoid use of G4AutoDelete for G4StepMax, as clashing with
                thread-local singletons deletion operated by G4TaskingRunManager.
- Use GeometryHasBeenModified() in place of
                ReinitializeGeometry() in DetectorCostruction
                UI commands implementation, for thread safety.
 
- field05
            
            - Migrated to use G4RunManagerFactory.
- Use default random number generator.
 
- field06
            
            - Use default random number generator.
 
 
- hadronic
        
        - FlukaCern
            
            - Fixed leakeage issue in fluka_interface; should not propagate
                the track/projectile's direction from Geant4 to the event
                generator, as the transformation of the final state is already
                performed in Geant4. The Fluka event generator shall hence
                work in Geant4 local frame, while Geant4 is in charge of
                transforming the final state back to the lab.
- Fixed headers re-rodering by clang-format.
 
- Hadr01
            
            - Enable usage of the NUDEX library for QGSP_BERT_HP physics
                in main().
 
- Hadr03
            
            - PrimaryGeneratorAction: added tiny shift of position of the
                particle gun from the world volume boundary; fixing a warning
                now detecting this.
- PhysicsList: removed G4RadioactiveDecayPhysics.
- Updated fusion.mac input macro.
 
- Hadr05
            
            - PrimaryGeneratorAction: added tiny shift of position of the
                particle gun from the world volume boundary; fixing a warning
                now detecting this.
- RadioactiveDecayPhysics: added Triton.
- Applied coding rules.
 
- Hadr07
            
            - RadioactiveDecayPhysics: added Triton.
- Applied coding rules.
 
- NeutronSource
            
            - PhysicsList: added G4HadronElasticPhysicsXS.
- RadioactiveDecayPhysics: added Triton.
- GammaNuclearPhysics, GammaNuclearPhysicsLEND: applied coding
                rules.
 
 
- medical/dna
        
        - Moved 'moleculardna' example from extended to advanced examples
            module.
- chem1:
            
            - Changed world volume colour to make it different
                from the white background.
 
- chem3:
            
            - Updated TimeStepAction and added function to show how to get
                a specific species ID, positions at each time step.
 
- chem4:
            
            - Corrected molecule name in macro file.
 
- chem6:
            
            - Use EmParameters to control chemistry models.
- Added /process/chem/TimeStepModel IRT UI command
                in macro file beam_HCP.in.
- Corrected molecule name in macro file.
 
- dnadamage1:
            
            - Fixed compilation errors on macOS/clang with C++23 enabled.
 
- dnadamage2:
            
            - Modified molecule names of OH, HO2, O in MoleculeDefinition.
                Each molecule configuration has a molecule definition.
- Use G4ChemDissociationChannels_option1 builder to avoid
                duplication.
 
- dnaphysics:
            
            - PhysicsList: switched to DNA physics constructors i/o model
                activator.
- Updated DetectorConstructor and DetectorMessenger files with
                given values of material density and World size.
- Added messenger for World size change.
- Added messenger for material density change.
- Added new n-tuple to collect track information.
- Added plotDeexcitation.C analysis and deexcitation.in macro.
- Updated comments in headers.
 
- mfp:
            
            - Added auto to plot.C. Code cleanup.
 
- microdosimetry:
            
            - Removed original content of the example; replaced by dnaphysics
                example.
- Code simplification to demonstrate the usage of
                G4DNAPhysicsActivator.
 
- microprox:
            
- microyz:
            
- range:
            
            - Added auto to plot.C. Code cleanup.
 
- scavenger:
            
            - Modified the molecule names of OH, HO2, O in MoleculeDefinition.
                Each molecule configuration has a molecule definition.
 
- slowing:
            
            - Added auto to plot.C. Code cleanup.
 
- spower:
            
            - SteppingAction: extended use for ions heavier than helium.
            
- In spower.in input macro, added extra commands to show how
                to shoot ions heavier than helium.
- Code cleanup.
 
- svalue:
            
            - Added auto to plot.C. Code cleanup.
 
- UHDR:
            
            - Updated bounce off condition based on:
                Karamitros M. et al.2020,arXiv:2006.14225 (2020).
- Implemented PBC based on
                https://github.com/amentumspace/g4pbc
                to calculate microdosimetry.
- Modified the molecule names of OH, HO2, O in MoleculeDefinition.
                Each molecule configuration has a molecule definition.
- Added a maximum dose (2 times of cut-off dose) to abort the
                event.
- Updated visualization mode for physical stage.
- Fixed compilation errors on macOS/clang with C++23 enabled, for
                incomplete types of smart-pointers through defaulted destructors.
 
- wvalue:
            
            - Added auto to plot.C. Code cleanup.
 
 
- medical/fanoCavity
        
        - Make PhysicsLists of the example coherent with physics_list library.
            Fixed annoying warnings on decay table.
 
- medical/fanoCavity2
        
        - Make PhysicsLists of the example coherent with physics_list library.
 
- medical/radiobiology
        
        - Updated for changes in accumulables: use new Register()
            method with shorter name.
 
- parallel
        
        - Removed obsolete TopC example.
- MPI
           
           - Updated build script for CTests definitions.
 
- ThreadsafeScorers
           
           - Removed use of no longer supported TiMemory.
 
 
- parameterisations
        
        - gflash/gflasha
           
           - ExGflashHistoManager: fixed initialisation of fVerbose.
- Bigger calo length, radial histos in fraction of radius Moliere;
               fixed index range.
- Restored setMat() functionality; added geometry
               commands.
- Moved event generator defaults from vis.mac to PrimaryGenerator
               class.
- Updated macro files and code cleanup.
 
- Par04
           
 
- polarisation/Pol01
        
        - Updated for changes in accumulables.
 
- radioactivedecay
        
        - Activation
            
            - PhysicsList: added G4HadronElasticPhysicsXS.
- RadioactiveDecayPhysics: added Triton.
- GammaNuclearPhysics, GammaNuclearPhysicsLEND: applied
                coding rules.
 
- rdecay01
            
            - PhysicsList: set MeanLifeThreshold to 1 nanosecond.
- Added time windowed biasing to rdecay01.in macro.
- In timeWindowBiased.mac and rdecay01.in, removed
                /process/had/rdm/BRbias.
 
 
- runAndEvent
        
        - RE03
           
           - Adding ability to run in sub-event parallel mode.
 
- RE05
           
           - Avoid deleting anything after deletion of run-manager in
               main().
- Modified exampleRE05.in macro to temporarily disable use
               of the HEPEvt interface, pending event data update.
 
- RE07
           
           - Fixed compilation warnings for potentially initialised local
               variable in EmStandardPhysicsTrackingManager in
               PostStepDoIt().
- Fixed compilation warning on clang-19.
 
 
 
- vidualization
        
        - standalone
           
           - A smarter way of getting extent of geometry that ignores
               invisible volumes. Thus, if the world is marked invisible,
               it ignores it.
- In DrawGeometryVisAction: use G4PhysicalVolumeModel to
               determine extent.
- In vis.mac, added some commands from B1 vis.mac macro,
               to get a nice view.
 
- userVisAction
           
           - Removed run1.mac and run2.mac macros, as not useful in this
               example context.
 
- vtk
           
           - Updated for changes in accumulables: use new Register()
               method with shorter name.
- Removed unused macro vtkExample.in.