
                  Geant4 11.4-beta-01 Release Notes
                  ---------------------------------

                                                            26 June 2025

                 Migration Notes & Main New Features
                 -----------------------------------

  o 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.
  o New utility class G4VSIntegration, for integration of probability density
    function and dynamically sampling of final state.
  o Enabled voxelisation parallelism by default in G4GeometryManager, when
    MT/tasks are enabled. Enabled also for potential 2nd (and later) calls.
  o Code optimization in GetPointOnSurface() in specific shapes.
    Optimised surface area and cubic volume calculation of several geometrical
    primitives.
  o Updated implementation of QSS integration method to QSS version-2.
  o 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.
  o New base class G4VXRayModel for models of X-ray processes.
  o New G4LowPAIH2O model for dE/dx in water for p and e-.
  o In G4Scintillation and G4Cerenkov, build the integral tables only for
    materials that have non-empty material property tables.
  o Implemented new option to enable/disable fluctuation of energy loss per
    G4Region.
  o Introduced usage of the new ion ionisation model in DNA Opt8 physics
    configuration.
  o New class G4DNABornIonisationModel, a new implementation of the Born model
    using a new class G4DNASamplingTable, which allows the sharing of sampling
    data between threads.
  o New class G4ChemReboundTransportation to handle the rebound transportation
    of the molecule.
  o New classes with alternative pre-compound model.
  o In G4HadronicProcess, removed warning for the case when K0 and anti-K0
    are transformed into K0S or K0L.
  o Updated algorithms of integration of probabilities and sampling of kinetic
    energy for emitted fragment in hadronic de-excitation and pre-equilibrium.
    Expected more accurate spectra.
  o New alternative hadronic de-excitation FermiBreakUp model, G4FermiBreakUpAN,
    and support classes.
  o 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.
  o Added G4HadronPhysicsLEND in physics-lists to configure neutron and photon
    induced processes from LEND.
  o First version of generic time windowing of trajectory slices in
    visualisation. Introduced Time Window tab in Qt UI.
  o Introducing RayTracerQt visualisation driver, enabled when GEANT4_USE_QT
    configuration is enabled.
  o Set default configuration to use Qt6 when selecting Qt support.
    User must set GEANT4_USE_QT_QT5 to force find/use of Qt5.
  o Make the TSG driver the "flagship" visualization driver.
  o Re-instated transparency slider in visualization GUI.
  o In G4OpenGLQtViewer, fixed the original pick feature, which was
    inadvertently broken, to show pick info window.
  o Introduced the CaloDiT pre-trained ML model for fast simulation
    in Par04 example, offering greater accuracy.
  o Build option with VecGeom requires VecGeom v1.2.11 or v2.0.0-rc.5.
  o Requiring CLHEP-2.4.7.1 for external CLHEP installation.
  o New versions of datasets: G4EMLOW-8.7.

 ----------------------------------------------------------------------------

                             Technical Notes
                             --------------- 

  o Tested platforms:
    + Linux, gcc-15.2.0.
      Tested on 64 bit architectures (Intel or AMD) with Alma Linux 9
      (based on RedHat Linux Enterprise 9). Versions of Geant4 have also
      been compiled successfully on other Linux distributions, Ubuntu,
      Debian, Suse or other RedHat systems.
    + MacOS 15.5, Apple LLVM/clang-17 (Intel or Apple Silicon), 64 bits.
    + Windows/11 with Visual C++ 14.4 (Visual Studio 2022), 64 bits.

  o More verified configurations:
    + Linux, with gcc-11.5/12.1/13.2/14.2, clang-19/20.
    + Linux, with Intel-icx 2024.2.
    + MacOS 13.7/14.7, with Apple LLVM/clang-15/16.
    + Windows/10 with Visual C++ 14.36 (Visual Studio 2022)

  o External dependencies
    + CLHEP-2.4.7.1, required for external installation of the CLHEP library.
    + VecGeom v1.2.11 or v2.0.0-rc.5, for optional use of VecGeom primitives.
    + PTL-3.0.1, for external installation of the PTL tasking library.

  o New datasets:
    + G4EMLOW-8.7.

 Please refer to the Geant4 User Documentation:
   https://cern.ch/geant4/support/user_documentation
 for further information about using Geant4.

 ----------------------------------------------------------------------------

List of features and fixes included in this Beta release since 11.3.p02:

  o Configuration:
    -------------
    + CMake:
      o Set default configuration to use Qt6 when selecting Qt support.
        User must set GEANT4_USE_QT_QT5 to force find/use of Qt5.
      o Include external categories (G4zlib etc) in link resolution for unit
        test executables.
      o 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.
      o Add ENVIRONMENT to any build step of geant4_add_test for consistency
        and to allow easier propagation of additional build settings.
      o Updated to datasets: G4EMLOW-8.7.
    + GNUmake:
      o Updated system scripts for Qt settings: set Qt6 as default.
      o Correction in generation of geant.[c]sh and geant4.bat on Windows.

  o 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()'.
    + Modernized g4tools macro-based for loops with range-based for.

  o Externals:
    ---------
    + g4tools:
      o Updated to version 6.5.1.
      o 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.
      o In glarea, in mouseMoveEvent() for Qt5, corrected a bad cut/paste when
        creating the mouse_move_event.
      o 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.
    + zlib:
      o Updated zlib to version 1.3.1. Prior Geant4 patches are retained.

  o Geometry:
    --------
    + magneticfield:
      o Updated implementation of QSS integration method to QSS version-2.
    + management:
      o 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.
      o G4VSolid: set seed in EvaluateCubicVolume() and EvaluateSurfaceArea()
        to ensure reproducibility of the resulting value.
      o G4GeomTools: added functions HyperboloidSurfaceArea(), HypeStereo()
        and TwistedTubeBoundingTrap().
      o Applied clang-tidy fixes fixes (readability, modernization,
        performance, ...) based on llvm version 19.1.17.
    + navigation:
      o 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.
      o Reorganised and enriched comments in headers to follow Doxygen style.
      o Removed declared but not implemented methods in G4VoxelNavigation,
        G4ParameterisedNavigation, G4VoxelSafety and G4PathFinder.
    + solids/Boolean:
      o G4MultiUnion: fix in GetSurfaceArea() and some optimisation to use
        G4QuickRand(). In GetLocalPoint(), GetLocalVector(), GetGlobalPoint()
        and GetGlobalVector(), make direct usage of the transformation matrix
        elements.
    + solids/CSG:
      o G4Box: code restructuring in DistanceToOut() methods.
      o G4Orb: provide faster algorithm in GetPointOnSurface().
      o G4Para: speedup calculation of surface area in GetSurfaceArea() and
        GetPointOnSurface().
      o G4Box, G4Para, G4Trd: code optimization in GetPointOnSurface().
      o G4Torus: implemented uniform sampling of random points on surface.
    + solids/specific:
      o G4Ellipsoid, G4EllipticalTube: code optimization in GetPointOnSurface().
      o G4TessellatedSolid, G4TriangularFacet, G4QuadrangularFacet: use
        G4QuickRand() for generating points on surface.
      o G4EllipticalCone: code optimization in GetPointOnSurface(); moved
        setters implementations to source.
      o G4Paraboloid: implemented uniform sampling of random points on surface.
      o G4Hype: revised surface area calculation and random point sampling.
        Code optimization in GetPointOnSurface().
      o Use G4QuickRand() in G4PolyPhiFace, G4PolyconeSide, G4PolyhedraSide,
        G4TwistedTubs, G4VCSGfaceted and G4VTwistedFaceted for sampling points
        on surface.
      o G4EllipticalCone, G4EllipticalTube, G4Voxelizer: removed unnecessary
        headers.
    + volumes:
      o Fix to only delete the logical skin/border surfaces if the geometry
        is not closed.
      o Reorganised and enriched comments in headers to follow Doxygen style.
      o Applied clang-tidy fixes for readability, based on llvm version 19.1.7.

  o Global:
    ------
    + Factored common ieee754 union and helper functions out of G4Log and
      G4Exp to remove code duplication.
    + 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 again and again. 
    + G4QuickRand: Added a possibility to set a seed.
    + Changed date for release 11.4-beta.

  o Graphics Representations:
    ------------------------
    + Re-instated transparency slider in GUI.
    + G4VGraphicsScene: added 'fMaxGeometryDepth' data member and
      corresponding access functions.

  o 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.

  o 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.
    + General code tidy.

  o Persistency:
    -----------
    + gdml:
      o Fix to pre-pend '0x' string before the address when writing entities
        on Windows platform. Addressing problem report #2322.

  o Physics Lists:
    -------------
    + Builders:
      o 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.
    + Constructors:
      o electromagnetic:
        - G4GeneralGammaProcess: updated destructor according to modification
          in electromagnetic/utils.
        - G4EmDNABuilder: use G4DNABornIonisationModel1 for proton ionisation.
          For Opt8 configuration, use the same configuration of models for e-
          and protons as in Opt2.
        - 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_option6: disabled "fast" flag in order to have
          comparisons with Opt4 in the same set of general DNA parameters.
        - 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.
      o gamma_lepto_nuclear:
        - G4EmExtraPhysics: removed LEND photo-nuclear; it is now selected by
          G4HadronPhysicsLEND.
      o hadron_elastic:
        - In G4ChargeExchangePhysics, fixed usage of the messenger.
      o hadron_inelastic:
        - 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.
    + Lists:
      o 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.
      o In QBBC physics list, added G4ChargeExchangePhysics.
      o In Shielding physics list, simplified logic tree for inelastic models
        and moved all LEND hadronic inelastic processes to G4HadronPhysicsLEND.

  o Electromagnetic Processes:
    -------------------------
    + DNA:
      o Added new G4DNARuddIonisationDynamicModel, which uses charge from
        G4DynamicParticle. The model is applicable for all ions.
      o G4DNABornIonisationModel: new implementation of the Born model using
        G4DNASamplingTable class; use stationary and fast flags from EM
        parameters.
      o G4DNARuddIonisationModel, G4DNABornIonisationModel1 and
        G4DNABornIonisationModel2: fixed definition of the stationary code via
        G4EmParameters.
      o G4DNASamplingTable, new class allowing the sharing of  sampling data
        between threads.
      o Updated IRT-syn model for high LET applications.
      o Correction in the G4DNAScavengerProcess for IRT-syn model.
      o Created G4ChemReboundTransportation to handle the rebound transportation
        of the molecule.
      o Replaced the G4MoleculeCounter singleton with G4MoleculeCounterManager
        for managing counters.
      o Replaced shared_ptr with unique_ptr and raw for manager counters.
      o Fixed FPE on G4ChemReboundTransportation::calculateNextCoordinate().
      o In G4PhysChemIO, removed dependency on 'analysis' module.
    + Low Energy:
      o G4LivermorePhotoElectricModel: reorganisation of initialisation and
        data destruction.
      o In G4AtomicTransitionManager, G4UAtomicDeexcitation, use std::size_t
        and few other cosmetic changes.
      o In G4hIonEffChargeSquare, fixed reported Coverity defect.
    + Muons:
      o G4RiGeMuPairProductionModel, G4RiGeAngularGenerator: fixes to the
        angular distribution of electrons and positrons.
      o G4MuPairProduction: enable RiGe model via G4EmParameters.
    + Pii:
      o Use "const G4String&" in G4hImpactIonisation::InitializeMe() to avoid
        unnecessary copy, reported by Coverity.
    + Standard:
      o Added G4LowPAIH2O model for dE/dx in water for p and e-.
      o G4UrbanMscModel: cosmetic change for Opt3 case; minor code improvement
        and updated comments to the code. Not affecting any result.
      o Reverted changes introduced in release 11.3 for static data
        initialization in G4eBremsstrahlungRelModel.
    + Utils:
      o New base class G4VXRayModel for X-ray processes. Adapted classes
        G4OpticalParameters, G4OpticalParametersMessenger and G4LossTableManager
        to configure and use G4VXRayModel.
      o G4EmParametersMessenger: added UI command to enable/disable 5D pair
        production model by muons.
      o G4EmUtility, G4EmDataHandler, G4EmDataRegistry: removed minor memory
        leaks and improved destruction at exit.
      o G4EmParameters, G4EmParametersMessenger, G4EmUtility, G4LossTableBuilder,
        G4VEnergyLossProcess: implemented new option to enable/disable
        fluctuation of energy loss per G4Region.
      o G4VEmProcess: added call to StartTracking(..) for all used models,
        which need access to G4Track pointer.
    + Xrays:
      o In G4Scintillation, build the scintillation integral tables for
        materials that have non-empty material property tables and added
        method BuildInverseCdfTable().
      o In G4Cerenkov, build the Cerenkov integral only for materials that
        have non-empty material property tables.

  o Hadronic Processes:
    ------------------
    + cross_sections
      o 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.
      o 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.
      o Fixed minor memory leaks in classes G4CrossSectionFactory,
        G4CrossSectionFactoryRegistry, G4CrossSectionFactory,
        G4ElectroNuclearCrossSection and G4ChipsAntiBaryonElasticXS. 
      o G4EMDissociationCrossSection: fixed several technical inaccuracies
        in the code, addressing reported Coverity defects and to correctly
        use G4Pow.
      o G4ParticleInelasticXS: fixed reported Coverity defect.
      o In G4EMDissociationSpectrum, added protection against beta=0, to fix
        reported Coverity defect; correctly use G4Pow.
    + management
      o G4HadronicProcess: removed warning for the case when K0 and anti-K0
        are transformed into K0S or K0L.
    + models/coherent_elastic
      o 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).
      o 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.
    + models/de_excitation
      o Added G4FermiBreakUpAN, new alternative FermiBreakUp model and support
        classes, contributed by A. Novikov (Yandex and MIPT) through
        [GitHub PR #84](https://github.com/Geant4/geant4/pull/84). The model is
        based on: J.P. Bondorf et al., Physics Reports, 257(3):133-221.
      o G4ExcitationHandler, G4DeexPrecoParameters: updated initialisation
        to allow switching between different FermiBreakUp models.
      o G4DeexPrecoUtility: new class, providing common computation, to avoid
        code duplication. Use it in classes G4EvaporationProbability,
        G4ProtonEvaporationProbability, G4DeuteronEvaporationProbability,
        G4TritonEvaporationProbability, G4He3EvaporationProbability and
        G4AlphaEvaporationProbability, simplifying code.
      o G4DeexPrecoParameters: added extra enumerator to choose variants of
        the pre-compound model.
      o G4NucLevel, G4PhotonEvaporation: use explicit type conversion from
        double to float; use const arguments where possible.
      o G4VEmissionProbability, G4EvaporationProbability, G4GEMProbabilityVI:
        updated algorithms of integration of probabilities and sampling of
        kinetic energy for emitted fragment. Expected more accurate spectra.
      o G4GEMChannelVI, G4EvaporationGEMFactoryVI, G4DeexPrecoParameters: new
        GEM de-excitation model with 83 decay channels.
      o G4VEmissionProbability: use the new utility class G4VSIntegration,
        to simplify code; not affecting results.
        Updated parameters of integration of the probability density function.
      o In G4PhotonEvaporation, G4VEmissionProbability, check life time of
        final excitation level; special treatment for the ground state and the
        next level. Addressing problem report #2660.
      o In G4EvaporationProbability, fixed computation of inverse cross-section.
      o G4StatMFMicroPartition: code cleanup, removed non-informative printout,
        which can be repeated many times; instead stop MF model and return to
        de-excitation handler.
      o G4LevelReader: fix for reported Coverity defect.
      o G4VFermiFragmentAN, G4FermiBreakUpAN: fixed reported Coverity defects.
      o G4CoulombBarrier: some code cleanup.
      o G4Evaporation: improved debug printout.
    + models/em_dissociation
      o G4EMDissociation: fixed reported Coverity defects.
    + models/inclxx
      o Fixed one more reported Coverity defect for use of std::move()
        in G4INCLCascade.
      o Fixed URL to Root in comments.
        Fixes [GitHub PR#87](https://github.com/Geant4/geant4/pull/87).
    + models/lend
      o Major update of GIDIplus interface with refactored C++ code, including
        use of official GNDS formatted data.
      o Added feature for high-fidelity gamma cascades following reactions such
        as neutron capture and inelastic scattering.
      o Collect all inelastic models (neutron and gamma induced) into
        G4HadronPhysicsLEND. Updated and simplified Shielding and
        G4EmExtraPhysics accordingly.
      o Fix in G4EmExtraPhysics for failing in loading photonuclear from LEND
        if G4GammaGeneralProcess existed.
      o Fix in G4LENDCombinedModel photofission; check energy function was not
        connected to the base class, resulting in a crash.
    + models/nudex
      o Address maybe-unitialized warnings when building/linking with LTO,
        identified by ATLAS.
    + models/particle_hp
      o 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; initilised 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.
      o In G4ParticleHPInelastic, fixed AllHP physics for  initialisation of
        neutrons and light ions. Addressing problem report #2591.
      o G4ParticleHPThermalScattering, G4ParticleHPThermalScatteringData,
        G4ParticleHPJENDLHEData: fixed reported Coverity defects for
        unprotected access to maps.
      o Fixed reported Coverity defects, mainly in handling of maps and finding
        of isotopes.
    + models/pre_equilibrium
      o New classes G4PreCompoundInterface, G4PreCompoundTransitionInt and
        G4PreCompoundEmissionInt with alternative precompound model.
      o 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.
      o G4PreCompoundFragment, G4PreCompoundNucleon, G4PreCompoundIon: updated
        computation of inverse cross-section; added factor to cross-section.
      o G4VPreCompoundFragment, G4PreCompoundFragment, G4HETCFragment: use the
        new utility class G4VSIntegration, to simplify code; not affecting
        results.
      o G4PreCompoundFragment, G4PreCompoundProton, G4PreCompoundDeuteron,
        G4PreCompoundTriton, G4PreCompoundHe3, G4PreCompoundAlpha: use new
        utility class G4DeexPrecoUtility.
    + util
      o G4HadronicParameters: implemented pretty-print to ostream to allow
        users to check values at runtime, a-la G4EmParameters (request from
        ATLAS).

  o Run:
    ---
    + 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 also clear these surface tables.

  o 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.

  o Visualization:
    -------------
    + management:
      o 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.
      o 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 <d> [option]".
        G4UIQt issues this command on signals from the slider. The user may,
        of course, use this command directly.
      o 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.
      o 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.
        Improved some diagnostic printing.
      o 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. Code tidy.
      o Added RayTracerQt in G4VisExecutive.
      o G4VVisCommand: in InterpolateViews(), implemented desired time per time
        step. Computation time per step may cause this to increase.
      o 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.
      o In G4VisCommandsTouchable, disabled "/vis/touchable/centre..." and
        "/twinkle" in the case of large process times.
      o 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.
      o G4ViewParameters: added 'TransparencyByDepth' and
        'TransparencyByDepthOption'. Simplified code; use single TimeParameters
        from G4ModelingParameters, to replace 18 time window parameters.
        Fixed typo to make "/vis/viewer/set/lightsMove cam" behaving correctly
        for "/vis/viewer/set/lightsVector 0 0 1".
        Addressing problem report #2460.
      o G4VisCommandsViewerSet: updated to "/vis/viewer/set/timeWindow"
        commands according to changes in G4ViewParameters.
        Added UI command "/vis/viewer/set/transparencyByDepth".
      o Minor improvement to listing of histograms (if any).
      o In G4VisManager::EndOfRun(), print list of histograms even with vis
        disabled.
      o Modernised macro-based loops with range-based for.
      o Replaced raw for loops with range-for where possible.
    + modeling:
      o 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.
      o 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).
      o G4TrajectoriesModel: in DescribeYourselfTo(), draw display head time
        if requested and if time windowing is active; removed Begin/EndDraw
        around the trajectories loop.
      o In G4TrajectoryDrawByEncounteredVolume and
        G4TrajectoryEncounteredVolumeFilter, use G4VTrajectory::GetAttValues()
        instead of CreateAttValues(), to speedup repeated visits.
      o G4VModel: introduced static data member for current modeling parameters
        and its static accessor, GetCurrentModelingParameters().
      o In G4PhysicalVolumeModel, fixed typo in ModelType.
      o G4TrajectoriesModel: call SetCurrentModelingParameters().
      o G4ModelingParameters: added 'TransparencyByDepth' and
        'TransparencyByDepthOption'.
      o 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:
      o G4OpenGLQtViewer: fixed the original pick feature to show pick info
        window.
      o G4OpenGLWin32Viewer: added SwitchToMasterThread() method to draw
        trajectories at the end of run in MT mode.
      o G4OpenGLStoredViewer, G4OpenGLStoredQtViewer: initiate kernel visit if
        'TransparencyByDepth' or its options change.
      o In G4OpenGLQtViewer, commented calls to TouchableSetVisibility/Colour;
        no longer needed since the introduction of the new scene tree.
        Commented out some debug printing to std::cout.
      o In G4OpenGLStoredViewer, follow changes introduced in G4ViewParameters.
    + OpenInventor:
      o 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.
    + Qt3D
      o G4Qt3DViewer: 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().
    + RayTracer:
      o Introducing RayTracerQt. Uses multithreading tracer, G4TheMTRayTracer.
        With multithreading, image construction is quite fast.
      o Introduced nicknames (long names still work): RT (for RayTracer),
        RTX (for RayTracerX), RTQt (for RayTracerQt).
      o In G4RayTracerViewer, use G4Timer to estimate
        KernelVisitElapsedTimeSeconds.
      o In G4VRTScanner (and inherited classes), removed misleading and un-used
        methods GetGSName() and GetGSNickName().
    + ToolsGS:
      o Allow accumulation of transients (trajectories) during multithreading.
      o Trajectories are stored in the database during the run, and displayed
        at end of run. All events are displayed at end of run.
      o 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
        Mac and Windows. In SetView(), use the new GetWindowSize(),
        GetRenderAreaSize() methods to set the "marker scale" on
        G4ToolsSGSceneHandler.
      o G4ToolsSGQtGLESViewer, G4ToolsSGQtZBViewer, G4ToolsSGOffscreenViewer:
        suppressed SetView() method, as no more needed.
      o In G4ToolsSGSceneHandler, respect line width in vis attributes and view
        parameters. In GetOrCreateNode(), removed restriction on multithreading.
        Handle the 'fMarkerScale' field.
      o Modernised macro-based loops with range-based for statements.

  o Datasets:
    ---------
    + G4EMLOW-8.7:
      o Updated MicroElec data: added new files and updated format of other
        files.

  o Examples:
    --------
    + Updated reference outputs, macros, READMEs and scripts.
    + advanced/dna/cellularPhantom
      o Code reorganisation; introduced Run class.
      o Simplified analysis of results.
      o Updated affiliation.
    + advanced/dna/moleculardna
      o Updated new implementation of IRT-syn model.
      o Deleted Max Time Step parameter.
      o Corrected segmentation error with Root macrofiles, caused when low
        damage had been produced.
      o Updated reaction list for DNA reactions.
      o Define missing variable in some macros.
      o Increased default statistics in ecoli.mac.
      o Added moleculardna macro, Root macro and geometry files for the
        simulation of phages.
      o Updated direct damage range for plasmid.mac and cylinders.mac.
      o Added fiber.mac macro.
      o Increased max number of arguments in main().
      o Added protection to all analysis macros to avoid 'nan' in error
        calculation.
      o Added possibility to activate parallel world using dedicated flag from
        executable.
    + advanced/microbeam
      o Added n-tuple merging.
    + extended/biasing
      o Applied basic clang-tidy fixes and clang-format to code.
    + extended/biasing/GB03
      o Instantiate G4GenericBiasingPhysics only if biasing is enabled.
        Propagate biasing on/off to detector construction to initialise
        biasing classes only if biasing is requested.
    + extended/biasing/GB05
    + extended/biasing/GB07
      o Removed explicit call of base class constructor in DetectorConstruction.
    + extended/electromagnetic/TestEm2
      o Fixed memory leak at exit in ActionInitialisation, DetectorConstruction
        and RunAction. Instantiate the field messenger differently.
    + extended/electromagnetic/TestEm4
      o Added G4RayleighScattering in PhysicsList.
    + extended/electromagnetic/TestEm13
    + extended/electromagnetic/TestEm14
      o Added G4RayleighScattering in PhysicsList.
    + extended/electromagnetic/TestEm15
      o Updated gamma.mac input macro to use emstandard_opt4.
      o Removed gamma2mumu.mac input macro.
    + extended/electromagnetic/TestEm18
      o Added G4RayleighScattering in PhysicsList.
    + extended/eventgenerator/exgps
      o In HistoManager, activated n-tuple merging.
      o Fixed python and analysis macros (tested with python 3.13.3).
      o Moved plotHisto.C to macros. Removed plottest35.py and plotit.csh.
      o Excluded not working tests (needed further investigation).
      o Removed exgps_batch.in (identical with exgps.in).
      o Copy all macros and run script into the build area in CMake script.
    + extended/eventgenerator/pythia/py8decayer
      o Updated to Pythia-8.3.15.
    + extended/exoticphysics/phonon
      o Updated build script for CTests definitions.
    + extended/hadronic/NeutronSource
      o In main(), added SetUseNRESP71Model(true).
    + extended/medical/DICOM
      o 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.
    + extended/medical/dna/chem4
      o Replaced shared_ptr with unique_ptr and raw for manager counters.
    + extended/medical/dna/chem5
      o Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
      o Replaced shared_ptr with unique_ptr and raw for manager counters.
      o Code clean up; added plot.py script for plotting the output data.
    + extended/medical/dna/chem6
    + extended/medical/dna/dnadamage1
      o Replaced shared_ptr with unique_ptr and raw for manager counters.
    + extended/medical/dna/dnaphysics
      o Added possibility to simulate radioactive nuclei; added radioactive.in
        macro and plotRadioactive.C.
      o Added elastic.in and plotElastic.C macros to show distribution of
        scattering angles.
      o Added UI command to record first step only; updated elastic.in macro
        accordingly.
      o Updated PhysicsList and SteppingAction.
    + extended/medical/dna/mfp
      o Added n-tuple merging.
    + extended/medical/dna/molcounters
      o 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.
    + extended/medical/dna/radial
      o New example showing how to simulate radial dose profiles in liquid
        water from incident ions using the Geant4-DNA physics processes and
        models.
    + extended/medical/dna/range
      o Added beta option8 physics list.
    + extended/medical/dna/scavenger
      o Replaced shared_ptr with unique_ptr and raw for manager counters.
    + extended/medical/dna/slowing
      o Added n-tuple merging.
    + extended/medical/dna/spower
      o Added scoring of secondary electrons.
      o PhysicsList: added all DNA Physics Lists and usage of G4EmParameters.
      o In lot.C, added selection of electrons by default.
      o In spower.in, changed physics constructors.
    + extended/medical/dna/svalue
      o Added n-tuple merging.
      o Added optional time threshold to iodine macros.
    + extended/medical/dna/wvalue
      o Added n-tuple merging.
    + extended/medical/dna/UHDR
      o Updated pulseAction for larger pulse size.
      o Temporarily use molecule counter for EventScheduler.
      o Updated reaction table for scavengers.
      o Use the new G4MoleculeCounterManager to manage the G4MoleculeCounter.
      o Added pulse structure and interpulse feature.
      o Fixed partially diffused-control reactions.
      o Fixed crash due to typo in UHDR.in
      o Removed dependence of PrimaryGeneratorAction/Physlist/ChemList
        and ActionIni classes on DetectorConstruction class.
      o Updated macro files.
    + extended/medical/radiobiology
      o Primary beam origin can be located outside the detector water tank.
    + extended/parallel
      o Retired obsolete TBB example. Functionality fully provided by tasking
        run manager with TBB support with no user code changes required.
    + extended/parallel/MPI
      o Modernised and simplified library and example build scripts to build
        G4mpi library and examples of its use in one project.
      o Moved MPI from deprecated C++ interface to C interface (MPI 3+).
        Based on [GitHub PR#81](https://github.com/Geant4/geant4/pull/81).
    + extended/parameterisations/Par04
      o Introduction of the CaloDiT pre-trained model, offering greater
        accuracy.
      o Updated VAE training with the new translation script and Condor scripts.
    + extended/radioactivedecay/Activation
      o In main(), added SetUseNRESP71Model(true).

 ----------------------------------------------------------------------------
 
