Geant4 10.6 Release Notes
The code and binary libraries for the supported systems are available
through our Source
Code Web page.
We are grateful for the efforts of Geant4 users who have provided
detailed feedback or comprehensive reports of issues.
We thank in particular those who have contributed corrections,
improvements or developments included in this release.
Please refer to the
Geant4
User Documentation for further information about using Geant4.
Contents
- Supported and Tested Platforms
- Supported CLHEP and VecGeom versions
- Items for migration of the user code
- New Developments and Capabilities
- Expected effects on physics and performance
- Known Run-Time Problems and Limitations
- Compilation Warnings
- Geant4 Software License
- Detailed list of changes and fixes
1. Supported and Tested Platforms
Platforms:
- Linux, gcc-4.9.3.
Tested on 64 bit architectures (Intel or AMD) with
CERN CentOS Linux 7 (CC7) (based on CentOS Linux 7).
- MacOSX 10.15 Catalina with llvm/clang-8.0 (Apple LLVM/Clang-11.0)
- Windows-10 with Visual C++ 14.23 (Visual Studio 2019)
More verified and tested configurations (64 bits):
- Linux, gcc-5.4.0/6.3.0/7.3.0/8.2.0/9.2.0, clang-5.0/8.0
- Linux, Intel-icc 19.0
- MacOSX 10.13, 14 with clang-7.0
2. Supported CLHEP and VecGeom version
This release of Geant4 requires and has been verified with
CLHEP, release 2.4.1.3.
Use of a different CLHEP version may cause incorrect simulation results.
NOTE: an internal module of the relevant CLHEP classes is provided and can be
used as alternative to an external CLHEP library installation.
A configuration option allows a Geant4 installation to use the
VecGeom Library
primitives, to replace the original Geant4 solids. VecGeom version
1.1.5 is required when using such configuration.
3. Items for migration of the user code
Listed here is some relevant information on developments included in this
release.
Note that for all users a full re-installation of libraries (or a full
re-compilation) and a re-compilation of user applications is required.
General
- Minimum required version of CMake to build Geant4 is 3.8.
- Pre-processor flags are promoted to fixed #define statements in
a generated header. User code relying on these macros should
include the G4Types.hh header to make them available.
- The preprocessor macros G4UI_USE and G4VIS_USE are removed.
- The Debug build mode no longer enables Floating Point Exceptions.
Please use the new Debug_FPE build mode if your application requires FPE.
- Support for Qt4 UI/Vis is deprecated.
Analysis
- The last two optional arguments of the analysis manager function
SetNtupleMerging() have been removed and these parameters
can be changed only via the dedicated functions:
SetNtupleRowWise(), SetBasketSize() and
SetBasketEntries().
Geometry, Fields and Transportation
- The default integration method for propagation in magnetic fields is
changed, to select between the new interpolation-capable integration
scheme, for shorter steps, and a helix-based scheme which is chosen for
steps larger than 2*pi times the curvature radius at the initial
location.
- Once integration in field require more than a threshold (default 200)
integration substeps within a single physical step, there is a relaxation
of the criteria which breaks the curved trajectory into linear segments
for intersecting with the setup's geometry.
This criteria is governed by the parameter delta chord.
Once the threshold is reached, its value is temporarily doubled.
So subsequent integration substeps are made so that a chord's sagitta is
now less than twice the delta chord.
- Every time the number of iterations reaches a new multiple of 100 (the
increase value), the maximum sagitta distance (delta chord) is again
temporarily doubled for the rest of this tracking step.
- This affects only particles below the 'important' energy threshold when
using G4Transportation only, (currently not G4CoupledTransporation)
which would otherwise be abandoned after a set maximum number of
substeps (default=1000).
- To control the previous behaviour, use the G4PropagatorInField's method
SetIterationsToIncreaseChordDistance() to set the number of
iterations between increase; note that the initial threshold is twice
this value. To restore previous behaviour set it to 500.
- In a multi-threaded application, each thread must change this threshold,
e.g. by calling this method in your G4UserRunAction's
BeginOfRunAction().
- This does not occur if the alternative transportation process
G4CoupledTransportation is used, i.e. when one or more parallel
geometries are created for scoring, event biasing, parallel mass
geometry or other use(s).
- An application which uses an external gravitational field must enable the
use of gravity by calling G4Transportation's static method
EnableGravity(). This change was introduced in order to call
the ConfigureForTrack() method of G4FieldManager only for
charged particles by default. Example field06 in
examples/extended/field illustrates this.
Electromagnetic and optical physics
- The new data sets G4EMLOW-7.9 should be used.
Hadronic physics
- The new data sets G4PhotonEvaporation-5.5,
G4RadioactiveDecay-5.4, G4PARTICLEXS-2.1 and
G4NDL-4.6 should be used.
Data Sets
- This release introduces new data set versions.
Please see the corresponding details in
Section 9 of this document.
- New data set versions: G4EMLOW-7.9, G4RadioactiveDecay-5.4,
G4PhotonEvaporation-5.5, G4PARTICLEXS-2.1, G4NDL-4.6.
- In order to use ParticleHP for charged particles
(protons, deuterons, tritons, He3 and alphas), an optional data
set G4TENDL-1.3.2 is required, and should be downloaded in
addition from the
Geant4 web site.
4. New Developments and Capabilities
General
- Reviewed G4PhysicsVector adding an additional Value() method option to
propagate down the known log-energy value. This helps avoiding log() calls
when log-vector is used.
- Added functionality in G4DynamicParticle to provide log-kinetic energy
value, computed only on demand if its stored value is not up-to-date with
the kinetic energy. Reviewed EM processes to select the target atom by
making use of the already known log-energy value in the log-vector access.
Providing measurable CPU speedup.
- Enhanced UI commands to now return proper return code when they are not
successful.
- Introduced ability to perform leading particle biasing.
Analysis
- Added a new factory function ManagerInstance() in G4Analysis,
which allows to create the analysis manager of the type selected via a
string argument and so to choose the output type at run time.
- Switched the default Root n-tuple merge mode to new column-wise mode
with preserving rows and added a second, optional, argument in the
SetNtupleRowWise() function which can be used to override the
defaults.
Digitization & Hits
- Added G4TScoreNtupleWriter and G4TScoreNtupleWriterMessenger which
implement storing hits collections of G4THitsMap type vith Geant4 analysis
tools, defined in G4VcoreNtupleWriter. Its usage is demonstrated in basic
examples B3 and B4d.
Geometry and Field
- Enabled VecGeom wrapper for G4GenericPolycone, G4EllipticalTube,
G4EllipticalCone and G4Ellipsoid. Requiring VecGeom version 1.1.5.
- Added support for writing out assemblies envelopes in GDML.
- Added hooks for capability to navigate in external geometry with
custom navigation.
- Completed the development of integration driver with 'interpolation'
capability.
It estimates the position, momentum (and potentially other state,
e.g. polarisation) at intermediate values of the integration interval.
During the integration, one or more intervals are used to move the track's
state. For each interval a different instance of the stepper is used.
Subsequent calls for intermediate points (e.g. to locate the intersection
of the curved trajectory with a boundary) use the interpolation capability
using the existing data (stored in the earlier stepping), instead of
re-integration which involves re-evaluating the field and equation of
motion. Note: currently this can be used only with G4DormandPrince745
Runge Kutta integration method.
- Completed new multiplexing integration driver G4BFieldIntegrationDriver
for magnetic fields, that enables mixing between two methods (drivers)
based on the ratio of the proposed step length and the step curvature at
the track's initial position.
One method is selected for shorter steps, and a different method for steps
longer than 2*pi (estimation for uniform field). The default driver
created in G4ChordFinder's constructor and G4FieldManager's
CreateChordFinder() now creates it; it uses the interpolation
driver with the Dormand Prince 5/4th order Runge-Kutta method for short
steps, and for longer steps it uses the G4HelixHeum method which can
integrate over a large number of helical turns in a sufficiently slowly
varying field.
Enabled by default stepping using interpolation in field propagation.
Materials
- Added G4DensityEffectCalculator: new class, providing on fly computation
of the density effect correction using "exact" formulas.
- Added ICRU90 data for ion ionisation.
Electromagnetic physics
- Optimised step limitation in G4UrbanMscModel and modified lateral
displacement sampling.
- New helper class G4NIELCalculator, to compute NIEL in user stepping
action or sensitive detector code.
- Added handling of UI thermalization model control in DNA physics lists.
Hadronic physics
- Use Glauber-Gribov cross-sections for hyperons and anti-hyperons for
both elastic and inelastic hadron-nucleus interactions.
- Extended hadron-nucleon cross-sections to charmed and bottom hadrons
(mesons and baryons). Note: these cross-sections are meant to be used
by Glauber-Gribov charmed and bottom hadron nuclear cross-sections, as
well as by the FTF string model for dealing with charmed and bottom
projectiles; however, the inelastic interactions of charmed and bottom
projectiles are not yet included in reference physics lists.
- Removed tracking cut in hadron-elastic and use numerically safer
computation for very low-energy projectile.
- Use FTFP also for the annihilation at rest of neutral anti-hadrons.
- Added new gamma-nuclear model based on pre-compound de-excitation.
- Added spontaneous fission channel in radioactive-decay.
- High energy extension of the neutrino-electron cross sections,
for both charged-current and neutral-current interactions
(M_W and M_Z propagator factors and Glashow resonance), for all neutrino
and anti-neutrino flavours.
Physics Lists
- Changed transition region between hadronic string and intra-nuclear cascade
models: now it is [3, 6] GeV consistently for all particle types
(nucleons, pions, kaons, hyperons, ions and gammas; for anti-baryons,
instead, FTFP is still used for all energies). Note: this does not affect
the physics lists FTFP_BERT_ATL, NuBeam, ShieldingM, and those based on
INCLXX. Moreover, for the QGS-based physics lists, the transition between
FTFP and QGSP remains unchanged in the region [12, 25] GeV.
- Added (consistently) RadioactiveDecay to all physics lists which use
NeutronHP. Note: this affects the physics lists FTFP_BERT_HP, QGSP_BERT_HP,
FTFP_INCLXX_HP and QGSP_INCLXX_HP, whereas Shielding, LBE, QGSP_BIC_HP and
QGSP_BIC_AllHP had it already.
- A new stopping physics constructor (G4StoppingPhysicsFritiofWithBinaryCascade)
has been introduced, which uses Fritiof (FTF) coupled with Binary cascade
(BIC) for the anti-baryon annihilation at rest. It is used only in the
physics lists FTF_BIC and QGS_BIC.
Visualization and Interfaces
- New set of UI commands and improvements in visualization.
Added new UI commands for view interpolation and centering.
- Introducing cloud drawing style in visualization, using kernel algorithms
for generating points on the surface of volumes, by-passing polyhedral
representations; the solid is being visualised by a polymarker of dots.
Examples
- GB07: new example (in extended/biasing) to demonstrate the usage
of the leading particle biasing functionality, introduced in the generic
biasing package.
- Hadr08: new example (in extended/hadronic) to demonstrate the
possibility of emulating hadronic-model-per-region capability
(not foreseen by the hadronic framework) via the use of generic biasing
with usual, unbiased weights of 1.0.
- Extended GFlash examples set by moving existing gflash example to
gflash1 and added: gflash2 with envelope in parallel world;
gflash3 with SD in parallel world; gflasha with histogramming
of shower profiles.
- dnadamage1: DNA simulation of damage on a chromatin fiber.
- microprox: DNA computation of proximity functions in liquid water.
5. Expected effects on physics and computing performance
Electromagnetic physics
- Expected unchanged response for calorimeter simulations.
- General speedup of electro-magnetic physics by 4-8% depending on the
software platform. Additional speedup if the general gamma process
mode is enabled (disabled by default).
Hadronic physics
- Increased energy response and more compact hadronic showers mostly in the
projectile energy range between 5 and 20 GeV, mainly due to the change
in transition energy between FTFP and 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, particularly
on Windows with Visual Studio, where warnings level has been raised when
building examples.
We do not believe that any of these lead to incorrect run-time behaviour.
8. Geant4 Software License
A Software License applies to the Geant4 code.
Users must accept this license in order to use it. The details and the list of
copyright holders is available at
http://cern.ch/geant4/license
and also in the text file LICENSE distributed with the source code.
9. Detailed list of changes and fixes
These are the main new features/fixes included in this release since the
last patched public release (for more detailed lists of fixes/additions,
please refer to the corresponding History files provided in most packages):
Configuration
- CMake
- Set minimum required CMake version to 3.8 to fully support C++17
on all systems. Addressing problem report
#2044.
- Updated Intel settings to support use of C++17 with Intel 19 when
using CMake-3.8-3.10. Versions from 3.11 fully support Intel 19/C++17.
- Removed obsolete GEANT4_BUILD_MUONIC_ATOMS_IN_USE option
and associated configuration/compiler flags.
- Promoting following pre-processor flags to fixed #defines in a new
header generated by CMake using the chosen build options to
#define/#undef as appropriate: G4USE_STD11, G4MULTITHREADED,
G4_STORE_TRAJECTORY, G4VERBOSE, GEANT4_USE_TIMEMORY.
Promoted VecGeom pre-processor flags to fixed #defines as well.
Ensuring the header is included by primary "global" category headers
so that all categories will pick up the changes transparently.
Removed use of add_definitions of CMAKE_CXX_FLAGS to set these flags
in Geant4 and client scripts.
- Removed G4FPE_DEBUG from build mode "Debug". Added new build mode
"Debug_FPE" same as "Debug" mode but appending -DG4FPE_DEBUG.
- Set OpenGL_GL_PREFERENCE to LEGACY, to prevent warning on
CMake >= 3.10, and keeping existing behaviour.
- Only scope location of test executable when using a generator that
supports multi-config; allows tests to be run with Ninja Generator as
"ninja test".
- Do not switch off CMAKE_CXX_EXTENSIONS in Geant4Config; not required
for client applications. Addresses problem report
#2002.
- Using target_XXX usage requirements to transport header paths and links.
Removed requirement to use complete include_directories chain in Module
sources.cmake files. Retain exported "Geant4_INCLUDE_DIR{S}" variables
in case clients use Root dictionary generation (which does not
understand usage requirements of targets until latest versions).
Removed remaining -D flags set via add_definitions, moving to
target_compile_definitions.
- Namespace exported targets with "Geant4::" to enforce use of targets
and prevent accidental linkage via -lG4name expansion.
- Migrate use of all external packages to use and refind exported targets,
with shim scripts to support CMake versions from 3.8 at build/use time.
- Store build-time locations of used external packages in an optionally
installable CMake script for reuse, if present, by Geant4Config.cmake
in refinding packages.
- Require MSVC 19.20 (Visual Studio 2019) or newer as minimum required
version to build Geant4 on Windows. Needed to support use full C++17
Standard. Default C++ Standard with MSVC is now C++17.
- Removed old genwindef method of generating DLL symbol exports, as
minimum cmake version of 3.8 fully supports direct generation via
target properties.
- Removed GEANT4_FORCE_QT4 option, deprecating Qt4 support. Retain
fallback to finding Qt4, emitting a CMake warning that use of Qt4 is
deprecated.
- Disabled configuration for Wt UI/Vis driver, as no longer supported.
- Updated scripts to support the TiMemory find_package COMPONENTS and
the INTERFACE library generation.
- Fixed logic of setting up components in Geant4Config.cmake.
Addresses problem report
#2139.
- Fixed issue for path with spaces, reported in Users Forum #451.
- Added ELLIPSOID, ELLIPTICALCONE and ELLIPTICALTUBE flags to enable
wrapping of G4Ellipsoid, G4EllipticalCone and G4EllipticalTube with
correspondent VecGeom primitives.
- Updated data-sets versions.
- GNUMake
- Hard-code Qt version through QT_VERSION flag.
Corrected Qt5 setup for Linux-g++ and Linux-clang.
- architecture.gmk: added -DG4GMAKE to CPPFLAGS to identify enabling
of GNUmake builds.
- Fixed default paths for Linux architectures.
- geomconf.gmk: added VecGeom wrappers flags for G4EllipticalTube,
G4EllipticalCone and G4Ellipsoid.
- Fixed compilation warning on gcc-9.2 for liblist.c.
- Added new analysis/factory subdirectory in includes in binmake.gmk;
removed analysis/parameters which does not exist anymore.
- Corrected default path for XM in Darwin targets.
- Force use of C++17 in WIN32 targets.
- interactivity.gmk: added -DQT_NO_DEPRECATED_WARNINGS to Qt compilation
settings, to silence warnings from Qt for use of deprecated features.
Analysis
- Ntuples
- Fixed CSV, XML ntuple file names.
- Added methods for setting ntuple merge mode in G4VAnalysisManager
with a default implementation (issuing a warning if merging is not
available).
- Added fRowWise data member in G4RootNtupleManager to make the
parameter available in MPI.
- Analysis management & plotting
- Enhanced the G4VAnalysisManager interface: added new option for
ntuple merging and updated/added functions for merging:
SetNtupleMerging() - removed rowWise and basketSize optional paremeters;
SetNtupleRowWise() - added parameter 'rowMode' with a default value;
SetBasketSize(), SetBasketEntries() - new methods.
Added functions and UI commands for setting axis log scale for
plotting: Set[H,P][1,2,3][X,Y.Z]AxisIsLog() and analogous getters
New UI commands /analysis/[h,p][1,2,3]/set[X,Y,Z]axisLog true|false.
- Added new factory function ManagerInstance() in G4Analysis, which allows
to create the analysis manager of the type selected via a string
argument.
- Added new analysis sub-category "factory".
- Cleaned-up analysis type definitions: G4Hn*, G4Pn* types moved out
of type specific namespace.
- In G4PlotManager: disabled Paw encoding; this fixes a problem with
unwanted axis labels in Greek.
- Fixed cases of implicit type conversions from size_t to G4int.
- Link directly to FreeType and HDF5 imported targets.
- g4tools
- Updated the g4tools version to g4tools-5.0.5.
- Handle axis label in case of freetype font.
- Root format: restore a "per event/row view" for the ntuple
column-wise in MT and MPI.
- Batch plotting: fixes to avoid labels overlap when having a grid
of plotters.
- MPI: fixed a memory leak.
- Fix for axis labels with log scale.
- Scene graph: have material for interactive plotting.
- Include modifications coming from other usage of inlib/exlib,
for example, in Root, to be able to read TClonesArray.
- Fixed compilation warning from gl2ps showing up on gcc-9.2.
- sg/plotter: added functions set_encoding() and set_encoding_none()
which allow to disable (unwanted) Paw specific encoding.
- Fixed memory leak in mpi_create_basket().
- Fixed Coverity warnings.
- See History_tools for the complete list of modifications.
Digitization & Hits
- Introducing G4ScoringRealWorld, allowing to define command-based scorers
to a logical volume in the mass world.
- Revised G4ScoringQuantiryMessenger and G4ScoringMessenger to better handle
the error cases.
- Added "ntuple" subdirectory for score ntuple writer UI commands.
- Added G4TScoreNtupleWriter and G4TScoreNtupleWriterMessenger
which implements storing hits collections of G4THitsMap type vith
Geant4 analysis tools, define them in G4VcoreNtupleWriter.
The dependency on the analysis category is avoided via template.
- Fixed implicit type conversions from size_t to G4int in digits and hits
classes (collections, vectors, maps).
- Pass G4String by const reference in G4SDStructure and digits/hist
collections base classes.
- G4PSSphereSurfaceFlux: fixed track weight.
Electromagnetic Processes
- DNA:
- Added G4DNAMolecule class.
- Added Kreipl and Meesungnoen amorphous ice models.
- Added new model G4DNAELSEPAElasticModel.
- Updated G4DNAWaterDissociationDisplacer* classes.
- Moved checking of position of track status in
G4ITStepProcessor::SetInitialStep().
- Chemistry: clarified pointer ownership in G4DNAChemistryManager.
- Fixed reaction site issue.
- Fixed case of division by zero of diffusionCoefficient in
G4DNABrownianTransportation::AlongStepGetPhysicalInteractionLength()
for the case of static molecules.
- Enabled G4ItNavigator{1,2} to flag if it encounters new type of
external physical volume (meant for adapting external navigators).
- Fixed cases of implicit type conversions from size_t to G4int.
- Fixed compilation warnings on gcc-9.1. Code cleanup.
- High Energy
- G4GammaConversionToMuons, G4AnnihiToMuPair: added
registration/de-registration mechanism.
- G4GammaConversionToMuons: added initialisation and optional possibility
to use 5D model for the sampling of the final state.
- G4mplIonisationWithDeltaModel, G4mplIonisationModel: fixed dEdx for
electron gas model (beta<0.01). Addressing problem report
#2169.
- Low Energy
- G4LivermorePhotoElectricModel: use std::getenv; slightly speed-up.
- G4IonParametrisedLossModel: use std::getenv; allowed ICRU90 option.
- Use std::getenv() for thread safety.
- Muons
- G4TablesForExtrapolator: create G4LossTableBuilder and destruct at
end of run.
- Standard
- In most models, make use of the new target atom selector that can
reuse the already known log-energy value.
- G4UrbanMscModel, G4WentzelVIModel, G4GoudsmitSaundersonMscModel:
make use of the new base class methods in utils module, utilising
the already known log-energy value, in case of dEdx, range and
transport mean free path log-vector table accesses.
- G4UrbanMscModel: optimised step limitation for 'UseSafetyPlus'
and 'UseDistanceToBoundary'. Minor clean-up of step limit method.
Modified lateral displacement sampling.
- G4ScreeningMottCrossSection, G4KleinNishinaModel, G4SeltzerBergerModel,
G4eSingleCoulombScatteringModel: use element->GetZasInt() interface
in order to reduce number of double->int conversions at run time.
- G4BetheHeitler5DModel: set x,y components in BoostG4LorentzVector
function. Replaced local boost and rotation functions with CLHEP
boost, boostZ, transform. One random generator flatArray() call in
sampling loop. New parameters set for muon (30% speed up), nuclear
threshold calculation. Added gamma conversion to mu+ mu- mode.
- G4eCoulombScatteringModel, G4WentzelOKandVIxSection: cleanup debug
cout and initialisation.
- G4UrbanMscModel, G4GoudsmitSaundersonMscModel, G4WentzelVIModel: use
lambdalimit and facsafety parameters from the base
class G4VMscModel.
- G4SeltzerBergerModel: during initialisation data files upload only data
for elements used in geometry, lazy initialisation of the data is also
available for testing.
- G4SeltzerBergerModel, G4ICRU49NuclearStoppingModel: safer
initialisation in MT mode.
- G4ScreeningMottCrossSection, G4eSingleCoulombScatteringModel: optimized
code and data structure; fixed floating point exception for low energy;
use C++11 patterns.
- G4hCoulombScatteringModel, G4hCoulombScatteringModel: removed unused
headers.
- G4PairProductionRelModel, G4GammaConversion: the high energy model for
e-/e+ pair production has been extended down to threshold (2mc^2)
such that it gives results (both cross-section and final state) identical
to those produced by the low energy (G4BetheHeitlerModel). Since this new
version of the high energy model can describe e-/e+ pair production from
threshold up to PeV (LPM effects are included) the G4BetheHeitlerModel
is now removed from the G4GammaConversion process.
- G4eplusAnnihilation: set secondary weight correctly using bias manager.
- G4ESTARStopping, G4GSMottCorrection, G4GSPWACorrections,
G4GoudsmitSaundersonTable, G4SBBremTable, G4SeltzerBergerModel: minor
cleanup; use of std::getenv() and use of
G4Element::GetZasInt().
- Requires data-set G4EMLOW-7.9.
- Utils
- G4EmElementSelector, G4VEmModel: added extra method to select the
target atom by making use of the already known log-energy value in
the log-vector access.
- G4VEmProcess, G4VEnergyLossProcess and G4VMscModel: added extra
methods to access log-vector tables by propagating the already
known log-energy value.
- G4VMscModel, G4VMultipleScattering: added new method
InitialiseParameters(), make multiple-scattering specific
methods pure virtual.
- G4LossTableManager: added Register/DeRegister() methods and vector
of pointers for G4VProcess classes for X-ray and optical processes.
- G4EmParameters: added polarisation flag; moved implementation of
splitting parameters to source and added check on lock; added
9.99 MeV low limit in the SetMaxEnergy() method,
added thread lock to Dump() method.
- G4EmParameters, G4EmParametersMessenger: splitted classes keeping the
user interface unchanged.
Added new classes for complex EM parameters (G4EmExtraParameters
G4EmExtraParametersMessenger) and new classes for low-energy and
DNA parameters (G4EmLowEParameters, G4EmLowEParametersMessenger).
Added new parameters for multiple-scattering FactorSafety and
LambdaLimit; now users can customise these values, default
values used are the same as in release 10.5.
- G4EmSaturation: do not apply saturation for zero step length, as this
is possible only if a tracking cut is applied.
- G4EmBiasingManager: delete non-tracked particles.
- New helper class G4NIELCalculator, to compute NIEL in user stepping
action or sensitive detector code. User should provide G4VEmModel
objects, which has NIEL model.
- G4LossTableManager: added access and initialisation of
G4NIELCalculator. Use std::getenv() for thread safety.
- G4VEmProcess, G4VEnergyLossProcess, G4VMscModel, G4EmElementSelector:
utilise new optimised LogVectorValue() function from G4PhysicsVector
(for log-vector).
- G4EmElementSelector: new optimised version; adopting linear
interpolation to avoid redundant energy grid related computations;
branches used to handle rare corner cases are eliminated by increased
robustness of the algorithm.
- Removed no longer used members in G4EmElementSelector and G4VEmModel.
- G4LossTableBuilder, G4LossTableManager, G4VEmModel, G4VMscModel,
G4VEmProcess, G4VEnergyLossProcess, G4EmCalculator: allow both
approaches, "General Process" and "Base Materials", work together.
- G4DNAModelSubType: added Kreipl and Meesungnoen amorphous ice models.
G4EmLowEParametersMessenger: added corresponding commands.
- DummyModel: added methods to be consistent with above modifications.
- Fixed Coverity defects.
- Xrays
- G4Cerenkov, G4Scintillation, G4SynchrotronRadiation,
G4VTransitionRadiation: added registration/de-registration mechanism.
Event
- G4SPSEneDistribution: added protection for potential infinite loop.
Addressing problem report
#2177.
- G4SPSPosDistribution: added accessor methods for volume confinement
Addressing GitHub PR #7.
- Fixed implicit type conversions from size_t to G4int in G4TrackStack
and G4TrajectoryContainer. Fixed typos and some code cleanup.
- Make -DG4_USESMARTSTACK a public compile definition of G4event
to propagate it directly to CMake clients.
Externals
- CLHEP:
- Updated to CLHEP version 2.4.1.3.
- MixMaxRng: throw if seed is zero. Use throw instead of exit()
elsewhere.
- Defaulted operator=() also for BasicVector3D andPlan3D; fixing
deprecation warnings on gcc-9.1. Fixed shadowing compilation
warnings in Transform3D as reported on gcc-9.1.
- Added move constructor and move assignment operators in Vector and
Geometry classes.
- Fixed compilation warnings for cases of implicit type conversions in
Ziggurat classes.
General Processes
- Biasing
- Introducing leading particle biasing.
- G4BOptnChangeCrossSection: added argument to SetBiasedCrossSection()
method, as option to update the interaction length when setting a new
cross-section value.
- Fixed cases of implicit type conversions from size_t to G4int.
- Cuts
- Added protection against premature call to G4ProductionCutsTable.
- Fixed cases of implicit type conversions from size_t to G4int.
- Decay
- G4Decay: extended printout for G4Exception DECAY101 and DECAY102.
- Management
- Made G4ProcessTable a thread-local singleton.
- Fixed cases of implicit type conversions from size_t to G4int.
- Some code cleanup in G4ProcessManager.
- Optical
- G4OpWLS: call SetNumberOfSecondaries() from G4VParticleChange only
once. Addressing problem report
#2200.
- Improved diagnostics printout.
- Code cleanup and formatting, added C++11 keywords.
- Parameterisation
- Register G4FastSimulationManagerProcess with highest ordering in
G4FastSimulationManagerHelper to ensure it is the only process invoked
for a given step (ExclusivelyForced) and no other StronglyForced
processes will be considered.
- Transportation
- The following fixes and improvements affect both G4Transportation and
G4CoupledTransportation:
- Fixed issues related to resetting of looper flag and other state for
field propagation. Involved replacing check for 'Global' field with check for any field; this is
needed to ensure that propagator-in-field state is reset when the
setup inludes only local fields.
Ensure that looping flag is reset (false) when a force is not exerted
in G4CoupledTransportation::AlongStepGetPhysicalInteractionLength();
before it was overwritten afterwards.
Addressing problem report
#2144.
- Optimisation to avoid calling user field manager's
ConfigureForTrack() method, except if particle is charged,
or forces from magnetic moment or gravity are enabled.
- The change above introduces a new 'flag' to enable gravity fields.
The static method EnableGravity() in G4Transportation must be
called if the application uses gravity fields (calling this method
will enable both types of transportation to consider gravity.
- Added flag to optionally silence warning about looping tracks.
The method SetSilenceLooperWarnings() controls it.
Geometry
- Implemented minor C++11 revision and code cleanup.
Use pre-increment wherever possible.
- Fixed minor Coverity defects.
- Divisions
- Return correct value for multiplicity in G4PVDivision and
G4ReplicatedSlice. Addressing problem report
#2168.
- G4PVDivision: added missing implementation of alternative constructor.
- Added new virtual VolumeType() method in Physical Volume types.
- Magnetic field
- G4ChordFinder: changed to use concrete type of Stepper as template
parameter.
- G4InterpolationDriver: revision that uses an instance of the stepper for
each substep. Fixed memory churn; use FSAL property of stepper
(G4DormandPrince745) to avoid one RHS evaluation per integration
substep beyond the first.
Changed from G4VERBOSE to G4FIELD_DEBUG for debug checks.
Now set by default.
- Removed division in G4DormandPrince745::Interpolate4thOrder().
Fix in 5th order interpolation method.
- Reset step estimate in G4MagInt_Driver only at the beginning of a
track.
- Added G4SextupoleMagField, an implementation of a sextupole magnetic
field.
- Completed implementation G4BFieldIntegrationDriver, and fixed issues.
It is now used as the default driver for magnetic fields:
it instantiated in G4FieldManager's CreateChordFinder() method.
Fixed case of floating point exception in and removed statistics
printouts from destructor.
- Added method and attribute to G4VIntegrationDriver
DoesReIntegrate() to inform whether the driver recomputes
segment when AccurateAdvance() is called.
- Management
- G4GeomSplitter: re-enabled use or realloc()/free() and
memcpy(), after adapting G4VPhysicalVolume MT splitted data
to adopt only trivial types for allocation. Re-establishing original
performance in initialisation of the geometry in MT mode.
- Properly initialise splitted data in G4VPhysicalVolume to zero.
- Replaced deprecated std::binary_function calls with lambdas in
G4SmartVoxelStat and G4GeometryManager. Addressing GitHub PR#8.
- Defined move constructor and move assignment operator for
G4AffineTransform.
- G4VSolid: use G4QuickRand() in EstimateCubicVolume()
and EstimateSurfaceArea().
- Changed G4VPhysicalVolume::VolumeType() to be virtual.
Required for addition of External Navigation, which adds an 'external'
physical volume type (for use with an External sub-Navigator).
- Revised G4LogicalVolume to cope with 'external' type of physical
volumes. Use stored volume type in CharacteriseDaughters().
These revisions are independent and backward compatible.
- G4LogicalVolume: added method ChangeDaughtersType() to change
the volume type for CharacterisedDaughters(). It enables the
user to turn over responsibility for navigation in that volume to an
external navigator.
This is for use when one or more daughter volumes are created as an
existing physical volume type (typically G4PVPlacement). It
can also be used to enable to create a (logical) volume which containts
a mixture of existing Geant4 physical volume types and user-created
'external' physical volume type (with type code kExternal):
Geant4 types must be created first, and then ChangeDaughtersType()
must be called to change the mother's attribute to kExternal.
Note: only one type of sub-navigator will be called to find a track's
intersection (or the location of a point) in all daughters of one
mother volume. The sub-navigator chosen will correspond to the volume
type assigned.
- Fixed cases of implicit type conversions from size_t to G4int.
- Use header-based #define/undef symbols to configure VecGeom
replacements; added new configuration headers G4GeomConfig.hh and
G4GeomTypes.hh.
- Navigation
- Improved information in G4Exceptions for particles stuck due to
multiple zero steps in G4Navigator.
- Added hooks for capability to navigate in 'external' geometry:
new base class G4VExternalNavigation for external 'sub'-navigator;
new type of 'External' physical volume, to flag volumes for
external sub-navigator; revisions to G4Navigator to dispatch logical
volumes with daughters which are of 'external' physical-volume type.
An 'external' sub-navigator can be registered with G4Navigator;
'placement' and 'external' physical volumes cannot be currently
mixed inside the same logical volume.
- Added Clone() method in G4Navigator, to allow for 'cloning' the
navigator for G4VIntersectionLocator's 'helper', and potentially for
worker threads.
- G4TransportationManager: enable worker threads to clone G4Navigator if
needed. Keep first navigator created; by convention that will be the
navigator object of the master thread (or the only thread). Other
(worker) threads will clone the first navigator, if it has an external
sub-navigator registered. This ensures that they clone the ability to
navigate in 'external' volume descriptions.
- G4MultiLevelLocator: avoid re-estimating endpoint if driver does not
re-integrate when AccurateAdvance() is called.
- Introduced temporary 'relaxation' (increase) of the value of delta-chord,
in G4PropagatorInField, to enable larger steps, after a threshold number
of iterations (parameter). Added methods to get/set the parameter that
controls after how many integration substeps (in one physics step) the
increase of the chord distance is trigerred.
- Made G4RegularNavigationHelper a G4ThreadLocalSingleton.
- G4PhantomParameterisation: reverted precision checks as in version
10.2.p02. Addressing problem report
#2192.
- Enable UI command /geometry/navigator/push_notify which was
not setup properly. Addressing problem report
#2173.
- Fixed cases of implicit type conversions from size_t to G4int.
- Solids (Boolean)
- G4BooleanSolid: use G4QuickRand() in GetPointOnSurface();
reduced max number of tries to generate a point to 100k.
- Fixed cases of implicit type conversions from size_t to G4int.
- Solids (CSG)
- G4Tubs: Fixed normal from DistanceToOut() to be unit vector, for
abnormal exit points. Added inverse-Rmax and -Rmin as
data members.
- Re-use pre-calculated values instead of using std::cos(), std::sin()
in G4Tubs, G4Cons, G4CutTubs and G4Sphere.
- G4CutTubs: fixed minor Coverity defects for non initialised data in
constructors.
- Added inclusion of new G4GeomTypes.hh header to those headers allowing
VecGeom replacement.
- Solids (Specific)
- Enabled VecGeom wrapper for G4GenericPolycone, G4EllipticalTube,
G4EllipticalCone and G4Ellipsoid. Requiring VecGeom version 1.1.5.
- G4ExtrudedSolid: fixed a bug in DistanceToOut(), affecting extruded
solids defined off-center along the z-axis.
- Fixed generation of polyhedron in G4UExtrudedSolid::CreatePolyhedron().
Addressing visualization part of the problem report
#2171.
- Avoid defining kCarTolerance as 'static const' in G4VFacet.
Addressing problem report
#2172.
- Modified G4PolyconeSide and G4PolyhedraSide to use only trivial types
for MT splitted data in G4PlSideData and G4PhSideData respectively.
- Protected check in G4TwistedTubsSide::DistanceToPlane() within debug
flag.
- Defined move constructor and move assignment operator for
G4TriangularFacet.
- Use GetVertices() instead of GetParametersList() in
the wrapper G4UTet.
- G4TesselatedSolid: fixed case of potentially uninitialized array.
- G4GenericTrap: fixed compilation warnings for variable shadowing
on clang-8.
- Rationalise header inclusions for faceted solids.
- Removed unnecessary forward declaration in G4VFacet header.
- Added inclusion of new G4GeomTypes.hh header to those headers allowing
VecGeom replacement.
- Volumes
- Revised G4PVPlacement::CheckOverlaps() for speed up; improved
diagnostics.
- Added enablers for external navigation capability.
Added new virtual base class G4VExternalPhysicalVolume.
- Added new virtual VolumeType() method in Physical Volume types.
- Fixed registration of G4PVParameterised daughter in mother volume to
enable its true volume type (kParameterised) to be recognised and
registered in mother logical volume.
- Fixed cases of implicit type conversions from size_t to G4int.
Global
- G4PhysicsVector: added additional Value() method option to propagate down
the known log-energy value (can avoid the log call in case of
log-vector). Added optimised LogVectorValue() method, implementing
optimised algorithm for use with log-vectors only. All conditional branches
are eliminated by increased robustness of the algorithm.
- Added protection against idx > entries() in G4PhysicsVector::insertAt()
function. Addressing problem report
#2182.
- G4PhysicsVector, G4PhysicsLogVector, G4PhysicsLinearVector and
G4PhysicsLnVector: changed dBin member to invdBin(=1/dBin)
to get rid of run-time divisions.
- Added G4QuickRand header in HEPRandom sub-module.
- Added 'External' (physical) volume type to geomdefs.hh.
- Added new LOG_EKIN_MIN constant as value taken in case of zero kin-energy
in templates.hh.
- Defined default move constructor and move assignment operator for
G4String and G4DataVector.
- G4SimplexDownhill: fixed minor Coverity defect.
- Fixed implicit type conversions in G4String internal methods.
- Updated settings for TiMemory.
- Use move semantics in G4ConsumeParameters, eliminating warning about
unnecessary copy for some compilers.
- Added G4GlobalConfig.hh generated header to hold global, always required,
pre-processor symbols instead of relying on -D flags for: G4USE_STD11,
G4MULTITHREADED, G4_STORE_TRAJECTORY, G4VERBOSE and GEANT4_USE_TIMEMORY.
Added inclusion of G4GlobalConfig.hh in G4Types.hh, tls.hh and
G4TiMemory.hh so that global and other categories pick up the definitions
transparently. Updated other headers/sources to include G4Types/G4Threading
if they use G4MULTITHREADED.
- Updated date of release for 10.6.
Graphical Representations
- G4VisAttributes: added 'cloud' and methods to force, SetForceCloud(),
and SetForceNumberOfCloudPoints().
- G4VisExtent: added method Transform(const G4Transform3D&).
- Added G4TessellatedSolid to list of solids that may be specially treated;
solids that may access the graphics scene directly through G4VGraphicsScene.
- Removed Get/SetDrawOverlapsFlag() from G4VVisManager.
- HepPolyhedron: fixed defect reported by Coverity.
Added move constructor and move assignment operator.
- BooleanProcessor::createPolyhedron(): Use return
std::move().
Hadronic Processes
- Improved G4HadronicException: aligned behavior with std::exception:
what() returns the exception explanation; moved the member definition
to source file. Added some consts qualifiers.
- Cross sections
- G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS: utilise
the new Value() method from G4PhysicsVector that can make use
of the already known value of the log-kinetic energy in the table of
cross-sections.
- G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS
G4ParticleInelasticXS: code clean-up, assuming usage of the new
data-set G4PARTICLEXSDATA-2.1; removed unused variables and methods;
used only methods with logarithm of energy.
- G4NeutronCaptureXS: restored computation of isotope cross-section as it
was in release 10.5, responsible for degradation of observables on
Tungsten. Upload data only for elements used in geometry.
Code clean-up, use C++11.
- G4ParticleInelasticXS: set verbosity to 0.
- Corrections in G4MuNeutrinoNucleusTotXsc.cc: new name, default
fCcTotRatio and high energy parameter 'bb'.
- G4ComponentAntiNuclNuclearXS: code clean-up and corrected the
description.
- G4ComponentGGHadronNucleusXsc, G4ComponentGGNuclNuclXsc: removed
remaining unused obsolete methods and members; use G4NuclearRadii
utility to compute nuclear radius.
- G4ComponentGGHadronNucleusXsc: fixed correction factor for kaons.
- G4BGGPionElasticXS, G4BGGPionInelasticXS: fixed initialisation for
pi+ and pi- by usage of separate vectors of correction factors;
fixed computation for Hydrogen target. Clean-up pi+ cross-section
below 20 MeV.
- G4BGGPionInelasticXS: fixed low-energy parameterisation (restore
one from Geant4 10.5, where low-energy limits were different for
pi+ and pi-).
- G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS: fixed computation
for Hydrogen target. Fixed initialisation for protons and neutrons
by usage of separate vectors of correction coefficients.
- G4HadronNucleonXsc: added extra method for hyperon cross sections.
Extended to charmed and bottom hadrons (mesons and baryons).
Improved K+p parameterisations (NS and VG); removed obsolete methods.
- G4ParticleInelasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS,
G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS,
G4NucleonNuclearCrossSection, G4ComponentBarNucleonNucleusXsc,
G4UPiNuclearCrossSection: shared internal data vectors between threads;
initialise data once; removed unused parameters; code clean-up;
use C++11 keywords.
- G4VCrossSectionDataSet, G4CrossSectionDataStore,
G4IonProtonCrossSection: use only methods with logarithm of energy.
- G4HadronicException is replaced by G4Exception in all classes with
exceptions.
- G4ParticleInelasticXS, G4NeutronElasticXS, G4NeutronInelasticXS,
G4NeutronCaptureXS: adopted the new G4PhysicsVector::LogVectorValue()
optimised method for log-vectors.
- G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS: use coherent low-energy
threshold of 14 MeV; code clean-up.
- G4BGGPionInelasticXS, G4BGGPionElasticXS: use coherent low-energy limit
of 1 MeV.
- G4HadronNucleonXsc: fixed K+p and K+n parameterisations.
- G4NeutronElasticXS: implemented isotope cross-section.
- G4UPiNuclearCrossSection: optimised interpolation method; moved two
run-time methods to inline; improved low-energy parameterisation.
Below 20 MeV the cross-section is now constant, with BGGPion
cross-section implementing the low-energy part. Code clean-up.
- G4NeutronInelasticXS, G4ParticleInelasticXS, G4NeutronElasticXS: added
special method for tritium and He3 targets (addressing problem report
#2162);
upload data only for elements used in geometry. Code clean-up and use
of C++11 features.
- G4HadronNucleonXsc: new interface to G4ComponentGGHadronNucleonXsc
including s-,c-,b-, particles. Set protection against division by zero
by introducing a minimum energy cutoff (100 keV), below which the
cross-section is considered constant.
- G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS, G4BGGPionInelasticXS,
G4BGGPionElasticXS: clean-up low-energy behaviour.
- G4NeutrinoElectronNcXsc, G4NeutrinoElectronTotXsc: high energy
extension of neutrino-electron cross sections, for both
charged-current and neutral-current interactions (M_W and M_Z
propagator factors and Glashow resonance), for all neutrino and
anti-neutrino flavours.
- G4MuNeutrinoNucleusTotXsc: high energy extension of cc/nc xsc (M_W and
M_Z propagator factors) cc/tot ratio.
- G4MuNeutrinoNucleusTotXsc: added new method
GetElementCrossSection().
- Removed using namespace std and using namespace CLHEP
from G4NeutronElectronElXsc header.
- Use std::getenv() for thread safety.
- Management
- G4HadronicInelasticProcess: removed default GHEISHA cross-sections.
- G4EnergyRangeManager: fixed bug regarding the kinetic energy per
nucleon in the case of anti-nuclei (the bug was of little harm as one
single model, FTFP, is used for all energies in the case of anti-nuclei
projectiles). Streamlined algorithm in the case that only one model
is registered for a process. Implemented C++11 patterns.
Moved operators to be private, removed obsolete method, removed
G4HadronicException; in case of problem return nullptr.
- G4HadronicProcess: removed try/catch pattern from computation of mean
free path; removed final-state random rotation. Do not use try/catch
pattern to choose hadronic interaction; decreased limit on check of
offshell mass from 1.5 MeV to 10 keV.
Removed unused headers. Addressing problem report
#2175.
For particles out of mass shell, the kinetic energy is corrected in
such a way that it is always above 10 keV.
Used std::getenv(), which is recommended for concurrency.
In the method CheckResult(), a short-lived secondary particle
is allowed to have a dynamic mass which differs from the PDG mass
by less than three times the particle's width.
- Models Management:
- G4HadronicInteractionRegistry: fixed typo in comments; removed unused
Boolean flag. Use of C++11 patterns.
- G4HadronicInteraction: fixed definition of model per element and material.
Use of C++11 patterns.
- G4VHighEnergyGenerator: used inheritance from G4HadronicInteraction,
which reduces memory leaks at exit.
- Processes
- G4HadronElasticProcess: removed tracking cut for all particles (charged
particles may be stopped by the tracking cut of ionisation process;
neutrons should be stopped by G4NeutronKiller).
Added protection for zero energy of the projectile particle.
Removed final-state rotation. Removed default GHEISHA cross-sections.
Clean up the sampling of the final state;
improved description and comments; added C++11 keywords;
removed unused local members.
- G4MuNeutrinoNucleusProcess: new process which handles the
G4NuMuNucleusCc(Nc)Model models.
- Created new inelastic processes for heavy hadron-nucleus interactions.
Notes: there is no need to create similar processes for elastic heavy
hadron-nucleus interactions; only hadrons (mesons and baryons) that can
fly macroscopic distances are considered; for the time being, none
of these processes is used in any physics list.
- Stopping
- G4HadronicAbsorptionFritof: extended to neutral anti-hadrons
(anti-neutron, anti-lambda, anti-sigma0 and anti-xi0). This extension
is for completeness and practical convenience, although physically
neutral hadrons should never be completely at rest.
- G4HadronicAbsorptionFritofWithBinaryCascade: new class for handling
anti-proton and anti-neutron annihilation at rest using Fritiof coupled
with Binary cascade, instead of directly with pre-compound (as in the
class G4HadronicAbsorptionFritiof).
- Fixed Coverity defect in G4MuonMinusAtomicCapture.
- Utilities
- G4HadProjectile: clean-up for small kinetic energy of the projectile.
- G4HadFinalState, G4Bessel, G4ReactionProduct, G4GHEKinematicsVector:
replaced fabs() with abs().
- G4HadronicParameters: extended to the recommended (default) energy
transition regions between FTF and cascade models (BERT and/or BIC)
and between strings models (QGS and FTF).
- Models Utilities:
- G4NuclearRadii: new utility class with several parameterisations of
nuclear radius. Added extra utility methods.
- G4GeneralPhaseSpaceDecay: corrected message when throwing an exception
due to center-of-mass energy below threshold.
- Bertini Cascade
- Fixed case for potential FPEs due to un-protected sqrt() in
G4NucleiModel::boundaryTransition()
- G4LightTargetCollider: fixed crash when the gamma energy is below
the deuteron disintegration threshold and improved the
exception handling.
- Binary Cascade
- G4GeneratorPrecompoundInterface: extended to include a simple
coalescence model for nucleus-nucleus interactions in the interface
between string and precompound models. This allows to improve the
nucleon spectra and fast deuterons in ion-ion collisions.
- G4GeneratorPrecompoundInterface: minor fix.
- De-excitation
- G4VEmissionProbability: using simple rejection.
Implemented option to force a residual nucleus to be among known
discrete levels.
- Replaced deprecated std::binary_function calls with lambdas in
G4StatMFMicroCanonical and G4StatMFChannel. Addressing GitHub PR#8.
- G4Evaporation, G4ExcitationHandler, G4LevelReader, G4GammaTransition,
G4VEmissionProbability, G4PhotonEvaporation, G4PolarizationTransition:
changed scheme of verbosity: 0- silence, 1- dump of parameters at
initialisation, 2- debug printout, 3- very detailed debug printout.
Addressing problem report
#2098.
- G4CoulombBarrier: use G4NuclearRadii utility to compute nuclear radius.
- G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
G4FermiDecayProbability: simplified algorithm to sample kinetic energy
of a fragment; minor code clean-up; removed commented lines.
- G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
G4NeutronEvaporationProbability, G4VEvaporationChannel: preparation for
development of the new GEM model; for evaporation, improved selection of
final excitation level for residual fragments.
- G4Evaporation: made coherent use of IsApplicable() from G4FermiBreakUp
and forced simplified decay of exotic fragments with
G4UnstableFragmentBreakUp.
- G4FermiFragmentsPoolVI: implemented new method HasChannels().
Removed unphysical fragments and corresponding data structures.
- G4FermiBreakUpVI: used new method HasChannels() inside IsApplicable().
Cleanup internal data after decay loop and not before.
Use consistently verbosity from de-excitation module; simplified
decay kinematics.
- G4FermiFragment: fixed Coulomb barrier correction computation.
Removed unused Boolean members.
- G4UnstableFragmentBreakUp: changed logic, allowing decay of an exotic
fragment (i.e. a fragment unknown in gamma-level database) and never
release it. Allowed only residual fragments, which are present in the
nuclear level database; those fragments which are not in the database
are forced to decay to fragments from the database.
Improved debug printout.
- G4VEmissionProbability, G4Evaporation, G4UnstableFragmentBreakUp:
consistently use decay channels in all components of the de-excitation
module.
- G4LevelReader: small reduction of memory churn at initialisation.
- G4NuclearLevelData, G4LevelManager, G4GEMChannel, G4GEMProbability,
G4GEMProbabilityVI, G4EvaporationChannel, G4EvaporationProbability:
use consistently pairing correction from G4NuclearLevelData and
verbosity level for debugging.
- G4GEMChannelVI, G4GEMProbabilityVI: new GEM model.
- G4ExcitationHandler: added check on upper limit of excitations; fixed
initialisation sequence, reduced memory churn. Removed second photon
evaporation loop, as all gamma decays are already happening in the
first loop. Use more C++11 constructs. Added a limit on the number of
warnings on high excitation energy of the input fragment. Fixed problem
seen in medical test of fragmentation; provided full de-excitation of
excited light fragments.
- G4DeexPrecoParameters: added upper limit of 30 MeV on the
excitation per nucleon. Added two new parameters.
- G4DeexParametersMessenger: added UI command.
- G4FermiFragmentsPoolVI, G4NuclearLevelData: reduced number of locks at
initialisation.
- Modified internal interfaces to reuse some code for evaporation in the
new GEM evaporation model; used more C++11 patterns.
- G4ExcitationHandler: removed warning on high excitation energy.
- G4ExcitationHandler, G4Evaporation: minor speedup improvement.
- G4NuclearLevelData: added new public interface to enable upload of
nuclear level data before the first event.
- G4PhotonEvaporation: access G4NuclearPolarizationStore only if
correlated gamma decay is enabled. Fixed gamma de-excitation when
initial excitation energy is between ground state and 1st level.
- G4CompetitiveFission, G4FissionBarrier, G4FissionParameters: added
numerical protections; clean-up C++11 keywords; moved headers to
source code.
- Code clean-up and fixed Coverity defects.
- Elastic scattering
- G4HadronElastic: removed tracking cut and use numerically safer
computation for very low-energy projectile. Improved description
and comments; added C++11 keywords.
Make resampling of scattering angle using algorithm from this class
in the case that abs(cos(theta)) > 1 m.
Added protected variable pLocalTmax; added protection for
projectile of zero kinetic energy. Added new parameterisations for
protons and pions. Added a new method for s-,c-,b- particles.
- G4ChargeExchange: updated interfaces; added protection for projectile
of zero kinetic energy.
- G4AntiNuclElastic: do not compute trigonometric functions, which are
not used.
- G4ElasticHadrNucleusHE, G4LEpp, G4LEnp: code clean-up.
- G4ElasticHadrNucleusHE: reduced size of data structure and time for
initialisation by about a factor of 2; general code clean-up;
added further protections. Made all data shared between threads.
General code clean-up.
- Removed "using namespace std" and "using namespace CLHEP" from
G4NeutronElectronElModel header.
- G4HadronElastic: changed warning printout for resampling, by
protecting it by G4VERBOSE. Added limit on number of warning printouts.
Addressing problem report
#2204.
- Lend
- G4LENDCapture::ApplyYourself(): fixed memory leak reported
by Coverity.
- Fixed compilation warnings on gcc-9.1 for missing assignment operator.
- Lepto-nuclear
- Neutrino-nucleus models and precalculated distribuitons as from
new data-set G4PARTICLEXS-2.0.
- Fixed bug in G4NuMuNucelusCc(Nc)Model for kinematics of quasi-elastic
neutrino scattering. Fix for m->e in nucleon 4-vectors,
when nucleon move, iTeMax->100.
Fixed cases of arrays out of boundaries for indices of x-.
- G4NuMuNucleusCcModel: 1p1h momentum sampling according to AS model;
added precompound interface. Implemented off-shell kinematics;
fixes in ApplyYourself(), SampleLVkr() and CoherenPion(); new method
RecoilDeexcitation() to de-excite recoiled nucleus.
- G4NeutrinoNucleusModel: added two methods for excitation energy and
nucleon momentum sampling.
- G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel,
G4NeutrinoElectronCcModel: implemented s-channel in nu-e-cc model.
- Removed using namespace std and using namespace CLHEP
statements from headers.
- Fixes for Coverity warnings and clean-up.
- Particle High Precision
- Fix to deal with incorrect excitation energy when charged particles are
emitted during a neutron reaction. In G4ParticleHPInelasticCompFS,
changed method CompositeApply(), for very small excitation energies,
changed level index from -1 to 0 only if incident and outgoing particles
are the same. Addressing problem report
#1838.
- Fix to deal with un-incremented index of photons in
G4ParticleHPPhotonDist::GetPhotons().
Also cleaned up dead code in that class. Addressing problem report
#2167.
- G4ParticleHPChannelList: fixed bug in the momentum change (it has to
be a normalized 3-vector, but it was not) in the case where NeutronHP
could not find a proper reaction channel.
- G4ParticleHPInelasticCompFS: fix to avoid arbitrary number of target
nuclei being generated and slowing down multi-threaded operation.
Addressing problem report
#2166.
- G4ParticleHPChannel, G4ParticleHPNames: allowed using of an incomplete
data library name if the environment variable G4NEUTRONHP_SKIP_MISSING_ISOTOPES
is set. The missing cross-sections are then set to 0.
- G4ParticleHPContAngularPar: redefined residual mass to consider
incident particles other than neutrons.
- G4ParticleHPInelasticBaseFS: added protection against residual with
Z<0 or A<Z, do not apply adjust_final_state when data is in
MF=6 format (no correlated particle emission).
- Correction to add Q value info to G4ParticleHPNBodyPhaseSpace.
- G4ParticleHPInelasticCompFS: re-build method two_body_reaction() to be
used by incident charged particles (now isotropic emission in the CMS).
Also restrict 'nresp' use below 20 MeV. Added photon emission
when no data are available.
- G4ParticleHPEnAngCorrelation: deleted part of code trying to preserve
baryon number; one has to assume that it is not preserved when using
ENDF-6 data.
- Fixes for crashes detected only when using QGSP_BIC_AllHP physics-list:
in method Sample() of G4ParticleHPContAngularPar, set
protection against unphysical interpolation result; in
G4ParticleHPKallbachMannSyst, added in A() the possibility of
tritium and He3 projectiles, taking in this case (arbitrarily) an
intermediate value between the two already considered cases,
proton-neutron-deuteron and alpha.
- Fixes in G4ParticleHPKallbachMannSyst.
- G4ParticleHPInelasticBaseFS: re-calculate Q value in
BaseApply() in case of no data in library.
- Added protection against maxE<0 in
G4ParticleHPNBodyPhaseSpace::Sample().
- G4ParticleHPNames: removed restriction of using isotopes with Z>92,
therefore removing the environmental variable
AllowForHeavyElements.
- Parton-String
- Extended both Lund and QGS string fragmentation to allow the
possibility to have charm and/or bottom quarks and diquarks in the
strings. As a result of the hadronization of strings having heavy
(c, b) quarks, charmed and bottom hadrons can be produced: only heavy
mesons and baryons that can fly macroscopic distances are considered
as candidate final states.
Note: this extension has required also to extend the list of diquarks
available in Geant4, to add those made with charm and bottom quarks.
- G4FTFParameters: extended FTF configuration interface to include
parameters for pion projectile.
Diffraction minimal mass is now correctly set in GeV (instead of MeV),
for hadron projectiles different from pions, kaons, nucleons and
anti-nucleons, in the method InitForInteraction().
In GetMinMass(), fixed a bug in the computation of the quark
type (which affects the estimated minimal string mass produced in
diffraction); added also protections to make sure that the quark type
is always one of the five considered (u, d, s, c, b).
Absolute (rather than signed) charge for antibaryon is now correctly
taken in the method InitForInteraction().
Fixed creation/destruction/use of Glauber-Gribov cross-section and
fixed a memory leak. Added protection for possible division by zero
due to zero elastic cross-section.
Replaced Chips hadron-nucleon (total and elastic) cross-sections with
the Barashenkov-Glauber-Gribov (BGG) cross-sections for ordinary (i.e.
non-heavy) hadrons (for heavy hadrons, only BGG cross-section are
available and used).
Set parameters of a string kink in the constructor (instead of setting
it at each interaction, causing memory leaks). Notice that string kinks
are currently switched off, so this fix does not affect any physics
result.
- G4FTFModel: minor improvement in the annihilation at rest of light
anti-ions, to avoid the possibility of unphysical production of
target and projectile fragments at rest.
Improvement of the algorithm for string creation.
- Improvements to FTF model for nucleus-nucleus interactions (with
negligible effects for hadron-nucleus).
- G4DiffractiveExcitation: extended range of excited hadron masses,
starting from ground-state values (before, these were starting
from current hadron masses).
- G4ElasticHNScattering: improvement and simplification of the algorithm
of elastic scattering (before the masses of resonances were sampled,
now this is no longer needed). Added a few protections to avoid
rare cases of floating point exceptions.
- Correction in the Lund string fragmentation regarding the search for
final-state in the last string decay. Some code cleanup.
- Switch off the probability of charm and bottom hadron production in
both Lund and QGS string fragmentations (temporary protection, to be
removed after release 10.6).
- Implemented fragmentation functions of heavy (charm and bottom) quarks
and diquarks for the QGS string fragmentation, based on a review of
the available theoretical papers.
- G4LundStringFragmentation, G4QGSMFragmentation: in SplitEandP(),
added a check that the string can be converted to an existing hadron
(else a null momentum is returned).
- The same set of mixing meson parameters (for both scalar and vector
mesons), as defined in the base class G4VLongitudinalStringDecay, are
now used on both FTF and QGS.
- G4VLongitudinalStringDecay: added forgotten initialization of c-cbar
and b-bbar pair production for kinks or gluons.
- G4ExcitedStringDecay: added protection in the sampling of resonance
masses against values below threshold.
- G4VPartonStringModel: re-sample the string formation in the case that
the (either target or projectile) nuclear residual is an unphysical
combination of nucleons (i.e. more than three protons with no neutron,
or more than one neutron with no proton).
- G4Reggeons: added extension for charmed and bottom hadrons following
the ideas introduced to deal with Glauber-Gribov heavy hadron - nucleon
cross-sections.
- Deleted unused classes G4VAnnihilationCrossSection, G4QGSMParameters,
G4AnnihilationCrossSection, G4GammaAnnCrossSection, G4ASCCrossSection,
G4DiffractiveHHScatterer, G4VKinkyStringDecay, G4EventGenerator,
G4InteractionCode and G4VertexCode.
- Fixed Coverity defects.
- Pre-equilibrium
- Added new model based on pre-compound de-excitation
G4LowEGammaNuclearModel.
- G4PreCompoundEmission, G4PreCompoundFragment, G4VPreCompoundFragment:
setup minimum number of points for probability integration to 4;
minor code clean-up.
- G4PreCompoundModel: added check on excitation energy per nucleon
for the initial fragment (30 MeV) and send highly excited
fragment to the de-excitation module. Code clean-up.
- Radioactive Decay
- Added spontaneous fission channel: added new class G4SFDecay to handle
neutron and gamma generation using LLNL model. Read spontaneous fission
data from database, insert it into decay tables and instantiate
G4SFDecay.
- Fixed incorrect branching ratio sum for biased mode, to account for the
addition of N shell EC capture and spontaneous fission.
- G4RadioactiveDecayBase: added StreamInfo() method; updated to new
N shell EC; enable printout of parameters with G4VERBOSE in
BuildPhysicsTable().
- G4RadioactivationMessenger: removed obsolete "fast beta" option,
internal conversion option (not part of biasing) and atomic relaxation
option (not part of biasing). Added analogueMC option which was
forgotten when class was developed.
- G4RadioactiveDecayBaseMessenger: removed obsolete fast beta
option.
- Replaced G4ExceptionDescription in loop with simple string at
exception time inG4RadioactiveDecay, G4RadioactiveDecayBase and
G4Radioactivation.
- In G4RadioactiveDecay::CalculateChainsFromParent() and
G4Radioactivation::CalculateChainsFromParent(), fixed memory
leak reported by Coverity.
- G4RadioactiveDecay, G4RadioactiveDecayBase: make sure decay table maps
are cleanly deleted at the end of program. Added passing of type of
sub-models to secondary particles generated.
- G4RadioactiveDecayBase: in LoadDecayTable() added correction
for code which was accidentally deleted when class was created from
G4RadioactiveDecay. Now giving correct decay branching ratios.
Split off unbiased decay part of DecayIt() and make it protected method
called DecayAnalog(). Move dkmap to protected.
- G4Radioactivation: corrected bug in which AtRestDoIt() and
PostStepDoIt() both incorrectly were calling base class method
DecayIt().
Removed control of verbosity as already in the base class.
Removed G4cerr printouts from G4Radioactivation and
G4RadioactiveDecayBase; replaced with G4cout.
- Added radioactive decay mode with emission of Triton, in
G4RadioctiveDecay, G4RadioctiveDecayBase, and G4Radioactivation.
Intercoms
- The following UI commands now return proper return code when they are
not successful:
/control/execute, loop, foreach, shell, getEnv.
Addressing problem report
#2159.
- Eliminated global-scope enum in G4UItokenNum.
- Fixed cases of implicit type conversions from size_t to G4int.
Interfaces
- Fixed square backets around optional parameters. Addressing problem report
#2132.
- Declared Win32 a GUI, i.e., it's clickable and can have buttons.
- Fixed deprecation compilation warning on Visual Studio 2019 in G4UIWin32.
- Fixed compilation warnings for use of deprecated features reported when
using Qt versions greater than 5.13.
- Only use imported targets for X11, Xm and Wt.
- Removed inclusion of QT_USE_FILE from CMake scripts. All usage is now
through the qtX_ macros and imported targets.
- Added TiMemory support; G4UIExective will grab argc, argv
and customize the output directory for TiMemory.
Materials
- G4DensityEffectCalculator: new class, proposing alternative computation
of the density effect. Added possibility to enable on-the-fly computation of
the density effect correction using "exact" formulas (added
ComputeDensityEffectOnFly() method); as default the old approach
is used. Added to G4IonisParamMat logic for selection of density effect
parameterisation; if > 70% of mass of a compound corresponds to a
particular element, then density effect parameterisation for this element
is used with mass correction. Addressing problem report
#2121.
- G4Material: added free electron density; use G4NistManager to instantiate
element in constructor with effective Z and A. Reordered class members.
- G4SandiaTable, G4IonisParamMat: use const material pointer.
- G4AtomicShells, G4AtomicShells_XDB_EADL: added new method
GetNumberOfFreeElectrons().
- G4NistManager: fixed potential thread safety issue.
- G4IonisParamMat: set mass limit of a single element to 90%.
- G4IonStoppingData: fixed typo in ICRU90 material names.
- G4UCNMicroRoughnessHelper: corrected out-of-date URL for thesis and
paper reference.
- Fixed cases of implicit type conversions from size_t to G4int.
Parameterisations
- GFLASH:
- Added possibility to use sensitive detector from parallel world.
Particles
- G4DynamicParticle: added functionality to provide log-kinetic energy
value, computed only on demand if its stored value is not up-to-date
with the kinetic energy.
Changed SetMass() method, now inlined and allowing setting mass of a
particle to PDG value, which is needed in order to recover secondary
hadrons to the mass shell.
Code cleanup: moved data members to be private; aligned class members
3-vectors, doubles, integer; added method SetPolarisation();
removed unused forward declarations and headers; keep formatting
of the class in one style, removed extra empty lines.
- G4ShortLivedConstructor: extended method ConstructQuarks() to
include diquarks made of charm and/or bottom quarks. The new, heavy diquarks
and anti-diquarks have been defined with basic, rough properties (just
those currently needed by the hadronic string models): future refinements
are expected.
- G4NucleiProperties: added a simplified parameterisation variant with not too
high mass values, to allow decaying fragments produced by some hadronic models
and consisting of only neutrons or protons; also light ion masses computation
is more thread safe after change of the order of mass computation.
Persistency
- ASCII:
- Fixed printout syntax in G4tgrUtils::GetDouble().
- GDML:
- Added support for writing out assemblies envelopes.
- Improved reading of optical properties reader, by allowing reuse of
the same G4MaterialPropertyVector object for identical properties.
- G4GDMLMessenger: fix to avoid UI commands from being broadcasted to
worker threads.
- G4GDMLRead: fix to avoid double-definition of system units.
Physics lists
- Builders:
- Replaced explicit values for the energy transition region with values
from G4HadronicParameters, for nearly all builders.
Note: kept unchanged the transition region between FTFP and BERT only
in four cases: G4HadronPhysicsFTFP_BERT_ATL, G4HadronPhysicsINCLXX,
G4HadronPhysicsNuBeam and "ShieldingM".
- Modified G4NeutronCrossSectionXS as consequence of code cleanup in
lists and removal of G4Dataquestionaire.
- G4HyperonFTFPBuilder: replaced Chips inelastic cross-sections for
hyperons and anti-hyperons with Glauber-Gribov ones; in this way,
elastic and inelastic cross-sections follow consistently the same
approach.
- G4BertiniKaonBuilder, G4BertiniPiKBuilder: replaced Chips inelastic
cross-sections with Glauber-Gribov ones as default kaon cross-sections.
- G4FTFBinaryKaonBuilder, G4QGSBinaryKaonBuilder, G4QGSBinaryPiKBuilder,
G4QGSPPiKBuilder, G4QGSPKaonBuilder: removed kaon cross-sections,
already set by the Bertini's builder, which is always needed.
- Constructors:
- decay
- G4RadioactiveDecayPhysics: replaced G4RadioactiveDecay with
G4RadioactiveDecayBase. This removes the biasing functionality which
is generally not used in the physics lists.
- electromagnetic:
- Added handling of UI thermalization model control in
G4EmDNAPhysics_option1,2,3,4,5,6,7,8.
- G4EmDNAChemistry constructors: updated to follow emdna changes.
- Added sub-excitation processes in G4EmDNAPhysics_option8.
- G4EmLivermorePhysics, G4EmPenelopePhysics,
G4EmStandardPhysics_option4, G4EmStandardPhysics_option3: define
upper energy limit for nuclear stopping via EM parameters.
In all DNA constructors, added ActivateDNA() flag to EM
parameters.
- G4EmLivermorePhysics, G4EmLowEPPhysics, G4EmStandardPhysics_option4:
use SetEmModel() instead of AddEmModel() for
gamma conversion.
Updated settings of the gamma conversion process to provide the
original model combinations when the low energy G4BetheHeitlerModel
model was replaced by the G4BetheHeitler5DModel.
- G4GammaGeneralProcess: fixed "Base Material" use case.
Use the new, optimised log-vector access method.
- G4EmStandardPhysics_option2, G4EmStandardPhysics_option3:
implemented "General Process" option for gamma.
- G4EmStandardPhysics_option4: use 5D model for gamma conversion.
- G4EmStandardPhysicsSS: in the case if Mott correction flag is TRUE,
apply G4eSingleCoulombScatteringModel both for e+ and e-.
- Added G4EmDNAChemistry_option2 constructor. Added new ELSEPA
elastic model for Geant4-DNA in G4EmDNAPhysics_option2.
- G4OpticalPhysics: set boundary process to last.
Addressing problem report
#2113.
- gamma_lepto_nuclear:
- G4EmExtraPhysics: changed transition region from the cascade to
string model 3 - 6 GeV, according to values in
G4HadronicParameters class (before the transition was
3 - 3.5 GeV); added muon-neutrino nucleus interactions;
simplified and clean-up model creation; reduced memory leak at
destruction; removed extra static members and do not use extra
builder classes; use std::getenv().
- G4BertiniElectroNuclearBuilder: use std::getenv() for
thread safety.
- hadron_elastic:
- G4HadronElasticPhysics: use HE elastic model for the full energy
range; use Glauber-Gribov cross-section for hyperons.
- G4HadronHElasticPhysics: use Glauber-Gribov elastic cross-section
for anti-hyperons (instead of Chips).
- G4HadronDElasticPhysics: use Glauber-Gribov cross-section for
hyperons, d, t, He3, and He4.
- G4HadronElasticPhysicsXS, G4IonElasticPhysics: removed commented
code.
- hadron_inelastic:
- Changed the energy transition region between hadronic string and
intranuclear cascade models to 3 - 6 GeV (it was
3 - 12 GeV for pions, kaons and nucleons; it was
2 - 6 GeV for hyperons; left unchanged for anti-baryons
where FTFP is used for all energies), replacing explicit values
with those from G4HadronicParameters, in nearly all constructors.
Note: kept unchanged the transition region between FTFP and BERT
only in four cases: G4HadronPhysicsFTFP_BERT_ATL,
G4HadronPhysicsINCLXX, G4HadronPhysicsNuBeam and "ShieldingM".)
- G4HadronInelasticQBBC: use XS proton inelastic.
- G4HadronPhysicsFTFP_BERT_TRV: removed special treatment of hadronic
inelastic cross-sections of hyperons and anti-hyperons; now it is
the default in G4HyperonFTFPBuilder.
- G4HadronInelasticFTFQGSP_BERT, G4HadronInelasticQBBC: use
Glauber-Gribov inelastic cross-sections instead of Chips ones,
for hyperons and anti-hyperons.
- G4HadronPhysicsFTF_BIC, G4HadronPhysicsFTFP_BERT_HP,
G4HadronPhysicsFTFP_BERT_TRV, G4HadronPhysicsFTFQGSP_BERT,
G4HadronPhysicsQGS_BIC, G4HadronPhysicsQGSP_BERT,
G4HadronPhysicsQGSP_BERT_HP, G4HadronPhysicsQGSP_BIC,
G4HadronPhysicsQGSP_BIC_HP, G4HadronPhysicsQGSP_BIC_AllHP,
G4HadronInelasticQBBC, G4HadronPhysicsINCLXX: removed special
treatment of hadronic inelastic cross-sections of kaons (now
default).
- ions:
- G4IonPhysics, G4IonPhysicsPHP, G4IonQMDPhysics:
changed the transition energy region between FTFP and BIC to
3 - 6 GeV (it was 2 - 4 GeV), replacing explicit
values with those from G4HadronicParameters.
- limiters:
- Fixed cases of implicit type conversions from size_t to G4int.
- stopping:
- Use FTFP also for the annihilation at rest of neutral anti-hadrons:
anti-neutron, anti-lambda, anti-sigma0 and anti-xi0. This extension is
is for completeness and practical convenience, although physically
neutral hadrons should never be completely at rest.
- G4StoppingPhysicsFritiofWithBinaryCascade: new class to handle the
nuclear capture at rest of negatively charged particles.
It is similar to G4StoppingPhysics, with the only difference that
Fritiof coupled with Binary Cascade is used instead of FTFP, for
anti-proton and anti-neutron annihilation at rest.
- Lists:
- Replaced G4RadioactiveDecay with G4RadioactiveDecayBase in LBE list.
- FTF_BIC, QGS_BIC: use the newly introduced stopping physics constructor
G4StoppingPhysicsFritiofWithBinaryCascade (instead of the default
G4StoppingPhysics).
- Shielding: replacing explicit values for the energy transition region
with values from G4HadronicParameters.
- Code clean-up: removed template mechanism (except for
G4GenericPhysicsList, G4PhysListStamper and INCLXXPhysicsListHelper);
deleted copy-constructor and assignment operator; for empty destructors,
use =default; moved include/x.icc to src/x.cc for lists without
template; removed SetCuts() implementation where not
specialised; removed version number from lists; removed
G4DataQuestionaire.
- FTFP_BERT_HP, QGSP_BERT_HP, INCLXXPhysicsListHelper: consistently added
RadioactiveDecay to all physics lists which use NeutronHP; the rationale
is that precision is more valuable than speed for these physics lists.
Note: the other physics lists which use NeutronHP - such as Shielding,
QGSP_BIC_HP, QGSP_BIC_AllHP, and LBE - had already RadioactiveDecay
activated.
- Util:
- Removed G4DataQuestionaire class.
Run
- Introduced use of G4ScoringRealWorld to allow to define command-based
scorers to a logical volume in the mass world.
- G4RunManager, G4RunManagerKernel: addressing cases in which the GDML parser
directly replaces the world volume without changing the user detector
construction.
- Properly initialise luxury level for Ranlux* engines in MT mode.
Addressing problem report
#2184.
- G4RunMessenger: properly enable /run/storeRndmStatToEvent 3
UI command. Addressing problem report
#2198.
- Made G4PhysicsListHelper a thread local singleton. Fixed typo.
- Fixed cases of implicit type conversions from size_t to G4int.
- Updated scripts for TiMemory. Removed InitializeTiMemory() from
G4RunManager.
Track & Tracking
- G4Track: added forward declaration for G4VProcess.
- Fixed implicit type conversions from size_t to G4int.
Visualization
Fixed compilation warnings on gcc-9.1.0.
- Management
- Introducing cloud drawing style. New parameter candidate 'cloud' in
/vis/viewer/set/style.
Cloud drawing uses solid->GetPointOnSurface(),
i.e., uses kernel algorithms and by-passes polyhedral representations.
The solid is represented by a polymarker of dots. The default number of
points is 1000. This can be changed with the command
/vis/viewer/set/numberOfCloudPoints; the minimum number is 100.
Note that OpenGL has a fast algorithm for polymarker.
This allows us to use cloud style both as a choice or as fallback when
the polyhedral representation fails, for example, when BooleanProcessor
fails.
- New and improved commands:
/vis/viewer/centreOn: improved - it does not zoom.
/vis/viewer/centreAndZoomInOn: new.
/vis/touchable/centreOn: improved - it does not zoom.
/vis/touchable/centreAndZoomInOn: new.
/vis/touchable/extentForField and volumeForField: new.
/vis/scene/showExtents: new.
/vis/set/volumeForField: new.
/vis/touchable/showExtent: new.
- Reworked /vis/scene/add/eventID command: just writes a summary
at end of run; except when reviewing, kept events one by one, in which
case it writes run and event no for each event.
- Ensure /vis/drawTree works even if vis is disabled.
- Added copy number parameter to /vis/touchable/findPath.
- Implemented /vis/set/extentForField command: the default is a
null extent, which is to be interpreted by the field model as the whole
extent of the current scene. Otherwise, with this command, one can
limit the extent over which the field is drawn. This would help, for
example, if drawing over the whole scene produced so many arrows or
lines that it clutters the scene. Changed the default spacing:
the parameter nDataPointsPerHalfExtent is changed from 10 to 3,
so as not to clutter the scene. See guidance of
/vis/scene/add/*Field commands for further explanation.
- Provide ability to draw electric fields, and eventually any other
field. Added /vis/scene/add/electricField by analogy to existing
.../magneticField.
- Refactor MagneticFieldModel class with new base to handle all kinds of
vector fields; existing, and new ElectricFieldModel only have to
implement a simple function to get the field vector at a location.
- Include parameterised volumes in overlap checking and visualisation
in G4LogicalVolumeModel (in addition to ordinary placements).
- Add G4TessellatedSolid to list of solids that may be specially treated.
- Introduced /vis/viewer/centreOn and
/vis/touchable/centreOn UI commands.
This allows one to centre the view (zoom in) on a volume.
Reset with /vis/viewer/reset.
- Rationalised view interpolation; encapsulate algorithm into base class
G4VVisCommand, so that commands /vis/viewer/interpolate,
/vis/viewer/centreOn and /vis/touchable/centerOn
now use this.
Might consider use by all view changing commands.
- Clear if scene contains no run duration models (e.g., after geometry
has changed).
- Augment G4VUserVisAction.
- G4VSceneHandler: added namespace scope to MeshScoreMap.
- Fixed bug in /vis/viewer/set/sectionPlane.
- Corrected few typos in printout/comments.
- Improved guidance for /vis/scene/add/volume.
- Minor improvements to visualization manager.
- Fixed Boolean operators to return G4bool.
- Several small improvements and fixes.
- Replaced use of std::experimental::filesystem with
std::filesystem for
WIN32 target in G4VisCommandsViewer. Forcing C++17 default builds on
Windows and allow for porting on Visual Studio 2019.
- Fixed Coverity defects.
- Modeling:
- Introduced G4BoundingExtentScene. This allows one to accumulate extents
using the newly introduced G4VisExtent::Transform() and is a
better way of determining the overall extent of a scene (or of any set
of extents) than by the bounding sphere approach.
- G4VFieldModel, G4ElectricFieldModel, G4MagneticFieldModel: new
abstraction for field models.
- Arrows and field models: introduced further protection.
- G4VModel: introduced GetTransformedExtent() method.
- G4PhysicalVolumeModel: use G4BoundingExtentScene instead of
G4BoundingSphereScene. Fixed bug whereby the local extent was
incorrectly calculated.
- G4CallbackModel: include modeling parameters in passed arguments.
- Fixed bug in /vis/viewer/set/sectionPlane.
- Fixed setLineVisible() in /vis/modeling.
- Added volume count (but commented out printing).
- Fixed cases of implicit type conversions from size_t to G4int.
- OpenGL
- Improved X window opening.
- Removed default font size.
- Force double buffer context for OGLIX.
- Force kernel visit on change of number of cloud points.
- Avoid re-using display lists for markers. They may have their own
position relative to the overall object transformation.
- Extended glFlush scaling to all circumstances.
- Refine DisplayListLimit command guidance and output.
- Rationalise headers inclusion in G4OpenGLQtViewer.
- Fixed compilation warnings for use of deprecated features reported when
using Qt versions greater than 5.13.
- Only link to imported targets for Motif and X11
Removed inclusion of QT_USE_FILE from CMake scripts.
All usage is now through the qtX_ macros and imported targets.
- OpenInventor
- Test number of cloud points for kernel visit.
- Added missing protection on G4VIS_BUILD_OIX_DRIVER.
- Fixed compilation warning from gcc-9.1 in SoCounterAction for setting
of name, apparently not allowed in OpenInventor.
- Corrected few typos in printout/comments.
- Removed inclusion of QT_USE_FILE from CMake scripts.
All usage is now through the qtX_ macros and imported targets.
- Raytracer
- Fixed cases of implicit type conversions from size_t to G4int.
- Link to X11 imported targets when building X11 driver.
- Tree
- Fixed typo in output message.
- XXX
- Force kernel visit on change of number of cloud points.
- Externals
- Updated gl2ps sub-module to version 1.4.0.
- Only link to imported targets for OpenGL; explicitly link to global
modules to use/propagate usage requirements.
Environments
- G4Py:
- Updated interfaces for release 10.6.
- g4pym boost_python library name can be specified in cmake.
Addressing problem report
#2059.
Data sets
- New low-energy data set version, G4EMLOW-7.9:
- Added ELSEPA elastic model for Geant4-DNA.
- New data set version G4PhotonEvaporation-5.5 for nuclear de-excitation
data:
- Fixed z85.a217 file (217At).
- New data set version for radioactive-decay processes,
G4RadioactiveDecay-5.4:
- Updated z2.a8, z3.a8, and z4.a8 and add z4.a9 for 9Li and 8He decays.
- Corrected capture data for I-1125.
- Updated Er-169(z68.a169) according to DDEP.
- Added firstForbidden flags to Tb-161 (z65.a161).
- Added M-shell and N-shell capture to Sc-44 (z21.a44).
- New data files for evaluated cross-sections G4PARTICLEXS-2.1:
- Added data for neutrino.
- Updated cross-sections for low Z targets at low energy.
- Regenerated n, p, d, t, He3, He4, gamma data, providing smoother
cross-section shape.
- New data set version for high-precision neutrons, G4NDL-4.6:
- New neutron cross-sections and final states obtained from JEFF-3.3
(previous were based mainly on ENDF/B-VII.1). Files not coming from
JEFF-3.3 and corresponding to previous G4NDL version are: JENDL_HE,
IsotopeProduction, ThermalScattering, Inelastic/Gammas, Fission/FF.
Information concerning the conversion process of JEFF-3.3 to the
G4NDL format can be found in: E.Mendoza and D.Cano-Ott, IAEA technical
report INDC(NDS)-0758, Vienna, 2018.
Examples
- Updated reference outputs, macros, READMEs and scripts.
- Fixes for Doxygen documentation and coding guidelines.
- Removed presence of G4VIS_USE and G4_UI_USE flags.
- Avoid "using namespace std" in headers.
- advanced
- air_shower
- brachytherapy
- Added G4VScoringMesh:: scope identifier to BrachyUserScoreWriter.
- composite_calorimeter
- Fixed cases of type conversions from size_t to G4int.
- Some code cleanup.
- gammaknife
- Added G4VScoringMesh:: scope identifier to GammaKnifeController.
- hadrontherapy
- Make use of endl consistent with g4cout or std::cout.
- human_phantom
- Fix in geometry of the MIRD phantom.
- nanobeam
- Include G4Types.hh header in main(), before use of
G4MULTITHREADED.
- STCyclotron
- New example modelling a solid target of a cyclotron to study the
production of the radioisotope of interest for proton irradiation.
- underground_physics
- DMXPhysicsList: added Glauber-Gribov cross-section for all elastic
processes. Clean-up both EM, hadronic and radioactive decay.
- basic
- B1
- Use default MixMax random engine.
- B2
- Use default MixMax random engine.
- B3
- Added score ntuple writer.
- Use default MixMax random engine.
- B4
- Added score ntuple writer in B4d.
- Use default MixMax random engine.
- Updated B4d/run2.mac for modified score n-tuple writer UI commands.
- B5
- Use new factory method to create G4AnalysisManager.
- Removed B5Analysis header, no longer needed.
- Fixed cases of type conversions from size_t to G4int in
B5HodoscopeSD.
- extended
- analysis
- Removed B3aScoreWriter, B4dScoreWriter examples. The score ntuple
writer is now provided with Geant4 source and demonstrated in basic
B3 abd B4d examples.
- biasing
- B03
- B03PhysicsList: explicitly define hadronic cross-sections.
Use G4NeutronInelasticXS cross-section.
- GB07
- New example illustrating how to use the leading particle
biasing option.
- ReverseMC01
- Updated for clean-up in analysis typedefs: G4AnaHn types
replaced with G4Hn.
- Fixed cases of type conversions from size_t to G4int.
- electromagnetic
- TestEm0
- PhysicsList: define options, specific for this example after
new EM physics is selected; cleaned-up constructor; Opt0 is
the default; set BuildCSDARange to true.
- TestEm1
- Added G4NIELCalculator and corresponding histograms and
printouts; general clean-up of the code; use default random
number generator.
- PhysicsList: disabled GeneralProcess for EM physics.
Added BuildCSDARange() and set option3 as default.
Cleanup in initialisation.
- TestEm5
- StackinAction: fixed log histograms, which where filled in
a wrong way.
- PhysListEm19DStandard: use 3-gamma annihilation model.
- TestEm7
- Fixed compilation on Windows for unused exception object
in G4NativeScreenedCoulombCrossSection::LoadData().
- TestEm13, TestEm14
- Updated PhysListEmStandard, Livermore and Penelope to return
back to register only post step part of the processes.
- TestEm15
- SteppingAction: do not fill hist #11,#12 when no recoil
returned.
- SteppingAction, PhysList5DStandard: added
G4GammaConversionToMuons process.
- TestEm16
- PhysicsList: use G4DecayPhysics and drop G4AutoDelete.
- Migrated to use default MixMax generator.
- TestEm17
- Updated for clean-up in analysis typedefs: G4AnaHn
types replaced with G4Hn.
- HistoManager: fixed histo title and index; fixed macro files.
- Code clean-up; switch to MixMax random generator.
- eventgenerator
- Removed GunGPS example as obsolete.
- exoticphysics
- monopole
- Use G4Threading::IsMultithreadedApplication() instead of
G4MULTITHREADED flag; this fixes compilation of code when used
in sequential application built against Geant4 libraries built
with MT.
- ucn
- Enabled use of Gravity in physics list.
- field
- field04
- Removed useless double-definition of copy-ctr for
F04StepMax and deleted.
- field06
- Adjusted to changes in G4Transportation (need to inform
of use of gravity) and corrected creation of G4ChordFinder.
- hadronic
- Hadr00
- Hadr01
- HistoManager: added linear histogram for pion energy at
production.
- DetectorConstruction: added "Battery" material and new macro
test_battery.in. Addressing problem report
#2175.
- Hadr02
- G4CRMCModel: some improvements (e.g. considered the
energy-per-nucleon, instead of the whole projectile, in the
case of nucleus projectile) and better documentation (in the
form of comments in the class).
- HadronPhysicsCRMC_FTFP_BERT: use G4HadronicParameters for the
energy transition region between FTF and BERT models.
- Hadr08
- New example showing how to use the "generic biasing" feature
for setting different hadronic physics models according to
detector regions.
- medical/DICOM
- Defaulted copy-ctr in DicomPhantomZSliceHeader, to fix deprecation
compilation warnings on gcc-9.1.
- Correct DicomHandler singleton for use on Windows.
- Fixed cases of implicit type conversions from size_t to G4int.
- Some minor code cleanup.
- medical/DICOM2
- Use updated DicomHandler singleton to fix crash on Windows.
- Fixed cases of implicit type conversions from size_t to G4int.
- Include G4Types.hh header in main(), before use of
G4MULTITHREADED.
- medical/dna
- chem2, chem3:
- Clean-up of TimeStepAction.
- chem4:
- Added UI commands for one step thermalization model selection
in macro beam.in.
- Make Species alias of const G4MolecularConfiguration.
- Create the analysis manager via the new factory function.
- chem5:
- Make Species alias of const G4MolecularConfiguration.
- Removed unused inclusion of g4analysis_defs header from
ScoreSpecies.
- dnadamage1:
- New example showing a simple way to simulate dna direct and
indirect damages using Geant4-DNA physics and chemical processes
in a molecular DNA geometry.
- icsd:
- Reduced event statistics in icsd.mac input macro, in order to
reduce run-time in testing.
- microdosimetry:
- microprox:
- New example showing how to compute proximity functions in
liquid water using exclusively Geant4-DNA physics processes
and models.
- microyz:
- Added condensed history models including step size control.
- Added EM UI commands in microyz.in.
- Fixed Boolean operators to return G4bool.
- medical/electronScattering2
- Fixed warning about attempting to add multiple times the same
sensitive detector.
- Fixed compilation warning on Windows for unused out_of_range
exception object in Run::Merge().
- medical/fanoCavity, fanoCavity2
- DetectorConstruction: simplification of DefineMaterial().
- DetectorConstruction, DetectorMessenger: fixed usage of base
materials and cleanup (should fix ~1% error for Opt4 EM physics).
- PhysListEmStandard_option4: set RangeFactor to 0.08 (as in the
physics_list library). PhysListEmStandard_option3: set parameters as
in the physics_list library.
- optical/LXe
- LXeDetectorConstruction: removed protection against rebuilding
detector.
- LXeEventAction: commented out randomSaveEvent.
- Update PMT positions when changing number of PMTs.
- Set fewer particles in wls.mac and cerenkov.mac input macros.
- Use unique analysis filenames.
- optical/OpNovice
- Use G4OpticalPhysics and G4SteppingVerbose.
- Removed unused surface parameters.
- optical/OpNovice2
- Added surface roughness and polish commands.
- Recording scintillation photon creation time.
- Use unique analysis filenames.
- Updated macros.
- optical/wls
- Avoid storing random number seeds.
- Use G4OpticalPhysics and G4SteppingVerbose.
- parallel
- MPI
- Fixed compilation error in G4MPIextraWorker.
Addressing problem report
#2163.
- Fixed exMPI03, exMPI04; compilation of G4MPIscorerMerger was
broken after changes in scorers.
- Added new option rowMode for ntuple merging; changed the
default merging mode to the new one (column-wise with preserved
rows) and updated the analysis code.
- ThreadsafeScorers
- Fixed compilation warning on Windows for calling
TIMEMORY_AUTO_TIMER with no arguments in
TSPrimaryGeneratorAction::GeneratePrimaries().
- TopC
- Added info/HowToTest.txt with a short summary of the build
instructions.
- parameterisation
- gflash
- Extend GFlash examples set by moving existing 'gflash' example
to gflash1.
- Added example gflash2 with envelope in parallel world.
- Added example gflash3 with SD in parallel world.
- Added example gflasha with histogramming of shower profiles.
Allows comparing shower profiles from fast simulation with full
simulation.
- persistency
- gdml/G01
- Added BeamOn(0) to initialize range to energy converters
needed when exporting cuts per volume.
- Enabled overlaps checking in example.
- Corrected overlap in assembly.gdml sample.
- Corrected CMake script to install otherwise missing GDML
sample file.
- P01
- Fixed definition of allocator in ExP01TrackerHit.
- radioactivedecay
- rdecay01
- PhysicsList: replaced G4RadioactiveDecay with refactored class
G4Radioactivation.
- TrackingAction: if 'fFullChain' set kinetic energy to zero.
- In timeWindow command, allow t1 = 0.
- Documented timeWindowBiased.mac input macro.
- rdecay02
- New class BiasedRDPhysics using new G4Radioactivation process
with all biasing available.
- In PhysicsList, replaced G4RadioactiveDecayPhysics with
BiasedRDPhysics, also removed HP option physics lists.
- In Run, replaced G4RadioactiveDecay with G4Radioactivation.
- runandevent
- RE03
- Added G4VScoringMesh:: scope identifier to RE03UserScoreWriter.