Geant4 10.7 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 and VecGeom 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-4.9.3.
Tested on 64 bit architectures (Intel or AMD) with
CERN CentOS Linux 7 (CC7) (based on CentOS Linux 7).
- MacOS 10.15 Catalina with Apple LLVM/Clang-12.0 (llvm/clang-10)
- Windows-10 with Visual C++ 14.28 (Visual Studio 2019)
More verified and tested configurations (64 bits):
- Linux, gcc-5.4/6.3/7.4/8.2/9.3/10.2, clang-8/9/10
- Linux, Intel-icc 19.1
- MacOS 10.14 Mojave with Apple LLVM/Clang-10/11
- MacOS 11 Big Sur with Apple LLVM/Clang-12 (Intel chips only)
2. Supported CLHEP and VecGeom version
This release of Geant4 requires and has been verified with
CLHEP, release 2.4.4.0.
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
1.1.8 is required when using such configuration.
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
- Code using the G4MULTITHREADED preprocessor macro must include the
G4Threading.hh header before using the macro.
- Minimum required version of CMake to build Geant4 is 3.8.
Allow specification of C++20 for CMake 3.12 and above.
Geometry, Fields and Transportation
- The default integration method for field propagation in a pure magnetic
field is changed to use a templated stepper G4TDormandPrince45.
A speedup is expected.
Instead a slowdown can occur if a large fraction of 'long' steps
propagating in a vacuum or gas volume with a strong-enough magnetic field.
To restore the previous method used in Geant4 10.6. set nullptr
as third argument and the fourth argument stepperDriverId=4 in
the relevant constructor of G4ChordFinder.
Electromagnetic and optical physics
- Moved optical physics parameters to new G4OpticalParameters class.
- Added new threshold for muon/hadron bremsstrahlung and e+e- pair production
allowing to stop a track when energy transfer exceeds the defined threshold
and makes a new vertex.
- Added two extra sets of StepFunction parameters for light ions and generic
ions. Added corresponding UI commands allowing one to customise step
limitation for ions separately from step limits for electrons or hadrons.
Hadronic physics
- The UI commands for Radioactive Decay are named /process/had/rdm/....
The old commands /grdm/... are still valid, but deprecated,
and will be removed in the next major release, Geant4 11.
- To enable building of ParticleHP as HP, use the new CMake option
-GEANT4_BUILD_PHP_AS_HP=ON when building Geant4.
The old environment variable PHP_AS_HP is still valid, but
deprecated, and will be removed in the next major release.
Data Sets
- This release introduces new data set versions.
Please see the corresponding details in
Section 9 of this document.
- New data set versions: G4EMLOW-7.13, G4RadioactiveDecay-5.6,
G4PhotonEvaporation-5.7, G4ENSDFSTATE-2.3, G4PARTICLEXS-3.1,
G4RealSurface-2.2.
- In order to use ParticleHP for charged particles
(protons, deuterons, tritons, He3 and alphas), an optional data
set G4TENDL-1.3.2 is required, and can be optionally
downloaded in addition.
4. New Developments and Capabilities
General
- Introducing new optional (Beta) tasking system, based on PTL
(Parallel Tasking Library), dedicated run manager (G4TaskRunManager) and
factory (G4RunManagerFactory), enabling use of tasks for the event loop.
The tasking system is fully compatible with Intel TBB, which can be
selected if GEANT4_USE_TBB=ON is specified when configuring CMake. The
default behavior for tasking is to submit the tasks to an internal
thread-pool and task-queue.
- Introduced general facilities based on GFlash implementation to facilitate
multiple hit (energy & position) creation from fast simulation models.
- Updated SI constants, based on May 2019 redefinition of SI units.
- Added G4Backtrace header for printing backtraces from raised signals.
Can be enabled by setting GEANT4_BUILD_BUILTIN_BACKTRACE option at
configuration.
- New profiling settings for TiMemory which allow per-{run,event,track,step}
profiling when GEANT4_USE_TIMEMORY is enabled.
- Extended CMake build system to support G4Py activation through
GEANT4_USE_PYTHON flag.
- Simplified CMake builds to enable future modularisation of Geant4
libraries.
Analysis
- Major upgrade of analysis module, including support for multiple files
and multiple output types in the same run; defeined new methods and
corresponding UI commands. The new functions are available through a new
G4GenericAnalysisManager class, and are demonstrated in the basic B5
example.
- Enabled handling of automatic min/max axes values in case of log scale
in analysis tools.
Digitization, Hits & Scoring
- Added layered mass geometry option for the new "probe" scoring mesh.
- Introducing G4VPrimitivePlotter allowing the user to extend a primitive
scorer; added G4VScoreHistFiller and G4TScoreHistFiller, allowing scorers
to fill histograms defined through Geant4 Analysis tools.
Geometry and Field
- Improved speed for detection of volume overlaps either through
UI commands or at geometry construction.
- New templated field classes for equation and selected steppers
to avoid virtual call for field and equation respectively.
Non-virtual calls are expected to provide a direct speedup.
In addition key methods are made inline to enable compilers to
seek extra speedup by embedding them to avoid any function call.
- New class G4DriverReporter to print progress of field drivers.
- Enabled "check-mode" for G4PropagatorInField and G4VIntersectionLocator.
- Enabled use of whiteboard for logging/debugging in G4MultiLevelLocator,
if "check-mode" in navigation is being activated through UI command.
Materials
- Added two new public methods to add elements to a material:
AddElementsByNumberOfAtoms(...) and AddElementByMassFraction(...).
- Added a new method ConstPropertyExists() to G4MaterialPropertiesTable.
Added new methods to access/add properties with G4String and std::vector.
- Added new properties for scintillation allowing 3 time constants and a
second wavelength shifter in the same material in G4MaterialPropertiesTable
and G4MaterialPropertiesIndex.
Electromagnetic physics
- Added two extra sets of StepFunction parameters for light ions and generic
ions. Added corresponding UI commands allowing one to customise step
limitation for ions separately from step limits for electrons or hadrons.
- Introducing thermal model of positronium decay to two gammas.
In this model, the positronium acquires a mean kinetic energy on formation,
which contributes to a small non-collinearity of the gammas, detectable and
significant in PET.
- Added new EM model for polarized gamma elastic scattering.
- New class for handling the numerical Differential Cross-Sections(DCS) for
Coulomb scattering of e-/e+, and added new model, implementing single
Coulomb scattering for e-/e+.
- Added new classes and models for micro-dosimetry simulation.
- Added new threshold for muon/hadron bremsstrahlung and e+e- pair production
allowing to stop a track when energy transfer exceeds the defined threshold
and makes a new vertex.
- Added a model for gamma-ray elastic interactions, able to account for
molecular interference effects, by using database or user-custom form
factors.
- Implemented three time constants for G4Scintillation, and allow multiple
time constants to work with scintillation by particle type.
Added second wavelength shifting process within the same material.
Hadronic physics
- For charm and bottom hadron-nuclear (elastic and inelastic)
cross sections, the Glauber-Gribov approach has been extended to
cover heavy hadrons.
For final-state elastic nuclear scattering of charm and bottom
hadron projectiles, a simple treatment is utilized.
For final-state inelastic nuclear scattering of charm and bottom
hadron projectiles, both Geant4 string models (FTF and QGS) have
been extended to deal with charm and bottom quarks and diquarks
carried by the heavy projectile hadron, as well as with the
possibility of creating charm-anti_charm and bottom-anti_bottom
pairs from the vacuum during the string fragmentation phase.
Cascade models are currently not applicable for heavy hadrons and
string models cannot handle them properly at very low energies:
below 100 MeV a dummy model that returns as final state the
initial state unchanged is utilized.
The decays of secondary heavy hadrons - charm and bottom hadrons
created by inelastic nuclear interactions of primary hadrons -
cannot be pre-defined by Monte Carlo event generators, therefore
a very simple approach is currently used: one single, fully hadronic
decay is defined for each "long"-lived charm and bottom hadron,
with a simple multi-body phase-space treatment of the decay
kinematics.
- For the evaluation of systematic errors due to uncertainties in
the Geant4 hadronic cross sections we recommend to scale up and
down the cross sections, independently for elastic and inelastic
interactions, and independently for different types of hadrons.
Currently, this is possible for the following three categories of
hadrons: nucleons (i.e. proton and neutron together), pions (i.e.
pion+ and pion- together), all the rest of hadrons (i.e. kaons,
hyperons, anti-baryons, light ions, light anti-ions, charm and
bottom hadrons all together).
New public methods of the singleton class G4HadronicParameters
allow to enable the scaling of these cross sections (disabled by
default), and to set the scaling factors (by default 1.0).
Here are some rough, practical suggestions on the scaling of the
cross sections: +/- 10% variation for nucleons and pions;
+/- 15-20% variation for kaons; +/- 20-30% variation for other
hadrons. Moreover, bigger variations might be considered at low
energies to account for the challenge of describing the shapes
of cross sections in the threshold and resonance region.
- New utility class to access hadronic processes, allowing to customise
hadronic cross-sections per particle type.
- New UI messenger for hadronic physics, currently used for controlling
verbosity level: the UI command /process/had/verbose 0 allows
to switch off the print-out at initialization of hadronic processes,
models and cross-sections (similar to the existing command
/process/em/verbose 0 to switch off the print-out of
electromagnetic physics information).
- New UI command to change the default upper energy limit
(default: 100 TeV): /process/had/maxEnergy ...
- New G4PARTICLEXS-3.1 dataset provides accurate fusion cross-sections
based on data, more accurate inelastic cross-sections for neutrons,
protons, light ions, and gamma for the full energy range.
- Replaced where possible the use of environmental variables in hadronic
models with appropriate UI commands.
- A new low-energy gamma-nuclear final-state model,
G4LowEGammaNuclearModel, based on precompound de-excitation
and providing isomer production and gamma transitions, is used in
G4EmExtraPhysics.
- Improved treatment of antibaryon interactions in QGS.
- Added handling of lepto-nuclear interactions for anti_nu_e, nu_e,
anti_mu_nu and mu_nu.
- A new coalescence model, useful in particular for Cosmic Ray applications,
has been introduced. By considering the list of secondaries produced by a
string model, it forms deuterons and antideuterons from, respectively,
proton-neutron and antiproton-antineutron pairs with close momenta.
By default, the coalescence model is disabled; it can be switched on
via the UI command /process/had/enableCRCoalescence true.
Physics Lists
- Enabled charm and bottom hadronic physics in nearly all physics lists,
in particular those of interest for HEP.
(The main exceptions are the following physics lists:
QGSP_BIC, QGSP_BIC_HP, QGSP_BIC_AllHP.)
The QGS-based physics lists use, as for other hadrons, QGSP for
charm and bottom inelastic interactions above 12 GeV, whereas FTFP
is used below 25 GeV. The other, FTF-based physics lists, use FTFP
at all energies, with a simplified approach below 100 MeV.
- New physics-list builder classes have been introduced to allow
alternative builders for anti_proton, anti_neutron, hyperons and
anti-hyperons nuclear interactions at high energies with QGSP.
- QGS-based physics lists use now QGS for hyperons, anti-hyperons,
anti_proton and anti_neutron projectiles at energies above 12 GeV.
- Physics lists that include G4EmExtraPhysics use the new
low-energy gamma-nuclear model (G4LowEGammaNuclearModel)
below 200 MeV (while Bertini cascade is used above 199 MeV up to 6 GeV,
and QGSP above 3 GeV). The use of this model, its energy threshold and
the alternative cross section G4GammaNuclearXS can be
configured.
- Extended EM physics-list configurator interface allowing application of
extra configuration on top of any available DNA constructor.
- Cleanup destruction of physics processes at the end of job.
Reviewed ownership/deletion of physics models at the end of the run.
Visualization and Interfaces
- Introduced new alpha-version of a Qt3D visualization driver, based
on native Qt rendering.
- Added support for Open Inventor Qt visualisation driver to be built and
used in applications. The OpenInventor module can be built with either
the OIQt driver, or with the OIX/OIXE drivers, but not with both.
Enabled use of OIQt viewer with Qt UI.
Examples
- New extended example showing how to use Geant4 as a generator for
simulating inelastic hadron-nuclear interactions.
- New extended example demonstrating how to create multiple energy deposits
from the fast simulation model.
- New extended example implementing the typical setup of a Small Angle
X-ray Scattering (SAXS) experiment. It is meant to illustrate the usage
of molecular interference (MI) of Rayleigh (coherent) scattering of photons
inside the matter.
- New extended medical example (dna/chem6) providing scoring of the
radiochemical yield G as a function of time and LET.
- New advanced example showing how to efficiently simulate particle transport
through aerosols containing billions of randomly-positioned droplets, using
an ordinary workstation.
- New advanced example Gorad (Geant4 Open-sourced Radiation Analysis and
Design), a turn-key application for radiation analysis and spacecraft
design.
- New advanced example HGCal_testbeam based on a Geant4 standalone application
for the CMS High Granularity Calorimeter (HGCal) studies, to demonstrate a
test beam setup used in HEP experiments, and as a base for the validation
studies and comparison with experimental data.
- New advanced example modelling the ICRP110 reference computational human
phantoms and calculating the dose in individual voxels and entire
organs. The human male phantom is created from a whole-body
clinical CT image.
5. Expected effects on physics and computing performance
General
- Revision of G4PhysicsVector classes to use similar algorithm for bin
selection and adding checks on vectors length.
- Code reorganisation and optimisations in G4Transportation has been
measured to provide a persistent reduction of instruction-TLB misses,
leading to some measurable CPU speedup.
Electromagnetic physics
- Results are expected to be similar to release 10.6 for EM calorimeters.
- Expected some measurable CPU speedup.
- Expected improved angular distributions for e+e- pairs.
Hadronic physics
- Hadronic showers remain similar to those of the latest patch release
10.6.p03, with the only expected difference of a few percent narrower
showers for FTF-based physics lists.
Comparing the hadronic showers of the two physics lists FTFP_BERT and
QGSP_BERT, the latter show sligthly higher response, larger energy
fluctuations, and longer and narrower shapes with respect to the
FTFP_BERT showers.
- Expected more accurate cross-sections for light ions including fusion
reactions.
- Expected slightly faster computation of hadronic cross-sections.
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, particularly
on Windows with Visual Studio, where warnings level has been raised when
building examples.
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
http://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
- Added support for building PTL external module and introduced
GEANT4_USE_TBB option, enabling use of TBB as possible alternative
to builtin PTL tasking.
- Added support for Open Inventor Qt visualisation driver to be built and
used in applications. The OpenInventor module can be built with either
the OIQt driver, or with the OIX/OIXE drivers, but not with both.
Added GEANT4_USE_XM to Open Inventor X11 driver code block to correct
Xm and Xt link order. Improved consistency of using XQuartz vs System
OpenGL on macOS. Removed obsolete FindInventor module.
- Introduced configuration support for Qt3D visualization driver.
Qt3D driver optional based on find of required Qt5 modules.
- Applied patch to allow compilation on Windows using Clang.
- Removed requirement on presence of GLU library.
No longer save GLU related variables in the package cache.
- Change shimmed imported target name to VecGeom::vecgeom to match
upstream usage and reliably use target when available from VecGeom.
Export VecCore_DIR to package cache when set so that Geant4 behaviour
is consistent. Co-works with VecGeom-1.1.8.
- Updated functions to use G4expat{-static} as custom built targets.
- Added GEANT4_BUILD_BUILTIN_BACKTRACE option to enable automatic
use of G4BackTrace signal handling in G4RunManager.
- Importing new "target" style API for declaring and composing libraries
from modules of source code.
- Propagate value of CMAKE_DISABLE_FIND_PACKAGE_ROOT down to tests
that optionally support Root to allow testing Geant4 with Root support
disabled. This is necessary when testing Geant4 with a different C++
standard than Root when it's installed. Avoid warnings from propagating
the flag down to tests.
- New GEANT4_BUILD_PHP_AS_HP option to enable ParticleHP as HP in physics
processes. Replaces PHP_AS_HP environment variable. Added PHP_AS_HP
"feature" in Geant4Config.cmake/geant4-config to allow clients to
check availability.
- Use STRINGS cache property for enum options and CMAKE_BUILD_TYPE to
give easier interface in (G)UIs.
- Use "${FOO:-}" variable expansion and "-z" test to check for
undefined variables in Bourne Shell scripts. Prevents errors when
shell is in "set -u" mode. Addressing problem report
#2221.
- Handle install of G4clhep{-static} independently of main modules
due it being built outside the category system.
- Renamed remaining internal "Geant4..." modules to "G4" convention.
Retain Geant4DefineModule and Geant4LibraryTargets until new
modularization scheme is in place.
- Set CLHEP minimum required version to 2.4.4.0.
- Set VecGeom-1.1.8 as minimum required version for optional build
with VecGeom.
- Added possibility to download and install optional TENDL data set.
- Updated data-sets versions.
- GNUMake
- Added setup for building and configuring new externals/ptl
and tasking modules. External installation of PTL can be enabled
by defining the installation through the environment variable
PTL_BASE_DIR.
- Added -pthread to all builds in Linux targets.
- Corrected setup for use of Open Inventor (Coin).
- Added configuration for Qt3D visualization driver.
- Added missing settings in G4UI_BUILD.gmk script for OIQt and use
of UI.
- Removed deprecated G4USE_STD11 flag settings.
- Removed dependency on GLU for all configurations, as no longer
necessary.
Analysis
- Analysis management & plotting
- Major upgrade including the support for multiple files and multiple
output types.
- New G4GenericAnalysisManager, G4GenericFileManager factory classes.
- New G4VAnalysisManager functions to set file-names and corresponding
UI commands. While it is possible to mix output types for histogram
and profiles objects, only one output type is supported for ntuples.
- Redesigned management classes to separate object file handling from
output specific analysis managers.
- Updated G4PlotManager for use of new fonts.
- Changes to allow overriding Root classes in g4mpi/analysis.
- Removed redundant variable in G4RootNtupleFileManager::Reset().
- Fixed the memory leak reported by Valgrind in deleting files.
- Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
- Ntuples
- Implemented writing ntuples in multiple files of the same output type.
New G4VAnalysisManager function SetNtupleFileName(..) and UI commands:
"/analysis/ntuple/setFileName id fileName" and
"/analysis/ntuple/setFileNameToAll fileName"
- Fix to add a null-pointer check to ntupleDescription->fNtuple in
G4RootPNtupleManager::Merge().
- g4tools
- Updated the g4tools version to g4tools-5.2.1.
- Corrections to handle automatic min/max axes values in case of log
scale. See History_tools in analysis module for all details.
- Modifications in tools/hdf5 to use H5free_memory() instead free()
at some places (needed for HDF5/1.12.0).
- Modifications in graphics to be in sync with the code in
inlib/exlib around Apple/Metal (no impact on offscreen plotting).
- See History_tools for the complete list of modifications.
- Updated granular dependencies in preparation for modularization.
- Removed uneeded links to externals in factory.
Digitization & Hits
- Introducing G4VPrimitivePlotter allowing the user to extend a primitive
scorer. Use G4VPrimitivePlotter to allow scorers to directly fill
histograms. Added "/score/fill1D" command.
- Introducing G4VScoreHistFiller and G4TScoreHistFiller, allowing scorers
to fill histograms defined through Geant4 Analysis tools.
- Introducing a new scorer, G4PSVolumeFlux.
- Added two ComputeSolid() method to G4VPrimitiveScorer, to consolidate
code.
- Added Mutex lock to G4ScoringProbe::SetMaterial() to avoid race condition.
- Fixed cases of comparison between int and size_t in templated classes
and some cleanup.
- Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
Electromagnetic Processes
- DNA:
- Added classes for IRT; added features in management classes for IRT
(G4ITReaction, G4ITModelProcessor ...).
- Added features in G4DNAMolecularReactionTable for GFDE.
- Added molecules (Oxygen, O2, O3, HO2) from: Plante et al.(2017).
- G4DNAMolecularMaterial: avoid deleting instance of the singleton;
removed commented lines.
Fixed thread contention on mutable data in G4DNAMolecularMaterial.
Some code cleanup.
- G4MoleculeDefinition: copy constructor and assignment operator are not
allowed (as for G4ParticleDefinition). Now deleted.
- Revised displacement of OH radicals of B1A1 dissociation based on
momentum conservation in G4DNAWaterDissociationDisplacer.
- High Energy
- G4hPairProductionModel: inherit ComputeDMicroscopicCrossSection()
from G4MuPairProductionModel to avoid code duplication.
- G4hPairProductionModel, G4hBremsstrahlungModel, G4hPairProduction,
G4hBremsstrahlung: added definition of the energy threshold for
creation of a vertex when energy transfer is above the threshold.
- Low Energy
- Added new model for polarized gamma elastic scattering, provided by
the JAEA group. Updated existing process (G4JAEAElasticScattering) and
model (G4JAEAElasticScatteringModel) in order to comply with the new
data format. Changed initialisation of JAEA models.
- Added new classes for micro-dosimetry simulation.
- Added new class G4MicroElecSurface, a new boundary process for e-.
- Removed obsolete G4MuElec* classes.
- G4LivermorePhotoElectricModel: allow "Water" as a name of water
material for low-energy photo-effect.
- Added G4LivermoreGammaConversion5DModel class. Reading EPICS2017 data.
- Change in G4LivermoreGammaConversion to now derive from
G4PairProductionRelModel. Added missing method InitialiseForElement().
- Added G4PenelopeRayleighModelMI model and ancillary class G4MIData.
- Replaced std::log with G4Log in Penelope and Livermore models.
- Use GetZasInt() in Penelope models, when applicable.
- Fixed compilation warnings on clang-10.
- Muons
- G4MuPairProductionModel: optimised ComputeDMiscroscopicCrossSection()
to speedup initialization.
- G4ModifiedMephi: new angular generator for muon/hadron Bremsstrahlung.
- G4MuPairProductionModel, G4MuBremmstrahlungModel,
G4MuPairProduction, G4MuBremmstrahlung: updated sampling of
final state using G4ModifiedMephi; implemented check on energy transfer
and if beyond the threshold, kill primary particle and create a new
vertex.
- Standard
- G4eDPWAElasticDCS: new class that handles the numerical Differential
Cross-Sections(DCS) for Coulomb scattering of e-/e+, computed by Dirac
Partial Wave Analysis(DPWA) using ELSEPA.
- G4eDPWACoulombScatteringModel: new class that implements single Coulomb
scattering model for e-/e+ based on the numerical DCS provided by the
above G4eDPWAElasticDCS class.
- G4eplusAnnihilation: fixed problem seen in the rare case, when initial
energy is null; introducing thermal model of positronium decay to two gammas.
In this model, the positronium acquires a mean kinetic energy on
formation, which contributes to a small non-collinearity of the
gammas, detectable and significant in PET. To activate this model:
material->GetIonisation()->SetMeanEnergyPerIonPair(meanKE).
A mean kinetic energy of 5 eV produces a projected acollinearity
of about 0.5 degrees FWHM, as reported in:
K.Shibuya et al., IFMBE Proceedings Vol. 14/3 1667 (2007).
- G4UniversalFluctuation: changed 'nmaxCont' from 16 to 8 for speedup.
Set value for 'a0' to 42 after optimisations. Minor C++ improvements.
- G4UrbanMscModel: tuned 'tlimitmin' computation for e- (for e+ kept
unchanged) and changed parameterisation of 'stepmin'; added two private
inline methods to reduce code duplication.
Removed cache and introduced data struct precomputed at initialisation,
added e- range cut to the data structure.
Changed parameterisation of backscattering parameter doverra;
Changed computation of 'tlimit' in the step limitation algorithm
UseDistanceToBoundary(); affecting only Opt3 EM physics.
- G4BetheHeitler5DModel: change "final" keyword by "override" for virtual
methods.
- G4LindhardSorensenData: fixed few numbers in the data table.
- G4eeToTwoGammaModel: code cleanup; added static flag, which identifies
if electron motion is taken into account for sampling of acollinearity,
when annihilation happens at rest; ensuring that by default no extra
computation is performed; also removed extra printout at initialisation
and extra data structure.
- G4ICRU49NuclearStoppingModel, G4WentzelOKandVIxSection,
G4WentzelVIRelModel, G4SeltzerBergerModel, G4LindhardSorensenIonModel:
improved usage of locks; defined deletion of copy constructor and
assignment operator. Improved usage of locks. Defined standard deletion
of copy consructor and assignment operator.
- G4SauterGavrilaAngularDistribution, G4DeltaAngle: code clean-up.
- Fixed compilation warnings on clang-10.
- Requires data-set G4EMLOW-7.13.
- Utils
- G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger: added
a new parameter - name of the sub-directory with data for Livermore
models with variants: "livermore" (default), "epics_2017".
Comes with G4EMLOW-7.10 data set and higher.
- G4EmParameters, G4EmParametersMessenger, G4VMultipleScattering:
removed displacement-beyond-safety option, as may lead to crashes in
some circomstances, and wrong results in others.
- G4EmParameters, G4EmParametersMessenger, G4EmExtraParametersMessenger,
G4VEnergyLossProcess: added two extra sets of StepFunction parameters
for light ions and generic ions. Added extra UI commands. Modified
interfaces accordingly. Removed old comments.
- G4EmParameters, G4EmExtraParameters: added new flag defining type of
single scattering model.
- G4EmParameters, G4EmParametersMessenger: added new flag threshold for
muon/hadron bremsstrahlung allowing to stop a track when high energy
bremsstrahlung is emitted.
- G4OpticalParameters, G4OpticalParametersMessenger: added new files to
control optical parameters, as for G4EmParameters.
- G4EmLowEParametersMessenger: extended number of DNA PhysicsList
options.
- G4EmModelManager, G4VMscModel, G4VEmModel, G4VMultipleScattering: at
initialisation print extra line for all multiple-scattering models
instead of the common printout, needed when different models are
applied for regions. Minor code clean-up.
Addressing problem report
#2106.
- G4VEmProcess: removed old unused methods; DefinedMaterial() method is
now protected (needed for AtRest processes). Fixed setting of current
particle. Addressing problem report
#2277,
affecting ion DNA physics.
- G4LossTableManager: made ResetParameters() method public.
Make clean interface for electron and positron general process.
- G4VAtomicDeexcitation: optimized arrays initialisation.
- G4VEmAngularDistribution: added flag of polarisation and corrected
order of initialisation.
- G4VEmModel: define flag of polarisation for an angular generator.
- G4EmProcessSubType: added fSurfaceReflection.
- Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
- Xrays
- Implemented three time constants for G4Scintillation, and allow
multiple time constants to work with scintillation by particle type.
The existing material property names have FAST and SLOW in them, like
FASTTIMECONSTANT. This doesn't generalize well. Also YIELDRATIO as a
single value doesn't generalize to three time constants. Proposal is
to create new names SCINTILLATIONTIMECONSTANT1/2/3 and the same for
other parameters. The existing names are kept for backwards
compatibility, with the idea to remove them in the next major release.
There is a flag in G4Scintillation, with messenger command in the
OpticalPhysics list, to use the new method:
/process/optical/scintillation/setEnhancedTimeConstants true.
Results are unchanged if using same values.
Allow specifying SCINTILLATIONYIELD only (not requiring
SCINTILLATIONYIELD1) when only one scintillation channel is present.
Same for particle specific yields.
Set verbosity levels correctly.
- G4Cerenkov, G4Scintillation: use new G4OpticalParameters to control
simulation parameters. Removed BuildThePhysicsTable().
Applied code formatting.
- G4Cerenkov: make GetAverageNumberOfPhotons() method public.
- G4VXTRenergyLoss: fixed destructor.
- Code formatting.
Error Propagation
- Fixed Coverity defects warnings in G4ErrorPropagator for unreachable code.
Implemented move assignment operators in G4ErrorSymMatrix, G4ErrorSymMatrix,
G4ErrorFreeTrajParam, G4ErrorTrajState and G4ErrorSurfaceTrajParam.
- Fix to CMake script to support new CMake system.
Event
- Introducing a new General Particle Source energy distribution option,
that generates flat energy distribution with track weights that
represent energy spectrum provided by /gps/hist/point commands.
This option can enhance, for example, higher energy tracks that are
rare but contribute to the scores.
- Corrected logic in G4VPrimaryGenerator::CheckVertexInsideWorld() method.
- G4GeneralParticleSourceMessenger: command structure clean-up.
- Some code cleanup, formatting and C++11 revision.
- Fixed CMake scripts to ensure G4_USESMARTSTACK pre-processor symbol
is properly propagated.
- Added support for event profiler with TiMemory.
- Removed obsolete and unused headers.
- Fixed Coverity defect in G4GeneralParticleSourceMessenger.
- Fixed text typos in printout. Problem report
#2285.
Externals
- CLHEP:
- Updated to CLHEP version 2.4.4.0.
- Updated values in SystemOfUnits.h and PhysicalConstants.h for:
e_SI (electron charge), h_Planck (Planck constant), Avogadro
(Avogadro constant), k_Boltzmann (Boltzmann constant), based on
May 2019 redefinition of SI units, References -
[wikipedia.org],
[britannica.com].
- Use 32-bit internal seeds types coherently in MixMaxRng.
Addressing CLHEP JIRA ticket #156.
- Removed obsolete #pragma interface/implementation in Vector classes.
- Get rid of switch statement in operator()/operator[] of Hep3Vector
Replaced dx/dy/dz with operator[] in Hep3Vector.
Replaced private dx/dy/dz with public x()/y()/z() in Hep3Vector.
- Added missing includes in Vector and Random classes for translation
unit encapsulation.
- Expat:
- Migrated build of G4expat to locally defined targets, allowing
cleaner specification of usage requirements.
- PTL:
- New module for PTL (Parallel Tasking Library), implementing a
lightweight C++11 multi-threading tasking system featuring thread-pool,
task-groups, and lock-free task queue.
- ZLIB:
- Added needed include directories to CMake script when using new
CMake system. Cleanup.
G3toG4
- Cleanup CMake build, removing obsolete granular library options and
explicit include_directories.
General Processes
- Biasing
- G4ImportanceProcess: added process type as fParallel.
- Fixed Coverity defect warnings for data initialisation.
- Cuts
- Revision for use of c++11 constructs. Code cleanup and formatting.
- Management
- G4ProcessManagerMessenger: use cache pointer of selected particle
in the G4ParticleTable class.
- G4ProcessTable: enabled deletion of all processes except
G4Transportation at the end of run.
- Fixed Coverity warning for uninitialised data in G4VProcess.
- C++11 revision and code cleanup/formatting.
- Optical
- Added second wavelength shifting process, G4OpWLS2, within the same
material.
- Use new ConstPropertyExists(int) method rather than passing strings.
- G4OpRayleigh, G4OpAbsorption, G4OpMieHG, G4OpWLS, G4OpWLS2: moved to
new G4OpticalParameters class to control simulation parameters.
- G4OpRayleigh: avoid double deletion of property vectors.
- G4OpBoundaryProcess: increase geometry tolerance to kCarTolerance.
- Fixed reading of Davis LUT data out of bounds.
Addressing problem report
#2287.
- Code cleanup/formatting and improved readability.
- Parameterisation
- Introduced general facilities based on GFlash implementation to
facilitate multiple hit (energy & position) creation from fast
simulation models.
- G4FastSimulationHelper: merged ActivateFastSimulation() calls for mass
and parallel geometry cases.
- G4FastSimulationManager, G4VFastSimulationModel: removed redefinition
of G4Envelope type.
- Added sanity check for root logical volumes in regions for
G4GlobalFastSimulationManager. UI command /param/showSetup works also
if no parallel world is present.
- Fixed minor Coverity defect for uninitialised data in G4FastStep.
- Scoring
- G4ParallelWorldProcess, G4ParallelWorldScoringProcess: use new PDG
code for optical photon, "-22".
- G4ParallelWorldProcess: make some private methods and data members
protected so that this class can be extendable.
- Transportation
- Substantial reorganisation of G4Transportation::AlongStepGPIL() to use
values already in cache, to reduce the number of branches, and to use
extra local variables for track properties to avoid indirections.
Resulting in a persistent reduction of instruction-TLB misses.
Geometry
- Magnetic field
- New class G4DriverReporter to print progress of drivers.
- New templated classes to avoid virtual calls for field, equation,
steppers (from Google Summer of Code 2014 project): equation of motion
is now templated on the field type; steppers are templated on the type
of equation and the number of integration variables.
These classes can be combined also with the templated drivers to avoid
virtual calls in all the levels up to the chord finder's call to
the integration driver.
- The default integration method for field propagation in a pure magnetic
field is changed. The constructor of G4ChordFinder by default uses the
new templated stepper G4TDormandPrince45 in place of
G4DormandPrince745.
- The types of templated steppers currently available include
the efficient, embedded Runge-Kutta intermediate order steppers:
- G4TDormandPrince45: based on G4DormandPrince745, embedded
5th order; the default.
- G4TCashKarpRKF45: based on G4CashKarpRKF45, 5th order;
first embedded RK.
These are the most advanced templated steppers.
G4TDormandPrince45 provides an endpoint derivative (FSAL) and can be
used with interpolation.
- The second type of templated steppers are non-embedded of 4th
and 3rd order:
- G4TClassicalRK4: based on G4ClassicalRK4, 4th order;
robust and the old default;
- G4TSimpleHeum: based on G4SimpleHeum, 3rd order; a
lower order alternative;
which break up a step into half steps to estimate error, meaning
they need several additional field evaluation calls than embedded
steppers of the same order.
The reliability of their error estimation has different properties; so
it may be more robust in some cases.
Primarily for comparison and cross-checking of results.
- The final available type of low order templated steppers are very low
order:
- G4TSimpleRunge: based on G4SimpleRunge, 2nd order;
- G4TExplicitEuler: based on G4ExplicitEuler, 1st order,
lowest order (the simplest checks only).
only for tests or specialised uses.
- Additional intermediate and higher-order steppers are not yet
available in templated form.
- Adapted templated G4TDormandPrince45 for use with G4InterpolationDriver.
For a stepper to be used with this, it must implement the method
GetSpecificEquation().
Templated steppers must provide a return type which is the exact
equation type of the template.
- Experimental versions of fields with inline methods (G4TUniformMagField
and G4TQuadrupoleMagField) demonstrate how the field evaluation
GetFieldValue() can also be inlined. Meant for use if the evaluation is
simple -- and to be avoided if it is complex when inlining it could
increase the code size significantly.
- Configured G4ChordFinder to use templated G4TDormandPrince45 as the
default stepper for magnetic fields (when one is not chosen explicitly
by the application). Speed improvement is observed in benchmarks.
Note: currently it uses the simpler G4InterpolationDriver
in place of a customised G4BFieldIntegrationDriver which
multiplexed an interpolation driver for short steps with a
helix-based driver for long steps.
Applications with many large-angle steps in magnetic field may
perform more reliably and faster by restoring the use of the customised
driver - e.g. by using the G4ChordFinder constructor with nullptr
as third argument and fourth argument stepperDriverId=4.
- G4VIntegrationDriver and dependent driver classes: added new virtual
method StreamInfo(), and used it to implement their operator<<().
- G4MagInt_Driver: fixed max iterations & clarified that its method
ComputeNewStepSize() does not (yet) respect maximum reduction factor
(0.1); this is to enable comparisons with new G4IntegrationDriver<>
implementation.
- G4OldMagIntDriver maintains all old behaviour of G4MagInt_Driver.
- In G4MultiLevelLocator, added ability to record in a 'whiteboard',
the start/end steps of integration intervals, to allow one to diagnose
issues like negative or zero steps occurrences. Includes new classes
G4LocatorChangeLogger and G4LocatorChangeRecord.
- G4PropagationInField: improved ClearPropagatorState() method.
- Implemented move constructor and operator for G4FieldTrack.
- Management
- Added deleted declarations for copy constructor and assignment operators
on store singletons. Based on
GitHub PR#12 report.
- Reduced size of G4LogicalVolume objects by reordering class members.
- Fix in the calculation of normal in G4UAdapter::DistanceToOut().
- Adopt new convention for location of headers in VecGeom for wrappers.
- Navigation
- Enabled "check-mode" for G4PropagatorInField and G4VIntersectionLocator.
Enable use of whiteboard for logging/debugging in G4MultiLevelLocator,
if "check-mode" in navigation is being activated through UI command.
- Reordered data members in G4Navigator, to reduce object size.
- G4ReplicaNavigation: relaxed condition for step correction in
ComputeStep(), to reduce cases of zero steps in combined rho/phi
replications.
- Fixed Coverity defects in G4RegularNavigation for uninitialised data.
- Added G4GeomTestVolume::TestOverlapInTree(), alternative method for
testing overlaps on a tree of volumes, avoiding to check hierarchies
from copies of the same volume in the tree. Considerably speeding up
recursive overlaps check through UI commands.
- Solids (CSG)
- G4Box: migration to use G4QuickRand in GetPointOnSurface().
- G4CutTubs: implemented specific GetCubicVolume() and GetSurfaceArea();
revised implementation in GetPointOnSurface(), now faster and uniform;
reimplemented IsCrossingCutPlanes(), to now reports a problem only in
case cut planes are crossing inside the lateral surface; removed
obsolete internal method GetMaxMinZ().
- G4Trd: added two pre-calculated values for fast calculation of lateral
areas; revised implementation in GetPointOnSurface().
- G4Trap: fixed calculation of normal for points on edge in
SurfaceNormal(). Improved code for Inside().
Added array with precalculated face areas; added
SetCachedValues() method and revised implementation in
GetPointOnSurface().
- G4Tubs: revised implementation in GetPointOnSurface().
- G4Sphere: optimised implementation of InitializeThetaTrigonometry(),
replacing call to std::tan() with pre-calculated quantities.
Addressing problem report
#2289.
- G4CSGSolid: explicit implementation of G4RandomRadiusInRing(rmin,rmax)
based on G4QuickRand.
- Adopt new convention for location of headers in VecGeom for all
wrappers.
- Solids (Specific)
- G4Polycone, G4GenericPolycone, G4Polyhedra: implemented specific
GetSurfaceArea(), GetCubicVolume(); no longer relying on MC method.
- G4Polycone: Revised GetPointOnSurface(); added protected auxiliary
method SetSurfaceElements(); removed GetPointOnCone(), GetPointOnTubs(),
GetPointOnCut() and GetPointOnRing().
- G4GenericPolycone: revised GetPointOnSurface(); added protected
auxiliary method SetSurfaceElements().
- G4Polyhedra: revised GetPointOnSurface(); added protected auxiliary
method SetSurfaceElements(); removed GetPointOnPlane() and
GetPointOnTriangle().
- Added GetTwistedFaceSurfaceArea() in G4GenericTrap and fixed
calculation of surface area in unit tests.
- Adopt new convention for location of headers in VecGeom for all
wrappers.
- Volumes
- Use std::map instead of std::vector to define
G4LogicalBorderSurfaceTable, to speedup search of surfaces in large
tables. Addressing
GitHub PR#6.
- G4PVPlacement: in CheckOverlaps(), added keeping of bounding box from
previous solid and complementary comparison of bounding spheres.
Global
- G4Physics2DVector: extended number of characters in the table dump from 5
to 8; use similar algorithm for bin selection as in 1D vector;
if any dimension is less than 2 throw a G4Exception.
- G4PhysicsVector: use same code for interpolation for all types of
PhysicsVector; removed obsolete unused methods; maximally use const
variables; preserve precision of printout.
- G4PhysicsLinearVector: added checks on vector length: if it is less
than 2 throw a G4Exception.
- G4PhysicsLogVector: added checks on vector length: if it is less
than 3 throw a G4Exception.
- G4PhysicsLinearVector, G4PhysicsLogVector: fixed scale of energy; this
problem does not affect results in general, it fixes data table scale
and may change dEdx and cross-sections numerically on small level.
More accurate checks in class constructors. Fixed Coverity warnings.
- Added new constructor for G4PhysicsOrderedFreeVector.
- Added G4Backtrace header for printing backtraces from raised signals.
A more generic implementation of G4FPEDetection that can catch FPE issues
but, by default, does not interfere with it. The default backtraced signals
are: SIGQUIT, SIGILL, SIGABRT, SIGKILL, SIGBUS, SIGSEGV.
The default signals can be overridden within user-code before and after the
creation of the run-manager (See "Usage" section in G4Backtrace description).
The default signals can be overridden via environment variable G4BACKTRACE.
Can be enabled by setting GEANT4_BUILD_BUILTIN_BACKTRACE option at
configuration.
- Added new G4Profiler header; implemented new profiling routines for
TiMemory which allow per-{run,event,track,step} configuration w.r.t. when
to profile, what to collect in the profiler, and how to label the entries.
Also, includes user-profiling config and macros. Use of TIMEMORY_AUTO_TIMER
is now deprecated.
- Removed condition restricting to __x86_64__ architectures for
macOS configuration in tls.hh.
- C++11 revision in 'management' and 'HEPNumerics' modules; general
code cleanup/formatting.
- Updated e_SI value for electron charge in G4SIunits.h, based
on May 2019 redefinition of SI units.
- Removed use of deprecated G4USE_STD11 flag.
- Fix to CMake script to support new CMake system.
- Updated date of release for 10.7.
Graphical Representations
- HepPolyhedron, G4Polyhedron: added HepPolyhedronTet.
- G4VisAttributes: clarify that if number of cloud points (for cloud style
drawing) is <= 0, this is to be interpreted as under control of the
viewer, i.e., to be decided by the viewer. Otherwise this number is to be
drawn. Zero is the default value, which may be changed by invoking the
method SetForceNumberOfCloudPoints(); also possible to force cloud
drawing with SetForceCloud().
- Fixed graphical representation for G4Hype shape.
Addressing problem report
#2295.
- Fixed minor Coverity defect in BooleanProcessor::assembleFace().
- Improved deprecation message for G4AttDefs::operator<<().
Hadronic Processes
- Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
- Cross sections
- G4ElNeutrinoNucleusTotXsc: new class for (nu_e,anti_nu_e)-nucleus
cross-sections.
- G4PhotoNuclearCrossSection: corrected threshold for
gamma + p -> pi0 + p, extended for use on 3H and 3He targets.
- G4HadronNucleonXsc: general clean-up of the code; use PDG number
instead of particle pointer; removed instantiation of most of hadrons;
optimisation of parameters.
- G4IonProtonCrossSection: added cross-sections for light ions.
- G4ParticleInelasticXS, G4NeutronCaptureXS, G4NeutronElasticXS,
G4NeutronInelasticXS: updates in support for G4PARTICLEXS-3.x data
structure - for capture and elastic applied low-energy parameterisation
starting from second energy point of the data set (better agreement
with HP cross-sections); exclude special treatments for Hydrogen and
Helium isotopes, because data for fission reactions are available in
the new data set; extended list of isotopes.
Fixed fusion cross-sections.
Moved run-time method GetPhysicsVector() to be inlined; added G4VERBOSE
compilation flag and general clean-up of classes (reuse existing high
energy Glauber-Gribov cross-section instances).
- G4EMDissociationCrossSection: fixes to avoid numerical crashes for ions
at low energies (now setting to zero the cross-section for ion kinetic
energies below 2 MeV) and to avoid to create unphysical clusters of
neutrons (now forbidding to remove one proton from any hydrogen ions).
Addressing problem report
#2254.
- Added new cross-section class G4GammaNuclearXS.
- In G4ParticleInelasticXS, added gamma cross-section.
- Removed unused class G4ProjectileFragmentCrossSection.
- Fixed compilation warnings on clang-10.
- Management
- G4HadronicProcess: fixed Coverity defect warning in EP check method for
the case when primary particle remains in the interaction.
Fixed warnings when environmental variables G4Hadronic_*Level are used.
Removed unused flag.
- G4HadronicProcessStore: in the method Dump(), check the internal
verbosity level as well as the newly introduced global hadronic
verbosity level, returning immediately (without printing anything) if
one of these is 0. Extended default initialisation printout to sigma-,
D-, B-. Removed check for G4HadronicException where it cannot be;
limit printout on kaon0 in final state.
Extended default initialisation printout to anti_lambda.
Use verbosity level from the G4HadronicParameters class, added
printout of cross-section factor.
- G4HadronicEPTestMessenger, G4HadronicProcess: recommended for users
the new UI commands /process/had/heptst/*Level, while the
old ones /heptst/*Level* are deprecated, but still valid,
and will be removed in the next major release, Geant4 11; kept the
environmental variables G4Hadronic_*Level for system testing,
but not recommended for users.
- Removed use of deprecated G4USE_STD11 flag.
- G4HadLeadBias: replaced 'G4int' with 'size_t' to fix warnings
on Windows.
- Models Management:
- G4HadronicInteractionRegistry: delete HP and PHP at the end of run.
- G4HadronicInteraction: provide default implementation for all virtual
methods.
- G4VHighEnergyGenerator, G4VIntraNuclearTransportModel,
G4VPreCompoundModel: cleaned up: removed old commented lines,
code format, C++11 keywords.
- Processes
- G4MuNeutrinoNucleusProcess, G4ElNeutrinoNucleusProcess: extended to
nu_mu, anti_nu_mu, nu_e and anti_nu_e.
- Removed the inelastic processes for heavy hadron - nucleus interactions,
no longer necessary because similar inelastic processes are created by
G4HadronicBuilder.
- Stopping
- G4HadronicAbsorptionFritiof,
G4HadronicAbsorptionFritiofWithWithBinaryCascade: simplified
instantiation of the FTF model, and avoid to destruct its components.
- G4MuonicAtomDecay: fixed Coverity defect warning.
- Utilities
- G4HadronicParameters: added modifiers for Cascade-FTF transition.
Created the new messenger.
Added Get/Set methods for cross-section scaling factors separately
for nucleons, pions, other hadrons, and leptons.
Here is an example on how to use them:
- First enable the scaling of cross section (by default disabled):
G4HadronicParameters::Instance()->SetApplyFactorXS( true );
- Scaling up the nucleon inelastic cross sections by 10% :
G4HadronicParameters::Instance()->SetXSFactorNucleonInelastic( 1.10 );
- Scaling down the pion elastic cross sections by 12% :
G4HadronicParameters::Instance()->SetXSFactorPionElastic( 0.88 );
- Scaling up all the other hadrons inelastic cross sections by 20% :
G4HadronicParameters::Instance()->SetXSFactorHadronInelastic( 1.20 );
Added high energy limit for low-energy physics.
Disabled charm and bottom hadrons by default.
- G4HadronicParametersMessenger: created new messenger class for
G4HadronicParameters. Added the global verbosity level for hadronics:
with the UI command /process/had/verbose 0 the print-out
of hadronic physics is completely switched off.
- G4HadronicParameters, G4HadronicParametersMessenger: added parameter
for the upper energy limit (default 100 TeV); for instance, to set
it to 1 PeV, /process/had/maxEnergy 1000.0 TeV.
Added Boolean switch that allows to apply the Cosmic Ray (CR)
coalescence algorithm to the secondaries produced by a string model
(which can be useful in particular for Cosmic Ray applications); by
default it is disabled, and to switch it on:
/process/had/enableCRCoalescence true
- G4HadFinalState: fixed warning on Windows for implicit conversions
from 'size_t' to 'G4int'.
- Completely disable G4HadSignalHandler.
- Models Utilities:
- G4Fragment: introduced an optional parameter to switch off some
warnings. By default, nothing is changed (i.e. the warnings are
printed out as usual); only for electromagnetic dissociation, the
parameter is set to switch off otherwise too frequent warning messages.
Addressing problem report
#2254.
- G4KineticTrack: added initialization of an array as suggested by
Coverity. Used consistently pre-increment and pre-decrement instead
of post-increment and post-decrement, respectively.
- Fixed compilation warnings on clang-10.
- Abla
- Fixed reported Coverity defects.
- Bertini Cascade
- Fixed non-conservation warnings coming from G4HadronicProcess due to
sub-threshold reactions in Bertini. Sub-threshold reactions are now
treated as having a "non-interaction" final state, that is, the initial
particles are simply copied to the final state.
- Fixed compilation warnings on clang-10.
- Binary Cascade
- G4BinaryCascade: fixed memory leak at exit.
- De-excitation
- G4PhotonEvaporation, G4DeexPrecoParameters, G4DeexParametersMessenger:
added extra flag 'IsomerProduction'; if enabled, photon evaporation
samples the time of gamma transition; added C++ interface and UI command
allowing to set this flag; radioactive decay constructor should enable
this parameter. Addressing problem report
#2226.
- G4DeexPrecoParameters: in method Dump(), check the global verbosity
level of hadronics (if zero, do not print anything).
Verbose level is defined by G4HadronicParameters class or by the local
verbose level.
- G4DeexParametersMessenger: removed obsolete UI command.
- G4NuclearLevelData: use 'Zmax' for initialisation before the run.
Reduced usage of mutex locks; read all level data at beginning of
the run.
- G4ExcitationHandler: verbose level is defined by G4HadronicParameters
class or by the hardcoded local verbose level defined only for
debugging. Use 'Zmax+1' instead of 'Zmax' for nuclear level
initialisation.
- Fixed compilation warnings on clang-10.
- Elastic scattering
- G4HadronElastic: added numerical protection against precision loss.
Addressing problem report
#2253.
- G4QuasiElRatios: extended to charmed and bottom hadrons.
The simplified treatment adopted is the following: to treat all heavy
mesons having constituent charm or bottom quark as a meson with strange
quark, like K-, and all heavy mesons having constituent anti-charm or
anti-bottom anti-quark as a meson with anti-strange quark, like K+;
for baryons, all heavy baryons are treated as Lambda and all heavy
anti-baryons are treated as anti-proton/anti-neutron.
Fixed memory leak at exit.
- Electromagnetic Dissociation
- G4EMDissociation: fix Lorentz kinematics, responsible for causing
energy-momentum violations. Switched off too frequent warning messages
by G4Fragment. Addressing problem report
#2254.
- INCLXX
- G4INCLXXInterfaceStore: in method EmitBigWarning(), check the global
verbosity level of hadronics (if zero, do not print anything).
- Fixed compilation warnings on clang-10.
- Lepto-nuclear
- G4NuMuNucleusCcModel, G4NeutrinoNucleusModel: new access methods
and minor fixes in in nu-mu nucleus model.
- Added classes G4ANuElNucleusCcModel and G4ANuElNucleusNcModel
for anti_nu_e. Initialization from G4PARTICLEXS (neutrino/anti_nu_e).
- Added classes G4NuElNucleusCcModel and G4NuElNucleusNcModel
for nu_e. Initialization from G4PARTICLEXS (neutrino/nu_e).
- Added classes G4ANuMuNucleusCcModel and G4ANuMuNucleusNcModel
for anti_mu_nu. Initialization from G4PARTICLEXS (neutrino/anti_nu_mu).
- G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel:
rearrangement of initialisation methods and arrays.
Fixes in CoherentPion() method, cleanup of Cc and Nc.
- G4NeutrinoNucleusModel: added K+, K- in final state.
- Fixed Coverity warnings for defects.
- Particle High Precision
- Allow printout only if the global hadronic verbosity level is not
zero.
- G4ParticleHPHash, G4ParticleHPCaptureFS: fixes for implicit conversion
between 'size_t' and 'G4int', to avoid warnings on Windows.
- G4FissionProductYieldDist: fixed thread competition in method
G4GetFission(), by placing an auto lock.
Addressing problem report
#2234.
- Fix in constructor of G4ParticleHPChannel so that two fission fragment
models can be active at the same time, if Wendt model is active;
turn off standard fragment production model.
Addressing problem report
#2233.
- Use GEANT4_BUILD_PHP_AS_HP CMake option to enable
PHP_AS_HP, retiring the use of PHP_AS_HP environment
variable (i.e. still valid, but deprecated, to be removed at the next
major release, Geant4 11).
- G4ParticleHPMessenger: added new UI macro command
use_Wendt_fission_model related to the use of the Wendt
fission model; make sure that no more than one fission fragment model
is active.
- G4ParticleHPManager: added a new variable related to the use of the
Wendt fission model; throw a JustWarning exception when the
environmental variables are used (to remind that they are still valid
but deprecated, and will be removed in future version; added new method
DumpSetting() can be called somewhere to printout once the values of
its parameters.
For completeness, here is the complete list of ParticleHP UI commands:
- Force use of the Photon Evaporation model, instead of the
neutron capture final state (default: false)
/process/had/particle_hp/use_photo_evaporation true
- Use only exact isotope data files, instead of allowing nearby
isotope files to be used, if the exact file is not available,
the cross section will be set to zero (default: false):
/process/had/particle_hp/skip_missing_isotopes true
- Switch off the Doppler broadening due to the thermal motion of the
target nucleus, with a significant CPU performance advantage
(default: false):
/process/had/particle_hp/neglect_Doppler_broadening true
- Disable the adjustment of final state for getting better
conservation (default: false):
/process/had/particle_hp/do_not_adjust_final_state true
- Enable the generation of fission fragments (default: false):
/process/had/particle_hp/produce_fission_fragment true
- Enable Wendt fission model (default: false):
/process/had/particle_hp/use_Wendt_fission_model true
- Enable the use of NRESP71 model for neutron on Carbon reaction
(default: false):
/process/had/particle_hp/use_NRESP71_model true
- Set verbose level of the ParticleHP package (default: 1):
/process/had/particle_hp/verbose ...
- G4ParticleHPInelastic, G4ParticleHPManager: enabled printout of the
physics parameters (only once and with a format similar to
Precompound/de-excitation and RadioativeDecay).
- G4ParticleHPChannel: moved environmental variable related to the use
of the Wendt fission model from this class to G4ParticleHPManager.
- G4ParticleHPContAngularPar, G4ParticleHPInelasticBaseFS,
G4ParticleHPEnAngCorrelation, G4ParticleHPFinalState: replaced use of
the environmental variable G4PHP_DO_NOT_ADJUST_FINAL_STATE
with the equivalent in G4ParticleHPManager, GetDoNotAdjustFinalState().
Parton-String
- Improved treatment of antibaryon interactions in QGS.
In G4QGSMFragmentation, corrected the treatment of low-mass
diquark-antidiquark strings. In addition to this, introduced the Mt
distribution of produced hadrons.
In G4VLongitudinalStringDecay, introduced in SetMinimalStringMass()
a check that the strings are of allowed type: quark-antiquark,
diquark-antidiquark, quark-diquark and antiquark-antidiquark.
Introduced also for diquark-antidiquark strings a special algorithm
(already present for the other types of allowed strings) for treating
low-mass strings with masses below known hadrons.
- Improved agreement of FTF simulations with NA49 experimental data (on
Pt-Xf correlations for various particles produced in pp interactions at
158 GeV/c).
- In G4QuarkExchange, the reggeon exchanges are now treated as
annihilation and creation of quark-antiquark pairs (to reflect in
inelastic processes the non-vacuum reggeon exchanges present in
antiparticle-particle elastic scattering amplitudes).
- G4VLongitudinalStringDecay, G4LundStringFragmentation,
G4ExcitedStringDecay: inherit from G4HadronicInteraction; destruction
of these models at the end of run is now done by the hadron model
store; removed implementations of private operators.
- G4VLongitudinalStringDecay: in the method SetMinMasses(), set the
constituent masses of charm and bottom quarks; introduced also a new
pre-processor option for debugging heavy hadrons, switched off by
default; made the logic clearer for Coverity. Code cleanup. Improved
comments.
- G4VStringFragmentation: use inheritance from G4HadronicInteraction;
removed implementations of private operators.
- G4SPBaryonTable: changed return type of the method 'length()' from
'double' to 'size_t', to fix warnings on Windows.
- G4FTFModel: attempt to fix a crash rarely observed in pion+proton
reaction: added tolerance of 1.e-10 for numerical computation;
cleaned-up sampling of Pt for residual nucleons (limit argument for
G4Exp to 200 instead of 1e+9). Extended debug printout; use
pre-increment instead of post-increment in loops; removed commented
lines and unused variables.
- G4FTFModel, G4FTFParticipants: clean-up: removed unused methods,
delete operators, use of C++11 keywords.
- G4VParticipants, G4VPartonStringModel, G4VStringFragmentation,
G4StringModel: clean-up; removed unused methods, delete operators,
use of C++11 keywords.
- G4VPartonStringModel: introduced a new pre-processor option for
debugging heavy hadrons, switched off by default.
- G4QGSModel: clean-up; removed unused methods, delete operators, use of
C++11 keywords, moved inline implementation to source.
- G4QGSParticipants: added protection for G4Exp, fixing outstanding
precision loss in gamma+proton interactions.
- G4DiffractiveExcitation: extended to handle heavy (charm and bottom)
hadrons; introduced also a new pre-processor option for debugging
heavy hadrons, switched off by default. Added protection against
inexisting excited hyperon states (Sigma* and Xi*).
Implemented new splitting of excited hadrons into quark-antiquark or
quark-diquark in the method CreateStrings().
Additional code improvements.
- G4FTFAnnihilation: removed useless check against inexisting excited
hyperon states. Added initialization of 2-dimensional arrays as
suggested by Coverity. Used consistently pre-increment instead of
post-increment.
- G4FTFParameters: extended FTF configuration interface to include
parameters of quark exchange with and without excitation, for
baryon and pion projectiles.
- G4LundStringFragmentation, G4QGSMFragmentation: if the flag for heavy
(charmed and bottom) hadrons is enabled, then non-zero probabilities
for c-cbar and b-bbar creation from the vacuum are set, allowing
charmed and bottom hadrons to be created during the string fragmentation
of ordinary (i.e. not heavy) projectile hadron nuclear reactions.
- G4LundStringFragmentation: extension to charm and bottom quarks of the
methods Quark_AntiQuark_lastSplitting() and Quark_Diquark_lastSplitting();
added protections in the method FragmentString() to avoid rare crashes
seen with heavy hadrons. Introduced a new parameter (as a class data
member), a kind of "temperature" for sampling the Pt of produced
hadrons; this parameter has been tuned for different fragmentation
processes. The string direction (one of string's properties, whose
value can be either +1 for projectile-like strings or -1 for target-like
strings) is now treated correctly and used to invert the results of the
string fragmentation (in the string rest frame) when the string
direction is -1.
- G4HadronBuilder: fixed condition in the method Barion() to take into
account the extension to charm and bottom quarks; moreover, for both
Meson() and Barion() methods, we have to force by hand that the heavy
hadron produced by the string fragmentation is one of the few available
in Geant4 (in particular, all heavy hadron resonances are transformed
into close heavy hadron ground states). Introduced also a new
pre-processor option for debugging heavy hadrons, switched off by
default.
- G4ExcitedStringDecay: added protection in the FragmentStrings() method
to avoid rare crashes seen with heavy hadrons.
- G4BaryonSplitter, G4SPBaryon: extension to charmed and bottom
baryons and anti-baryons.
- G4SingleDiffractiveExcitation, G4QGSDiffractiveExcitation,
G4QuarkExchange: in ExciteParticipants() method of these classes,
extension to charmed and bottom hadrons by assuming a minimum
projectile diffractive mass equal to the PDG mass plus 250 MeV;
in G4QuarkExchange, assumed also 50% for the probability of projectile
diffraction.
- G4Reggeons: in the constructor, replaced Omega_cc (PDG code #4432)
with Omega_c (PDG code #4332); added comments.
- G4FragmentingString: erased some inconsistencies.
QMD
- G4QMDReaction: added code in ApplyYourself() to get the cross section
when the projectile is a pion.
Replaced data member G4PiNuclearCrossSection with G4BGGPionElasticXS
and G4BGGPionInelasticXS.
In G4QMDGroundStateNucleus constructor, move the check for proton or
neutron projectile earlier in the code so that the baryon number can
be conserved.
Addressing problem report
#2236.
Radioactive Decay
- G4RadioactiveDecayBase, G4RadioactiveDecay: in BuildPhysicsTable(),
check the global hadronic verbosity level before printing out
information.
- G4RadioactiveDecayBaseMessenger, G4RadioactiveDecaymessenger,
G4RadioactivationMessenger: deprecated old UI commands /grdm/...
and introduced new corresponding ones, /process/had/rdm/....
RPG
- Fixed Coverity warnings for unused variables.
Theo_High_Energy
- G4CRCoalescence: new class for applying coalescence to the secondaries
produced by string model to form deuterons and antideuterons from,
respectively, proton-neutron and antiproton-antineutron pairs with
close momenta; useful in particular for Cosmic Ray applications.
- G4TheoFSGenerator: introduced temporarily dummy treatment of heavy
(charm and bottom) projectile hadrons at low energies (below 100 MeV).
Cascade models are currently not applicable for heavy hadrons and
string models cannot handle them properly at very low energies, so we
return as final state the initial state unchanged.
Note that, for most applications, this is a safe simplification, giving
that the nearly all slowly moving charm and bottom hadrons decay before
any hadronic interaction can occur.
In method ApplyYourself(), apply G4CRCoalescence to the candidate
secondaries produced by the string model, if the corresponding switch
is enabled (by default it is disabled).
- G4QuasiElasticChannel: use inheritance from G4HadronicInteraction.
In G4TheoFSGenerator, do not destruct G4QuasiElasticChannel.
- G4QuasiElasticChannel, G4TheoFSGenerator: clean-up; use of C++11
keywords and loops, removed unused methods, formatting.
Intercoms
- Added new parameter type 'L' for long int type; added parameter range
check for long int and introducing G4UIcmdWithALongInt command type.
- Added G4ProfilerMessenger class.
- Revision for c++11 constructs, code cleanup and formatting.
- Fixed Coverity defect for uninitialised data in G4UImanager.
- Removed unnecessary use of deprecated G4USE_STD11 flag in G4AnyMethod.
Interfaces
- G4UIQt: replaced use of setTextColor() with adoption of rich text html
tags (improving visibility in macOS Dark Mode).
Send G4cout/G4cerr also to std::cout/cerr if in master thread,
as workaround to the problem of loss of output in the case of a crash or
G4Exception.
- Fixed deprecation warnings being triggered when using Qt-5.15.
- Make such that GEANT4_USE_INVENTOR for SoXt activates use of Xm, so there's
no need to check for use of Inventor in setting up Xt, only GEANT4_USE_XM.
- Use CMake AUTOMOC to automatically generate and compile Moc sources
and fixed CMake script to support new CMake system.
- Fixed text typos in printout. Problem report
#2285.
Materials
- G4Material: added two new public methods to add elements to a material
with new signature.
- G4MaterialPropertiesTable: added ConstPropertyExists() method.
Added new methods to access/add properties with G4String and
std::vector.
- G4MaterialPropertiesTable, G4MaterialPropertiesIndex: added new
properties for scintillation allowing 3 time constants and a second
wavelength shifter in the same material.
- G4OpticalSurface: handle REALSURFACE optical data files zlib-compressed.
Requires new data-set G4RealSurface-2.2.
- G4SurfaceProperty, G4OpticalSurface: some c++11 revision and code
formatting; added method to select file to read; replaced long if/else
construct with switch/case.
- Added G4MicroElecMaterialStructure, G4MicroElecSiStructure classes for
micro-dosimetry simulation.
- G4OpticalSurface: added protection against access to optical LUT out of
array bounds. Addressing problem report
#2287.
- G4Element, G4NistManager, G4NistMaterialBuilder: fixed spelling in
printouts.
- Fixed text typos in printout. Problem report
#2285.
Parameterisations
- GFLASH:
- Substituting Gamma calculation with corresponding STL functions, as
suggested in
GitHub PR#3.
Makes LnGamma calculation 1.4 times faster,
and Gamma 1.9 times faster.
- GFlashSamplingShowerParameterisation: added X0eff calculation.
- Delete local tuning data in GFlashXXXShowerParameterisation class
destructors.
Particles
- G4ParticleTable: create/destruct only one instance of G4IonTable and
associated messenger; define assignment operator and copy constructor
as deleted; added cache with pointer to selected particle and get/set
methods.
- G4ShortLivedConstructor: improved constitutent masses of heavy diquarks.
- G4DynamicParticle: added GetBeta() method.
- G4OpticalPhoton: define PDG code as "-22".
- G4NuclideTable: added destruction of messenger.
- Added move operators to G4DynamicParticle.
Code revision for c++11 and cleanup in 'management' module.
Persistency
- Minor c++11 review. Code cleanup and formatting.
- ASCII:
- Fixed Coverity defects warnings.
- GDML:
- Fixed reading and writing of const properties of materials.
Matrices of size 1x1 are now used both for writing out and reading in
of const material. This fixes the inconsistency (using constants by the
writer) found in the code. Const material properties with the same name
(in different materials) are now written out with the properties table
address appended.
- Added new method SetOutputFileOverwrite(G4bool) to the G4GDMLParser,
allowing to set the flag to enable overwriting of the output GDML file.
Addressing problem report
#2288.
Physics lists
- Builders:
- Revised all classes to remove unnecessary members, not destruct models
and cross-sections and use updated instantiation of string models.
This should help to achieve full deletion of hadronic physics objects
at the end of run.
- G4QGSPAntiBarionBuilder: created new class to handle anti_proton and
anti_neutron at high energies with QGSP. For the light anti-ions
(anti_deuteron, anti_triton, anti_He3, and anti_alpha), currently QGSP
cannot handle them, therefore FTFP is used.
- G4VHyperonBuilder, G4HyperonBuilder, G4HyperonQGSPBuilder: new classes
to allow alternative builders for hyperons (and anti-hyperons).
The class G4HyperonQGSPBuilder uses QGSP model to handle hyperons (and
anti-hyperons) at high energies.
- G4HyperonFTFPBuilder: now it derives from G4VHyperonBuilder (physics
behind remains unchanged, i.e. it is still based on BERT and FTFP
models).
- G4HadronicBuilder: new utility class to build kaons, hyperons, and
charm and bottom hadrons.
- Added second wavelength shifter optical process to the
OrderingParameterTable.
- Constructors:
- decay
- G4RadioactiveDecayPhysics: enabled flag for isomer production,
required after fix to problem report
#2226.
Updated initialisation to be coherent with recent updates in
initialisation of atomic de-excitation. Added EM parameters
definition in ConstructProcess(...); if atomic de-excitation
is not defined add it in each thread but not change EM parameters
in a thread; should address several problems observed in tests.
- G4DecayPhysics, G4RadioactiveDecayPhysics, G4SpinDecayPhysics,
G4UnknownDecayPhysics: general cleanup. Removed thread local
pointers, avoid deleting objects; use C++11 keywords; use standard
signatures for constructors; define builder type for the main
constructor G4DecayPhysics (bDecay, for others bUnknown).
- electromagnetic:
- G4GammaGeneralProcess: fixed problem of a concrete process
assigning a step to post step point. Improved printouts and made
some methods protected.
- G4OpticalPhysics, G4OpticalPhysicsMessenger: added settings for
G4Scintillation to use 3 time constants. Added second wavelength
shifter optical process to constructors.
- G4EmBuilder: new utility class to allow reducing code duplication
for standard and low-energy EM physics constructors. Includes flag
for allowing choice of multiple-scattering model.
- G4OpticalPhysics, G4OpticalPhysicsMessenger, G4OpticalProcessIndex:
moved optical physics parameters to new G4OpticalParameters class.
Removed G4OpticalPhysicsMessenger class and replaced by
G4OpticalParametersMessenger. Removed G4OpticalProcessIndex class,
with code now in G4OpticalParameters.
- G4EmStandardPhysics_option1: switch to use new G4EmBuilder utility;
fixed StepFunction definition.
- G4EmStandardPhysics_option3: switch to use new G4EmBuilder utility;
use ICRU90 stopping power data for water and air.
- G4EmStandardPhysics_option4: use ICRU90 data.
- G4EmStandardPhysicsSS: use the new G4eDPWACoulombScatteringModel
for e-/e+ below 100 [MeV] (for testing this new model).
- Removed duplicate code by using G4EmBuilder in several constructors,
fixed definition of StepFunction, use the same flag as hadronic
physics to enable EM interaction of b- and c- mesons and baryons.
- G4EmModelActivator: use same options for physics per region as used
in EM constructors recently updated.
- G4LivermorePolarizedPhysics: use inheritance from
G4LivermorePhysics.
- G4EmModelActivator: updated multiple-scattering and PAI
configurations to address problem reports
#2052
and #2106.
- G4EmDNAModelActivator: extended to extra available DNA options
(DNA_Opt2, DNA_Opt4, DNA_Opt4a, DNA_Opt6, DNA_Opt6a, DNA_Opt7).
- Optimisation in initialisation of G4EmDNAChemistry_option3.
- Use C++11 features in several constructors.
- gamma_lepto_nuclear:
- G4EmExtraPhysics, G4EmMessenger: added low-energy limit, set method,
and UI command defining low-energy gamma-nuclear model, which is
using de-excitation module and providing isomer production and
gamma transitions. Added a flag to enable G4GammaNuclearXS
cross-section and possibility to use general process for electron
and positron; fixed several UI commands.
- G4EmExtraPhysics: extension to anti_nu_mu, nu_e and anti_nu_e
processes-models.
- hadron_elastic:
- G4HadronElasticPhysics: use coherently with inelastic physics
builder the new utilities G4HadParticles and G4HadronicBuilder.
Instantiate anti-hyperons. Added optional cross-section scaling
factors for systematics studies. Use G4HadProcesses and
G4PhysListUtil.
- G4HadronHElasticPhysics: added elastic scattering for charm and
bottom hadrons (needed for FTFP_BERT_TRV).
- G4ThermalNeutrons: use G4PhysListUtils to access neutron elastic
process.
- hadron_inelastic:
- Use the new builder class G4QGSPAntiBarionBuilder to handle
anti_proton and anti_neutron at high energies with QGSP.
For the light anti-ions - anti_deuteron, anti_triton, anti_He3 and
anti_alpha - currently QGSP cannot handle them, therefore FTFP is
used.
- In all the inelastic physics constructors which are using the
builder G4HyperonFTFPBuilder, introduced the new builder
G4HyperonBuilder; moreover, the new builder G4HyperonQGSPBuilder
is used now in all QGS-based inelastic physics constructor for
hyperons (and anti-hyperons) at high energies, while keeping using
G4HyperonFTFPBuilder at lower energies.
- G4HadronPhysicsFTFP_BERT, G4HadronPhysicsQGSP_BERT,
G4HadronInelasticQBBC: added charm and bottom hadrons.
Enabled charm and bottom hadronic physics - now available in nearly
all physics lists, in particular those of interest for HEP; the main
exception is QGSP_BIC and its derived physics lists, which are
typically used for low-energy applications.
- G4HadronPhysicsQGSP_BIC_HP, G4HadronPhysicsQGSP_BIC_AllHP:
refactoring consistently with all others.
For G4HadronPhysicsQGSP_BIC_HP, the physics remains unchanged;
for G4HadronPhysicsQGSP_BIC_AllHP, the physics remains unchanged
except for the transition region between Binary and ProtonHP which
is now 190-200 MeV (instead than 199-200), as for light ions.
- G4HadronInelasticQBBC: utilities G4HadParticle and
G4HadronicBuilder. Fixed neutron and anti-baryon configurations.
Added optional cross-section scaling factors for systematics
studies. Applied the Binary cascade to pions below 1.5 GeV.
- G4HadronInelasticQGSP_BIC, G4HadronInelasticQGSP_BIC_HP,
G4HadronInelasticQGSP_BIC_AllHP: added optional cross-section
scaling factors for systematics studies; added charm and bottom
hadron physics.
- G4HadronInelasticQGSP_BERT, G4HadronInelasticQGSP_BERT_HP,
G4HadronInelasticQGSP_FTFP_BERT: added optional cross-section
scaling factors for systematics studies; added charm and bottom
hadron physics; implemented DumpBanner() method; added more c++11
keywords.
- G4HadronInelasticFTFP_BERT, G4HadronInelasticFTFP_BERT_HP,
G4HadronInelasticFTFP_BERT_ATL, G4HadronInelasticFTFP_BERT_TRV:
added optional cross-section scaling factors for systematics
studies; added charm and bottom hadron physics; c++11 code
revision; removed unused headers.
- G4HadronInelasticQGSP_BERT and G4HadronInelasticQGSP_BIC: replaced
BuildAntiLightIonsQGSP_FTFP() with BuildAntiLightIonsFTFP();
currently QGSP cannot be applied to any ion or anti-ion.
Allow modification of parameters at 'PreInit' state.
- G4HadronInelasticQGSP_FTFP_BERT: enabled charm and bottom hadron
physics.
- G4HadronPhysicsINCLXX: use inheritance from the base class
G4HadronPhysicsFTFP_BERT; removed duplicated code; code clean-up.
List of models and applicability intervals are the same;
implemented charm and bottom hadron physics and cross-section
scaling factors.
- In G4HadronPhysicsNuBeam, G4HadronPhysicsShielding,
G4HadronPhysicsShieldingLEND, G4HadronPhysicsFTF_BIC,
G4HadronPhysicsQGS_BIC and G4HadronPhysicsFTFQGSP_BERT:
use inheritence from the base class G4HadronPhysicsFTFP_BERT and
removed duplicated code; ensure list of models and applicability
intervals are the same; implemented charm and bottom hadron physics
and cross-section scaling factors.
- G4VHadronPhysics: removed unused and obsolete methods and
thread_local methods.
- Improved comments and info printout in other physics classes.
- Updated README.
- ions:
- Cleanup of constructors: fixed names; made all constructor
signatures universal, removed thread local members, added
c++11 keywords.
- Updated README.
- stopping:
- Cleanup of constructors: fixed names; made all constructor
signatures universal, removed thread local members, added
c++11 keywords.
- Lists:
- LBE: added G4ShortLivedConstructor, to prevent issues, e.g. when rho0
is produced by the decay of eta_prime.
- Util:
- G4HadParticles: new utility providing several lists of PDG codes for
kaons, hyperons, charm and bottom hadrons in order to be used for
construction of hadronic physics. Updated list of heavy EM particles.
Subdivided in different methods hyperons and anti-hyperons.
Separated light anti-particles to the extra vector and added extra
access method.
- G4HadProcesses: new utility class providing access to hadronic
processes and the possibility to add a cross-section per particle type
and per hadronic process; by using this class it is possible to
customise hadronic cross-sections.
- G4PhysListUtil: added method to access elastic cross-section.
Added utility method InitialiseParameters().
Updated dependencies on internal modules.
Run
- G4RunManager, G4WorkerRunManager: added layered mass geometry option
for the new "probe" scoring mesh.
- G4RunManager: do not call G4ParticleTable for Messenger deletion.
Added dummy virtual methods Get/SetNumberOfThreads() to allow for
dispatching in MT/Tasking classes inheritance.
- Modified G4MTRunManager to enable inheritance for new G4TaskRunManager.
Added banner similar to G4TaskRunManager at method CreateAndStartWorkers();
moved master scoring-manager, master worlds, 'fMasterRM' from private to
protected sections.
- G4MTRunManager, G4RunManager: fixes for windows, to avoid inline static
methods and use export flag G4RUN_DLL for static data.
- Added activation of G4Backtrace to G4RunManagerKernel.
- Run-managers are now friends of G4RunManagerFactory.
- Added second wavelength shifter process to G4PhysicsListHelper.
- G4VPhysicsConstructor: added harmless call to G4HadronicParameters in
constructors, setting a default parameter; needed to create the instance
of the G4HadronicParameters singleton before run initialization.
- G4VModularPhysicsList: fixed typos in printouts.
- Added G4Profiler support for TiMemory; removed TIMEMORY_AUTO_TIMER.
- Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
- General code formatting.
Tasking
- New module implementing a new Geant4 run manager, G4TaskRunManager,
enabling use of the PTL tasking system for the event loop. The tasking
system is fully compatible with Intel TBB, which can be selected if
GEANT4_USE_TBB=ON is specified when configuring CMake. The default
behavior for tasking, however, is to submit the tasks to an internal
thread-pool and task-queue.
Track & Tracking
- G4Track: use new G4OpticalPhoton PDG code; removed static thread local
variables; slightly simplified velocity computation; fixed Coverity
warnings connected with unnecessary checks for valid pointers to G4Step
and G4DynamicParticle; removed commented code.
Avoid using velocity table, use GetBeta() method from G4DynamicParticle
instead; expected minor speedup.
- Minor c++11 revision; code cleanup and formatting.
- Fixed minor Coverity defects in G4Step and G4SteppingManager.
Visualization
Use CMake AUTOMOC to automatically generate and compile Moc sources
and fixed CMake script to support new CMake system.
Fixed text typos in printout. Problem report
#2285
and GitHub PR#15.
- Management
- Fixed case where models with no extent do not contribute to scene's
extent.
- Trap infinite loop when looking for a fallback graphics system when
issuing "/vis/sceneHandler/create".
- G4VisExecutive: added support for OIQt driver, via "OIQt" or "OI"
keywords, provided the G4OpenInventor library has been built with
the OIQt driver included.
- Added new command "/vis/geometry/set/forceCloud".
- G4VVisCommand: added CheckView for future utility.
- G4VisCommandsScene: improved output layout for "/vis/scene/showExtents".
Removed superfluous/unnecessary SetView() in
G4VisCommandSceneNotifyHandlers.
- G4VisManager: protected algorithm in NotifyHandlers() with
'IsValidView'.
- Removed obsolete G4VIS_USE_STD11 and references to obsolete G4VIS_USE.
- Bug fix: rebuild graphics databases after "/vis/filtering/*/mode".
- Improved printing of available systems and models.
- Improved logic in G4VisManager for automatic event keeping.
- In MT mode, now keeping one (random) event when end-of-event action
is "refresh" and keeping events (up to a user-adjustable maximum
number). These may be in addition to events kept by a user in his/her
user actions.
- Improved messaging.
- Use command->CommandFailed(); remove internal 'fErrorCode'.
- Implemented G4RunManagerFactory::GetMasterRunManager().
- Modeling:
- Rationalised defaults for PVPaths; make sure all nodes are marked as
"not drawn" unless actually chosen for drawing.
- Suppress warnings while filter not fully established.
- Pick up default vis attributes.
- Implemented G4RunManagerFactory::GetMasterRunManager().
- Improved printing. Minor code tidy.
- FukuiRenderer
- G4DAWNFILEViewer: fixed Unbuntu 20 compiler warning about ignoring
system function return value.
- G4FukuiRendererViewer: fixed compilation warning for overlapping
comparisons always evaluating to true.
- OpenGL
- Improved guidance and tidy "/vis/ogl/" commands.
- Removed no longer required dependence on GLU.
- Removed support for Qt4.
- Fixed bug in "/vis/ogl/export" when dot '.' is included in name.
- CompareForKernelVisit(), force kernel visit if global parameters
change. Avoid unnecessary redraw at start.
- Implemented G4RunManagerFactory::GetMasterRunManager().
- OpenInventor
- Added Open Inventor Qt visualisation driver. The Open Inventor module
can be built with either the OIQt driver, or with the OIX/OIXE drivers,
but not with both. Enabled use of OIQt viewer with Qt UI.
- Enable configuration for OIQt driver, as orthogonal to OIX and OIXE.
- CompareForKernelVisit(), force kernel visit if global parameters
change. Avoid unnecessary redraw at start.
- Qt3D
- New driver based on Qt3D for native Qt rendering.
- Raytracer
- Suppressed printing during RayTracer run.
- Implemented G4RunManagerFactory::GetMasterRunManager().
- VRML
- G4VRML1/2FileSceneHandler: fixed Unbuntu 20 compiler warning about
ignoring system function return value.
- XXX
- CompareForKernelVisit(), force kernel visit if global parameters
change. Avoid unnecessary redraw at start.
- Externals
- Fixed Coverity defect warning.
Environments
- G4Py:
- Removed obsolete boost.python indexing suite (which was only required
on very old Boost versions <= 1.33). Replace use in client modules by
direct inclusion of the needed Boost header.
- Modified use of Boost 1.73 binding and placeholder functionality,
resulting in Boost.Python spamming pragma messages about deprecation
of this.
Added BOOST_BIND_GLOBAL_PLACEHOLDERS as a private compile definition
to geant4py targets to suppress these.
- Made CMAKE_INSTALL_PYTHONDIR a user-configurable cache variable.
RPATH issue is addressed by use of CMAKE_SKIP_INSTALL_RPATH variable
by client. Addressing problem report
#2283.
- Updated signatures to support const addresses as return values in
G4UIcommand.
- Added binding to G4PhysListFactory and a simple test.
Addressing
GitHub PR#14.
Data sets
- New low-energy data set version, G4EMLOW-7.13:
- Added new cross-section files for protons (HT).
- Added EPICS2017 data for gamma conversion (ZL).
- Added new JAEA elastic polarized gamma scattering data files
in compressed format.
- Added a new numerical DCS set for e-/e+ elastic scattering
obtained by numerical Dirac Partial Wave Analysis (DPWA).
More information can be found in the 'dpwa/Readme.txt' file.
- Added new Molecular Interference form factors (penelope/rayleigh/MIFF),
to be used by G4PenelopeRayleighMI model.
- New data files for nuclides properties G4ENSDFSTATE-2.3:
- Corrected GD158 data to be compliant with new PhotonEvaporation
database.
- New data files for evaluated cross-sections G4PARTICLEXS-3.1:
- Regenerated n, p, d, t, He3, He4, gamma data based on G4NDL4.6 and
LEND; provided smooth cross-section shape and fixed fusion
cross-sections.
- New data set version G4PhotonEvaporation-5.7 for nuclear de-excitation
data:
- Updated file z66.a161 (Dy161) for the decay of Tb161.
- New file for z64.a158 (Gd158).
- Updated and corrected file z64.156 (Gd156).
- New data set version for radioactive-decay processes,
G4RadioactiveDecay-5.6:
- Updated file z82.a211 (Pb211) according to DDEP plus adding of
firstForbidden tag.
- Slight update of z83.a211 (Bi211) and z84.a211 (Po211) according to DDEP.
- Correction of file z2.a8; addressing problem report
#2243.
- Update of file z63.a158 (EU158 beta- decay to Gd158).
- Removed empty lines in files z3.a8, z7.a16, z10.a18.
- New data set version for measured optical surface reflectance,
G4RealSurface-2.2:
- Compressed data with zlib.
Examples
- Updated reference outputs, macros, READMEs and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- Migrated most examples to use G4RunManagerFactory, therefore allowing
for enabling optional tasking in MT builds.
- advanced
- air_shower
- Output results histograms to file. Added macro file to plot
histograms.
- Create material properties using std::vectors.
- Added missing include statement in UltraDetectorConstruction.
- brachytherapy
- Analysis now fully compliant with g4tools; removed dependency
on Root. General cleanup of the code. Implemented RunAction.
- fastAerosol
- New example showing use of FastAerosol geometry classes, allowing
to efficiently and accurately simulate particle transport through
aerosols containing billions of randomly-positioned droplets, using
an ordinary workstation. See: MacFadden, N., Knaian, A.,
"Efficient Modeling of Particle Transport through Aerosols in
Geant4", manuscript in preparation, 2020.
- gammaray_telescope
- GammaRayTelHadronPhysics, GammaRayTelIonPhysics: fixed
compilation problems due to incorrect FTFP instantiation.
- Added option to use G4EmStandard_Option4 with BetheHeitler5D model
by using macro file physics_polarized_new.mac to select the EM
physics processes and models.
- Added new macro gammaray_polarized.in.
- gorad
- New example Gorad (Geant4 Open-sourced Radiation Analysis and
Design), a turn-key application for radiation analysis and
spacecraft design.
- hadrontherapy
- Added BEST beamline.
- Fixed occasional segmentation faults in MT mode with max number
of threads.
- Fixes in using analysis: added test for open file before calling
write & close; uncommented delete of analysis manager in
RunAction.
- Added protections against FPEs in RBE module.
- Fixed compilation warnings on Windows related type conversions.
- Deleted many obsolete macro files.
- Code cleaup; removed Root script folder and other cosmetics.
- HGCal_testbeam
- New example based on the Geant4 standalone application developed
by Thorben Quast for the CMS High Granularity Calorimeter (HGCal)
studies. The example demonstrates a test beam setup used in HEP
experiments, and as a base for the validation studies and
comparison with experiment data. Details on the High Granularity
Calorimeter (HGCal) can be found in the
Technical Design Report..
- ICRP110_HumanPhantoms
- New example modelling the ICRP110 reference computational human
phantoms and calculating the dose in individual voxels and entire
organs. The human male phantom is created from a whole-body
clinical CT image.
- iort_therapy
- Fixed CMake script, removing direct dependency on Root.
- radioprotection
- Added new parameter to DetectorConstruction constructor; added
instance of DetectorManager in main().
- DetectorConstruction: defined private methods to construct a
specific type of detector ("Silicon", "Diamond", and "MicroDiamond");
added detectorType private string to store the name of the one in
use; rewrote Construct() so that it calls the specific method of
the selected detector type; moved the previous diamond detector
geometry to ConstructDiamondDetector() and added new possible
geometries (silicon and microdiamond).
- DetectorMessenger: created file in order to switch detector type.
- New macro geometry.mac, to select a specific detector at runtime
(by default, all options are commented out).
Added a line in vis.mac to execute geometry.mac before launching
the GUI (at which point it wouldn't be possible to change the
geometry anymore). Added a line in run.mac to execute geometry.mac.
- underground_physics
- Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
in input macros.
- Removed unnecessary command in neutron.mac and ambe_spectrum.mac
macros.
- Build material property tables using std::vectors.
- basic
- B4
- Updated B4Analysis header with commented lines for using new
generic analysis manager.
- Added commented command "ignoreThreadsExcept 0" setting in
run2.mac.
- B5
- Replaced use of G4Analysis::ManagerInstance() with new generic
analysis manager. Storing ntuple in a separate file.
- extended
- electromagnetic
- TestEm1
- PhysicsList: use G4RadioactiveDecayBase instead of deprecated
G4RadioactiveDecay. Minor code cleanup.
- Migrated UI command from "/grdm/nucleusLimits" to
"/process/had/rdm/nucleusLimits" in radioactive.mac macro.
- Reviewed macros and added macro description in README.
- TestEm2
- Macro & commands review: removed implementation of command
"/testem/histo/setFileName" and replaced its usage with
"/analysis/setFileName"; fixed file name in egs4.mac;
extended TestEm2.in with a command: "/testem/run/verbose 1".
- TestEm3
- Macro & commands review: added macro descriptions in README;
added geom.mac with commands not used in TestEm3.in; fixed not
working macros: ionC12.mac, lockwood.mac, storeTables.mac;
removed obsolete macro retrieveTables.mac.
- TestEm4
- Do not call vis.mac automatically in interactive mode.
- TestEm5
- TrackingAction: corrected weight for solid angle histograms
Updated berger.mac, berger/berger.C, hanson.mac and
hanson/hanson.C. Added hanson/19um-wwols.ascii and 9um too.
Based on proposal by Weronika Wolszczak (TU Delft Univ.).
- Macro & commands review: added macro descriptions in README;
added geom.mac for testing remaining commands.
Removed obsolete fluo.mac macro.
- StackingAction: log histograms, revert to previous version.
- TestEm7
- Do not call vis.mac automatically in interactive mode.
- TestEm11
- PhysicsList: use G4RadioactiveDecayBase instead of deprecated
G4RadioactiveDecay. Minor code cleanup.
- Added macros description.
- TestEm12
- Added macros description.
- TestEm14
- Added atomicDeexcitation.mac macro.
- Added macros description.
- TestEm18
- exoticphysics
- saxs
- New example implementing the typical setup of a Small Angle
X-ray Scattering (SAXS) experiment. It is meant to illustrate
the usage of molecular interference (MI) of Rayleigh (coherent)
scattering of photons inside the matter, which is implemented
in the G4PenelopeRayleighModelMI model.
- hadronic
- FissionFragment
- Replaced deprecated HP environmental variables with
corresponding UI commands.
- Hadr00
- HistoManagerMessenger: fixed destructor.
- Hadr01
- PhysicsList: make it coherent with current reference physics
lists.
- RunAction: improved printouts.
- Switched from Al to W in hadr01.in macro.
- Hadr02
- HadronPhysicsCRMC_FTFP_BERT, HadronPhysicsHIJING,
HadronPhysicsUrQMD: introduced the new class G4HyperonBuilder
which is now needed when using G4HyperonFTFPBuilder.
- Hadr03
- PhysicsList: added G4HadronPhysicsQGSP_BIC, Shielding,
RadioactiveDecay.
- GammaNuclearPhysics: added G4LowEGammaNuclearModel.
- Added GammaNuclearPhysicsLEND.
- HistoManager, SteppingAction: added plot of e-.
- Modified gamma.mac script; added Au196.mac.
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main(), and UI
commands in the macros.
- Added fusion.mac macro.
- Added macros description.
- Hadr04
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main().
- Added macros description.
- Hadr06
- HistoManager, TrackingAction: plot particle energy at
creation.
- GammaNuclearPhysics: added G4LowEGammaNuclearModel.
- TrackingAction: added commented code for singleFission.
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main(), and UI
commands in the macros.
- Added singleFission.mac macro.
- Hadr07
- GammaNuclearPhysics: added G4LowEGammaNuclearModel.
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main().
- Added macros description.
- Hadr09
- New example showing how to use Geant4 as a generator for
simulating inelastic hadron-nuclear interactions.
- NeutronSource
- GammaNuclearPhysics: added G4LowEGammaNuclearModel.
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main().
- Added macros description.
- medical/DICOM
- Distinguish output names of archive lib from DLL and application
to fix Windows linking errors for static libraries.
- medical/DICOM2
- Fixed compiler warning on Windows.
- medical/dna
- chem4:
- Fixed setup for Root in CMake script.
- chem6:
- New example providing scoring of the radiochemical yield G
defined as (Number of species X) / (100 eV of deposited energy),
as a function of time and LET. The details are described in the
following paper: J. Appl. Phys. 125 (2019) 104301.
- optical
- LXe
- Set optical parameters in G4OpticalParameters class.
- Use new scintillation material property names.
- Use std::vector to specify material property names.
- Fixed valgrind errors: added 'delete's and fix initialization
of hits counters.
- Renamed LXe.in macro to LXe.mac; store random seed in LXe.mac
and set optical verbosity to 1.
- Applied clang-format style and updated macros.
- Renamed ProcessHits_constStep() to ProcessHits_boundary().
- Removed unused #includes and empty methods.
- OpNovice
- Added material properties using new interface with
std::vectors.
- Print out process statistics at end of run.
Added EventAction and Run classes for this.
- Updated macros, especially to run more particles.
Updated gui.mac.
- Remove use of G4Timer.
- Use default random number generator.
- Applied clang-format style.
- OpNovice2
- Use new scintillation time constant parameter.
- Added code to generate statistics for wavelength shifting.
- Added material properties using new interface with
std::vectors.
- Calculate reflection/transmission probabilities vs. angle;
new macro fresnel.mac.
- Histos: added axis labels, id's; refer to them by id in some
places.
- Added wls.mac to test WLS and new process WLS2.
- Removed string comparisons and redundant calls in
SteppingAction.
- Removed redundant G4AnalysisManager::Instance() calls.
- New macro boundary.mac, exercising all 4 boundary models.
- Removed glisur.mac and unified.mac macros.
- Renamed OpNovice2.in macro to OpNovice2.mac.
- Print histogram statistics at end of run.
- Removed use of G4Timer; don't set number of threads in main().
- Updated macro verbosity, ignore threads except 0.
- Applied clang-format style.
- wls
- Added material properties using new interface with
std::vectors.
- Large cleaning including clang-format style guidelines.
- Added counters to record run and event statistics.
Update macros.
- Added remaining material properties using new interface with
std::vectors.
- parallel
- MPI
- Updated analysis classes for the design changes in analysis
module.
- TBB
- Updated to use new tasking system which is fully compatible
with TBB.
- ThreadsafeScorers
- Updated to use new tasking system; forcing use of
G4TaskRunManager.
- Added example of user code leveraging tasking in TSRunAction;
it leverages tasks on the master thread at the end of the run
to generate some strings of output via a nested hierarchy of
tasks and uses the features of the G4TaskGroup to combine the
strings in the order that they were submitted to the task-group
(thus producing the same output result as the serial version).
- Replaced TIMEMORY_AUTO_TIMER usage with G4USER_SCOPED_PROFILE
usage.
- TopC
- Fixed README.html. Addressing problem report
#2284.
- parameterisations
- Par03
- New example demonstrating how to use G4FastSimHitMaker helper
class to create multiple energy deposits from the fast
simulation model.
- persistency
- gdml/G01
- Use [] brackets in loop.gdml sample to show how to index names
and dimensions in loops.
- Added a line (commented out) indicating how to overwrite output
files.
- P01
- Fixed CMake script for search or Root macros.
- radioactivedecay
- Activation
- GammaNuclearPhysics: added G4LowEGammaNuclearModel.
- In Run, corrected a protection on maximum number of
histograms.
- Removed deprecated HP environmental variables and replaced
them with corresponding C++ calls in the main().
- Added macros description.
- rdecay01
- Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
in input macros.
- Added atomicDeexcitation.mac macro.
- PhysicsList: added SetDeexcitationIgnoreCut(ARMflag).
- Added macros description.
- rdecay02
- Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
in input macros.