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