# Geant4 11.3 Release Notes

Geant4 11.3 Release Notes

December 6th, 2024

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

1. Supported and Tested Platforms
2. Supported CLHEP, VecGeom and PTL versions
3. Items for migration of the user code
4. New Developments and Capabilities
5. Expected effects on physics and performance
6. Known Run-Time Problems and Limitations
7. Compilation Warnings
8. Geant4 Software License
9. 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<T> in G4AccValue<T>, 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:
      - Code cleanup.
    - microyz:
      - Code cleanup.
    - 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
      - Bump tensorflow version, as suggested in GitHub Dependabot PR#75.
  - 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.