diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2d4ff86a4a..a714957fd3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,9 +16,10 @@ endif()
#-----------------------------------------------------------------------
# - Define CMake requirements and override make rules as needed
#
-cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
-
-# - Any policy requirements should go here
+cmake_minimum_required(VERSION 3.8...3.18 FATAL_ERROR)
+if(${CMAKE_VERSION} VERSION_LESS 3.12)
+ cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+endif()
# - Make overrides for default flags, so they appear in interfaces
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 0c15bf7afd..883c00d901 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -11,6 +11,6 @@ the development repository of Geant4, to be included in a future release or
patch.
For simple bug-fixes, it is anyhow recommended to use the official
-[Bugzilla problem reporting system](https://bugzilla-geant4.kek.jp).
+`Bugzilla problem reporting system `.
The Geant4 Collaboration
diff --git a/ReleaseNotes/Beta4.10.3-1.txt b/ReleaseNotes/Beta4.10.3-1.txt
index 6708c988ae..5d734f9abb 100644
--- a/ReleaseNotes/Beta4.10.3-1.txt
+++ b/ReleaseNotes/Beta4.10.3-1.txt
@@ -224,8 +224,8 @@ List of features and fixes included in this Beta release since 10.2.p02:
hadrons.
- G4EmStandardPhysicsGS: set default range factor to 0.1.
- DNA and ModelActivator constructors: corrected model/process names;
- adjusted high energy threshold of solvation (kill) in respect to the
- energy range of the elastic model.
+ adjusted high energy threshold of solvation (kill) in respect to the
+ energy range of the elastic model.
Added G4DNAElectronSolvation to all DNA constructors.
- Updated G4EmDNAPhysics_option5 and G4EmDNAChemistry.
- Updated G4EmDNAPhysics_option7 constructor.
diff --git a/ReleaseNotes/Beta4.10.7-1.txt b/ReleaseNotes/Beta4.10.7-1.txt
index 027681990e..6bea03e120 100644
--- a/ReleaseNotes/Beta4.10.7-1.txt
+++ b/ReleaseNotes/Beta4.10.7-1.txt
@@ -7,7 +7,7 @@
Migration Notes & Main New Features
-----------------------------------
- o Introducing new optional (experimental) tasking system, based on TBL
+ o Introducing new optional (experimental) tasking system, based on PTL
(Parallel Tasking Library), dedicated run manager (G4TaskRunManager) and
factory (G4RunManagerFactory), enabling use of tasks for the event loop.
The tasking system is fully compatible with Intel TBB, which can be
@@ -740,7 +740,7 @@ List of features and fixes included in this Beta release since 10.6.p02:
o Tasking
-------
+ New module implementing a new Geant4 run manager, G4TaskRunManager,
- enabling use of the TBL tasking system for the event loop. The tasking
+ enabling use of the PTL tasking system for the event loop. The tasking
system is fully compatible with Intel TBB, which can be selected if
GEANT4_USE_TBB=ON is specified when configuring CMake. The default
behavior, however, is to submit the tasks to an internal thread-pool
diff --git a/ReleaseNotes/Patch4.10.6-3.txt b/ReleaseNotes/Patch4.10.6-3.txt
new file mode 100644
index 0000000000..32233ae6ae
--- /dev/null
+++ b/ReleaseNotes/Patch4.10.6-3.txt
@@ -0,0 +1,114 @@
+
+ Geant4 10.6 - patch-03 Release Notes
+ ------------------------------------
+
+ 6 November 2020
+
+List of fixes included in this public patch since the public release 10.6.p02:
+
+ o Analysis:
+ --------
+ + Fixed definition of UI commands in G4AnalysisMessenger (for 2D and
+ 3D histograms).
+ + Updated to g4tools 5.0.6:
+ o Changed usage of Google style fonts.
+ o Fixed compilation warnings on clang-10.
+
+ o Event:
+ -----
+ + Fixed misleading error message in G4SPSPosDistribution.
+ Addressing problem report #2275.
+
+ o Global:
+ ------
+ + Re-instate static pointer for 'masterG4coutDestination' in
+ G4coutDestination with proper symbol exporting on Windows
+ (necessary for MT builds). Restores trapping of G4cout from
+ workers in Qt GUI.
+ + Updated date and version for 10.6.p03.
+
+ o Intercoms:
+ ---------
+ + Added StoL() method in G4UImessenger for parsing string to long int.
+ Addressing problem report #2276.
+
+ o Interfaces:
+ ----------
+ + Added fix in G4Qt to properly set GL on Windows (see Forum topic #3144).
+
+ o Persistency - gdml:
+ ------------------
+ + Fixed treatment of loops. Addressing problem report #2273.
+
+ o Processes - Hadronic:
+ --------------------
+ + cross_sections:
+ o G4CrossSectionElastic, G4CrossSectionInelastic: fix for ions and
+ anti-ions, where the max energy of applicability of the (elastic and
+ inelastic) cross-sections must scale with the absolute baryonic number;
+ however, the cross-sections objects are often shared between the
+ different types of ions (d, t, He3, alpha, and genericIon), therefore
+ we scale by a large value (256, safely larger than the number of
+ nucleons of the heaviest nuclides).
+ + models/de_excitation:
+ o G4NuclearLevelData: more safe initialisation of data in MT mode, use
+ mutex locks only within each method, whithout calls to other methods.
+ o G4ExcitationHandler: call to G4NuclearLevelData to initialise data for
+ levels for all elements possibly involved in the geometry.
+ o G4FermiFragmentsPoolVI: use old interface to nuclear levels.
+ + models/particle_hp:
+ o G4ParticleHPInelastic, G4ParticleHPInelasticData: improved error
+ message in the case that both G4PARTICLEHPDATA and the related
+ particle-specific environmental variable (e.g. G4PROTONHPDATA) are
+ not defined. The recommendation is to define only G4PARTICLEHPDATA.
+ + models/parton_string/diffraction:
+ o G4FTFModel: quasi-elastic is not applied any longer when the target
+ nucleus has one nucleon and the projectile hadron is not an ion. This
+ avoids to double count elastic scattering (as reported by NA61/SHINE
+ in 158 GeV/c proton interactions on liquid hydrogen).
+ Addressing problem report #2274.
+ + models/parton_string/hadronization:
+ o G4VLongitudinalStringDecay: fix in ProduceOneHadron() method, to remove
+ an inconsistency in the treatment of low-mass strings with respect to
+ the method G4QGSMFragmentation::FragmentString(). As consequence of
+ this inconsistency, interactions with fewer intra-nuclear collisions
+ were favored, therefore producing fewer secondary hadrons.
+ o G4QGSMFragmentation : proper exit in the method FragmentString()
+ when the string mass is below the threshold.
+ + models/parton_string/qgsm:
+ o G4BaryonSplitter: removed inexisting in Geant4 excited hyperon states
+ (Sigma* and Xi*).
+
+ o Run:
+ ---
+ + Fix for rndmSaveThisEvent() not properly working in multi-threaded mode.
+ Addressing problem report #2278.
+ + Allow setting of seeds with 'long' values for '/random/setSeeds'
+ UI command. Addresses problem report #2276.
+
+ o Visualization:
+ -------------
+ + Fixed compilation warnings on clang-10 in gMocren and gl2ps.
+
+ o Examples:
+ --------
+ + advanced/brachytherapy
+ o Added missing call to "/run/initialize" in VisualisationMacro.mac.
+ + advanced/purging_magnet
+ + advanced/STCyclotron
+ o Fixed README.
+
+ ----------------------------------------------------------------------------
+
+ Technical Notes
+ ---------------
+
+ o This patch should be applied on top of release 10.6 or 10.6.p01/p02.
+ o Technical notes distributed for release 10.6 are also applicable and
+ valid for this patch.
+
+The code and rebuilt binary libraries for release 10.6.p03 are available
+through the Geant4 "Download" Web page.
+
+Please refer to the Geant4 User Documentation for further information about
+using Geant4.
diff --git a/ReleaseNotes/ReleaseNotes4.10.0.html b/ReleaseNotes/ReleaseNotes4.10.0.html
index 0c86b37270..61113d52d4 100644
--- a/ReleaseNotes/ReleaseNotes4.10.0.html
+++ b/ReleaseNotes/ReleaseNotes4.10.0.html
@@ -174,7 +174,7 @@ re-compilation) and a re-compilation of user applications is required.
The G4Polycone solid no longer supports the case in which
either the outer or the inner surface has more than one cone or tube
section over a finite interval of Z values. These shapes must use the
- new class G4GenericPolycone instead. The general constructor
+ new class G4GenericPolycone instead. The general constructor
of G4Polycone, which uses a series of vertices, includes a
check whether the vertices are monotonic along Z for its inner and
outer surfaces, and issues an error if not.
diff --git a/ReleaseNotes/ReleaseNotes4.10.7.html b/ReleaseNotes/ReleaseNotes4.10.7.html
new file mode 100644
index 0000000000..9b138bb542
--- /dev/null
+++ b/ReleaseNotes/ReleaseNotes4.10.7.html
@@ -0,0 +1,2591 @@
+
+
+Geant4 10.7 Release Notes
+
+
+
+
+
+
+
+
+
+Geant4 10.7 Release Notes
+
+
+
+|
+
+December 4th, 2020
+
+ |
+
+
+
+
+
+The code and binary libraries for the supported systems are available
+through our Source
+Code Web page.
+
+
+We are grateful for the efforts of Geant4 users who have provided
+ detailed feedback or comprehensive reports of issues.
+ We thank in particular those who have contributed corrections,
+ improvements or developments included in this release.
+
+
+Please refer to the
+Geant4
+User Documentation for further information about using Geant4.
+
+
+Contents
+
+- Supported and Tested Platforms
+- Supported CLHEP and VecGeom versions
+- Items for migration of the user code
+- New Developments and Capabilities
+- Expected effects on physics and performance
+- Known Run-Time Problems and Limitations
+- Compilation Warnings
+- Geant4 Software License
+- Detailed list of changes and fixes
+
+
+
+
+
+
+
+
+1. Supported and Tested Platforms
+
+Platforms:
+
+- Linux, gcc-4.9.3.
+ Tested on 64 bit architectures (Intel or AMD) with
+ CERN CentOS Linux 7 (CC7) (based on CentOS Linux 7).
+- MacOS 10.15 Catalina with Apple LLVM/Clang-12.0 (llvm/clang-10)
+- Windows-10 with Visual C++ 14.28 (Visual Studio 2019)
+
+
+More verified and tested configurations (64 bits):
+
+- Linux, gcc-5.4/6.3/7.4/8.2/9.3/10.2, clang-8/9/10
+- Linux, Intel-icc 19.1
+- MacOS 10.14 Mojave with Apple LLVM/Clang-10/11
+- MacOS 11 Big Sur with Apple LLVM/Clang-12 (Intel chips only)
+
+
+
+
+
+
+
+
+2. Supported CLHEP and VecGeom version
+
+This release of Geant4 requires and has been verified with
+CLHEP, release 2.4.4.0.
+Use of a different CLHEP version may cause incorrect simulation results.
+NOTE: an internal module of the relevant CLHEP classes is provided and can be
+used as alternative to an external CLHEP library installation.
+A configuration option allows a Geant4 installation to use the
+VecGeom Library
+primitives, to replace the original Geant4 solids. VecGeom version
+1.1.8 is required when using such configuration.
+
+
+
+
+
+
+
+3. Items for migration of the user code
+
+Listed here is some relevant information on developments included in this
+release.
+Note that for all users a full re-installation of libraries (or a full
+re-compilation) and a re-compilation of user applications is required.
+
+
+General
+
+
+- Code using the G4MULTITHREADED preprocessor macro must include the
+ G4Threading.hh header before using the macro.
+- Minimum required version of CMake to build Geant4 is 3.8.
+ Allow specification of C++20 for CMake 3.12 and above.
+
+
+
+Geometry, Fields and Transportation
+
+
+- The default integration method for field propagation in a pure magnetic
+ field is changed to use a templated stepper G4TDormandPrince45.
+ A speedup is expected.
+ Instead a slowdown can occur if a large fraction of 'long' steps
+ propagating in a vacuum or gas volume with a strong-enough magnetic field.
+ To restore the previous method used in Geant4 10.6. set nullptr
+ as third argument and the fourth argument stepperDriverId=4 in
+ the relevant constructor of G4ChordFinder.
+
+
+
+Electromagnetic and optical physics
+
+
+- Moved optical physics parameters to new G4OpticalParameters class.
+- Added new threshold for muon/hadron bremsstrahlung and e+e- pair production
+ allowing to stop a track when energy transfer exceeds the defined threshold
+ and makes a new vertex.
+- Added two extra sets of StepFunction parameters for light ions and generic
+ ions. Added corresponding UI commands allowing one to customise step
+ limitation for ions separately from step limits for electrons or hadrons.
+
+
+
+Hadronic physics
+
+
+- The UI commands for Radioactive Decay are named /process/had/rdm/....
+ The old commands /grdm/... are still valid, but deprecated,
+ and will be removed in the next major release, Geant4 11.
+- To enable building of ParticleHP as HP, use the new CMake option
+ -GEANT4_BUILD_PHP_AS_HP=ON when building Geant4.
+ The old environment variable PHP_AS_HP is still valid, but
+ deprecated, and will be removed in the next major release.
+
+
+
+Data Sets
+
+
+- This release introduces new data set versions.
+ Please see the corresponding details in
+ Section 9 of this document.
+
+ - New data set versions: G4EMLOW-7.13, G4RadioactiveDecay-5.6,
+ G4PhotonEvaporation-5.7, G4ENSDFSTATE-2.3, G4PARTICLEXS-3.1,
+ G4RealSurface-2.2.
+ - In order to use ParticleHP for charged particles
+ (protons, deuterons, tritons, He3 and alphas), an optional data
+ set G4TENDL-1.3.2 is required, and can be optionally
+ downloaded in addition.
+
+
+
+
+
+
+
+
+4. New Developments and Capabilities
+
+General
+
+- Introducing new optional (Beta) tasking system, based on PTL
+ (Parallel Tasking Library), dedicated run manager (G4TaskRunManager) and
+ factory (G4RunManagerFactory), enabling use of tasks for the event loop.
+ The tasking system is fully compatible with Intel TBB, which can be
+ selected if GEANT4_USE_TBB=ON is specified when configuring CMake. The
+ default behavior for tasking is to submit the tasks to an internal
+ thread-pool and task-queue.
+- Introduced general facilities based on GFlash implementation to facilitate
+ multiple hit (energy & position) creation from fast simulation models.
+- Updated SI constants, based on May 2019 redefinition of SI units.
+- Added G4Backtrace header for printing backtraces from raised signals.
+ Can be enabled by setting GEANT4_BUILD_BUILTIN_BACKTRACE option at
+ configuration.
+- New profiling settings for TiMemory which allow per-{run,event,track,step}
+ profiling when GEANT4_USE_TIMEMORY is enabled.
+- Extended CMake build system to support G4Py activation through
+ GEANT4_USE_PYTHON flag.
+- Simplified CMake builds to enable future modularisation of Geant4
+ libraries.
+
+
+Analysis
+
+- Major upgrade of analysis module, including support for multiple files
+ and multiple output types in the same run; defeined new methods and
+ corresponding UI commands. The new functions are available through a new
+ G4GenericAnalysisManager class, and are demonstrated in the basic B5
+ example.
+- Enabled handling of automatic min/max axes values in case of log scale
+ in analysis tools.
+
+
+Digitization, Hits & Scoring
+
+- Added layered mass geometry option for the new "probe" scoring mesh.
+- Introducing G4VPrimitivePlotter allowing the user to extend a primitive
+ scorer; added G4VScoreHistFiller and G4TScoreHistFiller, allowing scorers
+ to fill histograms defined through Geant4 Analysis tools.
+
+
+Geometry and Field
+
+- Improved speed for detection of volume overlaps either through
+ UI commands or at geometry construction.
+- New templated field classes for equation and selected steppers
+ to avoid virtual call for field and equation respectively.
+ Non-virtual calls are expected to provide a direct speedup.
+ In addition key methods are made inline to enable compilers to
+ seek extra speedup by embedding them to avoid any function call.
+- New class G4DriverReporter to print progress of field drivers.
+- Enabled "check-mode" for G4PropagatorInField and G4VIntersectionLocator.
+- Enabled use of whiteboard for logging/debugging in G4MultiLevelLocator,
+ if "check-mode" in navigation is being activated through UI command.
+
+
+Materials
+
+- Added two new public methods to add elements to a material:
+ AddElementsByNumberOfAtoms(...) and AddElementByMassFraction(...).
+- Added a new method ConstPropertyExists() to G4MaterialPropertiesTable.
+ Added new methods to access/add properties with G4String and std::vector.
+- Added new properties for scintillation allowing 3 time constants and a
+ second wavelength shifter in the same material in G4MaterialPropertiesTable
+ and G4MaterialPropertiesIndex.
+
+
+Electromagnetic physics
+
+- Added two extra sets of StepFunction parameters for light ions and generic
+ ions. Added corresponding UI commands allowing one to customise step
+ limitation for ions separately from step limits for electrons or hadrons.
+- Introducing thermal model of positronium decay to two gammas.
+ In this model, the positronium acquires a mean kinetic energy on formation,
+ which contributes to a small non-collinearity of the gammas, detectable and
+ significant in PET.
+- Added new EM model for polarized gamma elastic scattering.
+- New class for handling the numerical Differential Cross-Sections(DCS) for
+ Coulomb scattering of e-/e+, and added new model, implementing single
+ Coulomb scattering for e-/e+.
+- Added new classes and models for micro-dosimetry simulation.
+- Added new threshold for muon/hadron bremsstrahlung and e+e- pair production
+ allowing to stop a track when energy transfer exceeds the defined threshold
+ and makes a new vertex.
+- Added a model for gamma-ray elastic interactions, able to account for
+ molecular interference effects, by using database or user-custom form
+ factors.
+- Implemented three time constants for G4Scintillation, and allow multiple
+ time constants to work with scintillation by particle type.
+ Added second wavelength shifting process within the same material.
+
+
+Hadronic physics
+
+- For charm and bottom hadron-nuclear (elastic and inelastic)
+ cross sections, the Glauber-Gribov approach has been extended to
+ cover heavy hadrons.
+ For final-state elastic nuclear scattering of charm and bottom
+ hadron projectiles, a simple treatment is utilized.
+ For final-state inelastic nuclear scattering of charm and bottom
+ hadron projectiles, both Geant4 string models (FTF and QGS) have
+ been extended to deal with charm and bottom quarks and diquarks
+ carried by the heavy projectile hadron, as well as with the
+ possibility of creating charm-anti_charm and bottom-anti_bottom
+ pairs from the vacuum during the string fragmentation phase.
+ Cascade models are currently not applicable for heavy hadrons and
+ string models cannot handle them properly at very low energies:
+ below 100 MeV a dummy model that returns as final state the
+ initial state unchanged is utilized.
+ The decays of secondary heavy hadrons - charm and bottom hadrons
+ created by inelastic nuclear interactions of primary hadrons -
+ cannot be pre-defined by Monte Carlo event generators, therefore
+ a very simple approach is currently used: one single, fully hadronic
+ decay is defined for each "long"-lived charm and bottom hadron,
+ with a simple multi-body phase-space treatment of the decay
+ kinematics.
+- For the evaluation of systematic errors due to uncertainties in
+ the Geant4 hadronic cross sections we recommend to scale up and
+ down the cross sections, independently for elastic and inelastic
+ interactions, and independently for different types of hadrons.
+ Currently, this is possible for the following three categories of
+ hadrons: nucleons (i.e. proton and neutron together), pions (i.e.
+ pion+ and pion- together), all the rest of hadrons (i.e. kaons,
+ hyperons, anti-baryons, light ions, light anti-ions, charm and
+ bottom hadrons all together).
+ New public methods of the singleton class G4HadronicParameters
+ allow to enable the scaling of these cross sections (disabled by
+ default), and to set the scaling factors (by default 1.0).
+ Here are some rough, practical suggestions on the scaling of the
+ cross sections: +/- 10% variation for nucleons and pions;
+ +/- 15-20% variation for kaons; +/- 20-30% variation for other
+ hadrons. Moreover, bigger variations might be considered at low
+ energies to account for the challenge of describing the shapes
+ of cross sections in the threshold and resonance region.
+- New utility class to access hadronic processes, allowing to customise
+ hadronic cross-sections per particle type.
+- New UI messenger for hadronic physics, currently used for controlling
+ verbosity level: the UI command /process/had/verbose 0 allows
+ to switch off the print-out at initialization of hadronic processes,
+ models and cross-sections (similar to the existing command
+ /process/em/verbose 0 to switch off the print-out of
+ electromagnetic physics information).
+- New UI command to change the default upper energy limit
+ (default: 100 TeV): /process/had/maxEnergy ...
+- New G4PARTICLEXS-3.1 dataset provides accurate fusion cross-sections
+ based on data, more accurate inelastic cross-sections for neutrons,
+ protons, light ions, and gamma for the full energy range.
+- Replaced where possible the use of environmental variables in hadronic
+ models with appropriate UI commands.
+- A new low-energy gamma-nuclear final-state model,
+ G4LowEGammaNuclearModel, based on precompound de-excitation
+ and providing isomer production and gamma transitions, is used in
+ G4EmExtraPhysics.
+- Improved treatment of antibaryon interactions in QGS.
+- Added handling of lepto-nuclear interactions for anti_nu_e, nu_e,
+ anti_mu_nu and mu_nu.
+- A new coalescence model, useful in particular for Cosmic Ray applications,
+ has been introduced. By considering the list of secondaries produced by a
+ string model, it forms deuterons and antideuterons from, respectively,
+ proton-neutron and antiproton-antineutron pairs with close momenta.
+ By default, the coalescence model is disabled; it can be switched on
+ via the UI command /process/had/enableCRCoalescence true.
+
+
+Physics Lists
+
+- Enabled charm and bottom hadronic physics in nearly all physics lists,
+ in particular those of interest for HEP.
+ (The main exceptions are the following physics lists:
+ QGSP_BIC, QGSP_BIC_HP, QGSP_BIC_AllHP.)
+ The QGS-based physics lists use, as for other hadrons, QGSP for
+ charm and bottom inelastic interactions above 12 GeV, whereas FTFP
+ is used below 25 GeV. The other, FTF-based physics lists, use FTFP
+ at all energies, with a simplified approach below 100 MeV.
+- New physics-list builder classes have been introduced to allow
+ alternative builders for anti_proton, anti_neutron, hyperons and
+ anti-hyperons nuclear interactions at high energies with QGSP.
+- QGS-based physics lists use now QGS for hyperons, anti-hyperons,
+ anti_proton and anti_neutron projectiles at energies above 12 GeV.
+- Physics lists that include G4EmExtraPhysics use the new
+ low-energy gamma-nuclear model (G4LowEGammaNuclearModel)
+ below 200 MeV (while Bertini cascade is used above 199 MeV up to 6 GeV,
+ and QGSP above 3 GeV). The use of this model, its energy threshold and
+ the alternative cross section G4GammaNuclearXS can be
+ configured.
+- Extended EM physics-list configurator interface allowing application of
+ extra configuration on top of any available DNA constructor.
+- Cleanup destruction of physics processes at the end of job.
+ Reviewed ownership/deletion of physics models at the end of the run.
+
+
+Visualization and Interfaces
+
+- Introduced new alpha-version of a Qt3D visualization driver, based
+ on native Qt rendering.
+- Added support for Open Inventor Qt visualisation driver to be built and
+ used in applications. The OpenInventor module can be built with either
+ the OIQt driver, or with the OIX/OIXE drivers, but not with both.
+ Enabled use of OIQt viewer with Qt UI.
+
+
+Examples
+
+- New extended example showing how to use Geant4 as a generator for
+ simulating inelastic hadron-nuclear interactions.
+- New extended example demonstrating how to create multiple energy deposits
+ from the fast simulation model.
+- New extended example implementing the typical setup of a Small Angle
+ X-ray Scattering (SAXS) experiment. It is meant to illustrate the usage
+ of molecular interference (MI) of Rayleigh (coherent) scattering of photons
+ inside the matter.
+- New extended medical example (dna/chem6) providing scoring of the
+ radiochemical yield G as a function of time and LET.
+- New advanced example showing how to efficiently simulate particle transport
+ through aerosols containing billions of randomly-positioned droplets, using
+ an ordinary workstation.
+- New advanced example Gorad (Geant4 Open-sourced Radiation Analysis and
+ Design), a turn-key application for radiation analysis and spacecraft
+ design.
+- New advanced example HGCal_testbeam based on a Geant4 standalone application
+ for the CMS High Granularity Calorimeter (HGCal) studies, to demonstrate a
+ test beam setup used in HEP experiments, and as a base for the validation
+ studies and comparison with experimental data.
+- New advanced example modelling the ICRP110 reference computational human
+ phantoms and calculating the dose in individual voxels and entire
+ organs. The human male phantom is created from a whole-body
+ clinical CT image.
+
+
+
+
+
+
+
+5. Expected effects on physics and computing performance
+
+General
+
+- Revision of G4PhysicsVector classes to use similar algorithm for bin
+ selection and adding checks on vectors length.
+- Code reorganisation and optimisations in G4Transportation has been
+ measured to provide a persistent reduction of instruction-TLB misses,
+ leading to some measurable CPU speedup.
+
+
+Electromagnetic physics
+
+- Results are expected to be similar to release 10.6 for EM calorimeters.
+- Expected some measurable CPU speedup.
+- Expected improved angular distributions for e+e- pairs.
+
+
+Hadronic physics
+
+- Hadronic showers remain similar to those of the latest patch release
+ 10.6.p03, with the only expected difference of a few percent narrower
+ showers for FTF-based physics lists.
+ Comparing the hadronic showers of the two physics lists FTFP_BERT and
+ QGSP_BERT, the latter show sligthly higher response, larger energy
+ fluctuations, and longer and narrower shapes with respect to the
+ FTFP_BERT showers.
+- Expected more accurate cross-sections for light ions including fusion
+ reactions.
+- Expected slightly faster computation of hadronic cross-sections.
+
+
+
+
+
+
+
+
+6. Known Run-Time Problems and Limitations
+For a complete list of outstanding run-time problems and to submit any
+problem you may find while running this version of Geant4, please refer
+to the
+Geant4 Problem
+Reporting System.
+
+
+
+
+
+
+
+7. Compilation Warnings
+
+There may be a few compilation warnings on some platforms, particularly
+on Windows with Visual Studio, where warnings level has been raised when
+building examples.
+We do not believe that any of these lead to incorrect run-time behaviour.
+
+
+
+
+
+
+
+8. Geant4 Software License
+
+A Software License applies to the Geant4 code.
+Users must accept this license in order to use it. The details and the list of
+copyright holders is available at
+http://cern.ch/geant4/license
+and also in the text file LICENSE distributed with the source code.
+
+
+
+
+
+
+
+9. Detailed list of changes and fixes
+
+These are the main new features/fixes included in this release since the
+last patched public release (for more detailed lists of fixes/additions,
+please refer to the corresponding History files provided in most packages):
+
+
+
+
+Configuration
+
+- CMake
+
+ - Added support for building PTL external module and introduced
+ GEANT4_USE_TBB option, enabling use of TBB as possible alternative
+ to builtin PTL tasking.
+ - Added support for Open Inventor Qt visualisation driver to be built and
+ used in applications. The OpenInventor module can be built with either
+ the OIQt driver, or with the OIX/OIXE drivers, but not with both.
+ Added GEANT4_USE_XM to Open Inventor X11 driver code block to correct
+ Xm and Xt link order. Improved consistency of using XQuartz vs System
+ OpenGL on macOS. Removed obsolete FindInventor module.
+ - Introduced configuration support for Qt3D visualization driver.
+ Qt3D driver optional based on find of required Qt5 modules.
+ - Applied patch to allow compilation on Windows using Clang.
+ - Removed requirement on presence of GLU library.
+ No longer save GLU related variables in the package cache.
+ - Change shimmed imported target name to VecGeom::vecgeom to match
+ upstream usage and reliably use target when available from VecGeom.
+ Export VecCore_DIR to package cache when set so that Geant4 behaviour
+ is consistent. Co-works with VecGeom-1.1.8.
+ - Updated functions to use G4expat{-static} as custom built targets.
+ - Added GEANT4_BUILD_BUILTIN_BACKTRACE option to enable automatic
+ use of G4BackTrace signal handling in G4RunManager.
+ - Importing new "target" style API for declaring and composing libraries
+ from modules of source code.
+ - Propagate value of CMAKE_DISABLE_FIND_PACKAGE_ROOT down to tests
+ that optionally support Root to allow testing Geant4 with Root support
+ disabled. This is necessary when testing Geant4 with a different C++
+ standard than Root when it's installed. Avoid warnings from propagating
+ the flag down to tests.
+ - New GEANT4_BUILD_PHP_AS_HP option to enable ParticleHP as HP in physics
+ processes. Replaces PHP_AS_HP environment variable. Added PHP_AS_HP
+ "feature" in Geant4Config.cmake/geant4-config to allow clients to
+ check availability.
+ - Use STRINGS cache property for enum options and CMAKE_BUILD_TYPE to
+ give easier interface in (G)UIs.
+ - Use "${FOO:-}" variable expansion and "-z" test to check for
+ undefined variables in Bourne Shell scripts. Prevents errors when
+ shell is in "set -u" mode. Addressing problem report
+ #2221.
+ - Handle install of G4clhep{-static} independently of main modules
+ due it being built outside the category system.
+ - Renamed remaining internal "Geant4..." modules to "G4" convention.
+ Retain Geant4DefineModule and Geant4LibraryTargets until new
+ modularization scheme is in place.
+ - Set CLHEP minimum required version to 2.4.4.0.
+ - Set VecGeom-1.1.8 as minimum required version for optional build
+ with VecGeom.
+ - Added possibility to download and install optional TENDL data set.
+ - Updated data-sets versions.
+
+- GNUMake
+
+ - Added setup for building and configuring new externals/ptl
+ and tasking modules. External installation of PTL can be enabled
+ by defining the installation through the environment variable
+ PTL_BASE_DIR.
+ - Added -pthread to all builds in Linux targets.
+ - Corrected setup for use of Open Inventor (Coin).
+ - Added configuration for Qt3D visualization driver.
+ - Added missing settings in G4UI_BUILD.gmk script for OIQt and use
+ of UI.
+ - Removed deprecated G4USE_STD11 flag settings.
+ - Removed dependency on GLU for all configurations, as no longer
+ necessary.
+
+
+
+
+Analysis
+- Analysis management & plotting
+
+ - Major upgrade including the support for multiple files and multiple
+ output types.
+ - New G4GenericAnalysisManager, G4GenericFileManager factory classes.
+ - New G4VAnalysisManager functions to set file-names and corresponding
+ UI commands. While it is possible to mix output types for histogram
+ and profiles objects, only one output type is supported for ntuples.
+ - Redesigned management classes to separate object file handling from
+ output specific analysis managers.
+ - Updated G4PlotManager for use of new fonts.
+ - Changes to allow overriding Root classes in g4mpi/analysis.
+ - Removed redundant variable in G4RootNtupleFileManager::Reset().
+ - Fixed the memory leak reported by Valgrind in deleting files.
+ - Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+
+ - Ntuples
+
+ - Implemented writing ntuples in multiple files of the same output type.
+ New G4VAnalysisManager function SetNtupleFileName(..) and UI commands:
+ "/analysis/ntuple/setFileName id fileName" and
+ "/analysis/ntuple/setFileNameToAll fileName"
+ - Fix to add a null-pointer check to ntupleDescription->fNtuple in
+ G4RootPNtupleManager::Merge().
+
+ - g4tools
+
+ - Updated the g4tools version to g4tools-5.2.1.
+
+ - Corrections to handle automatic min/max axes values in case of log
+ scale. See History_tools in analysis module for all details.
+ - Modifications in tools/hdf5 to use H5free_memory() instead free()
+ at some places (needed for HDF5/1.12.0).
+ - Modifications in graphics to be in sync with the code in
+ inlib/exlib around Apple/Metal (no impact on offscreen plotting).
+ - See History_tools for the complete list of modifications.
+
+
+ - Updated granular dependencies in preparation for modularization.
+ - Removed uneeded links to externals in factory.
+
+
+
+Digitization & Hits
+
+- Introducing G4VPrimitivePlotter allowing the user to extend a primitive
+ scorer. Use G4VPrimitivePlotter to allow scorers to directly fill
+ histograms. Added "/score/fill1D" command.
+- Introducing G4VScoreHistFiller and G4TScoreHistFiller, allowing scorers
+ to fill histograms defined through Geant4 Analysis tools.
+- Introducing a new scorer, G4PSVolumeFlux.
+- Added two ComputeSolid() method to G4VPrimitiveScorer, to consolidate
+ code.
+- Added Mutex lock to G4ScoringProbe::SetMaterial() to avoid race condition.
+- Fixed cases of comparison between int and size_t in templated classes
+ and some cleanup.
+- Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+
+
+
+Electromagnetic Processes
+
+- DNA:
+
+ - Added classes for IRT; added features in management classes for IRT
+ (G4ITReaction, G4ITModelProcessor ...).
+ - Added features in G4DNAMolecularReactionTable for GFDE.
+ - Added molecules (Oxygen, O2, O3, HO2) from: Plante et al.(2017).
+ - G4DNAMolecularMaterial: avoid deleting instance of the singleton;
+ removed commented lines.
+ Fixed thread contention on mutable data in G4DNAMolecularMaterial.
+ Some code cleanup.
+ - G4MoleculeDefinition: copy constructor and assignment operator are not
+ allowed (as for G4ParticleDefinition). Now deleted.
+ - Revised displacement of OH radicals of B1A1 dissociation based on
+ momentum conservation in G4DNAWaterDissociationDisplacer.
+
+- High Energy
+
+ - G4hPairProductionModel: inherit ComputeDMicroscopicCrossSection()
+ from G4MuPairProductionModel to avoid code duplication.
+ - G4hPairProductionModel, G4hBremsstrahlungModel, G4hPairProduction,
+ G4hBremsstrahlung: added definition of the energy threshold for
+ creation of a vertex when energy transfer is above the threshold.
+
+- Low Energy
+
+ - Added new model for polarized gamma elastic scattering, provided by
+ the JAEA group. Updated existing process (G4JAEAElasticScattering) and
+ model (G4JAEAElasticScatteringModel) in order to comply with the new
+ data format. Changed initialisation of JAEA models.
+ - Added new classes for micro-dosimetry simulation.
+ - Added new class G4MicroElecSurface, a new boundary process for e-.
+ - Removed obsolete G4MuElec* classes.
+ - G4LivermorePhotoElectricModel: allow "Water" as a name of water
+ material for low-energy photo-effect.
+ - Added G4LivermoreGammaConversion5DModel class. Reading EPICS2017 data.
+ - Change in G4LivermoreGammaConversion to now derive from
+ G4PairProductionRelModel. Added missing method InitialiseForElement().
+ - Added G4PenelopeRayleighModelMI model and ancillary class G4MIData.
+ - Replaced std::log with G4Log in Penelope and Livermore models.
+ - Use GetZasInt() in Penelope models, when applicable.
+ - Fixed compilation warnings on clang-10.
+
+- Muons
+
+ - G4MuPairProductionModel: optimised ComputeDMiscroscopicCrossSection()
+ to speedup initialization.
+ - G4ModifiedMephi: new angular generator for muon/hadron Bremsstrahlung.
+ - G4MuPairProductionModel, G4MuBremmstrahlungModel,
+ G4MuPairProduction, G4MuBremmstrahlung: updated sampling of
+ final state using G4ModifiedMephi; implemented check on energy transfer
+ and if beyond the threshold, kill primary particle and create a new
+ vertex.
+
+- Standard
+
+ - G4eDPWAElasticDCS: new class that handles the numerical Differential
+ Cross-Sections(DCS) for Coulomb scattering of e-/e+, computed by Dirac
+ Partial Wave Analysis(DPWA) using ELSEPA.
+ - G4eDPWACoulombScatteringModel: new class that implements single Coulomb
+ scattering model for e-/e+ based on the numerical DCS provided by the
+ above G4eDPWAElasticDCS class.
+ - G4eplusAnnihilation: fixed problem seen in the rare case, when initial
+ energy is null; introducing thermal model of positronium decay to two gammas.
+ In this model, the positronium acquires a mean kinetic energy on
+ formation, which contributes to a small non-collinearity of the
+ gammas, detectable and significant in PET. To activate this model:
+ material->GetIonisation()->SetMeanEnergyPerIonPair(meanKE).
+ A mean kinetic energy of 5 eV produces a projected acollinearity
+ of about 0.5 degrees FWHM, as reported in:
+ K.Shibuya et al., IFMBE Proceedings Vol. 14/3 1667 (2007).
+ - G4UniversalFluctuation: changed 'nmaxCont' from 16 to 8 for speedup.
+ Set value for 'a0' to 42 after optimisations. Minor C++ improvements.
+ - G4UrbanMscModel: tuned 'tlimitmin' computation for e- (for e+ kept
+ unchanged) and changed parameterisation of 'stepmin'; added two private
+ inline methods to reduce code duplication.
+ Removed cache and introduced data struct precomputed at initialisation,
+ added e- range cut to the data structure.
+ Changed parameterisation of backscattering parameter doverra;
+ Changed computation of 'tlimit' in the step limitation algorithm
+ UseDistanceToBoundary(); affecting only Opt3 EM physics.
+ - G4BetheHeitler5DModel: change "final" keyword by "override" for virtual
+ methods.
+ - G4LindhardSorensenData: fixed few numbers in the data table.
+ - G4eeToTwoGammaModel: code cleanup; added static flag, which identifies
+ if electron motion is taken into account for sampling of acollinearity,
+ when annihilation happens at rest; ensuring that by default no extra
+ computation is performed; also removed extra printout at initialisation
+ and extra data structure.
+ - G4ICRU49NuclearStoppingModel, G4WentzelOKandVIxSection,
+ G4WentzelVIRelModel, G4SeltzerBergerModel, G4LindhardSorensenIonModel:
+ improved usage of locks; defined deletion of copy constructor and
+ assignment operator. Improved usage of locks. Defined standard deletion
+ of copy consructor and assignment operator.
+ - G4SauterGavrilaAngularDistribution, G4DeltaAngle: code clean-up.
+ - Fixed compilation warnings on clang-10.
+ - Requires data-set G4EMLOW-7.13.
+
+- Utils
+
+ - G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger: added
+ a new parameter - name of the sub-directory with data for Livermore
+ models with variants: "livermore" (default), "epics_2017".
+ Comes with G4EMLOW-7.10 data set and higher.
+ - G4EmParameters, G4EmParametersMessenger, G4VMultipleScattering:
+ removed displacement-beyond-safety option, as may lead to crashes in
+ some circomstances, and wrong results in others.
+ - G4EmParameters, G4EmParametersMessenger, G4EmExtraParametersMessenger,
+ G4VEnergyLossProcess: added two extra sets of StepFunction parameters
+ for light ions and generic ions. Added extra UI commands. Modified
+ interfaces accordingly. Removed old comments.
+ - G4EmParameters, G4EmExtraParameters: added new flag defining type of
+ single scattering model.
+ - G4EmParameters, G4EmParametersMessenger: added new flag threshold for
+ muon/hadron bremsstrahlung allowing to stop a track when high energy
+ bremsstrahlung is emitted.
+ - G4OpticalParameters, G4OpticalParametersMessenger: added new files to
+ control optical parameters, as for G4EmParameters.
+ - G4EmLowEParametersMessenger: extended number of DNA PhysicsList
+ options.
+ - G4EmModelManager, G4VMscModel, G4VEmModel, G4VMultipleScattering: at
+ initialisation print extra line for all multiple-scattering models
+ instead of the common printout, needed when different models are
+ applied for regions. Minor code clean-up.
+ Addressing problem report
+ #2106.
+ - G4VEmProcess: removed old unused methods; DefinedMaterial() method is
+ now protected (needed for AtRest processes). Fixed setting of current
+ particle. Addressing problem report
+ #2277,
+ affecting ion DNA physics.
+ - G4LossTableManager: made ResetParameters() method public.
+ Make clean interface for electron and positron general process.
+ - G4VAtomicDeexcitation: optimized arrays initialisation.
+ - G4VEmAngularDistribution: added flag of polarisation and corrected
+ order of initialisation.
+ - G4VEmModel: define flag of polarisation for an angular generator.
+ - G4EmProcessSubType: added fSurfaceReflection.
+ - Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+
+ - Xrays
+
+ - Implemented three time constants for G4Scintillation, and allow
+ multiple time constants to work with scintillation by particle type.
+ The existing material property names have FAST and SLOW in them, like
+ FASTTIMECONSTANT. This doesn't generalize well. Also YIELDRATIO as a
+ single value doesn't generalize to three time constants. Proposal is
+ to create new names SCINTILLATIONTIMECONSTANT1/2/3 and the same for
+ other parameters. The existing names are kept for backwards
+ compatibility, with the idea to remove them in the next major release.
+ There is a flag in G4Scintillation, with messenger command in the
+ OpticalPhysics list, to use the new method:
+ /process/optical/scintillation/setEnhancedTimeConstants true.
+ Results are unchanged if using same values.
+ Allow specifying SCINTILLATIONYIELD only (not requiring
+ SCINTILLATIONYIELD1) when only one scintillation channel is present.
+ Same for particle specific yields.
+ Set verbosity levels correctly.
+ - G4Cerenkov, G4Scintillation: use new G4OpticalParameters to control
+ simulation parameters. Removed BuildThePhysicsTable().
+ Applied code formatting.
+ - G4Cerenkov: make GetAverageNumberOfPhotons() method public.
+ - G4VXTRenergyLoss: fixed destructor.
+ - Code formatting.
+
+
+
+
+Error Propagation
+
+- Fixed Coverity defects warnings in G4ErrorPropagator for unreachable code.
+ Implemented move assignment operators in G4ErrorSymMatrix, G4ErrorSymMatrix,
+ G4ErrorFreeTrajParam, G4ErrorTrajState and G4ErrorSurfaceTrajParam.
+- Fix to CMake script to support new CMake system.
+
+
+
+Event
+
+- Introducing a new General Particle Source energy distribution option,
+ that generates flat energy distribution with track weights that
+ represent energy spectrum provided by /gps/hist/point commands.
+ This option can enhance, for example, higher energy tracks that are
+ rare but contribute to the scores.
+- Corrected logic in G4VPrimaryGenerator::CheckVertexInsideWorld() method.
+- G4GeneralParticleSourceMessenger: command structure clean-up.
+- Some code cleanup, formatting and C++11 revision.
+- Fixed CMake scripts to ensure G4_USESMARTSTACK pre-processor symbol
+ is properly propagated.
+- Added support for event profiler with TiMemory.
+- Removed obsolete and unused headers.
+- Fixed Coverity defect in G4GeneralParticleSourceMessenger.
+- Fixed text typos in printout. Problem report
+ #2285.
+
+
+
+Externals
+
+- CLHEP:
+
+ - Updated to CLHEP version 2.4.4.0.
+ - Updated values in SystemOfUnits.h and PhysicalConstants.h for:
+ e_SI (electron charge), h_Planck (Planck constant), Avogadro
+ (Avogadro constant), k_Boltzmann (Boltzmann constant), based on
+ May 2019 redefinition of SI units, References -
+ [wikipedia.org],
+ [britannica.com].
+ - Use 32-bit internal seeds types coherently in MixMaxRng.
+ Addressing CLHEP JIRA ticket #156.
+ - Removed obsolete #pragma interface/implementation in Vector classes.
+ - Get rid of switch statement in operator()/operator[] of Hep3Vector
+ Replaced dx/dy/dz with operator[] in Hep3Vector.
+ Replaced private dx/dy/dz with public x()/y()/z() in Hep3Vector.
+ - Added missing includes in Vector and Random classes for translation
+ unit encapsulation.
+
+- Expat:
+
+ - Migrated build of G4expat to locally defined targets, allowing
+ cleaner specification of usage requirements.
+
+- PTL:
+
+ - New module for PTL (Parallel Tasking Library), implementing a
+ lightweight C++11 multi-threading tasking system featuring thread-pool,
+ task-groups, and lock-free task queue.
+
+- ZLIB:
+
+ - Added needed include directories to CMake script when using new
+ CMake system. Cleanup.
+
+
+
+
+G3toG4
+
+- Cleanup CMake build, removing obsolete granular library options and
+ explicit include_directories.
+
+
+
+General Processes
+
+- Biasing
+
+ - G4ImportanceProcess: added process type as fParallel.
+ - Fixed Coverity defect warnings for data initialisation.
+
+- Cuts
+
+ - Revision for use of c++11 constructs. Code cleanup and formatting.
+
+- Management
+
+ - G4ProcessManagerMessenger: use cache pointer of selected particle
+ in the G4ParticleTable class.
+ - G4ProcessTable: enabled deletion of all processes except
+ G4Transportation at the end of run.
+ - Fixed Coverity warning for uninitialised data in G4VProcess.
+ - C++11 revision and code cleanup/formatting.
+
+- Optical
+
+ - Added second wavelength shifting process, G4OpWLS2, within the same
+ material.
+ - Use new ConstPropertyExists(int) method rather than passing strings.
+ - G4OpRayleigh, G4OpAbsorption, G4OpMieHG, G4OpWLS, G4OpWLS2: moved to
+ new G4OpticalParameters class to control simulation parameters.
+ - G4OpRayleigh: avoid double deletion of property vectors.
+ - G4OpBoundaryProcess: increase geometry tolerance to kCarTolerance.
+ - Fixed reading of Davis LUT data out of bounds.
+ Addressing problem report
+ #2287.
+ - Code cleanup/formatting and improved readability.
+
+- Parameterisation
+
+ - Introduced general facilities based on GFlash implementation to
+ facilitate multiple hit (energy & position) creation from fast
+ simulation models.
+ - G4FastSimulationHelper: merged ActivateFastSimulation() calls for mass
+ and parallel geometry cases.
+ - G4FastSimulationManager, G4VFastSimulationModel: removed redefinition
+ of G4Envelope type.
+ - Added sanity check for root logical volumes in regions for
+ G4GlobalFastSimulationManager. UI command /param/showSetup works also
+ if no parallel world is present.
+ - Fixed minor Coverity defect for uninitialised data in G4FastStep.
+
+- Scoring
+
+ - G4ParallelWorldProcess, G4ParallelWorldScoringProcess: use new PDG
+ code for optical photon, "-22".
+ - G4ParallelWorldProcess: make some private methods and data members
+ protected so that this class can be extendable.
+
+- Transportation
+
+ - Substantial reorganisation of G4Transportation::AlongStepGPIL() to use
+ values already in cache, to reduce the number of branches, and to use
+ extra local variables for track properties to avoid indirections.
+ Resulting in a persistent reduction of instruction-TLB misses.
+
+
+
+
+Geometry
+
+- Magnetic field
+
+ - New class G4DriverReporter to print progress of drivers.
+ - New templated classes to avoid virtual calls for field, equation,
+ steppers (from Google Summer of Code 2014 project): equation of motion
+ is now templated on the field type; steppers are templated on the type
+ of equation and the number of integration variables.
+ These classes can be combined also with the templated drivers to avoid
+ virtual calls in all the levels up to the chord finder's call to
+ the integration driver.
+ - The default integration method for field propagation in a pure magnetic
+ field is changed. The constructor of G4ChordFinder by default uses the
+ new templated stepper G4TDormandPrince45 in place of
+ G4DormandPrince745.
+ - The types of templated steppers currently available include
+ the efficient, embedded Runge-Kutta intermediate order steppers:
+
+ - G4TDormandPrince45: based on G4DormandPrince745, embedded
+ 5th order; the default.
+ - G4TCashKarpRKF45: based on G4CashKarpRKF45, 5th order;
+ first embedded RK.
+
+ These are the most advanced templated steppers.
+ G4TDormandPrince45 provides an endpoint derivative (FSAL) and can be
+ used with interpolation.
+ - The second type of templated steppers are non-embedded of 4th
+ and 3rd order:
+
+ - G4TClassicalRK4: based on G4ClassicalRK4, 4th order;
+ robust and the old default;
+ - G4TSimpleHeum: based on G4SimpleHeum, 3rd order; a
+ lower order alternative;
+
+ which break up a step into half steps to estimate error, meaning
+ they need several additional field evaluation calls than embedded
+ steppers of the same order.
+ The reliability of their error estimation has different properties; so
+ it may be more robust in some cases.
+ Primarily for comparison and cross-checking of results.
+ - The final available type of low order templated steppers are very low
+ order:
+
+ - G4TSimpleRunge: based on G4SimpleRunge, 2nd order;
+ - G4TExplicitEuler: based on G4ExplicitEuler, 1st order,
+ lowest order (the simplest checks only).
+
+ only for tests or specialised uses.
+ - Additional intermediate and higher-order steppers are not yet
+ available in templated form.
+ - Adapted templated G4TDormandPrince45 for use with G4InterpolationDriver.
+ For a stepper to be used with this, it must implement the method
+ GetSpecificEquation().
+ Templated steppers must provide a return type which is the exact
+ equation type of the template.
+ - Experimental versions of fields with inline methods (G4TUniformMagField
+ and G4TQuadrupoleMagField) demonstrate how the field evaluation
+ GetFieldValue() can also be inlined. Meant for use if the evaluation is
+ simple -- and to be avoided if it is complex when inlining it could
+ increase the code size significantly.
+ - Configured G4ChordFinder to use templated G4TDormandPrince45 as the
+ default stepper for magnetic fields (when one is not chosen explicitly
+ by the application). Speed improvement is observed in benchmarks.
+ Note: currently it uses the simpler G4InterpolationDriver
+ in place of a customised G4BFieldIntegrationDriver which
+ multiplexed an interpolation driver for short steps with a
+ helix-based driver for long steps.
+ Applications with many large-angle steps in magnetic field may
+ perform more reliably and faster by restoring the use of the customised
+ driver - e.g. by using the G4ChordFinder constructor with nullptr
+ as third argument and fourth argument stepperDriverId=4.
+ - G4VIntegrationDriver and dependent driver classes: added new virtual
+ method StreamInfo(), and used it to implement their operator<<().
+ - G4MagInt_Driver: fixed max iterations & clarified that its method
+ ComputeNewStepSize() does not (yet) respect maximum reduction factor
+ (0.1); this is to enable comparisons with new G4IntegrationDriver<>
+ implementation.
+ - G4OldMagIntDriver maintains all old behaviour of G4MagInt_Driver.
+ - In G4MultiLevelLocator, added ability to record in a 'whiteboard',
+ the start/end steps of integration intervals, to allow one to diagnose
+ issues like negative or zero steps occurrences. Includes new classes
+ G4LocatorChangeLogger and G4LocatorChangeRecord.
+ - G4PropagationInField: improved ClearPropagatorState() method.
+ - Implemented move constructor and operator for G4FieldTrack.
+
+- Management
+
+ - Added deleted declarations for copy constructor and assignment operators
+ on store singletons. Based on
+ GitHub PR#12 report.
+ - Reduced size of G4LogicalVolume objects by reordering class members.
+ - Fix in the calculation of normal in G4UAdapter::DistanceToOut().
+ - Adopt new convention for location of headers in VecGeom for wrappers.
+
+- Navigation
+
+ - Enabled "check-mode" for G4PropagatorInField and G4VIntersectionLocator.
+ Enable use of whiteboard for logging/debugging in G4MultiLevelLocator,
+ if "check-mode" in navigation is being activated through UI command.
+ - Reordered data members in G4Navigator, to reduce object size.
+ - G4ReplicaNavigation: relaxed condition for step correction in
+ ComputeStep(), to reduce cases of zero steps in combined rho/phi
+ replications.
+ - Fixed Coverity defects in G4RegularNavigation for uninitialised data.
+ - Added G4GeomTestVolume::TestOverlapInTree(), alternative method for
+ testing overlaps on a tree of volumes, avoiding to check hierarchies
+ from copies of the same volume in the tree. Considerably speeding up
+ recursive overlaps check through UI commands.
+
+- Solids (CSG)
+
+ - G4Box: migration to use G4QuickRand in GetPointOnSurface().
+ - G4CutTubs: implemented specific GetCubicVolume() and GetSurfaceArea();
+ revised implementation in GetPointOnSurface(), now faster and uniform;
+ reimplemented IsCrossingCutPlanes(), to now reports a problem only in
+ case cut planes are crossing inside the lateral surface; removed
+ obsolete internal method GetMaxMinZ().
+ - G4Trd: added two pre-calculated values for fast calculation of lateral
+ areas; revised implementation in GetPointOnSurface().
+ - G4Trap: fixed calculation of normal for points on edge in
+ SurfaceNormal(). Improved code for Inside().
+ Added array with precalculated face areas; added
+ SetCachedValues() method and revised implementation in
+ GetPointOnSurface().
+ - G4Tubs: revised implementation in GetPointOnSurface().
+ - G4Sphere: optimised implementation of InitializeThetaTrigonometry(),
+ replacing call to std::tan() with pre-calculated quantities.
+ Addressing problem report
+ #2289.
+ - G4CSGSolid: explicit implementation of G4RandomRadiusInRing(rmin,rmax)
+ based on G4QuickRand.
+ - Adopt new convention for location of headers in VecGeom for all
+ wrappers.
+
+- Solids (Specific)
+
+ - G4Polycone, G4GenericPolycone, G4Polyhedra: implemented specific
+ GetSurfaceArea(), GetCubicVolume(); no longer relying on MC method.
+ - G4Polycone: Revised GetPointOnSurface(); added protected auxiliary
+ method SetSurfaceElements(); removed GetPointOnCone(), GetPointOnTubs(),
+ GetPointOnCut() and GetPointOnRing().
+ - G4GenericPolycone: revised GetPointOnSurface(); added protected
+ auxiliary method SetSurfaceElements().
+ - G4Polyhedra: revised GetPointOnSurface(); added protected auxiliary
+ method SetSurfaceElements(); removed GetPointOnPlane() and
+ GetPointOnTriangle().
+ - Added GetTwistedFaceSurfaceArea() in G4GenericTrap and fixed
+ calculation of surface area in unit tests.
+ - Adopt new convention for location of headers in VecGeom for all
+ wrappers.
+
+- Volumes
+
+ - Use std::map instead of std::vector to define
+ G4LogicalBorderSurfaceTable, to speedup search of surfaces in large
+ tables. Addressing
+ GitHub PR#6.
+ - G4PVPlacement: in CheckOverlaps(), added keeping of bounding box from
+ previous solid and complementary comparison of bounding spheres.
+
+
+
+
+Global
+
+- G4Physics2DVector: extended number of characters in the table dump from 5
+ to 8; use similar algorithm for bin selection as in 1D vector;
+ if any dimension is less than 2 throw a G4Exception.
+- G4PhysicsVector: use same code for interpolation for all types of
+ PhysicsVector; removed obsolete unused methods; maximally use const
+ variables; preserve precision of printout.
+- G4PhysicsLinearVector: added checks on vector length: if it is less
+ than 2 throw a G4Exception.
+- G4PhysicsLogVector: added checks on vector length: if it is less
+ than 3 throw a G4Exception.
+- G4PhysicsLinearVector, G4PhysicsLogVector: fixed scale of energy; this
+ problem does not affect results in general, it fixes data table scale
+ and may change dEdx and cross-sections numerically on small level.
+ More accurate checks in class constructors. Fixed Coverity warnings.
+- Added new constructor for G4PhysicsOrderedFreeVector.
+- Added G4Backtrace header for printing backtraces from raised signals.
+ A more generic implementation of G4FPEDetection that can catch FPE issues
+ but, by default, does not interfere with it. The default backtraced signals
+ are: SIGQUIT, SIGILL, SIGABRT, SIGKILL, SIGBUS, SIGSEGV.
+ The default signals can be overridden within user-code before and after the
+ creation of the run-manager (See "Usage" section in G4Backtrace description).
+ The default signals can be overridden via environment variable G4BACKTRACE.
+ Can be enabled by setting GEANT4_BUILD_BUILTIN_BACKTRACE option at
+ configuration.
+- Added new G4Profiler header; implemented new profiling routines for
+ TiMemory which allow per-{run,event,track,step} configuration w.r.t. when
+ to profile, what to collect in the profiler, and how to label the entries.
+ Also, includes user-profiling config and macros. Use of TIMEMORY_AUTO_TIMER
+ is now deprecated.
+- Removed condition restricting to __x86_64__ architectures for
+ macOS configuration in tls.hh.
+- C++11 revision in 'management' and 'HEPNumerics' modules; general
+ code cleanup/formatting.
+- Updated e_SI value for electron charge in G4SIunits.h, based
+ on May 2019 redefinition of SI units.
+- Removed use of deprecated G4USE_STD11 flag.
+- Fix to CMake script to support new CMake system.
+- Updated date of release for 10.7.
+
+
+
+Graphical Representations
+
+- HepPolyhedron, G4Polyhedron: added HepPolyhedronTet.
+- G4VisAttributes: clarify that if number of cloud points (for cloud style
+ drawing) is <= 0, this is to be interpreted as under control of the
+ viewer, i.e., to be decided by the viewer. Otherwise this number is to be
+ drawn. Zero is the default value, which may be changed by invoking the
+ method SetForceNumberOfCloudPoints(); also possible to force cloud
+ drawing with SetForceCloud().
+- Fixed graphical representation for G4Hype shape.
+ Addressing problem report
+ #2295.
+- Fixed minor Coverity defect in BooleanProcessor::assembleFace().
+- Improved deprecation message for G4AttDefs::operator<<().
+
+
+
+Hadronic Processes
+
+- Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+- Cross sections
+
+ - G4ElNeutrinoNucleusTotXsc: new class for (nu_e,anti_nu_e)-nucleus
+ cross-sections.
+ - G4PhotoNuclearCrossSection: corrected threshold for
+ gamma + p -> pi0 + p, extended for use on 3H and 3He targets.
+ - G4HadronNucleonXsc: general clean-up of the code; use PDG number
+ instead of particle pointer; removed instantiation of most of hadrons;
+ optimisation of parameters.
+
- G4IonProtonCrossSection: added cross-sections for light ions.
+ - G4ParticleInelasticXS, G4NeutronCaptureXS, G4NeutronElasticXS,
+ G4NeutronInelasticXS: updates in support for G4PARTICLEXS-3.x data
+ structure - for capture and elastic applied low-energy parameterisation
+ starting from second energy point of the data set (better agreement
+ with HP cross-sections); exclude special treatments for Hydrogen and
+ Helium isotopes, because data for fission reactions are available in
+ the new data set; extended list of isotopes.
+ Fixed fusion cross-sections.
+ Moved run-time method GetPhysicsVector() to be inlined; added G4VERBOSE
+ compilation flag and general clean-up of classes (reuse existing high
+ energy Glauber-Gribov cross-section instances).
+ - G4EMDissociationCrossSection: fixes to avoid numerical crashes for ions
+ at low energies (now setting to zero the cross-section for ion kinetic
+ energies below 2 MeV) and to avoid to create unphysical clusters of
+ neutrons (now forbidding to remove one proton from any hydrogen ions).
+ Addressing problem report
+ #2254.
+ - Added new cross-section class G4GammaNuclearXS.
+ - In G4ParticleInelasticXS, added gamma cross-section.
+ - Removed unused class G4ProjectileFragmentCrossSection.
+ - Fixed compilation warnings on clang-10.
+
+- Management
+
+ - G4HadronicProcess: fixed Coverity defect warning in EP check method for
+ the case when primary particle remains in the interaction.
+ Fixed warnings when environmental variables G4Hadronic_*Level are used.
+ Removed unused flag.
+ - G4HadronicProcessStore: in the method Dump(), check the internal
+ verbosity level as well as the newly introduced global hadronic
+ verbosity level, returning immediately (without printing anything) if
+ one of these is 0. Extended default initialisation printout to sigma-,
+ D-, B-. Removed check for G4HadronicException where it cannot be;
+ limit printout on kaon0 in final state.
+ Extended default initialisation printout to anti_lambda.
+ Use verbosity level from the G4HadronicParameters class, added
+ printout of cross-section factor.
+ - G4HadronicEPTestMessenger, G4HadronicProcess: recommended for users
+ the new UI commands /process/had/heptst/*Level, while the
+ old ones /heptst/*Level* are deprecated, but still valid,
+ and will be removed in the next major release, Geant4 11; kept the
+ environmental variables G4Hadronic_*Level for system testing,
+ but not recommended for users.
+ - Removed use of deprecated G4USE_STD11 flag.
+ - G4HadLeadBias: replaced 'G4int' with 'size_t' to fix warnings
+ on Windows.
+- Models Management:
+
+ - G4HadronicInteractionRegistry: delete HP and PHP at the end of run.
+ - G4HadronicInteraction: provide default implementation for all virtual
+ methods.
+ - G4VHighEnergyGenerator, G4VIntraNuclearTransportModel,
+ G4VPreCompoundModel: cleaned up: removed old commented lines,
+ code format, C++11 keywords.
+
+
+- Processes
+
+ - G4MuNeutrinoNucleusProcess, G4ElNeutrinoNucleusProcess: extended to
+ nu_mu, anti_nu_mu, nu_e and anti_nu_e.
+ - Removed the inelastic processes for heavy hadron - nucleus interactions,
+ no longer necessary because similar inelastic processes are created by
+ G4HadronicBuilder.
+
+- Stopping
+
+ - G4HadronicAbsorptionFritiof,
+ G4HadronicAbsorptionFritiofWithWithBinaryCascade: simplified
+ instantiation of the FTF model, and avoid to destruct its components.
+ - G4MuonicAtomDecay: fixed Coverity defect warning.
+
+- Utilities
+
+ - G4HadronicParameters: added modifiers for Cascade-FTF transition.
+ Created the new messenger.
+ Added Get/Set methods for cross-section scaling factors separately
+ for nucleons, pions, other hadrons, and leptons.
+ Here is an example on how to use them:
+
+ - First enable the scaling of cross section (by default disabled):
+ G4HadronicParameters::Instance()->SetApplyFactorXS( true );
+ - Scaling up the nucleon inelastic cross sections by 10% :
+ G4HadronicParameters::Instance()->SetXSFactorNucleonInelastic( 1.10 );
+ - Scaling down the pion elastic cross sections by 12% :
+ G4HadronicParameters::Instance()->SetXSFactorPionElastic( 0.88 );
+ - Scaling up all the other hadrons inelastic cross sections by 20% :
+ G4HadronicParameters::Instance()->SetXSFactorHadronInelastic( 1.20 );
+
+ Added high energy limit for low-energy physics.
+ Disabled charm and bottom hadrons by default.
+ - G4HadronicParametersMessenger: created new messenger class for
+ G4HadronicParameters. Added the global verbosity level for hadronics:
+ with the UI command /process/had/verbose 0 the print-out
+ of hadronic physics is completely switched off.
+ - G4HadronicParameters, G4HadronicParametersMessenger: added parameter
+ for the upper energy limit (default 100 TeV); for instance, to set
+ it to 1 PeV, /process/had/maxEnergy 1000.0 TeV.
+ Added Boolean switch that allows to apply the Cosmic Ray (CR)
+ coalescence algorithm to the secondaries produced by a string model
+ (which can be useful in particular for Cosmic Ray applications); by
+ default it is disabled, and to switch it on:
+ /process/had/enableCRCoalescence true
+ - G4HadFinalState: fixed warning on Windows for implicit conversions
+ from 'size_t' to 'G4int'.
+ - Completely disable G4HadSignalHandler.
+- Models Utilities:
+
+ - G4Fragment: introduced an optional parameter to switch off some
+ warnings. By default, nothing is changed (i.e. the warnings are
+ printed out as usual); only for electromagnetic dissociation, the
+ parameter is set to switch off otherwise too frequent warning messages.
+ Addressing problem report
+ #2254.
+ - G4KineticTrack: added initialization of an array as suggested by
+ Coverity. Used consistently pre-increment and pre-decrement instead
+ of post-increment and post-decrement, respectively.
+ - Fixed compilation warnings on clang-10.
+
+
+- Abla
+
+ - Fixed reported Coverity defects.
+
+- Bertini Cascade
+
+ - Fixed non-conservation warnings coming from G4HadronicProcess due to
+ sub-threshold reactions in Bertini. Sub-threshold reactions are now
+ treated as having a "non-interaction" final state, that is, the initial
+ particles are simply copied to the final state.
+ - Fixed compilation warnings on clang-10.
+
+- Binary Cascade
+
+ - G4BinaryCascade: fixed memory leak at exit.
+
+- De-excitation
+
+ - G4PhotonEvaporation, G4DeexPrecoParameters, G4DeexParametersMessenger:
+ added extra flag 'IsomerProduction'; if enabled, photon evaporation
+ samples the time of gamma transition; added C++ interface and UI command
+ allowing to set this flag; radioactive decay constructor should enable
+ this parameter. Addressing problem report
+ #2226.
+ - G4DeexPrecoParameters: in method Dump(), check the global verbosity
+ level of hadronics (if zero, do not print anything).
+ Verbose level is defined by G4HadronicParameters class or by the local
+ verbose level.
+ - G4DeexParametersMessenger: removed obsolete UI command.
+ - G4NuclearLevelData: use 'Zmax' for initialisation before the run.
+ Reduced usage of mutex locks; read all level data at beginning of
+ the run.
+ - G4ExcitationHandler: verbose level is defined by G4HadronicParameters
+ class or by the hardcoded local verbose level defined only for
+ debugging. Use 'Zmax+1' instead of 'Zmax' for nuclear level
+ initialisation.
+ - Fixed compilation warnings on clang-10.
+
+- Elastic scattering
+
+ - G4HadronElastic: added numerical protection against precision loss.
+ Addressing problem report
+ #2253.
+ - G4QuasiElRatios: extended to charmed and bottom hadrons.
+ The simplified treatment adopted is the following: to treat all heavy
+ mesons having constituent charm or bottom quark as a meson with strange
+ quark, like K-, and all heavy mesons having constituent anti-charm or
+ anti-bottom anti-quark as a meson with anti-strange quark, like K+;
+ for baryons, all heavy baryons are treated as Lambda and all heavy
+ anti-baryons are treated as anti-proton/anti-neutron.
+ Fixed memory leak at exit.
+
+- Electromagnetic Dissociation
+
+ - G4EMDissociation: fix Lorentz kinematics, responsible for causing
+ energy-momentum violations. Switched off too frequent warning messages
+ by G4Fragment. Addressing problem report
+ #2254.
+
+- INCLXX
+
+ - G4INCLXXInterfaceStore: in method EmitBigWarning(), check the global
+ verbosity level of hadronics (if zero, do not print anything).
+ - Fixed compilation warnings on clang-10.
+
+- Lepto-nuclear
+
+ - G4NuMuNucleusCcModel, G4NeutrinoNucleusModel: new access methods
+ and minor fixes in in nu-mu nucleus model.
+ - Added classes G4ANuElNucleusCcModel and G4ANuElNucleusNcModel
+ for anti_nu_e. Initialization from G4PARTICLEXS (neutrino/anti_nu_e).
+ - Added classes G4NuElNucleusCcModel and G4NuElNucleusNcModel
+ for nu_e. Initialization from G4PARTICLEXS (neutrino/nu_e).
+ - Added classes G4ANuMuNucleusCcModel and G4ANuMuNucleusNcModel
+ for anti_mu_nu. Initialization from G4PARTICLEXS (neutrino/anti_nu_mu).
+ - G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel:
+ rearrangement of initialisation methods and arrays.
+ Fixes in CoherentPion() method, cleanup of Cc and Nc.
+ - G4NeutrinoNucleusModel: added K+, K- in final state.
+ - Fixed Coverity warnings for defects.
+
+- Particle High Precision
+
+ - Allow printout only if the global hadronic verbosity level is not
+ zero.
+ - G4ParticleHPHash, G4ParticleHPCaptureFS: fixes for implicit conversion
+ between 'size_t' and 'G4int', to avoid warnings on Windows.
+ - G4FissionProductYieldDist: fixed thread competition in method
+ G4GetFission(), by placing an auto lock.
+ Addressing problem report
+ #2234.
+ - Fix in constructor of G4ParticleHPChannel so that two fission fragment
+ models can be active at the same time, if Wendt model is active;
+ turn off standard fragment production model.
+ Addressing problem report
+ #2233.
+ - Use GEANT4_BUILD_PHP_AS_HP CMake option to enable
+ PHP_AS_HP, retiring the use of PHP_AS_HP environment
+ variable (i.e. still valid, but deprecated, to be removed at the next
+ major release, Geant4 11).
+ - G4ParticleHPMessenger: added new UI macro command
+ use_Wendt_fission_model related to the use of the Wendt
+ fission model; make sure that no more than one fission fragment model
+ is active.
+ - G4ParticleHPManager: added a new variable related to the use of the
+ Wendt fission model; throw a JustWarning exception when the
+ environmental variables are used (to remind that they are still valid
+ but deprecated, and will be removed in future version; added new method
+ DumpSetting() can be called somewhere to printout once the values of
+ its parameters.
+ For completeness, here is the complete list of ParticleHP UI commands:
+
+ - Force use of the Photon Evaporation model, instead of the
+ neutron capture final state (default: false)
+ /process/had/particle_hp/use_photo_evaporation true
+ - Use only exact isotope data files, instead of allowing nearby
+ isotope files to be used, if the exact file is not available,
+ the cross section will be set to zero (default: false):
+ /process/had/particle_hp/skip_missing_isotopes true
+ - Switch off the Doppler broadening due to the thermal motion of the
+ target nucleus, with a significant CPU performance advantage
+ (default: false):
+ /process/had/particle_hp/neglect_Doppler_broadening true
+ - Disable the adjustment of final state for getting better
+ conservation (default: false):
+ /process/had/particle_hp/do_not_adjust_final_state true
+ - Enable the generation of fission fragments (default: false):
+ /process/had/particle_hp/produce_fission_fragment true
+ - Enable Wendt fission model (default: false):
+ /process/had/particle_hp/use_Wendt_fission_model true
+ - Enable the use of NRESP71 model for neutron on Carbon reaction
+ (default: false):
+ /process/had/particle_hp/use_NRESP71_model true
+ - Set verbose level of the ParticleHP package (default: 1):
+ /process/had/particle_hp/verbose ...
+
+ - G4ParticleHPInelastic, G4ParticleHPManager: enabled printout of the
+ physics parameters (only once and with a format similar to
+ Precompound/de-excitation and RadioativeDecay).
+ - G4ParticleHPChannel: moved environmental variable related to the use
+ of the Wendt fission model from this class to G4ParticleHPManager.
+ - G4ParticleHPContAngularPar, G4ParticleHPInelasticBaseFS,
+ G4ParticleHPEnAngCorrelation, G4ParticleHPFinalState: replaced use of
+ the environmental variable G4PHP_DO_NOT_ADJUST_FINAL_STATE
+ with the equivalent in G4ParticleHPManager, GetDoNotAdjustFinalState().
+
+Parton-String
+
+ - Improved treatment of antibaryon interactions in QGS.
+ In G4QGSMFragmentation, corrected the treatment of low-mass
+ diquark-antidiquark strings. In addition to this, introduced the Mt
+ distribution of produced hadrons.
+ In G4VLongitudinalStringDecay, introduced in SetMinimalStringMass()
+ a check that the strings are of allowed type: quark-antiquark,
+ diquark-antidiquark, quark-diquark and antiquark-antidiquark.
+ Introduced also for diquark-antidiquark strings a special algorithm
+ (already present for the other types of allowed strings) for treating
+ low-mass strings with masses below known hadrons.
+ - Improved agreement of FTF simulations with NA49 experimental data (on
+ Pt-Xf correlations for various particles produced in pp interactions at
+ 158 GeV/c).
+ - In G4QuarkExchange, the reggeon exchanges are now treated as
+ annihilation and creation of quark-antiquark pairs (to reflect in
+ inelastic processes the non-vacuum reggeon exchanges present in
+ antiparticle-particle elastic scattering amplitudes).
+ - G4VLongitudinalStringDecay, G4LundStringFragmentation,
+ G4ExcitedStringDecay: inherit from G4HadronicInteraction; destruction
+ of these models at the end of run is now done by the hadron model
+ store; removed implementations of private operators.
+ - G4VLongitudinalStringDecay: in the method SetMinMasses(), set the
+ constituent masses of charm and bottom quarks; introduced also a new
+ pre-processor option for debugging heavy hadrons, switched off by
+ default; made the logic clearer for Coverity. Code cleanup. Improved
+ comments.
+ - G4VStringFragmentation: use inheritance from G4HadronicInteraction;
+ removed implementations of private operators.
+ - G4SPBaryonTable: changed return type of the method 'length()' from
+ 'double' to 'size_t', to fix warnings on Windows.
+ - G4FTFModel: attempt to fix a crash rarely observed in pion+proton
+ reaction: added tolerance of 1.e-10 for numerical computation;
+ cleaned-up sampling of Pt for residual nucleons (limit argument for
+ G4Exp to 200 instead of 1e+9). Extended debug printout; use
+ pre-increment instead of post-increment in loops; removed commented
+ lines and unused variables.
+ - G4FTFModel, G4FTFParticipants: clean-up: removed unused methods,
+ delete operators, use of C++11 keywords.
+ - G4VParticipants, G4VPartonStringModel, G4VStringFragmentation,
+ G4StringModel: clean-up; removed unused methods, delete operators,
+ use of C++11 keywords.
+ - G4VPartonStringModel: introduced a new pre-processor option for
+ debugging heavy hadrons, switched off by default.
+ - G4QGSModel: clean-up; removed unused methods, delete operators, use of
+ C++11 keywords, moved inline implementation to source.
+ - G4QGSParticipants: added protection for G4Exp, fixing outstanding
+ precision loss in gamma+proton interactions.
+ - G4DiffractiveExcitation: extended to handle heavy (charm and bottom)
+ hadrons; introduced also a new pre-processor option for debugging
+ heavy hadrons, switched off by default. Added protection against
+ inexisting excited hyperon states (Sigma* and Xi*).
+ Implemented new splitting of excited hadrons into quark-antiquark or
+ quark-diquark in the method CreateStrings().
+ Additional code improvements.
+ - G4FTFAnnihilation: removed useless check against inexisting excited
+ hyperon states. Added initialization of 2-dimensional arrays as
+ suggested by Coverity. Used consistently pre-increment instead of
+ post-increment.
+ - G4FTFParameters: extended FTF configuration interface to include
+ parameters of quark exchange with and without excitation, for
+ baryon and pion projectiles.
+ - G4LundStringFragmentation, G4QGSMFragmentation: if the flag for heavy
+ (charmed and bottom) hadrons is enabled, then non-zero probabilities
+ for c-cbar and b-bbar creation from the vacuum are set, allowing
+ charmed and bottom hadrons to be created during the string fragmentation
+ of ordinary (i.e. not heavy) projectile hadron nuclear reactions.
+ - G4LundStringFragmentation: extension to charm and bottom quarks of the
+ methods Quark_AntiQuark_lastSplitting() and Quark_Diquark_lastSplitting();
+ added protections in the method FragmentString() to avoid rare crashes
+ seen with heavy hadrons. Introduced a new parameter (as a class data
+ member), a kind of "temperature" for sampling the Pt of produced
+ hadrons; this parameter has been tuned for different fragmentation
+ processes. The string direction (one of string's properties, whose
+ value can be either +1 for projectile-like strings or -1 for target-like
+ strings) is now treated correctly and used to invert the results of the
+ string fragmentation (in the string rest frame) when the string
+ direction is -1.
+ - G4HadronBuilder: fixed condition in the method Barion() to take into
+ account the extension to charm and bottom quarks; moreover, for both
+ Meson() and Barion() methods, we have to force by hand that the heavy
+ hadron produced by the string fragmentation is one of the few available
+ in Geant4 (in particular, all heavy hadron resonances are transformed
+ into close heavy hadron ground states). Introduced also a new
+ pre-processor option for debugging heavy hadrons, switched off by
+ default.
+ - G4ExcitedStringDecay: added protection in the FragmentStrings() method
+ to avoid rare crashes seen with heavy hadrons.
+ - G4BaryonSplitter, G4SPBaryon: extension to charmed and bottom
+ baryons and anti-baryons.
+ - G4SingleDiffractiveExcitation, G4QGSDiffractiveExcitation,
+ G4QuarkExchange: in ExciteParticipants() method of these classes,
+ extension to charmed and bottom hadrons by assuming a minimum
+ projectile diffractive mass equal to the PDG mass plus 250 MeV;
+ in G4QuarkExchange, assumed also 50% for the probability of projectile
+ diffraction.
+ - G4Reggeons: in the constructor, replaced Omega_cc (PDG code #4432)
+ with Omega_c (PDG code #4332); added comments.
+ - G4FragmentingString: erased some inconsistencies.
+
+QMD
+
+ - G4QMDReaction: added code in ApplyYourself() to get the cross section
+ when the projectile is a pion.
+ Replaced data member G4PiNuclearCrossSection with G4BGGPionElasticXS
+ and G4BGGPionInelasticXS.
+ In G4QMDGroundStateNucleus constructor, move the check for proton or
+ neutron projectile earlier in the code so that the baryon number can
+ be conserved.
+ Addressing problem report
+ #2236.
+
+Radioactive Decay
+
+ - G4RadioactiveDecayBase, G4RadioactiveDecay: in BuildPhysicsTable(),
+ check the global hadronic verbosity level before printing out
+ information.
+ - G4RadioactiveDecayBaseMessenger, G4RadioactiveDecaymessenger,
+ G4RadioactivationMessenger: deprecated old UI commands /grdm/...
+ and introduced new corresponding ones, /process/had/rdm/....
+
+RPG
+
+ - Fixed Coverity warnings for unused variables.
+
+Theo_High_Energy
+
+ - G4CRCoalescence: new class for applying coalescence to the secondaries
+ produced by string model to form deuterons and antideuterons from,
+ respectively, proton-neutron and antiproton-antineutron pairs with
+ close momenta; useful in particular for Cosmic Ray applications.
+ - G4TheoFSGenerator: introduced temporarily dummy treatment of heavy
+ (charm and bottom) projectile hadrons at low energies (below 100 MeV).
+ Cascade models are currently not applicable for heavy hadrons and
+ string models cannot handle them properly at very low energies, so we
+ return as final state the initial state unchanged.
+ Note that, for most applications, this is a safe simplification, giving
+ that the nearly all slowly moving charm and bottom hadrons decay before
+ any hadronic interaction can occur.
+ In method ApplyYourself(), apply G4CRCoalescence to the candidate
+ secondaries produced by the string model, if the corresponding switch
+ is enabled (by default it is disabled).
+ - G4QuasiElasticChannel: use inheritance from G4HadronicInteraction.
+ In G4TheoFSGenerator, do not destruct G4QuasiElasticChannel.
+ - G4QuasiElasticChannel, G4TheoFSGenerator: clean-up; use of C++11
+ keywords and loops, removed unused methods, formatting.
+
+
+
+
+Intercoms
+
+- Added new parameter type 'L' for long int type; added parameter range
+ check for long int and introducing G4UIcmdWithALongInt command type.
+- Added G4ProfilerMessenger class.
+- Revision for c++11 constructs, code cleanup and formatting.
+- Fixed Coverity defect for uninitialised data in G4UImanager.
+- Removed unnecessary use of deprecated G4USE_STD11 flag in G4AnyMethod.
+
+
+
+Interfaces
+
+- G4UIQt: replaced use of setTextColor() with adoption of rich text html
+ tags (improving visibility in macOS Dark Mode).
+ Send G4cout/G4cerr also to std::cout/cerr if in master thread,
+ as workaround to the problem of loss of output in the case of a crash or
+ G4Exception.
+- Fixed deprecation warnings being triggered when using Qt-5.15.
+- Make such that GEANT4_USE_INVENTOR for SoXt activates use of Xm, so there's
+ no need to check for use of Inventor in setting up Xt, only GEANT4_USE_XM.
+- Use CMake AUTOMOC to automatically generate and compile Moc sources
+ and fixed CMake script to support new CMake system.
+- Fixed text typos in printout. Problem report
+ #2285.
+
+
+
+Materials
+
+- G4Material: added two new public methods to add elements to a material
+ with new signature.
+- G4MaterialPropertiesTable: added ConstPropertyExists() method.
+ Added new methods to access/add properties with G4String and
+ std::vector.
+- G4MaterialPropertiesTable, G4MaterialPropertiesIndex: added new
+ properties for scintillation allowing 3 time constants and a second
+ wavelength shifter in the same material.
+- G4OpticalSurface: handle REALSURFACE optical data files zlib-compressed.
+ Requires new data-set G4RealSurface-2.2.
+- G4SurfaceProperty, G4OpticalSurface: some c++11 revision and code
+ formatting; added method to select file to read; replaced long if/else
+ construct with switch/case.
+- Added G4MicroElecMaterialStructure, G4MicroElecSiStructure classes for
+ micro-dosimetry simulation.
+- G4OpticalSurface: added protection against access to optical LUT out of
+ array bounds. Addressing problem report
+ #2287.
+- G4Element, G4NistManager, G4NistMaterialBuilder: fixed spelling in
+ printouts.
+- Fixed text typos in printout. Problem report
+ #2285.
+
+
+
+Parameterisations
+
+- GFLASH:
+
+ - Substituting Gamma calculation with corresponding STL functions, as
+ suggested in
+ GitHub PR#3.
+ Makes LnGamma calculation 1.4 times faster,
+ and Gamma 1.9 times faster.
+ - GFlashSamplingShowerParameterisation: added X0eff calculation.
+ - Delete local tuning data in GFlashXXXShowerParameterisation class
+ destructors.
+
+
+
+
+Particles
+
+- G4ParticleTable: create/destruct only one instance of G4IonTable and
+ associated messenger; define assignment operator and copy constructor
+ as deleted; added cache with pointer to selected particle and get/set
+ methods.
+- G4ShortLivedConstructor: improved constitutent masses of heavy diquarks.
+- G4DynamicParticle: added GetBeta() method.
+- G4OpticalPhoton: define PDG code as "-22".
+- G4NuclideTable: added destruction of messenger.
+- Added move operators to G4DynamicParticle.
+ Code revision for c++11 and cleanup in 'management' module.
+
+
+
+Persistency
+
+- Minor c++11 review. Code cleanup and formatting.
+- ASCII:
+
+ - Fixed Coverity defects warnings.
+
+- GDML:
+
+ - Fixed reading and writing of const properties of materials.
+ Matrices of size 1x1 are now used both for writing out and reading in
+ of const material. This fixes the inconsistency (using constants by the
+ writer) found in the code. Const material properties with the same name
+ (in different materials) are now written out with the properties table
+ address appended.
+ - Added new method SetOutputFileOverwrite(G4bool) to the G4GDMLParser,
+ allowing to set the flag to enable overwriting of the output GDML file.
+ Addressing problem report
+ #2288.
+
+
+
+
+Physics lists
+
+- Builders:
+
+ - Revised all classes to remove unnecessary members, not destruct models
+ and cross-sections and use updated instantiation of string models.
+ This should help to achieve full deletion of hadronic physics objects
+ at the end of run.
+ - G4QGSPAntiBarionBuilder: created new class to handle anti_proton and
+ anti_neutron at high energies with QGSP. For the light anti-ions
+ (anti_deuteron, anti_triton, anti_He3, and anti_alpha), currently QGSP
+ cannot handle them, therefore FTFP is used.
+ - G4VHyperonBuilder, G4HyperonBuilder, G4HyperonQGSPBuilder: new classes
+ to allow alternative builders for hyperons (and anti-hyperons).
+ The class G4HyperonQGSPBuilder uses QGSP model to handle hyperons (and
+ anti-hyperons) at high energies.
+ - G4HyperonFTFPBuilder: now it derives from G4VHyperonBuilder (physics
+ behind remains unchanged, i.e. it is still based on BERT and FTFP
+ models).
+ - G4HadronicBuilder: new utility class to build kaons, hyperons, and
+ charm and bottom hadrons.
+ - Added second wavelength shifter optical process to the
+ OrderingParameterTable.
+
+- Constructors:
+
+ - decay
+
+ - G4RadioactiveDecayPhysics: enabled flag for isomer production,
+ required after fix to problem report
+ #2226.
+ Updated initialisation to be coherent with recent updates in
+ initialisation of atomic de-excitation. Added EM parameters
+ definition in ConstructProcess(...); if atomic de-excitation
+ is not defined add it in each thread but not change EM parameters
+ in a thread; should address several problems observed in tests.
+ - G4DecayPhysics, G4RadioactiveDecayPhysics, G4SpinDecayPhysics,
+ G4UnknownDecayPhysics: general cleanup. Removed thread local
+ pointers, avoid deleting objects; use C++11 keywords; use standard
+ signatures for constructors; define builder type for the main
+ constructor G4DecayPhysics (bDecay, for others bUnknown).
+
+ - electromagnetic:
+
+ - G4GammaGeneralProcess: fixed problem of a concrete process
+ assigning a step to post step point. Improved printouts and made
+ some methods protected.
+ - G4OpticalPhysics, G4OpticalPhysicsMessenger: added settings for
+ G4Scintillation to use 3 time constants. Added second wavelength
+ shifter optical process to constructors.
+ - G4EmBuilder: new utility class to allow reducing code duplication
+ for standard and low-energy EM physics constructors. Includes flag
+ for allowing choice of multiple-scattering model.
+ - G4OpticalPhysics, G4OpticalPhysicsMessenger, G4OpticalProcessIndex:
+ moved optical physics parameters to new G4OpticalParameters class.
+ Removed G4OpticalPhysicsMessenger class and replaced by
+ G4OpticalParametersMessenger. Removed G4OpticalProcessIndex class,
+ with code now in G4OpticalParameters.
+ - G4EmStandardPhysics_option1: switch to use new G4EmBuilder utility;
+ fixed StepFunction definition.
+ - G4EmStandardPhysics_option3: switch to use new G4EmBuilder utility;
+ use ICRU90 stopping power data for water and air.
+ - G4EmStandardPhysics_option4: use ICRU90 data.
+ - G4EmStandardPhysicsSS: use the new G4eDPWACoulombScatteringModel
+ for e-/e+ below 100 [MeV] (for testing this new model).
+ - Removed duplicate code by using G4EmBuilder in several constructors,
+ fixed definition of StepFunction, use the same flag as hadronic
+ physics to enable EM interaction of b- and c- mesons and baryons.
+ - G4EmModelActivator: use same options for physics per region as used
+ in EM constructors recently updated.
+ - G4LivermorePolarizedPhysics: use inheritance from
+ G4LivermorePhysics.
+ - G4EmModelActivator: updated multiple-scattering and PAI
+ configurations to address problem reports
+ #2052
+ and #2106.
+ - G4EmDNAModelActivator: extended to extra available DNA options
+ (DNA_Opt2, DNA_Opt4, DNA_Opt4a, DNA_Opt6, DNA_Opt6a, DNA_Opt7).
+ - Optimisation in initialisation of G4EmDNAChemistry_option3.
+ - Use C++11 features in several constructors.
+
+ - gamma_lepto_nuclear:
+
+ - G4EmExtraPhysics, G4EmMessenger: added low-energy limit, set method,
+ and UI command defining low-energy gamma-nuclear model, which is
+ using de-excitation module and providing isomer production and
+ gamma transitions. Added a flag to enable G4GammaNuclearXS
+ cross-section and possibility to use general process for electron
+ and positron; fixed several UI commands.
+ - G4EmExtraPhysics: extension to anti_nu_mu, nu_e and anti_nu_e
+ processes-models.
+
+ - hadron_elastic:
+
+ - G4HadronElasticPhysics: use coherently with inelastic physics
+ builder the new utilities G4HadParticles and G4HadronicBuilder.
+ Instantiate anti-hyperons. Added optional cross-section scaling
+ factors for systematics studies. Use G4HadProcesses and
+ G4PhysListUtil.
+ - G4HadronHElasticPhysics: added elastic scattering for charm and
+ bottom hadrons (needed for FTFP_BERT_TRV).
+ - G4ThermalNeutrons: use G4PhysListUtils to access neutron elastic
+ process.
+
+ - hadron_inelastic:
+
+ - Use the new builder class G4QGSPAntiBarionBuilder to handle
+ anti_proton and anti_neutron at high energies with QGSP.
+ For the light anti-ions - anti_deuteron, anti_triton, anti_He3 and
+ anti_alpha - currently QGSP cannot handle them, therefore FTFP is
+ used.
+ - In all the inelastic physics constructors which are using the
+ builder G4HyperonFTFPBuilder, introduced the new builder
+ G4HyperonBuilder; moreover, the new builder G4HyperonQGSPBuilder
+ is used now in all QGS-based inelastic physics constructor for
+ hyperons (and anti-hyperons) at high energies, while keeping using
+ G4HyperonFTFPBuilder at lower energies.
+ - G4HadronPhysicsFTFP_BERT, G4HadronPhysicsQGSP_BERT,
+ G4HadronInelasticQBBC: added charm and bottom hadrons.
+ Enabled charm and bottom hadronic physics - now available in nearly
+ all physics lists, in particular those of interest for HEP; the main
+ exception is QGSP_BIC and its derived physics lists, which are
+ typically used for low-energy applications.
+ - G4HadronPhysicsQGSP_BIC_HP, G4HadronPhysicsQGSP_BIC_AllHP:
+ refactoring consistently with all others.
+ For G4HadronPhysicsQGSP_BIC_HP, the physics remains unchanged;
+ for G4HadronPhysicsQGSP_BIC_AllHP, the physics remains unchanged
+ except for the transition region between Binary and ProtonHP which
+ is now 190-200 MeV (instead than 199-200), as for light ions.
+ - G4HadronInelasticQBBC: utilities G4HadParticle and
+ G4HadronicBuilder. Fixed neutron and anti-baryon configurations.
+ Added optional cross-section scaling factors for systematics
+ studies. Applied the Binary cascade to pions below 1.5 GeV.
+ - G4HadronInelasticQGSP_BIC, G4HadronInelasticQGSP_BIC_HP,
+ G4HadronInelasticQGSP_BIC_AllHP: added optional cross-section
+ scaling factors for systematics studies; added charm and bottom
+ hadron physics.
+
- G4HadronInelasticQGSP_BERT, G4HadronInelasticQGSP_BERT_HP,
+ G4HadronInelasticQGSP_FTFP_BERT: added optional cross-section
+ scaling factors for systematics studies; added charm and bottom
+ hadron physics; implemented DumpBanner() method; added more c++11
+ keywords.
+ - G4HadronInelasticFTFP_BERT, G4HadronInelasticFTFP_BERT_HP,
+ G4HadronInelasticFTFP_BERT_ATL, G4HadronInelasticFTFP_BERT_TRV:
+ added optional cross-section scaling factors for systematics
+ studies; added charm and bottom hadron physics; c++11 code
+ revision; removed unused headers.
+ - G4HadronInelasticQGSP_BERT and G4HadronInelasticQGSP_BIC: replaced
+ BuildAntiLightIonsQGSP_FTFP() with BuildAntiLightIonsFTFP();
+ currently QGSP cannot be applied to any ion or anti-ion.
+ Allow modification of parameters at 'PreInit' state.
+ - G4HadronInelasticQGSP_FTFP_BERT: enabled charm and bottom hadron
+ physics.
+ - G4HadronPhysicsINCLXX: use inheritance from the base class
+ G4HadronPhysicsFTFP_BERT; removed duplicated code; code clean-up.
+ List of models and applicability intervals are the same;
+ implemented charm and bottom hadron physics and cross-section
+ scaling factors.
+ - In G4HadronPhysicsNuBeam, G4HadronPhysicsShielding,
+ G4HadronPhysicsShieldingLEND, G4HadronPhysicsFTF_BIC,
+ G4HadronPhysicsQGS_BIC and G4HadronPhysicsFTFQGSP_BERT:
+ use inheritence from the base class G4HadronPhysicsFTFP_BERT and
+ removed duplicated code; ensure list of models and applicability
+ intervals are the same; implemented charm and bottom hadron physics
+ and cross-section scaling factors.
+ - G4VHadronPhysics: removed unused and obsolete methods and
+ thread_local methods.
+ - Improved comments and info printout in other physics classes.
+ - Updated README.
+
+ - ions:
+
+ - Cleanup of constructors: fixed names; made all constructor
+ signatures universal, removed thread local members, added
+ c++11 keywords.
+ - Updated README.
+
+ - stopping:
+
+ - Cleanup of constructors: fixed names; made all constructor
+ signatures universal, removed thread local members, added
+ c++11 keywords.
+
+
+- Lists:
+
+ - LBE: added G4ShortLivedConstructor, to prevent issues, e.g. when rho0
+ is produced by the decay of eta_prime.
+
+- Util:
+
+ - G4HadParticles: new utility providing several lists of PDG codes for
+ kaons, hyperons, charm and bottom hadrons in order to be used for
+ construction of hadronic physics. Updated list of heavy EM particles.
+ Subdivided in different methods hyperons and anti-hyperons.
+ Separated light anti-particles to the extra vector and added extra
+ access method.
+ - G4HadProcesses: new utility class providing access to hadronic
+ processes and the possibility to add a cross-section per particle type
+ and per hadronic process; by using this class it is possible to
+ customise hadronic cross-sections.
+ - G4PhysListUtil: added method to access elastic cross-section.
+ Added utility method InitialiseParameters().
+ Updated dependencies on internal modules.
+
+
+
+
+Run
+
+- G4RunManager, G4WorkerRunManager: added layered mass geometry option
+ for the new "probe" scoring mesh.
+- G4RunManager: do not call G4ParticleTable for Messenger deletion.
+ Added dummy virtual methods Get/SetNumberOfThreads() to allow for
+ dispatching in MT/Tasking classes inheritance.
+- Modified G4MTRunManager to enable inheritance for new G4TaskRunManager.
+ Added banner similar to G4TaskRunManager at method CreateAndStartWorkers();
+ moved master scoring-manager, master worlds, 'fMasterRM' from private to
+ protected sections.
+- G4MTRunManager, G4RunManager: fixes for windows, to avoid inline static
+ methods and use export flag G4RUN_DLL for static data.
+- Added activation of G4Backtrace to G4RunManagerKernel.
+- Run-managers are now friends of G4RunManagerFactory.
+- Added second wavelength shifter process to G4PhysicsListHelper.
+- G4VPhysicsConstructor: added harmless call to G4HadronicParameters in
+ constructors, setting a default parameter; needed to create the instance
+ of the G4HadronicParameters singleton before run initialization.
+- G4VModularPhysicsList: fixed typos in printouts.
+- Added G4Profiler support for TiMemory; removed TIMEMORY_AUTO_TIMER.
+- Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+- General code formatting.
+
+
+
+Tasking
+
+- New module implementing a new Geant4 run manager, G4TaskRunManager,
+ enabling use of the PTL tasking system for the event loop. The tasking
+ system is fully compatible with Intel TBB, which can be selected if
+ GEANT4_USE_TBB=ON is specified when configuring CMake. The default
+ behavior for tasking, however, is to submit the tasks to an internal
+ thread-pool and task-queue.
+
+
+
+Track & Tracking
+
+- G4Track: use new G4OpticalPhoton PDG code; removed static thread local
+ variables; slightly simplified velocity computation; fixed Coverity
+ warnings connected with unnecessary checks for valid pointers to G4Step
+ and G4DynamicParticle; removed commented code.
+ Avoid using velocity table, use GetBeta() method from G4DynamicParticle
+ instead; expected minor speedup.
+- Minor c++11 revision; code cleanup and formatting.
+- Fixed minor Coverity defects in G4Step and G4SteppingManager.
+
+
+
+Visualization
+Use CMake AUTOMOC to automatically generate and compile Moc sources
+ and fixed CMake script to support new CMake system.
+Fixed text typos in printout. Problem report
+ #2285
+ and GitHub PR#15.
+
+- Management
+
+ - Fixed case where models with no extent do not contribute to scene's
+ extent.
+ - Trap infinite loop when looking for a fallback graphics system when
+ issuing "/vis/sceneHandler/create".
+ - G4VisExecutive: added support for OIQt driver, via "OIQt" or "OI"
+ keywords, provided the G4OpenInventor library has been built with
+ the OIQt driver included.
+ - Added new command "/vis/geometry/set/forceCloud".
+ - G4VVisCommand: added CheckView for future utility.
+ - G4VisCommandsScene: improved output layout for "/vis/scene/showExtents".
+ Removed superfluous/unnecessary SetView() in
+ G4VisCommandSceneNotifyHandlers.
+ - G4VisManager: protected algorithm in NotifyHandlers() with
+ 'IsValidView'.
+ - Removed obsolete G4VIS_USE_STD11 and references to obsolete G4VIS_USE.
+ - Bug fix: rebuild graphics databases after "/vis/filtering/*/mode".
+ - Improved printing of available systems and models.
+ - Improved logic in G4VisManager for automatic event keeping.
+ - In MT mode, now keeping one (random) event when end-of-event action
+ is "refresh" and keeping events (up to a user-adjustable maximum
+ number). These may be in addition to events kept by a user in his/her
+ user actions.
+ - Improved messaging.
+ - Use command->CommandFailed(); remove internal 'fErrorCode'.
+ - Implemented G4RunManagerFactory::GetMasterRunManager().
+
+- Modeling:
+
+ - Rationalised defaults for PVPaths; make sure all nodes are marked as
+ "not drawn" unless actually chosen for drawing.
+ - Suppress warnings while filter not fully established.
+ - Pick up default vis attributes.
+ - Implemented G4RunManagerFactory::GetMasterRunManager().
+ - Improved printing. Minor code tidy.
+
+- FukuiRenderer
+
+ - G4DAWNFILEViewer: fixed Unbuntu 20 compiler warning about ignoring
+ system function return value.
+ - G4FukuiRendererViewer: fixed compilation warning for overlapping
+ comparisons always evaluating to true.
+
+- OpenGL
+
+ - Improved guidance and tidy "/vis/ogl/" commands.
+ - Removed no longer required dependence on GLU.
+ - Removed support for Qt4.
+ - Fixed bug in "/vis/ogl/export" when dot '.' is included in name.
+ - CompareForKernelVisit(), force kernel visit if global parameters
+ change. Avoid unnecessary redraw at start.
+ - Implemented G4RunManagerFactory::GetMasterRunManager().
+
+- OpenInventor
+
+ - Added Open Inventor Qt visualisation driver. The Open Inventor module
+ can be built with either the OIQt driver, or with the OIX/OIXE drivers,
+ but not with both. Enabled use of OIQt viewer with Qt UI.
+ - Enable configuration for OIQt driver, as orthogonal to OIX and OIXE.
+ - CompareForKernelVisit(), force kernel visit if global parameters
+ change. Avoid unnecessary redraw at start.
+
+- Qt3D
+
+ - New driver based on Qt3D for native Qt rendering.
+
+- Raytracer
+
+ - Suppressed printing during RayTracer run.
+ - Implemented G4RunManagerFactory::GetMasterRunManager().
+
+- VRML
+
+ - G4VRML1/2FileSceneHandler: fixed Unbuntu 20 compiler warning about
+ ignoring system function return value.
+
+- XXX
+
+ - CompareForKernelVisit(), force kernel visit if global parameters
+ change. Avoid unnecessary redraw at start.
+
+- Externals
+
+ - Fixed Coverity defect warning.
+
+
+
+
+Environments
+
+- G4Py:
+
+ - Removed obsolete boost.python indexing suite (which was only required
+ on very old Boost versions <= 1.33). Replace use in client modules by
+ direct inclusion of the needed Boost header.
+ - Modified use of Boost 1.73 binding and placeholder functionality,
+ resulting in Boost.Python spamming pragma messages about deprecation
+ of this.
+ Added BOOST_BIND_GLOBAL_PLACEHOLDERS as a private compile definition
+ to geant4py targets to suppress these.
+ - Made CMAKE_INSTALL_PYTHONDIR a user-configurable cache variable.
+ RPATH issue is addressed by use of CMAKE_SKIP_INSTALL_RPATH variable
+ by client. Addressing problem report
+ #2283.
+ - Updated signatures to support const addresses as return values in
+ G4UIcommand.
+ - Added binding to G4PhysListFactory and a simple test.
+ Addressing
+ GitHub PR#14.
+
+
+
+
+Data sets
+
+- New low-energy data set version, G4EMLOW-7.13:
+
+ - Added new cross-section files for protons (HT).
+ - Added EPICS2017 data for gamma conversion (ZL).
+ - Added new JAEA elastic polarized gamma scattering data files
+ in compressed format.
+ - Added a new numerical DCS set for e-/e+ elastic scattering
+ obtained by numerical Dirac Partial Wave Analysis (DPWA).
+ More information can be found in the 'dpwa/Readme.txt' file.
+ - Added new Molecular Interference form factors (penelope/rayleigh/MIFF),
+ to be used by G4PenelopeRayleighMI model.
+
+- New data files for nuclides properties G4ENSDFSTATE-2.3:
+
+ - Corrected GD158 data to be compliant with new PhotonEvaporation
+ database.
+
+- New data files for evaluated cross-sections G4PARTICLEXS-3.1:
+
+ - Regenerated n, p, d, t, He3, He4, gamma data based on G4NDL4.6 and
+ LEND; provided smooth cross-section shape and fixed fusion
+ cross-sections.
+
+- New data set version G4PhotonEvaporation-5.7 for nuclear de-excitation
+ data:
+
+ - Updated file z66.a161 (Dy161) for the decay of Tb161.
+ - New file for z64.a158 (Gd158).
+ - Updated and corrected file z64.156 (Gd156).
+
+- New data set version for radioactive-decay processes,
+ G4RadioactiveDecay-5.6:
+
+ - Updated file z82.a211 (Pb211) according to DDEP plus adding of
+ firstForbidden tag.
+ - Slight update of z83.a211 (Bi211) and z84.a211 (Po211) according to DDEP.
+ - Correction of file z2.a8; addressing problem report
+ #2243.
+ - Update of file z63.a158 (EU158 beta- decay to Gd158).
+ - Removed empty lines in files z3.a8, z7.a16, z10.a18.
+
+- New data set version for measured optical surface reflectance,
+ G4RealSurface-2.2:
+
+ - Compressed data with zlib.
+
+
+
+
+Examples
+
+- Updated reference outputs, macros, READMEs and scripts.
+- Fixes for Doxygen documentation and coding guidelines.
+- Migrated most examples to use G4RunManagerFactory, therefore allowing
+ for enabling optional tasking in MT builds.
+
- advanced
+
+ - air_shower
+
+ - Output results histograms to file. Added macro file to plot
+ histograms.
+ - Create material properties using std::vectors.
+ - Added missing include statement in UltraDetectorConstruction.
+
+ - brachytherapy
+
+ - Analysis now fully compliant with g4tools; removed dependency
+ on Root. General cleanup of the code. Implemented RunAction.
+
+ - fastAerosol
+
+ - New example showing use of FastAerosol geometry classes, allowing
+ to efficiently and accurately simulate particle transport through
+ aerosols containing billions of randomly-positioned droplets, using
+ an ordinary workstation. See: MacFadden, N., Knaian, A.,
+ "Efficient Modeling of Particle Transport through Aerosols in
+ Geant4", manuscript in preparation, 2020.
+
+ - gammaray_telescope
+
+ - GammaRayTelHadronPhysics, GammaRayTelIonPhysics: fixed
+ compilation problems due to incorrect FTFP instantiation.
+ - Added option to use G4EmStandard_Option4 with BetheHeitler5D model
+ by using macro file physics_polarized_new.mac to select the EM
+ physics processes and models.
+ - Added new macro gammaray_polarized.in.
+
+ - gorad
+
+ - New example Gorad (Geant4 Open-sourced Radiation Analysis and
+ Design), a turn-key application for radiation analysis and
+ spacecraft design.
+
+ - hadrontherapy
+
+ - Added BEST beamline.
+ - Fixed occasional segmentation faults in MT mode with max number
+ of threads.
+ - Fixes in using analysis: added test for open file before calling
+ write & close; uncommented delete of analysis manager in
+ RunAction.
+ - Added protections against FPEs in RBE module.
+ - Fixed compilation warnings on Windows related type conversions.
+ - Deleted many obsolete macro files.
+ - Code cleaup; removed Root script folder and other cosmetics.
+
+ - HGCal_testbeam
+
+ - New example based on the Geant4 standalone application developed
+ by Thorben Quast for the CMS High Granularity Calorimeter (HGCal)
+ studies. The example demonstrates a test beam setup used in HEP
+ experiments, and as a base for the validation studies and
+ comparison with experiment data. Details on the High Granularity
+ Calorimeter (HGCal) can be found in the
+ Technical Design Report..
+
+ - ICRP110_HumanPhantoms
+
+ - New example modelling the ICRP110 reference computational human
+ phantoms and calculating the dose in individual voxels and entire
+ organs. The human male phantom is created from a whole-body
+ clinical CT image.
+
+ - iort_therapy
+
+ - Fixed CMake script, removing direct dependency on Root.
+
+ - radioprotection
+
+ - Added new parameter to DetectorConstruction constructor; added
+ instance of DetectorManager in main().
+ - DetectorConstruction: defined private methods to construct a
+ specific type of detector ("Silicon", "Diamond", and "MicroDiamond");
+ added detectorType private string to store the name of the one in
+ use; rewrote Construct() so that it calls the specific method of
+ the selected detector type; moved the previous diamond detector
+ geometry to ConstructDiamondDetector() and added new possible
+ geometries (silicon and microdiamond).
+ - DetectorMessenger: created file in order to switch detector type.
+ - New macro geometry.mac, to select a specific detector at runtime
+ (by default, all options are commented out).
+ Added a line in vis.mac to execute geometry.mac before launching
+ the GUI (at which point it wouldn't be possible to change the
+ geometry anymore). Added a line in run.mac to execute geometry.mac.
+
+ - underground_physics
+
+ - Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
+ in input macros.
+ - Removed unnecessary command in neutron.mac and ambe_spectrum.mac
+ macros.
+ - Build material property tables using std::vectors.
+
+
+- basic
+
+ - B4
+
+ - Updated B4Analysis header with commented lines for using new
+ generic analysis manager.
+ - Added commented command "ignoreThreadsExcept 0" setting in
+ run2.mac.
+
+ - B5
+
+ - Replaced use of G4Analysis::ManagerInstance() with new generic
+ analysis manager. Storing ntuple in a separate file.
+
+
+- extended
+
+ - electromagnetic
+
+ - TestEm1
+
+ - PhysicsList: use G4RadioactiveDecayBase instead of deprecated
+ G4RadioactiveDecay. Minor code cleanup.
+ - Migrated UI command from "/grdm/nucleusLimits" to
+ "/process/had/rdm/nucleusLimits" in radioactive.mac macro.
+ - Reviewed macros and added macro description in README.
+
+ - TestEm2
+
+ - Macro & commands review: removed implementation of command
+ "/testem/histo/setFileName" and replaced its usage with
+ "/analysis/setFileName"; fixed file name in egs4.mac;
+ extended TestEm2.in with a command: "/testem/run/verbose 1".
+
+ - TestEm3
+
+ - Macro & commands review: added macro descriptions in README;
+ added geom.mac with commands not used in TestEm3.in; fixed not
+ working macros: ionC12.mac, lockwood.mac, storeTables.mac;
+ removed obsolete macro retrieveTables.mac.
+
+ - TestEm4
+
+ - Do not call vis.mac automatically in interactive mode.
+
+ - TestEm5
+
+ - TrackingAction: corrected weight for solid angle histograms
+ Updated berger.mac, berger/berger.C, hanson.mac and
+ hanson/hanson.C. Added hanson/19um-wwols.ascii and 9um too.
+ Based on proposal by Weronika Wolszczak (TU Delft Univ.).
+ - Macro & commands review: added macro descriptions in README;
+ added geom.mac for testing remaining commands.
+ Removed obsolete fluo.mac macro.
+ - StackingAction: log histograms, revert to previous version.
+
+ - TestEm7
+
+ - Do not call vis.mac automatically in interactive mode.
+
+ - TestEm11
+
+ - PhysicsList: use G4RadioactiveDecayBase instead of deprecated
+ G4RadioactiveDecay. Minor code cleanup.
+ - Added macros description.
+
+ - TestEm12
+
+ - Added macros description.
+
+ - TestEm14
+
+ - Added atomicDeexcitation.mac macro.
+ - Added macros description.
+
+ - TestEm18
+
+
+ - exoticphysics
+
+ - saxs
+
+ - New example implementing the typical setup of a Small Angle
+ X-ray Scattering (SAXS) experiment. It is meant to illustrate
+ the usage of molecular interference (MI) of Rayleigh (coherent)
+ scattering of photons inside the matter, which is implemented
+ in the G4PenelopeRayleighModelMI model.
+
+
+ - hadronic
+
+ - FissionFragment
+
+ - Replaced deprecated HP environmental variables with
+ corresponding UI commands.
+
+ - Hadr00
+
+ - HistoManagerMessenger: fixed destructor.
+
+ - Hadr01
+
+ - PhysicsList: make it coherent with current reference physics
+ lists.
+ - RunAction: improved printouts.
+ - Switched from Al to W in hadr01.in macro.
+
+ - Hadr02
+
+ - HadronPhysicsCRMC_FTFP_BERT, HadronPhysicsHIJING,
+ HadronPhysicsUrQMD: introduced the new class G4HyperonBuilder
+ which is now needed when using G4HyperonFTFPBuilder.
+
+ - Hadr03
+
+ - PhysicsList: added G4HadronPhysicsQGSP_BIC, Shielding,
+ RadioactiveDecay.
+ - GammaNuclearPhysics: added G4LowEGammaNuclearModel.
+ - Added GammaNuclearPhysicsLEND.
+ - HistoManager, SteppingAction: added plot of e-.
+ - Modified gamma.mac script; added Au196.mac.
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main(), and UI
+ commands in the macros.
+ - Added fusion.mac macro.
+ - Added macros description.
+
+ - Hadr04
+
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main().
+ - Added macros description.
+
+ - Hadr06
+
+ - HistoManager, TrackingAction: plot particle energy at
+ creation.
+ - GammaNuclearPhysics: added G4LowEGammaNuclearModel.
+ - TrackingAction: added commented code for singleFission.
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main(), and UI
+ commands in the macros.
+ - Added singleFission.mac macro.
+
+ - Hadr07
+
+ - GammaNuclearPhysics: added G4LowEGammaNuclearModel.
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main().
+ - Added macros description.
+
+ - Hadr09
+
+ - New example showing how to use Geant4 as a generator for
+ simulating inelastic hadron-nuclear interactions.
+
+ - NeutronSource
+
+ - GammaNuclearPhysics: added G4LowEGammaNuclearModel.
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main().
+ - Added macros description.
+
+
+ - medical/DICOM
+
+ - Distinguish output names of archive lib from DLL and application
+ to fix Windows linking errors for static libraries.
+
+ - medical/DICOM2
+
+ - Fixed compiler warning on Windows.
+
+ - medical/dna
+
+ - chem4:
+
+ - Fixed setup for Root in CMake script.
+
+ - chem6:
+
+ - New example providing scoring of the radiochemical yield G
+ defined as (Number of species X) / (100 eV of deposited energy),
+ as a function of time and LET. The details are described in the
+ following paper: J. Appl. Phys. 125 (2019) 104301.
+
+
+ - optical
+
+ - LXe
+
+ - Set optical parameters in G4OpticalParameters class.
+ - Use new scintillation material property names.
+ - Use std::vector to specify material property names.
+ - Fixed valgrind errors: added 'delete's and fix initialization
+ of hits counters.
+ - Renamed LXe.in macro to LXe.mac; store random seed in LXe.mac
+ and set optical verbosity to 1.
+ - Applied clang-format style and updated macros.
+ - Renamed ProcessHits_constStep() to ProcessHits_boundary().
+ - Removed unused #includes and empty methods.
+
+ - OpNovice
+
+ - Added material properties using new interface with
+ std::vectors.
+ - Print out process statistics at end of run.
+ Added EventAction and Run classes for this.
+ - Updated macros, especially to run more particles.
+ Updated gui.mac.
+ - Remove use of G4Timer.
+ - Use default random number generator.
+ - Applied clang-format style.
+
+ - OpNovice2
+
+ - Use new scintillation time constant parameter.
+ - Added code to generate statistics for wavelength shifting.
+ - Added material properties using new interface with
+ std::vectors.
+ - Calculate reflection/transmission probabilities vs. angle;
+ new macro fresnel.mac.
+ - Histos: added axis labels, id's; refer to them by id in some
+ places.
+ - Added wls.mac to test WLS and new process WLS2.
+ - Removed string comparisons and redundant calls in
+ SteppingAction.
+ - Removed redundant G4AnalysisManager::Instance() calls.
+ - New macro boundary.mac, exercising all 4 boundary models.
+ - Removed glisur.mac and unified.mac macros.
+ - Renamed OpNovice2.in macro to OpNovice2.mac.
+ - Print histogram statistics at end of run.
+ - Removed use of G4Timer; don't set number of threads in main().
+ - Updated macro verbosity, ignore threads except 0.
+ - Applied clang-format style.
+
+ - wls
+
+ - Added material properties using new interface with
+ std::vectors.
+ - Large cleaning including clang-format style guidelines.
+ - Added counters to record run and event statistics.
+ Update macros.
+ - Added remaining material properties using new interface with
+ std::vectors.
+
+
+ - parallel
+
+ - MPI
+
+ - Updated analysis classes for the design changes in analysis
+ module.
+
+ - TBB
+
+ - Updated to use new tasking system which is fully compatible
+ with TBB.
+
+ - ThreadsafeScorers
+
+ - Updated to use new tasking system; forcing use of
+ G4TaskRunManager.
+
- Added example of user code leveraging tasking in TSRunAction;
+ it leverages tasks on the master thread at the end of the run
+ to generate some strings of output via a nested hierarchy of
+ tasks and uses the features of the G4TaskGroup to combine the
+ strings in the order that they were submitted to the task-group
+ (thus producing the same output result as the serial version).
+ - Replaced TIMEMORY_AUTO_TIMER usage with G4USER_SCOPED_PROFILE
+ usage.
+
+ - TopC
+
+ - Fixed README.html. Addressing problem report
+ #2284.
+
+
+ - parameterisations
+
+ - Par03
+
+ - New example demonstrating how to use G4FastSimHitMaker helper
+ class to create multiple energy deposits from the fast
+ simulation model.
+
+
+ - persistency
+
+ - gdml/G01
+
+ - Use [] brackets in loop.gdml sample to show how to index names
+ and dimensions in loops.
+ - Added a line (commented out) indicating how to overwrite output
+ files.
+
+ - P01
+
+ - Fixed CMake script for search or Root macros.
+
+
+ - radioactivedecay
+
+ - Activation
+
+ - GammaNuclearPhysics: added G4LowEGammaNuclearModel.
+ - In Run, corrected a protection on maximum number of
+ histograms.
+ - Removed deprecated HP environmental variables and replaced
+ them with corresponding C++ calls in the main().
+ - Added macros description.
+
+ - rdecay01
+
+ - Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
+ in input macros.
+ - Added atomicDeexcitation.mac macro.
+ - PhysicsList: added SetDeexcitationIgnoreCut(ARMflag).
+ - Added macros description.
+
+ - rdecay02
+
+ - Migrated UI commands from "/grdm/..." to "/process/had/rdm/..."
+ in input macros.
+
+
+
+
+
+
+
+
+
diff --git a/cmake/History b/cmake/History
index dbbce7757e..567df3ce67 100644
--- a/cmake/History
+++ b/cmake/History
@@ -30,6 +30,93 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
----------------------------------------------------------
+20th November 2020 - Ben Morgan (cmake-V10-06-46)
+- Make GEANT4_USE_SYSTEM_PTL option advanced
+
+12th November 2020 - Jonathan Madsen (cmake-V10-06-45)
+- Updated find package routines for timemory
+
+19th November 2020 - Ben Morgan (cmake-V10-06-44)
+- Require VecGeom 1.1.8 or newer
+
+18th November 2020 - Ben Morgan (cmake-V10-06-43)
+- Add GEANT4_BUILD_BUILTIN_BACKTRACE option to enable automatic
+ use of G4BackTrace signal handling in G4RunManager.
+
+17th November 2020 - Gunter Folger (cmake-V10-06-42)
+- Bump CLHEP minimum required version to 2.4.4.0
+
+4th November 2020 - Ben Morgan (cmake-V10-06-41)
+- Make Qt53D driver optional based on find of required Qt5 modules
+
+2nd/3rd November 2020 - Gunter Folger (cmake-V10-06-40)
+- Update to dataset RadioactiveDecay5.6 and PhotonEvaporation5.7 as
+ provided by Laurent
+
+30th October 2020 - Gunter Folger (cmake-V10-06-39)
+- Update datasets as provided by Laurent:
+ - G4ENSDFSTATE2.3
+ - PhotonEvaporation5.6
+ - RadioactiveDecay5.5
+
+29th October 2020 - Ben Morgan (cmake-V10-06-38)
+- Remove obsolete Geant4MacroDefineModule and G4DeveloperAPI_OLD modules
+- Make Geant4MacroLibraryTargets module a no-op pending final removal in
+ 2021
+- Remove GEANT4_USE_NEW_CMAKE option to complete migration to new system
+- Use STRINGS cache property for enum options and CMAKE_BUILD_TYPE to
+ give easier interface in (G)UIs
+- Remove pre CMake3 functionality from G4InstallData module
+
+27th October 2020 - Gunter Folger (cmake-V10-06-37)
+- Add optional TENDL dataset
+
+26th October 2020 - Ben Morgan (cmake-V10-06-36)
+- Explicitly initialize GEANT4_USE_QT3D to OFF to prevent
+ user override.
+
+26th October 2020 - Gunter Folger (cmake-V10-06-35)
+- Switch to G4PARTICLEXS 3.1
+
+23rd October 2020 - John Allison (cmake-V10-06-34)
+- Introduce changes for Qt3D vis driver.
+
+20th October 2020 - Ben Morgan (cmake-V10-06-33)
+- Update functions to use G4expat{-static} as custom built targets.
+ Fixes GitLab Issue #44.
+
+19th October 2020 - Ben Morgan (cmake-V10-06-32)
+- Support CMake 3.8 through 3.18
+- Allow specification of C++20 for CMake 3.12 and above
+
+12th October 2020 - Daren Sawkey (cmake-V10-06-31)
+- Switch to new data set G4RealSurface 2.2
+
+12th October 2020 - Gunter Folger (cmake-V10-06-30)
+- Switch to G4PARTICLEXS 3.0
+
+24th September 2020 - Gunter Folger (cmake-V10-06-29)
+- Switch to G4EMLOW 7.13
+
+15 September 2020 - Jonathan Madsen (cmake-V10-06-28)
+- Updated GEANT4_TEST_ENVIRONMENT to set G4RUN_MANAGER_TYPE=TBB when MT and
+ GEANT4_USE_TBB=ON
+
+28 August - Ben Morgan (cmake-V10-06-27)
+- Improve support for Inventor (Coin)
+ - Simplify configuration options, handling co-working ones both
+ at configure time and by client applications.
+ - Separate out dependency finding to keep these in one place.
+ - Improve consistency of using XQuartz vs System OpenGL on
+ macOS.
+ - Remove obsolete FindInventor module
+
+21 July 2020 - Ben Morgan (cmake-V10-06-26)
+- Provide new GEANT4_BUILD_PHP_AS_HP option to enable ParticleHP as
+ HP in G4processes. Replaces PHP_AS_HP environment variable.
+- Add PHP_AS_HP "feature" in Geant4Config.cmake/geant4-config to allow
+ clients to check availability.
+
17th June 2020 - Jonathan Madsen (cmake-V10-06-25)
- Moved TBB before PTL
- Forced PTL_USE_TBB to be set to GEANT4_USE_TBB when not
diff --git a/cmake/Modules/FindInventor.cmake b/cmake/Modules/FindInventor.cmake
deleted file mode 100644
index 96a8c6d0b2..0000000000
--- a/cmake/Modules/FindInventor.cmake
+++ /dev/null
@@ -1,260 +0,0 @@
-# - Locate Open Inventor
-#
-# The file tries to locate Open Inventor compatible library
-# and associated libraries (SoXt, SoQt,...).
-#
-# Currently tested Open Inventor clones:
-# - Coin (+SoXt and SoWin coming with Coin)
-# - SGI Inventor
-#
-# Detection algorithms are described through the file.
-#
-# Author: PCJohn (Jan Peciva, jpeciva@strathmore.edu)
-# http://www.cmake.org/pipermail/cmake/2008-August/023446.html
-# Modifications by Ben Morgan (Ben.Morgan@warwick.ac.uk)
-#
-# This module defines:
-# INVENTOR_FOUND, if false, do not try to link against Inventor.
-# INVENTOR_INCLUDE_DIR, where to find headers.
-# INVENTOR_LIBRARY, the library to link against.
-# INVENTOR_LIBRARY_DEBUG, the debug library to link against.
-# INVENTOR_SOWIN_LIBRARY, the SoWin library - window binding library for Inventor
-# INVENTOR_SOWIN_LIBRARY_DEBUG, the SoWin debug library
-#
-# INVENTOR_SOXT_LIBRARY, the SoXt library - window binding library for Inventor
-# INVENTOR_SOXT_LIBRARY_DEBUG, the SoXt debug library
-#
-# notes:
-# - Coin is honored over SGI Inventor
-# - Coin is detected by coin-config script, COINDIR environment variable,
-# and finally standard system locations are searched
-# - SGI Inventor is searched at standard system locations only
-#
-
-# coin-config is used (if present) to find a prefix
-execute_process (COMMAND coin-config --prefix
- OUTPUT_VARIABLE COIN_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
-# try to find Inventor includes (priority paths from coin-config and COINDIR)
-FIND_PATH(INVENTOR_INCLUDE_DIR Inventor/So.h
- ${COIN_PREFIX}/include
- $ENV{COINDIR}/include
- NO_DEFAULT_PATH
-)
-
-# try to find Inventor includes (system paths)
-FIND_PATH(INVENTOR_INCLUDE_DIR Inventor/So.h
- /usr/local/include
- /usr/include
- /sw/include
- /opt/local/include
- /opt/csw/include
- /opt/include
-)
-
-# default Inventor lib search paths
-SET(INVENTOR_LIB_SEARCH_PATH
- /usr/local/lib
- /usr/lib
- /sw/lib
- /opt/local/lib
- /opt/csw/lib
- /opt/lib
-)
-
-# try to find Coin release lib (priority paths)
-FIND_LIBRARY(INVENTOR_LIBRARY
- NAMES coin5 coin4 coin3 coin2 coin1 Coin
- PATHS ${COIN_PREFIX}/lib
- $ENV{COINDIR}/lib
- NO_DEFAULT_PATH
-)
-
-# try to find Coin release lib (regular paths)
-FIND_LIBRARY(INVENTOR_LIBRARY
- NAMES coin5 coin4 coin3 coin2 coin1 Coin
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
-)
-
-# try to find SGI Inventor lib
-FIND_LIBRARY(INVENTOR_LIBRARY
- NAMES Inventor
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
-)
-
-# try to find Coin debug lib (priority paths)
-#FIND_LIBRARY(INVENTOR_LIBRARY_DEBUG
-# NAMES coin5d coin4d coin3d coin2d coin1d
-# PATHS ${COIN_PREFIX}/lib
-# $ENV{COINDIR}/lib
-# NO_DEFAULT_PATH
-#)
-
-# try to find Coin debug lib (regular paths)
-#FIND_LIBRARY(INVENTOR_LIBRARY_DEBUG
-# NAMES coin5d coin4d coin3d coin2d coin1d
-# PATHS ${INVENTOR_LIB_SEARCH_PATH}
-#)
-
-# set release to debug if only debug found
-#IF(NOT INVENTOR_LIBRARY_RELEASE AND INVENTOR_LIBRARY_DEBUG)
-# SET(INVENTOR_LIBRARY_RELEASE ${INVENTOR_LIBRARY_DEBUG})
-#ENDIF(NOT INVENTOR_LIBRARY_RELEASE AND INVENTOR_LIBRARY_DEBUG)
-
-# set debug to release (if only release found)
-#IF(NOT INVENTOR_LIBRARY_DEBUG AND INVENTOR_LIBRARY_RELEASE)
-# SET(INVENTOR_LIBRARY_DEBUG ${INVENTOR_LIBRARY_RELEASE})
-#ENDIF(NOT INVENTOR_LIBRARY_DEBUG AND INVENTOR_LIBRARY_RELEASE)
-
-# INVENTOR_LIBRARY
-#IF (CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-# SET(INVENTOR_LIBRARY
-# optimized ${INVENTOR_LIBRARY_RELEASE}
-# debug ${INVENTOR_LIBRARY_RELEASE})
-#ELSE(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-# SET(INVENTOR_LIBRARY
-# ${INVENTOR_LIBRARY_RELEASE})
-#ENDIF(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE)
-
-# set INVENTOR_FOUND appropriately
-SET(INVENTOR_FOUND "NO")
-IF(INVENTOR_INCLUDE_DIR AND INVENTOR_LIBRARY)
- SET(INVENTOR_FOUND "YES")
-ENDIF(INVENTOR_INCLUDE_DIR AND INVENTOR_LIBRARY)
-
-
-if(WIN32 AND NOT CYGWIN)
- #
- # SoWin
- #
- # notes: SoWin is searched by COINDIR environment variable
- # (as expected to be located at Windows platform)
-
- # try to find SoWin lib (priority paths)
- FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY
- NAMES sowin1
- PATHS $ENV{COINDIR}/lib
- NO_DEFAULT_PATH
- )
-
- # try to find SoWin lib (regular paths)
- FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY
- NAMES sowin1
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
- )
-
- # try to find SoWin debug lib (priority paths)
- FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY_DEBUG
- NAMES sowin1d
- PATHS $ENV{COINDIR}/lib
- NO_DEFAULT_PATH
- )
-
- # try to find SoWin debug lib (regular paths)
- FIND_LIBRARY(INVENTOR_SOWIN_LIBRARY_DEBUG
- NAMES sowin1d
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
- )
-
- # SoWin debug library defaults to non-debug lib
- IF(NOT INVENTOR_SOWIN_LIBRARY_DEBUG)
- IF(INVENTOR_SOWIN_LIBRARY)
- SET(INVENTOR_SOWIN_LIBRARY_DEBUG INVENTOR_SOWIN_LIBRARY)
- ENDIF(INVENTOR_SOWIN_LIBRARY)
- ENDIF(NOT INVENTOR_SOWIN_LIBRARY_DEBUG)
-endif()
-
-
-
-if(UNIX)
- #
- # SoXt
- #
- # notes:
- # - SoXt is detected by soxt-config script (as expected by
- # Coin's SoXt on Linux/Unix) and on standard system locations
- # - SGI's InventorXt support is missing now
- #
-
- # soxt-config tells much of SoXt instalation (if present)
- execute_process (COMMAND soxt-config --prefix
- OUTPUT_VARIABLE SOXT_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- # try to find Inventor includes (priority paths from coin-config and COINDIR)
- FIND_PATH(INVENTOR_SOXT_INCLUDE_DIR Inventor/Xt/SoXt.h
- ${SOXT_PREFIX}/include
- $ENV{COINDIR}/include
- NO_DEFAULT_PATH
- )
-
- # try to find Inventor includes (system paths)
- FIND_PATH(INVENTOR_SOXT_INCLUDE_DIR Inventor/Xt/SoXt.h
- /usr/local/include
- /usr/include
- /sw/include
- /opt/local/include
- /opt/csw/include
- /opt/include
- )
-
- # try to find SoXt lib (priority paths)
- FIND_LIBRARY(INVENTOR_SOXT_LIBRARY
- NAMES soxt1 SoXt
- PATHS ${SOXT_PREFIX}/lib
- $ENV{COINDIR}/lib
- NO_DEFAULT_PATH
- )
-
- # try to find SoXt lib (regular paths)
- FIND_LIBRARY(INVENTOR_SOXT_LIBRARY
- NAMES soxt1 SoXt
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
- )
-
- #
- # SoQt
- #
- # notes:
- # - SoQt is detected by soqt-config script (as expected by
- # Coin's SoQt on Linux/Unix) and on standard system locations
- #
-
- # soqt-config tells much of SoQt installation (if present)
- execute_process (COMMAND soqt-config --prefix
- OUTPUT_VARIABLE SOQT_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE)
-
- # try to find Inventor includes (priority paths from coin-config and COINDIR)
- FIND_PATH(INVENTOR_SOQT_INCLUDE_DIR Inventor/Qt/SoQt.h
- ${SOQT_PREFIX}/include
- $ENV{COINDIR}/include
- NO_DEFAULT_PATH
- )
-
- # try to find Inventor includes (system paths)
- FIND_PATH(INVENTOR_SOQT_INCLUDE_DIR Inventor/Qt/SoQt.h
- /usr/local/include
- /usr/include
- /sw/include
- /opt/local/include
- /opt/csw/include
- /opt/include
- )
-
- # try to find SoQt lib (priority paths)
- FIND_LIBRARY(INVENTOR_SOQT_LIBRARY
- NAMES soqt1 SoQt
- PATHS ${SOQT_PREFIX}/lib
- $ENV{COINDIR}/lib
- NO_DEFAULT_PATH
- )
-
- # try to find SoQt lib (regular paths)
- FIND_LIBRARY(INVENTOR_SOQT_LIBRARY
- NAMES soqt1 SoQt
- PATHS ${INVENTOR_LIB_SEARCH_PATH}
- )
-
-endif()
diff --git a/cmake/Modules/FindXQuartzGL.cmake b/cmake/Modules/FindXQuartzGL.cmake
index d30e40d350..c26754a611 100644
--- a/cmake/Modules/FindXQuartzGL.cmake
+++ b/cmake/Modules/FindXQuartzGL.cmake
@@ -41,7 +41,7 @@ The following cache variables may also be set
# Just don't run if we're on macOS
if(NOT APPLE)
- message(FATAL_ERROR "FindXquartzGL is only for use on macOS platforms")
+ message(FATAL_ERROR "FindXQuartzGL is only for use on macOS platforms")
endif()
# - This is for X11 GL drivers, so we DON'T want Framework!
@@ -79,7 +79,7 @@ mark_as_advanced(XQuartzGL_INCLUDE_DIR XQuartzGL_gl_LIBRARY XQuartzGL_glu_LIBRAR
if(XQuartzGL_FOUND)
if(NOT TARGET XQuartzGL::GL)
add_library(XQuartzGL::GL UNKNOWN IMPORTED)
- set_target_properties(XQuartzGL::GL PROPERTIES
+ set_target_properties(XQuartzGL::GL PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${XQuartzGL_INCLUDE_DIR}"
IMPORTED_LOCATION "${XQuartzGL_gl_LIBRARY}"
)
@@ -87,7 +87,7 @@ if(XQuartzGL_FOUND)
if(NOT TARGET XQuartzGL::GLU AND XQuartzGL_glu_LIBRARY)
add_library(XQuartzGL::GLU UNKNOWN IMPORTED)
- set_target_properties(XQuartzGL::GLU PROPERTIES
+ set_target_properties(XQuartzGL::GLU PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${XQuartzGL_INCLUDE_DIR}"
INTERFACE_LINK_LIBRARIES XQuartzGL::GL
IMPORTED_LOCATION "${XQuartzGL_glu_LIBRARY}"
diff --git a/cmake/Modules/G4BuildSettings.cmake b/cmake/Modules/G4BuildSettings.cmake
index a4348bbb72..a4a67ff15e 100644
--- a/cmake/Modules/G4BuildSettings.cmake
+++ b/cmake/Modules/G4BuildSettings.cmake
@@ -117,6 +117,7 @@ mark_as_advanced(CMAKE_CXX_FLAGS_MAINTAINER)
#
if(NOT CMAKE_CONFIGURATION_TYPES)
# Single mode build tools like Make, Ninja,
+ set(__g4buildmodes "" Release TestRelease MinSizeRel Debug Debug_FPE RelWithDebInfo MinSizeRel Maintainer)
if(NOT CMAKE_BUILD_TYPE)
# Default to a Release build if nothing else...
set(CMAKE_BUILD_TYPE Release
@@ -130,6 +131,7 @@ if(NOT CMAKE_CONFIGURATION_TYPES)
FORCE
)
endif()
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${__g4buildmodes})
else()
# Multimode tools like VS, Xcode
list(APPEND CMAKE_CONFIGURATION_TYPES Debug_FPE)
@@ -154,14 +156,19 @@ endif() #NOT WIN32
#
#.rst
-# - ``GEANT4_BUILD_CXXSTD`` (Allowed values: 11, 14, 17, c++11, c++14, c++17)
+# - ``GEANT4_BUILD_CXXSTD`` (Allowed values: 11, 14, 17, 20)
#
# - Choose C++ Standard to build against from supported list.
# - Note that only C++17 is supported on Windows with MSVC
+# - C++20 awareness is only available from CMake 3.12 onwards
#
-set(__g4_default_cxxstd 11 14 17 c++11 c++14 c++17)
+set(__g4_default_cxxstd 11 14 17)
if(MSVC)
- set(__g4_default_cxxstd 17 c++17)
+ set(__g4_default_cxxstd 17)
+endif()
+
+if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
+ list(APPEND __g4_default_cxxstd 20)
endif()
enum_option(GEANT4_BUILD_CXXSTD
@@ -175,7 +182,9 @@ mark_as_advanced(GEANT4_BUILD_CXXSTD)
geant4_add_feature(GEANT4_BUILD_CXXSTD "Compiling against C++ Standard '${GEANT4_BUILD_CXXSTD}'")
-# Require at least C++11 with no extensions and the following features
+# Require at minimal set of C++11 features plus user's selection of standard, no extensions
+# Explicit features are retained for C++11 to identify use of old compilers with partial support.
+# Here, the `cxx_std_11` epoch feature might not be sufficient.
set(CMAKE_CXX_EXTENSIONS OFF)
set(GEANT4_TARGET_COMPILE_FEATURES
cxx_alias_templates
@@ -190,36 +199,25 @@ set(GEANT4_TARGET_COMPILE_FEATURES
cxx_range_for
cxx_strong_enums
cxx_uniform_initialization
- # Features that MSVC 18.0 cannot support but in list of Geant4 coding
- # guidelines - to be required once support for that compiler is dropped.
- # Version 10.2 is coded without these being required.
- #cxx_deleted_functions
- #cxx_generalized_initializers
- #cxx_constexpr
- #cxx_inheriting_constructors
- )
+ cxx_std_${GEANT4_BUILD_CXXSTD})
-# If a standard higher than 11 has been selected, check that compiler has
-# at least one feature from that standard and append these to the required
-# feature list
-if(GEANT4_BUILD_CXXSTD GREATER 11)
- if(CMAKE_CXX${GEANT4_BUILD_CXXSTD}_COMPILE_FEATURES)
- list(APPEND GEANT4_TARGET_COMPILE_FEATURES ${CMAKE_CXX${GEANT4_BUILD_CXXSTD}_COMPILE_FEATURES})
- else()
- message(FATAL_ERROR "Geant4 requested to be compiled against C++ standard '${GEANT4_BUILD_CXXSTD}'\nbut detected compiler '${CMAKE_CXX_COMPILER_ID}', version '${CMAKE_CXX_COMPILER_VERSION}'\ndoes not support, or CMake (${CMAKE_VERSION}) is not aware of, any features of that standard.")
- endif()
+# Emit early fatal error if we don't have a record of the core standard
+# in CMake's known features. CMake will check this for us as well, but doing
+# the check here only emits one error. We can also give a better hint on the
+# cause/resolution
+if(NOT ("${CMAKE_CXX_COMPILE_FEATURES}" MATCHES "cxx_std_${GEANT4_BUILD_CXXSTD}"))
+ message(FATAL_ERROR
+ "Geant4 requested compilation using C++ standard '${GEANT4_BUILD_CXXSTD}' using compiler\n"
+ "'${CMAKE_CXX_COMPILER_ID}', version '${CMAKE_CXX_COMPILER_VERSION}'\n"
+ "but CMake ${CMAKE_VERSION} is not aware of any support for that standard by this compiler. You may need a newer CMake and/or compiler.\n")
endif()
# - Check for Standard Library Implementation Features
-# Smart pointers are a library implementation feature
-# Hashed containers are a library implementation feature
-# Random numbers are a library implementation feature?
-# An example of where a workaround is needed
-# Rest of concurrency a library implementation feature
+# e.g. Smart pointers are a library implementation feature
+# and provide workarounds if needed
# Hold any appropriate compile flag(s) in variable for later export to
-# config files. Needed to support clients using late CMake 2.8 where compile features
-# are not available.
+# non-cmake config files
set(GEANT4_CXXSTD_FLAGS "${CMAKE_CXX${GEANT4_BUILD_CXXSTD}_STANDARD_COMPILE_OPTION}")
#-----------------------------------------------------------------------
@@ -276,6 +274,27 @@ if(GEANT4_BUILD_MULTITHREADED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GEANT4_MULTITHREADED_CXX_FLAGS}")
endif()
+#-----------------------------------------------------------------------
+# Physics
+#-----------------------------------------------------------------------
+#.rst:
+# - ``GEANT4_BUILD_PHP_AS_HP`` (Default: OFF, ON if ``PHP_AS_HP`` set in environment)
+#
+# - Build ParticleHP as HP.
+# - Use of the ``PHP_AS_HP`` environment variable to enable this build
+# option is deprecated and will be removed in the next release
+#
+set(_default_build_php_as_hp OFF)
+if(DEFINED ENV{PHP_AS_HP})
+ message(WARNING "Use of the PHP_AS_HP environment variable to enable building ParticleHP as HP is deprecated. "
+ "Use the GEANT4_BUILD_PHP_AS_HP CMake option to enable this functionality.")
+ set(_default_build_php_as_hp ON)
+endif()
+
+option(GEANT4_BUILD_PHP_AS_HP "Build ParticleHP as HP" ${_default_build_php_as_hp})
+mark_as_advanced(GEANT4_BUILD_PHP_AS_HP)
+geant4_add_feature(GEANT4_BUILD_PHP_AS_HP "Building ParticleHP as HP")
+
#-----------------------------------------------------------------------
# Miscellaneous
#-----------------------------------------------------------------------
@@ -303,6 +322,20 @@ option(GEANT4_BUILD_VERBOSE_CODE
ON)
mark_as_advanced(GEANT4_BUILD_VERBOSE_CODE)
+#.rst:
+# - ``GEANT4_BUILD_BUILTIN_BACKTRACE`` (Unix only, Default: OFF)
+#
+# - Setting to ``ON`` will build in automatic signal handling for ``G4RunManager``
+# through ``G4Backtrace``. Applications requiring/implenting their own signal
+# handling should not enable this option.
+#
+if(UNIX)
+ option(GEANT4_BUILD_BUILTIN_BACKTRACE
+ "Enable automatic G4Backtrace signal handling in G4RunManager. Switch off for applications implementing their own signal handling"
+ OFF)
+ mark_as_advanced(GEANT4_BUILD_BUILTIN_BACKTRACE)
+endif()
+
#.rst:
# - ``GEANT4_BUILD_MSVC_MP`` (Windows only, Default: OFF)
#
diff --git a/cmake/Modules/G4CMakeMain.cmake b/cmake/Modules/G4CMakeMain.cmake
index a700137de3..0aa2afd610 100644
--- a/cmake/Modules/G4CMakeMain.cmake
+++ b/cmake/Modules/G4CMakeMain.cmake
@@ -79,7 +79,7 @@ option(GEANT4_USE_PYTHON "Build Python bindings for Geant4" OFF)
if(GEANT4_USE_PYTHON)
# We can only build g4py with MT geant4 if TLS is global-dynamic (or auto?)
if(GEANT4_BUILD_MULTITHREADED AND (NOT GEANT4_BUILD_TLS_MODEL MATCHES "global-dynamic"))
- message(FATAL_ERROR "Geant4Py only supports 'global-dynamic' thread local storage
+ message(FATAL_ERROR "Geant4Py only supports 'global-dynamic' thread local storage, but
'${GEANT4_BUILD_TLS_MODEL}' selected by GEANT4_BUILD_TLS_MODEL option
")
endif()
diff --git a/cmake/Modules/G4CMakeUtilities.cmake b/cmake/Modules/G4CMakeUtilities.cmake
index 4e5023827d..511c4d9991 100644
--- a/cmake/Modules/G4CMakeUtilities.cmake
+++ b/cmake/Modules/G4CMakeUtilities.cmake
@@ -42,7 +42,6 @@ endif()
#
# This module includes the following modules:
include(CMakeDependentOption)
-include(Geant4MacroDefineModule)
include(Geant4MacroLibraryTargets)
#-----------------------------------------------------------------------
@@ -118,6 +117,7 @@ function(enum_option _var)
endif()
endif()
endif()
+ set_property(CACHE ${_var} PROPERTY STRINGS ${_ENUMOP_VALUES})
endfunction()
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/G4CTest.cmake b/cmake/Modules/G4CTest.cmake
index 93c25b8b32..d530fecd55 100644
--- a/cmake/Modules/G4CTest.cmake
+++ b/cmake/Modules/G4CTest.cmake
@@ -41,6 +41,12 @@ if(GEANT4_ENABLE_TESTING)
if(GEANT4_USE_FREETYPE)
list(APPEND GEANT4_TEST_ENVIRONMENT TOOLS_FONT_PATH=${PROJECT_SOURCE_DIR}/source/analysis/fonts)
endif()
+
+ # - Configure 'G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default)'
+ # to use TBB
+ if(GEANT4_BUILD_MULTITHREADED AND GEANT4_USE_TBB)
+ list(APPEND GEANT4_TEST_ENVIRONMENT G4RUN_MANAGER_TYPE=TBB)
+ endif()
endif()
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake b/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
index d3d846c078..3d6abd771a 100644
--- a/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
+++ b/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
@@ -123,6 +123,13 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
set(G4_BUILTWITH_MULTITHREADING "no")
endif()
+ # - PHP_AS_HP
+ if(GEANT4_BUILD_PHP_AS_HP)
+ set(G4_BUILTWITH_PHP_AS_HP "yes")
+ else()
+ set(G4_BUILTWITH_PHP_AS_HP "no")
+ endif()
+
# - Smart Stack
if(GEANT4_USE_SMARTSTACK)
set(G4_BUILTWITH_SMARTSTACK "yes")
@@ -222,7 +229,7 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
set(G4_BUILTWITH_FREETYPE "no")
endif()
- # - Freetype
+ # - HDF5
if(GEANT4_USE_HDF5)
set(G4_BUILTWITH_HDF5 "yes")
else()
@@ -232,7 +239,7 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
# - Qt
if(GEANT4_USE_QT)
set(G4_BUILTWITH_QT "yes")
- set(G4_QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5OpenGL_INCLUDE_DIRS} ${Qt5PrintSupport_INCLUDE_DIRS})
+ set(G4_QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5OpenGL_INCLUDE_DIRS} ${Qt5PrintSupport_INCLUDE_DIRS} ${Qt53DCore_INCLUDE_DIRS} ${Qt53DExtras_INCLUDE_DIRS} ${Qt53DRender_INCLUDE_DIRS})
list(REMOVE_DUPLICATES G4_QT_INCLUDE_DIRS)
if(_cxx_compiler_dirs)
diff --git a/cmake/Modules/G4DatasetDefinitions.cmake b/cmake/Modules/G4DatasetDefinitions.cmake
index 6b7f1e34c7..aa9c7486ba 100644
--- a/cmake/Modules/G4DatasetDefinitions.cmake
+++ b/cmake/Modules/G4DatasetDefinitions.cmake
@@ -18,41 +18,41 @@ geant4_add_dataset(
# - Low energy electromagnetics
geant4_add_dataset(
NAME G4EMLOW
- VERSION 7.12
+ VERSION 7.13
FILENAME G4EMLOW
EXTENSION tar.gz
ENVVAR G4LEDATA
- MD5SUM 0d3d46eeb7420f2b996242fec756ee52
+ MD5SUM 55922521aa331655a0494cdf8f9a70e8
)
# - Photon evaporation
geant4_add_dataset(
NAME PhotonEvaporation
- VERSION 5.5
+ VERSION 5.7
FILENAME G4PhotonEvaporation
EXTENSION tar.gz
ENVVAR G4LEVELGAMMADATA
- MD5SUM 707514c864414089af9671db0f656e35
+ MD5SUM 81ff27deb23af4aa225423e6b3a06b39
)
# - Radioisotopes
geant4_add_dataset(
NAME RadioactiveDecay
- VERSION 5.4
+ VERSION 5.6
FILENAME G4RadioactiveDecay
EXTENSION tar.gz
ENVVAR G4RADIOACTIVEDATA
- MD5SUM 08abe2bcc0bcd1ac4bbe09f5ae69cdbe
+ MD5SUM acc1dbeb87b6b708b2874ced729a3a8f
)
# - Particle XS - replaces Neutron XS
geant4_add_dataset(
NAME G4PARTICLEXS
- VERSION 2.1
+ VERSION 3.1
FILENAME G4PARTICLEXS
EXTENSION tar.gz
ENVVAR G4PARTICLEXSDATA
- MD5SUM 24a68bb627a95629e2edcd098131d6b3
+ MD5SUM 35a3fe5cf0a29d453e6805e2cfacacee
)
# - PII
@@ -68,11 +68,11 @@ geant4_add_dataset(
# - Optical Surfaces
geant4_add_dataset(
NAME RealSurface
- VERSION 2.1.1
+ VERSION 2.2
FILENAME G4RealSurface
EXTENSION tar.gz
ENVVAR G4REALSURFACEDATA
- MD5SUM 1d0fcc24c7082edae1e22a3d43fbb4d9
+ MD5SUM ea8f1cfa8d8aafd64b71fb30b3e8a6d9
)
# - SAID
@@ -109,10 +109,26 @@ geant4_add_dataset(
# - ENSDFSTATE
geant4_add_dataset(
NAME G4ENSDFSTATE
- VERSION 2.2
+ VERSION 2.3
FILENAME G4ENSDFSTATE
EXTENSION tar.gz
ENVVAR G4ENSDFSTATEDATA
- MD5SUM 495439cf600225753d7bd99825e5c6bc
+ MD5SUM 6f18fce8f217e7aaeaa3711be9b2c7bf
+ )
+
+# - TENDL
+option(GEANT4_INSTALL_DATASETS_TENDL "Install optional TENDL dataset" OFF)
+mark_as_advanced(GEANT4_INSTALL_DATASETS_TENDL)
+
+if(GEANT4_INSTALL_DATASETS_TENDL)
+ geant4_add_dataset(
+ NAME G4TENDL
+ VERSION 1.4
+ FILENAME G4TENDL
+ EXTENSION tar.gz
+ ENVVAR G4PARTICLEHPDATA
+ MD5SUM ecdad2f8234c10caecaac82ac0cb96f8
)
+endif()
+
diff --git a/cmake/Modules/G4DeveloperAPI.cmake b/cmake/Modules/G4DeveloperAPI.cmake
index f75a52e4cd..03cf2ce80e 100644
--- a/cmake/Modules/G4DeveloperAPI.cmake
+++ b/cmake/Modules/G4DeveloperAPI.cmake
@@ -41,15 +41,6 @@ else()
return()
endif()
-# Whilst we test, allow switching between old and new implementations
-option(GEANT4_USE_NEW_CMAKE "Use new CMake module/library implementation" ON)
-mark_as_advanced(GEANT4_USE_NEW_CMAKE)
-
-if(NOT GEANT4_USE_NEW_CMAKE)
- include(G4DeveloperAPI_OLD)
- return()
-endif()
-
# Needed modules
include(G4ClangFormat)
@@ -499,12 +490,12 @@ function(geant4_compose_targets)
endif()
endforeach()
- # Process all defined libraries, except for G4clhep{-static}
- # G4clhep/G4ptl are a corner cases because its call to add_library happens
+ # Process all defined libraries, except for G4{clhep,expat,ptl}{-static}
+ # These are corner cases because its call to add_library happens
# at a different (lower) directory level than all the other targets
# This means we cannot install it here. That's left to it
get_property(__g4definedlibraries GLOBAL PROPERTY GEANT4_DEFINED_CATEGORIES)
- list(REMOVE_ITEM __g4definedlibraries G4clhep G4clhep-static G4ptl G4ptl-static)
+ list(REMOVE_ITEM __g4definedlibraries G4clhep G4clhep-static G4expat G4expat-static G4ptl G4ptl-static)
set(__g4builtlibraries)
set(__g4public_headers)
@@ -670,8 +661,8 @@ endfunction()
# GEANT4_LINK_LIBRARIES lib1 [lib2 ...]
# LINK_LIBRARIES lib1 [lib2 ...])
#
-# DEPRECATED: Maintained only for building internal G4clhep target because of its
-# different include structure.
+# Maintained for building internal G4clhep,G4expat targets because we try and
+# reuse their upstream code/build layout as far as possible
#
function(geant4_library_target)
cmake_parse_arguments(G4GLOBLIB
@@ -681,7 +672,7 @@ function(geant4_library_target)
${ARGN}
)
# Currently a hack to get G4clhep to build, so an error if used elsewhere
- if(NOT (${G4GLOBLIB_NAME} STREQUAL "G4clhep"))
+ if(NOT (${G4GLOBLIB_NAME} MATCHES "G4clhep|G4expat"))
message(FATAL_ERROR "geant4_library_target called for '${G4GLOBLIB_NAME}' in '${CMAKE_CURRENT_LIST_DIR}'")
endif()
@@ -856,8 +847,8 @@ endfunction()
# This is used internally by the ``geant4_compose_targets`` command.
#
function(__geant4_add_library _name _type)
- # TEMP HACK: G4clhep/G4ptl are a special cases, and build is handled separately
- if(_name MATCHES "G4clhep|G4ptl")
+ # TEMP HACK: G4clhep/G4expat/G4ptl are a special cases, and build is handled separately
+ if(_name MATCHES "G4clhep|G4expat|G4ptl")
return()
endif()
diff --git a/cmake/Modules/G4DeveloperAPI_OLD.cmake b/cmake/Modules/G4DeveloperAPI_OLD.cmake
deleted file mode 100644
index 8e93cb8e94..0000000000
--- a/cmake/Modules/G4DeveloperAPI_OLD.cmake
+++ /dev/null
@@ -1,453 +0,0 @@
-#.rst:
-# G4DeveloperAPI_OLD
-# ------------------
-#
-# Old style API for declaring Geant4 source code modules and
-# compiling, linking and installing binary libraries composed
-# from one or more source code modules.
-#
-
-#-----------------------------------------------------------------
-# License and Disclaimer
-#
-# The Geant4 software is copyright of the Copyright Holders of
-# the Geant4 Collaboration. It is provided under the terms and
-# conditions of the Geant4 Software License, included in the file
-# LICENSE and available at http://cern.ch/geant4/license . These
-# include a list of copyright holders.
-#
-# Neither the authors of this software system, nor their employing
-# institutes,nor the agencies providing financial support for this
-# work make any representation or warranty, express or implied,
-# regarding this software system or assume any liability for its
-# use. Please see the license in the file LICENSE and URL above
-# for the full disclaimer and the limitation of liability.
-#
-# This code implementation is the result of the scientific and
-# technical work of the GEANT4 collaboration.
-# By using, copying, modifying or distributing the software (or
-# any work based on the software) you agree to acknowledge its
-# use in resulting scientific publications, and indicate your
-# acceptance of all terms of the Geant4 Software license.
-#
-#-----------------------------------------------------------------
-
-
-# - Include guard
-if(NOT __G4DEVELOPERAPI_OLD_INCLUDED)
- set(__G4DEVELOPERAPI_OLD_INCLUDED 1)
-else()
- return()
-endif()
-
-# - Needed CMake modules
-include(CMakeParseArguments)
-include(G4ClangFormat)
-
-#-----------------------------------------------------------------------
-#.rst:
-# Source Code Module Declaration Functions
-# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-#
-# Geant4's source code is organised into categories composed of one or
-# more "modules" of source code. Each module has the following layout
-# of headers and sources:
-#
-# - include/
-# - Public headers
-# - src/
-# - Implementations
-#
-# The functions here declare a module ready for it to be integrated
-# by the library build functions described below.
-
-#-----------------------------------------------------------------------
-# macro geant4_define_module(NAME
-# HEADERS ...
-# SOURCES ...
-# GRANULAR_DEPENDENCIES ...
-# GLOBAL_DEPENDENCIES ...
-# LINK_LIBRARIES ... )
-# Define a Geant4 Module's sources and what internal and external
-# libraries it links to.
-#
-# GEANT4_DEFINE_MODULE will take the name of the module, a list of header
-# files, a list of source files and dependencies:
-#
-# GEANT4_DEFINE_MODULE(NAME name
-# HEADERS hdr1 hdr2 ...
-# SOURCES src1 src2 ...
-# GRANULAR_DEPENDENCIES dep1 dep2 ...
-# GLOBAL_DEPENDENCIES dep1 dep2 ...
-# LINK_LIBRARIES lib1 lib2 ...)
-#
-# It assumes that it will be called from a CMake located in the module
-# root directory (i.e. the directory containing the include and src
-# subdirectories). It uses this location to define absolute paths to the
-# headers and sources, and will ignore any absolute paths passed in HEADERS
-# or SOURCES so that generated files can be passed in.
-#
-# The macro defines the variables
-#
-# G4MODULENAME = name
-# ${G4MODULENAME}_HEADERS = List of absolute paths to files given in HEADERS
-# ${G4MODULENAME}_SOURCES = List of absolute paths to files given in SOURCES
-# ${G4MODULENAME}_GRANULAR_DEPS = List of granular libraries on which this
-# module depends
-# ${G4MODULENAME}_GLOBAL_DEPS = List of global libraries on which this module
-# depends
-# ${G4MODULENAME}_LINK_LIBRARIES = List of external libraries to be linked to
-# this module
-#
-# It will also add the module include directory to the list of directories
-# using include_directories
-#
-macro(geant4_define_module)
- set(multiargs
- HEADERS SOURCES GRANULAR_DEPENDENCIES GLOBAL_DEPENDENCIES LINK_LIBRARIES
- HEADERS_EXCLUDE_FORMAT SOURCES_EXCLUDE_FORMAT)
- cmake_parse_arguments(G4DEFMOD
- ""
- "NAME"
- "${multiargs}"
- ${ARGN}
- )
-
- set(G4MODULENAME ${G4DEFMOD_NAME})
-
- get_filename_component(${G4MODULENAME}_BASEDIR ${CMAKE_CURRENT_LIST_FILE} PATH)
- set(${G4MODULENAME}_SRCDIR ${${G4MODULENAME}_BASEDIR}/src)
- set(${G4MODULENAME}_INCDIR ${${G4MODULENAME}_BASEDIR}/include)
-
- # We now create absolute paths to the headers and sources,
- # ignoring any already absolute paths
- foreach(_HDR ${G4DEFMOD_HEADERS})
- if(IS_ABSOLUTE ${_HDR})
- list(APPEND ${G4MODULENAME}_HEADERS ${_HDR})
- else()
- list(APPEND ${G4MODULENAME}_HEADERS ${${G4MODULENAME}_INCDIR}/${_HDR})
- endif()
- endforeach()
-
- foreach(_SRC ${G4DEFMOD_SOURCES})
- if(IS_ABSOLUTE ${_SRC})
- list(APPEND ${G4MODULENAME}_SOURCES ${_SRC})
- else()
- list(APPEND ${G4MODULENAME}_SOURCES ${${G4MODULENAME}_SRCDIR}/${_SRC})
- endif()
- endforeach()
-
- exclude_from_format(
- HEADERS ${G4DEFMOD_HEADERS_EXCLUDE_FORMAT}
- SOURCES ${G4DEFMOD_SOURCES_EXCLUDE_FORMAT})
-
- foreach(_LIB ${G4DEFMOD_GRANULAR_DEPENDENCIES})
- list(APPEND ${G4MODULENAME}_GRANULAR_DEPENDENCIES ${_LIB})
- endforeach()
-
- foreach(_LIB ${G4DEFMOD_GLOBAL_DEPENDENCIES})
- list(APPEND ${G4MODULENAME}_GLOBAL_DEPENDENCIES ${_LIB})
- endforeach()
-
- foreach(_LIB ${G4DEFMOD_LINK_LIBRARIES})
- list(APPEND ${G4MODULENAME}_LINK_LIBRARIES ${_LIB})
- endforeach()
-endmacro()
-
-
-#-----------------------------------------------------------------------
-# macro geant4_add_compile_definitions(SOURCES ...
-# COMPILE_DEFINITIONS ...
-# )
-# Add extra compile definitions to a specific list of sources
-# in the current module. Macroized to handle the need to specify absolute paths.
-# and *must* be called at the same level as geant4_define_module
-#
-macro(geant4_add_compile_definitions)
- cmake_parse_arguments(G4ADDDEF
- ""
- ""
- "SOURCES;COMPILE_DEFINITIONS"
- ${ARGN}
- )
-
- # We assume that the sources have been added at the level of a
- # a sources.cmake, so are inside the src subdir of the sources.cmake
- get_filename_component(_ACD_BASE_PATH ${CMAKE_CURRENT_LIST_FILE} PATH)
-
- # Now for each file, add the definitions
- foreach(_acd_source ${G4ADDDEF_SOURCES})
- # Extract any existing compile definitions
- get_source_file_property(
- _acd_existing_properties
- ${_ACD_BASE_PATH}/src/${_acd_source}
- COMPILE_DEFINITIONS)
-
- if(_acd_existing_properties)
- set(_acd_new_defs ${_acd_existing_properties}
- ${G4ADDDEF_COMPILE_DEFINITIONS})
- else()
- set(_acd_new_defs ${G4ADDDEF_COMPILE_DEFINITIONS})
- endif()
-
- # quote compile defs because this must epand to space separated list
- set_source_files_properties(${_ACD_BASE_PATH}/src/${_acd_source}
- PROPERTIES COMPILE_DEFINITIONS "${_acd_new_defs}")
- endforeach()
-endmacro()
-
-
-#-----------------------------------------------------------------------
-#.rst:
-# Library Declaration, Build and Install API
-# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-#
-# - Define useful macros for building and installing Geant4 library targets
-#
-# This file defines the following macros for Geant4 developers needing to
-# add shared and static library targets.
-#
-# GEANT4_LIBRARY_TARGET - define standard Geant4 library targets
-#
-# The macro will take the name of the library and its sources, defining
-# static and shared targets depending on the value of BUILD_SHARED_LIBS and
-# BUILD_STATIC_LIBS. Install targets are also created.
-#
-# A custom compile definition "GEANT4_DEVELOPER_" is set on
-# each target using the target property COMPILE_DEFINITIONS_
-# target property
-
-
-#-----------------------------------------------------------------------
-
-#-----------------------------------------------------------------------
-# - GEANT4_LIBRARY_TARGET
-# General build and install of a Geant4 library target
-#
-macro(geant4_library_target)
- cmake_parse_arguments(G4LIBTARGET
- ""
- "NAME" "SOURCES;GEANT4_LINK_LIBRARIES;LINK_LIBRARIES"
- ${ARGN}
- )
-
- geant4_format_target(NAME ${G4LIBTARGET_NAME}-format SOURCES ${G4LIBTARGET_SOURCES})
-
- if(BUILD_SHARED_LIBS)
- # Add the shared library target and link its dependencies
- # - Common shared lib commands
- add_library(${G4LIBTARGET_NAME} SHARED ${G4LIBTARGET_SOURCES})
- target_compile_definitions(${G4LIBTARGET_NAME} PRIVATE GEANT4_DEVELOPER_$)
- target_compile_features(${G4LIBTARGET_NAME} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
-
- set(__sorted_link_libs ${G4LIBTARGET_GEANT4_LINK_LIBRARIES} ${G4LIBTARGET_LINK_LIBRARIES})
- if(__sorted_link_libs)
- list(SORT __sorted_link_libs)
- endif()
-
- target_link_libraries(${G4LIBTARGET_NAME} ${__sorted_link_libs})
- # DLL support, portable to all platforms
- # G4LIB_BUILD_DLL is public as despite the name it indicates the shared/archive mode
- # and clients must apply it when linking to the shared libs. The global
- # category handles the exact import/export statements
- target_compile_definitions(${G4LIBTARGET_NAME} PUBLIC G4LIB_BUILD_DLL)
- set_target_properties(${G4LIBTARGET_NAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
-
- # Set the include directory usage requirements
- target_include_directories(${G4LIBTARGET_NAME} PUBLIC "$")
-
- # This property is set to prevent concurrent builds of static and
- # shared libs removing each others files.
- set_target_properties(${G4LIBTARGET_NAME}
- PROPERTIES CLEAN_DIRECT_OUTPUT 1)
-
- # Use '@rpath' in install names of libraries on macOS to provide relocatibility
- set_target_properties(${G4LIBTARGET_NAME}
- PROPERTIES MACOSX_RPATH 1
- )
- # Add '@loader_path' to INSTALL_RPATH on macOS so that Geant4
- # libraries self-locate each other whilst remaining relocatable
- if(APPLE)
- set_property(TARGET ${G4LIBTARGET_NAME}
- APPEND PROPERTY INSTALL_RPATH "@loader_path"
- )
- endif()
-
- # Alias the library for transparent internal use in build or link contexts
- add_library(Geant4::${G4LIBTARGET_NAME} ALIAS ${G4LIBTARGET_NAME})
-
- # Install the library - note the use of RUNTIME, LIBRARY and ARCHIVE
- # this helps with later DLL builds.
- # Export to standard depends file for later install
- install(TARGETS ${G4LIBTARGET_NAME}
- EXPORT Geant4LibraryDepends
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Runtime
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
- endif()
-
- #
- # As above, but for static rather than shared library
- if(BUILD_STATIC_LIBS)
- # We have to distinguish the static from shared lib, so use -static in
- # name. Link its dependencies, and ensure we actually link to the
- # -static targets (We should strictly do this for the external
- # libraries as well if we want a pure static build).
- add_library(${G4LIBTARGET_NAME}-static STATIC ${G4LIBTARGET_SOURCES})
- target_compile_definitions(${G4LIBTARGET_NAME}-static PRIVATE GEANT4_DEVELOPER_$)
- target_compile_features(${G4LIBTARGET_NAME}-static PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
- target_include_directories(${G4LIBTARGET_NAME}-static PUBLIC "$")
-
- set(G4LIBTARGET_GEANT4_LINK_LIBRARIES_STATIC )
- foreach(_tgt ${G4LIBTARGET_GEANT4_LINK_LIBRARIES})
- list(APPEND G4LIBTARGET_GEANT4_LINK_LIBRARIES_STATIC ${_tgt}-static)
- endforeach()
-
- # If we are building both types of library and builtin clhep etc,
- # we want to link shared->shared and static->static.
- # Because externals like clhep appear in G4LIBTARGET_LINK_LIBRARIES,
- # filter this list to replace shared builtins with their static variant
- string(REGEX REPLACE
- "(G4clhep|G4expat|G4zlib|G4ptl|G4geomUSolids)(;|$)" "\\1-static\\2"
- G4LIBTARGET_LINK_LIBRARIES_STATIC
- "${G4LIBTARGET_LINK_LIBRARIES}"
- )
-
- set(__sorted_link_libs ${G4LIBTARGET_GEANT4_LINK_LIBRARIES_STATIC} ${G4LIBTARGET_LINK_LIBRARIES_STATIC})
- if(__sorted_link_libs)
- list(SORT __sorted_link_libs)
- endif()
- target_link_libraries(${G4LIBTARGET_NAME}-static PUBLIC ${__sorted_link_libs})
-
- # But we can rename the output library to the correct name
- # On WIN32 we *retain* the -static postfix to avoid name clashes
- # with the DLL import lib.
- if(NOT WIN32)
- set_target_properties(${G4LIBTARGET_NAME}-static
- PROPERTIES OUTPUT_NAME ${G4LIBTARGET_NAME})
- endif()
-
- set_target_properties(${G4LIBTARGET_NAME}-static
- PROPERTIES CLEAN_DIRECT_OUTPUT 1)
-
- # Alias the library for transparent internal use in build or link contexts
- add_library(Geant4::${G4LIBTARGET_NAME}-static ALIAS ${G4LIBTARGET_NAME}-static)
-
- install(TARGETS ${G4LIBTARGET_NAME}-static
- EXPORT Geant4LibraryDepends
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Runtime
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
- INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
- endif()
-endmacro()
-
-#-----------------------------------------------------------------------
-# - GEANT4_HEADER_MODULE_TARGET
-# Build and install for a header only Geant4 module.
-#
-macro(geant4_header_module_target)
- CMAKE_PARSE_ARGUMENTS(G4HEADERMOD
- ""
- "COMPONENT"
- ""
- ${ARGN}
- )
-
- # Only has one component, and we just have to pick out the headers
- include(${G4HEADERMOD_COMPONENT})
-
- # Header install?
- install(FILES ${${G4MODULENAME}_HEADERS}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
- COMPONENT Development)
-
- # Store the include path of the component so that the build tree
- # config file can pick up all needed header paths
- set_property(GLOBAL APPEND
- PROPERTY GEANT4_BUILDTREE_INCLUDE_DIRS "${${G4MODULENAME}_INCDIR}")
-endmacro()
-
-#-----------------------------------------------------------------------
-# - GEANT4_GRANULAR_LIBRARY_TARGET
-# Build and install for a Geant4 module (granular) library
-#
-macro(geant4_granular_library_target)
- cmake_parse_arguments(G4GRANLIB
- ""
- "COMPONENT"
- ""
- ${ARGN}
- )
-
- message(FATAL_ERROR "geant4_granular_library_target is no longer supported")
-endmacro()
-
-#-----------------------------------------------------------------------
-# - GEANT4_GLOBAL_LIBRARY_TARGET
-# Build and install of a Geant4 category (global) library
-#
-macro(geant4_global_library_target)
- cmake_parse_arguments(G4GLOBLIB
- ""
- "NAME"
- "COMPONENTS"
- ${ARGN}
- )
-
- # We loop over the component sources one at a time,
- # appending properties as we go.
- foreach(_comp ${G4GLOBLIB_COMPONENTS})
- include(${_comp})
- # In case we have a global lib with one component, ensure name gets set
- if(NOT G4GLOBLIB_NAME)
- set(G4GLOBLIB_NAME ${G4MODULENAME})
- endif()
-
- list(APPEND ${G4GLOBLIB_NAME}_GLOBAL_SOURCES ${${G4MODULENAME}_SOURCES})
- list(APPEND ${G4GLOBLIB_NAME}_GLOBAL_HEADERS ${${G4MODULENAME}_HEADERS})
-
- list(APPEND ${G4GLOBLIB_NAME}_GLOBAL_DEPENDENCIES
- ${${G4MODULENAME}_GLOBAL_DEPENDENCIES})
-
- list(APPEND ${G4GLOBLIB_NAME}_LINK_LIBRARIES
- ${${G4MODULENAME}_LINK_LIBRARIES})
-
- list(APPEND ${G4GLOBLIB_NAME}_BUILDTREE_INCLUDES ${${G4MODULENAME}_INCDIR})
- endforeach()
-
- # Reset directory scope include dirs so we enforce usage requirements
- set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "")
-
- # Filter out duplicates/self in GLOBAL_DEPENDENCIES and LINK_LIBRARIES
- if(${G4GLOBLIB_NAME}_GLOBAL_DEPENDENCIES)
- list(REMOVE_DUPLICATES ${G4GLOBLIB_NAME}_GLOBAL_DEPENDENCIES)
- list(REMOVE_ITEM ${G4GLOBLIB_NAME}_GLOBAL_DEPENDENCIES ${G4GLOBLIB_NAME})
- endif()
- if(${G4GLOBLIB_NAME}_LINK_LIBRARIES)
- list(REMOVE_DUPLICATES ${G4GLOBLIB_NAME}_LINK_LIBRARIES)
- endif()
-
- # Now add the library target
- geant4_library_target(NAME ${G4GLOBLIB_NAME}
- SOURCES
- ${${G4GLOBLIB_NAME}_GLOBAL_SOURCES}
- ${${G4GLOBLIB_NAME}_GLOBAL_HEADERS}
- GEANT4_LINK_LIBRARIES
- ${${G4GLOBLIB_NAME}_GLOBAL_DEPENDENCIES}
- LINK_LIBRARIES
- ${${G4GLOBLIB_NAME}_LINK_LIBRARIES})
-
- # Header install?
- install(FILES ${${G4GLOBLIB_NAME}_GLOBAL_HEADERS}
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
- COMPONENT Development)
-
- # Store the include path of the component. Only used so that
- # other tools like GNUmake/pkg-config can be configured for the
- # build tree
- set_property(GLOBAL APPEND
- PROPERTY GEANT4_BUILDTREE_INCLUDE_DIRS ${${G4GLOBLIB_NAME}_BUILDTREE_INCLUDES})
-endmacro()
-
diff --git a/cmake/Modules/G4InstallData.cmake b/cmake/Modules/G4InstallData.cmake
index 7928c97875..263225bf2c 100644
--- a/cmake/Modules/G4InstallData.cmake
+++ b/cmake/Modules/G4InstallData.cmake
@@ -75,21 +75,6 @@
# If it is not installed, warn user that it will need installing
# manually in destination.
#
-#
-# Private API
-# -----------
-# function _geant4_dataproject(
-# PREFIX installdir
-# SOURCE_DIR wheretounpack
-# URL whattodownload
-# URL_MD5 expectedMD5ofdownload
-# TIMEOUT timeoutafter(seconds))
-# Download, unpack and install a dataset for CMake < 2.8.2
-# This largely replicates the functionality of ExternalProject
-# so that CMake 2.6.4 can still be supported (It is also needed
-# for CMake 2.8.{0,1} where ExternalProject does not provide MD5
-# validation.
-#
#-----------------------------------------------------------------------
# GEANT4 PHYSICS DATA - GLOBAL CMAKE VARIABLES
@@ -419,28 +404,17 @@ function(geant4_install_dataset _name _destination _timeout)
# - Dispatch to ExternalProject or our own implementation.
# Use of URL_MD5 *and* TIMEOUT require CMake 2.8.2 or higher.
- if(${CMAKE_VERSION} VERSION_GREATER "2.8.1")
- include(ExternalProject)
- ExternalProject_Add(${_name}
- PREFIX Externals/${_name}-${_ds_version}
- SOURCE_DIR ${GEANT4_BUILD_FULL_DATADIR}/${_ds_dir}
- URL ${_ds_url}
- URL_MD5 ${_ds_md5sum}
- TIMEOUT ${_timeout}
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- else()
- _geant4_dataproject(${_name}
- PREFIX Externals/${_name}-${_ds_version}
- SOURCE_DIR ${GEANT4_BUILD_FULL_DATADIR}
- URL ${_ds_url}
- URL_MD5 ${_ds_md5sum}
- TIMEOUT ${_timeout}
- )
- endif()
-
+ include(ExternalProject)
+ ExternalProject_Add(${_name}
+ PREFIX Externals/${_name}-${_ds_version}
+ SOURCE_DIR ${GEANT4_BUILD_FULL_DATADIR}/${_ds_dir}
+ URL ${_ds_url}
+ URL_MD5 ${_ds_md5sum}
+ TIMEOUT ${_timeout}
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ )
# - Configure the dataset's build and install locations
geant4_set_dataset_property(${_name} BUILD_DIR "${PROJECT_BINARY_DIR}/data/${_ds_dir}")
geant4_set_dataset_property(${_name} INSTALL_DIR "${_destination}/${_ds_dir}")
@@ -472,119 +446,6 @@ function(geant4_reuse_dataset _name _destination _ispresent)
geant4_set_dataset_property(${_name} INSTALL_DIR "${_destination}/${_ds_dir}")
endfunction()
-
-#-----------------------------------------------------------------------
-# GEANT4 PHYSICS DATA - PRIVATE CMAKE API FOR DATASET HANDLING
-#-----------------------------------------------------------------------
-# function _geant4_dataproject(
-# PREFIX installdir
-# SOURCE_DIR wheretounpack
-# URL whattodownload
-# URL_MD5 expectedMD5ofdownload
-# TIMEOUT timeoutafter(seconds))
-# Download, unpack and install a dataset for CMake < 2.8.2
-# This largely replicates the functionality of ExternalProject
-# so that CMake 2.6.4 can still be supported (It is also needed
-# for CMake 2.8.{0,1} where ExternalProject does not provide MD5
-# validation.
-#
-function(_geant4_dataproject _name)
- # - Parse arguments and create any extra needed variables
- set(oneValueArgs PREFIX SOURCE_DIR URL URL_MD5 TIMEOUT)
- cmake_parse_arguments(_G4DATA "" "${oneValueArgs}" "" ${ARGN})
- get_filename_component(_G4DATA_FILE ${_G4DATA_URL} NAME)
-
- # - Write Download script
- file(WRITE ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-Download.cmake "
- message(STATUS \"downloading ${_G4DATA_URL}...\")
- file(DOWNLOAD
- ${_G4DATA_URL}
- \"${_G4DATA_PREFIX}/${_G4DATA_FILE}\"
- TIMEOUT ${_G4DATA_TIMEOUT}
- STATUS _status)
- # LOG _log) - LOG with TIMEOUT fails due to curl issue, prefer TIMEOUT
- list(GET _status 0 _status_code)
- list(GET _status 1 _status_msg)
- if(NOT _status_code EQUAL 0)
- message(FATAL_ERROR \"error: downloading ${_G4DATA_URL} failed
- status_code : \${_status_code}
- status_msg : \${_status_msg}
- #log : \${_log}\"
- )
- endif()
- ")
-
- # - Write Verify script
- file(WRITE ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-Verify.cmake "
- message(STATUS \"verifying ${_G4DATA_FILE} ...\")
- execute_process(
- COMMAND \"${CMAKE_COMMAND}\" -E md5sum \"${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_G4DATA_FILE}\"
- OUTPUT_VARIABLE ov
- OUTPUT_STRIP_TRAILING_WHITESPACE
- RESULT_VARIABLE _result_code
- )
- if(NOT _result_code EQUAL 0)
- message(FATAL_ERROR \"error: computing md5sum of ${_G4DATA_FILE} failed\")
- endif()
- string(REGEX MATCH \"^([0-9A-Fa-f]+)\" md5_actual \"\${ov}\")
- string(TOLOWER \"\${md5_actual}\" md5_actual)
- string(TOLOWER \"${_G4DATA_URL_MD5}\" md5)
- if(NOT \"\${md5}\" STREQUAL \"\${md5_actual}\")
- message(FATAL_ERROR \"error: md5sum of '${_G4DATA_FILE}' does not match expected value
- md5_expected: \${md5}
- md5_actual: \${md5_actual}
-\")
- endif()
- message(STATUS \"verifying ${_G4DATA_FILE} ... done\")
- ")
-
- # - Write Unpack script
- if(${_G4DATA_FILE} MATCHES "(\\.|=)(tar\\.gz|zip)$")
- else()
- message(FATAL_ERROR "error: do not know how to extract '${_G4DATA_FILE}' -- file needs to be .tar.gz or zip")
- endif()
- file(WRITE ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-Unpack.cmake "
- message(STATUS \"unpacking ${_G4DATA_FILE} ...\")
- file(MAKE_DIRECTORY ${_G4DATA_SOURCE_DIR})
- execute_process(COMMAND
- \${CMAKE_COMMAND} -E tar xfz \"${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_G4DATA_FILE}\"
- WORKING_DIRECTORY ${_G4DATA_SOURCE_DIR}
- RESULT_VARIABLE rv)
- if(NOT rv EQUAL 0)
- message(STATUS \"extracting... [error clean up]\")
- file(REMOVE_RECURSE \"${_G4DATA_SOURCE_DIR}\")
- message(FATAL_ERROR \"error: extract of '${_G4DATA_FILE}' failed\")
- endif()
- message(STATUS \"unpacking ${_G4DATA_FILE} ... done\")
- ")
-
- # - Add custom commands for each step, each depending on the last
- foreach(_step Download Verify Unpack)
- if(_last_step)
- set(_deps DEPENDS ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-${_last_step}.stamp)
- endif()
-
- add_custom_command(
- OUTPUT ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-${_step}.stamp
- COMMENT "${_step} ${_name}"
- COMMAND "${CMAKE_COMMAND}" -P ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-${_step}.cmake
- COMMAND "${CMAKE_COMMAND}" -E touch ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-${_step}.stamp
- VERBATIM
- ${_deps}
- )
-
- set(_last_step ${_step})
- endforeach()
-
- # - Add the main target which will run all the above steps
- add_custom_target(${_name} ALL
- COMMENT "Completed ${_name}"
- DEPENDS ${PROJECT_BINARY_DIR}/${_G4DATA_PREFIX}/${_name}-${_last_step}.stamp
- VERBATIM
- )
-endfunction()
-
-
#-----------------------------------------------------------------------
# GEANT4 PHYSICS DATA - USER INTERFACE AND PROCESSING
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/G4InterfaceOptions.cmake b/cmake/Modules/G4InterfaceOptions.cmake
index 93a4517250..d21c350096 100644
--- a/cmake/Modules/G4InterfaceOptions.cmake
+++ b/cmake/Modules/G4InterfaceOptions.cmake
@@ -35,65 +35,108 @@
# Specific UI/Vis options are also handled here.
#
+#-----------------------------------------------------------------------
+# Select options first because these are interdependent
+#
+# - Coin3D/So{XT,Win,Qt}
+option(GEANT4_USE_INVENTOR "Build Geant4 OpenInventor Xt/Win Visualization Driver" OFF)
+geant4_add_feature(GEANT4_USE_INVENTOR "Build OpenInventor Xt/Win Driver")
+
+option(GEANT4_USE_INVENTOR_QT "Build Geant4 OpenInventor Qt Visualization Driver" OFF)
+geant4_add_feature(GEANT4_USE_INVENTOR_QT "Build OpenInventor Qt Driver")
+
+# GEANT4_USE_INVENTOR is a dual-purpose variable - it marks use of Xt/Win driver for
+# user, and marks enablement of G4OpenInventor internally. Check that user-set options
+# are consistent before setting *internal* value
+if(GEANT4_USE_INVENTOR AND GEANT4_USE_INVENTOR_QT)
+ message(FATAL_ERROR "Only one of GEANT4_USE_INVENTOR and GEANT4_USE_INVENTOR_QT can be set ON, but both are ON.")
+endif()
+
+# User settings o.k., so mark that we're enabling G4OpenInventor
+if(GEANT4_USE_INVENTOR_QT)
+ set(GEANT4_USE_INVENTOR ON)
+endif()
+
+# - Qt (may be required by Coin driver)
+option(GEANT4_USE_QT "Build Geant4 with Qt support" OFF)
+if(GEANT4_USE_INVENTOR_QT AND NOT GEANT4_USE_QT)
+ set(GEANT4_USE_QT ON CACHE BOOL "Build Geant4 with Qt support" FORCE)
+ message(STATUS "Forcing GEANT4_USE_QT to ON, required by GEANT4_USE_INVENTOR_QT")
+endif()
+
+geant4_add_feature(GEANT4_USE_QT "Build Geant4 with Qt support")
+
+# - Unix only
+if(UNIX)
+ # - Client/Server DAWN driver
+ # mark as advanced because user should know what they're doing here
+ option(GEANT4_USE_NETWORKDAWN "Build Dawn driver with Client/Server support" OFF)
+ geant4_add_feature(GEANT4_USE_NETWORKDAWN "Build Dawn driver with Client/Server support")
+ mark_as_advanced(GEANT4_USE_NETWORKDAWN)
+
+ # - Client/Server VRML driver
+ option(GEANT4_USE_NETWORKVRML "Build VRML driver with Client/Server support" OFF)
+ geant4_add_feature(GEANT4_USE_NETWORKVRML "Build VRML driver with Client/Server support")
+ mark_as_advanced(GEANT4_USE_NETWORKVRML)
+
+ # - Motif UI/Vis (may be required by Coin Vis driver)
+ option(GEANT4_USE_XM "Build Geant4 with Motif (X11) support" OFF)
+ if(GEANT4_USE_INVENTOR AND NOT GEANT4_USE_INVENTOR_QT AND NOT GEANT4_USE_XM)
+ set(GEANT4_USE_XM ON CACHE BOOL "Build Geant4 with Motif (X11) support" FORCE)
+ message(STATUS "Forcing GEANT4_USE_XM to ON, required by GEANT4_USE_INVENTOR")
+ endif()
+
+ geant4_add_feature(GEANT4_USE_XM "Build Geant4 with Xm Support")
+
+ # OpenGL/X11 Vis Driver
+ option(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support" OFF)
+ geant4_add_feature(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support")
+
+ # RayTracer driver with X11 support
+ option(GEANT4_USE_RAYTRACER_X11 "Build RayTracer driver with X11 support" OFF)
+ geant4_add_feature(GEANT4_USE_RAYTRACER_X11 "Build RayTracer driver with X11 support")
+endif()
+
+# Windows only
+if(WIN32)
+ option(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
+ geant4_add_feature(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
+endif()
+
+#-----------------------------------------------------------------------
+# Find dependencies
+#
# Prefer Legacy GL when using CMake >= 3.10
set(OpenGL_GL_PREFERENCE "LEGACY")
-#-----------------------------------------------------------------------
-# Configure OpenInventor support
-#
-option(GEANT4_USE_INVENTOR "Build Geant4 OpenInventor Visualization Driver" OFF)
-option(GEANT4_USE_INVENTOR_QT "Build Geant4 OpenInventor Qt Visualization Driver" OFF)
-
-if(GEANT4_USE_INVENTOR_QT)
- set(GEANT4_USE_INVENTOR ON)
- set(GEANT4_USE_QT ON)
-endif()
-
+# - Coin plus So{Xt,Qt,Win}
if(GEANT4_USE_INVENTOR)
- # Always need Inventor and OpenGL
- find_package(Inventor REQUIRED)
- find_package(OpenGL REQUIRED)
+ find_package(Coin 4.0.0 REQUIRED)
+ geant4_save_package_variables(Inventor Coin_DIR)
- # On UNIX, we also require Xm and X11 (inc. Xpm)...
- if(UNIX)
- if (GEANT4_USE_INVENTOR_QT)
- if (NOT INVENTOR_SOQT_LIBRARY OR NOT INVENTOR_SOQT_INCLUDE_DIR)
- message(FATAL_ERROR "Could not find SoQt library and/or headers")
- endif()
- set(INVENTOR_INCLUDE_DIR "${INVENTOR_INCLUDE_DIR}" "${INVENTOR_SOQT_INCLUDE_DIR}")
- else()
- if(NOT INVENTOR_SOXT_LIBRARY OR NOT INVENTOR_SOXT_INCLUDE_DIR)
- message(FATAL_ERROR "Could not find SoXt library and/or headers")
- endif()
- set(INVENTOR_INCLUDE_DIR "${INVENTOR_INCLUDE_DIR}" "${INVENTOR_SOXT_INCLUDE_DIR}")
- set(GEANT4_USE_XM ON)
- find_package(Motif REQUIRED)
- endif()
-
- find_package(X11 REQUIRED)
-
- if(NOT X11_Xpm_FOUND)
- message(FATAL_ERROR "Could not find X11 Xpm headers and/or library (Required by GEANT4_USE_INVENTOR)")
+ if(GEANT4_USE_INVENTOR_QT)
+ find_package(SoQt 1.6.0 REQUIRED)
+ geant4_save_package_variables(Inventor SoQt_DIR)
+ else()
+ if(UNIX)
+ find_package(SoXt 1.4.0 REQUIRED)
+ geant4_save_package_variables(Inventor SoXt_DIR)
+ set(GEANT4_USE_INVENTOR_XT ON)
+ elseif(WIN32)
+ find_package(SoWin 1.4.0 REQUIRED)
+ geant4_save_package_variables(Inventor SoWin_DIR)
+ set(GEANT4_USE_INVENTOR_WIN ON)
endif()
endif()
-
- geant4_add_feature(GEANT4_USE_INVENTOR "Build OpenInventor Driver")
endif()
-
-#-----------------------------------------------------------------------
-# Configure Qt Support if needed (CROSSPLATFORM).
-#
-option(GEANT4_USE_QT "Build Geant4 with Qt support" OFF)
-
+# - Qt5
if(GEANT4_USE_QT)
- # Find and configure Qt and OpenGL
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5PrintSupport REQUIRED)
-
set(QT_QTCORE_LIBRARY Qt5::Core Qt5::PrintSupport)
set(QT_QTGUI_LIBRARY Qt5::Gui Qt5::Widgets)
set(QT_OPENGL_LIBRARY Qt5::Gui Qt5::OpenGL)
@@ -101,90 +144,72 @@ if(GEANT4_USE_QT)
get_target_property(QT_QMAKE_EXECUTABLE ${Qt5Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
geant4_save_package_variables(Qt5 Qt5Core_DIR Qt5Gui_DIR Qt5Widgets_DIR Qt5OpenGL_DIR Qt5PrintSupport_DIR)
- find_package(OpenGL REQUIRED)
- geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY)
+ # Qt3D is only supported on 5.15 and above, but always on if available
+ set(QT3D_MINIMUM_VERSION 5.15.0)
+ set(GEANT4_USE_QT3D OFF)
+ if(Qt5Core_VERSION GREATER_EQUAL QT3D_MINIMUM_VERSION)
+ find_package(Qt53DCore ${QT3D_MINIMUM_VERSION} QUIET)
+ find_package(Qt53DExtras ${QT3D_MINIMUM_VERSION} QUIET)
+ find_package(Qt53DRender ${QT3D_MINIMUM_VERSION} QUIET)
+
+ if(Qt53DCore_FOUND AND Qt53DExtras_FOUND AND Qt53DRender_FOUND)
+ set(GEANT4_USE_QT3D ON)
+ geant4_save_package_variables(Qt5 Qt53DCore_DIR Qt53DExtras_DIR Qt53DRender_DIR)
+ geant4_add_feature(GEANT4_USE_QT3D "Build Geant4 Qt3D driver")
+ else()
+ set(_g4_qt53d_missing)
+ if(NOT Qt53DCore_FOUND)
+ list(APPEND _g4_qt53d_missing "Qt53DCore")
+ endif()
+ if(NOT Qt53DExtras_FOUND)
+ list(APPEND _g4_qt53d_missing "Qt53DExtras")
+ endif()
+ if(NOT Qt53DRender_FOUND)
+ list(APPEND _g4_qt53d_missing "Qt53DRender")
+ endif()
+
+ message(STATUS "Disabling Geant4 Qt3D driver, missing Qt5 packages: ${_g4_qt53d_missing}")
+ endif()
+ endif()
# Variables for export to GNUmake
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PREFIX OUTPUT_VARIABLE G4QTHOME OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_LIBS OUTPUT_VARIABLE G4QTLIBPATH OUTPUT_STRIP_TRAILING_WHITESPACE)
+endif()
- # OpenGL part of Qt is in OpenGL component so mark the need to
- # add OpenGL.
+# - OpenGL
+if(GEANT4_USE_INVENTOR
+ OR GEANT4_USE_QT
+ OR GEANT4_USE_OPENGL_X11
+ OR GEANT4_USE_XM
+ OR GEANT4_USE_OPENGL_WIN32)
+ find_package(OpenGL REQUIRED)
+ geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY)
+
+ # X11 drivers on macOS need XQuartzGL
+ if(APPLE AND (GEANT4_USE_INVENTOR_XT OR GEANT4_USE_OPENGL_X11 OR GEANT4_USE_XM))
+ find_package(XQuartzGL REQUIRED)
+ geant4_save_package_variables(XQuartzGL XQuartzGL_INCLUDE_DIR XQuartzGL_gl_LIBRARY)
+ endif()
+
+ # Enable driver
set(GEANT4_USE_OPENGL ON)
- geant4_add_feature(GEANT4_USE_QT "Build Geant4 with Qt support")
endif()
-#-----------------------------------------------------------------------
-# Configure Wt Support
-#
-if(GEANT4_USE_WT)
- message(WARNING "Support for Wt in Geant4 is no longer available and may be removed in future releases")
-endif()
-set(GEANT4_USE_WT OFF)
-
-#option(GEANT4_USE_WT "Build Geant4 with Wt4 support" OFF)
-#mark_as_advanced(GEANT4_USE_WT)
-#
-#if(GEANT4_USE_WT)
-# # Find and configure Wt and OpenGL
-# find_package(Wt REQUIRED)
-# find_package(OpenGL REQUIRED)
-#
-# geant4_save_package_variables(Wt Wt_INCLUDE_DIR Wt_LIBRARY_RELEASE Wt_LIBRARY_DEBUG Wt_HTTP_LIBRARY_RELEASE Wt_HTTP_LIBRARY_DEBUG)
-# geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY)
-#
-# set(WT_DEFINITIONS "-DQT_NO_KEYWORDS")
-#
-# # WebGL part of Wt is in OpenGL component so mark the need to
-# # add OpenGL.
-# set(GEANT4_USE_OPENGL ON)
-# geant4_add_feature(GEANT4_USE_WT "Build Geant4 with Wt support")
-#endif()
-
-
-#-----------------------------------------------------------------------
-# UNIX PLATFORMS ONLY
-#-----------------------------------------------------------------------
if(UNIX)
- # - Support for Client/Server DAWN driver
- # mark as advanced because user should know what they're doing here
- option(GEANT4_USE_NETWORKDAWN "Build Dawn driver with Client/Server support" OFF)
- #
- # Possible headers checks for needed network parts?
- #
- geant4_add_feature(GEANT4_USE_NETWORKDAWN "Build Dawn driver with Client/Server support")
- mark_as_advanced(GEANT4_USE_NETWORKDAWN)
-
- # - Support for Client/Server VRML driver
- # mark as advanced because user should know what they're doing to use this
- option(GEANT4_USE_NETWORKVRML "Build VRML driver with Client/Server support" OFF)
- geant4_add_feature(GEANT4_USE_NETWORKVRML "Build VRML driver with Client/Server support")
- mark_as_advanced(GEANT4_USE_NETWORKVRML)
-
- # - Configure Xm support if requested
- option(GEANT4_USE_XM "Build Geant4 with Motif (X11) support" OFF)
-
- # - Configure OpenGL X11 support if requested
- option(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support" OFF)
-
- # - X11 Support for RayTracer driver
- option(GEANT4_USE_RAYTRACER_X11 "Build RayTracer driver with X11 support" OFF)
-
- # -- Now configure needed X11, Motif and OpenGL packages
- # We also have to be concerned with Inventor on UNIX, because
- # that also needs the Xt configuration...
# - X11
- if(GEANT4_USE_XM OR GEANT4_USE_OPENGL_X11 OR GEANT4_USE_RAYTRACER_X11 OR GEANT4_USE_INVENTOR)
+ if(GEANT4_USE_OPENGL_X11
+ OR GEANT4_USE_RAYTRACER_X11
+ OR GEANT4_USE_XM
+ OR GEANT4_USE_INVENTOR_XT)
find_package(X11 REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
# Check for additional required X11 libraries
- # - Xmu
if(NOT X11_Xmu_FOUND)
message(FATAL_ERROR "could not find X11 Xmu library and/or headers")
endif()
- # - Xt
if(NOT X11_Xt_FOUND)
message(FATAL_ERROR "could not find X11 Xt library and/or headers")
endif()
@@ -201,60 +226,14 @@ if(UNIX)
X11_Xmu_INCLUDE_PATH
X11_Xmu_LIB
X11_Xt_INCLUDE_PATH
- X11_Xt_LIB
- )
-
- # - If we got to this point, RayTracer is o.k., so add the feature
- geant4_add_feature(GEANT4_USE_RAYTRACER_X11 "Build RayTracer driver with X11 support")
+ X11_Xt_LIB)
endif()
- #- OpenGL : we also do this for Inventor so that we pick up Mac X11 GL...
- if(GEANT4_USE_INVENTOR OR GEANT4_USE_XM OR GEANT4_USE_OPENGL_X11)
- # - Find native GL first
- find_package(OpenGL REQUIRED)
- geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY)
-
- # - If we're on Apple, also find the XQuartz GL libraries and append t.
- if(APPLE)
- find_package(XQuartzGL REQUIRED)
- geant4_save_package_variables(XQuartzGL XQuartzGL_INCLUDE_DIR XQuartzGL_gl_LIBRARY)
- endif()
-
- # Add feature for X11 GL
- geant4_add_feature(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support")
- endif()
-
- # - Add need for OpenGL in X11 case
- if(GEANT4_USE_OPENGL_X11 OR GEANT4_USE_XM)
- set(GEANT4_USE_OPENGL ON)
- endif()
-
- # - Motif last of all, then can add the feature
+ # - Motif
if(GEANT4_USE_XM)
find_package(Motif REQUIRED)
include("${CMAKE_CURRENT_LIST_DIR}/G4MotifShim.cmake")
geant4_save_package_variables(Motif MOTIF_INCLUDE_DIR MOTIF_LIBRARIES)
- geant4_add_feature(GEANT4_USE_XM "Build Geant4 with Xm Support")
endif()
endif()
-#-----------------------------------------------------------------------
-# WINDOWS PLATFORMS ONLY
-#-----------------------------------------------------------------------
-if(WIN32)
- # - OpenGL Win32...
- option(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
-
- if(GEANT4_USE_OPENGL_WIN32)
- # Just need OpenGL and on Windows, this should be easy...
- find_package(OpenGL REQUIRED)
-
- # This is part of the G4OpenGL component, so mark it as needed
- set(GEANT4_USE_OPENGL ON)
- geant4_add_feature(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
- geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY)
- endif()
-endif()
-
-# - and we're done...
-
diff --git a/cmake/Modules/G4OptionalComponents.cmake b/cmake/Modules/G4OptionalComponents.cmake
index 754fe77bfb..a1ab44bbbc 100644
--- a/cmake/Modules/G4OptionalComponents.cmake
+++ b/cmake/Modules/G4OptionalComponents.cmake
@@ -61,7 +61,7 @@ if(GEANT4_USE_SYSTEM_CLHEP)
set(__system_clhep_mode " (granular)")
endif()
- find_package(CLHEP 2.3.3.0 REQUIRED ${__g4_clhep_components} CONFIG)
+ find_package(CLHEP 2.4.4.0 REQUIRED ${__g4_clhep_components} CONFIG)
geant4_save_package_variables(CLHEP CLHEP_DIR)
else()
@@ -185,7 +185,7 @@ else()
set(GEANT4_USE_BUILTIN_PTL TRUE)
set(PTL_LIBRARIES G4ptl)
endif()
-
+mark_as_advanced(GEANT4_USE_SYSTEM_PTL)
geant4_add_feature(GEANT4_USE_SYSTEM_PTL "Using system PTL library")
#-----------------------------------------------------------------------
@@ -237,12 +237,20 @@ option(GEANT4_USE_TIMEMORY "Build Geant4 with TiMemory support" ${_default_use_t
mark_as_advanced(GEANT4_USE_TIMEMORY)
if(GEANT4_USE_TIMEMORY)
- set(_G4timemory_DEFAULT_COMPONENTS headers caliper papi gotcha gperftools-cpu vector)
+ # by default just use the library which will import all the components that it
+ # was built with but once can add more
+ if(BUILD_SHARED_LIBS)
+ set(_G4timemory_DEFAULT_COMPONENTS cxx shared OPTIONAL_COMPONENTS)
+ else()
+ set(_G4timemory_DEFAULT_COMPONENTS cxx static OPTIONAL_COMPONENTS)
+ endif()
set(G4timemory_COMPONENTS "${_G4timemory_DEFAULT_COMPONENTS}" CACHE STRING
"timemory INTERFACE libraries that activate various capabilities in toolkit")
- set(G4timemory_VERSION 3.0)
+ set(G4timemory_VERSION 3.2)
set(timemory_FIND_COMPONENTS_INTERFACE geant4-timemory)
+ add_library(geant4-timemory INTERFACE)
find_package(timemory ${G4timemory_VERSION} REQUIRED COMPONENTS ${G4timemory_COMPONENTS})
+ install(TARGETS geant4-timemory EXPORT Geant4LibraryDepends)
set(timemory_LIBRARIES geant4-timemory)
geant4_save_package_variables(timemory timemory_DIR)
endif()
@@ -325,8 +333,7 @@ endif()
# - Geant4 USolids/VecGom setup
if(GEANT4_USE_ALL_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
- # VecGeom's config file doesn't support versioning...
- find_package(VecGeom REQUIRED)
+ find_package(VecGeom 1.1.8 REQUIRED)
# Shim until VecGeom supports config mode properly
include("${CMAKE_CURRENT_LIST_DIR}/G4VecGeomShim.cmake")
# Backward Compatibility
diff --git a/cmake/Modules/Geant4MacroDefineModule.cmake b/cmake/Modules/Geant4MacroDefineModule.cmake
deleted file mode 100644
index 5780d0e8ea..0000000000
--- a/cmake/Modules/Geant4MacroDefineModule.cmake
+++ /dev/null
@@ -1,12 +0,0 @@
-# - Macros for organizing and specializing code in Geant4 modules
-# - DEPRECATED: Functionality merged into G4DeveloperAPI/_OLD
-# Retained as many modules still include it
-# Simply forward to new module
-# - Include guard
-if(__GEANT4MACRODEFINEMODULE_INCLUDED)
- return()
-endif()
-set(__GEANT4MACRODEFINEMODULE_INCLUDED YES)
-
-include(G4DeveloperAPI)
-
diff --git a/cmake/Modules/Geant4MacroLibraryTargets.cmake b/cmake/Modules/Geant4MacroLibraryTargets.cmake
index 01d20afb72..7500e5a3d5 100644
--- a/cmake/Modules/Geant4MacroLibraryTargets.cmake
+++ b/cmake/Modules/Geant4MacroLibraryTargets.cmake
@@ -1,12 +1,3 @@
# - Define useful macros for building and installing Geant4 library targets
# - DEPRECATED: Functionality merged into G4DeveloperAPI/_OLD
-# Retained as many modules still include it
-# Simply forward to new module
-# - Include Guard
-if(__GEANT4MACROLIBRARYTARGETS_INCLUDED)
- return()
-endif()
-set(__GEANT4MACROLIBRARYTARGETS_INCLUDED TRUE)
-
-include(G4DeveloperAPI)
-
+# Retained as a no-op as many modules still include it
diff --git a/cmake/Templates/Geant4Config.cmake.in b/cmake/Templates/Geant4Config.cmake.in
index ed6d4444b1..edeaa3b62e 100644
--- a/cmake/Templates/Geant4Config.cmake.in
+++ b/cmake/Templates/Geant4Config.cmake.in
@@ -67,6 +67,8 @@
#
# smartstack (G4event library G4StackManager uses G4SmartTrackStack)
#
+# php_as_hp (G4processes library ParticleHP built as HP)
+#
# Optional Components
# -------------------
# gdml (GDML support)
@@ -143,13 +145,6 @@
#
#-----------------------------------------------------------------------
-# Support CMake >= 3.8
-cmake_policy(VERSION 3.8)
-if(CMAKE_VERSION VERSION_LESS 3.8)
- message(FATAL_ERROR "Geant4Config requires CMake 3.8 or newer")
-endif()
-include(CMakeFindDependencyMacro)
-
#-----------------------------------------------------------------------
# DEBUG : print out the variables passed via find_package arguments
#
@@ -166,6 +161,23 @@ if(Geant4_CONFIG_DEBUG)
message(STATUS "G4CFG_DEBUG : Geant4_LIBDEPS_LOADED = ${Geant4_LIBDEPS_LOADED}")
endif()
+#-----------------------------------------------------------------------
+# Check that consumers use the minimum needed CMake version
+# Geant4 uses cxx_std_EP to define the standard it was built against
+# 3.8 and above support EP=11,14,17. 3.12 and above add 20. We continue
+# to support the earlier version whilst checking for consumers using 20
+cmake_policy(VERSION 3.8...3.18)
+if(CMAKE_VERSION VERSION_LESS 3.8)
+ message(FATAL_ERROR "Projects consuming Geant4Config require CMake 3.8 or newer")
+endif()
+
+if(("@GEANT4_BUILD_CXXSTD@" GREATER_EQUAL 20) AND (CMAKE_VERSION VERSION_LESS 3.12))
+ message(FATAL_ERROR "Projects consuming Geant4Config require CMake 3.12 or newer")
+endif()
+
+# - Help find dependencies
+include(CMakeFindDependencyMacro)
+
#-----------------------------------------------------------------------
# Locate ourselves, since all other config files should have been
# installed alongside us...
@@ -298,6 +310,9 @@ endif()
# - Smart track stack
set(Geant4_smartstack_FOUND @GEANT4_USE_SMARTSTACK@)
+# - ParticleHP as HP
+set(Geant4_php_as_hp_FOUND @GEANT4_BUILD_PHP_AS_HP@)
+
# - TBB
set(Geant4_TBB_FOUND @GEANT4_USE_TBB@)
if(Geant4_TBB_FOUND)
@@ -309,8 +324,12 @@ set(Geant4_timemory_FOUND @GEANT4_USE_TIMEMORY@)
if(Geant4_timemory_FOUND)
set(_geant4_use_timemory_library ON)
set(timemory_DIR "@timemory_DIR@" CACHE PATH "timemory installation for Geant4")
- set(timemory_FIND_COMPONENTS_INTERFACE @timemory_FIND_COMPONENTS_INTERFACE@)
- find_package(timemory @G4timemory_VERSION@ REQUIRED QUIET COMPONENTS @G4timemory_COMPONENTS@)
+ if(NOT TARGET @timemory_FIND_COMPONENTS_INTERFACE@)
+ add_library(@timemory_FIND_COMPONENTS_INTERFACE@ INTERFACE IMPORTED)
+ set(timemory_FIND_COMPONENTS_INTERFACE @timemory_FIND_COMPONENTS_INTERFACE@)
+ find_package(timemory @G4timemory_VERSION@ REQUIRED QUIET
+ COMPONENTS @G4timemory_COMPONENTS@)
+ endif()
set(timemory_LIBRARIES @timemory_FIND_COMPONENTS_INTERFACE@)
endif()
@@ -415,6 +434,7 @@ endif()
# - Qt (UI and Vis!)
set(Geant4_qt_FOUND @GEANT4_USE_QT@)
+set(Geant4_qt3d_FOUND @GEANT4_USE_QT3D@)
if(Geant4_qt_FOUND)
# Must always refind Qt5 to recreate imported targets. Because these
# are in the public interface, always need linking.
@@ -424,10 +444,19 @@ if(Geant4_qt_FOUND)
find_dependency(Qt5OpenGL REQUIRED)
find_dependency(Qt5PrintSupport REQUIRED)
+ if(Geant4_qt3d_FOUND)
+ find_dependency(Qt53DCore @QT3D_MINIMUM_VERSION@ REQUIRED)
+ find_dependency(Qt53DExtras @QT3D_MINIMUM_VERSION@ REQUIRED)
+ find_dependency(Qt53DRender @QT3D_MINIMUM_VERSION@ REQUIRED)
+ endif()
+
# Also require OpenGL
find_dependency(OpenGL)
- if(("qt" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
+ # Qt must be activated both directly and for OpenInventor
+ if(("qt" IN_LIST Geant4_FIND_COMPONENTS)
+ OR ("vis_openinventor" IN_LIST Geant4_FIND_COMPONENTS)
+ OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_QT
@@ -435,25 +464,11 @@ if(Geant4_qt_FOUND)
-DG4VIS_USE_OPENGLQT
)
set(_geant4_use_opengl_library ON)
+ # Qt3D is always on if available
+ set(_geant4_use_qt3D_library ${Geant4_qt3d_FOUND})
endif()
endif()
-# - Wt (UI and Vis!)
-#set(Geant4_wt_FOUND @GEANT4_USE_WT@)
-#if(Geant4_wt_FOUND)
-# find_dependency(Wt)
-# find_dependency(OpenGL)
-# if(("wt" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
-# list(APPEND
-# Geant4_DEFINITIONS
-# -DG4INTY_USE_WT
-# -DG4UI_USE_WT
-# -DG4VIS_USE_OPENGLWT
-# )
-# set(_geant4_use_opengl_library ON)
-# endif()
-#endif()
-
# - Motif (UI and Vis!)
set(Geant4_motif_FOUND @GEANT4_USE_XM@)
if(Geant4_motif_FOUND)
@@ -461,12 +476,16 @@ if(Geant4_motif_FOUND)
include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
find_dependency(Motif)
include("${CMAKE_CURRENT_LIST_DIR}/G4MotifShim.cmake")
- find_dependency(OpenGL)
if(APPLE)
find_dependency(XQuartzGL)
+ else()
+ find_dependency(OpenGL)
endif()
- if(("motif" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
+ # Motif can be activated both directly and for OpenInventor
+ if(("motif" IN_LIST Geant4_FIND_COMPONENTS)
+ OR ("vis_openinventor" IN_LIST Geant4_FIND_COMPONENTS)
+ OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_XT
@@ -482,9 +501,10 @@ set(Geant4_vis_opengl_x11_FOUND @GEANT4_USE_OPENGL_X11@)
if(Geant4_vis_opengl_x11_FOUND)
find_dependency(X11)
include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
- find_dependency(OpenGL)
if(APPLE)
find_dependency(XQuartzGL)
+ else()
+ find_dependency(OpenGL)
endif()
if(("vis_opengl_x11" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
@@ -515,26 +535,31 @@ endif()
set(Geant4_vis_openinventor_FOUND @GEANT4_USE_INVENTOR@)
set(Geant4_vis_openinventor_qt_FOUND @GEANT4_USE_INVENTOR_QT@)
if(Geant4_vis_openinventor_FOUND)
+ find_dependency(Coin)
+
+ if(Geant4_vis_openinventor_qt_FOUND)
+ # Qt dependency handled by Geant4_vis_qt_FOUND earlier,
+ # always ON if Inventor_QT is
+ find_dependency(SoQt)
+ else()
+ if(WIN32)
+ find_dependency(SoWin)
+ else()
+ # Motif/X11/GL dependency handled by Geant4_motif_FOUND earlier,
+ # always ON if Inventor/Xt is.
+ find_dependency(SoXt)
+ endif()
+ endif()
+
if(("vis_openinventor" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
- if(UNIX AND NOT WIN32)
- if(Geant4_vis_openinventor_qt_FOUND)
- list(APPEND Geant4_DEFINITIONS
- -DG4VIS_USE_OI
- -DG4VIS_USE_OIQT
- )
+ if(Geant4_vis_openinventor_qt_FOUND)
+ list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_OI -DG4VIS_USE_OIQT)
+ else()
+ if(WIN32)
+ list(APPEND Geant4_DEFINITIONS -G4INTY_USE_WIN32 -DG4VIS_USE_OI -DG4VIS_USE_OIWIN32)
else()
- list(APPEND Geant4_DEFINITIONS
- -DG4INTY_USE_XT
- -DG4VIS_USE_OI
- -DG4VIS_USE_OIX
- )
+ list(APPEND Geant4_DEFINITIONS -DG4INTY_USE_XT -DG4VIS_USE_OI -DG4VIS_USE_OIX)
endif()
- elseif(WIN32)
- list(APPEND Geant4_DEFINITIONS
- -G4INTY_USE_WIN32
- -DG4VIS_USE_OI
- -DG4VIS_USE_OIWIN32
- )
endif()
set(_geant4_use_inventor_library ON)
@@ -601,6 +626,14 @@ if(_geant4_use_opengl_library)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_OPENGL)
endif()
+# - Qt3D if it's requested.
+if(_geant4_use_qt3D_library)
+ list(APPEND _geant4_internal_libraries
+ Geant4::G4visQt3D${_geant4_lib_use_suffix}
+ )
+ list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_QT3D)
+endif()
+
# - G4OpenInventor if it's requested.
if(_geant4_use_inventor_library)
list(APPEND _geant4_internal_libraries
diff --git a/cmake/Templates/geant4-config.in b/cmake/Templates/geant4-config.in
index 45502b0db1..7716e7ad50 100644
--- a/cmake/Templates/geant4-config.in
+++ b/cmake/Templates/geant4-config.in
@@ -8,7 +8,7 @@
#-----------------------------------------------------------------------
# Determine location of this script.
# NB, we don't always use the result of this calculation, but it does not
-# hurt to do it. Only possible error is if too long a chain of symbolic
+# hurt to do it. Only possible error is if too long a chain of symbolic
# links are used to point to the physical script.
#
# Resolve symbolic links to script - we should end up with a physical file
@@ -32,8 +32,8 @@ while [ "x`readlink $script`" != "x" ] ; do
fi
done
-# If we still have a relative path, then it must be relative to the
-# calling dir. NB we don't attempt to resolve directory symbolic
+# If we still have a relative path, then it must be relative to the
+# calling dir. NB we don't attempt to resolve directory symbolic
# links or remove '.' or '..'
if [ ${script##/} = ${script##~} ] ; then
script="$calldir/$script"
@@ -102,6 +102,10 @@ if test "x${have_smartstack}" = "xyes" ; then
cflags="-DG4_USESMARTSTACK ${cflags}"
fi
+# - ParticleHP was built as HP. Pure feature
+have_php_as_hp="@G4_BUILTWITH_PHP_AS_HP@"
+feature_list="${feature_list} php_as_hp[${have_php_as_hp}]"
+
# - Includes and Libs
for g4incdir in ${includedirs} ; do
cflags="${cflags} -I${g4incdir}"
@@ -200,6 +204,12 @@ if test "x${have_qt}" = "xyes" ; then
vis_cflags="${vis_cflags} \
-DG4INTY_USE_QT -DG4UI_USE_QT -DG4VIS_USE_OPENGLQT @G4_QT_CFLAGS@"
+if test "x${qt_version}" \< "5.15.0" ; then
+ vis_libs="-lG4visQt3D ${vis_libs}"
+ libs="-lG4visQt3D ${libs}"
+ vis_cflags="${vis_cflags} -DG4UI_USE_QT3D"
+fi
+
geant4_uses_opengl="yes"
fi
@@ -395,7 +405,7 @@ install_datasets()
# Unpack bundle
echo "+ untar ${dataset_file}"
- ${G4TAR} -C ${g4downloaddir} -xf ${g4downloaddir}/${dataset_file}
+ ${G4TAR} -C ${g4downloaddir} -xf ${g4downloaddir}/${dataset_file}
tar_status="$?"
if [ "$tar_status" != "0" ] ; then
echo "- untar of '${dataset_file}' failed : tar error $?"
@@ -601,6 +611,9 @@ while test $# -gt 0 ; do
openinventor)
echo ${have_openinventor}
;;
+ php_as_hp)
+ echo ${have_php_as_hp}
+ ;;
*)
echo "no"
;;
diff --git a/config/G4VIS_BUILD.gmk b/config/G4VIS_BUILD.gmk
index c8c00e3059..fb22a00cfd 100644
--- a/config/G4VIS_BUILD.gmk
+++ b/config/G4VIS_BUILD.gmk
@@ -78,6 +78,11 @@ ifdef G4VIS_BUILD_OI_DRIVER
INC_IV = 1
CPPFLAGS += -DG4VIS_BUILD_OI_DRIVER
endif
+ifdef G4VIS_BUILD_QT3D_DRIVER
+ G4INTY_BUILD_QT = 1
+ INC_QT = 1
+ CPPFLAGS += -DG4VIS_BUILD_QT3D_DRIVER
+endif
ifdef G4VIS_BUILD_RAYTRACERX_DRIVER
CPPFLAGS += -DG4VIS_BUILD_RAYTRACERX_DRIVER
diff --git a/config/G4VIS_USE.gmk b/config/G4VIS_USE.gmk
index 64b69c9fcd..8119408c2f 100644
--- a/config/G4VIS_USE.gmk
+++ b/config/G4VIS_USE.gmk
@@ -118,6 +118,16 @@ ifdef G4VIS_USE_OI
G4LIB_USE_GL2PS = 1
endif
+ifdef G4VIS_USE_QT3D
+ CPPFLAGS += -DG4VIS_USE_QT3D
+ VISLIBS += -lG4visQt3D
+ ifneq ($(G4INCLUDE_EXEC),1)
+ CPPFLAGS += -I$(G4BASE)/visualization/Qt3D/include
+ endif
+ INC_QT = 1
+ LOAD_3DQT = 1
+endif
+
ifdef G4VIS_USE_RAYTRACERX
CPPFLAGS += -DG4VIS_USE_RAYTRACERX
# CPPFLAGS += -I... and VISLIBS += set above.
diff --git a/config/History b/config/History
index 16a5281bcd..0ecb22b815 100644
--- a/config/History
+++ b/config/History
@@ -15,6 +15,9 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+22nd October 2020 Gabriele Cosmo (config-V10-06-07)
+- Added configuration for Qt3D visualization driver.
+
22nd June 2020 Gabriele Cosmo (config-V10-06-06)
- Added -pthread to all builds in Linux targets.
diff --git a/config/interactivity.gmk b/config/interactivity.gmk
index 1691040148..8b263e5f65 100644
--- a/config/interactivity.gmk
+++ b/config/interactivity.gmk
@@ -31,6 +31,9 @@ endif
ifdef LOAD_QT
INTYLIBS += $(QTLIBS)
endif
+ifdef LOAD_3DQT
+ INTYLIBS += $(QT3DLIBS)
+endif
ifdef LOAD_GLQT
INTYLIBS += $(GLQTLIBS)
endif
diff --git a/config/sys/Darwin-clang.gmk b/config/sys/Darwin-clang.gmk
index ddec29465b..2391ec38af 100644
--- a/config/sys/Darwin-clang.gmk
+++ b/config/sys/Darwin-clang.gmk
@@ -105,9 +105,13 @@ ifeq ($(G4SYSTEM),Darwin-clang)
QTMOC := /usr/bin/moc
endif
ifndef QTFLAGS
- QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers
- QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers
+ QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers
+ QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers
+ QTFLAGS += -I $(QTHOME)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTHOME)/QtOpenGL.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DCore.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DExtras.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DRender.framework/Headers
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
ifndef QTLIBPATH
@@ -122,12 +126,20 @@ ifeq ($(G4SYSTEM),Darwin-clang)
QTLIBS := -L$(QTLPATH) -lQtCore -lQtGui
endif
endif
+ ifndef QT3DLIBS
+ ifdef QT_AS_FRAMEWORK
+ QT3DLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui
+ QT3DLIBS += -framework QtWidgets -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender
+ else
+ QT3DLIBS := -L$(QTLPATH) -lQtCore -lQtGui
+ QT3DLIBS += -lQtWidgets -lQt3DCore -lQt3DExtras -lQt3DRender
+ endif
+ endif
ifndef GLQTLIBS
ifdef QT_AS_FRAMEWORK
- GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui
- GLQTLIBS += -framework QtOpenGL
+ GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui -framework QtOpenGL
else
- GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL
+ GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL
endif
endif
else
@@ -140,6 +152,9 @@ ifeq ($(G4SYSTEM),Darwin-clang)
QTFLAGS += -I $(QTLPATH)/QtGui.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtOpenGL.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DCore.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DExtras.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DRender.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtPrintSupport.framework/Headers
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
@@ -147,6 +162,12 @@ ifeq ($(G4SYSTEM),Darwin-clang)
QTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
QTLIBS += -framework QtWidgets -framework QtPrintSupport
endif
+ ifndef QT3DLIBS
+ QT3DLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
+ QT3DLIBS += -framework QtWidgets
+ QT3DLIBS += -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender
+ QT3DLIBS += -framework QtPrintSupport
+ endif
ifndef GLQTLIBS
GLQTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
GLQTLIBS += -framework QtWidgets
diff --git a/config/sys/Darwin-g++.gmk b/config/sys/Darwin-g++.gmk
index dda03b2a4c..a1b73d5f58 100644
--- a/config/sys/Darwin-g++.gmk
+++ b/config/sys/Darwin-g++.gmk
@@ -131,9 +131,13 @@ ifeq ($(G4SYSTEM),Darwin-g++)
QTMOC := /usr/bin/moc
endif
ifndef QTFLAGS
- QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers
- QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers
+ QTFLAGS := -I $(QTHOME)/QtCore.framework/Headers
+ QTFLAGS += -I $(QTHOME)/QtGui.framework/Headers
+ QTFLAGS += -I $(QTHOME)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTHOME)/QtOpenGL.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DCore.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DExtras.framework/Headers
+ QTFLAGS += -I $(QTHOME)/Qt3DRender.framework/Headers
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
ifndef QTLIBPATH
@@ -148,12 +152,20 @@ ifeq ($(G4SYSTEM),Darwin-g++)
QTLIBS := -L$(QTLPATH) -lQtCore -lQtGui
endif
endif
+ ifndef QT3DLIBS
+ ifdef QT_AS_FRAMEWORK
+ QT3DLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui
+ QT3DLIBS += -framework QtWidgets -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender
+ else
+ QT3DLIBS := -L$(QTLPATH) -lQtCore -lQtGui
+ QT3DLIBS += -lQtWidgets -lQt3DCore -lQt3DExtras -lQt3DRender
+ endif
+ endif
ifndef GLQTLIBS
ifdef QT_AS_FRAMEWORK
- GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui
- GLQTLIBS += -framework QtOpenGL
+ GLQTLIBS := $(QTLIBPATH) -framework QtCore -framework QtGui -framework QtOpenGL
else
- GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL
+ GLQTLIBS := -L$(QTLPATH) -lQtCore -lQtGui -lQtOpenGL
endif
endif
else
@@ -166,6 +178,9 @@ ifeq ($(G4SYSTEM),Darwin-g++)
QTFLAGS += -I $(QTLPATH)/QtGui.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtWidgets.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtOpenGL.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DCore.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DExtras.framework/Headers
+ QTFLAGS += -I $(QTLPATH)/Qt3DRender.framework/Headers
QTFLAGS += -I $(QTLPATH)/QtPrintSupport.framework/Headers
QTFLAGS += -I $(QTHOME)/include/Qt -I$(QTHOME)/include
endif
@@ -173,6 +188,12 @@ ifeq ($(G4SYSTEM),Darwin-g++)
QTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
QTLIBS += -framework QtWidgets -framework QtPrintSupport
endif
+ ifndef QT3DLIBS
+ QT3DLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
+ QT3DLIBS += -framework QtWidgets
+ QT3DLIBS += -framework Qt3DCore -framework Qt3DExtras -framework Qt3DRender
+ QT3DLIBS += -framework QtPrintSupport
+ endif
ifndef GLQTLIBS
GLQTLIBS := -F$(QTLPATH) -framework QtCore -framework QtGui
GLQTLIBS += -framework QtWidgets
diff --git a/config/sys/Linux-clang.gmk b/config/sys/Linux-clang.gmk
index 8ef23306af..65406a2f73 100644
--- a/config/sys/Linux-clang.gmk
+++ b/config/sys/Linux-clang.gmk
@@ -110,6 +110,9 @@ ifeq ($(G4SYSTEM),Linux-clang)
QTFLAGS += -I $(QTHOME)/include/QtGui
QTFLAGS += -I $(QTHOME)/include/QtWidgets
QTFLAGS += -I $(QTHOME)/include/QtOpenGL
+ QTFLAGS += -I $(QTHOME)/include/Qt3DCore
+ QTFLAGS += -I $(QTHOME)/include/Qt3DExtras
+ QTFLAGS += -I $(QTHOME)/include/Qt3DRender
QTFLAGS += -I $(QTHOME)/include/QtPrintSupport
endif
else # Qt4
@@ -131,6 +134,9 @@ ifeq ($(G4SYSTEM),Linux-clang)
ifndef QTLIBS # Qt5
QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5PrintSupport
endif
+ ifndef QT3DLIBS
+ QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt53DCore -lQt53DExtras -lQt53DRender -lQt5PrintSupport
+ endif
ifndef GLQTLIBS
GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5OpenGL -lQt5PrintSupport
endif
diff --git a/config/sys/Linux-g++.gmk b/config/sys/Linux-g++.gmk
index d23b0e2488..163197615d 100644
--- a/config/sys/Linux-g++.gmk
+++ b/config/sys/Linux-g++.gmk
@@ -108,6 +108,9 @@ ifeq ($(G4SYSTEM),Linux-g++)
QTFLAGS += -I $(QTHOME)/include/QtGui
QTFLAGS += -I $(QTHOME)/include/QtWidgets
QTFLAGS += -I $(QTHOME)/include/QtOpenGL
+ QTFLAGS += -I $(QTHOME)/include/Qt3DCore
+ QTFLAGS += -I $(QTHOME)/include/Qt3DExtras
+ QTFLAGS += -I $(QTHOME)/include/Qt3DRender
QTFLAGS += -I $(QTHOME)/include/QtPrintSupport
endif
else # Qt4
@@ -129,6 +132,9 @@ ifeq ($(G4SYSTEM),Linux-g++)
ifndef QTLIBS # Qt5
QTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5PrintSupport
endif
+ ifndef QT3DLIBS
+ QT3DLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt53DCore -lQt53DExtras -lQt53DRender -lQt5PrintSupport
+ endif
ifndef GLQTLIBS
GLQTLIBS := -L$(QTLIBPATH) -lQt5Core -lQt5Gui -lQt5Widgets -lQt5OpenGL -lQt5PrintSupport
endif
diff --git a/environments/g4py/CMakeLists.txt b/environments/g4py/CMakeLists.txt
index d9dea8f61a..d4de53a8c1 100644
--- a/environments/g4py/CMakeLists.txt
+++ b/environments/g4py/CMakeLists.txt
@@ -8,7 +8,7 @@
# which Python an install of Boost Python uses)...
find_package(PythonInterp 3.0 REQUIRED)
find_package(PythonLibs REQUIRED)
-find_package(Boost REQUIRED python)
+find_package(Boost 1.65 REQUIRED python)
# Variables and Functions to help build, organise, and install modules
include(${CMAKE_CURRENT_SOURCE_DIR}/G4PythonHelpers.cmake)
diff --git a/environments/g4py/G4PythonHelpers.cmake b/environments/g4py/G4PythonHelpers.cmake
index b7c149a4c2..e1d2048f59 100644
--- a/environments/g4py/G4PythonHelpers.cmake
+++ b/environments/g4py/G4PythonHelpers.cmake
@@ -4,7 +4,8 @@
# any substructure
set(GEANT4_PYTHON_OUTPUT_DIR "$/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages")
-set(CMAKE_INSTALL_PYTHONDIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages")
+set(CMAKE_INSTALL_PYTHONDIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" CACHE PATH "Python modules/packages")
+mark_as_advanced(CMAKE_INSTALL_PYTHONDIR)
if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_PYTHONDIR}")
set(CMAKE_INSTALL_FULL_PYTHONDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_PYTHONDIR}")
else()
@@ -40,6 +41,10 @@ function(g4py_add_module target_name)
# to be checked for Windows)
target_include_directories(${target_name} PRIVATE ${PYTHON_INCLUDE_DIRS})
target_link_libraries(${target_name} PRIVATE Boost::python "$<$:-undefined dynamic_lookup>")
+
+ # Workaround to suppress pragma message spam in Boost >= 1.73
+ # - See https://github.com/boostorg/python/pull/315
+ target_compile_definitions(${target_name} PRIVATE BOOST_BIND_GLOBAL_PLACEHOLDERS)
endfunction()
diff --git a/environments/g4py/History b/environments/g4py/History
index 612f1b1033..690bfd6f1c 100644
--- a/environments/g4py/History
+++ b/environments/g4py/History
@@ -11,6 +11,25 @@ Geant4Py is a Geant4-Python bridge.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+16 Nov. 2020 B. Morgan (geant4py-V10-06-04)
+- Boost 1.73 modified use of its bind and placeholder functionality, resulting
+ in Boost.Python spamming pragma messages about deprecation of this.
+ See https://github.com/boostorg/python/pull/315. Add BOOST_BIND_GLOBAL_PLACEHOLDERS
+ as a private compile definition to geant4py targets to suppress these.
+
+11 Nov. 2020 B. Morgan (geant4py-V10-06-03)
+- Address Bugzilla 2283
+- Make CMAKE_INSTALL_PYTHONDIR a user-configurable cache variable
+- RPATH issue is addressed by use of CMAKE_SKIP_INSTALL_RPATH variable by client
+
+6 Oct. 2020 B. Morgan (geant4py-V10-06-02)
+- Add binding to G4PhysListFactory (GitHub PR #14, contributed by Daniel Hellfeld)
+- Add simple test case of binding.
+
+25 Aug. 2020 B. Morgan (geant4py-V10-06-01)
+- Remove obsolete boost.python indexing suite. Only required on
+ very old Boost versions <= 1.33
+
19 Mar. 2020 B. Morgan (geant4py-V10-06-00)
- Integrate build, test, and install of geant4py with core Geant4
CMake buildsystem.
diff --git a/environments/g4py/examples/education/lesson1/demo.py b/environments/g4py/examples/education/lesson1/demo.py
old mode 100644
new mode 100755
diff --git a/environments/g4py/source/CMakeLists.txt b/environments/g4py/source/CMakeLists.txt
index d19cd0d730..03480a5a50 100644
--- a/environments/g4py/source/CMakeLists.txt
+++ b/environments/g4py/source/CMakeLists.txt
@@ -1,8 +1,4 @@
# - add libs components
-# Private interface library to help Boost.Python usage
-add_library(pyG4Boost INTERFACE)
-target_include_directories(pyG4Boost INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/boost")
-
# Core Geant4 bindings
add_subdirectory(global)
add_subdirectory(interface)
diff --git a/environments/g4py/source/boost/container_utils.hpp b/environments/g4py/source/boost/container_utils.hpp
deleted file mode 100644
index a25185d077..0000000000
--- a/environments/g4py/source/boost/container_utils.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-
-// (C) Copyright Joel de Guzman 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef PY_CONTAINER_UTILS_JDG20038_HPP
-# define PY_CONTAINER_UTILS_JDG20038_HPP
-
-# include
-# include
-# include
-
-namespace boost { namespace python { namespace container_utils {
-
- template
- void
- extend_container(Container& container, object l)
- {
- typedef typename Container::value_type data_type;
-
- // l must be a list or some container
-
- for (int i = 0; i < l.attr("__len__")(); i++)
- {
- object elem(l[i]);
- extract x(elem);
- // try if elem is an exact data_type type
- if (x.check())
- {
- container.push_back(x());
- }
- else
- {
- // try to convert elem to data_type type
- extract x(elem);
- if (x.check())
- {
- container.push_back(x());
- }
- else
- {
- PyErr_SetString(PyExc_TypeError, "Incompatible Data Type");
- throw_error_already_set();
- }
- }
- }
- }
-
-}}} // namespace boost::python::container_utils
-
-#endif
diff --git a/environments/g4py/source/boost/detail/indexing_suite_detail.hpp b/environments/g4py/source/boost/detail/indexing_suite_detail.hpp
deleted file mode 100644
index bf4fe91c68..0000000000
--- a/environments/g4py/source/boost/detail/indexing_suite_detail.hpp
+++ /dev/null
@@ -1,759 +0,0 @@
-// (C) Copyright Joel de Guzman 2003.
-// Distributed under the Boost Software License, Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef INDEXING_SUITE_DETAIL_JDG20036_HPP
-# define INDEXING_SUITE_DETAIL_JDG20036_HPP
-
-# include
-# include
-# include
-# include
-# include
-# include
-# include
-# include