Geant4 11.1 Release Notes
The code and binary libraries for the supported systems are available
through our Source
Code Web page.
We are grateful for the efforts of Geant4 users who have provided
detailed feedback or comprehensive reports of issues.
We thank in particular those who have contributed corrections,
improvements or developments included in this release.
Please refer to the
Geant4
User Documentation for further information about using Geant4.
Contents
- Supported and Tested Platforms
- Supported CLHEP, VecGeom and PTL versions
- Items for migration of the user code
- New Developments and Capabilities
- Expected effects on physics and performance
- Known Run-Time Problems and Limitations
- Compilation Warnings
- Geant4 Software License
- Detailed list of changes and fixes
- Appendix
1. Supported and Tested Platforms
Platforms:
- Linux, gcc-8.3.1.
Tested on 64 bit architectures (Intel or AMD) with
CERN CentOS Linux 8 (CC8) (based on CentOS Linux 8).
- macOS 13.0.1 Ventura with Apple LLVM/Clang-14.
Tested on 64 bit architectures (Intel or Apple Silicon).
- Windows-10 with Visual C++ 14.33 (Visual Studio 2022).
More verified and tested configurations (64 bits):
- Linux, gcc-9.3/10.3/11.3/12.2, clang-10/11/13/14
- Linux, Intel-icc 2021.7, Intel-icx 2022.2
- macOS 12.6 Monterey with Apple LLVM/clang-14
- macOS 11.7 Big Sur with Apple LLVM/Clang-12
- Windows/10 with Visual C++ 14.29 (Visual Studio 2019)
2. Supported CLHEP, VecGeom and PTL versions
This release of Geant4 has been verified with
CLHEP, release 2.4.6.2.
Use of a different CLHEP version may cause incorrect simulation results.
NOTE: an internal module of the relevant CLHEP classes is provided and can be
used as alternative to an external CLHEP library installation.
A configuration option allows a Geant4 installation to use the
VecGeom Library
primitives, to replace the original Geant4 solids.
VecGeom version 1.2.1 has been tested when using such configuration.
PTL version 2.3.3 is required for external installation of the
PTL tasking library.
CMake 3.16 is the minimum version required to build Geant4.
3. Items for migration of the user code
Listed here is some relevant information on developments included in this
release.
Note that for all users a full re-installation of libraries (or a full
re-compilation) and a re-compilation of user applications is required.
General
- Using standard install location for CMake find_package
configuration files under $CMAKE_INSTALL_PREFIX/lib/cmake/Geant4.
Application builds using CMake will need to set Geant4_DIR to
this new location, or use CMAKE_PREFIX_PATH, to find Geant4.
- Added required configuration to be able to generate DEB/RPM packages
with CPack.
- Added new scheme to locate required datasets, making use of environment
variables optional. See Appendix for details
on potential configuration and C++ changes required.
- Removed Geant4Py from toolkit build with distribution and support moved
to upstream repository.
All support and feature requests should be directed to the related
GitHub Issue
Tracker.
- Retired tasking module and merged contents in global and
run categories.
Geometry, Fields and Transportation
- Client code that uses the methods SetLowLooperThresholds() and/or
SetHighLooperThresholds() introduced in release 11.0 for G4Transportation
and G4CoupledTransportation, may need revision as now G4CoupledTransportation
inherits from G4Transportation.
Electromagnetic and optical physics
- New dataset G4EMLOW-8.2 is required and should be used.
Visualization and Modeling
- Qt drivers require the Qt-5 platform. Qt-6 is not yet supported.
- The GEANT4_USE_TOOLSSG CMake option for the ToolsSG visualisation driver
has been removed, the driver now being automatically enabled.
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-8.2, G4NDL-4.7.
Notice that the latter extends the number of materials for which
thermal scattering data is available.
- In order to use ParticleHP for charged particles
(protons, deuterons, tritons, He3 and alphas), an optional data
set G4TENDL-1.4 is required, and can be optionally
downloaded in addition.
4. New Developments and Capabilities
General
- Improved diagnostic for problems with primary track parameters or with
secondary tracks in particle-change classes.
- Introduced methods in the G4Track class that provide information on eventual
short-lived parent hadronic resonances.
Analysis
- Implemented support for writing analysis objects (histograms, profiles,
n-tuples) in a file multiple times.
- Added new UI commands for analysis file management:
/analysis/openFile, write, closeFile and reset.
- Added new analysis manager List functions and associated commands:
/analysis/list [onlyIfActive],
/analysis/xy/list [onlyIfActive] where
xy = h1, h2, h3, p1, p2, ntuple.
Geometry & Field
- Added ability to optionally check for overlaps in parallel geometries
through the /geometry/run/test UI command.
- A new class G4TransportationParameters enables fine grain control of
parameters for killing charged particles looping in a field.
It is optional, but if created it applies to all stable charged particles.
It must be instantiated in the master thread and all its parameters need
to be assigned values.
- Improved computation of surface area and cubic volume in specific solids.
- Revised implementation of G4CoupledTransportation: now it inherits from
G4Transportation and consolidates common variables and methods.
- Revised G4FieldManager to ensure that epsilon_min/_max parameters
are between 'minimum and maximum accepted' accuracy values to ensure robust
behaviour of the integration.
- Introduced a 2nd order symplectic integration method
G4BorisDriver, targetting better control of energy conservation and
conservation of phase space volume.
Materials
- In the NIST material data-base, the material descriptions for G4_ADENINE,
G4_GUANINE, G4_CYTOSINE, G4_THYMINE and G4_DEOXYRIBOSE have been updated
and G4_PHOSPHORIC_ACID has been added.
- Fixed density effect data for 8 materials, the most significant fixes are
for G4_Tm, less relevant for G4_Be, G4_Mg,
G4_Fe, and G4_Y.
Electromagnetic physics
- Possibility to choose the model of fluctuations, using either the default
G4UrbanFluctuation, or the alternative G4UniversalFluctuation (more accurate
for thin targets), or G4LossFluctuationDummy (no fluctuations); new UI command
defines model of fluctuations for the full setup; inside user physics lists
it is possible to configure different fluctuation models per G4Region.
- In G4UrbanMscModel, moving the safety computation before the algoritm of
step limitation in order to save few instructions; should not affect results.
Also, removed the computation and use of rangecut for step limitation,
providing some CPU speedup.
- New G4TransportationWithMsc specialised tranportation process combined with
multiple-scattering, enabled by default with G4EmStandardPhysics_option1.
May be enabled for any EM physics via the new UI command. Added also
possibility to enable internal stepping.
- New model and process for muon pair production by muon.
- Use G4LinhardSorensenIonModel for GenericIon in physics-lists for
G4EmStandardPhysics_option3, G4EmStandardPhysics_option4,
G4EmPenelopePhysics and G4EmLivermorePhysics.
- Set EPICS2017 cross sections to be the default for Livermore gamma
processes.
- G4EmFluoDirectory: added new enumerator and introduced directory for
the fluorescence data as a parameter, allowing to use alternative
sets of atomic levels.
- In optical physics, addded ability to calculate reflection/refraction from
thin film coating.
- New utility class G4EmDNABuilder, providing instantiation of standard
and DNA processes/models in physics lists. Made G4EmDNAPhysics the base
class for DNA physics constructors. Optimised IRT-syn DNA model.
- Added parameters in DNA including the chemical molecules and reaction
list involved in the radiolysis.
- In G4DNA, incorporated model based on RPWBA to transport protons at
100-300 MeV. Updated data structure to improve performance of the
mesoscopic model. Also added nitrogen models from PTra code.
Hadronic physics
- New integral method for hadronic processes (to take into account the change
of hadronic cross-sections along a step for charged hadrons due to the
decrease of hadron's kinetic energy by ionization loss.
- Extended cross-sections for the computation of light anti-nuclei on hydrogen.
Extended nuclear cross-sections also for light hypernuclei and anti-hypernuclei
projectiles.
- In coherent elastic hadronic model, added extensions for the simulation of
a light anti-hypernucleus projectile elastic scattering on a target nucleus.
- Extended nuclear elastic and inelastic physics to support light hypernuclei
and anti-hypernuclei projectiles.
Implemented extension of the FTF model to deal with the annihilation of
light anti-hypernuclei, for all energies; general improvement of the
algorithm used to sample kinematical variables.
In coherent elastic hadronic model, added extension for the simulation of
light hypernuclei and anti-hypernuclei projectile elastic scattering on
target nuclei.
- In hadronic de_excitation, added limitation (A < 30) on decay of unphysical
fragment, allowing for removal of light unphysical states and providing
improved isotope production for the spallation fragments.
- Improved FTF fragmentation to better describe the production of strange
mesons and baryons in proton-proton interactions, as measured by the
NA61/SHINE Collaboration.
Also improved description of leading particle spectra in meson-nucleon
interactions.
- Revised the mixing probability between vector mesons (rho0 and
omega), as well as the probabilities for the ratios between
pseudo-scalar and vector meson production for both FTF and QGS string
fragmentations, to improve the description of NA61/SHINE experimental
data.
- New singleton class G4FTFTunings to allow to specify alternative sets
of FTF parameters, called "tunes"; added also specific UI messenger.
Currently, the feature is mostly meant for use in internal tests,
further study and development; in the future, such tunes may be offered
to users for specific studies.
- Added option to G4HadronicParameters to control the diffraction
dissociation for nucleon projectile on target nucleus with baryon number
greater than 10: by default, both projectile and target diffraction are
switched off (but they are both active in the case of target nucleus with
baryon number below or equal to 10; if instead the flag is set to "true",
then both projectile and target diffraction are activated regardless of
the target nucleus).
- Introduced de-excitation of fragments with lambda inside; extended upper
limit of atomic de-excitation from Z=100 to Z=104.
- Implemented new process for tau-neutrino hadronic inelastic physics.
Processes - General
- Added flush() method to the fast simulation models, allowing to process the
input buffer of the fast simulation model before the end of an event;
triggered inside the event loop of G4EventManager, when the stack is empty.
- Added a new utility method to access a process via sub-type.
- Added extra virtual methods to G4VProcess base class, GetCreatorProcess()
and MinPrimaryEnergy() needed for treating new combined processes.
- Added new virtual method G4VDiscreteProcess::GetCrossSection()
required in the implementation of integral approach.
Physics Lists
- New G4NeutronGeneralProcess combined process; enabled in QBBC physics-list.
- In G4EmStandardPhysics_option3, use options providing more accurate
simulation without loss of CPU performance; significantly improving
fanoCavity results.
- In G4EmStandardPhysics_option4, for low-energy electron ionisation
the Penelope model is used instead of the Livermore model.
- For FTFP_BERT and FTFP_INCLXX physics lists, it is possible to enable the
transport of light hypernuclei and anti-hypernuclei, switched off by
default. When enabled, the following interactions are included:
a simplified treatment of weak decay; ionization and multiple scattering
for the charged particles; nuclear elastic scattering; nuclear inelastic
scattering, handled by either the FTF string model or by the INCL
intranuclear cascade model, with a very simplified treatment of nuclear
de-excitation.
- In G4RadioactiveDecayPhysics time limit for radioactive decay is now
coherent with the limit used in the nuclear de-excitation. The default
limit of 1 ns may be changed via UI command.
- All DNA physics lists are now combined with standard EM models. The
default upper energy limit of 300 MeV may be increased or
decreased. DNA physics may now work with radioactive decay.
Visualization and Interfaces
- ToolsSG drivers for X11, Xt and Qt (short name TSG): now fully functional
and supporting histogram plotting.
- Fast rendering of complex meshes (special mesh rendering) for most drivers
(see advanced examples ICRP110 and 145).
- "Twinkling" of volumes when centring (/vis/viewer/centreOn, etc.).
- Cutaway (/vis/viewer/addCutawayPlane) now available for all
visualization drivers.
Examples
- New set of extended examples, implementing different setups showing how
to score particle fluences.
- New example analysis/AnaEx03, showing usage of new analysis
commands for file management, writing histograms and n-tuples in a file
multiple times
- In medical/dna, new example jetcounter, simulation of
a typical experiment with the Jet Counter nanodosemeter; new example
moleculardna, simulation of physics, physico-chemistry and
chemistry processes in DNA geometries.
- The example field/field01 now demonstrates how to use the new
G4TransporationParameters class, and shows a full set of ways to control
the parameters for killing looping stable charged particles.
- eFLASH_radiotherapy: new application simulating the beamline and energy
spectra based on the Triode Electron Gun Equipped ElectronFlash Manufactured
by Sordina Iort Technologies S.p.A. available at the Centro Pisano Flash
Radiotherapy (CPFR) in Pisa.
- New advanced example implementing a ICRP145 human phantom.
5. Expected effects on physics and computing performance
Geometry & Field
- A potential CPU time increase could be experienced due to the new maximum
value for relative accuracy of integration of charged particle tracks in
field (epsilon_max). This can be due to extra steps for low
energy electrons or muons moving in (near) vaccuum.
Potential remedies: either use (the more efficient) templated equation
of motion, stepper and driver, or investigate using an alternative driver
which treats long steps (those with a large angle arc of the helix) using
a separate helical method. To obtain it, use the four argument
G4ChordFinder constructor, with a 4th argument
stepperId=4.
Electromagnetic physics
- A new process of muon pair production by muons is available and can be
enabled via UI command or C++ interface through the G4EmExtraPhysics
constructor.
- G4GammaGeneralProcess is used for gamma physics by default. It brings few
percent speedup depending on geometry setup and type of simulation.
- Implemented usage of PhotoeffectBelowKShell flag, allowing to enable/disable
photo-electron production below K-shell of an atom; by default this is
enabled.
Hadronic physics
- FTFP_BERT pion showers have slightly (~0.5%) higher energy response and
(~2%) narrower lateral shapes with respect to release 11.0.3. QGSP_BERT
pion showers have slightly (~0.5%) lower energy response and (~2%) wider
lateral shapes. Comparing QGSP_BERT pion showers with those of FTFP_BERT,
they become closer to each other with respect previous versions, with
the QGSP_BERT pion showers still having slightly higher energy response,
significantly wider energy resolution, and longer and narrower shower
shapes with respect to those of FTFP_BERT.
6. Known Run-Time Problems and Limitations
For a complete list of outstanding run-time problems and to submit any
problem you may find while running this version of Geant4, please refer
to the
Geant4 Problem
Reporting System.
7. Compilation Warnings
There may be a few compilation warnings on some platforms.
We do not believe that any of these lead to incorrect run-time behaviour.
8. Geant4 Software License
A Software License applies to the Geant4 code.
Users must accept this license in order to use it.
The details and the list of copyright holders is available at
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 Intel-icpx/icx compiler and updated compilation flags
for all Intel compilers.
- Enable ToolsSG and backends based on use of external libraries (Qt, X11,
Xm, Win32). Backends made non-mutally exclusive; removed
GEANT4_USE_TOOLSSG public CMake option and flag, since ToolsSG is now
built by default.
- Fixed bug in Qt3D viasualisation driver activation, based on report
in Users Forum.
- Avoid setting LD_LIBRARY_PATH configuration on MacOS; adding paths to
DLL into PATH on Windows.
- Corrected logic error in checking whether module is already composed.
- Deprecated tags `geant4_define_module`, `geant4_global_library_target`;
decouples the source code organisation and the module/library
composition commands; implementation reduced to emitting a CMake
warning message on what to replace with.
- Updated CMake build scripts in all modules, by replacing
geant4_global_library_target with direct file inclusion and
call to geant4_add_category to define library build from source
modules.
- Reorganised DLL import/export flags for single-module categories.
- Set default value of GEANT4_BUILD_BUILTIN_BACKTRACE to OFF.
- Do not use CMAKE_VERBOSE_MAKEFILE when building tests.
- Rationalized declaration and use of internal builds of required
externals CLHEP, zlib, expat, PTL and tools libraries.
- Support declaration and composition of header-only modules and
libraries.
- New geant4_module_check.py script to provide convenient interface for
developers and testing to check module/library cycles and dependency
inconsistencies. Filter out visualization driver modules from consistency
check for visualization/management module. Filter out C++ filesystem
library from checks.
- Adding geant4_module_sources command to enable appending of
headers/sources to a module after creation.
- Providing GEANT4_BUILD_ENABLE_ASSERTIONS option to enable assert() in
all release build modes (Release, RelWithDebInfo, MinSizeRel).
- Forward `CMAKE__FLAGS[_]` flags to `geant4_add_test` so that
a consistent set is used through the project.
- Promote INTERFACE module properties to PUBLIC when merging them into a
non-INTERFACE final target.
- Removed retired tasking module and library from configuration
files.
- Removed deprecated functions in G4DeveloperAPI and fixed typo that
prevented installation of headers.
- Removed obsolete and now longer built G4gl2ps target.
- Allow library composition to be overriden in developer builds.
- Do not use readlink -f to support pre-Monterey macOS systems.
- Adding -Og to GNU/Clang default debug flags.
- Copy .clang-tidy file to build directory to assist run-clang-tidy
reporting.
- In G4ConfigurePkgConfigHelpers.cmake, geant4-config.in for geant4-config
generation: adding new flag --features (add vtk and qt3d features);
allow use of md5sun if openssl missing; canonicalise prefix path.
- Added options --sh and --csh to geant4-config script.
- In G4ConfigureGNUMakeHelpers.cmake for geant4.[c]sh, geant4.bat
generation: allow full path source in zsh, sh; unset local variables at
the end; introducing GEANT4_DATA_DIR, with all data-set paths relative
to this.
- Added commands for working with categories analagous to module commands.
- Added required configuration to be able to generate DEB/RPM packages
with CPack.
- Use more standard install location for CMake files.
- Remove version from default installation directories.
- Rationalised interlinked PTL/TBB build options.
- G4ConfigureGNUMakeHelpers.cmake (geant4.[c]sh, geant4.bat generation):
use the environment variable GEANT4_DATA_DIR as top data directory; the
environment variables for individual dataset commented in scripts.
- Added source validation exception for G4FindDataDir generated header.
- Added -diag-disable=10441 CXX option to Intel compilers, to
disable icc compiler deprecation message.
- Removed Geant4Py from toolkit build, pointing users to upstream repository
when setting GEANT4_USE_PYTHON in CMake configuration.
- Keep file timestamps from unpacked data libraries in CMake 3.24 and
newer.
- Fix issue in Qt3D activation as reported on the Users Forum.
- Set CLHEP minimum version to 2.4.6.0 and VecGeom 1.2.0.
- New data sets G4EMLOW-8.2 and G4NDL-4.7 with new ThermalScattering data.
- Updated tag-IDs for 11.1.
- GNUMake
- Added Linux-icx.gmk configuration for Intel OneAPI DPC++ compiler.
Updated compilation flags for Intel icc/icx compilers.
- Enable -pthread only for MT builds in other configurations.
- Retired tasking category and library from build.
- Removed obsolete G4gl2ps module and library from build.
- Added --gcc-toolchain option for CXX and CC in Linux-clang.
- Added -diag-disable=10441 option to Linux-icc, to disable
Intel/icc compiler deprecation message.
- Silence ld warnings in Darwin setups.
- G4VIS_BUILD.gmk, G4VIS_USE.gmk: handle vis/ToolsSG by default.
- Replaced use of deprecated sprintf() with snprintf() in liblist.c tool.
Fixed gcc compilation warnings.
Analysis
- Implemented support for writing analysis objects (histograms, profiles,
n-tuples) in a file multiple times: with Root output type, the object
cycle number is attributed automatically; with other output types that
do not support object cycles, the object name is appended with
_vN, where N is the number of the write cycle, when
the object is written more than once; no extension is added when the
object is written for the first time (cycle 0).
- Added new UI commands for analysis file management, supporting also multiple
write with/without calling write and/or reset in between two runs:
/analysis/openFile, write, closeFile and reset
/analysis/setDefaultFileType.
- Implemented new analysis manager List functions and associated commands:
/analysis/list [onlyIfActive],
/analysis/xy/list [onlyIfActive] where
xy = h1, h2, h3, p1, p2, ntuple.
- Added UI commands for visualization: /analysis/hn|pn/getVector.
- Internal changes:
- Replaced G4TNtupleDescription, G4RootPNtupleDescription structures with
classes more suitable for adding members for handling n-tuple cycles.
- Changed namespace for g4tools code from tools to toolx
for externals.
- Added G4RootRFile type = a tuple for the Root read file including its
directories, analogue to G4RootRFile for Root output, used now in the
G4RootRfileManager::fRFiles map instead of tools::rroot::file.
This allows deleting file directories in the class destructor, and
should fix a reported Coverity defect.
- Refactored analysis manager methods for file handling from the output
specific managers in the common implementation in G4ToolsAnalysisManger.
Besides code simplification, this guaranties identical behaviour with
generic analysis manager.
- Introduced a common implementation for histogram/profiles manager.
New classes:
- G4VTBaseHnManager - replaces G4VHn|PnManager.
- G4THnToolsManager - replaces G4H*|P*Manager classes.
- G4THnMessenger - replaces G4H*|P*Messenger class.
- G4HnDimension - helper type to manipulate ndim, xmin, xmake
parameters.
Updated classes:
- G4THnManager: added a vector of pairs of histogram and information
as a data member to simplify the access when both objects are used.
- Updated HnInformation structures functions to use compacted
parameters.
- Updated functions in G4AnalysisUtilities.
- In all messenger classes, replaced the usage of the analysis
messenger helper with private helper functions.
- G4Plot* classes moved from management in hntools.
Removed classes:
- G4VH1Manager, etc. for H2, H3, P1, P2.
- G4H1Manager, etc. for H2, H3, P1, P2.
- G4H1Messenger, etc. for H2, H3, P1, P2.
- G4ToolsAnalysisMassenger, G4FileMessenger.
- G4BaseHistoUtilities.
- Use geant4_category_modules in CMake script to optionally add G4hdf5
module to category.
- Fixes:
- Fix in applying units in create and set UI
commands.
- Fixes in deleting files: do not delete (not empty) main n-tuple files
with generic analysis manager, delete empty n-tuple csv and xml files
created on the main thread.
Fix in deleting files (root): do not delete the final (merged) file
when only n-tuples are present.
- Added a protection against nullptr in
G4VAnalysisManager::GetNofNtuples(). Addressing problem report
#2518.
- Applied clang-tidy fixes.
- Fixed compilation warnings on gcc-12.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Fixed reported Coverity defects.
Digitization & Hits
- Added support for ntuple merging in G4TScoreNtupleWriter; it can be
activated with G4TScoreNtupleWriter::SetNtupleMerging().
- Canonicalise implementations of custom new() and delete() operators that
use G4Allocator. Removed un-needed/duplicated checks on static allocator
creation in member functions.
- Applying standard clang-tidy plus range-based for and Boolean
simplification fixes in scoring classes. General code tidy and modernization:
use consistent, grouped ordering of public-protected-private members; do not
override virtual members when no difference to base class implementation; use
delegating constructors to remove duplicated code; use C++ Boolean
true/false keywords.
- G4VScoringMesh: fixed reported Coverity defects for use of auto&.
Some minor code cleanup.
- Removed large commented-out blocks of dead codein utils module.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Electromagnetic Processes
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Resolved internal sub-modules dependency inconsistencies.
- Adjoint:
- G4AdjointComptonModel, G4AdjointCSManager: use updated interface
to cross-section from G4VEmProcess.
- G4AdjointBremsstrahlungModel: use updated interface to G4EmModelManager.
- Fixed defects reported by Coverity in G4AdjointCSManager, to use
auto&.
- DNA:
- Added G4DNAPolyNucleotideReactionProcess and G4VDNAHitModel classes for
DNA damage applications.
- Added nitrogen models from PTra code.
- Prefer pointer to const G4Material where possible.
Removed useless const_cast of G4VSensitiveDetector.
- Optimised IRT-syn model, use reaction radius and reaction type from the
reaction table.
- Fixed issue in IRT model: if the first IRTSampling won't give any reactions,
stop the simulation; no StepProcessor set.
Minor correction of IRT-syn model (chemistry): contact reactions should not
happen after 1 ps.
- Deleted G4VReactionType, G4DNAReactionTypeManager, G4DNAIRT_geometries,
G4DNATotallyDiffusionControlled and G4DNAPartiallyDiffusionControlled.
- G4ITTransportation: Make PrepareState() more function-like, expect
semicolon.
- G4DNAPolyNucleotideReactionProcess: some code restructuring.
- Added condition of water material for the OUTSIDE_OF_MOTHER_VOLUME
warning in G4DNAMolecularDissociation::DecayIt().
- Added protection in G4DNACPA100IonisationModel for cumulative
cross-section interpolation.
- Added protection for HighEnergyLimit/LowEnergyLimit in
G4DNARPWBAIonisationModel and G4DNARPWBAExcitationModel.
- Added flag OctreeFinder in IRT_syn's Initialize() method.
- Added parameters including the chemical molecules and reaction list
involved in the radiolysis.
- Modified the macro in G4Molecule and G4ITType for linker problems on
Windows.
- Save local instances for recurrent access to particle definition in
G4DNAMillerGreenExcitationModel, G4DNARuddIonisationExtendedModel and
G4DNARuddIonisationModel.
- Revised code to use G4Pow and G4Log consistently.
- In G4DNARuddIonisationExtendedModel, do not include ions that are not
defined in G4DNAGenericIonsManager; corrected DNA ion definitions.
Fixed common work between DNA physics and radioactive decay module;
modification of the model scaling. Relation to the carbon ion is used
for any ion, which has no data; low-energy limit is used now more
correctly; all ions are stopped but not killed, as they may have
radioactive decay at rest.
- Fix in G4KDTree algorithm. Addressing problem report
#2235.
Minor code cleanup.
- Added G4VUserBrownianAction class, used in G4DNABrownianTransportation
and in G4DNAMolecularDissociation.
- Use int64_t for molecules width integer types.
- Added fResetScavenger data member in G4SchedulerMessenger.
- Incorporation of model based on RPWBA to transport protons
at 100-300 MeV.
- Added G4DNARPWBAExcitationModel and G4DNARPWBAIonisationModel.
- Updated data structure to improve performance of the mesoscopic model.
- Change scavenging filter of the IRT beyond 1 us.
- Incorporation of models based on RPWBA (G4DNARPWBAExcitationModel and
G4DNARPWBAIonisationModel) to transport protons at 100-300 MeV.
- Updated data structure to improve performance of the mesoscopic
model.
- Use thread-local flag in G4VMoleculeCounter.
- Replaced std::getenv() calls for data variables with
G4FindDataDir() in data readers.
- G4DNAUeharaScreenedRutherfordElasticModel: code cleanup; introduced
low and high energy limit for the model; removed misleading
G4Exception.
- G4DNAExcitation, G4DNAVibExcitation, G4DNARotExcitation: class cleanup
according to the recent G4VEmProcess base class; model headers are moved
to source; introduced C++11 features.
- Defining G4CT_MAX_COUNT for changing "compile time counter" depth to fix
build errors on NVHPC compiler.
- Added missing headers inclusions for self-consistency.
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used in G4ITNavigator2.
- Fixed Coverity reported defects.
- High Energy
- G4hPairProduction, G4hPairProductionModel: removed not needed methods.
- Low Energy
- G4LivermoreGammaConversionModel, G4LivermorePhotoElectricModel and
G4LivermoreGammaConversion5DModel: set Spline interpolation for EPDL97.
- G4Rayleigh scattering moved boundary between low and high energy
table from 100 keV to 150 keV to be coherent with G4GammaGeneralProcess.
- G4UAtomicDeexcitation, G4AtomicTransitionManager, G4ShellData, G4AugerData:
added de-excitation for heavy elements Z=101-104; removed
commented lines; improved comments; improved code format;
use pre-increment.
- G4AtomicTransitionManager: read fluorescence data using new interface
G4EmParameters::FluoDirectory().
- G4PhotoEffectAngularGeneratorPolarized: include factor of 1/8 for L-shell
differential cross-section. Addressing problem report
#2293.
- G4LivermoreComptonModel: minor clean-up.
- Fixed use of potential uninitialised pointer in
G4AtomicDeexcitation::GenerateParticles(..).
- Replaced getenv() calls for data variables with G4FindDataDir()
in data readers.
- Fixed exception printout in Livermore models.
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used in G4BoldyshevTripletModel::SampleSecondaries() and in
G4Generator2BN::SampleDirection().
- Fixed Coverity warnings.
- Removed Latin-1 characters from description in banners.
- Muons
- G4MuonToMuonPairProductionModel, G4MuonToMuonPairProduction: new
model and process for muon pair production by muon.
- G4MuIonisation: added selection of the model for energy loss
fluctuations. Use G4MuBetheBloch model above 0.2 MeV.
- G4MuBremsstrahlungModel: moved low energy limit from 1 GeV
to 100 MeV.
- G4MuPairProductionModel: moved low energy limit from 1 GeV
to 850 MeV.
Some code cleanup: formatting, removed extra space lines.
- G4MuPairProductionModel, G4MuPairProduction: reorganised methods;
use G4lrint.
Standard
- G4UrbanMscModel: moving safety computation before step limitation
algorithms in order to save few instructions; should not affect results.
Optimised some code. Added two extra class members. Improved code comments.
Extended cache data with 5 variables for positrons;
removed unused headers; minor saving of instructions.
Removed computation and use of rangecut for step limitation: this change
affects only EM option3 physics, making results closer to option4 and
providing some CPU speedup.
- Fixed stopping power parameterisation below lowest energy point; apply
unit factor to material vector and not to data inside each element vector.
Implemented data tables for materials and not material-cut-couples;
provided non-zero dEdx for ions with Z > 80.
Included debug printouts protected by verbosity.
- G4eIonisation, G4hIonisation, G4ionIonisation: added selection of the
model for energy loss fluctuations.
- G4hIonisation, G4ionIonisation: updated initialisation to be coherent with
possible creation of combined DNA/standard physics-list: do not modify low
energy limit for a model; define high energy limit considering high energy
limit set in the physics-list and the mass of the particle.
- G4BetheBlochModel, G4BraggIonModel, G4LindhardSorensenIonModel: use the
same computation of effective charge and energy at a step inside method
CorrectionAlongStep(..); improved range of ions in the default EM physics
configuration.
- G4AtimaEnergyLossModel, G4BetheBlochModel, G4BraggIonModel,
G4LindhardSorensenIonModel: do not set effective charge to the model of
energy loss fluctuation inside CorrectionAlongStep(..) method, it is
done by G4VEnergyLossProcess. Addressing problem report
#2495.
- G4LindhardSorensenIonModel: fixed CorrectionAlongStep() computations
at low energy.
- G4PairProductionRelModel, G4eBremsstrahlungRelModel,
G4PairProductionRelModel and G4eBremsstrahlungRelModel: added inclusion
of headers of G4Exp, G4Pow to to make translation unit self-consistent.
- In G4WentzelVIRelModel, G4WentzelOKandVIxSection,
G4LindhardSorensenIonModel and G4ICRU49NuclearStoppingModel, use
G4AutoLock.
- G4PEEffectFluoModel: implemented usage of PhotoeffectBelowKShell
flag, allowing to enable/disable photo-electron production below K-shell
of an atom; by default this is enabled, so it affects the results; if
disabled, some CPU improvement may be expected.
- G4BetheHeitler5DModel: do not instantiate G4MuonPlus, G4MuonMinus inside
the model to allow usage of this class in physics lists without muons.
- G4eBremsstrahlung, G4hIonisation: improved initialisation.
- G4eBremsstrahlungRelModel, G4eBremParametrizedModel: code cosmetics.
- Run clang-tidy, use nullptr, default and auto keywords; removed
unneeded nullptr checks when deleting.
- Replaced getenv() calls for data variables with G4FindDataDir()
in data readers.
- Requires data-set G4EMLOW-8.2.
Utils
- New G4TransportationWithMsc specialised transportation process; added
related flag to G4EmParameters.
- G4EmConfigurator implemented model per region for
G4TransportationWithMsc. Updated interfaces.
- G4EmTableType: added third peak energy in the data structure needed for
Bremsstrahlung.
- G4VEnergyLossProcess: fill data structure for Bremsstrahlung type of
cross-section only in the master thread; do not repeat it in each thread;
removed ineffective cache from run time computation of cross-section.
- G4EmParameters, G4EmParametersMessenger: added extra Boolean flag for
sampling of photoeffect below K-shell, which was introduced in ATLAS.
- G4EmParametersMessenger: improved instantiation order of UI directories;
directories are created only in the master thread.
Restored forgotten UI command to set number of bins per decade.
- G4EmModelManager: updated interface to Initialise() method;
removed obsolete method Update().
- G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering: use updated
method of G4EmModelManager.
- G4EmParametersMessenger: restored UI command
/process/em/integral.
- G4VEmProcess: updated methods to access cross-section at run time;
implemented new virtual method GetCrossSection(); removed unused
methods.
- G4EmProcessSubType: added extra types for muon pair production by muons
and dark particles Bremsstrahlung.
- G4EmCalculator: use updated method from G4VEmProcess.
Updated computation of ion dEdx. Addressing problem report
#2495.
Added extra flag applySmoothing to enable/disable smoothing
algorithms to connect low-energy and high energy models; code clean-up.
Fixed variable shadowing.
- G4LossTableManager: fixed selection of energy loss process used by
G4EmCalculator.
- G4EmUtility: a new utility class.
- G4VMultipleScattering: updated arguments for AddEmModel(..),
SetEmModel(..), and EmModel(..) methods from G4VEmModel* to
G4VMscModel*. Removed two virtual calls.
- G4VMscModel: added Boolean flag useSpline and setter to
allow choosing Spline for transport cross-section.
- G4LowEnergyEmProcessSubType: added sub-type ID (66) for DNAScavenger
process.
- G4EmTableUtil: new utility to perform common computations at
initialisation.
- G4VEmModel, G4EmCalculator, G4EmConfigurator: use G4EmUtility.
- G4VEmModel, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering
and G4LossTableManager: use new utiity methods; updated sampling of
random elements in compounds and random isotopes; code cleanup.
- G4EmLowEParameters: change default photon database to EPICS2017.
- G4VEmProcess, G4VEnergyLossProcess: for integral method, use master
thread cross-section type and pointers directly; simplifying
initialisation.
- G4EmParameters: update flag to tri-state for enabling it.
Added extra parameter: type of fluctuation model.
- G4EmFluoDirectory: added new enumerator.
- G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger:
introduced directory for the fluorescence data as a parameter, added
new UI command, improved information printout.
- G4EmFluoDirectory: added new enumerator.
- G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger:
introduced directory for the fluorescence data as a parameter;
added new UI command; improved information printout.
- G4EmParametersMessenger: added extra UI command to define fluctuations
model.
- G4VEnergyLossProcess: moved out common computations to G4EmTableUtil;
use G4EmDataHandler and removed unused headers/methods. Fixed trivial
Coverity warnings. For ions, compute effective charge pre-step and
set this value to the model of energy loss fluctuations.
- G4VEnergyLossProcess, G4EmDataHandler: improved StorePhysicsTable(..)
method and debug printouts.
- Code cleanup with clang-tidy: use default constructors; nullptr,
auto and using keywords.
Xrays
- G4VXTRenergyLoss: fixed bug in the angle range for fMaxThetaTR.
- Code cleanup with clang-tidy: use default constructors; nullptr
and auto keywords.
Error Propagation
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Event
- Added call to G4GlobalFastSimulationManager::Flush() method in the event
loop.
- Canonicalise implementations of custom new() and delete() operators that
use G4Allocator.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Externals
- Rationalising externals builds to decouple them from the core
module/category definitions.
- CLHEP:
- Updated to CLHEP version 2.4.6.2.
- Resolved gcc-12 warnings in Evaluator source.
- Fixed inconsistencies in Evaluator internal set of units.
- Add cstdint header where uint32_t and
uint64_t are used.
- Applied patch for building on MinGW.
Based on GitHub PR#51.
- Expat:
- Updated source and build scripts to expat-2.4.9 sources from upstream.
- G4tools:
- Updated to version 6.1.0
- Fixed compilation warnings on Intel compiler and Coverity defects.
- Use thread-safe version of gl2ps-1.4.2.
In gl2psPrintPostScriptPixmap(): pass greyscale, nbit in arguments
to avoid a dead code issue; in gl2psPDFgroupListInit(), fixed issue
for uninitialized pointer read; removed commented out code.
- sg/text: corrections in update_sg() due to copy-paste error.
- Moved g4tools code externals from tools to toolx
module. Concerns code related to Qt, Windows, X11, Xt, OpenGL, hdf5,
expat, mpi, zlib.
- In toolx/X11/base_session, check in show_window() that the window is
not already mapped.
- Fixed compilation warnings on Intel compilers.
- Applied patch for building on MinGW.
Based on GitHub PR#51.
- PTL:
- Updated PTL to version v2.3.3.
- New/improved support for initialization and finalization routines
in ThreadPool.
- Threading: fix in GetNumberOfPhysicalCpus(), to never return zero.
- Fixed verbose message to cerr to be protected within verbosity level.
- Fixes for C++20 compilation warnings and updates to build scripts.
- Removed outdated TiMemory implementation.
- Make copy explicit in range loop.
- General code cleanup/tidy.
- Minor fixes for macOS/Clang and use as a subproject.
- Updated CMake install directory for PTL to match recent changes
in default install directories in Geant4.
- Use any existing value of PTL_SANITIZER_TYPE to set the cache value
to prevent override.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Coverity fixes.
- ZLIB:
- Updated source to zlib-1.2.12 sources from upstream, retaining prior
Geant4 patches.
- Suppressed deprecated-non-prototype warnings for compilers that check
this.
- Applied patch for Zlib, to address Valgrind warnings.
Based on
GitHub PR#43.
G3toG4
- Replaced sprintf with std::to_string to address macOS 13 deprecation
warnings.
- Fixed compilation warnings on Intel/icc compiler for deprecated conversion
of string literal to char* in G3EleTable.
- Fixed compilation warning on Intel/icx compiler for variable set
but not used in clparse source code.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
General Processes
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Biasing
- Fixed defects reported by Coverity in G4BOptnLeadingParticle, to use
auto&.
- Fixed compilation warning on Intel/icx compiler for variable set but not
used in G4GeometrySampler.
- Cuts
- G4ProductionCuts: removed unnecessary thread-local variables; code clean-up
and simplified.
- Management
- G4VDiscreteProcess: added virtual method GetCrossSection()
needed for integral approach both in hadronics and EM modules.
Added virtual method MinPrimaryEnergy(..).
- G4VRestDiscreteProcess, G4VRestProcess, G4VRestContinuesDiscreteProcess:
added protection against arithmetic operations with DBL_MAX.
Addressing problem report
#2452.
- G4VProcess: introduced new virtual method GetCreatorProcess().
- Fixed compilation warnings on Intel/icx compiler for variable set
but not used in G4ProcessTableMessenger.
- Optical
- G4OpBoundaryProcess: calculating reflection/refraction from thin film
coating.
Issuing warning when step size is slightly larger than geometry
tolerance, in which case boundary scattering may be incorrect.
Addressing problem report
#2510.
- Code cleanup with clang-tidy: use default constructors; auto keyword;
remove void function argument; don't check for nullptr
before delete; use operator==() for string comparisons.
Prefer pointer to const G4Material where possible.
- Parameterisation
- Added flush() method to the fast simulation model. This method allows to
process the input buffer of the fast simulation model before the end of an
event. It is used when particles are grouped together before the
processing. The 'flush' is triggered inside the event loop of
G4EventManager, when the stack is empty. The fast simulation model may
add secondaries to the stack, which will then be processed by Geant4.
- G4FastStep: code clean-up; delete copy constructor and operator=().
- G4FastSimHitMaker: making it compatible to command-based scorer.
- Solid State
- In G4LatticeReader, replaced getenv() calls for data variables
with G4FindDataDir()
- Transportation
- Revised implementation of G4CoupledTransportation: now inheriting from
G4Transportation and removed duplicated variables and methods; use new
constant kMassNavigatorId from G4TransportationManager.
- New class G4TransportationParameters to hold looper parameters & others.
This class has to be created in master to hold the values of all looper
parameters for G4Transportation and derived classes.
- G4CoupledTransportation: set flags from G4Transportation: replaced
fFirstStepInAnyVolume with fFirstStepInVolume; replaced
fAnyGeometryLimitedStep with fGeometryLimitedStep;
removed wrong check in case of zero steps.
- G4Transportation: removed problem check in case of zero steps; set step
status on volume boundary. Removed non-working check for any field.
- Moved G4UserSpecialCuts to physics_lists/constructors/limiters
module.
- Removed useless const_cast of G4VSensitiveDetector.
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used.
Geometry
- Fixed compilation warnings on Intel-icx compiler for variables set
but not used.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Magnetic Field
- Revised G4FieldManager to ensure that epsilon_min/_max parameters are
less than a 'maximum accepted' accuracy (now=0.02) to ensure robust
behaviour of the integration. Improved their set methods, adding warnings
with corrective behaviour, and a fatal exception in case of values
outside the accepted range. To cope with needs of legacy applications
or existing needs for performance, the value of the 'ceiling' maximum
accepted accuracy can be modified using the new static method
G4FieldManager::SetMaxAcceptedEpsilon(maxAccept, softFail)
but must remain under or equal to a final ceiling currently of
fMaxFinalEpsilon=0.02.
- Introduced G4BorisScheme and G4BorisDriver, that implement the Boris
integration scheme for motion in an electromagnetic field. It is
a 2nd order symplectic integration method, created as part
of GSoC 2022.
- Management
- Get rid of heap allocations in G4BoundingEnvelope.
- G4ReflectedSolid: added GetCubicVolume(), GetSurfaceArea().
- Added headers for directly used classes from
global/HEPGeometry.
- Navigation
- The /geometry/run/test UI command can now check for overlaps in
parallel worlds if /geometry/run/check_parallel is set to
true.
- Improved diagnostic message in G4MultiLevelLocator, now printing the
stored information on trial integration steps in one error case.
Refresh candidate intersection point when needed.
- G4Navigator: minor code improvements in ComputeSafety(), ComputeStep(),
and LocateGlobalPointAndSetup().
- Added constant kMassNavigatorId in G4TransportationManager and
make use of it in G4SafetyHelper.
- Solids (Boolean)
- G4DisplacedSolid: added GetCubicVolume(), GetSurfaceArea().
- G4SubtractionSolid: fixed problem of non-zero volume for null resulting
objects in GetCubicVolume().
- Solids (CSG)
- G4Cons: define private enums within unnamed namespace, to overcome
C++ ODR (One Definition Rule) violation.
- Solids (Specific)
- G4GenericTrap: implemented calculation of volume using analytical
expression in GetCubicVolume(); in GetSurfaceArea(), improved
calculation of the area of lateral faces; removed private function
GetFaceCubicVolume(); private functions GetFaceSurfaceArea(),
GetTwistedFaceSurfaceArea() replaced with private function
GetLateralFaceArea().
- G4Ellipsoid: in LateralSurfaceArea(), enhanced calculation of the
lateral surface area.
- G4VTwistedFaceted, G4TwistedBox, G4TwistedTrd: optimised calculation
of volume and surface area.
- G4VTwistedFaceted: fCubicVolume, fSurfaceArea made protected;
GetCubicVolume() and GetSurfaceArea() no longer inlined and moved to
source.
- G4TwistedTubs: implemented GetSurfaceArea() based on analytical
expressions; added private functions GetLateralArea(),
GetPhiCutArea().
- G4Hype: use analytical expression in GetCubicVolume() and
GetSurfaceArea().
- G4VTwistedFaceted: use numerical evaluation of a single integral to
calculate lateral face surface area.
- G4ExtrudedSolid, G4UExtrudedSolid: added default values for parameters
in the constructor with two z-sections. Added default constructor to
ZSection.
Global
- Define G4lrint as std::lrint; removed unused G4lint and G4rint.
- Imported from tasking module all core interfaces that only depend on
PTL.
- Corrected G4ErrorPropagatorData destructor.
- Additional clang-tidy fixes for header-only code.
- Moved implementation details of G4Exception to source file.
Removed obsolete re-declaration of G4Exception in G4Timer.
- G4FindDataDir: correction for windows runtime, G4MULTITHREADED flag.
Use the environment variable GEANT4_DATA_DIR as top data dir.
- Applied patch for building on MinGW.
Based on GitHub PR#51.
- Fixed compilation warning on Intel-icx compiler for variable set but not
used in G4AnalyticalPolSolver::QuarticRoots().
- Make dataset environment variables optional in CMake builds.
- Removed obsolete CMakeLists.txt script in management module.
Declare HEPGeometry dependencies as INTERFACE as the module is
header-only. Removed dependency on TBB which is not a direct dependency
of the global category.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Updated date of release for 11.1.
Graphical Representations
- HepPolyhedron, G4Polyhedron: added new constructors taking vertices and
faces; added derived classes HepPolyhedronTetMesh, G4PolyhedronTetMesh;
added SetVertex(), SetFacet() functions and made SetReferences() and
InvertFacets() public methods. Implemented JoinCoplanarFacets() function,
move constructor and move assignment operator.
- Implemented faster version of HepPolyhedronTetMesh.
- Revised HepPolyhedronEllipsoid, fixed visibility of edges in case of cut
ellipsoid.
- G4Visible: added "user" data member fInfo from G4VMarker, with
access and operator<<() functions, intended to offer the user/developer
a way of communicating information.
- G4VVisManager: added new virtual function DrawGeometry(), drawing a geometry
tree starting at the specified physical volume; this base class implementation
is empty, i.e., the derived class implementation is not forced.
- Fixed compilation warning on Intel/icx compiler for variable set
but not used in HepPolyhedron::FindNodeNormal().
Fixed minor Coverity defect in operator<<().
- G4VisExtent: in Transform(), use const auto& to avoid copying.
- G4VisAttributes: fixed formatting in operator<<().
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Applied clang-tidy fixes to the code.
Hadronic Processes
- Replaced getenv() calls for data variables with G4FindDataDir() in data
readers.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Updated dependencies in CMake script to address warnings from
consistency check.
- Cross Sections
- G4CrossSectionDataStore, G4NeutronElasticXS, G4NeutronInelasticXS:
added interfaces needed for G4NeutronGeneralProcess.
Implemented new interfaces in G4NeutronCaptureXS.
- G4TauNeutrinoNucleusTotXsc: new cross-section for tau-neutrinos, based on
energy scaled cross-section of muon-neutrinos..
- G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS: code cleanup;
use G4AutoLock.
- G4ParticleInelasticXS: code cleanup; use G4AutoLock.
Fixed cross-section calculation. Addressing problem report
#2498.
- G4VCrossSectionDataSet: added extra interfaces with G4ParticleDefinition
and kinetic energy.
- G4ComponentAntiNuclNuclearXS: fix and extension in methods
GetTotalElementCrossSection() and GetInelasticElementCrossSection();
a bug was causing undefined values for, respectively, the total and
inelastic cross-sections of anti-proton interactions with light target
nuclei (d, H3, He3 and He4); extended to simulation of a light
anti-hypernucleus projectile scattering on a target nucleus.
Fixed Coverity warning, added checks against nullptr pointers.
- G4ComponentGGNuclNuclXsc, G4ComponentGGHadronNuclXsc: extension to
light hyper-nuclei on hydrogen.
- G4CrossSectionDataStore, G4VCrossSectionDataSet: removed unused methods.
- Management
- G4HadronicProcess: implemented integral method.
Make access to target nucleus public needed for neutron general process.
- G4HadXSTypes, G4HadXSHelper: new helper classes.
- G4HadronicProcessType: added fNeutronGeneral.
- G4HadronicProcessStore: extended Dump() method for hyper-triton and
anti_hyper-triton.
- Processes
- G4NeutronGeneralProcess: new combined process; make it work with QBBC
physics-list.
- G4TauNeutrinoNucleusProcess: new process for tau-neutrino hadronic
inelastic physics.
- G4HadronElasticProcess: extended debug printout.
- G4NeutronCaptureProcess: avoid double instantiation of the cross-section.
- Prefer pointer to const G4Material where possible.
- Utilities
- G4Fragment: added IsLongLived flag and Get/Set methods needed
for the de-excitation module; clean-up inline methods.
Fixed computation of binding energy for hypernuclei; added
a new private method to recompute ground state mass, excitation energy
and to check consistency of input; left inlined only simple methods;
added new methods SetZAandMomentum(..) and RecomputeGroundStateMass();
improved comments and warning messages.
- G4Nucleus: corrected method GetN_asInt() for the case of hypernuclei.
- G4HadronicParameters: added flags for switching on/off the integral
approach for hadron elastic and, independently, inelastic processes;
by default, it is enabled for inelastic.
Added flag to enable general neutron process.
Moved G4Threading header to source.
- Added option to G4HadronicParameters to control the diffraction
dissociation for nucleon projectile on target nucleus with baryon
number greater than 10: by default, both projectile and target
diffraction are switched off (but they are both active in the case
of target nucleus with baryon number below or equal to 10; if instead
the flag is set to true, then both projectile and target
diffraction are activated regardless of the target nucleus).
- G4KineticTrack, G4HadSecondary, G4ReactionProduct, G4DecayKineticTracks,
G4DecayStrongResonances: propagate the information on parent resonance.
- G4HadDataHandler: new data class.
- G4NuclearPolarization: fixed Coverity warning.
- Abla
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used in G4AblaDataDefs header.
- Bertini Cascade
- G4NumIntTwoBodyAngDst: corrected incomplete initialization of a vector.
Addressing problem report
#2515.
- G4TwoBodyAngularDist: corrected the charge exchange reaction of pion+ on
neutron producing in the final state pion0 and proton.
Addressing problem report
#2516.
- Fixed wrong comparison between two arrays in findCrossSection(..) for
G4CascadePPChannel, G4CascadeNPChanneland G4CascadeNNChannel.
- Fixed compilation warning on gcc-12.
- Binary Cascade
- G4GeneratorPrecompoundInterface, G4BinaryCascade: propagate the
information on parent resonance (in the ApplyYourself() method, from
G4ReactionProduct to G4HadSecondary; in other methods, from
G4KineticTrack to G4ReactionProduct).
- G4GeneratorPrecompoundInterface: in PropagateNuclNucl() method, in the
case of anti-nucleus projectile, convert also lambdas into anti-lambdas
after the de-excitation (which assumes a projectile nucleus).
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used in G4BinaryCascade.
- De-excitation
- G4Evaporation, G4UnstableFragmentBreakUp: completed fix about production
of unphysical fragments; improved debug printout. Addressing problem report
#2355.
- G4EvaporationChannel, G4Evaporation: added limitation (A < 30)
on decay of unphysical fragments, allowing for removal of light unphysical
states and providing improved isotope production for the spallation
fragments.
- G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
G4VCoulombBarrier, G4CoulombBarrier: use new method from G4Fragment.
- G4VEvaporationChannel, G4EvaporationChannel, G4VEmissionProbability
and G4EvaporationProbability: improved inverse cross-section
parameterisation at threshold.
- G4PhotonEvaporation: fixed situation when excited fragments are created
with excitation energy not corresponding to level energies from
G4LEVELGAMMADATA. Addressing problem report
#2434.
Also fixing event non-reproducibility for the case when radioactive
decay is enabled on top of any physics list.
Simplified handling of floating levels. For floating levels check if
levels with the same energy can be used for sampling transitions;
improved use of mutex; code clean-up.
- G4EvaporationProbability: reduced usage of cache.
- G4ExcitationHandler: use IsLongLived() flag from G4Fragment to decide
if the de-excitation of the fragment should be stopped.
Introduced de-excitation of fragments with lambda inside. Added
protections that prevents potential crashes and large energy
non-conservations in case of hypernuclei and anti-hypernuclei
projectiles. Added extra sanity check for negative value of lambda
inside a fragment.
Note: there are still a few warnings of rejected candidate final-states
with off-shell masses and few GeV energy non-conservations (implying a
resampling of the final-state) in the case of light hypernuclei and
anti-hypernuclei projectiles, that need further investigation.
- G4AtomicTransition: extended upper limit of atomic de-excitation
from Z=100 to Z=104.
- G4FermiCoulombBarrier: new class for Coulomb barrier according to
prescription. Updated G4FermiDecayProbability and G4FermiFragment
accordingly.
- G4VEmissionProbability: limit number of bins for numerical integration
to 50.
- G4VEmissionProbability: updated sampling of the emitted fragment energy
needed. Addressing problem report
#2443.
Fixed sampling of the tail of distributions; added numerical protections.
Stronger limit on accuracy of integrated probability; improved debug
printout.
- G4CoulombBarrier: tuned parameters.
- G4LevelManger, G4NuclLevel: removed verbose printouts; code clean-up.
- G4NuclearLevelData: use G4AutoLock.
- Use G4BestUnit in G4DeexPrecoParameters::StreamInfo().
- G4StatMFChannel: fixes in the solver of the equation of motion of the
multi-fragmentation model.<
- Code cleanup.
- Elastic scattering
- G4AntiNuclElastic: extension of the SampleInvariantT() method for the
simulation of a light anti-hypernucleus projectile elastic scattering
on a target nucleus.
Note: most of the considered light anti-hypernuclei projectiles have
baryon number equal to -4 : it is assumed that their properties are similar
to anti-He4, therefore their elastic scattering is set-up as for anti-He4
elastic nuclear scattering. These properties can be improved in the future
if theoretical estimations will be available.
- Electromagnetic Dissociation
- G4EMDissociation: updated according to G4Fragment modifications.
- Fission
- G4FissLib, G4LFission: use consistent thresholds for relative (10% instead
of 5%) and absolute (350 GeV instead of 250 GeV) energy non-conservation
check.
- INCLXX
- G4INCLXXInterface: introduced a protection against unphysical nuclear
remnants (i.e. unbound systems) and, if this is the case, resample the
collision.
- G4INCLParticle, G4INCLEventInfo, G4INCLNucleus, G4INCLDeltaDecayChannel,
G4INCLXXInterface: set and propagate the information on parent resonance.
- G4INCLPiNElasticChannel: erase the information on parent resonance in
the case of charge exchange.
- G4INCLPiNToDeltaChannel, G4INCLPiNToOmegaChannel, G4INCLPiNToEtaChannel,
G4INCLPiNToMultiPionsChannel, G4INCLNpiToLKpiChannel,
G4INCLNpiToLK2piChannel, G4INCLNpiToNKKbChannel, G4INCLNpiToSK2piChannel,
G4INCLNpiToSKpiChannel, G4INCLNpiToSKChannel, G4INCLNpiToLKChannel,
G4INCLNpiToMissingStrangenessChannel: erase the information on parent
resonance in inelastic channels (where the nucleon and pion initial-state
objects are re-used for the final state).
- Fixed compilation warnings on Intel/icx compiler for variables set
but not used.
- Lend
- Fixed potential use of pointer after free in nf_utilities/nfu_realloc(..)
function.
- Applied patch for building on MinGW.
Based on GitHub PR#51.
- Replaced use of sprintf() with snprintf(), to fix deprecation compilation
warnings on macOS-13 SDK.
- Lepto-nuclear
- G4(A)NuTauMucleusNc(Cc)Models: new final-state models for tau and
anti-tau neutral and charged current neutrino-nucleus interactions.
- G4ElectroVDNuclearModel: added protections against null pointers to gamma
cross-section and material, responsible for rare crashes.
- Particle High Precision
- Removed environment variables G4PHPTEST, G4PHPTEST2 and NeutronHPCapture,
associated getenv() calls and associated debug code, as no longer used and
found to slow down the code significantly.
Addressing problem report
#2501.
- G4ParticleHPContAngularPar: added protection against zero probability
for both discrete and continuous emission.
- G4ParticleHPThermalScatteringNames: updated to use new ThermalScattering
data in G4NDL-4.7.
- Fixed compilation warnings on Intel/icx compiler for variable set
but not used in G4ParticleHPInelasticCompFS and G4ParticleHPFFFissionFS.
- Use auto for iterators in
G4ParticleHPFFFissionFS::GetAFissionFragment().
- Fixed Coverity reports.
- Parton-String
- G4FTFModel: implemented extension of the model to deal with the
annihilation of light anti-hypernuclei.
In methods AdjustNucleonsAlgorithm_beforeSampling() and
ComputeNucleusProperties(), check if the residual is a single nucleon
(or lambda) or a pair of nucleons (or lambdas); also use the absolute
value of the nuclear residual charge to take into account the case of
anti-nuclei projectiles.
- G4FTFAnnihilation: reorganization of Create2QuarkAntiQuarkStrings() and
Create3QuarkAntiQuarkStrings() methods, in order to better handle
unphysical configurations that need to be rejected.
The algorithm has been also optimised by changing the order of the
sampling: light-cone variables are sampled first, then transverse momenta.
The positions of quark and anti-quark in strings have been corrected: this
is expected to improve the kinematical properties of the produced
hadrons.
- G4FTFTunings: new singleton class to allow the possibility to specify
alternative sets of FTF parameters, called "tunes".
Moved into this class some special, internal classes, useful for tuning
of parameters, that were originally in G4FTFParameters.
- G4FTFTuningsMessenger: new messenger class for G4FTFTunings.
- Allow control of diffraction for baryon number greater than 10 in
G4FPFParameters. The option comes from G4HadronicParameters and the
default behaviour remains the same (i.e. off).
Use of the new G4FTFTunings class; instead of having one, single set of
parameters, it has now an array of set of parameters, with each element
corresponding to one specific "tune".
Clean-up of the class by moving to G4FTFTunings some code.
- G4HadronBuilder: added a new argument in constructor, and a new data
member to the class. This is needed to set a special mixing of
pseudo-scalar and vector mesons for s-sbar mesons. Introduced to
describe phi-meson production in proton-proton interactions measured
by NA61/SHINE.
- G4VLongitudinalStringDecay: tuned the probability of pseudo-scalar meson
production, to describe K*0 meson production in proton-proton
interactions according to NA61/SHINE data. Introduced also a new
parameter (probability of pseudo-scalar meson production in s-sbar
mesons) to increase the phi-meson yield in proton-proton interactions.
Fixed a bug in mixing eta_prime and phi mesons in the quark systems
d-dbar, u-ubar and s-sbar.
Brought back the value (0.5) of the mixing between (rho0 and omega)
vector mesons as it was originally before version 10.0. This should
describe better NA61/SHINE experimental data. The change has some effect
on the hadronic showers, giving that the various vector mesons have
different decay rates into neutral pions.
- G4VPartonStringModel: added debugging information on the number of
lambdas for residual projectile hypernuclei.
- G4HadronBuilder, G4VLongitudinalStringDecay, G4LundStringFragmentation,
G4QGSMFragmentation, G4ExcitedStringDecay: in order to describe the
NA61/SHINE data on K*0 and phi mesons production in proton-proton
interactions, different probabilities were introduced for the ratios
between pseudo-scalar and vector meson production. These ratios are the
following: for ordinary mesons from u- and d- quarks, the ratio is 0.5/0.5;
for strange mesons the ratio is 0.4/0.6; for mesons with hidden strangeness
(as for phi), the ratio is 0.3/0.7.
This approach is similar to the one adopted in Pythia8.
It is also assumed that the probabilities for hidden strangeness (0.3/0.7)
apply for mesons with hidden charm and beauty.
- G4LundStringFragmentation: introduced few changes for a special
treatment of the last string decay in the case of ss-q or
ss-qq, ss-sbar sbar last string decay. This improves the
yield of anti-Xi hyperons in proton-proton interactions
according to the NA61/SHINE data.
Moreover, some parameters have been tuned to better describe the
NA61/SHINE data on various particles produced in proton-proton
interactions.
- G4DiffractiveExcitation: improved ExciteParticipants_doChargeExchange()
method: for a projectile meson in the case of quark exchange, a more
correct ratio between pseudo-scalar and vector mesons is included; the
pion after the exchange can transform into pi0, eta, eta', rho0
and omega mesons. This allows to improve the description of leading
particle spectra in meson-nucleon interactions.
- G4DiffractiveSplitableHadron: fixed rare warnings about large energy
non-conservations (which are rejected and require resampling) seen
with FTF when dealing with charm and bottom hadron inelastic nuclear
interactions.
- Fixed compilation warning on Intel/icx compiler for variables set
but not used in G4QGSMSplitableHadron and G4QGSParticipants.
- Pre-equilibrium
- G4PreCompoundModel: in the case of hypernuclei do not perform pre-compound
emission but only equilibrium emission.
- QMD
- Fixed compilation warning on Intel/icx compiler for variable set
but not used in G4QMDMeanField.
- Radioactive Decay
- G4ECDecay: added protection against negative neutrino energy.
Addressing problem report
#2509.
Removed negative neutrino energy warning but keep protection
against negative values. Negative values are due to negative Q values
from ENSDF for only four nuclides.
- G4ECDecay, G4ITDecay: extended upper limit of atomic de-excitation
from Z=100 to Z=104.
- G4RadioactiveDecay: removed SetICM() method, as deprecated for some time
and no longer used. ICM now set exclusively in G4PhotonEvaporation.
Added printout of the flag of atomic relaxation.
- G4RadioactiveDecayMessenger: removed icmCmd corresponding to SetICM()
above.
- Cosmetic changes in G4RadioactiveDecay::StreamInfo().
- Theo_High_Energy
- G4TheoFSGenerator: propagate the information on parent resonance (in
the ApplyYourself() method, from G4ReactionProduct to G4HadSecondary).
Simplified treatment for low-energy inelastic nuclear reactions of
light hypernuclei (needed because Bertini and Binary intra-nuclear
cascade models are not applicable for these projectiles).
Note that for light anti-hypernuclei, FTF works fine down to zero
kinetic energy.
Intercoms
- Applied set of clang-tidy modernize, readability and performance fixes.
- Always expand path argument to ExecuteMacroFile() using FindMacroPath().
Based on GitHub PR#40.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Interfaces
- G4InteractorMessenger: prevent propagation of /gui/* commands
to workers.
- Applied patch for building on MinGW.
Based on GitHub PR#51.
- Fixed compilation warning on Intel compiler for shadowing data.
- Use geant4_module_sources to add optional sources in CMake script.
Added required G4VIS_USE_VTK_QT flag here instead of Vtk
visualization module. Added dependency on Qt5 Widgets to common
sub-module CMake script.
- Fixed compilation warnings on Intel/icc for deprecated conversion of string
literal to char* in G4UIXm.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Materials
- G4Material: added an extra check on number of atoms in method
AddElementByNumberOfAtoms(..). Addressing problem report
#2514.
- G4MaterialPropertyVector, G4OpticalMaterialProperties: organise material
property vectors in increasing order of energy. Modified from
GitHub PR#42.
- G4MaterialPropertiesIndex, G4MaterialPropertiesTable, G4SurfaceProperty:
added parameters to specify optical photon transport through thin film
coating.
- G4AtomicShell: added extra data for Z=101-104.
- G4AtomicShell, G4AtomicShell_XDB_EADL: changed format of internal tables
allowing to see differences in a clearer way.
- Corrected G4UCNMicroRoughnessHelper destructor.
- G4NistMaterialBuilder: fixed bio-medical material descriptions for
G4_ADENINE, G4_GUANINE, G4_CYTOSINE, G4_THYMINE, G4_DEOXYRIBOSE, and
added G4_PHOSPHORIC_ACID.
- Applied set of clang-tidy modernize, readability and performance fixes.
- G4NistManager, G4NistMaterialBuilder, G4NistElementBuilder: use G4AutoLock
for code simplification.
- Replaced getenv() calls for data variables with G4FindDataDir() in
G4IonStoppingData, G4MicroElecMaterialStructure and G4OpticalSurface.
- G4CrystalExtension: fixed Coverity warning and minor clean-up.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Parameterisations
- GFLASH:
- Fixed compilation warning on Intel/icx compiler for variable set
but not used in GFlashShowerModel::ElectronDoIt().
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Particles
- Changed halflife threshold for nuclide creation to be consistent with
lifetimes in nuclear de-excitation code. In G4NuclideTable, changed
threshold_of_halflife from 1000 ns to 1 ns.
- In G4NuclieTable, replaced getenv() calls for data variables with
G4FindDataDir().
- G4NuclideTableMessenger: added command
/particle/manage/nuclide/min_meanlife corresponding to
G4NuclideTable::SetMeanLifeThreshold().
Default minimum mean life is 1.0 ns.
In /particle/nuclideTable/min_halflife changed default minimum
half-life to 0.693 ns.
- Changed half-life threshold for nuclide creation to be consistent with
lifetimes in nuclear de-excitation code; in G4NuclideTable constructor,
change threshold_of_halflife from 1000 ns to
1 ns.
- Use nuclide mean-life instead of half-life in G4NuclideTable in order
to be consistent with ENSDFSTATE data, which uses mean-life. Provided
two new methods, SetMeanLifeThreshold() and GetMeanLifeThreshold() so
that the life-times can be accessed as either half-life or mean-life.
- G4Triton, G4AntiTriton: corrected the lifetime value for triton and
anti_triton: the half-life (12.32 years) was incorrectly used instead of
the mean lifetime (17.774 years) for triton, whereas the anti_triton was
incorrectly treated as stable.
- Removed obsolete and unused G4DynamicParticleFastVector type alias.
- G4HyperNucleiProperties: optimization improvement and minor clean-up.
- Replaced reinterpret_cast with static_cast where
possible.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Fixed compilation warning on Intel/icx compiler for variable set
but never used in G4MuonRadiativeDecayChannelWithSpin.
- Minor code formatting.
Persistency
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- mctruth: added headers for directly used classes from
global/HEPGeometry.
Physics lists
- Updated public/private dependencies for consistency in CMake script
and added missing dependency
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Constructors:
- Replaced getenv() calls for data variables with G4FindDataDir()
in data readers.
- decay
- G4DecayPhysics: added instantiation of singletons for physics.
- Added calls to G4EmBuilder and G4PhysListUtil in order to prevent from
warnings on decays of light hypernuclei, in the case of simplified
custom Physics Lists.
- electromagnetic:
- G4EmModelActivator: fixed mechanism to define PAI model per region.
- In G4EmStandardPhysics_option3, G4EmStandardPhysics_option4,
G4EmPenelopePhysics, G4EmStandardPhysicsSS, and G4EmLivermorePhysics
use G4LinhardSorensenIonModel for GenericIon.
- Adding possibility to enable new G4TransportationWithMsc for
multiple-scattering. Enabled by default in G4EmStandardPhysics_option1.
- G4EmBuilder: enable internal stepping in G4TransportationWithMsc
if requested.
Added G4Lamda, G4AntiLambda and G4PionZero to the minimal EM
particle list to avoid warnings issued due to new hypernuclei.
Added e- and mu- neutrino and anti-neutrino.
Added minimal list of EM standard particles to all DNA
physics variants, to allow enabling of radioactive decay; provides
correct printout of EM processes and models. Addressing problem report
#2412.
- G4EmBuilder, G4EmDNAPhysics: instantiate singletons for physics.
- G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4:
adopt identical configuration for msc, muon, hadron, and ion physics.
- G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4,
G4EmStandardPhysics: selection of the model for energy loss
fluctuation is included in ionisation processes according to the type
defined in G4EmParameters.
- G4EmStandardPhysics, G4EmStandardPhysics_option3,
G4EmStandardPhysics_option4: use G4GammaGeneralProcess by default.
- G4GammaGeneralProcess: implemented new method GetCreatorProcess().
Apply Spline interpolation for tables at low energy (<150 keV)
and at high energy (> 100 MeV).
- G4EmStandardPhysics_option4: use Penelope ionisation model for e-
below 100 keV.
- G4EmBuilder: use check on process sub-type, do not substitute
G4CoupledTransportation with G4TransportationWithMsc.
- G4EmDNABuilder: new utility class, which provides instantiation of
standard and DNA processes/models; this reduces code duplication for
DNA physics, energy intervals for DNA models are defined in one place.
Added option2,3,4,6,8 configurations.
Added extra utility methods to find or to build electron processes.
Introduced constant upper limit of 1 MeV for DNA models;
introduced constant upper limit of 2 MeV for standard
low-energy ionisation; use the same upper limit for DNA excitation
and ionisation.
Enabling combination of DNA and standard physics processes.
- Increased upper limit of DNA proton/ion physics from 100 MeV
to 300 MeV in all DNA constructors.
- Made G4EmDNAPhysics the base class for DNA physics constructors.
Added interface to G4EmDNABuilder.
- G4EmDNABuilder, G4EmDNAPhysicsActivator: make consistent the
configuration of DNA physics on top of standard physics.
- Simplified code in G4EmDNAPhysics_option1, G4EmDNAPhysics_stationary,
G4EmDNAPhysics_option5 and G4EmDNAPhysics_stationary_option4.
- G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: use "fast" option.
- G4EmDNAPhysics_option7, G4EmDNAPhysics_stationary_option6,
G4EmDNAPhysics_option3, G4EmDNAPhysics_stationary_option2: simplified
code.
- Added G4DNABrownianTransportation, SBS and IRT_syn models in
G4EmDNAChemistry_option3.
- Added used headers in chemistry builders.
- gamma_lepto_nuclear:
- G4EmExtraPhysics, G4EmMessenger: added muon to muon pair process;
use C++11 keywords; suppressed broadcasting of UI commands; moved
initialisation class members to the headers.
- G4EmExtraPhysics: introduced tau-neutrino nucleus processes.
- hadron_elastic:
- G4HadronElasticPhysics: use G4HadProcesses utility to build neutron
elastic, which allows to use an option of neutron general process.
Extended nuclear elastic for light hypernuclei and anti-hypernuclei
projectiles.
- hadron_inelastic:
- G4HadronPhysicsFTFP_BERT, G4HadronPhysicsINCLXX: extension to inelastic
nuclear interactions of light hypernuclei (with either FTFP only or
FTFP+INCLXX) and anti-hypernuclei (with only FTFP for all energies).
Notice that the QGSP string model cannot currently handle nuclear
projectiles of any kind.
- G4HadronInelasticQBBC: use G4HadProcesses utility to build neutron
elastic, which allows to use an option of neutron general process.
- limiters:
- G4SpecialCuts: added setting of process type fGeneral and
sub type.
- G4MinEkineCuts: removed setting of process type fUserDefined.
- G4NeutronTrackingCut: use enumerator for neutron general process instead
of hard-coded number. Added check if G4NeutronGeneralProcess is defined to
avoid double instantiation of the same cut.
- Moved G4UserSpecialCuts class from transportation module.
- Fixed defects reported by Coverity in G4GenericBiasingPhysics, to use
auto&.
- Util:
- G4PhysListUtil: added new utility method to access a process via
sub-type, simplified methods to access hadron processes.
Use dynamic_cast instead of static_cast.
In the method InitialiseParameters(), call the singleton
G4FTFTunings::Instance() to allow the setting of a FTF tune via UI commands
at PreInit state. Extended InitialiseParameters() method.
- G4PhysListUtil, G4HadProcesses: added extra methods needed for neutron
general process initialisation. Use enumerator for neutron general process
instead of hard-coded number in G4PhysListUtil.
- Added internal dependencies on hadronic/deexcitation/photon_evaporation,
run and processes/management modules.
Readout
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Run
- Imported implementations of task-based interfaces/implementations from
the tasking module. See History.tasking file for History
of tasking code.
- Added new G4DNAScavenger in PhysicsListHelper for DNA processes.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Tasking
- Retired module. Contents merged in global and run
categories.
Track & Tracking
- General clean-up of all ParticleChange classes: delete copy constructors
and operator=(); removed unused methods; removed tracking cut to 1 eV
implemented in G4ParticleChangeForLoss; make more effective handling of
secondary tracks; substitute G4ParticleChangeForRadDecay with
G4ParticleChangeForDecay; make all derived classes/methods final;
removed commented code and corrected comments; removed duplicated code.
Improved diagnostic for problems with primary track parameters or with
secondary tracks; ensuring kinetic energy to be positive after a step;
improved comments.
- G4SteppingManager: removed G4Exception with JustWarning severity for the case
of no active at rest processes existing. Addressing problem report
#2493.
- In G4ParticleChangeForTransport, simplified UpdateStepForAlongStep(),
assuming that transportation is always the first process.
Apply proposed step length; further simplified UpdateStepForAlongStep()
method, assuming that transportation is always the first process.
- G4ParticleChangeForMSC: substituted virtual initialisation by inline
method. Fixed crash in /tracking/verbose 6.
- Only set step status of fGeomBoundary when on volume boundary.
- In G4SteppingManager, refactor and simplify processing of secondaries;
use new virtual method GetCreatorProcess() when processing secondaries.
Corrected ProcessDefinedStep for AtRest case.
Removed check on cuts and removed dependence of tracking from EM physics;
real implementation of ApplyCut() is done within EM physics classes.
Merged G4SteppingManager translation units.
- G4Track: added methods to get/set information on (short-lived) parent
resonance.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
Visualization
- General
- Removed obsolete gl2ps subcategory and externals
module.
- Fixed compilation warnings for implicit type conversions on
macOS/XCode 14.1.
- Introduced G4warn (temporarly the same as G4cout) as new output stream
for visualization code, and used in place of G4cerr.
- Updated build scripts and internal dependencies.
- Management
- Implemented Twinkling, i.e, the rhythmic variation of brightness of
given touchables: in G4VVisCommand added Twinkle() method; exploit
twinkling in UI commands in G4VisCommandsTouchable and
G4VisCommandsViewer.
- Implemented generic cutaway. Prior to this, cutaways were implemented
only in OpenGL by using OpenGL's clipping plane feature. This still
pertains for OpenGL since it is very fast, but here cutaways are
implemented using Boolean operations in a reasonably robust and
reliable way. Based on the initial motivation and implementation on
the management side from
GitHub PR#53.
- Re-worked and rationalised special mesh rendering utilities.
The idea is that these are "standard" functions that are optional.
They are optimised for OpenGL but they also work fine for ToolsSG and
Qt3D. An attempt to draw a mesh with any other driver will result in a
warning and only the container will be drawn. Other drivers will have to
implement their own AddCompound(...G4Mesh...) function or choose to use
the standard functions or some thereof.
- Take advantage of recent developments in HepPolyhedron for rendering:
conversion of tetrahedra to enclosing polyhedron removing inner surfaces;
conversion of boxes to enclosing polyhedron removing inner surfaces.
Also take advantage of developments in G4PhysicalVolumeModel:
when a mesh has been found, an artificial node is created and added
to the PVPath whose physical volume points to the parameterisation.
- G4VisCommandsViewer: /vis/viewer/centreOn and
centreAndZoomInOn:
only fly and twinkle if 'KernelVisitElapsedTimeSeconds < 0.1'.
Introducing /vis/viewer/resetCameraParameters UI command, resetting
*only* the camera parameters (view direction, etc.).
- G4VSceneHandler: added utility function Draw3DRectMeshAsDots(..); for a
rectangular 3-D mesh, draw as coloured dots, one dot randomly placed in
each visible cell. Tidy Draw3DRectMeshAsDots().
Allow for multiple meshes in a single screen; relevant for special mesh
rendering.
Implemented GetPointInBox() and GetPointInTet() to sample a random point
inside a box and a tetrahedron.
Exploit move operator when creating polyhedra for Special Mesh Rendering.
Numerous improvements to comments and messaging.
- Introducing drawing of parameterised tetrahedral mesh.
G4VSceneHandler::DrawTetMeshAsDots(): default tet mesh drawing.
- Ensure X-geometry string is copied correctly to a new viewer.
- G4VisCommandsCompound: improved command guidance of /vis/open.
- G4VisCommandsViewer: improved command guidance of
/vis/viewer/create.
- G4VisParameters: added new accessors IsWindowLocationHintX/YNegative().
- G4VisCommandsTouchable: augment /vis/touchable/draw, added Boolean
argument: if true, draw the extent (bounding box); Default false.
In /vis/touchable/dump, fix missing dump of vis attributes.
- G4VViewer: added data member and access method for
KernelVisitElapsedTimeSeconds. This is measured in
ProcessView().
- In G4VisExecutive, introducing 'FALLBACK' drivers for TSGQt and VTKQt.
A FALLBACK vis driver is selected if the user chooses a UI session that
is not compatible with the requested driver. For example, if the user
has built Geant4 with Qt, the TSGQt driver will be available and be
the "default" driver, so /vis/open TSG will attempt to open
TSGQt. But if the user has chosen a dumb terminal session, the vis
manager selects TSGX11, for example, instead. Added TOOLSSG_OFFSCREEN.
- Improved messaging for the case that a driver is not found in the
candidate list.
- Changed G4cout to G4warn in those cases where 'verbosity >= warnings'.
- Introduced compound command: /vis/plot
.
This is the first part of a programme to facilitate the drawing of
plots (if any have been registered with the analysis manager) at the
end of a run. At the moment only the ToolsSG vis driver can offer this,
so the vis manager issues appropriate messages.
Later, we hope to introduce something like /vis/reviewPlots,
which will allow the user to view all available plots in sequence.
- G4VisManager: added access method: IsEnabled(). Register the new
commands. In EndOfEvent(), protect view checking with mutex lock
in MT mode, and deal better with the case of scene requesting no kept
events (greatly speeds plotting).
Only print list of available histograms if more than one per category.
GeometryHasChanged() is a method that is called by the run
manager. Sometimes the user chooses to delete the existing geometry
tree and ask the run manager to construct a new detector geometry.
Previously existing vis models of the geometry become invalid and the
vis manager had to pick up the new geometry.
The vis manager removes invalid models from the vis scenes and now adds
the new version of the world back in. Other types of models, trajectory
drawing, for example, if specified in the original scene, are kept in
the new version of the scene.
Implemented G4VisManager::DrawGeometry(), drawing a geometry tree starting
at the specified physical volume.
- G4VisCommandsSceneAdd: new command /vis/scene/add/plotter,
to add G4PlotterModel to end-of-run list.
Adapted /vis/scene/add/volume UI command to new
G4PhysicalVolumesSearchScene.
- G4Scene: redefined IsEmpty().
- G4VisCommandsViewerSet: improved messaging for
/vis/viewer/set/lineWidth; this simply prints a message saying
how *actually* to change line width.
- Introducing /vis/viewer/set/specialMeshRenderingOption
UI command; "dots" draw one dot per mesh point; "surfaces" group mesh
points by colour and material and compute the outer surface or envelope,
removing internal shared faces. So far, only the "dots" option is
implemented for some drivers.
- Introducing /vis/viewer/set/lineWidth UI command, a do-nothing command
that tells how to change line width.
- Implemented /vis/reviewPlots UI command.
- G4VisCommandsSceneAdd: changed the default width of axes added to the
scene with automatic length and width determination.
- G4VisCommandsCompound, G4VisCommandsSceneAdd, G4VisCommandsTouchable,
G4VisCommandsViewer: fixed control of verbosity.
- Modeling
- G4Mesh: augmented available data for 3D rectangular mesh.
Programmed for parameterised tetrahedron mesh.
Simplified algorithm: now finding 1-deep rectangular meshes such as
G4PhantomParameterisation.
A simple parameterisation may only be one level; nested
parameterisations may be 2- or 3-level.
- G4PhysicalVolumeModel: added LocalExtent and GlobalExtent
to method GetAttDefs().
Added modifiers; for AddCompound(mesh), provide an artificial node as
an (optional) hook for anything that might be generated.
Implemented generic cutaway: in G4PhysicalVolumeModel::DescribeSolid(),
simplified clipping, sectioning and cutaway code.
- Migrated G4PhysicalVolumesSearchScene and G4TouchablePropertiesScene
to use fTouchableFullPVPath.
- Retired G4BoundingSphereScene and G4PhysicalVolumeSearchScene.
G4BoundingSphereScene accumulated bounding spheres and often
overestimated the extent of the scene; it is now superseded by
G4BoundingExtentScene. G4BoundingExtentScene deals directly with
extents, which makes it neater and more tightly estimates the overall
extent of the scene.
- G4PhysicalVolumeSearchScene is superseded by
G4PhysicalVolumesSearchScene. G4PhysicalVolumesSearchScene finds all
occurrences of a physical volume and returns a "findings vector".
Removed last ambiguous and misleading argument in the constructor.
- G4PseudoScene: added AddCompound(const G4Mesh&) method; if special mesh
rendering is set, this catches mesh candidates (certain types of
parameterisations) and avoids descending into the parameterisations.
- G4PhysicalVolumeModel: added SetSpecialMeshRendering(true) to avoid
traversing (certain types of) parameterisations (see above).
Eliminated goto statements.
- Allow arrow proportions to be greater than 1/100. Produces more visible
arrows for field visualisation and also obeys the input parameters more
closely.
- FukuiRenderer
- Replaced use of sprintf() with snprintf(), to fix deprecation compilation
warnings on macOS-13 SDK.
- gMocren
- G4GMocrenFileSceneHandler: removed redundant header inclusion.
- OpenGL
- G4OpenGLSceneHandler: in AddCompound(..), use base class utility
G4VSceneHandler::Draw3DRectMeshAsDots(..); for parameterised tetrahedron
mesh, call default G4VSceneHandler::DrawTetMeshAsDots(); added missing
return statement for unimplemented cases; code tidy.
- G4OpenGLStoredViewer, G4OpenGLStoredQtViewer: added check on special
mesh rendering option in CompareForKernelVisit().
- Updated comment about requesting a kernel visit when cutaway mode
changes (noted but not relevant because OGL does its own cutaways).
- Minor tidy: speed cutaway check in G4OpenGLViewer::SetView().
- Retired display list re-use and display list limit.
- Added G4gl2ps, a class frontend to tools/gl2ps intended to
be used by OpenGL and OpenInventor; does not depend directly of OpenGL.
- Have G4OpenGLViewer use the thread safe tools/gl2ps.
- Use StandardSpecialMeshRendering(mesh).
- Fixed compiler warnings in the use of G4OpenGLQtViewer::toggleProjection.
- Replaced use of sprintf() with snprintf(), to fix deprecation compilation
warnings on macOS-13 SDK.
- Fixed compilation warnings on Intel/icc compiler for deprecated conversion
of string literal to char* in G4OpenGLXmConvenienceRoutines and
G4OpenGLXmViewer.
- OpenInventor
- Implemented special mesh rendering.
- Request kernel visit when cutaway mode changes in G4OpenInventorViewer.
- G4OpenInventorQtExaminerViewer: for macOS only, disabled the mouse wheel
event handler to fix the trackpad zoom direction issue.
- G4OpenInventorViewer: removed misleading obsolete comment regarding
kernel visit in the case of a change in vis attribute modifiers.
Added check on special mesh rendering option in CompareForKernelVisit().
- G4OpenInventorQtExaminerViewer: fixed compilation warning on Intel
compiler for shadowing data.
- Have G4OpenGLOpenInventorViewer and SoGL2PSAction using the thread safe
tools/gl2ps.
- Replaced use of sprintf() and vsprintf() with snprintf() and vsnprintf()
respectively, to fix deprecation compilation warnings on macOS-13 SDK.
- Fixed compilation warnings on Intel/icc compiler for deprecated conversion
of string literal to char* in G4OpenInventorQtExaminerViewer.
- Fixed compilation warning on gcc-12.
Qt3D
- G4Qt3DViewer: re-implemented wheelEvent() for perspective projection;
now taking into account the extent of the scene.
Added check on special mesh rendering option in CompareForKernelVisit().
- G4Qt3DSceneHandler:in AddCompound(..), use base class utility
G4VSceneHandler::Draw3DRectMeshAsDots(..).
- Request kernel visit when cutaway mode changes in G4Qt3DViewer.
- G4Qt3DSceneHandler::AddCompound(): for parameterised tetrahedron mesh,
call default G4VSceneHandler::DrawTetMeshAsDots().
- G4Qt3DSceneHandler: updated AddPrimitive(..) to current usage.
Commented out line elimination in AddPrimitive(..), as too expensive for
a large polyhedron; allow the graphics-reps utilities to optimise this.
Use StandardSpecialMeshRendering(mesh).
- Fixed compilation warnings about shadowing.
ToolsSG
- New offscreen sub-driver.
- G4ToolsSGViewer: handle ambient lightning; handling zb_png and zb_jpeg
formats; corrected fSGViewer->set_clear_color().
- Request kernel visit when cutaway mode changes in G4ToolsSGViewer.
- G4ToolsSGViewer: reimplement wheel_rotate() for perspective projection;
now taking into account the extent of the scene.
Currently, the ToolsSG viewer cannot draw trajectories in MT mode, so
in function SwitchToMasterThread() we draw any events that have been
kept by the vis manager. It fixes an issue where plots were being drawn
twice.
- Reactivate G4ToolsSGQtGLES::IsUISessionCompatible(), paves way for
permitted instantiation of multiple TSG drivers.
- Access G4VVisCommand::G4VisManager pointer through static function
GetVisManager() to prevent DLL issues on Windows.
- G4ToolsSGSceneHandler: in AddPrimitive(), define dots as a single pixel;
Use GetMarkerSize() for circles and squares.
In AddCompound(): for parameterised tetrahedron mesh, call default
G4VSceneHandler::DrawTetMeshAsDots().
Adding warning message if plot cannot be found.
In SetPlotterHistograms(), suppressed /control/verbose
messages for /analysis/*/get* commands.
In AddPrimitive(..), comment out common line elimination, as too
expensive for a large polyhedron; allow the graphics-reps utilities to
optimise this. Use StandardSpecialMeshRendering(mesh).
- Changed namespace for g4tools code from "tools" to "toolx" for externals.
Vtk
- Moved setting of G4VIS_USE_VTK_QT flag to interfaces module.
- Replaced reinterpret_cast with static_cast where possible.
Environments
- Removed g4py and zmq builtin environments.
The source and support for these have moved to GitHub under:
Data sets
- New low-energy data set version, G4EMLOW-8.2:
- New files for Nitrogen cross-sections for dna models.
- New files for fluorescence and Auger electron transitions for
heavy elements Z=101-104.
- Added DNA files for the RPWBA models.
- New neutron data files for low energy neutron transport with
thermal cross-sections G4NDL-4.7:
- Updated ThermalScattering component, obtained from thermal
scattering data from JEFF-3.3, and adding the ENDF/BVIII-0 materials
not in JEFF-3.3, coupled to JEFF-3.3 nuclear cross-sections.
Examples
- Updated reference outputs, macros, READMEs and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- Fixed compilation warnings on Intel-icx compiler for set but unused
variables.
- advanced
- Updated to use default MixMax random generator.
- air_shower
- Define all material properties in order of increasing energy.
- amsEcal
- Prefer pointer to const G4Material where possible.
- brachytherapy
- Migration to C++11/14/17 features.
- CaTS
- Fixed compilation warnings on latest gcc compilers.
- ChargeExchangeMC
- CexmcHadronicProcess: disabled integral method, as not applicable to
this example.
- eFLASH_radiotherapy
- New application simulating the beamline and energy spectra based on the
Triode Electron Gun Equipped ElectronFlash Manufactured by Sordina Iort
Technologies S.p.A. available at the Centro Pisano Flash Radiotherapy (CPFR)
at Pisa. The linac is able to provide low-energy electron flash beams and
is currently the first machine installed in Italy capable of reaching
FLASH dose-rate (MGy/s) and extremely high dose per pulse DPP).
- eRosita
- Migrated to use C++17 Standard. General code refactoring.
- Removed obsolete physics classes.
- Updated physics-list with Livermore and Penelope models.
- Replaced getenv() calls for data variables with
G4FindDataDir().
- gammaray_telescope
- Migrated to use C++17 Standard. General code refactoring.
- hadrontherapy
- Prefer pointer to const G4Material where possible.
- human_phantom
- Fixed GDML description of the phantom.
- Code review.
- ICRP110_HumanPhantoms
- Use special mesh rendering.
- Corrected error in reading the first voxels (in x=0, y=0).
- Migration to C++11/14/17 features.
- ICRP145_HumanPhantoms
- New example implementing a ICRP145 human phantom, based on
related ICRP publication.
- iort_therapy
- Simplified calls to SetProductionCut().
- medical_linac
- Replaced sprintf() use with std::to_string(); sprintf() deprecated
on macOS-13, leading to compilation warnings.
- microbeam
- Moved back to original switching field value.
- radioprotection
- Added diamondTelescope detector. Messengers modified accordingly.
- Added python scripts to analyze the spectra files and calculate
microdosimetric Quantities.
- STCyclotron
- Removed no-op lines; simplified calls to SetProductionCut().
- basic
- Applied clang-tidy checks.
- B1
- In vis.mac, commented TSG_OFFSCREEN usage example.
- B3
- Set new analysis file name for the second run in run2.mac to avoid
overwriting the output from the first run.
- Activated merging of n-tuples with score n-tuple writer.
- Added commented setting in run2.mac.
- B4
- Activated merging of n-tuples with score n-tuple writer in B4d.
- extended
- analysis
- Use G4Accummulables for RunAction summary data in AnaEx01 and AnaEx02
to get them merged in MT mode.
- Reordered runs in test macro (run the test run first to get meaningful
output at the end).
- Updated AnaEx01 and AnaEx02 classes in shared with modifications applied
in AnaEx03.
- AnaEx03
- New example demonstrating usage of analysis commands for file
management, in particular writing histograms and n-tuples in a
file multiple times.
- biasing
- Removed redundant code (forward declarations, includes) from GB*
examples.
- common
- Applied new coding guidelines and added tests.
- electromagnetic
- TestEm1
- In PhysicsList::AddRadioactiveDecay(), enable atomic de-excitation.
Addressing problem report
#2494.
- Added three new macros to play with StepFunction(): pRange,
alphaRange, ionRange.
- PhysicsList::AddRadioactiveDecay(): updated lifeTime threshold.
- Updated photoelec.mac macro.
- TestEm3
- Prefer pointer to const G4Material where possible.
- TestEm5
- Allow changing the gun position via UI command.
- Added summary on gamma processes.
- TestEm7
- Make local EM physics the same as EM physics option3 with
G4IonParameterizedModel.
- TestEm9
- Updated all user actions: more correct count of creator processes;
use C++11 keywords; removed not needed headers; moved ScoreNewTrack(..)
from Tracking to Stepping action class.
- Removed verbose data member in PhysListEmStandard, use the
verboseLevel defined in the base class for this purpose.
- TestEm11
- PhysicsList::AddRadioactiveDecay(): updated lifeTime threshold.
- TestEm15
- Added description of UI commands to control G4BetheHeitler5DModel.
- TestEm16
- Minor cleanup in vis.mac and run01.mac to make MT output more
readable.
- TestEm17
- Added new process of muon pair production by muons; extended analysis
and added new histograms.
- errorpropagation
- New examples category and moved existing example (now renamed
errProp) therein.
- eventgenerator
- particleGun
- Updated reference in PrimaryGeneratorAction2.
- pythia/decayer6
- P6DExtDecayerPhysics: make sure the external decayer is set to
G4Decay process only once to avoid potential misleading.
- pythia/py8decayer
- Added ActionInitialization class.
- Updated pythia8_decayer to use ActionInitialization.
Code cleanup to avoid potential misleading.
- exoticphysics
- channeling
- Use single-scattering EM physics instead of Opt4 and disabled Coulomb
scattering.
- monopole
- G4MonopoleTransportation: set step status on volume boundary.
- Removed useless 'const_cast' of G4VSensitiveDetector.
- ucn
- Corrected value of epsMax, to 0.001 in DetectorConstruction.
Also fixed epsMin to be dimensionless.
- field
- field01
- Added Boris integration method as an option.
- In main(), demonstrating how to use G4TransporationParameters to set
looper values for transportation.
- F01FieldSetup: show how to control Epsilon Min/Max.
- field04
- Replaced sprintf() use with std::to_string(); sprintf() deprecated
on macOS-13, leading to compilation warnings.
- Corrected value of epsMax, to 0.001 n DetectorConstruction.
Also fixed epsMin to be dimensionless.
- Fixed compilation warning on gcc-12.
- field05
- Corrected value of epsMax, to 0.001 n DetectorConstruction.
Also fixed epsMin to be dimensionless.
- g3tog4
- Updated common directory.
- hadronic
- FissionFragment
- Replaced sprintf() use with std::to_string(); sprintf() deprecated
on macOS-13, leading to compilation warnings.
- Hadr01
- Added UI commands to enable charmed and bottom hadrons physics and
hypernuclei (and anti-hypernuclei) physics;
added macro files to demonstrate this.
- Hadr03
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
Use G4NuclideTable::SetMeanLifeThreshold(1ns);
use QBBC as the default configuration.
- In Run, added protection for the case when G4NeutronGeneralProcess
is used; in that case it is not currently possible to access
cross-section via G4HadronicProcessStore. Addressing problem report
#2517.
- Use default MixMax engine in main().
- Hadr05
- Prefer pointer to 'const G4Material' where possible.
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
- Hadr06
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
- Hadr07
- TrackingAction: print ions with zero meanLife.
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
- Hadr08
- BiasingOperation: use Bertini cascade instead of pre-compound model,
as not applicable for pion interactions. The Bertini cascade is
applied from 0 to 41 MeV, INCLXX from 40 MeV to
12 GeV.
- Moved run initialisation to macro files.
- Hadr09
- Extended to exercise hypernuclei and anti-hypernuclei inelastic nuclear
interactions.
- NeutronSource
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
- ParticleFluence
- New set of examples implementing different setups showing how to score
particle fluences (Sphere, Concentric Spheres, Layer, Calo).
- medical/DICOM
- Introduced special mesh rendering of DICOM image.
- Replace sprintf with direct G4String use to remove deprecation warnings
on macOS-13.
- medical/dna
- chem4:
- Added macro commands to control chemical molecules and reactions.
- Minor correction for reaction type in macro file beam.in.
- Use thread-local flag in G4VMoleculeCounter.
- chem5:
- Use thread-local flag in G4VMoleculeCounter.
- chem6:
- Adding condition for only one event, to avoid potential FPE crash.
- Added PhysicsListMessenger.
- Added short chemical reaction list.
- Use thread-local flag in G4VMoleculeCounter.
- Added missing headers inclusion for self-consistency.
- Fixed analysis macros to allow running on Window.
- dnaphysics:
- In main(), enable visualisation only in interactive mode;
use G4RunManagerFactory.
- Added UI command to add different standard EM, DNA physics, and
radioactive decay models.
- PhysicsList: added RadioactiveDecayPhysics.
Added possibility to change DNA physics via UI commands.
- icsd:
- PhysicsList: make use of nitrogen material.
- Geometry: propose two geometries, nanodosimeter (N2) and dna (THF).
- jetcounter:
- New example providing a setup for simulation of a typical experiment
with the Jet Counter nanodosimeter. Allows the calculation of the
ionisation cluster size distribution (ICSD) (the number of ionisations
per projectile) in a real sized cylindrical interaction volume (IV) of
the Jet Counter device.
- microyz:
- Added UI commands for TrackerSD radius selection.
- Added missing headers inclusion for self-consistency.
- moleculardna:
- New example showing how to simulate physics, physico-chemistry and
chemistry processes in DNA geometries, for simulating DNA damage.
- scavenger:
- Fixed analysis macros to allow running on Window.
- EmDNAChemistry: added forgotten header.
- Use thread-local flag in G4VMoleculeCounter.
- spower:
- In main(), enable visualisation only in interactive mode;
use G4RunManagerFactory.
- optical
- LXe
- Modified LXeSteppingAction: removed thread-local variable;
use PDG code instead of particle name; added more checks on
pointers; extended printout before fatal exception.
- OpNovice2
- Added new macro complexRindex.mac, using dielectric-metal surface with
the surface having a complex index of refraction.
- Added new histograms to record separately Fresnel reflection, TIR,
absorption, etc.
- Use new histos to plot spike reflection/absorption vs angle on surface
(useful for complex refractive index).
- PrimaryGeneratorMessenger: fixed command /opnovice2/gun/randomDirection.
Based on
GitHub PR#33.
- Added local SteppingVerbose to print velocity with
/tracking/verbose 1.
- New macro coated.mac, and book-keeping code, to show
reflection/refraction from thin film coating.
- SteppingAction: check that group velocity is correct.
Don't include Absorbed or Detected photons in plots for forward-going
particles.
- wls
- Fixed compilation warning on gcc-12.
- parallel
- MPI
- Removed use of obsolete G4DeveloperAPI functions from CMake script.
- Changed namespace for g4tools code from tools::mpi to
toolx::mpi.
- Updated analysis classes for changes in analysis module.
- Fixed exMPI04 example failing in sequential mode when MPI n-tuple
merging is activated.
- parameterisations
- Par04
- Added python training scripts.
- Added model conversion to ONNX and LWTNN to the training script.
- Added updated version of the training code (PEP 8 style guide,
formatting with YAPF, annotation with types, code upgrade to TF2.9,
logic for GPU usage management).
- Added support of LibTorch for inference.
- Fixed warnings and lwtnn macro.
- Changed visualization scripts for fast simulation.
- Added new control histograms.
- Changed extension of macros from .in to .mac.
- radioactivedecay
- Activation
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
- rdecay01
- PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
In constructor, adjust meanLifeTime and halfLifeTime.
Added SetInternalConversionFlag() function.
Moved setup of options to the class constructor; use minimal
list of particles defined in G4EmBuilder; added extended comments
to the code; updated headers according to C++11.
Adjusted meanLifeTime and halfLifeTime.
- Use default MixMax engine in main().
- Fixed compilation warning on gcc-12.
- runAndEvent
- RE02
- Replaced sprintf() with std::ostringstream to fix deprecation
warnings on macOS-13.
- RE07
- Renamed static class member fMasterTrackingManager.
- Applied clang-format to code.
10. Appendix
A1 - Location of Geant4's datasets
Use of environment variables to locate Geant4's datasets at application
runtime is now optional, the following fallback-based search is being used
for backward compatibility with existing setups: