Geant4 11.4 Release Notes

December 5th, 2025

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-15.2.0.
  Tested on 64 bit architectures (Intel or AMD) with Alma Linux 9 (based on RedHat Linux Enterprise 9).
- macOS 26.1 Tahoe with Apple LLVM/Clang-17.
  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, 11.5/12.1/13.2/14.2, clang-19/20
- Linux, Intel-icx 2025.3
- macOS 13.7 Ventura with Apple LLVM/clang-15
- macOS 14.7 Sonoma with Apple LLVM/clang-16

## 2. Supported CLHEP, VecGeom and PTL versions

This release of Geant4 has been verified with CLHEP, release 2.4.7.2. 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 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

- The build of the `G4processes` library has been split into two parts, `G4processes_hadronic` for the hadronic part and `G4processes_core` for the remainder. `G4processes` remains valid as interface through CMake supporting creation of categories that are just an interface to other categories.
- The default configuration now enables use of Qt6 when selecting Qt support for visualisation. The user must set `GEANT4_USE_QT_QT5` in configuration in order to force find/use of Qt5 instead.

Electromagnetic and optical physics

- New dataset `G4EMLOW-8.8` is required and should be used.

Hadronic physics

- New hadronic datasets `G4PhotonEvaporation-6.1.2, G4INCL-1.3, G4PARTICLEXS-4.2` are required and should be used.
- Note that since release 11.3.2, it has been introduced an option to roll back the Bertini-like intra-nuclear cascade model (BERT) as it was in Geant4 version 11.2. This is possible via the C++ interface: `G4HadronicParameters::Instance()->SetBertiniAs11_2(true)`. The motivation is that not all thin-target data show consistently that the developments in BERT model made in version 11.3 are improving the agreement with simulation.

Run

- In G4PhysicsListHelper, changed ordering of processes: for X-Ray production using ordering parameter 100 for post step instead of 1000; fixed ordering for muon capture at rest. This change may affect users' hard-coded physics-lists.

Visualization and Modeling

- Removed HepRepFile and Qt3D visualisation drivers, no longer viable to develop and maintain.

Data Sets

- This release introduces new data set versions. Please see the corresponding details in Section 9 of this document.
  - New data set versions: `G4PhotonEvaporation-6.1.2, G4INCL-1.3, G4CHANNELING-2.0, G4EMLOW-8.8, G4PARTICLEXS-4.2`.
  - 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.
  - Optional nuclear data sets for use with the LEND (Low Energy Nuclear Data) Cross Section and Model can be optionally downloaded here:
    LEND_GNDS2.0_ENDF.BVII.1 (2.87 Gb), LEND_GNDS2.0_ENDF.BVIII.0 (4.24 Gb), LEND_GNDS2.0_ENDF.BVIII.1 (5.78 Gb).
    The `G4LENDDATA` environment variable should be used to switch the path to the appropriate nuclear data library unpacked and installed.

## 4. New Developments and Capabilities

General

- Enabled worker threads to receive next sub-event before completing the current sub-event in G4WorkerSubEvtRunManager and G4EventManager.
- New utility class G4VSIntegration, for integration of probability density function and dynamically sampling of final state.
- New UI commands to allow limiting the number of warning messages to be printed out during a run.
- Introduced a new method `SetDefaultClassification()` in G4RunManager which enables the default behavior of the stack without implementing a G4VUserStackingAction.

Geometry & Field

- Enabled voxelisation parallelism by default in G4GeometryManager, when MT/tasks are enabled. Enabled also for potential 2nd (and later) calls.
- Extended UI command `/geometry/test/run` to support optional overlap check mode to check for overlaps in the volume tree without duplication in identical logical volumes.
- Reimplementated the QSS integration methods, improving readability. Third order QSS3 method is now available.
- Revised the default values of parameters in G4FieldParameters, consistent with previous practice in the relevant classes' constructors. Added methods to access the field, stepper and equation types in G4FieldParameters.
- Reorganised and enriched comments in headers to follow Doxygen style in geometry modules.
- In G4Box, optimised normal calculation in `DistanceToOut()`.
- Code optimization in `GetPointOnSurface()` in specific shapes. Optimised surface area and cubic volume calculation of several geometrical primitives.

Intercoms

- New `@@` keyword to be used in UI commands taking a macro file name; it allows to create a temporary macro file with the commands being defined following it, until a `/control/endRecord` command is specified.

Particles

- Updated particle properties to PDG-2025.

Electromagnetic physics

- Implemented new option to enable/disable fluctuation of energy loss per G4Region.
- Optical photons
  - First implementation of the model approach for X-Ray processes Cerenkov and Scintillation processes. Their new base class is G4VXRayModel.
  - Build the integral tables only for materials that have non-empty material property tables in G4Scintillation and G4Cerenkov.
  - To enable the generation of a burst of optical photons (via scintillation or Cerenkov radiation), and their propagation, created new class G4QuasiOpticalPhoton as a G4ParticleDefinition. Defined related processes G4QuasiCherenkov and G4QuasiScintillation.
  - Code refactoring and optimisations in G4OpBoundaryProcess.
- Geant4-DNA
  - Introduced usage of the new ion ionisation model in DNA Opt8 physics configuration.
  - New class G4DNABornIonisationModel, a new implementation of the Born model using a new class G4DNASamplingTable, which allows the sharing of sampling data between threads.
  - Extended G4DNAELSEPAElasticModel in G4DNA up to 10 MeV for water.
  - New class G4ChemReboundTransportation to handle the rebound transportation of the molecule.
- New G4LowPAIH2O model for dE/dx in water for p and e-.
- Updated Reverse MC simulation to work in MT mode.

Hadronic physics

- It is now possible to distinguish quasi-elastic from diffractive tracks in the Fritiof (FTF) string model: the method in G4Track `GetCreatorModelID()` returns `21350` for FTF quasi-elastic, and `21600` for FTF diffraction.
  Note: for QGS-based physics lists the separate, dedicated quasi-elastic model produces tracks with model-ID `21300`; tracks produced by QGS have model-ID `22200` (for both diffractive and non-diffractive interactions).
- In G4HadronicProcess, removed warning for the case when K0 and anti-K0 are transformed into K0S or K0L.
- Updated algorithms for the integration of probabilities and sampling of kinetic energy of the emitted fragments in hadronic de-excitation and pre-equilibrium. Expected more accurate spectra.
- New alternative hadronic de-excitation FermiBreakUp model, G4FermiBreakUpAN, and support classes. This alternative option can be enabled via C++ interface in G4DeexPrecoParameters: `SetFermiBreakUpType(G4FermiBreakUpType::bModelAN)`.
- Extension of the INCLXX model to handle anti-neutron at rest and in-flight. This is used by default in INCLXX-based physics lists.
- In G4ChargeExchange, implemented the angular distribution of pion charge exchange according to the V. Lubovitsky parameterisation for different reaction channels.
- Major update of GIDIplus interface in LEND hadronic model, with refactored C++ code, including use of official GNDS formatted data. Added feature for high-fidelity gamma cascades following reactions such as neutron capture and inelastic scattering.

Physics Lists

- For the three physics lists QGSP_BIC_HP, QGSP_BIC_HPT and QGSP_BIC_AllHP, whereby the electromagnetic physics option 4 is used by default, it is now possible to utilise the electromagnetic standard (i.e. option 0) via the physics list factory by adding the suffix `_EM0` to their names (i.e. QGSP_BIC_HP_EM0, QGSP_BIC_HPT_EM0, and QGSP_BIC_AllHP_EM0).
- The INCLXX-based physics lists (e.g. FTFP_INCLXX and QGSP_INCLXX) are using now INCLXX (instead of FTFP as before) for the annihilation (at rest and in-flight) of anti-neutrons.
- The optional NuDEX nuclear de-excitation model (introduced in Geant4 version 11.3 only for neutron capture in the physics list QGSP_BERT_HP) is available also for neutron capture in the QGSP_BIC_HP and QGSP_BIC_AllHP physics lists.
- Added G4HadronPhysicsLEND in physics-lists to configure neutron and photon induced processes from LEND.
- The G4EmDNABuilder class provides configuration of DNA physics for all particles and all standard + DNA configurations.
- Recommended DNA physics lists are: G4EmDNAPhysics_option2, G4EmDNAPhysics_option4, G4EmDNAPhysics_option6, G4EmDNAPhysics_option8.
- For electrons the upper limit of DNA models is `1 MeV`. For protons and ions the upper limit of DNA models is `300 MeV/u`. For higher energy the standard physics is used.

Visualization and Interfaces

- Updated g4tools and ToolsGS visualisation driver to use OpenGL-3.2 when co-working with Vtk.
- First version of generic time windowing of trajectory slices in visualisation. Introduced Time Window tab in Qt UI.
- Introducing RayTracerQt visualisation driver, enabled when GEANT4_USE_QT configuration is enabled.
- Set default configuration to use Qt6 when selecting Qt support. User must set GEANT4_USE_QT_QT5 to force find/use of Qt5.
- Make the TSG driver the "flagship" visualization driver.
- Re-instated transparency slider in visualization GUI.
- In G4OpenGLQtViewer, fixed the original pick feature, which was inadvertently broken, to show pick info window.
- General optimization of zoom behavior in visualization when using mouse wheel.

Examples

- Introduced the CaloDiT pre-trained ML model for fast simulation in Par04 extended example, offering greater accuracy.
- New advanced example IAEAphsp demonstrating how to use IAEAphsp files as input source (i.e. as a primary generator) and how to produce IAEAphsp outputs at given scoring planes. Reference paper: M.A. Cortes-Giraldo et al., Int J Radiat Biol 88(1-2): 200-208 (2012).
- New advanced example microelec_SEY simulating the passage of incident electrons [10eV, 10keV] in a stack of 6 layers, where thicknesses and material nature can be user defined. The number of electrons re-emitted by the irradiated surface is counted by a spherical detector surrounding the whole geometry and providing the SEY rate in a csv file as a function of the incident energy.
- New extended example for channeling, ch5, primarily designed to simulate positron sources based on oriented crystals.
- New G4DNA extended examples: microtrack, implementing a geometry to calculate microdosimetry quantities for ion tracks in liquid water at a given energy, ensuring secondary electron equilibrium when needed; molcounters, showing how to use the new molecule counter manager system and how to write custom molecule counters; phasespace, showing how to simulate particle tracks in a cube of liquid water containing a scoring sphere, placed in its centre; radial, showing how to simulate radial dose profiles in liquid water from incident ions using the Geant4-DNA physics processes and models.

## 5. Expected effects on physics and computing performance

Electromagnetic physics

- Updated Goudsmit-Saunderson multiple-scattering model to optionally use the most accurate algorithm; updated G4EmStandardPhysicsGS according to the changes in the GS multiple scattering model, the standard GS EM constructor is expected to provide accurate e-/e+ simulations now (similar accuracy as in Livermove, Penelope and option 4).
- It is expected that less memory will be used by G4Cerenkov and G4Scintilation processes.
- G4EmCalculator: now providing correct computation of dEdx for ions.

Hadronic physics

- Hadronic showers remain stable, for all physics lists.

## 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
  - Set default configuration to use Qt6 when selecting Qt support. User must set `GEANT4_USE_QT_QT5` to force find/use of Qt5.
  - Support creation of categories that are just an interface to other categories. Needed to support splitting of libraries whilst retaining old target names for backward link/build compatibility.
  - Include external categories (G4zlib etc) in link resolution for unit test executables.
  - Export CMAKE_EXPORT_COMPILE_COMMANDS setting from toolkit to the build of any test done by geant4_add_test to assist use of clang-tidy and other tooling.
  - Add ENVIRONMENT to any build step of geant4_add_test for consistency and to allow easier propagation of additional build settings.
  - Added option to add shorten-64-to-32 warning to command line macOS build flags to match Xcode.
  - Updated clang-format settings and removed obsolete G4ClangFormat module. Use of clang-format will be through IDEs or pre-commit rather than build system going forward.
  - Removed all references to HepRepFile and Qt3D visualisation drivers.
  - New data sets `G4PhotonEvaporation-6.1.2`, `G4CHANNELING-2.0`, `G4INCL-1.3`, `G4EMLOW-8.8`, `G4PARTICLEXS-4.2`.
  - Updated tag-IDs for 11.4.
- GNUmake
  - Updated system scripts for Qt settings: set Qt6 as default.
  - Correction in generation of geant.[c]sh and geant4.bat on Windows.
  - Replaced linking to `G4processes` library with linking to the two components it has been split into.
  - Removed all references to HepRepFile and Qt3D visualisation drivers.

### Analysis

- New implementation of generic 'G4Analysis::GetHnType()' and 'IsProfile()' functions, which do not rely on the histogram/profile name position in the long type name provided via tools 's_class()'.
- Internal changes:
  - Modernized g4tools macro-based for loops with range-based for.
  - Use current non-deprecated g4tools n-tuple columns interface in XML.
- Fixes:
  - Fix in G4THnMessenger; improved top directory description: this fixes "...Title not available..." description in the command tree.
  - In G4VAnalysisManager, fixed Coverity reported defect in `SetNtupleManager()`: added protection against de-reference of potentially null field.
  - Added a protection against a call to non-existing n-tuple manager in G4VAnalysisManager. Fixes a problem happening when all created n-tuples are inactivated and a file is not open.

### Digitization & Hits

- Implemented mechanism to weight score in G4VPrimitiveScorer. The weighting is activated with 'scoreWeighted' option (default is off). The applied weighting function is defined via std::function which can be set via a new setter method. The weighting function is taken into account only in the G4PSCellFlux scorer type.

### Electromagnetic Processes

- Adjoint
  - In G4ContinuousGainOfEnergy, updated signature of `CorrectionsAlongStep()`.
  - Fixed compilation warning on Intel/icx compiler for overlapping comparison on condition in G4AdjointAlongStepWeightCorrection.
- DNA:
  - Added new G4DNARuddIonisationDynamicModel, which uses charge from G4DynamicParticle. The model is applicable for all ions.
  - G4DNABornIonisationModel: new implementation of the Born model using G4DNASamplingTable class; use stationary and fast flags from EM parameters.
  - G4DNARuddIonisationModel, G4DNABornIonisationModel1 and G4DNABornIonisationModel2: fixed definition of the stationary code via G4EmParameters.
  - Extended G4DNAELSEPAElasticModel up to `10 MeV` for water. Requires new data-set G4EMLOW-8.8.
  - Force cross-section to zero below limit of validity of G4DNACPA100ElasticModel.
  - G4DNASamplingTable, new class allowing the sharing of sampling data between threads.
  - Enabled atomic de-excitation in stationary regime for Rudd and Born models.
  - Updated IRT-syn model for high LET applications. Fixed the IRT_syn model (Stepper) to ensure it does not use minTimeStep (default = 1 ps) when DNA reactions do not yet share the same minTimeStep (used to optimize the chemistry).
  - Fixed the missed Equilibrium process in G4DNAMakeReaction for particle-based models (SBS, IRT_syn).
  - Correction in the G4DNAScavengerProcess for IRT-syn model.
  - Created G4ChemReboundTransportation to handle the rebound transportation of the molecule.
  - Replaced the G4MoleculeCounter singleton with G4MoleculeCounterManager for managing counters.
  - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
  - In G4PhysChemIO, removed dependency on `analysis` module.
  - Deleted exception of no reactant (or reactions for the defined molecules) that should return nullptr for no reaction data.
- Low Energy
  - G4LivermorePhotoElectricModel: reorganisation of initialisation and data destruction.
  - In G4AtomicTransitionManager, G4UAtomicDeexcitation, use `std::size_t` and few other cosmetic changes.
  - G4IonParametrisedLossModel: updated computation of ion effective charge according to modifications in electromagnetic/utils. Addressing problem report #2664.
  - G4MicroElecElasticModel_new, G4MicroElecInelasticModel_new, G4MicroElecLOPhononModel and G4MicroElecSurface: updated models using more data files.
  - In G4hIonEffChargeSquare, fixed reported Coverity defect.
  - Fixed compilation warnings on Intel/icx compiler for overlapping comparison on condition in G4eIonisationSpectrum, by removing checks on numerical condition which never happens.
- Muons
  - G4RiGeMuPairProductionModel, G4RiGeAngularGenerator: fixes to the angular distribution of electrons and positrons.
  - G4MuPairProduction: enable RiGe model via G4EmParameters.
  - G4MuPairProductionModel, G4MuPairProduction: cleanup for handling of data.
- Pii
  - Use `const G4String&` in `G4hImpactIonisation::InitializeMe()` to avoid unnecessary copy, reported by Coverity.
- Standard
  - G4UrbanMscModel: cosmetic change for Opt3 case; minor code improvement and updated comments to the code. Not affecting any result.
  Simplification of the step limit algorithm for Opt3 (EMY) configuration of EM physics, slightly improving CPU without degradation of the accuracy. Changed `geommin` parameter value from `10^-3 mm` to `10^-6 mm`; this change is effective to EM option3 physics configuration.
- G4GoudsmitSaundersonMscModel, G4GoudsmitSaundersonTable, G4GSMottCorrection, and G4GSPWACorrections: removed all other electron stepping and boundary crossing algorithms from the Goudsmit-Saunderson multiple-scattering model, except the accurate one; updated the class descriptions, no physics change is expected in the Livermore, Penelope and standard option4 EM constructors while the standard GS constructor now will be more accurate. The current form of the Goudsmit-Saunderson Msc model, keeping only its most accurate settings, fully reflects the corresponding technical note.
- G4eBremsstrahlungRelModel, G4PairProductionRelModel: simplifed handling of LPM functions by precomputing and factoring the related data to a new G4LPMFunction (header only) utility.
- G4eDPWACoulombScatteringModel, G4eDPWAElasticDCS: fixed some of the mixed simulation mode functionalities of the numerical ELSEPA DCS based model for e-/e+ Coulomb scattering (which are still not utilised).
- Added G4LowPAIH2O model for dE/dx in water for p and e-.
- Reverted changes introduced in release 11.3 for static data initialization in G4eBremsstrahlungRelModel.
- G4BraggModel, G4BraggIonModel, G4BetheBlochModel, G4AtimaEnergyLossModel, G4LindhardSorensenIonModel and G4LowPAIH2O: store ion effective charge square in each model, allowing to compute dEdx by G4EmCalculator. Addressing problem report #2664.
- G4BraggIonGasModel, G4BetheBlochIonGasModel: fixed computation of dynamic charge.
- G4BraggModel: fixed two compound formula typos in MolecIsInZiegler1988 for methanol and chlorotrifluoromethane. Restored application of the ChemicalFactor for these compounds.
- G4eplusAnnihilation: added positronium lifetime, which was forgotten.

- Utils
  - New base class G4VXRayModel for X-ray processes. Adapted classes G4OpticalParameters, G4OpticalParametersMessenger and G4LossTableManager to configure and use G4VXRayModel.
  - G4EmParametersMessenger: added UI command to enable/disable 5D pair production model by muons.
  - G4EmUtility, G4EmDataHandler, G4EmDataRegistry: removed minor memory leaks and improved destruction at exit.
  - G4EmParameters, G4EmParametersMessenger, G4EmUtility, G4LossTableBuilder, G4VEnergyLossProcess: implemented new option to enable/disable fluctuation of energy loss per G4Region.
  - G4EmParameters, G4EmLowEParameters: added DNA upper limits in energy.
  - G4VEmProcess: added call to StartTracking(..) for all used models, which need access to G4Track pointer.
  - G4VEmProcess, G4VEnergyLossProcess, G4EmDataHandler, G4EmDataRegistry: cleanup handling of tables; removed unused methods and headers.
  - G4EmCalculator: provided computation of dEdx for ions. Addressing problem report #2664.
  - G4VEmModel, G4VEnergyLossProcess: changed signature of the method `CorrectionsAlongStep()` to something more convenient for G4EmCalulator.
  - G4OpticalParameters, G4OpticalParametersMessenger: introduced configurable options to offload the generation of optical photons for the Cerenkov and Scintillation processes.
  - G4OpticalParameters: added QuasiCerenkov and QuasiScintillation in the process activation map.
  - G4VXRayModel, G4OpticalParameters: added extra methods needed for new Cerenkov processes and models.
- Xrays
  - In G4Scintillation, build the scintillation integral tables for materials that have non-empty material property tables and added method BuildInverseCdfTable(). Relocate loop-invariant variables outside the photon generation loop.
  - In G4Cerenkov, build the Cerenkov integral only for materials that have non-empty material property tables. Relocate loop-invariant variables outside the photon generation loop.
  - Added physics model catalog IDs and class descriptions for G4QuasiCerenkov and G4QuasiScintillation.
  - Added G4QuasiScintillation, adding offloading capability for scintillation photon generation.
  - Added G4QuasiCerenkov, adding offloading capability for Cerenkov photon generation.
  - Added new classes G4GeneralCerenkov and G4StandardCerenkovModel with the first implementation of the model approach for X-Ray processes G4Cerenkov, G4Scintillation and G4GeneralCerenkov; fixed `IsApplicable()` method for UnknownParticle type; use dynamic charge and kinematics for these processes.
  - Added class G4ScintillationQuasiTrackInfo, a concrete implementation of G4VAuxiliaryTrackInformation used to store metadata associated with a quasi-scintillation track generated during the scintillation process.
  - Added new class G4CerenkovQuasiTrackInfo, a concrete implementation of G4VAuxiliaryTrackInformation used to store metadata associated with a quasi-Cerenkov track generated during the Cerenkov process.
  - Added G4QuasiOpticalData, a common data structure used for Cerenkov and Scintillation photon sampling.

### Event

- G4EventManager: enabling to receive next sub-event before completing the current sub-event when used in the worker thread of sub-event parallel mode.
- G4Event, G4SubEvent: added some flags and pointers to enable the above.
- G4AdjointPrimaryGenerator: made it G4ThreadLocal and added `GetInstance()` method to fix a bug in Reverse MC simulation in MT mode.

### Externals

- G4tools:
  - Updated to version 8.0.0
  - Updated tools from OpenGL-1.1 to OpenGL-3.2, enabled by setting macro TOOLS_USE_GL_VERSION_3_2. Fixed rendering for G4Polymarker dots on macOS. In Qt,X11,Xt,Windows, enforce immediate rendering in event loop processing.
  - Implemented windows_size and render_area_size methods; fixed setting of mouse position in the wheel_rotation_event. Handle the shift and control modifiers in the mouse_[down,up,move]_event and wheel_rotation_event.
  - In glarea, in `mouseMoveEvent()` for Qt5, corrected a bad cut/paste when creating the mouse_move_event.
  - In *ntuple, fix in the initialise() method, to switch from "warning" to "error" and return false if the name of a booking column is not found in the file. Addressing problem report #2657.
  - Removed obsolete `tools::mem` class and TOOLS_MEM blocks that use it.
  - Rationalised main headers by merging related functionality.
  - Removed unused classes, class member functions/data members.
  - Removed additional headers, free functions no longer used.
  - Removed unused functions and headers.
  - Removed no longer required `cmem_alloc_copy()` function.
  - Removed commented out blocks and never touched preprocessor blocks.
  - Added `tools/sg/shade_model` node to handle Gouraud shading.
  - Fixes to avoid cases of "ToolsSG-ZB too much zoom in" crash.
- Zlib:
  - Updated `zlib` to version 1.3.1. Prior Geant4 patches are retained.

### General Processes

- Biasing
  - Fixed initialisation in G4ParticleChangeForNothing, responsible for crash when enabling track verbosity.
- Optical
  - G4OpBoundaryProcess: refactored code for readability and efficiency. Reuse local variables for trigonometric and exponential function results, as well as other repeated expressions. Improved code readability by replacing simple if-else clauses with ternary operators and made other minor rearrangements. Replaced `h_Planck*c_light` with a static function for clarity and reuse. Refactored boundary handling at dielectric-dielectric interfaces by replacing goto with a do-while loop to improve readability. Extracted transmission logic into a new inline function `DoTransmission()` and introduced `constexpr` helper `IsBackpainted()` to identify backpainted surfaces.
  - In G4OpMieHG, removed redundant `acos()/cos()` calls in angular sampling to improve performance and readability.
  - G4OpWLS, G4OpWLS2: improved WLS photon energy sampling; enforce energy below the primary photon's energy.

### Geometry

- Reorganised and enriched comments in headers to follow Doxygen style.
- Applied clang-tidy fixes.
- Biasing
  - Removed empty source files for G4VGCellFinder, G4VImportanceAlgorithm, G4VImportanceSplitExaminer, G4VIStore, G4VWeightWindowStore and G4VWeightWindowAlgorithm.
- Divisions
  - Removed unused data in G4VDivisionParameterisation.
- Magnetic Field
  - Updated implementation of QSS integration method to QSS version-2.
  - Made QSS3 a choice in G4ChordFinder and G4QSSMessenger.
  - Addressed Coverity issues (memory leak, initialisation) in G4QSStepper and G4QSSubstepStruct. In G4QSStepper, cleanup of constructors.
  - Make consistent use of the parameters introduced in G4FieldParameters in field classes: extracted default parameters values as constexpr in new namespace G4FieldDefaults, so that they can be used in other classes as default parameters in functions declarations; replaced default values in G4FieldManager and G4ChordFinder with G4FieldDefaults constants.
  - Added functions for accessing the field, stepper and equation types using the enum types defined in G4FieldParameters.
  - Updated enums G4EquationType and G4StepperType with missing constants with a comment that these equations/templated steppers are not built by G4FieldBuilder.
  - Renamed `StepperType()` in G4DormandPrince745 to `StepperTypeName()`.
  - Moved inline implementations to .icc file for G4ChargeState and for G4FieldParameters.
  - Removed not implemented methods in G4ChordFinder, G4DoLoMcPriRK34 and G4FieldSetup.
  - Minor code cleanup and formatting.
- Management
  - Enabled voxelisation parallelism by default in G4GeometryManager, when MT/tasks are enabled. Enabled also for potential 2nd (and later) calls in runs after geometry was changed.
  - G4VSolid: set seed in `EvaluateCubicVolume()` and `EvaluateSurfaceArea()` to ensure reproducibility of the resulting value.
  - G4GeomTools: added functions `HyperboloidSurfaceArea()`, `HypeStereo()` and `TwistedTubeBoundingTrap()`.
  - Removed empty source files for G4ErrorSurfaceTarget and G4ErrorTanPlaneTarget.
  - Moved inline implementations to .icc file for G4UAdapter.
- Navigation
  - Extended UI command `/geometry/test/run` to support optional overlap check mode: depending on the selected mode, it invokes either `TestRecursiveOverlap` (default and original algorithm) or `TestOverlapInTree`, allowing to check for overlaps in the volume tree without duplication in identical logical volumes.
  - Removed declared but not implemented methods in G4VoxelNavigation, G4ParameterisedNavigation, G4VoxelSafety and G4PathFinder.
- Solids (Boolean)
  - G4MultiUnion: fix in `GetSurfaceArea()` and some optimisation to use `G4QuickRand()`. In `GetLocalPoint()`, `GetLocalVector()`, `GetGlobalPoint()` and `GetGlobalVector()`, make direct usage of the transformation matrix elements. Removed declared but not implemented methods and moved inline implementations to .icc file.
  - Fixed potential thread-safety issue in `GetCubicVolume()` and `GetSurfaceArea()` on Boolean solids in case those functions are called from worker threads.
  - Removed declared but not implemented method in G4ScaledSolid.
- Solids (CSG)
  - G4Box: code restructuring in `DistanceToOut()` methods. Optimised normal calculation in `DistanceToOut()`.
  - G4Orb: provide faster algorithm in `GetPointOnSurface()`.
  - G4Para: speedup calculation of surface area in `GetSurfaceArea()` and `GetPointOnSurface()`.
  - G4Box, G4Para, G4Trd: code optimization in `GetPointOnSurface()`.
  - G4Torus: implemented uniform sampling of random points on surface.
  - Fixed potential thread-safety issue in `GetCubicVolume()` and `GetSurfaceArea()` on all solids in case those functions are called from worker threads.
- Solids (Specific)
  - G4Ellipsoid, G4EllipticalTube: code optimization in `GetPointOnSurface()`.
  - G4TessellatedSolid, G4TriangularFacet, G4QuadrangularFacet: use `G4QuickRand()` for generating points on surface.
  - G4EllipticalCone: code optimization in `GetPointOnSurface()`; moved setters implementations to source.
  - G4GenericTrap: improved estimation of safety distance by adopting Lipschitz-based implementation.
  - G4Paraboloid: implemented uniform sampling of random points on surface.
  - G4Hype: revised surface area calculation and random point sampling. Code optimization in `GetPointOnSurface()`. Changed static protected functions to private methods.
  - Use `G4QuickRand()` in G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide, G4TwistedTubs, G4VCSGfaceted and G4VTwistedFaceted for sampling points on surface.
  - Fixed potential thread-safety issue in `GetCubicVolume()` and `GetSurfaceArea()` on all solids in case those functions are called from worker threads.
  - G4EllipticalCone, G4EllipticalTube, G4Voxelizer: removed unnecessary headers.
  - Removed virtual specifications from utility class G4ClippablePolygon.
  - Removed unneeded static data/specifications in G4Voxelizer.
  - Moved inline methods definitions of G4TriangularFacet, G4QuadrangularFacet, G4SurfBits, G4TwistBoxSide, G4TwistTrapParallelSide and G4TwistTrapAlphaSide to .icc files.
- Volumes
  - Fix to delete the logical skin/border surfaces only if the geometry is not closed.
  - Moved default destructor definitions to headers.
  - Minor code formatting in headers.

### Global

- G4VSIntegration: added new utility class for integration of probability density function and dynamically sampling of final state. This is useful for the case when sampling tables cannot be prepared and stored; instead computations are performed for each case individually.
- Added new class G4ExtendedPhysicsVector, a new data structure, which includes partial cross-sections and methods for random selection of a partial cross-section channel. The total cross-section is included via pointer to G4PhysicsVector.
- G4PhysicsVector, G4PhysicsFreeVector: added a new method `CheckIndex()` to reduce code duplication; removed tabs from source and headers, extended comments.
- Added new class G4FunctionSolver, a new utility to solve equation F(x)=0.
- G4PhysicsModelCatalog: introduced FTF quasi-elastic and FTF diffraction. Added model Ids and names for G4QuasiCherenkov and G4QuasiScintillation processes.
- Factored common ieee754 union and helper functions out of G4Log and G4Exp to remove code duplication.
- G4QuickRand: Added a possibility to set a seed.
- Fixed data race on std::cout in G4iosFinalization.
- Updated date of release for 11.4.

### Graphical Representations

- Re-instated transparency slider in GUI.
- G4VGraphicsScene: added `fMaxGeometryDepth` data member and corresponding access functions.
- In G4Visible, fixed reported Coverity defects in copy constructor and assignment operator.
- In G4Att* classes, fixed link to description of HepRep data communication format (used by G4Atts).

### Hadronic Processes

- Cross Sections
  - G4NeutronInelasticXS, G4ParticleInelasticXS: added download data for all elements in class constructor, avoiding lazy initialisation at run-time. No locks are set any longer by these cross-section classes. For simple applications, the initialisation CPU time increases by roughly 10%; no effect on complex applications.
  - In G4NeutronInelasticXS, G4NeutronElasticXS and G4NeutronCaptureXS, split data tables on two parts, low-energy for neutron resonance region and high energy above this region. This allows to increase accuracy of neutron cross-sections for non-HP (for example, HEP) applications. Added extra flag to enable/disable reading and usage of precise data in resonance region, allowing to reduce RSS memory for simple applications. For applications requiring higher precision of neutron transport, the flag should be defined via `G4HadronicParameters::SetUseRFilesForXS(true)`.
  - G4ChargeExchangeXS: fixed selection of reaction for compound materials; added extra public and private methods; added extra method for sampling of scattering angle; updated parameterisation using new fit to data. Added extra method `SampleTforPion()`, which is based on the V. Lyubovitsky parameterisation for different reaction channels.
  - Fixed minor memory leaks in classes G4CrossSectionFactory, G4CrossSectionFactoryRegistry, G4CrossSectionFactory, G4ElectroNuclearCrossSection and G4ChipsAntiBaryonElasticXS.
  - G4EMDissociationCrossSection: fixed several technical inaccuracies in the code, addressing reported Coverity defects and to correctly use G4Pow.
  - G4ParticleInelasticXS: fixed reported Coverity defect.
  - In G4EMDissociationSpectrum, added protection against beta=0, to fix reported Coverity defect; correctly use G4Pow.
  - Fixed compilation warning on Intel/icx compiler for overlapping comparison on condition in G4EMDissociationCrossSection.
- Management
  - G4VHighEnergyGenerator: introduced Boolean methods to know whether the high-energy hadronic inelastic interaction is quasi-elastic or diffractive. Note that this can be used for both FTF and QGS hadronic string models.
  - G4HadronicProcess: removed warning for the case when K0 and anti-K0 are transformed into K0S or K0L. Removed misleading exception. Addressing problem report #2675.
- Stopping
  - G4HadronicAbsorptionINCLXX: the energy max is different for anti-proton and anti-neutron in INCLXX.
- Utilities
  - G4HadronicParameters: implemented pretty-print to ostream to allow users to check values at runtime, a-la G4EmParameters (request from ATLAS). Added extra flag to enable/disable usage of precise cross-section data for neutrons in resonance energy region.
  - G4IsotopeList: added data on energy interval of neutron resonance regions per element for Z=1-92.
- Abla
  - Added a new description for fission barriers based on PRC 111, 064606 (2025).
- Bertini Cascade
  - Fixed compilation warning on Intel/icx compiler for overlapping comparison on condition in G4BigBanger, fixes typo in the computation of probability.
- De-excitation
  - Added G4FermiBreakUpAN, new alternative FermiBreakUp model and support classes, contributed by A. Novikov (Yandex and MIPT) through GitHub PR#84. The model is based on: J.P. Bondorf et al., Physics Reports, 257(3):133-221.
  - G4FermiBreakUpVI: removed the limit on excitation energy from the condition of the model applicability, the model become similar to G4FermiBreakUpAN in this respect.
  - G4ExcitationHandler: moved multi-fragmentation model to be called before the pre-compound model and not inside G4ExcitationHandler. Interfaces are preserved. Added deprecation warnings to obsolete methods.
  - G4ExcitationHandler, G4DeexPrecoParameters: updated initialisation to allow switching between different FermiBreakUp models.
  - G4DeexPrecoUtility: new class, providing common computation, to avoid code duplication. Use it in classes G4EvaporationProbability, G4ProtonEvaporationProbability, G4DeuteronEvaporationProbability, G4TritonEvaporationProbability, G4He3EvaporationProbability and G4AlphaEvaporationProbability, simplifying code.
  - G4DeexPrecoParameters: added extra enumerator to choose variants of the pre-compound model. Defined limits maxZ=9, maxA=17 instead of maxZ=3 maxA=5. Fermi BreakUp models will be used for light fragment de-excitation, which happens in high energy ion collision with light targets. Reduced upper limit of energy per nucleon for the pre-compound model from 30 to 15 MeV, according to the prescription of Botvina A. S. et al. Nucl. Phys. A, 475:663, 1987.
  - G4NucLevel, G4PhotonEvaporation: use explicit type conversion from double to float; use const arguments where possible.
  - G4VEmissionProbability, G4EvaporationProbability, G4GEMProbabilityVI: updated algorithms of integration of probabilities and sampling of kinetic energy for emitted fragment. Expected more accurate spectra.
  - G4GEMChannelVI, G4EvaporationGEMFactoryVI, G4DeexPrecoParameters: new GEM de-excitation model with 83 decay channels.
  - In G4GEMChannelVI, use G4DeexPrecoUtils.
  - G4VEmissionProbability: use the new utility class G4VSIntegration, to simplify code; not affecting results.
  Updated parameters of integration of the probability density function.
- G4VEmissionProbability, G4EvaporationChannel, G4GEMChannelVI: use optimised parameters for G4VSIntegrator; initial step `0.15 MeV` for neutrons, `0.2 MeV` for charged, tolerance from 1.05 to 1.25. Avoid precision loss for computation of minimal energy of emitted fragment.
- In G4PhotonEvaporation, G4VEmissionProbability, check life time of final excitation level; special treatment for the ground state and the next level. Addressing problem report #2660.
- In G4EvaporationProbability, fixed computation of inverse cross-section.
- G4StatMF: always return non-empty vector of final fragments, if multi-fragmentation is not possible, then it returns the primary fragment. Cleaned up method of final state energy correction and Lorentz boost.
- G4StatMFMicroCanonical: replaced use of hard-coded solver with G4FunctionSolver. Fixed surface energy computation and removed unnecessary computations.
- Multifragmentation models are now using G4FunctionSolver instead of G4Solver.
- G4CoulombBarrier, G4DeexPrecoUtils, G4EvaporationFragment, G4EvaporationProbability and G4EvaporationGEMFactoryVI, use the default evaporation for neutrons, protons and light ions.
- Emit fatal exception in G4LevelReader if path to G4LEVELGAMMADATA is empty.
- G4LevelReader, G4GammaTransition, G4photonEvaporation: addressing problem reports #2672, #2588 and #2451. The vector of IC probabilities is limited by number of levels in an atom; if in gamma level data all IC transitions are zero, then instead of K-shell probability, 1.0 is assigned to the last existing level; electron emission is sampled if nuclear excitation is above the bound level and if number of electrons on electron shell is above 1; more accurate sampling of final state using masses of the nucleus plus masses of electrons from electron shells.
- G4StatMFMicroCanonical: fixed computation of temperature.
- G4StatMFMicroPartition: code cleanup, removed non-informative printout, which can be repeated many times; instead stop MF model and return to de-excitation handler.
- General clean-up of the multifragmentation model: fixed equation solver; made uniform headers and source; reduced number of new/delete operations.
- Fixed reported Coverity defects.
- G4CoulombBarrier: some code cleanup.
- G4Evaporation: improved debug printout.

- Elastic scattering
  - G4ChargeExchange: fixed problem in kinematic computations, allowed recoil nucleus to be in an excited state. Fixed issue in final state generation for the case of unstable meson production `omega(782)` and `f2(1270)`. Implemented angular distribution of pion charge exchange according to the V.Lubovitsky parameterisation for different reaction channels.
  - G4ChargeExchange, G4HadronElastic: cleanup final state generation; use the numerical limit for argument of the exponent to avoid precision loss; in case of numerical problems force scattering angle to zero (do not consider scattering backwards); use similar parameterisation and code for both models. Fixed reported Coverity defect.
  - Fixed cases of non-accurate checks on potential numerical problems in computing scattering angles in G4NuclNuclDiffuseElastic, G4DiffuseElastic and G4AntiNuclElastic, addressing compilation warnings on Intel/icx compiler for overlapping comparison on conditions.
- EM Dissociation
  - G4EMDissociation: fixed reported Coverity defects.
- High Energy Theoretical
  - G4TheoFSGenerator: introduced the ID model identification for FTF inelastic hadronic interactions that are classified as quasi-elastic or diffractive. Note that this classification is not available for the QGS string model.
- INCLXX
  - Extension of the INCLXX model to handle anti-neutron (at rest and in-flight).
  - Fixed the use of INCL for the reactions anti-neutron + H1/H2 and decay omega/eta.
  - Fixed reported Coverity defect for use of `std::move()` in G4INCLCascade.
  - Fixed URL to Root in comments. Fixes GitHub PR#87.
- Lend
  - Major update of GIDIplus interface with refactored C++ code, including use of official GNDS formatted data.
  - Added feature for high-fidelity gamma cascades following reactions such as neutron capture and inelastic scattering.
  - Collect all inelastic models (neutron and gamma induced) into G4HadronPhysicsLEND. Updated and simplified Shielding and G4EmExtraPhysics accordingly.
  - Fix in G4EmExtraPhysics for failing in loading photonuclear from LEND if G4GammaGeneralProcess existed.
  - Fix in G4LENDCombinedModel photofission; check energy function was not connected to the base class, resulting in a crash.
  - Removed the default evaluation string from G4LEND. This change means the user only needs to update the G4LENDDATA environment variable to switch to a different nuclear data library.
  - Fixed various Coverity reported defects and implicit conversion compilation warnings in macOS/XCode.
- Nudex
  - Address maybe-unitialized warnings when building/linking with LTO, identified by ATLAS.
- Particle High Precision
  - G4ParticleHPThermalScatteringData: attempt to fix reported Coverity defect on wrong handling of map iterator. Substituted several calls to G4HadronicExceptions by one G4Exception inside `BuildPhysicsTable()` method, which provides a fatal exception if a particle is not a neutron. Simplified `IsApplicable()` methods called at each step; the directory path is taken from G4ParticleHPManager to reduce number of calls to `getenv()` function; initialisation is performed only once in one instance of the class; initialised data structures are saved to G4ParticleHPManager and are accessed from all threads and instances; end of job destruction is also performed only once; removed commented lines and extended comments to code.
  - In G4ParticleHPInelastic, fixed AllHP physics for initialisation of neutrons and light ions. Addressing problem report #2591.
  - G4ParticleHPThermalScattering, G4ParticleHPThermalScatteringData, G4ParticleHPJENDLHEData: fixed reported Coverity defects for unprotected access to maps.
  - Fixed reported Coverity defects, mainly in handling of maps and finding of isotopes.
- Parton-String
  - G4FTFModel, G4DiffractiveExcitation: introduced classification of quasi-elastic and diffractive interactions among the inelastic interactions of the FTF string model. In the G4FTFModel class, the Boolean flags `fIsQuasiElasticInteraction` and `fIsDiffractiveInteraction` - inherited from the base class G4VHighEnergyGenerator - are used in the methods `Init()` and `ExciteParticipants()`. In the class G4DiffractiveExcitation, an extra, Boolean parameter is added to the method `ExciteParticipants()` to tag diffractive interactions.
  .
- Pre-equilibrium
  - New classes G4PreCompoundInterface, G4PreCompoundTransitionInt and G4PreCompoundEmissionInt with alternative precompound model.
  - G4PreCompoundModel, G4PreCompoundTransition, G4PreCompoundEmission: added an option to use alternative precompound models, which may be done via configuration without change of interface to consumer code; introduced verbose flag and extended printout needed to debug; removed old commented printout lines.
  - G4PreCompoundModel: multi-fragmentation model is moved from the G4ExcitationHandler to be called before this pre-compound model for very hot fragments. Default excitation energy limit is very high, as it was in the case of G4ExcitationHandler. Increased limit of the pre-compound loop from 100 to 300 to suppress rare warnings seen in validation benchmarks. Send to evaporation all fragments with excitation energy exceeding energy limit.
  - G4PreCompoundFragment, G4PreCompoundNucleon, G4PreCompoundIon: updated computation of inverse cross-section; added factor to cross-section.
  - G4VPreCompoundFragment, G4PreCompoundFragment, G4HETCFragment: use the new utility class G4VSIntegration, to simplify code; not affecting results.
  - G4VPreCompoundFragment: optimised initial step of integrator from `1 MeV` to `0.5 MeV`; increased tolerance from 1.05 to 1.1.
  - G4PreCompoundFragment, G4PreCompoundProton, G4PreCompoundDeuteron, G4PreCompoundTriton, G4PreCompoundHe3, G4PreCompoundAlpha: use new utility class G4DeexPrecoUtility.
- QMD
  - G4QMDReaction and G4LightIonQMDReaction: added random rotation of the momentum around the z-axis to solve the directional bias of the momentum of the secondary particles.
  - Fixed reported Coverity defect for potential division by zero.
- Quasi Elastic
  - Fixed compilation warning on Intel/icx compiler for overlapping comparison on condition in G4QuasiElRatios.

### Intercoms

- In G4UImanager and G4UIcontrolMessenger, introducing `@@` keyword that can be placed in any UI command taking a macro file name. It creates a temporary macro file with defined commands until the `/control/endRecord` command is specified. The `@@` mechanism works recursively. If a file name is enclosed in a pair of `@`, that macro file is created. The mechanism works for both interactive mode and batch mode. When used in interactive mode with Qt GUI, one can use up-arrow, tab-key and clickable menu in left-side bar to complete a command.

### Interfaces

- G4UIQt: re-instated transparency slider. Introduced Time Window tab. This exploits generic time windowing recently introduced in visualisation. Currently, it doesn't work with OGL in Qt6. The TSG visualisation driver works fine with both Qt5 and Qt6, except line width is not implemented. Simplified and improved touchable dump, using QScrollArea instead of QMessage. Improved pick info window size. Added icon to reset camera and improved base size of MainWindow. In scene tree, simplified interaction for visibility of touchables. Intercept the case of "help" with argument; write guidance to output window; avoid undiagnosed crash with Qt6. Fixed link and add "Action" guidance table in "Useful tips". Added methods to update the control widgets; moved transparency slider radio buttons to be class members; added icon for point cloud surface style; added icon to reset target point; changed behavior of the icon "Reset camera" to avoid popup window with dedicated call back; improved picking behavior avoiding opening picking window when picking is enabled; fixed icons selection behaviour and syncronisation.
- In G4VInteractiveSession, added `UpdateDrawingStyle()`, `UpdateProjectionStyle()` and `UpdateTransparencySlider()` virtual methods to update the control widgets.
- In CMake script, handle -DTOOLS_USE_GL_VERSION_3_2 in case of GEANT4_USE_VTK.
- General code tidy.

### Materials

- Fixed several typos in crystallographic formulae: corrected orthorhombic interplanar angle cosine formula; corrected cubic interplanar angle cosine formula; corrected orthorhombic branch of GetRecIntSp2() function; corrected triclinic cell volume formula.
- Fixed initialisation problem in G4ICRU90StoppingData. Addressing problem report #2663.
- In G4AtomicFormFactor, corrected k conversion and `4*pi` factor.
- Fixed s computation in Cromer-Mann form to: `s = (k * 1e-7) / (4*pi) (k in mm^-1)`.
- G4ElementData, G4ElementDataRegistry: code cleanup and added extra method.

### Parameterisations

- Channeling:
  - Introduced reading from an input file of custom internal geometry of a periodically bent crystal which also works, if necessary, with multiple input files, each per logical volume of an oriented crystal.
  - Introduced various types of radiation virtual collimators in G4BaierKatkov.
  - Deleted redundant code setting up the defaults of angular and low energy cuts in G4ChannelingFastSimModel.
  - Polishing of the code according to guidelines.

### Particles

- Updated particle properties to PDG-2025. Scanned all mesons and baryons, including their resonances; updated mass, decay width, and lifetime for the following particles: mesons - G4AntiBsMesonZero, G4BsMesonZero, G4Etac, G4Eta, G4JPsi, G4Upsilon; baryons - G4AntiSigmabMinus, G4AntiSigmabPlus, G4LambdacPlus, G4OmegacZero, G4XicZero; resonances - G4ExcitedSigmaConstructor, G4ExcitedLambdaConstructor, G4ExcitedNucleonConstructor, G4ExcitedMesonConstructor, mesons and baryons implemented in G4ShortLivedConstructor.
- Added new class G4QuasiOpticalPhoton, a non-physical particle definition designed to encapsulate the conditions for generating a burst of optical photons in processes such as scintillation or Cerenkov radiation.

### Persistency

- GDML:
  - Fix to pre-pend `0x` string before the address when writing entities on Windows platform. Addressing problem report #2322.

### Physics lists

- Builders:
  - In G4HadronPHPBuilder, G4ParticleHPCapture and G4ParticleHPCaptureData are replaced by G4NeutronRadCaptureHP and G4NeutronHPCaptureData, respectively. The first allows the use of the full list of updated PhotonEvaporation data set, while for the second it is only a change of the name, the data are the same. Addressing problem report #2660.
  - G4HadronicBuilder: added the possibility to use anti-neutron by INCLXX.
  - Code cleanup in G4AntiBarionBuilder and G4VAntiBarionBuilder.
- Constructors:
  - electromagnetic:
    - G4OpticalPhoton: added G4QuasiOpticalPhoton to support offloading of optical photon generation.
    - In G4OpticalPhysics, instantiate a process only if it is activated; added option to instantiate the new G4GeneralCerenkov process.
    - G4GeneralGammaProcess: updated destructor according to modification in electromagnetic/utils.
    - Updated G4EmStandardPhysicsGS according to the changes in the GS multiple scattering model, the standard GS EM constructor is expected to optionally provide accurate e-/e+ simulations now (similar accuracy as in Livermove, Penelope and option 4).
    - G4EmDNABuilder: use G4DNABornIonisationModel1 for proton ionisation. For Opt8 configuration, use the same configuration of models for e- and protons as in Opt2. Restored usage of Born model of ionisation in the energy interval `0.5 - 100 MeV`. Use Rudd extended model for light ions in all physics configurations instead of old Rudd model, which should improve CPU performance; increased low-energy limit to `11 eV` for the CPA100 elastic scattering model. Use upper energy limits from G4EmParameters.
    - In all DNA constructors the upper limit for DNA models for ions is set to `300 MeV` instead of `400 MeV`; for increase/decrease processes it is set to `100 MeV`; for ionisation of hydrogen it is set to `100 MeV`.
    - G4EmDNAPhysics_option4, G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: use fast option for a significant speedup of physics.
    - G4EmDNAPhysics_stationary_X constructors: added deprecation warning, indicating that these constructors are now obsolete.
    - G4EmDNABuilder, G4EmDNAPhysicsActivator: introduced usage of the new ion ionisation model in DNA Opt8 physics configuration.
    - G4EmDNAPhysics, G4EmDNAPhysics_option2, G4EmDNAPhysics_option4, G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: updated interface to G4EmDNABuilder.
  - gamma_lepto_nuclear:
    - G4EmExtraPhysics: removed LEND photo-nuclear; it is now selected by G4HadronPhysicsLEND.
  - hadron_elastic:
    - In G4ChargeExchangePhysics, fixed usage of the messenger.
  - hadron_inelastic:
    - G4Hadron_PhysicsQGS_BIC, G4Hadron_PhysicsQGSP_BIC_HP and G4Hadron_PhysicsQGSP_BIC_AllHP: uniform instantiation of neutron and proton physics; enable NuDEX via hadronic parameters for neutron capture in QGSP_BIC_HP and QGSP_BIC_AllHP; code cleanup.
    - G4HadronicPhysicsQGSP_BIC_HP and G4HadronicPhysicsQGSP_BIC_AllHP inherits from G4HadronicPhysicsQGSP_BIC. The size of the classes have been significantly reduced due to the removal of duplicated code.
    - In G4HadronPhysicsQGS_BIC, do not use QGS/Binary and FTF/Binary models for pions and kaons.
    - G4HadronPhysicsShielding: technical clean-up: removed unused headers, fixed constructors and destructors.
    - In G4HadrocPhysicsQBBC, disabled General Neutron Process. Addressing problem reports #2558 and #2559.
    - Added G4HadronPhysicsLEND to define neutron and photon induced processes from LEND.
    - G4HadronPhysicsShielding: removed LEND neutron process, now selected by G4HadronPhysicsLEND.
    - G4HadronPhysicsQGSP_BERT_HP: minor code cleanup.
- Lists:
  - G4PhysListFactory: prevent fallback to default physics list when an invalid name is provided. Now, if a user specifies an unknown physics list, Geant4 will throw a fatal error instead of silently using FTFP_BERT. This ensures that users are aware of incorrect configurations and helps preventing unintended simulation results. Allowed definition of the EM standard physics Opt0 on top of any reference Physics List (which provides a simpler EM physics treatment); improved printout for the HP case, and now the EMZ option is printed out in the name.
  - In QBBC physics list, added G4ChargeExchangePhysics.
  - In Shielding physics list, simplified the handling of inelastic models and moved all LEND hadronic inelastic processes to G4HadronPhysicsLEND.

### Run

- Enabled worker threads to receive next sub-event before completing the current sub-event in G4WorkerSubEvtRunManager. Some code cleanup.
- Fix in `G4RunManager::ReinitializeGeometry()`; the logical skin/border surfaces (used for optical physics) contain pointers to logical/physical volumes that are deleted when the geometry is reset. Resetting the geometry will now also clear these surface tables.
- Introducing UI commands to limit number of warning messages to be printed out.
- Added some verbose level checks to G4TaskRunManager and G4SubEvtRunManager to reduce printouts.
- In G4PhysicsListHelper, changed ordering of processes: for X-Ray production use ordering parameter 100 for post step instead of 1000; fixed ordering for muon capture at rest.
- G4VModularPhysicsList: deleted confusing printout if the same physics type is substituted.
- In G4AdjointPrimaryGeneratorAction, removed pointer attribute on G4AdjointPrimaryGenerator and call it by the static `GetInstance()` method to fix a bug in Reverse MC simulation in MT mode.

### Track & Tracking

- G4VTrajectory and G4VTrajectoryPoint: added caching of G4AttValues. `GetAttValues()` returns a `shared_ptr` that points to the object created by `CreateAttValues()` if not already created. Thus acts as a cache. Protected copy and move constructors and copy and move assignment operators.
- G4RichTrajectoryPoint: added accessors for Pre/PostStepPointGlobalTime. This allows fast access for time windowing feature of trajectory modeling.

### Visualization

- General
  - Make the TSG driver the "flagship" visualization driver. In G4VisExecutive, make nickname/alias OGL synonymous with TSG and make TSG the default for selection by build flags.
  - Removed HepRepFile and Qt3D visualisation drivers, no longer viable to develop and maintain.
- Management
  - Re-instated the transparency slider; re-implemented it in a generic way, i.e., for all drivers; uses a new UI command: `/vis/viewer/set/transparencyByDepth`. G4UIQt issues this command on signals from the slider. The user may, of course, use this command directly.
  - Split scene processing into its "permanent" (run-duration models) and "transient" (end-of-event and end-of-run models) parts. This allows to update just the transient part, e.g., trajectories, which we might want to display in a different way, leaving the permanent part (e.g., detector) unchanged, avoiding unnecessary re-processing. This is exactly the situation for time windowing - the detector does not change, the trajectories also actually do not change, just the way they are drawn changes.
  - G4VSceneHandler: introduced `ProcessTransients()` virtual function. Moved pertinent code from `ProcessScene()` to `ProcessTransients()`. Copied time parameters into modeling parameters. Calculate and maintain `fMaxGeometryDepth`, new base class data member. Enforce the new marker policy in `GetMarkerSize()`. Improved some diagnostic printing.
  - G4VViewer: introduced `ProcessTransients()` method. Follow changes in G4PhysicalVolumeModel. Initialise `fTransientsNeedRedrawing` to `false`. Previously, this was initialised `true`, but it is up to the viewer to decide if transients (trajectories) need redrawing. Added `ZoomFromMouseWheel()` function to control mouse wheel behavior; added virtual methods to get window size, render area size and scene near width; implemented ZoomToCursor algorithm to zoom toward the mouse cursor. General optimization of zoom behavior with mouse wheel. Added Shift key modifier to change zoom mode in perspective projection from Dolly (default) to zoomFactor. Changed Shift key modifier behavior to enable ZoomToCursor while pressed. Added `UpdateGUIControlWidgets()`, `UpdateGUIDrawingStyle()`, `UpdateGUIProjectionStyle()` and `UpdateGUITransparencySlider()` methods to update the GUI control widgets. Code tidy.
  - Added RayTracerQt in G4VisExecutive. Introduced nickname/alias TSGZB for appropriate driver by priority. In Vtk, removed patch as now ToolsSG-GLES builds with OpenGL-3.2. Vtk and ToolsSG-GLES can now cowork at run time.
  - G4VVisCommand: in `InterpolateViews()`, implemented desired time per time step. Computation time per step may cause this to increase.
  - G4VisCommandsViewer: improved guidance of `/vis/viewer/interpolate` command. In `/vis/viewer/set/timeWindow/displayHeadTime`, implemented "current as default". There might be some minor change of behaviour. In `/vis/viewer/select`, removed subsequent refresh, even for auto-refresh drivers. Refresh is not required after a select, window systems keep the image. Added `UpdateGUIControlWidgets()` to `G4VisCommandViewerSelect::SetNewValue()` to update the control widget when the viewer is changed.
  - In G4VisCommandsTouchable, disabled `/vis/touchable/centre...` and `/twinkle` in the case of large process times.
  - Added UI command `/vis/scene/add/endOfRunMacro`. The macro is executed at end of run and when rebuild required. WARNING: some vis commands in the macro cause recursion. Stick to simple commmands, e.g., which invoke vis manager `Draw()` methods.
  - G4VisCommands: always print available drivers when using `/vis/list`.
  - G4ViewParameters: added `TransparencyByDepth` and `TransparencyByDepthOption`. Simplified code; use single TimeParameters from G4ModelingParameters, to replace 18 time window parameters. Added `zoomToCursor` parameter to control the zoom behavior of the mouse wheel. Added data members and methods to handle dots. Changed `GetZoomToCursor()` to `IsZoomToCursor()` to follow convention for Boolean parameters. Fixed typo to make `/vis/viewer/set/lightsMove cam` behaving correctly for `/vis/viewer/set/lightsVector 0 0 1`. Addressing problem report #2460.
  - G4VisCommandsViewerSet: updated to `/vis/viewer/set/timeWindow` commands according to changes in G4ViewParameters. Added UI command `/vis/viewer/set/transparencyByDepth`. Added command `/vis/viewer/set/zoomToCursor` to set the `zoomToCursor` parameter. Improved guidance for `vis/viewer/set/dotsSmooth` "Smooth" typically means rounded, i.e., dots drawn as filled circles. The vis system is configured by default to draw smooth dots. This may be switched off with `/vis/viewer/set/dotsSmooth false` and typically this will result in square dots. Added `/vis/viewer/set/dotsSize and dotsSmooth` commands. G4PolyMarkers have a MarkerType that can be dots, circles, or squares.
  - Minor improvement to listing of histograms (if any).
  - G4VisManager: in `EndOfRun()`, print list of histograms even with vis disabled. In `EndDraw()` and `EndDraw2D()`, refresh view at end of drawing. Smooth dots are now default at end-of-run drawing.
  - Modernised macro-based loops with range-based for.
  - Replaced raw for loops with range-for where possible.
  - Removed all references to HepRepFile and Qt3D.
- Modeling
  - G4TrajectoryDrawerUtils: first version of generic time windowing of trajectory slices; draws only slices within the viewer time window. Note: unless the viewer can handled time-sliced trajectories (only OGLS can do this at present), the viewer must request a kernel visit on change of viewer time window. Trap trajectories with very long global times, e.g, products of long-lived radioactive isotopes. Draw as non-time-sliced trajectories. Added fading of trajectory slices if time windowing is active; makes trajectory slices look like little meteors streaking across the screen. Applied clang-format.
  - G4ModelingParameters: implemented `TimeParameters::operator!=()`. Adjusted default values in TimeParameters: set fade factor to 1 (maximum fading); set head time display 2D x-coordinate to zero (centre), while 2D y-coordinate remains at -0.9 (bottom). Added struct `TimeParameters`, a prerequisite for "Generic Time-Slicing" for the display of the time evolution of events. With that feature, the display of tracks moving through time will be available to all vis drivers (drivers will still be allowed to implement their own time evolution).
  - G4TrajectoriesModel: in `DescribeYourselfTo()`, draw display head time if requested and if time windowing is active; removed Begin/EndDraw around the trajectories loop.
  - In G4TrajectoryDrawByEncounteredVolume and G4TrajectoryEncounteredVolumeFilter, use `G4VTrajectory::GetAttValues()` instead of `CreateAttValues()`, to speedup repeated visits.
  - G4VModel: introduced static data member for current modeling parameters and its static accessor, `GetCurrentModelingParameters()`.
  - In G4PhysicalVolumeModel, fixed typo in ModelType.
  - G4TrajectoriesModel: call `SetCurrentModelingParameters()`.
  - G4ModelingParameters: added `TransparencyByDepth` and `TransparencyByDepthOption`.
  - G4PhysicalVolumeModel: renamed some data members and access functions for clarity; added `fMaxFullDepth` (includes base path, i.e., from world volume); added code for processing transparency by depth.
- OpenGL
  - G4OpenGLQtViewer: fixed the original pick feature to show pick info window. Implemented new virtual methods of G4VViewer, `GetWindowSize()` and `GetRenderAreaSize()`; modified `wheel_rotate()` function to call `ZoomFromMouseWheel()` of G4VViewer; updated `moveScene()` method to work correctly in perspective mode with dolly zoom. Commented calls to TouchableSetVisibility/Colour; no longer needed since the introduction of the new scene tree. Commented out some debug printing to `std::cout`. Improved context menu behavior for picking; added condition to avoid picking with rigth mouse button.
  - G4OpenGLWin32Viewer: added `SwitchToMasterThread()` method to draw trajectories at the end of run in MT mode. Implemented new virtual methods of G4VViewer, `GetWindowSize()` and `GetRenderAreaSize()`; modified `SetZoom()` function to call `ZoomFromMouseWheel()` of G4VViewer.
  - G4OpenGLStoredViewer, G4OpenGLStoredQtViewer: initiate kernel visit if `TransparencyByDepth` or its options change.
  - In G4OpenGLStoredViewer, follow changes introduced in G4ViewParameters.
  - Implemented policy for dotsSize and dotsSmooth.
- OpenInventor
  - G4OpenInventorViewer: initiate kernel visit if `TransparencyByDepth` or its options change. In `CompareForKernelVisit()`, cause kernel visit if viewer start/end time changes; this is to take advantage of the new generic time window. Implemented `CompareForTransientsRedraw()`. Take advantage of `ProcessTransients()`, which reconstructs that part of the graphical database for transient objects, e.g., trajectories, without reconstructing the "permanent" (run-duration) objects, e.g., the detector. In other words, something short of a complete "kernel visit". For example, if the time window changes. Maximises the efficiency of the recently implemented "generic" time windowing.
  - Implemented policy for dotsSize and dotsSmooth.
- RayTracer
  - Introducing RayTracerQt. Uses multithreading tracer, G4TheMTRayTracer. With multithreading, image construction is quite fast.
  - Introduced nicknames (long names still work): RT (for RayTracer), RTX (for RayTracerX), RTQt (for RayTracerQt).
  - In G4RayTracerViewer, use G4Timer to estimate KernelVisitElapsedTimeSeconds.
  - In G4VRTScanner (and inherited classes), removed misleading and un-used methods `GetGSName()` and `GetGSNickName()`.
- ToolsSG
  - Upgraded driver to work with OpenGL-3.2 and cowork with Vtk.
  - Allow accumulation of transients (trajectories) during multithreading.
  - Trajectories are stored in the database during the run, and displayed at end of run. All events are displayed at end of run.
  - In G4ToolsSGViewer, initiate kernel visit if `TransparencyByDepth` or its options change. In `CompareForKernelVisit()`, cause kernel visit if viewer start/end time changes; this is to take advantage of the new generic time window. Implemented `CompareForTransientsRedraw()`. Removed `SwitchToVisSubThread` and `SwitchToMasterThread` as no action is needed on thread switching. In `mouse_move()`, use the `event.shift_modifier()` method, to pass in pan mode. Have `GetWindowSize()` and `GetRenderAreaSize()` methods to retrieve the actual sizes of the "seen/visible window" and of the "render area" size; these may return different sizes, for example with Qt/OpenGL on macOS and Windows. In `SetView()`, use the new `GetWindowSize()`, `GetRenderAreaSize()` methods to set the "marker scale" on G4ToolsSGSceneHandler. Modified `wheel_rotate()` function to call `ZoomFromMouseWheel()` of G4VViewer; added method `GetSceneNearWidth()`. In `CreateSG()`, for 3D scenes, have a `tools::sg::shade_model` node set to "smooth" so TSG_GLES have the same rendering as in OGLI/OGLS. Issuing Gouraud shading on surfaces by default.
  - G4ToolsSGQtGLESViewer, G4ToolsSGQtZBViewer, G4ToolsSGOffscreenViewer: suppressed `SetView()` method, as no more needed.
  - In G4ToolsSGSceneHandler, respect line width in vis attributes and view parameters. In `GetOrCreateNode()`, removed restriction on multithreading. Handle the `fMarkerScale` field.
  - Implemented policy for dotsSize and dotsSmooth.
  - Modernised macro-based loops with range-based for statements.
- Vtk
  - In `G4VtkSceneHandler::ClearStore()`, fix to clear both stores.

### Data sets

- Updated photon evaporation data set version, G4PhotonEvaporation-6.1.2:
  - Correction to files z94.a239 (addressing problem report #2682), z91.a234 (addressing problem report #2170), z5.a11 (addressing problem report #2577) and z75.a187 (addressing problem report #2685).
- Updated low energy electromagnetic data set version, G4EMLOW-8.8:
  - Updated MicroElec data: added new files and updated format of other files.
  - Extension of ELSEPA elastic cross-section files for electrons in water up to `10 MeV`.
- Updated version of data set for neutron energies, G4PARTICLEXS-4.2:
  - Added data for elements and isotopes for neutrons in the resonance region, which are using more detailed energy scale and better reproduce resonance structure.
- Updated data set for proton and neutron density profiles, G4INCL-1.3:
  - New data files for in-flight antiprotons (Channel probabilities) `inflight*FS*.dat`.
- Updated data set for the simulation of channeling trajectories, G4CHANNELING-2.0:
  - Updated `Si-axis-100.dat` file after revision of the algorithm and increasing the accuracy.
  - Added files for: Si, Ge and Diamond.

### Examples

- Updated reference outputs, macros, READMEs and scripts.
- Migraded READMEs to Markdown format.
- Fixes for Doxygen documentation and coding guidelines.
- Updated examples macros for removal of HepRep[File] vis drivers.
- advanced
  - CaTS
    - RootIO, EventAction: Moved hit collections from EventAction to RootIO and improved code readability.
    - In DetectorConstruction, introduced map of sensitive detectors with names and refactored code for adding detectors.
    - lArTPCSD, readPhotonHits: updated for renaming from Photondetector to PhotonDetector and revised NumElectrons.
  - dna/cellularPhantom
    - Code reorganisation; introduced Run class.
    - Simplified analysis of results.
    - Updated affiliation.
  - dna/moleculardna:
    - Updated new implementation of IRT-syn model.
    - Corrected segmentation error with Root macrofiles, caused when low damage had been produced.
    - Updated reaction list for DNA reactions.
    - Define missing variable in some macros.
    - Increased default statistics in `ecoli.mac`.
    - Fixed cell geometry in `human_cell_chromosomes.mac`.
    - Added moleculardna macro, Root macro and geometry files for the simulation of phages.
    - Commented out system calls in all Root analysis macros.
    - Updated direct damage range for plasmid.mac and `cylinders.mac`.
    - Added `fiber.mac` macro.
    - Increased max number of arguments in main().
    - Added protection to all analysis macros to avoid `nan` in error calculation.
    - Added possibility to activate parallel world using dedicated flag from executable.
    - Added `/scheduler/verbose 0` to all human* macros.
    - Fixed `phase_space_test.mac` macro.
    - Merged the output files from different threads to a single file.
    - Fixed memory leak in the PrimaryGeneratorAction for phase_space.
    - Fixed the wrong gap: a gap (distance between 2 hits) can be 0 Addressing problem report #2681.
    - Added protection for over counting damage.
    - Fixed the printed info by Batmunkh.
    - Updated analysis macros for statistical analysis of errors.
    - Updated absorbed dose calculation in analysis macros to avoid double counting of energy deposition in DNA geometry, and inclusion of error on the dose.
  - eFLASH_radiotherapy
    - Added new class FlashMinibeamTemplate implementing the geometry of collimatiors for minibeam production, including the different geometrical configurations (grid and planar). Modified FlashDetectorConstruction accordigly.
    - Added a macro file for minibeam production.
  - exp_microdosimetry
    - Added mini tissue equivalent proportional counter (mini TEPC) in DetectorConstruction.
    - Added a new macro implementing a parallel monoenergetic `100 MeV` proton beam.
  - gammaknife
    - Fixed visualisation of geometry, which can be now drawn with `/vis/drawVolume`. Corrected positioning of boxmesh. Based on GitHub PR#92.
  - IAEAphsp
    - New example demonstrating how to read and write IAEA phase-space (IAEAphsp) files within a minimal, configurable application. The IAEAphsp format is defined by the IAEA Nuclear Data Section; this example shows how to use IAEAphsp files as input source (i.e. as a primary generator) and how to produce IAEAphsp outputs at given scoring planes. Reference paper: M.A. Cortes-Giraldo et al., Int J Radiat Biol 88(1-2): 200-208 (2012).
  - microbeam
    - Added n-tuple merging.
  - microelec_SEY
    - New example simulating the passage of incident electrons [10eV, 10keV] in a stack of 6 layers, where thicknesses and material nature can be user defined. The number of electrons re-emitted by the irradiated surface is counted by a spherical detector surrounding the whole geometry and providing the SEY rate in a csv file as a function of the incident energy.
- basic
  - B1
    - RunAction: modified printout to use the expression "Absorbed dose" Print Edep and mass of scoring volume.
    - Increased statistics in `exampleB1.in`.
  - B3
    - Removed StackingAction class and using method `SetDefaultClassification()` from G4RunManager for killing neutrinos.
- extended
  - biasing
    - GB03
      - Instantiate G4GenericBiasingPhysics only if biasing is enabled. Propagate biasing on/off to detector construction to initialise biasing classes only if biasing is requested.
      - Added histograms and counters for particles penetrating the shield volume.
      - Replaced GB03DetectorMessenger with GenericMessenger.
    - GB05
      - Removed explicit call of base class constructor in DetectorConstruction.
    - GB07
      - Removed explicit call of base class constructor in DetectorConstruction.
    - ReverseMC01
      - Migrated to work in MT mode.
  - common
    - New directory providing a set of classes independent on each other which can be reused in "feature" examples or users applications, demonstrating just a particular feature.
  - electromagnetic
    - TestEm0
      - RunAction: introduced `G4endl` in several places to easy debugging.
    - TestEm2
      - Fixed memory leak at exit in ActionInitialisation, DetectorConstruction and RunAction. Instantiate the field messenger differently.
    - TestEm4
      - Added G4RayleighScattering in PhysicsList.
    - TestEm5
      - TrackingAction: fixed reflect condition for negative X beam.
    - TestEm7
      - DetectorConstruction: fixed `SetWorldMaterial()` to correctly act on the world logical volume, rather than the absorber.
    - TestEm13
      - Added G4RayleighScattering in PhysicsList.
    - TestEm14
      - Added G4RayleighScattering in PhysicsList.
    - TestEm15
      - Updated `gamma.mac` input macro to use emstandard_opt4.
      - Removed `gamma2mumu.mac` input macro.
    - TestEm18
      - Added G4RayleighScattering in PhysicsList.
  - eventgenerator
    - exgps
      - In HistoManager, activated n-tuple merging.
      - Fixed python and analysis macros (tested with python 3.13.3).
      - Moved `plotHisto.C` to macros. Removed `plottest35.py` and `plotit.csh`.
      - Excluded not working tests (needed further investigation).
      - Removed `exgps_batch.in` (identical with `exgps.in`).
      - Copy all macros and run script into the build area in CMake script.
    - pythia/decayer6
      - Removed `common` subdirectory and copied only classes used in this example.
    - pythia/py8decayer
      - Updated to Pythia-8.3.15.
  - exoticphysics
    - channeling
      - ch2
        - New macros dedicated to specific applications.
        - Extended output at the detector.
        - Added scoring of radiation spectrum from the Baier-Katkov method; introduced virtual collimator.
        - Updated python analysis tools, no change in simulation code. Added a jupyter notebook version of a python script.
      - ch5
        - New example for simulating a positron source. Although the conventional approach based on an **amorphous target** is possible, the application is primarily designed to simulate positron sources based on oriented crystals. In the latter case, both the **single-crystal** and the **hybrid scheme** can be investigated.
    - phonon
      - Updated build script for CTests definitions.
  - g3tog4
    - Removed `common` subdirectory and copied only classes used in these examples.
  - hadronic
    - GammaNuclearPhysics: use G4GammaNuclearXS data set.
    - NeutronSource
      - In `main()`, added `SetUseNRESP71Model(true)`.
      - PhysicsList: removed temporary access to neutron capture model based on model name; removed unnecesary commented lines. Use local RadioactiveDecayPhysics instead of G4RadioaciveDecayPhysics. Use G4EmStandardPhysics_option3 instead of opt4; added G4EmExtraPhysics as an alternative to GammaNuclearPhysics; use G4HadronElasticPhysicsXS instead of HP.
  - medical/DICOM
    - Refactored DICOM examples into a single project; now build everything together for ease of use and demonstration. Code/behaviour otherwise is unchanged. Including two examples, DICOM1 (renamed from the original DICOM) and DICOM2, with two libraries that implement capabilities common to both applications: G4DicomCore, providing the core Geant4 application structure; G4DicomReader, optional utility library to read DICOM files and RT structure in DICOM format, as well as RT plans. Both applications can optionally use the DICOM Digital Head.
  - medical/dna
    - Use 'default' for trival destructors.
    - AuNP:
      - Added chemistry functionality.
      - Code refactoring and cleanup.
    - chem4:
      - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
    - chem5:
      - Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
      - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
      - Code clean up; added plot.py script for plotting the output data.
    - chem6:
      - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
      - Added UI commands to select physics constructor and output file name.
      - Code Refactoring.
    - dnadamage1:
      - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
    - dnadamage2:
      - Access DetectorConstruction via `GetUserDetectorConstruction()` from G4RunManager.
      - Delete run-manager as last in `main()`.
    - dnaphysics:
      - Added possibility to simulate radioactive nuclei; added `radioactive.in` macro and `plotRadioactive.C`.
      - Added `elastic.in` and `plotElastic.C` macros to show distribution of scattering angles.
      - Added UI command to record first step only; updated `elastic.in` macro accordingly.
      - Updated PhysicsList and SteppingAction.
    - mfp:
      - Added n-tuple merging.
    - microtrack:
      - New example implementing a geometry to calculate microdosimetry quantities for ion tracks in liquid water at a given energy, ensuring secondary electron equilibrium when needed. At each event, a random track hit defines a spherical scoring site; weighted sampling is then used to estimate energy imparted and related quantities.
    - molcounters:
      - New example showing how to use the new molecule counter manager system and how to write custom molecule counters. The custom (spatially-aware) molecule counter used here is further described in: Radiat. Phys. Chem. 212 (2023) 111194.
    - neuron:
      - Added UI commands to calculate water radiolysis products in specific regions.
      - Commented out the initialization in `main()` to allow G4DNAPhysicsActivator to register DNA regions in the macro input file.
    - phasespace:
      - New example showing how to simulate particle tracks in a cube of liquid water containing a scoring sphere, placed in its centre.
    - radial:
      - New example showing how to simulate radial dose profiles in liquid water from incident ions using the Geant4-DNA physics processes and models.
    - range:
      - Added beta option8 physics list.
    - scavenger:
      - Replaced `shared_ptr` with `unique_ptr` and raw for manager counters.
    - slowing:
      - Added n-tuple merging.
    - spower:
      - Added scoring of secondary electrons.
      - PhysicsList: added all DNA Physics Lists and usage of G4EmParameters.
      - In `lot.C`, added selection of electrons by default.
      - In `spower.in`, changed physics constructors. Added inactivation of nuclearStopping (for ions).
    - svalue:
      - Added n-tuple merging.
      - Added missing optional include file in TrackingAction header.
      - Added optional time threshold to iodine macros.
    - UHDR:
      - Updated pulseAction for larger pulse size.
      - Temporarily use molecule counter for EventScheduler.
      - Updated reaction table for scavengers.
      - Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
      - Added pulse structure and interpulse feature.
      - Fixed partially diffused-control reactions.
      - Fixed crash due to typo in `UHDR.in`.
      - Removed dependence of PrimaryGeneratorAction/Physlist/ChemList and ActionIni classes on DetectorConstruction class.
      - Added protection against null pointer in `plotG_time.C`.
      - Updated macro files.
  - medical/radiobiology
    - Primary beam origin can be located outside the detector water tank.
  - parallel
    - Retired obsolete TBB example. Functionality fully provided by tasking run manager with TBB support with no user code changes required.
    - MPI
      - Modernised and simplified library and example build scripts to build G4mpi library and examples of its use in one project.
      - Moved MPI from deprecated C++ interface to C interface (MPI 3+). Based on: GitHub PR#81.
  - parameterisations
    - Par04
      - Introduction of the CaloDiT pre-trained model, offering greater accuracy.
      - Updated VAE training with the new translation script and Condor scripts.
      - Applied GitHub PRs from dependabot to update requirements.
  - radioactivedecay
    - Activation
      - In `main()`, added `SetUseNRESP71Model(true)`.
      - GammaNuclearPhysics: use G4GammaNuclearXS data set.
  - runAndEvent
    - RE03
      - Temporarily protect against the use of parallel geometry initialization if running in sub-event parallel mode.