diff --git a/CMakeLists.txt b/CMakeLists.txt
index c5b88fcfed..4900e39830 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,10 +1,5 @@
#-----------------------------------------------------------------------
# - Top Level CMakeLists.txt for Geant4 Build
-#
-# 21st September 2010 Ben Morgan
-#
-#
-
#-----------------------------------------------------------------------
# - Enforce an out-of-source builds before anything else
#
@@ -21,7 +16,7 @@ endif()
#-----------------------------------------------------------------------
# - Define CMake requirements and override make rules as needed
#
-cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
# - Any policy requirements should go here
diff --git a/ReleaseNotes/ReleaseNotes4.10.6.html b/ReleaseNotes/ReleaseNotes4.10.6.html
new file mode 100644
index 0000000000..b38102772c
--- /dev/null
+++ b/ReleaseNotes/ReleaseNotes4.10.6.html
@@ -0,0 +1,2461 @@
+
+
+Geant4 10.6 Release Notes
+
+
+
+
+
+
+
+
+
+Geant4 10.6 Release Notes
+
+
+
+|
+
+December 6th, 2019
+
+ |
+
+
+
+
+
+The code and binary libraries for the supported systems are available
+through our Source
+Code Web page.
+
+
+We are grateful for the efforts of Geant4 users who have provided
+ detailed feedback or comprehensive reports of issues.
+ We thank in particular those who have contributed corrections,
+ improvements or developments included in this release.
+
+
+Please refer to the
+Geant4
+User Documentation for further information about using Geant4.
+
+
+Contents
+
+- Supported and Tested Platforms
+- Supported CLHEP and VecGeom versions
+- Items for migration of the user code
+- New Developments and Capabilities
+- Expected effects on physics and performance
+- Known Run-Time Problems and Limitations
+- Compilation Warnings
+- Geant4 Software License
+- Detailed list of changes and fixes
+
+
+
+
+
+
+
+
+1. Supported and Tested Platforms
+
+Platforms:
+
+- Linux, gcc-4.9.3.
+ Tested on 64 bit architectures (Intel or AMD) with
+ CERN CentOS Linux 7 (CC7) (based on CentOS Linux 7).
+- MacOSX 10.15 Catalina with llvm/clang-8.0 (Apple LLVM/Clang-11.0)
+- Windows-10 with Visual C++ 14.23 (Visual Studio 2019)
+
+
+More verified and tested configurations (64 bits):
+
+- Linux, gcc-5.4.0/6.3.0/7.3.0/8.2.0/9.2.0, clang-5.0/8.0
+- Linux, Intel-icc 19.0
+- MacOSX 10.13, 14 with clang-7.0
+
+
+
+
+
+
+
+
+2. Supported CLHEP and VecGeom version
+
+This release of Geant4 requires and has been verified with
+CLHEP, release 2.4.1.3.
+Use of a different CLHEP version may cause incorrect simulation results.
+NOTE: an internal module of the relevant CLHEP classes is provided and can be
+used as alternative to an external CLHEP library installation.
+A configuration option allows a Geant4 installation to use the
+VecGeom Library
+primitives, to replace the original Geant4 solids. VecGeom version
+1.1.5 is required when using such configuration.
+
+
+
+
+
+
+
+3. Items for migration of the user code
+
+Listed here is some relevant information on developments included in this
+release.
+Note that for all users a full re-installation of libraries (or a full
+re-compilation) and a re-compilation of user applications is required.
+
+
+General
+
+
+- Minimum required version of CMake to build Geant4 is 3.8.
+- Pre-processor flags are promoted to fixed #define statements in
+ a generated header. User code relying on these macros should
+ include the G4Types.hh header to make them available.
+- The preprocessor macros G4UI_USE and G4VIS_USE are removed.
+- The Debug build mode no longer enables Floating Point Exceptions.
+ Please use the new Debug_FPE build mode if your application requires FPE.
+- Support for Qt4 UI/Vis is deprecated.
+
+
+
+Analysis
+
+
+- The last two optional arguments of the analysis manager function
+ SetNtupleMerging() have been removed and these parameters
+ can be changed only via the dedicated functions:
+ SetNtupleRowWise(), SetBasketSize() and
+ SetBasketEntries().
+
+
+
+Geometry, Fields and Transportation
+
+
+- The default integration method for propagation in magnetic fields is
+ changed, to select between the new interpolation-capable integration
+ scheme, for shorter steps, and a helix-based scheme which is chosen for
+ steps larger than 2*pi times the curvature radius at the initial
+ location.
+- Once integration in field require more than a threshold (default 200)
+ integration substeps within a single physical step, there is a relaxation
+ of the criteria which breaks the curved trajectory into linear segments
+ for intersecting with the setup's geometry.
+ This criteria is governed by the parameter delta chord.
+ Once the threshold is reached, its value is temporarily doubled.
+ So subsequent integration substeps are made so that a chord's sagitta is
+ now less than twice the delta chord.
+
+ - Every time the number of iterations reaches a new multiple of 100 (the
+ increase value), the maximum sagitta distance (delta chord) is again
+ temporarily doubled for the rest of this tracking step.
+ - This affects only particles below the 'important' energy threshold when
+ using G4Transportation only, (currently not G4CoupledTransporation)
+ which would otherwise be abandoned after a set maximum number of
+ substeps (default=1000).
+ - To control the previous behaviour, use the G4PropagatorInField's method
+ SetIterationsToIncreaseChordDistance() to set the number of
+ iterations between increase; note that the initial threshold is twice
+ this value. To restore previous behaviour set it to 500.
+ - In a multi-threaded application, each thread must change this threshold,
+ e.g. by calling this method in your G4UserRunAction's
+ BeginOfRunAction().
+ - This does not occur if the alternative transportation process
+ G4CoupledTransportation is used, i.e. when one or more parallel
+ geometries are created for scoring, event biasing, parallel mass
+ geometry or other use(s).
+
+- An application which uses an external gravitational field must enable the
+ use of gravity by calling G4Transportation's static method
+ EnableGravity(). This change was introduced in order to call
+ the ConfigureForTrack() method of G4FieldManager only for
+ charged particles by default. Example field06 in
+ examples/extended/field illustrates this.
+
+
+
+Electromagnetic and optical physics
+
+
+- The new data sets G4EMLOW-7.9 should be used.
+
+
+
+Hadronic physics
+
+
+- The new data sets G4PhotonEvaporation-5.5,
+ G4RadioactiveDecay-5.4, G4PARTICLEXS-2.1 and
+ G4NDL-4.6 should be used.
+
+
+
+Data Sets
+
+
+- This release introduces new data set versions.
+ Please see the corresponding details in
+ Section 9 of this document.
+
+ - New data set versions: G4EMLOW-7.9, G4RadioactiveDecay-5.4,
+ G4PhotonEvaporation-5.5, G4PARTICLEXS-2.1, G4NDL-4.6.
+ - In order to use ParticleHP for charged particles
+ (protons, deuterons, tritons, He3 and alphas), an optional data
+ set G4TENDL-1.3.2 is required, and should be downloaded in
+ addition from the
+ Geant4 web site.
+
+
+
+
+
+
+
+
+4. New Developments and Capabilities
+
+General
+
+- Reviewed G4PhysicsVector adding an additional Value() method option to
+ propagate down the known log-energy value. This helps avoiding log() calls
+ when log-vector is used.
+- Added functionality in G4DynamicParticle to provide log-kinetic energy
+ value, computed only on demand if its stored value is not up-to-date with
+ the kinetic energy. Reviewed EM processes to select the target atom by
+ making use of the already known log-energy value in the log-vector access.
+ Providing measurable CPU speedup.
+- Enhanced UI commands to now return proper return code when they are not
+ successful.
+- Introduced ability to perform leading particle biasing.
+
+
+Analysis
+
+- Added a new factory function ManagerInstance() in G4Analysis,
+ which allows to create the analysis manager of the type selected via a
+ string argument and so to choose the output type at run time.
+- Switched the default Root n-tuple merge mode to new column-wise mode
+ with preserving rows and added a second, optional, argument in the
+ SetNtupleRowWise() function which can be used to override the
+ defaults.
+
+
+Digitization & Hits
+
+- Added G4TScoreNtupleWriter and G4TScoreNtupleWriterMessenger which
+ implement storing hits collections of G4THitsMap type vith Geant4 analysis
+ tools, defined in G4VcoreNtupleWriter. Its usage is demonstrated in basic
+ examples B3 and B4d.
+
+
+Geometry and Field
+
+- Enabled VecGeom wrapper for G4GenericPolycone, G4EllipticalTube,
+ G4EllipticalCone and G4Ellipsoid. Requiring VecGeom version 1.1.5.
+- Added support for writing out assemblies envelopes in GDML.
+- Added hooks for capability to navigate in external geometry with
+ custom navigation.
+- Completed the development of integration driver with 'interpolation'
+ capability.
+ It estimates the position, momentum (and potentially other state,
+ e.g. polarisation) at intermediate values of the integration interval.
+ During the integration, one or more intervals are used to move the track's
+ state. For each interval a different instance of the stepper is used.
+ Subsequent calls for intermediate points (e.g. to locate the intersection
+ of the curved trajectory with a boundary) use the interpolation capability
+ using the existing data (stored in the earlier stepping), instead of
+ re-integration which involves re-evaluating the field and equation of
+ motion. Note: currently this can be used only with G4DormandPrince745
+ Runge Kutta integration method.
+- Completed new multiplexing integration driver G4BFieldIntegrationDriver
+ for magnetic fields, that enables mixing between two methods (drivers)
+ based on the ratio of the proposed step length and the step curvature at
+ the track's initial position.
+ One method is selected for shorter steps, and a different method for steps
+ longer than 2*pi (estimation for uniform field). The default driver
+ created in G4ChordFinder's constructor and G4FieldManager's
+ CreateChordFinder() now creates it; it uses the interpolation
+ driver with the Dormand Prince 5/4th order Runge-Kutta method for short
+ steps, and for longer steps it uses the G4HelixHeum method which can
+ integrate over a large number of helical turns in a sufficiently slowly
+ varying field.
+ Enabled by default stepping using interpolation in field propagation.
+
+
+Materials
+
+- Added G4DensityEffectCalculator: new class, providing on fly computation
+ of the density effect correction using "exact" formulas.
+- Added ICRU90 data for ion ionisation.
+
+
+Electromagnetic physics
+
+- Optimised step limitation in G4UrbanMscModel and modified lateral
+ displacement sampling.
+- New helper class G4NIELCalculator, to compute NIEL in user stepping
+ action or sensitive detector code.
+- Added handling of UI thermalization model control in DNA physics lists.
+
+
+Hadronic physics
+
+- Use Glauber-Gribov cross-sections for hyperons and anti-hyperons for
+ both elastic and inelastic hadron-nucleus interactions.
+- Extended hadron-nucleon cross-sections to charmed and bottom hadrons
+ (mesons and baryons). Note: these cross-sections are meant to be used
+ by Glauber-Gribov charmed and bottom hadron nuclear cross-sections, as
+ well as by the FTF string model for dealing with charmed and bottom
+ projectiles; however, the inelastic interactions of charmed and bottom
+ projectiles are not yet included in reference physics lists.
+- Removed tracking cut in hadron-elastic and use numerically safer
+ computation for very low-energy projectile.
+- Use FTFP also for the annihilation at rest of neutral anti-hadrons.
+- Added new gamma-nuclear model based on pre-compound de-excitation.
+- Added spontaneous fission channel in radioactive-decay.
+- High energy extension of the neutrino-electron cross sections,
+ for both charged-current and neutral-current interactions
+ (M_W and M_Z propagator factors and Glashow resonance), for all neutrino
+ and anti-neutrino flavours.
+
+
+Physics Lists
+
+- Changed transition region between hadronic string and intra-nuclear cascade
+ models: now it is [3, 6] GeV consistently for all particle types
+ (nucleons, pions, kaons, hyperons, ions and gammas; for anti-baryons,
+ instead, FTFP is still used for all energies). Note: this does not affect
+ the physics lists FTFP_BERT_ATL, NuBeam, ShieldingM, and those based on
+ INCLXX. Moreover, for the QGS-based physics lists, the transition between
+ FTFP and QGSP remains unchanged in the region [12, 25] GeV.
+- Added (consistently) RadioactiveDecay to all physics lists which use
+ NeutronHP. Note: this affects the physics lists FTFP_BERT_HP, QGSP_BERT_HP,
+ FTFP_INCLXX_HP and QGSP_INCLXX_HP, whereas Shielding, LBE, QGSP_BIC_HP and
+ QGSP_BIC_AllHP had it already.
+- A new stopping physics constructor (G4StoppingPhysicsFritiofWithBinaryCascade)
+ has been introduced, which uses Fritiof (FTF) coupled with Binary cascade
+ (BIC) for the anti-baryon annihilation at rest. It is used only in the
+ physics lists FTF_BIC and QGS_BIC.
+
+
+Visualization and Interfaces
+
+- New set of UI commands and improvements in visualization.
+ Added new UI commands for view interpolation and centering.
+- Introducing cloud drawing style in visualization, using kernel algorithms
+ for generating points on the surface of volumes, by-passing polyhedral
+ representations; the solid is being visualised by a polymarker of dots.
+
+
+Examples
+
+- GB07: new example (in extended/biasing) to demonstrate the usage
+ of the leading particle biasing functionality, introduced in the generic
+ biasing package.
+- Hadr08: new example (in extended/hadronic) to demonstrate the
+ possibility of emulating hadronic-model-per-region capability
+ (not foreseen by the hadronic framework) via the use of generic biasing
+ with usual, unbiased weights of 1.0.
+- Extended GFlash examples set by moving existing gflash example to
+ gflash1 and added: gflash2 with envelope in parallel world;
+ gflash3 with SD in parallel world; gflasha with histogramming
+ of shower profiles.
+- dnadamage1: DNA simulation of damage on a chromatin fiber.
+- microprox: DNA computation of proximity functions in liquid water.
+
+
+
+
+
+
+
+5. Expected effects on physics and computing performance
+
+Electromagnetic physics
+
+- Expected unchanged response for calorimeter simulations.
+- General speedup of electro-magnetic physics by 4-8% depending on the
+ software platform. Additional speedup if the general gamma process
+ mode is enabled (disabled by default).
+
+
+Hadronic physics
+
+- Increased energy response and more compact hadronic showers mostly in the
+ projectile energy range between 5 and 20 GeV, mainly due to the change
+ in transition energy between FTFP and BERT.
+
+
+
+
+
+
+
+
+6. Known Run-Time Problems and Limitations
+For a complete list of outstanding run-time problems and to submit any
+problem you may find while running this version of Geant4, please refer
+to the
+Geant4 Problem
+Reporting System.
+
+
+
+
+
+
+
+7. Compilation Warnings
+
+There may be a few compilation warnings on some platforms, particularly
+on Windows with Visual Studio, where warnings level has been raised when
+building examples.
+We do not believe that any of these lead to incorrect run-time behaviour.
+
+
+
+
+
+
+
+8. Geant4 Software License
+
+A Software License applies to the Geant4 code.
+Users must accept this license in order to use it. The details and the list of
+copyright holders is available at
+http://cern.ch/geant4/license
+and also in the text file LICENSE distributed with the source code.
+
+
+
+
+
+
+
+9. Detailed list of changes and fixes
+
+These are the main new features/fixes included in this release since the
+last patched public release (for more detailed lists of fixes/additions,
+please refer to the corresponding History files provided in most packages):
+
+
+
+
+Configuration
+
+- CMake
+
+ - Set minimum required CMake version to 3.8 to fully support C++17
+ on all systems. Addressing problem report
+ #2044.
+ - Updated Intel settings to support use of C++17 with Intel 19 when
+ using CMake-3.8-3.10. Versions from 3.11 fully support Intel 19/C++17.
+ - Removed obsolete GEANT4_BUILD_MUONIC_ATOMS_IN_USE option
+ and associated configuration/compiler flags.
+ - Promoting following pre-processor flags to fixed #defines in a new
+ header generated by CMake using the chosen build options to
+ #define/#undef as appropriate: G4USE_STD11, G4MULTITHREADED,
+ G4_STORE_TRAJECTORY, G4VERBOSE, GEANT4_USE_TIMEMORY.
+ Promoted VecGeom pre-processor flags to fixed #defines as well.
+ Ensuring the header is included by primary "global" category headers
+ so that all categories will pick up the changes transparently.
+ Removed use of add_definitions of CMAKE_CXX_FLAGS to set these flags
+ in Geant4 and client scripts.
+ - Removed G4FPE_DEBUG from build mode "Debug". Added new build mode
+ "Debug_FPE" same as "Debug" mode but appending -DG4FPE_DEBUG.
+ - Set OpenGL_GL_PREFERENCE to LEGACY, to prevent warning on
+ CMake >= 3.10, and keeping existing behaviour.
+ - Only scope location of test executable when using a generator that
+ supports multi-config; allows tests to be run with Ninja Generator as
+ "ninja test".
+ - Do not switch off CMAKE_CXX_EXTENSIONS in Geant4Config; not required
+ for client applications. Addresses problem report
+ #2002.
+ - Using target_XXX usage requirements to transport header paths and links.
+ Removed requirement to use complete include_directories chain in Module
+ sources.cmake files. Retain exported "Geant4_INCLUDE_DIR{S}" variables
+ in case clients use Root dictionary generation (which does not
+ understand usage requirements of targets until latest versions).
+ Removed remaining -D flags set via add_definitions, moving to
+ target_compile_definitions.
+ - Namespace exported targets with "Geant4::" to enforce use of targets
+ and prevent accidental linkage via -lG4name expansion.
+ - Migrate use of all external packages to use and refind exported targets,
+ with shim scripts to support CMake versions from 3.8 at build/use time.
+ - Store build-time locations of used external packages in an optionally
+ installable CMake script for reuse, if present, by Geant4Config.cmake
+ in refinding packages.
+ - Require MSVC 19.20 (Visual Studio 2019) or newer as minimum required
+ version to build Geant4 on Windows. Needed to support use full C++17
+ Standard. Default C++ Standard with MSVC is now C++17.
+ - Removed old genwindef method of generating DLL symbol exports, as
+ minimum cmake version of 3.8 fully supports direct generation via
+ target properties.
+ - Removed GEANT4_FORCE_QT4 option, deprecating Qt4 support. Retain
+ fallback to finding Qt4, emitting a CMake warning that use of Qt4 is
+ deprecated.
+ - Disabled configuration for Wt UI/Vis driver, as no longer supported.
+ - Updated scripts to support the TiMemory find_package COMPONENTS and
+ the INTERFACE library generation.
+ - Fixed logic of setting up components in Geant4Config.cmake.
+ Addresses problem report
+ #2139.
+ - Fixed issue for path with spaces, reported in Users Forum #451.
+ - Added ELLIPSOID, ELLIPTICALCONE and ELLIPTICALTUBE flags to enable
+ wrapping of G4Ellipsoid, G4EllipticalCone and G4EllipticalTube with
+ correspondent VecGeom primitives.
+ - Updated data-sets versions.
+
+- GNUMake
+
+ - Hard-code Qt version through QT_VERSION flag.
+ Corrected Qt5 setup for Linux-g++ and Linux-clang.
+ - architecture.gmk: added -DG4GMAKE to CPPFLAGS to identify enabling
+ of GNUmake builds.
+ - Fixed default paths for Linux architectures.
+ - geomconf.gmk: added VecGeom wrappers flags for G4EllipticalTube,
+ G4EllipticalCone and G4Ellipsoid.
+ - Fixed compilation warning on gcc-9.2 for liblist.c.
+ - Added new analysis/factory subdirectory in includes in binmake.gmk;
+ removed analysis/parameters which does not exist anymore.
+ - Corrected default path for XM in Darwin targets.
+ - Force use of C++17 in WIN32 targets.
+ - interactivity.gmk: added -DQT_NO_DEPRECATED_WARNINGS to Qt compilation
+ settings, to silence warnings from Qt for use of deprecated features.
+
+
+
+
+Analysis
+- Ntuples
+
+ - Fixed CSV, XML ntuple file names.
+ - Added methods for setting ntuple merge mode in G4VAnalysisManager
+ with a default implementation (issuing a warning if merging is not
+ available).
+ - Added fRowWise data member in G4RootNtupleManager to make the
+ parameter available in MPI.
+
+ - Analysis management & plotting
+
+ - Enhanced the G4VAnalysisManager interface: added new option for
+ ntuple merging and updated/added functions for merging:
+ SetNtupleMerging() - removed rowWise and basketSize optional paremeters;
+ SetNtupleRowWise() - added parameter 'rowMode' with a default value;
+ SetBasketSize(), SetBasketEntries() - new methods.
+ Added functions and UI commands for setting axis log scale for
+ plotting: Set[H,P][1,2,3][X,Y.Z]AxisIsLog() and analogous getters
+ New UI commands /analysis/[h,p][1,2,3]/set[X,Y,Z]axisLog true|false.
+ - Added new factory function ManagerInstance() in G4Analysis, which allows
+ to create the analysis manager of the type selected via a string
+ argument.
+ - Added new analysis sub-category "factory".
+ - Cleaned-up analysis type definitions: G4Hn*, G4Pn* types moved out
+ of type specific namespace.
+ - In G4PlotManager: disabled Paw encoding; this fixes a problem with
+ unwanted axis labels in Greek.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Link directly to FreeType and HDF5 imported targets.
+
+ - g4tools
+
+ - Updated the g4tools version to g4tools-5.0.5.
+
+ - Handle axis label in case of freetype font.
+ - Root format: restore a "per event/row view" for the ntuple
+ column-wise in MT and MPI.
+ - Batch plotting: fixes to avoid labels overlap when having a grid
+ of plotters.
+ - MPI: fixed a memory leak.
+ - Fix for axis labels with log scale.
+ - Scene graph: have material for interactive plotting.
+ - Include modifications coming from other usage of inlib/exlib,
+ for example, in Root, to be able to read TClonesArray.
+ - Fixed compilation warning from gl2ps showing up on gcc-9.2.
+ - sg/plotter: added functions set_encoding() and set_encoding_none()
+ which allow to disable (unwanted) Paw specific encoding.
+ - Fixed memory leak in mpi_create_basket().
+ - Fixed Coverity warnings.
+ - See History_tools for the complete list of modifications.
+
+
+
+
+
+Digitization & Hits
+
+- Introducing G4ScoringRealWorld, allowing to define command-based scorers
+ to a logical volume in the mass world.
+- Revised G4ScoringQuantiryMessenger and G4ScoringMessenger to better handle
+ the error cases.
+- Added "ntuple" subdirectory for score ntuple writer UI commands.
+- Added G4TScoreNtupleWriter and G4TScoreNtupleWriterMessenger
+ which implements storing hits collections of G4THitsMap type vith
+ Geant4 analysis tools, define them in G4VcoreNtupleWriter.
+ The dependency on the analysis category is avoided via template.
+- Fixed implicit type conversions from size_t to G4int in digits and hits
+ classes (collections, vectors, maps).
+- Pass G4String by const reference in G4SDStructure and digits/hist
+ collections base classes.
+- G4PSSphereSurfaceFlux: fixed track weight.
+
+
+
+Electromagnetic Processes
+
+- DNA:
+
+ - Added G4DNAMolecule class.
+ - Added Kreipl and Meesungnoen amorphous ice models.
+ - Added new model G4DNAELSEPAElasticModel.
+ - Updated G4DNAWaterDissociationDisplacer* classes.
+ - Moved checking of position of track status in
+ G4ITStepProcessor::SetInitialStep().
+ - Chemistry: clarified pointer ownership in G4DNAChemistryManager.
+ - Fixed reaction site issue.
+ - Fixed case of division by zero of diffusionCoefficient in
+ G4DNABrownianTransportation::AlongStepGetPhysicalInteractionLength()
+ for the case of static molecules.
+ - Enabled G4ItNavigator{1,2} to flag if it encounters new type of
+ external physical volume (meant for adapting external navigators).
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Fixed compilation warnings on gcc-9.1. Code cleanup.
+
+- High Energy
+
+ - G4GammaConversionToMuons, G4AnnihiToMuPair: added
+ registration/de-registration mechanism.
+ - G4GammaConversionToMuons: added initialisation and optional possibility
+ to use 5D model for the sampling of the final state.
+ - G4mplIonisationWithDeltaModel, G4mplIonisationModel: fixed dEdx for
+ electron gas model (beta<0.01). Addressing problem report
+ #2169.
+
+- Low Energy
+
+ - G4LivermorePhotoElectricModel: use std::getenv; slightly speed-up.
+ - G4IonParametrisedLossModel: use std::getenv; allowed ICRU90 option.
+ - Use std::getenv() for thread safety.
+
+- Muons
+
+ - G4TablesForExtrapolator: create G4LossTableBuilder and destruct at
+ end of run.
+
+- Standard
+
+ - In most models, make use of the new target atom selector that can
+ reuse the already known log-energy value.
+ - G4UrbanMscModel, G4WentzelVIModel, G4GoudsmitSaundersonMscModel:
+ make use of the new base class methods in utils module, utilising
+ the already known log-energy value, in case of dEdx, range and
+ transport mean free path log-vector table accesses.
+ - G4UrbanMscModel: optimised step limitation for 'UseSafetyPlus'
+ and 'UseDistanceToBoundary'. Minor clean-up of step limit method.
+ Modified lateral displacement sampling.
+ - G4ScreeningMottCrossSection, G4KleinNishinaModel, G4SeltzerBergerModel,
+ G4eSingleCoulombScatteringModel: use element->GetZasInt() interface
+ in order to reduce number of double->int conversions at run time.
+ - G4BetheHeitler5DModel: set x,y components in BoostG4LorentzVector
+ function. Replaced local boost and rotation functions with CLHEP
+ boost, boostZ, transform. One random generator flatArray() call in
+ sampling loop. New parameters set for muon (30% speed up), nuclear
+ threshold calculation. Added gamma conversion to mu+ mu- mode.
+ - G4eCoulombScatteringModel, G4WentzelOKandVIxSection: cleanup debug
+ cout and initialisation.
+ - G4UrbanMscModel, G4GoudsmitSaundersonMscModel, G4WentzelVIModel: use
+ lambdalimit and facsafety parameters from the base
+ class G4VMscModel.
+ - G4SeltzerBergerModel: during initialisation data files upload only data
+ for elements used in geometry, lazy initialisation of the data is also
+ available for testing.
+ - G4SeltzerBergerModel, G4ICRU49NuclearStoppingModel: safer
+ initialisation in MT mode.
+ - G4ScreeningMottCrossSection, G4eSingleCoulombScatteringModel: optimized
+ code and data structure; fixed floating point exception for low energy;
+ use C++11 patterns.
+ - G4hCoulombScatteringModel, G4hCoulombScatteringModel: removed unused
+ headers.
+ - G4PairProductionRelModel, G4GammaConversion: the high energy model for
+ e-/e+ pair production has been extended down to threshold (2mc^2)
+ such that it gives results (both cross-section and final state) identical
+ to those produced by the low energy (G4BetheHeitlerModel). Since this new
+ version of the high energy model can describe e-/e+ pair production from
+ threshold up to PeV (LPM effects are included) the G4BetheHeitlerModel
+ is now removed from the G4GammaConversion process.
+ - G4eplusAnnihilation: set secondary weight correctly using bias manager.
+ - G4ESTARStopping, G4GSMottCorrection, G4GSPWACorrections,
+ G4GoudsmitSaundersonTable, G4SBBremTable, G4SeltzerBergerModel: minor
+ cleanup; use of std::getenv() and use of
+ G4Element::GetZasInt().
+ - Requires data-set G4EMLOW-7.9.
+
+- Utils
+
+ - G4EmElementSelector, G4VEmModel: added extra method to select the
+ target atom by making use of the already known log-energy value in
+ the log-vector access.
+ - G4VEmProcess, G4VEnergyLossProcess and G4VMscModel: added extra
+ methods to access log-vector tables by propagating the already
+ known log-energy value.
+ - G4VMscModel, G4VMultipleScattering: added new method
+ InitialiseParameters(), make multiple-scattering specific
+ methods pure virtual.
+ - G4LossTableManager: added Register/DeRegister() methods and vector
+ of pointers for G4VProcess classes for X-ray and optical processes.
+ - G4EmParameters: added polarisation flag; moved implementation of
+ splitting parameters to source and added check on lock; added
+ 9.99 MeV low limit in the SetMaxEnergy() method,
+ added thread lock to Dump() method.
+ - G4EmParameters, G4EmParametersMessenger: splitted classes keeping the
+ user interface unchanged.
+ Added new classes for complex EM parameters (G4EmExtraParameters
+ G4EmExtraParametersMessenger) and new classes for low-energy and
+ DNA parameters (G4EmLowEParameters, G4EmLowEParametersMessenger).
+ Added new parameters for multiple-scattering FactorSafety and
+ LambdaLimit; now users can customise these values, default
+ values used are the same as in release 10.5.
+ - G4EmSaturation: do not apply saturation for zero step length, as this
+ is possible only if a tracking cut is applied.
+ - G4EmBiasingManager: delete non-tracked particles.
+ - New helper class G4NIELCalculator, to compute NIEL in user stepping
+ action or sensitive detector code. User should provide G4VEmModel
+ objects, which has NIEL model.
+ - G4LossTableManager: added access and initialisation of
+ G4NIELCalculator. Use std::getenv() for thread safety.
+ - G4VEmProcess, G4VEnergyLossProcess, G4VMscModel, G4EmElementSelector:
+ utilise new optimised LogVectorValue() function from G4PhysicsVector
+ (for log-vector).
+ - G4EmElementSelector: new optimised version; adopting linear
+ interpolation to avoid redundant energy grid related computations;
+ branches used to handle rare corner cases are eliminated by increased
+ robustness of the algorithm.
+ - Removed no longer used members in G4EmElementSelector and G4VEmModel.
+ - G4LossTableBuilder, G4LossTableManager, G4VEmModel, G4VMscModel,
+ G4VEmProcess, G4VEnergyLossProcess, G4EmCalculator: allow both
+ approaches, "General Process" and "Base Materials", work together.
+ - G4DNAModelSubType: added Kreipl and Meesungnoen amorphous ice models.
+ G4EmLowEParametersMessenger: added corresponding commands.
+ - DummyModel: added methods to be consistent with above modifications.
+ - Fixed Coverity defects.
+
+ - Xrays
+
+ - G4Cerenkov, G4Scintillation, G4SynchrotronRadiation,
+ G4VTransitionRadiation: added registration/de-registration mechanism.
+
+
+
+
+Event
+
+- G4SPSEneDistribution: added protection for potential infinite loop.
+ Addressing problem report
+ #2177.
+- G4SPSPosDistribution: added accessor methods for volume confinement
+ Addressing GitHub PR #7.
+- Fixed implicit type conversions from size_t to G4int in G4TrackStack
+ and G4TrajectoryContainer. Fixed typos and some code cleanup.
+- Make -DG4_USESMARTSTACK a public compile definition of G4event
+ to propagate it directly to CMake clients.
+
+
+
+Externals
+
+- CLHEP:
+
+ - Updated to CLHEP version 2.4.1.3.
+ - MixMaxRng: throw if seed is zero. Use throw instead of exit()
+ elsewhere.
+ - Defaulted operator=() also for BasicVector3D andPlan3D; fixing
+ deprecation warnings on gcc-9.1. Fixed shadowing compilation
+ warnings in Transform3D as reported on gcc-9.1.
+ - Added move constructor and move assignment operators in Vector and
+ Geometry classes.
+ - Fixed compilation warnings for cases of implicit type conversions in
+ Ziggurat classes.
+
+
+
+
+General Processes
+
+- Biasing
+
+ - Introducing leading particle biasing.
+ - G4BOptnChangeCrossSection: added argument to SetBiasedCrossSection()
+ method, as option to update the interaction length when setting a new
+ cross-section value.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+- Cuts
+
+ - Added protection against premature call to G4ProductionCutsTable.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+- Decay
+
+ - G4Decay: extended printout for G4Exception DECAY101 and DECAY102.
+
+- Management
+
+ - Made G4ProcessTable a thread-local singleton.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Some code cleanup in G4ProcessManager.
+
+- Optical
+
+ - G4OpWLS: call SetNumberOfSecondaries() from G4VParticleChange only
+ once. Addressing problem report
+ #2200.
+ - Improved diagnostics printout.
+ - Code cleanup and formatting, added C++11 keywords.
+
+- Parameterisation
+
+ - Register G4FastSimulationManagerProcess with highest ordering in
+ G4FastSimulationManagerHelper to ensure it is the only process invoked
+ for a given step (ExclusivelyForced) and no other StronglyForced
+ processes will be considered.
+
+- Transportation
+
+ - The following fixes and improvements affect both G4Transportation and
+ G4CoupledTransportation:
+ - Fixed issues related to resetting of looper flag and other state for
+ field propagation. Involved replacing check for 'Global' field with check for any field; this is
+ needed to ensure that propagator-in-field state is reset when the
+ setup inludes only local fields.
+ Ensure that looping flag is reset (false) when a force is not exerted
+ in G4CoupledTransportation::AlongStepGetPhysicalInteractionLength();
+ before it was overwritten afterwards.
+ Addressing problem report
+ #2144.
+ - Optimisation to avoid calling user field manager's
+ ConfigureForTrack() method, except if particle is charged,
+ or forces from magnetic moment or gravity are enabled.
+ - The change above introduces a new 'flag' to enable gravity fields.
+ The static method EnableGravity() in G4Transportation must be
+ called if the application uses gravity fields (calling this method
+ will enable both types of transportation to consider gravity.
+ - Added flag to optionally silence warning about looping tracks.
+ The method SetSilenceLooperWarnings() controls it.
+
+
+
+
+Geometry
+
+- Implemented minor C++11 revision and code cleanup.
+ Use pre-increment wherever possible.
+- Fixed minor Coverity defects.
+- Divisions
+
+ - Return correct value for multiplicity in G4PVDivision and
+ G4ReplicatedSlice. Addressing problem report
+ #2168.
+ - G4PVDivision: added missing implementation of alternative constructor.
+ - Added new virtual VolumeType() method in Physical Volume types.
+
+- Magnetic field
+
+ - G4ChordFinder: changed to use concrete type of Stepper as template
+ parameter.
+ - G4InterpolationDriver: revision that uses an instance of the stepper for
+ each substep. Fixed memory churn; use FSAL property of stepper
+ (G4DormandPrince745) to avoid one RHS evaluation per integration
+ substep beyond the first.
+ Changed from G4VERBOSE to G4FIELD_DEBUG for debug checks.
+ Now set by default.
+ - Removed division in G4DormandPrince745::Interpolate4thOrder().
+ Fix in 5th order interpolation method.
+ - Reset step estimate in G4MagInt_Driver only at the beginning of a
+ track.
+ - Added G4SextupoleMagField, an implementation of a sextupole magnetic
+ field.
+ - Completed implementation G4BFieldIntegrationDriver, and fixed issues.
+ It is now used as the default driver for magnetic fields:
+ it instantiated in G4FieldManager's CreateChordFinder() method.
+ Fixed case of floating point exception in and removed statistics
+ printouts from destructor.
+ - Added method and attribute to G4VIntegrationDriver
+ DoesReIntegrate() to inform whether the driver recomputes
+ segment when AccurateAdvance() is called.
+
+- Management
+
+ - G4GeomSplitter: re-enabled use or realloc()/free() and
+ memcpy(), after adapting G4VPhysicalVolume MT splitted data
+ to adopt only trivial types for allocation. Re-establishing original
+ performance in initialisation of the geometry in MT mode.
+ - Properly initialise splitted data in G4VPhysicalVolume to zero.
+ - Replaced deprecated std::binary_function calls with lambdas in
+ G4SmartVoxelStat and G4GeometryManager. Addressing GitHub PR#8.
+ - Defined move constructor and move assignment operator for
+ G4AffineTransform.
+ - G4VSolid: use G4QuickRand() in EstimateCubicVolume()
+ and EstimateSurfaceArea().
+ - Changed G4VPhysicalVolume::VolumeType() to be virtual.
+ Required for addition of External Navigation, which adds an 'external'
+ physical volume type (for use with an External sub-Navigator).
+ - Revised G4LogicalVolume to cope with 'external' type of physical
+ volumes. Use stored volume type in CharacteriseDaughters().
+ These revisions are independent and backward compatible.
+ - G4LogicalVolume: added method ChangeDaughtersType() to change
+ the volume type for CharacterisedDaughters(). It enables the
+ user to turn over responsibility for navigation in that volume to an
+ external navigator.
+ This is for use when one or more daughter volumes are created as an
+ existing physical volume type (typically G4PVPlacement). It
+ can also be used to enable to create a (logical) volume which containts
+ a mixture of existing Geant4 physical volume types and user-created
+ 'external' physical volume type (with type code kExternal):
+ Geant4 types must be created first, and then ChangeDaughtersType()
+ must be called to change the mother's attribute to kExternal.
+ Note: only one type of sub-navigator will be called to find a track's
+ intersection (or the location of a point) in all daughters of one
+ mother volume. The sub-navigator chosen will correspond to the volume
+ type assigned.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Use header-based #define/undef symbols to configure VecGeom
+ replacements; added new configuration headers G4GeomConfig.hh and
+ G4GeomTypes.hh.
+
+- Navigation
+
+ - Improved information in G4Exceptions for particles stuck due to
+ multiple zero steps in G4Navigator.
+ - Added hooks for capability to navigate in 'external' geometry:
+ new base class G4VExternalNavigation for external 'sub'-navigator;
+ new type of 'External' physical volume, to flag volumes for
+ external sub-navigator; revisions to G4Navigator to dispatch logical
+ volumes with daughters which are of 'external' physical-volume type.
+ An 'external' sub-navigator can be registered with G4Navigator;
+ 'placement' and 'external' physical volumes cannot be currently
+ mixed inside the same logical volume.
+ - Added Clone() method in G4Navigator, to allow for 'cloning' the
+ navigator for G4VIntersectionLocator's 'helper', and potentially for
+ worker threads.
+ - G4TransportationManager: enable worker threads to clone G4Navigator if
+ needed. Keep first navigator created; by convention that will be the
+ navigator object of the master thread (or the only thread). Other
+ (worker) threads will clone the first navigator, if it has an external
+ sub-navigator registered. This ensures that they clone the ability to
+ navigate in 'external' volume descriptions.
+ - G4MultiLevelLocator: avoid re-estimating endpoint if driver does not
+ re-integrate when AccurateAdvance() is called.
+ - Introduced temporary 'relaxation' (increase) of the value of delta-chord,
+ in G4PropagatorInField, to enable larger steps, after a threshold number
+ of iterations (parameter). Added methods to get/set the parameter that
+ controls after how many integration substeps (in one physics step) the
+ increase of the chord distance is trigerred.
+ - Made G4RegularNavigationHelper a G4ThreadLocalSingleton.
+ - G4PhantomParameterisation: reverted precision checks as in version
+ 10.2.p02. Addressing problem report
+ #2192.
+ - Enable UI command /geometry/navigator/push_notify which was
+ not setup properly. Addressing problem report
+ #2173.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+- Solids (Boolean)
+
+ - G4BooleanSolid: use G4QuickRand() in GetPointOnSurface();
+ reduced max number of tries to generate a point to 100k.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+- Solids (CSG)
+
+ - G4Tubs: Fixed normal from DistanceToOut() to be unit vector, for
+ abnormal exit points. Added inverse-Rmax and -Rmin as
+ data members.
+ - Re-use pre-calculated values instead of using std::cos(), std::sin()
+ in G4Tubs, G4Cons, G4CutTubs and G4Sphere.
+ - G4CutTubs: fixed minor Coverity defects for non initialised data in
+ constructors.
+ - Added inclusion of new G4GeomTypes.hh header to those headers allowing
+ VecGeom replacement.
+
+- Solids (Specific)
+
+ - Enabled VecGeom wrapper for G4GenericPolycone, G4EllipticalTube,
+ G4EllipticalCone and G4Ellipsoid. Requiring VecGeom version 1.1.5.
+ - G4ExtrudedSolid: fixed a bug in DistanceToOut(), affecting extruded
+ solids defined off-center along the z-axis.
+ - Fixed generation of polyhedron in G4UExtrudedSolid::CreatePolyhedron().
+ Addressing visualization part of the problem report
+ #2171.
+ - Avoid defining kCarTolerance as 'static const' in G4VFacet.
+ Addressing problem report
+ #2172.
+ - Modified G4PolyconeSide and G4PolyhedraSide to use only trivial types
+ for MT splitted data in G4PlSideData and G4PhSideData respectively.
+ - Protected check in G4TwistedTubsSide::DistanceToPlane() within debug
+ flag.
+ - Defined move constructor and move assignment operator for
+ G4TriangularFacet.
+ - Use GetVertices() instead of GetParametersList() in
+ the wrapper G4UTet.
+ - G4TesselatedSolid: fixed case of potentially uninitialized array.
+ - G4GenericTrap: fixed compilation warnings for variable shadowing
+ on clang-8.
+ - Rationalise header inclusions for faceted solids.
+ - Removed unnecessary forward declaration in G4VFacet header.
+ - Added inclusion of new G4GeomTypes.hh header to those headers allowing
+ VecGeom replacement.
+
+- Volumes
+
+ - Revised G4PVPlacement::CheckOverlaps() for speed up; improved
+ diagnostics.
+ - Added enablers for external navigation capability.
+ Added new virtual base class G4VExternalPhysicalVolume.
+ - Added new virtual VolumeType() method in Physical Volume types.
+ - Fixed registration of G4PVParameterised daughter in mother volume to
+ enable its true volume type (kParameterised) to be recognised and
+ registered in mother logical volume.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+
+
+
+Global
+
+- G4PhysicsVector: added additional Value() method option to propagate down
+ the known log-energy value (can avoid the log call in case of
+ log-vector). Added optimised LogVectorValue() method, implementing
+ optimised algorithm for use with log-vectors only. All conditional branches
+ are eliminated by increased robustness of the algorithm.
+- Added protection against idx > entries() in G4PhysicsVector::insertAt()
+ function. Addressing problem report
+ #2182.
+- G4PhysicsVector, G4PhysicsLogVector, G4PhysicsLinearVector and
+ G4PhysicsLnVector: changed dBin member to invdBin(=1/dBin)
+ to get rid of run-time divisions.
+- Added G4QuickRand header in HEPRandom sub-module.
+- Added 'External' (physical) volume type to geomdefs.hh.
+- Added new LOG_EKIN_MIN constant as value taken in case of zero kin-energy
+ in templates.hh.
+- Defined default move constructor and move assignment operator for
+ G4String and G4DataVector.
+- G4SimplexDownhill: fixed minor Coverity defect.
+- Fixed implicit type conversions in G4String internal methods.
+- Updated settings for TiMemory.
+- Use move semantics in G4ConsumeParameters, eliminating warning about
+ unnecessary copy for some compilers.
+- Added G4GlobalConfig.hh generated header to hold global, always required,
+ pre-processor symbols instead of relying on -D flags for: G4USE_STD11,
+ G4MULTITHREADED, G4_STORE_TRAJECTORY, G4VERBOSE and GEANT4_USE_TIMEMORY.
+ Added inclusion of G4GlobalConfig.hh in G4Types.hh, tls.hh and
+ G4TiMemory.hh so that global and other categories pick up the definitions
+ transparently. Updated other headers/sources to include G4Types/G4Threading
+ if they use G4MULTITHREADED.
+- Updated date of release for 10.6.
+
+
+
+Graphical Representations
+
+- G4VisAttributes: added 'cloud' and methods to force, SetForceCloud(),
+ and SetForceNumberOfCloudPoints().
+- G4VisExtent: added method Transform(const G4Transform3D&).
+- Added G4TessellatedSolid to list of solids that may be specially treated;
+ solids that may access the graphics scene directly through G4VGraphicsScene.
+- Removed Get/SetDrawOverlapsFlag() from G4VVisManager.
+- HepPolyhedron: fixed defect reported by Coverity.
+ Added move constructor and move assignment operator.
+- BooleanProcessor::createPolyhedron(): Use return
+ std::move().
+
+
+
+Hadronic Processes
+
+- Improved G4HadronicException: aligned behavior with std::exception:
+ what() returns the exception explanation; moved the member definition
+ to source file. Added some consts qualifiers.
+- Cross sections
+
+ - G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS: utilise
+ the new Value() method from G4PhysicsVector that can make use
+ of the already known value of the log-kinetic energy in the table of
+ cross-sections.
+ - G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS
+ G4ParticleInelasticXS: code clean-up, assuming usage of the new
+ data-set G4PARTICLEXSDATA-2.1; removed unused variables and methods;
+ used only methods with logarithm of energy.
+ - G4NeutronCaptureXS: restored computation of isotope cross-section as it
+ was in release 10.5, responsible for degradation of observables on
+ Tungsten. Upload data only for elements used in geometry.
+ Code clean-up, use C++11.
+ - G4ParticleInelasticXS: set verbosity to 0.
+ - Corrections in G4MuNeutrinoNucleusTotXsc.cc: new name, default
+ fCcTotRatio and high energy parameter 'bb'.
+ - G4ComponentAntiNuclNuclearXS: code clean-up and corrected the
+ description.
+ - G4ComponentGGHadronNucleusXsc, G4ComponentGGNuclNuclXsc: removed
+ remaining unused obsolete methods and members; use G4NuclearRadii
+ utility to compute nuclear radius.
+ - G4ComponentGGHadronNucleusXsc: fixed correction factor for kaons.
+ - G4BGGPionElasticXS, G4BGGPionInelasticXS: fixed initialisation for
+ pi+ and pi- by usage of separate vectors of correction factors;
+ fixed computation for Hydrogen target. Clean-up pi+ cross-section
+ below 20 MeV.
+ - G4BGGPionInelasticXS: fixed low-energy parameterisation (restore
+ one from Geant4 10.5, where low-energy limits were different for
+ pi+ and pi-).
+ - G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS: fixed computation
+ for Hydrogen target. Fixed initialisation for protons and neutrons
+ by usage of separate vectors of correction coefficients.
+ - G4HadronNucleonXsc: added extra method for hyperon cross sections.
+ Extended to charmed and bottom hadrons (mesons and baryons).
+ Improved K+p parameterisations (NS and VG); removed obsolete methods.
+ - G4ParticleInelasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS,
+ G4BGGNucleonElasticXS, G4BGGNucleonInelasticXS,
+ G4NucleonNuclearCrossSection, G4ComponentBarNucleonNucleusXsc,
+ G4UPiNuclearCrossSection: shared internal data vectors between threads;
+ initialise data once; removed unused parameters; code clean-up;
+ use C++11 keywords.
+ - G4VCrossSectionDataSet, G4CrossSectionDataStore,
+ G4IonProtonCrossSection: use only methods with logarithm of energy.
+ - G4HadronicException is replaced by G4Exception in all classes with
+ exceptions.
+ - G4ParticleInelasticXS, G4NeutronElasticXS, G4NeutronInelasticXS,
+ G4NeutronCaptureXS: adopted the new G4PhysicsVector::LogVectorValue()
+ optimised method for log-vectors.
+ - G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS: use coherent low-energy
+ threshold of 14 MeV; code clean-up.
+ - G4BGGPionInelasticXS, G4BGGPionElasticXS: use coherent low-energy limit
+ of 1 MeV.
+ - G4HadronNucleonXsc: fixed K+p and K+n parameterisations.
+ - G4NeutronElasticXS: implemented isotope cross-section.
+ - G4UPiNuclearCrossSection: optimised interpolation method; moved two
+ run-time methods to inline; improved low-energy parameterisation.
+ Below 20 MeV the cross-section is now constant, with BGGPion
+ cross-section implementing the low-energy part. Code clean-up.
+ - G4NeutronInelasticXS, G4ParticleInelasticXS, G4NeutronElasticXS: added
+ special method for tritium and He3 targets (addressing problem report
+ #2162);
+ upload data only for elements used in geometry. Code clean-up and use
+ of C++11 features.
+ - G4HadronNucleonXsc: new interface to G4ComponentGGHadronNucleonXsc
+ including s-,c-,b-, particles. Set protection against division by zero
+ by introducing a minimum energy cutoff (100 keV), below which the
+ cross-section is considered constant.
+ - G4BGGNucleonInelasticXS, G4BGGNucleonElasticXS, G4BGGPionInelasticXS,
+ G4BGGPionElasticXS: clean-up low-energy behaviour.
+ - G4NeutrinoElectronNcXsc, G4NeutrinoElectronTotXsc: high energy
+ extension of neutrino-electron cross sections, for both
+ charged-current and neutral-current interactions (M_W and M_Z
+ propagator factors and Glashow resonance), for all neutrino and
+ anti-neutrino flavours.
+ - G4MuNeutrinoNucleusTotXsc: high energy extension of cc/nc xsc (M_W and
+ M_Z propagator factors) cc/tot ratio.
+ - G4MuNeutrinoNucleusTotXsc: added new method
+ GetElementCrossSection().
+ - Removed using namespace std and using namespace CLHEP
+ from G4NeutronElectronElXsc header.
+ - Use std::getenv() for thread safety.
+
+- Management
+
+ - G4HadronicInelasticProcess: removed default GHEISHA cross-sections.
+ - G4EnergyRangeManager: fixed bug regarding the kinetic energy per
+ nucleon in the case of anti-nuclei (the bug was of little harm as one
+ single model, FTFP, is used for all energies in the case of anti-nuclei
+ projectiles). Streamlined algorithm in the case that only one model
+ is registered for a process. Implemented C++11 patterns.
+ Moved operators to be private, removed obsolete method, removed
+ G4HadronicException; in case of problem return nullptr.
+ - G4HadronicProcess: removed try/catch pattern from computation of mean
+ free path; removed final-state random rotation. Do not use try/catch
+ pattern to choose hadronic interaction; decreased limit on check of
+ offshell mass from 1.5 MeV to 10 keV.
+ Removed unused headers. Addressing problem report
+ #2175.
+ For particles out of mass shell, the kinetic energy is corrected in
+ such a way that it is always above 10 keV.
+ Used std::getenv(), which is recommended for concurrency.
+ In the method CheckResult(), a short-lived secondary particle
+ is allowed to have a dynamic mass which differs from the PDG mass
+ by less than three times the particle's width.
+- Models Management:
+
+ - G4HadronicInteractionRegistry: fixed typo in comments; removed unused
+ Boolean flag. Use of C++11 patterns.
+ - G4HadronicInteraction: fixed definition of model per element and material.
+ Use of C++11 patterns.
+ - G4VHighEnergyGenerator: used inheritance from G4HadronicInteraction,
+ which reduces memory leaks at exit.
+
+
+- Processes
+
+ - G4HadronElasticProcess: removed tracking cut for all particles (charged
+ particles may be stopped by the tracking cut of ionisation process;
+ neutrons should be stopped by G4NeutronKiller).
+ Added protection for zero energy of the projectile particle.
+ Removed final-state rotation. Removed default GHEISHA cross-sections.
+ Clean up the sampling of the final state;
+ improved description and comments; added C++11 keywords;
+ removed unused local members.
+ - G4MuNeutrinoNucleusProcess: new process which handles the
+ G4NuMuNucleusCc(Nc)Model models.
+ - Created new inelastic processes for heavy hadron-nucleus interactions.
+ Notes: there is no need to create similar processes for elastic heavy
+ hadron-nucleus interactions; only hadrons (mesons and baryons) that can
+ fly macroscopic distances are considered; for the time being, none
+ of these processes is used in any physics list.
+
+- Stopping
+
+ - G4HadronicAbsorptionFritof: extended to neutral anti-hadrons
+ (anti-neutron, anti-lambda, anti-sigma0 and anti-xi0). This extension
+ is for completeness and practical convenience, although physically
+ neutral hadrons should never be completely at rest.
+ - G4HadronicAbsorptionFritofWithBinaryCascade: new class for handling
+ anti-proton and anti-neutron annihilation at rest using Fritiof coupled
+ with Binary cascade, instead of directly with pre-compound (as in the
+ class G4HadronicAbsorptionFritiof).
+ - Fixed Coverity defect in G4MuonMinusAtomicCapture.
+
+- Utilities
+
+ - G4HadProjectile: clean-up for small kinetic energy of the projectile.
+ - G4HadFinalState, G4Bessel, G4ReactionProduct, G4GHEKinematicsVector:
+ replaced fabs() with abs().
+ - G4HadronicParameters: extended to the recommended (default) energy
+ transition regions between FTF and cascade models (BERT and/or BIC)
+ and between strings models (QGS and FTF).
+- Models Utilities:
+
+ - G4NuclearRadii: new utility class with several parameterisations of
+ nuclear radius. Added extra utility methods.
+ - G4GeneralPhaseSpaceDecay: corrected message when throwing an exception
+ due to center-of-mass energy below threshold.
+
+
+- Bertini Cascade
+
+ - Fixed case for potential FPEs due to un-protected sqrt() in
+ G4NucleiModel::boundaryTransition()
+ - G4LightTargetCollider: fixed crash when the gamma energy is below
+ the deuteron disintegration threshold and improved the
+ exception handling.
+
+- Binary Cascade
+
+ - G4GeneratorPrecompoundInterface: extended to include a simple
+ coalescence model for nucleus-nucleus interactions in the interface
+ between string and precompound models. This allows to improve the
+ nucleon spectra and fast deuterons in ion-ion collisions.
+ - G4GeneratorPrecompoundInterface: minor fix.
+
+- De-excitation
+
+ - G4VEmissionProbability: using simple rejection.
+ Implemented option to force a residual nucleus to be among known
+ discrete levels.
+ - Replaced deprecated std::binary_function calls with lambdas in
+ G4StatMFMicroCanonical and G4StatMFChannel. Addressing GitHub PR#8.
+ - G4Evaporation, G4ExcitationHandler, G4LevelReader, G4GammaTransition,
+ G4VEmissionProbability, G4PhotonEvaporation, G4PolarizationTransition:
+ changed scheme of verbosity: 0- silence, 1- dump of parameters at
+ initialisation, 2- debug printout, 3- very detailed debug printout.
+ Addressing problem report
+ #2098.
+ - G4CoulombBarrier: use G4NuclearRadii utility to compute nuclear radius.
+ - G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
+ G4FermiDecayProbability: simplified algorithm to sample kinetic energy
+ of a fragment; minor code clean-up; removed commented lines.
+ - G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
+ G4NeutronEvaporationProbability, G4VEvaporationChannel: preparation for
+ development of the new GEM model; for evaporation, improved selection of
+ final excitation level for residual fragments.
+ - G4Evaporation: made coherent use of IsApplicable() from G4FermiBreakUp
+ and forced simplified decay of exotic fragments with
+ G4UnstableFragmentBreakUp.
+ - G4FermiFragmentsPoolVI: implemented new method HasChannels().
+ Removed unphysical fragments and corresponding data structures.
+ - G4FermiBreakUpVI: used new method HasChannels() inside IsApplicable().
+ Cleanup internal data after decay loop and not before.
+ Use consistently verbosity from de-excitation module; simplified
+ decay kinematics.
+ - G4FermiFragment: fixed Coulomb barrier correction computation.
+ Removed unused Boolean members.
+ - G4UnstableFragmentBreakUp: changed logic, allowing decay of an exotic
+ fragment (i.e. a fragment unknown in gamma-level database) and never
+ release it. Allowed only residual fragments, which are present in the
+ nuclear level database; those fragments which are not in the database
+ are forced to decay to fragments from the database.
+ Improved debug printout.
+ - G4VEmissionProbability, G4Evaporation, G4UnstableFragmentBreakUp:
+ consistently use decay channels in all components of the de-excitation
+ module.
+ - G4LevelReader: small reduction of memory churn at initialisation.
+ - G4NuclearLevelData, G4LevelManager, G4GEMChannel, G4GEMProbability,
+ G4GEMProbabilityVI, G4EvaporationChannel, G4EvaporationProbability:
+ use consistently pairing correction from G4NuclearLevelData and
+ verbosity level for debugging.
+ - G4GEMChannelVI, G4GEMProbabilityVI: new GEM model.
+ - G4ExcitationHandler: added check on upper limit of excitations; fixed
+ initialisation sequence, reduced memory churn. Removed second photon
+ evaporation loop, as all gamma decays are already happening in the
+ first loop. Use more C++11 constructs. Added a limit on the number of
+ warnings on high excitation energy of the input fragment. Fixed problem
+ seen in medical test of fragmentation; provided full de-excitation of
+ excited light fragments.
+ - G4DeexPrecoParameters: added upper limit of 30 MeV on the
+ excitation per nucleon. Added two new parameters.
+ - G4DeexParametersMessenger: added UI command.
+ - G4FermiFragmentsPoolVI, G4NuclearLevelData: reduced number of locks at
+ initialisation.
+ - Modified internal interfaces to reuse some code for evaporation in the
+ new GEM evaporation model; used more C++11 patterns.
+ - G4ExcitationHandler: removed warning on high excitation energy.
+ - G4ExcitationHandler, G4Evaporation: minor speedup improvement.
+ - G4NuclearLevelData: added new public interface to enable upload of
+ nuclear level data before the first event.
+ - G4PhotonEvaporation: access G4NuclearPolarizationStore only if
+ correlated gamma decay is enabled. Fixed gamma de-excitation when
+ initial excitation energy is between ground state and 1st level.
+ - G4CompetitiveFission, G4FissionBarrier, G4FissionParameters: added
+ numerical protections; clean-up C++11 keywords; moved headers to
+ source code.
+ - Code clean-up and fixed Coverity defects.
+
+- Elastic scattering
+
+ - G4HadronElastic: removed tracking cut and use numerically safer
+ computation for very low-energy projectile. Improved description
+ and comments; added C++11 keywords.
+ Make resampling of scattering angle using algorithm from this class
+ in the case that abs(cos(theta)) > 1 m.
+ Added protected variable pLocalTmax; added protection for
+ projectile of zero kinetic energy. Added new parameterisations for
+ protons and pions. Added a new method for s-,c-,b- particles.
+ - G4ChargeExchange: updated interfaces; added protection for projectile
+ of zero kinetic energy.
+ - G4AntiNuclElastic: do not compute trigonometric functions, which are
+ not used.
+ - G4ElasticHadrNucleusHE, G4LEpp, G4LEnp: code clean-up.
+ - G4ElasticHadrNucleusHE: reduced size of data structure and time for
+ initialisation by about a factor of 2; general code clean-up;
+ added further protections. Made all data shared between threads.
+ General code clean-up.
+ - Removed "using namespace std" and "using namespace CLHEP" from
+ G4NeutronElectronElModel header.
+ - G4HadronElastic: changed warning printout for resampling, by
+ protecting it by G4VERBOSE. Added limit on number of warning printouts.
+ Addressing problem report
+ #2204.
+
+- Lend
+
+ - G4LENDCapture::ApplyYourself(): fixed memory leak reported
+ by Coverity.
+ - Fixed compilation warnings on gcc-9.1 for missing assignment operator.
+
+- Lepto-nuclear
+
+ - Neutrino-nucleus models and precalculated distribuitons as from
+ new data-set G4PARTICLEXS-2.0.
+
- Fixed bug in G4NuMuNucelusCc(Nc)Model for kinematics of quasi-elastic
+ neutrino scattering. Fix for m->e in nucleon 4-vectors,
+ when nucleon move, iTeMax->100.
+ Fixed cases of arrays out of boundaries for indices of x-.
+ - G4NuMuNucleusCcModel: 1p1h momentum sampling according to AS model;
+ added precompound interface. Implemented off-shell kinematics;
+ fixes in ApplyYourself(), SampleLVkr() and CoherenPion(); new method
+ RecoilDeexcitation() to de-excite recoiled nucleus.
+ - G4NeutrinoNucleusModel: added two methods for excitation energy and
+ nucleon momentum sampling.
+ - G4NuMuNucleusCcModel, G4NuMuNucleusNcModel, G4NeutrinoNucleusModel,
+ G4NeutrinoElectronCcModel: implemented s-channel in nu-e-cc model.
+ - Removed using namespace std and using namespace CLHEP
+ statements from headers.
+ - Fixes for Coverity warnings and clean-up.
+
+- Particle High Precision
+
+ - Fix to deal with incorrect excitation energy when charged particles are
+ emitted during a neutron reaction. In G4ParticleHPInelasticCompFS,
+ changed method CompositeApply(), for very small excitation energies,
+ changed level index from -1 to 0 only if incident and outgoing particles
+ are the same. Addressing problem report
+ #1838.
+ - Fix to deal with un-incremented index of photons in
+ G4ParticleHPPhotonDist::GetPhotons().
+ Also cleaned up dead code in that class. Addressing problem report
+ #2167.
+ - G4ParticleHPChannelList: fixed bug in the momentum change (it has to
+ be a normalized 3-vector, but it was not) in the case where NeutronHP
+ could not find a proper reaction channel.
+ - G4ParticleHPInelasticCompFS: fix to avoid arbitrary number of target
+ nuclei being generated and slowing down multi-threaded operation.
+ Addressing problem report
+ #2166.
+ - G4ParticleHPChannel, G4ParticleHPNames: allowed using of an incomplete
+ data library name if the environment variable G4NEUTRONHP_SKIP_MISSING_ISOTOPES
+ is set. The missing cross-sections are then set to 0.
+ - G4ParticleHPContAngularPar: redefined residual mass to consider
+ incident particles other than neutrons.
+ - G4ParticleHPInelasticBaseFS: added protection against residual with
+ Z<0 or A<Z, do not apply adjust_final_state when data is in
+ MF=6 format (no correlated particle emission).
+ - Correction to add Q value info to G4ParticleHPNBodyPhaseSpace.
+ - G4ParticleHPInelasticCompFS: re-build method two_body_reaction() to be
+ used by incident charged particles (now isotropic emission in the CMS).
+ Also restrict 'nresp' use below 20 MeV. Added photon emission
+ when no data are available.
+ - G4ParticleHPEnAngCorrelation: deleted part of code trying to preserve
+ baryon number; one has to assume that it is not preserved when using
+ ENDF-6 data.
+ - Fixes for crashes detected only when using QGSP_BIC_AllHP physics-list:
+ in method Sample() of G4ParticleHPContAngularPar, set
+ protection against unphysical interpolation result; in
+ G4ParticleHPKallbachMannSyst, added in A() the possibility of
+ tritium and He3 projectiles, taking in this case (arbitrarily) an
+ intermediate value between the two already considered cases,
+ proton-neutron-deuteron and alpha.
+ - Fixes in G4ParticleHPKallbachMannSyst.
+ - G4ParticleHPInelasticBaseFS: re-calculate Q value in
+ BaseApply() in case of no data in library.
+ - Added protection against maxE<0 in
+ G4ParticleHPNBodyPhaseSpace::Sample().
+ - G4ParticleHPNames: removed restriction of using isotopes with Z>92,
+ therefore removing the environmental variable
+ AllowForHeavyElements.
+
+- Parton-String
+
+ - Extended both Lund and QGS string fragmentation to allow the
+ possibility to have charm and/or bottom quarks and diquarks in the
+ strings. As a result of the hadronization of strings having heavy
+ (c, b) quarks, charmed and bottom hadrons can be produced: only heavy
+ mesons and baryons that can fly macroscopic distances are considered
+ as candidate final states.
+ Note: this extension has required also to extend the list of diquarks
+ available in Geant4, to add those made with charm and bottom quarks.
+ - G4FTFParameters: extended FTF configuration interface to include
+ parameters for pion projectile.
+ Diffraction minimal mass is now correctly set in GeV (instead of MeV),
+ for hadron projectiles different from pions, kaons, nucleons and
+ anti-nucleons, in the method InitForInteraction().
+ In GetMinMass(), fixed a bug in the computation of the quark
+ type (which affects the estimated minimal string mass produced in
+ diffraction); added also protections to make sure that the quark type
+ is always one of the five considered (u, d, s, c, b).
+ Absolute (rather than signed) charge for antibaryon is now correctly
+ taken in the method InitForInteraction().
+ Fixed creation/destruction/use of Glauber-Gribov cross-section and
+ fixed a memory leak. Added protection for possible division by zero
+ due to zero elastic cross-section.
+ Replaced Chips hadron-nucleon (total and elastic) cross-sections with
+ the Barashenkov-Glauber-Gribov (BGG) cross-sections for ordinary (i.e.
+ non-heavy) hadrons (for heavy hadrons, only BGG cross-section are
+ available and used).
+ Set parameters of a string kink in the constructor (instead of setting
+ it at each interaction, causing memory leaks). Notice that string kinks
+ are currently switched off, so this fix does not affect any physics
+ result.
+ - G4FTFModel: minor improvement in the annihilation at rest of light
+ anti-ions, to avoid the possibility of unphysical production of
+ target and projectile fragments at rest.
+ Improvement of the algorithm for string creation.
+ - Improvements to FTF model for nucleus-nucleus interactions (with
+ negligible effects for hadron-nucleus).
+ - G4DiffractiveExcitation: extended range of excited hadron masses,
+ starting from ground-state values (before, these were starting
+ from current hadron masses).
+ - G4ElasticHNScattering: improvement and simplification of the algorithm
+ of elastic scattering (before the masses of resonances were sampled,
+ now this is no longer needed). Added a few protections to avoid
+ rare cases of floating point exceptions.
+ - Correction in the Lund string fragmentation regarding the search for
+ final-state in the last string decay. Some code cleanup.
+ - Switch off the probability of charm and bottom hadron production in
+ both Lund and QGS string fragmentations (temporary protection, to be
+ removed after release 10.6).
+ - Implemented fragmentation functions of heavy (charm and bottom) quarks
+ and diquarks for the QGS string fragmentation, based on a review of
+ the available theoretical papers.
+ - G4LundStringFragmentation, G4QGSMFragmentation: in SplitEandP(),
+ added a check that the string can be converted to an existing hadron
+ (else a null momentum is returned).
+ - The same set of mixing meson parameters (for both scalar and vector
+ mesons), as defined in the base class G4VLongitudinalStringDecay, are
+ now used on both FTF and QGS.
+ - G4VLongitudinalStringDecay: added forgotten initialization of c-cbar
+ and b-bbar pair production for kinks or gluons.
+ - G4ExcitedStringDecay: added protection in the sampling of resonance
+ masses against values below threshold.
+ - G4VPartonStringModel: re-sample the string formation in the case that
+ the (either target or projectile) nuclear residual is an unphysical
+ combination of nucleons (i.e. more than three protons with no neutron,
+ or more than one neutron with no proton).
+ - G4Reggeons: added extension for charmed and bottom hadrons following
+ the ideas introduced to deal with Glauber-Gribov heavy hadron - nucleon
+ cross-sections.
+ - Deleted unused classes G4VAnnihilationCrossSection, G4QGSMParameters,
+ G4AnnihilationCrossSection, G4GammaAnnCrossSection, G4ASCCrossSection,
+ G4DiffractiveHHScatterer, G4VKinkyStringDecay, G4EventGenerator,
+ G4InteractionCode and G4VertexCode.
+ - Fixed Coverity defects.
+
+- Pre-equilibrium
+
+ - Added new model based on pre-compound de-excitation
+ G4LowEGammaNuclearModel.
+ - G4PreCompoundEmission, G4PreCompoundFragment, G4VPreCompoundFragment:
+ setup minimum number of points for probability integration to 4;
+ minor code clean-up.
+ - G4PreCompoundModel: added check on excitation energy per nucleon
+ for the initial fragment (30 MeV) and send highly excited
+ fragment to the de-excitation module. Code clean-up.
+
+- Radioactive Decay
+
+ - Added spontaneous fission channel: added new class G4SFDecay to handle
+ neutron and gamma generation using LLNL model. Read spontaneous fission
+ data from database, insert it into decay tables and instantiate
+ G4SFDecay.
+ - Fixed incorrect branching ratio sum for biased mode, to account for the
+ addition of N shell EC capture and spontaneous fission.
+ - G4RadioactiveDecayBase: added StreamInfo() method; updated to new
+ N shell EC; enable printout of parameters with G4VERBOSE in
+ BuildPhysicsTable().
+ - G4RadioactivationMessenger: removed obsolete "fast beta" option,
+ internal conversion option (not part of biasing) and atomic relaxation
+ option (not part of biasing). Added analogueMC option which was
+ forgotten when class was developed.
+ - G4RadioactiveDecayBaseMessenger: removed obsolete fast beta
+ option.
+ - Replaced G4ExceptionDescription in loop with simple string at
+ exception time inG4RadioactiveDecay, G4RadioactiveDecayBase and
+ G4Radioactivation.
+ - In G4RadioactiveDecay::CalculateChainsFromParent() and
+ G4Radioactivation::CalculateChainsFromParent(), fixed memory
+ leak reported by Coverity.
+ - G4RadioactiveDecay, G4RadioactiveDecayBase: make sure decay table maps
+ are cleanly deleted at the end of program. Added passing of type of
+ sub-models to secondary particles generated.
+ - G4RadioactiveDecayBase: in LoadDecayTable() added correction
+ for code which was accidentally deleted when class was created from
+ G4RadioactiveDecay. Now giving correct decay branching ratios.
+ Split off unbiased decay part of DecayIt() and make it protected method
+ called DecayAnalog(). Move dkmap to protected.
+ - G4Radioactivation: corrected bug in which AtRestDoIt() and
+ PostStepDoIt() both incorrectly were calling base class method
+ DecayIt().
+ Removed control of verbosity as already in the base class.
+ Removed G4cerr printouts from G4Radioactivation and
+ G4RadioactiveDecayBase; replaced with G4cout.
+ - Added radioactive decay mode with emission of Triton, in
+ G4RadioctiveDecay, G4RadioctiveDecayBase, and G4Radioactivation.
+
+
+
+
+Intercoms
+
+- The following UI commands now return proper return code when they are
+ not successful:
+ /control/execute, loop, foreach, shell, getEnv.
+ Addressing problem report
+ #2159.
+- Eliminated global-scope enum in G4UItokenNum.
+- Fixed cases of implicit type conversions from size_t to G4int.
+
+
+
+Interfaces
+
+- Fixed square backets around optional parameters. Addressing problem report
+ #2132.
+- Declared Win32 a GUI, i.e., it's clickable and can have buttons.
+- Fixed deprecation compilation warning on Visual Studio 2019 in G4UIWin32.
+- Fixed compilation warnings for use of deprecated features reported when
+ using Qt versions greater than 5.13.
+- Only use imported targets for X11, Xm and Wt.
+- Removed inclusion of QT_USE_FILE from CMake scripts. All usage is now
+ through the qtX_ macros and imported targets.
+- Added TiMemory support; G4UIExective will grab argc, argv
+ and customize the output directory for TiMemory.
+
+
+
+Materials
+
+- G4DensityEffectCalculator: new class, proposing alternative computation
+ of the density effect. Added possibility to enable on-the-fly computation of
+ the density effect correction using "exact" formulas (added
+ ComputeDensityEffectOnFly() method); as default the old approach
+ is used. Added to G4IonisParamMat logic for selection of density effect
+ parameterisation; if > 70% of mass of a compound corresponds to a
+ particular element, then density effect parameterisation for this element
+ is used with mass correction. Addressing problem report
+ #2121.
+- G4Material: added free electron density; use G4NistManager to instantiate
+ element in constructor with effective Z and A. Reordered class members.
+- G4SandiaTable, G4IonisParamMat: use const material pointer.
+- G4AtomicShells, G4AtomicShells_XDB_EADL: added new method
+ GetNumberOfFreeElectrons().
+- G4NistManager: fixed potential thread safety issue.
+- G4IonisParamMat: set mass limit of a single element to 90%.
+- G4IonStoppingData: fixed typo in ICRU90 material names.
+- G4UCNMicroRoughnessHelper: corrected out-of-date URL for thesis and
+ paper reference.
+- Fixed cases of implicit type conversions from size_t to G4int.
+
+
+
+Parameterisations
+
+- GFLASH:
+
+ - Added possibility to use sensitive detector from parallel world.
+
+
+
+
+Particles
+
+- G4DynamicParticle: added functionality to provide log-kinetic energy
+ value, computed only on demand if its stored value is not up-to-date
+ with the kinetic energy.
+ Changed SetMass() method, now inlined and allowing setting mass of a
+ particle to PDG value, which is needed in order to recover secondary
+ hadrons to the mass shell.
+ Code cleanup: moved data members to be private; aligned class members
+ 3-vectors, doubles, integer; added method SetPolarisation();
+ removed unused forward declarations and headers; keep formatting
+ of the class in one style, removed extra empty lines.
+- G4ShortLivedConstructor: extended method ConstructQuarks() to
+ include diquarks made of charm and/or bottom quarks. The new, heavy diquarks
+ and anti-diquarks have been defined with basic, rough properties (just
+ those currently needed by the hadronic string models): future refinements
+ are expected.
+- G4NucleiProperties: added a simplified parameterisation variant with not too
+ high mass values, to allow decaying fragments produced by some hadronic models
+ and consisting of only neutrons or protons; also light ion masses computation
+ is more thread safe after change of the order of mass computation.
+
+
+
+Persistency
+
+- ASCII:
+
+ - Fixed printout syntax in G4tgrUtils::GetDouble().
+
+- GDML:
+
+ - Added support for writing out assemblies envelopes.
+ - Improved reading of optical properties reader, by allowing reuse of
+ the same G4MaterialPropertyVector object for identical properties.
+ - G4GDMLMessenger: fix to avoid UI commands from being broadcasted to
+ worker threads.
+ - G4GDMLRead: fix to avoid double-definition of system units.
+
+
+
+
+Physics lists
+
+- Builders:
+
+ - Replaced explicit values for the energy transition region with values
+ from G4HadronicParameters, for nearly all builders.
+ Note: kept unchanged the transition region between FTFP and BERT only
+ in four cases: G4HadronPhysicsFTFP_BERT_ATL, G4HadronPhysicsINCLXX,
+ G4HadronPhysicsNuBeam and "ShieldingM".
+ - Modified G4NeutronCrossSectionXS as consequence of code cleanup in
+ lists and removal of G4Dataquestionaire.
+ - G4HyperonFTFPBuilder: replaced Chips inelastic cross-sections for
+ hyperons and anti-hyperons with Glauber-Gribov ones; in this way,
+ elastic and inelastic cross-sections follow consistently the same
+ approach.
+ - G4BertiniKaonBuilder, G4BertiniPiKBuilder: replaced Chips inelastic
+ cross-sections with Glauber-Gribov ones as default kaon cross-sections.
+ - G4FTFBinaryKaonBuilder, G4QGSBinaryKaonBuilder, G4QGSBinaryPiKBuilder,
+ G4QGSPPiKBuilder, G4QGSPKaonBuilder: removed kaon cross-sections,
+ already set by the Bertini's builder, which is always needed.
+
+- Constructors:
+
+ - decay
+
+ - G4RadioactiveDecayPhysics: replaced G4RadioactiveDecay with
+ G4RadioactiveDecayBase. This removes the biasing functionality which
+ is generally not used in the physics lists.
+
+ - electromagnetic:
+
+ - Added handling of UI thermalization model control in
+ G4EmDNAPhysics_option1,2,3,4,5,6,7,8.
+ - G4EmDNAChemistry constructors: updated to follow emdna changes.
+ - Added sub-excitation processes in G4EmDNAPhysics_option8.
+ - G4EmLivermorePhysics, G4EmPenelopePhysics,
+ G4EmStandardPhysics_option4, G4EmStandardPhysics_option3: define
+ upper energy limit for nuclear stopping via EM parameters.
+ In all DNA constructors, added ActivateDNA() flag to EM
+ parameters.
+ - G4EmLivermorePhysics, G4EmLowEPPhysics, G4EmStandardPhysics_option4:
+ use SetEmModel() instead of AddEmModel() for
+ gamma conversion.
+ Updated settings of the gamma conversion process to provide the
+ original model combinations when the low energy G4BetheHeitlerModel
+ model was replaced by the G4BetheHeitler5DModel.
+ - G4GammaGeneralProcess: fixed "Base Material" use case.
+ Use the new, optimised log-vector access method.
+ - G4EmStandardPhysics_option2, G4EmStandardPhysics_option3:
+ implemented "General Process" option for gamma.
+ - G4EmStandardPhysics_option4: use 5D model for gamma conversion.
+ - G4EmStandardPhysicsSS: in the case if Mott correction flag is TRUE,
+ apply G4eSingleCoulombScatteringModel both for e+ and e-.
+ - Added G4EmDNAChemistry_option2 constructor. Added new ELSEPA
+ elastic model for Geant4-DNA in G4EmDNAPhysics_option2.
+ - G4OpticalPhysics: set boundary process to last.
+ Addressing problem report
+ #2113.
+
+ - gamma_lepto_nuclear:
+
+ - G4EmExtraPhysics: changed transition region from the cascade to
+ string model 3 - 6 GeV, according to values in
+ G4HadronicParameters class (before the transition was
+ 3 - 3.5 GeV); added muon-neutrino nucleus interactions;
+ simplified and clean-up model creation; reduced memory leak at
+ destruction; removed extra static members and do not use extra
+ builder classes; use std::getenv().
+ - G4BertiniElectroNuclearBuilder: use std::getenv() for
+ thread safety.
+
+ - hadron_elastic:
+
+ - G4HadronElasticPhysics: use HE elastic model for the full energy
+ range; use Glauber-Gribov cross-section for hyperons.
+ - G4HadronHElasticPhysics: use Glauber-Gribov elastic cross-section
+ for anti-hyperons (instead of Chips).
+ - G4HadronDElasticPhysics: use Glauber-Gribov cross-section for
+ hyperons, d, t, He3, and He4.
+ - G4HadronElasticPhysicsXS, G4IonElasticPhysics: removed commented
+ code.
+
+ - hadron_inelastic:
+
+ - Changed the energy transition region between hadronic string and
+ intranuclear cascade models to 3 - 6 GeV (it was
+ 3 - 12 GeV for pions, kaons and nucleons; it was
+ 2 - 6 GeV for hyperons; left unchanged for anti-baryons
+ where FTFP is used for all energies), replacing explicit values
+ with those from G4HadronicParameters, in nearly all constructors.
+ Note: kept unchanged the transition region between FTFP and BERT
+ only in four cases: G4HadronPhysicsFTFP_BERT_ATL,
+ G4HadronPhysicsINCLXX, G4HadronPhysicsNuBeam and "ShieldingM".)
+ - G4HadronInelasticQBBC: use XS proton inelastic.
+ - G4HadronPhysicsFTFP_BERT_TRV: removed special treatment of hadronic
+ inelastic cross-sections of hyperons and anti-hyperons; now it is
+ the default in G4HyperonFTFPBuilder.
+ - G4HadronInelasticFTFQGSP_BERT, G4HadronInelasticQBBC: use
+ Glauber-Gribov inelastic cross-sections instead of Chips ones,
+ for hyperons and anti-hyperons.
+ - G4HadronPhysicsFTF_BIC, G4HadronPhysicsFTFP_BERT_HP,
+ G4HadronPhysicsFTFP_BERT_TRV, G4HadronPhysicsFTFQGSP_BERT,
+ G4HadronPhysicsQGS_BIC, G4HadronPhysicsQGSP_BERT,
+ G4HadronPhysicsQGSP_BERT_HP, G4HadronPhysicsQGSP_BIC,
+ G4HadronPhysicsQGSP_BIC_HP, G4HadronPhysicsQGSP_BIC_AllHP,
+ G4HadronInelasticQBBC, G4HadronPhysicsINCLXX: removed special
+ treatment of hadronic inelastic cross-sections of kaons (now
+ default).
+
+ - ions:
+
+ - G4IonPhysics, G4IonPhysicsPHP, G4IonQMDPhysics:
+ changed the transition energy region between FTFP and BIC to
+ 3 - 6 GeV (it was 2 - 4 GeV), replacing explicit
+ values with those from G4HadronicParameters.
+
+ - limiters:
+
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+ - stopping:
+
+ - Use FTFP also for the annihilation at rest of neutral anti-hadrons:
+ anti-neutron, anti-lambda, anti-sigma0 and anti-xi0. This extension is
+ is for completeness and practical convenience, although physically
+ neutral hadrons should never be completely at rest.
+ - G4StoppingPhysicsFritiofWithBinaryCascade: new class to handle the
+ nuclear capture at rest of negatively charged particles.
+ It is similar to G4StoppingPhysics, with the only difference that
+ Fritiof coupled with Binary Cascade is used instead of FTFP, for
+ anti-proton and anti-neutron annihilation at rest.
+
+
+- Lists:
+
+ - Replaced G4RadioactiveDecay with G4RadioactiveDecayBase in LBE list.
+ - FTF_BIC, QGS_BIC: use the newly introduced stopping physics constructor
+ G4StoppingPhysicsFritiofWithBinaryCascade (instead of the default
+ G4StoppingPhysics).
+ - Shielding: replacing explicit values for the energy transition region
+ with values from G4HadronicParameters.
+ - Code clean-up: removed template mechanism (except for
+ G4GenericPhysicsList, G4PhysListStamper and INCLXXPhysicsListHelper);
+ deleted copy-constructor and assignment operator; for empty destructors,
+ use =default; moved include/x.icc to src/x.cc for lists without
+ template; removed SetCuts() implementation where not
+ specialised; removed version number from lists; removed
+ G4DataQuestionaire.
+ - FTFP_BERT_HP, QGSP_BERT_HP, INCLXXPhysicsListHelper: consistently added
+ RadioactiveDecay to all physics lists which use NeutronHP; the rationale
+ is that precision is more valuable than speed for these physics lists.
+ Note: the other physics lists which use NeutronHP - such as Shielding,
+ QGSP_BIC_HP, QGSP_BIC_AllHP, and LBE - had already RadioactiveDecay
+ activated.
+
+- Util:
+
+ - Removed G4DataQuestionaire class.
+
+
+
+
+Run
+
+- Introduced use of G4ScoringRealWorld to allow to define command-based
+ scorers to a logical volume in the mass world.
+- G4RunManager, G4RunManagerKernel: addressing cases in which the GDML parser
+ directly replaces the world volume without changing the user detector
+ construction.
+- Properly initialise luxury level for Ranlux* engines in MT mode.
+ Addressing problem report
+ #2184.
+- G4RunMessenger: properly enable /run/storeRndmStatToEvent 3
+ UI command. Addressing problem report
+ #2198.
+- Made G4PhysicsListHelper a thread local singleton. Fixed typo.
+- Fixed cases of implicit type conversions from size_t to G4int.
+- Updated scripts for TiMemory. Removed InitializeTiMemory() from
+ G4RunManager.
+
+
+
+Track & Tracking
+
+- G4Track: added forward declaration for G4VProcess.
+- Fixed implicit type conversions from size_t to G4int.
+
+
+
+Visualization
+Fixed compilation warnings on gcc-9.1.0.
+
+- Management
+
+ - Introducing cloud drawing style. New parameter candidate 'cloud' in
+ /vis/viewer/set/style.
+ Cloud drawing uses solid->GetPointOnSurface(),
+ i.e., uses kernel algorithms and by-passes polyhedral representations.
+ The solid is represented by a polymarker of dots. The default number of
+ points is 1000. This can be changed with the command
+ /vis/viewer/set/numberOfCloudPoints; the minimum number is 100.
+ Note that OpenGL has a fast algorithm for polymarker.
+ This allows us to use cloud style both as a choice or as fallback when
+ the polyhedral representation fails, for example, when BooleanProcessor
+ fails.
+ - New and improved commands:
+ /vis/viewer/centreOn: improved - it does not zoom.
+ /vis/viewer/centreAndZoomInOn: new.
+ /vis/touchable/centreOn: improved - it does not zoom.
+ /vis/touchable/centreAndZoomInOn: new.
+ /vis/touchable/extentForField and volumeForField: new.
+ /vis/scene/showExtents: new.
+ /vis/set/volumeForField: new.
+ /vis/touchable/showExtent: new.
+ - Reworked /vis/scene/add/eventID command: just writes a summary
+ at end of run; except when reviewing, kept events one by one, in which
+ case it writes run and event no for each event.
+ - Ensure /vis/drawTree works even if vis is disabled.
+ - Added copy number parameter to /vis/touchable/findPath.
+ - Implemented /vis/set/extentForField command: the default is a
+ null extent, which is to be interpreted by the field model as the whole
+ extent of the current scene. Otherwise, with this command, one can
+ limit the extent over which the field is drawn. This would help, for
+ example, if drawing over the whole scene produced so many arrows or
+ lines that it clutters the scene. Changed the default spacing:
+ the parameter nDataPointsPerHalfExtent is changed from 10 to 3,
+ so as not to clutter the scene. See guidance of
+ /vis/scene/add/*Field commands for further explanation.
+ - Provide ability to draw electric fields, and eventually any other
+ field. Added /vis/scene/add/electricField by analogy to existing
+ .../magneticField.
+ - Refactor MagneticFieldModel class with new base to handle all kinds of
+ vector fields; existing, and new ElectricFieldModel only have to
+ implement a simple function to get the field vector at a location.
+ - Include parameterised volumes in overlap checking and visualisation
+ in G4LogicalVolumeModel (in addition to ordinary placements).
+ - Add G4TessellatedSolid to list of solids that may be specially treated.
+ - Introduced /vis/viewer/centreOn and
+ /vis/touchable/centreOn UI commands.
+ This allows one to centre the view (zoom in) on a volume.
+ Reset with /vis/viewer/reset.
+ - Rationalised view interpolation; encapsulate algorithm into base class
+ G4VVisCommand, so that commands /vis/viewer/interpolate,
+ /vis/viewer/centreOn and /vis/touchable/centerOn
+ now use this.
+ Might consider use by all view changing commands.
+ - Clear if scene contains no run duration models (e.g., after geometry
+ has changed).
+ - Augment G4VUserVisAction.
+ - G4VSceneHandler: added namespace scope to MeshScoreMap.
+ - Fixed bug in /vis/viewer/set/sectionPlane.
+ - Corrected few typos in printout/comments.
+ - Improved guidance for /vis/scene/add/volume.
+ - Minor improvements to visualization manager.
+ - Fixed Boolean operators to return G4bool.
+ - Several small improvements and fixes.
+ - Replaced use of std::experimental::filesystem with
+ std::filesystem for
+ WIN32 target in G4VisCommandsViewer. Forcing C++17 default builds on
+ Windows and allow for porting on Visual Studio 2019.
+ - Fixed Coverity defects.
+
+- Modeling:
+
+ - Introduced G4BoundingExtentScene. This allows one to accumulate extents
+ using the newly introduced G4VisExtent::Transform() and is a
+ better way of determining the overall extent of a scene (or of any set
+ of extents) than by the bounding sphere approach.
+ - G4VFieldModel, G4ElectricFieldModel, G4MagneticFieldModel: new
+ abstraction for field models.
+ - Arrows and field models: introduced further protection.
+ - G4VModel: introduced GetTransformedExtent() method.
+ - G4PhysicalVolumeModel: use G4BoundingExtentScene instead of
+ G4BoundingSphereScene. Fixed bug whereby the local extent was
+ incorrectly calculated.
+ - G4CallbackModel: include modeling parameters in passed arguments.
+ - Fixed bug in /vis/viewer/set/sectionPlane.
+ - Fixed setLineVisible() in /vis/modeling.
+ - Added volume count (but commented out printing).
+ - Fixed cases of implicit type conversions from size_t to G4int.
+
+- OpenGL
+
+ - Improved X window opening.
+ - Removed default font size.
+ - Force double buffer context for OGLIX.
+ - Force kernel visit on change of number of cloud points.
+ - Avoid re-using display lists for markers. They may have their own
+ position relative to the overall object transformation.
+ - Extended glFlush scaling to all circumstances.
+ - Refine DisplayListLimit command guidance and output.
+ - Rationalise headers inclusion in G4OpenGLQtViewer.
+ - Fixed compilation warnings for use of deprecated features reported when
+ using Qt versions greater than 5.13.
+ - Only link to imported targets for Motif and X11
+ Removed inclusion of QT_USE_FILE from CMake scripts.
+ All usage is now through the qtX_ macros and imported targets.
+
+- OpenInventor
+
+ - Test number of cloud points for kernel visit.
+ - Added missing protection on G4VIS_BUILD_OIX_DRIVER.
+ - Fixed compilation warning from gcc-9.1 in SoCounterAction for setting
+ of name, apparently not allowed in OpenInventor.
+ - Corrected few typos in printout/comments.
+ - Removed inclusion of QT_USE_FILE from CMake scripts.
+ All usage is now through the qtX_ macros and imported targets.
+
+- Raytracer
+
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Link to X11 imported targets when building X11 driver.
+
+- Tree
+
+ - Fixed typo in output message.
+
+- XXX
+
+ - Force kernel visit on change of number of cloud points.
+
+- Externals
+
+ - Updated gl2ps sub-module to version 1.4.0.
+ - Only link to imported targets for OpenGL; explicitly link to global
+ modules to use/propagate usage requirements.
+
+
+
+
+Environments
+
+- G4Py:
+
+ - Updated interfaces for release 10.6.
+ - g4pym boost_python library name can be specified in cmake.
+ Addressing problem report
+ #2059.
+
+
+
+
+Data sets
+
+- New low-energy data set version, G4EMLOW-7.9:
+
+ - Added ELSEPA elastic model for Geant4-DNA.
+
+- New data set version G4PhotonEvaporation-5.5 for nuclear de-excitation
+ data:
+
+ - Fixed z85.a217 file (217At).
+
+- New data set version for radioactive-decay processes,
+ G4RadioactiveDecay-5.4:
+
+ - Updated z2.a8, z3.a8, and z4.a8 and add z4.a9 for 9Li and 8He decays.
+ - Corrected capture data for I-1125.
+ - Updated Er-169(z68.a169) according to DDEP.
+ - Added firstForbidden flags to Tb-161 (z65.a161).
+ - Added M-shell and N-shell capture to Sc-44 (z21.a44).
+
+- New data files for evaluated cross-sections G4PARTICLEXS-2.1:
+
+ - Added data for neutrino.
+ - Updated cross-sections for low Z targets at low energy.
+ - Regenerated n, p, d, t, He3, He4, gamma data, providing smoother
+ cross-section shape.
+
+- New data set version for high-precision neutrons, G4NDL-4.6:
+
+ - New neutron cross-sections and final states obtained from JEFF-3.3
+ (previous were based mainly on ENDF/B-VII.1). Files not coming from
+ JEFF-3.3 and corresponding to previous G4NDL version are: JENDL_HE,
+ IsotopeProduction, ThermalScattering, Inelastic/Gammas, Fission/FF.
+ Information concerning the conversion process of JEFF-3.3 to the
+ G4NDL format can be found in: E.Mendoza and D.Cano-Ott, IAEA technical
+ report INDC(NDS)-0758, Vienna, 2018.
+
+
+
+
+Examples
+
+- Updated reference outputs, macros, READMEs and scripts.
+- Fixes for Doxygen documentation and coding guidelines.
+- Removed presence of G4VIS_USE and G4_UI_USE flags.
+- Avoid "using namespace std" in headers.
+- advanced
+
+ - air_shower
+
+ - brachytherapy
+
+ - Added G4VScoringMesh:: scope identifier to BrachyUserScoreWriter.
+
+ - composite_calorimeter
+
+ - Fixed cases of type conversions from size_t to G4int.
+ - Some code cleanup.
+
+ - gammaknife
+
+ - Added G4VScoringMesh:: scope identifier to GammaKnifeController.
+
+ - hadrontherapy
+
+ - Make use of endl consistent with g4cout or std::cout.
+
+ - human_phantom
+
+ - Fix in geometry of the MIRD phantom.
+
+ - nanobeam
+
+ - Include G4Types.hh header in main(), before use of
+ G4MULTITHREADED.
+
+ - STCyclotron
+
+ - New example modelling a solid target of a cyclotron to study the
+ production of the radioisotope of interest for proton irradiation.
+
+ - underground_physics
+
+ - DMXPhysicsList: added Glauber-Gribov cross-section for all elastic
+ processes. Clean-up both EM, hadronic and radioactive decay.
+
+
+- basic
+
+ - B1
+
+ - Use default MixMax random engine.
+
+ - B2
+
+ - Use default MixMax random engine.
+
+ - B3
+
+ - Added score ntuple writer.
+ - Use default MixMax random engine.
+
+ - B4
+
+ - Added score ntuple writer in B4d.
+ - Use default MixMax random engine.
+ - Updated B4d/run2.mac for modified score n-tuple writer UI commands.
+
+ - B5
+
+ - Use new factory method to create G4AnalysisManager.
+ - Removed B5Analysis header, no longer needed.
+ - Fixed cases of type conversions from size_t to G4int in
+ B5HodoscopeSD.
+
+
+- extended
+
+ - analysis
+
+ - Removed B3aScoreWriter, B4dScoreWriter examples. The score ntuple
+ writer is now provided with Geant4 source and demonstrated in basic
+ B3 abd B4d examples.
+
+ - biasing
+
+ - B03
+
+ - B03PhysicsList: explicitly define hadronic cross-sections.
+ Use G4NeutronInelasticXS cross-section.
+
+ - GB07
+
+ - New example illustrating how to use the leading particle
+ biasing option.
+
+ - ReverseMC01
+
+ - Updated for clean-up in analysis typedefs: G4AnaHn types
+ replaced with G4Hn.
+ - Fixed cases of type conversions from size_t to G4int.
+
+
+ - electromagnetic
+
+ - TestEm0
+
+ - PhysicsList: define options, specific for this example after
+ new EM physics is selected; cleaned-up constructor; Opt0 is
+ the default; set BuildCSDARange to true.
+
+ - TestEm1
+
+ - Added G4NIELCalculator and corresponding histograms and
+ printouts; general clean-up of the code; use default random
+ number generator.
+ - PhysicsList: disabled GeneralProcess for EM physics.
+ Added BuildCSDARange() and set option3 as default.
+ Cleanup in initialisation.
+
+ - TestEm5
+
+ - StackinAction: fixed log histograms, which where filled in
+ a wrong way.
+ - PhysListEm19DStandard: use 3-gamma annihilation model.
+
+ - TestEm7
+
+ - Fixed compilation on Windows for unused exception object
+ in G4NativeScreenedCoulombCrossSection::LoadData().
+
+ - TestEm13, TestEm14
+
+ - Updated PhysListEmStandard, Livermore and Penelope to return
+ back to register only post step part of the processes.
+
+ - TestEm15
+
+ - SteppingAction: do not fill hist #11,#12 when no recoil
+ returned.
+ - SteppingAction, PhysList5DStandard: added
+ G4GammaConversionToMuons process.
+
+ - TestEm16
+
+ - PhysicsList: use G4DecayPhysics and drop G4AutoDelete.
+ - Migrated to use default MixMax generator.
+
+ - TestEm17
+
+ - Updated for clean-up in analysis typedefs: G4AnaHn
+ types replaced with G4Hn.
+ - HistoManager: fixed histo title and index; fixed macro files.
+ - Code clean-up; switch to MixMax random generator.
+
+
+ - eventgenerator
+
+ - Removed GunGPS example as obsolete.
+
+ - exoticphysics
+
+ - monopole
+
+ - Use G4Threading::IsMultithreadedApplication() instead of
+ G4MULTITHREADED flag; this fixes compilation of code when used
+ in sequential application built against Geant4 libraries built
+ with MT.
+
+ - ucn
+
+ - Enabled use of Gravity in physics list.
+
+
+ - field
+
+ - field04
+
+ - Removed useless double-definition of copy-ctr for
+ F04StepMax and deleted.
+
+ - field06
+
+ - Adjusted to changes in G4Transportation (need to inform
+ of use of gravity) and corrected creation of G4ChordFinder.
+
+
+ - hadronic
+
+ - Hadr00
+
+ - Cleaned-up macro files.
+
+ - Hadr01
+
+ - HistoManager: added linear histogram for pion energy at
+ production.
+ - DetectorConstruction: added "Battery" material and new macro
+ test_battery.in. Addressing problem report
+ #2175.
+
+ - Hadr02
+
+ - G4CRMCModel: some improvements (e.g. considered the
+ energy-per-nucleon, instead of the whole projectile, in the
+ case of nucleus projectile) and better documentation (in the
+ form of comments in the class).
+ - HadronPhysicsCRMC_FTFP_BERT: use G4HadronicParameters for the
+ energy transition region between FTF and BERT models.
+
+ - Hadr08
+
+ - New example showing how to use the "generic biasing" feature
+ for setting different hadronic physics models according to
+ detector regions.
+
+
+ - medical/DICOM
+
+ - Defaulted copy-ctr in DicomPhantomZSliceHeader, to fix deprecation
+ compilation warnings on gcc-9.1.
+ - Correct DicomHandler singleton for use on Windows.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Some minor code cleanup.
+
+ - medical/DICOM2
+
+ - Use updated DicomHandler singleton to fix crash on Windows.
+ - Fixed cases of implicit type conversions from size_t to G4int.
+ - Include G4Types.hh header in main(), before use of
+ G4MULTITHREADED.
+
+ - medical/dna
+
+ - chem2, chem3:
+
+ - Clean-up of TimeStepAction.
+
+ - chem4:
+
+ - Added UI commands for one step thermalization model selection
+ in macro beam.in.
+ - Make Species alias of const G4MolecularConfiguration.
+ - Create the analysis manager via the new factory function.
+
+ - chem5:
+
+ - Make Species alias of const G4MolecularConfiguration.
+ - Removed unused inclusion of g4analysis_defs header from
+ ScoreSpecies.
+
+ - dnadamage1:
+
+ - New example showing a simple way to simulate dna direct and
+ indirect damages using Geant4-DNA physics and chemical processes
+ in a molecular DNA geometry.
+
+ - icsd:
+
+ - Reduced event statistics in icsd.mac input macro, in order to
+ reduce run-time in testing.
+
+ - microdosimetry:
+
+ - microprox:
+
+ - New example showing how to compute proximity functions in
+ liquid water using exclusively Geant4-DNA physics processes
+ and models.
+
+ - microyz:
+
+ - Added condensed history models including step size control.
+ - Added EM UI commands in microyz.in.
+ - Fixed Boolean operators to return G4bool.
+
+
+ - medical/electronScattering2
+
+ - Fixed warning about attempting to add multiple times the same
+ sensitive detector.
+ - Fixed compilation warning on Windows for unused out_of_range
+ exception object in Run::Merge().
+
+ - medical/fanoCavity, fanoCavity2
+
+ - DetectorConstruction: simplification of DefineMaterial().
+ - DetectorConstruction, DetectorMessenger: fixed usage of base
+ materials and cleanup (should fix ~1% error for Opt4 EM physics).
+ - PhysListEmStandard_option4: set RangeFactor to 0.08 (as in the
+ physics_list library). PhysListEmStandard_option3: set parameters as
+ in the physics_list library.
+
+ - optical/LXe
+
+ - LXeDetectorConstruction: removed protection against rebuilding
+ detector.
+ - LXeEventAction: commented out randomSaveEvent.
+ - Update PMT positions when changing number of PMTs.
+ - Set fewer particles in wls.mac and cerenkov.mac input macros.
+ - Use unique analysis filenames.
+
+ - optical/OpNovice
+
+ - Use G4OpticalPhysics and G4SteppingVerbose.
+ - Removed unused surface parameters.
+
+ - optical/OpNovice2
+
+ - Added surface roughness and polish commands.
+ - Recording scintillation photon creation time.
+ - Use unique analysis filenames.
+ - Updated macros.
+
+ - optical/wls
+
+ - Avoid storing random number seeds.
+ - Use G4OpticalPhysics and G4SteppingVerbose.
+
+ - parallel
+
+ - MPI
+
+ - Fixed compilation error in G4MPIextraWorker.
+ Addressing problem report
+ #2163.
+ - Fixed exMPI03, exMPI04; compilation of G4MPIscorerMerger was
+ broken after changes in scorers.
+ - Added new option rowMode for ntuple merging; changed the
+ default merging mode to the new one (column-wise with preserved
+ rows) and updated the analysis code.
+
+ - ThreadsafeScorers
+
+ - Fixed compilation warning on Windows for calling
+ TIMEMORY_AUTO_TIMER with no arguments in
+ TSPrimaryGeneratorAction::GeneratePrimaries().
+
+ - TopC
+
+ - Added info/HowToTest.txt with a short summary of the build
+ instructions.
+
+
+ - parameterisation
+
+ - gflash
+
+ - Extend GFlash examples set by moving existing 'gflash' example
+ to gflash1.
+ - Added example gflash2 with envelope in parallel world.
+ - Added example gflash3 with SD in parallel world.
+ - Added example gflasha with histogramming of shower profiles.
+ Allows comparing shower profiles from fast simulation with full
+ simulation.
+
+
+ - persistency
+
+ - gdml/G01
+
+ - Added BeamOn(0) to initialize range to energy converters
+ needed when exporting cuts per volume.
+ - Enabled overlaps checking in example.
+ - Corrected overlap in assembly.gdml sample.
+ - Corrected CMake script to install otherwise missing GDML
+ sample file.
+
+ - P01
+
+ - Fixed definition of allocator in ExP01TrackerHit.
+
+
+ - radioactivedecay
+
+ - rdecay01
+
+ - PhysicsList: replaced G4RadioactiveDecay with refactored class
+ G4Radioactivation.
+ - TrackingAction: if 'fFullChain' set kinetic energy to zero.
+ - In timeWindow command, allow t1 = 0.
+ - Documented timeWindowBiased.mac input macro.
+
+ - rdecay02
+
+ - New class BiasedRDPhysics using new G4Radioactivation process
+ with all biasing available.
+ - In PhysicsList, replaced G4RadioactiveDecayPhysics with
+ BiasedRDPhysics, also removed HP option physics lists.
+ - In Run, replaced G4RadioactiveDecay with G4Radioactivation.
+
+
+ - runandevent
+
+ - RE03
+
+ - Added G4VScoringMesh:: scope identifier to RE03UserScoreWriter.
+
+
+
+
+
+
+
+
+
diff --git a/cmake/History b/cmake/History
index 01d09ce354..9e0a882f12 100644
--- a/cmake/History
+++ b/cmake/History
@@ -30,6 +30,135 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
----------------------------------------------------------
+25th November 2019 - Ben Morgan (cmake-V10-05-29)
+- Disable configuration of Wt UI/Vis driver due to it no longer
+ compiling with recent Wt versions
+
+22nd November 2019 - Jonathan Madsen (cmake-V10-05-28)
+- Updated Geant4OptionalComponents.cmake and Geant4Config.cmake.in to support
+ the timemory find_package COMPONENTS and the INTERFACE library generation
+- Updated "TiMemory" package name to simple "timemory"
+
+20th November 2019 - Ben Morgan (cmake-V10-05-27)
+- Require MSVC 19.20 (Visual Studio 2019) or newer to support
+ std::filesystem on Windows platforms
+
+18th November 2019 - Gunter Folger (cmake-V10-05-26)
+- Switch to PhotonEvaporation 5.5
+
+16th November 2019 - Ben Morgan (cmake-V10-05-25)
+- BUGFIX: Ensure visibility of custom modules in scope of Geant4Config.
+ Custom modules must be visible during scope of Geant4Config so packages
+ such as XQuartzGL can be refound.
+
+14th November 2019 - Ben Morgan (cmake-V10-05-24)
+- BUGFIX: Ensure installation of all *Shim.cmake files
+
+13th November 2019 - Ben Morgan (cmake-V10-05-23)
+- BUGFIX: Fix typo in setup of Qt4 libraries that resulted in use of a
+ Qt5 imported target
+- BUGFIX #1663: Prepend Geant4_CXX_FLAGS[_] to CMAKE_CXX_FLAGS[_]
+ instead of overwriting
+
+12th November 2019 - Ben Morgan (cmake-V10-05-22)
+- BUGFIX: Use VECGEOM_INCLUDE_DIRS in INTERFACE_INCLUDE_DIRECTORIES for
+ the VecGeom::VecGeom imported targets. This will include required
+ externals such as VecCore and similar.
+
+7th November 2019 - Ben Morgan (cmake-V10-05-21)
+- Use target_XXX usage requirements to transport header paths and
+ links. Remove requirement to use complete include_directories chain
+ in Module sources.cmake files
+- Retain exported "Geant4_INCLUDE_DIR{S}" variables in case clients use
+ ROOT dictionary generation (which does not understand usage requirements
+ of targets until latest versions).
+- Namespace exported targets with "Geant4::" to enforce use of targets and
+ prevent accidental linkage via "-lG4name" expansion.
+- Migrate use of all external packages to use and refind exported targets,
+ with shim scripts to support CMake versions from 3.8 at build/use time.
+- Store build-time locations of used external packages in an optionally
+ installable CMake script for reuse, if present, by Geant4Config.cmake
+ in refinding packages.
+- Remove remaining -D flags set via add_definitions, moving to
+ target_compile_definitions
+
+6th November 2019 - Ben Morgan (cmake-V10-05-20)
+- Remove GEANT4_FORCE_QT4 option, deprecating Qt4 support
+- Retain fallback to finding Qt4, emitting a CMake warning that use
+ of Qt4 is deprecated.
+- Fixes GitLab Issue #23
+
+5th November 2019 - Gunter Folger (cmake-V10-05-19)
+- Switch to PhotonEvaporation 5.4 and to RadioactiveDecay 5.4
+
+31st October 2019 - Ben Morgan (cmake-V10-05-18)
+- Require MSVC 19.11.25505 (Visual Studio 2017 update 3) as
+ minimum required version to build Geant4 on Windows. Needed
+ to support use of C++17 filesystem in visualization with standard
+ selection.
+- Support compile features for this MSVC when using CMake < 3.10
+- Default C++ Standard with MSVC is now C++17
+- Remove old genwindef method of generating DLL symbol exports, as
+ min cmake version of 3.8 fully supports direct generation via target
+ properties.
+
+25th October - Ben Morgan (cmake-V10-05-17)
+- Bump minimum CMake version for build/use of Geant4 to 3.8, addressing Bug #2044
+- Update IntelCompileFeatures to support C++17 for ICC 18 and above when
+ using CMake 3.8-3.10
+
+23rd October 2019 - Gunter Folger (cmake-V10-05-16)
+- Switch to G4NDL 4.6
+
+14th October 2019 - Gunter Folger (cmake-V10-05-15)
+- Switch to G4EMLOW 7.9
+
+2nd October 2019 - Gunter Folger (cmake-V10-05-13)
+- Switch to G4EMLOW 7.8
+
+6th September 2019 - Ben Morgan (cmake-V10-05-12)
+- Templates/UseGeant4_internal.cmake: Only scope location of test executable
+ when using a generator that supports multiconfig.
+ Allows tests to be run with Ninja Generator as "ninja test"
+
+21st August 2019 - Ben Morgan (cmake-V10-05-11)
+- Modules/Geant4InterfaceOptions.cmake: set OpenGL_GL_PREFERENCE to LEGACY
+ Prevents warning on CMake >= 3.10, and keeps existing behaviour.
+
+20th August 2019 - Gunter Folger (cmake-V10-05-10)
+- Switch to G4PARTICLEXS 2.1
+
+13th August 2019 - Gabriele Cosmo (cmake-V10-05-09)
+- Modules/Geant4OptionalComponents.cmake: added ELLIPSOID, ELLIPTICALCONE and
+ ELLIPTICALTUBE flags to enable wrapping of G4Ellipsoid, G4EllipticalCone and
+ G4EllipticalTube in GEANT4_USOLIDS_SHAPES.
+ Coworks with tag geom-specific-V10-04-13.
+
+11th July 2019 - Ben Morgan (cmake-V10-05-08)
+- Fix path-with-spaces bug reported by Eleanor Murray on Discourse
+ - https://geant4-forum.web.cern.ch/t/problem-running-example-b1/451
+ - Triaged as the include paths not being quoted so that when they have
+ spaces in them, the several expansions involved mean CMake can interpret
+ the space as a list seperator (;). This causes the wrong paths to be used
+ in compiler commands
+ - Explicitly quote Geant4 header paths from creation to export and use.
+
+4th July 2019 - Ben Morgan (cmake-V10-05-07)
+- Fix logic of setting up components in Geant4Config.cmake.
+ - Set up component when:
+ - Is found (Geant4_comp_FOUND is TRUE)
+ - comp exists in Geant4_FIND_COMPONENTS
+ - Don't remove found components from Geant4_FIND_COMPONENTS
+ - Check if component is FOUND and REQUIRED as last action,
+ setting Geant4_FOUND to FALSE if a missing required component
+ is detected.
+- Fixes Bugzilla #2139
+
+3rd July 2019 - Ben Morgan (cmake-V10-05-06)
+- Do not switch off CMAKE_CXX_EXTENSIONS in Geant4Config.
+ Not required for client applications.
+- Fixes Bugzilla #2002
+
6th June 2019 - Ben Morgan (cmake-V10-05-05)
- Remove G4FPE_DEBUG from Debug build mode
- Not appropriate for basic debug and incompatible with Qt
@@ -74,12 +203,12 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
5th November 2018 - Gunter Folger (cmake-V10-04-26)
- Modules/Geant4DatasetDefinitions.cmake:
- remove entry for G4NEUTRONXS
+ remove entry for G4NEUTRONXS
2nd November 2018 - Gunter Folger (cmake-V10-04-25)
-- Modules/Geant4DatasetDefinitions.cmake:
+- Modules/Geant4DatasetDefinitions.cmake:
Add new G4PARTICLEXS data set; this replaces G4NEUTRONXS
-- fix dates of two entries below; was wrong, not even a typo
+- fix dates of two entries below; was wrong, not even a typo
29th October 2018 - Gunter Folger (cmake-V10-04-24)
- Switch to new dataset RadioactiveDecay5.3
@@ -121,7 +250,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
Skip checking sources for zlib
(.c and .h match far too many other files)
- Switch to G4EMLOW7.4
-
+
14th June 2018 - Gunter Folger (cmake-V10-04-13)
- Templates/geant4_validate_sources.cmake.in: add C sources and headers
@@ -150,12 +279,12 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
- G4BuildSettings.cmake: Allow Windows MT builds to use DLLs, but warn.
26th February 2018 - Ben Morgan (cmake-V10-04-06)
-- Geant4InstallData.cmake, Geant4CTest.cmake: Update URL for downloads
+- Geant4InstallData.cmake, Geant4CTest.cmake: Update URL for downloads
to "cern.ch/geant4-data" as the correct alias to new EOS area, seperate
from main website.
26th February 2018 - Ben Morgan (cmake-V10-04-05)
-- Geant4InstallData.cmake, Geant4CTest.cmake: Update URL for downloads
+- Geant4InstallData.cmake, Geant4CTest.cmake: Update URL for downloads
to "cern.ch/geant4" as the correct alias.
26th February 2018 - Ben Morgan (cmake-V10-04-04)
@@ -299,7 +428,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
18th July 2017 - Andrea Dotti (cmake-V10-03-27,-28)
- Modules/FindStatTest.cmake fix logic to set
STATTEST_FOUND==FALSE if GEANT4_ENABLE_TESTING==FALSE
-
+
17th July 2017 - Gabriele Cosmo (cmake-V10-03-26)
- Modules/G4ConfigureGNUMakeHelpers, Modules/Geant4InterfaceOptions.cmake:
corrected Qt setup for GNUmake builds, avoid setting QTLIBS and GLQTLIBS
@@ -325,10 +454,10 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
- Corrected exporting of external packages paths from VecGeom.
8th June 2017 - Gunter Folger (cmake-V10-03-21)
-- Modules/Geant4DatasetDefinitions.cmake: switch to G4EMLOW6.54
+- Modules/Geant4DatasetDefinitions.cmake: switch to G4EMLOW6.54
31st May 2017 - Gunter Folger (cmake-V10-03-20)
-- Modules/Geant4DatasetDefinitions.cmake: switch to RealSurface 2.1
+- Modules/Geant4DatasetDefinitions.cmake: switch to RealSurface 2.1
30th May 2017 - Gabriele Cosmo (cmake-V10-03-19)
- Modules/Geant4OptionalComponents.cmake: added VECGEOM_EXTERNAL_INCLUDES
@@ -339,7 +468,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
24th May 2017 - Gabriele Cosmo (cmake-V10-03-18)
- Modules/Geant4OptionalComponents.cmake: appended VECGEOM_DEFINITIONS
to GEANT4_USOLIDS_COMPILE_DEFINITIONS. Preparing for introducing direct
- dependency on VecGeom in G4U* wrappers, and deprecate USolids.
+ dependency on VecGeom in G4U* wrappers, and deprecate USolids.
16th May 2017 - Ben Morgan (cmake-V10-03-17)
- BUGFIX #1960: Do not set or modify DYLD_LIBRARY_PATH in basic and
@@ -353,8 +482,8 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
27th March 2017 - Gunter Folger (cmake-V10-03-14)
- fix previous tag: the download file for RealSurface re-named
- from RealSurface to G4RealSurface, making this name is consistent
- with other datafiles.
+ from RealSurface to G4RealSurface, making this name is consistent
+ with other datafiles.
23rd March 2017 - Gunter Folger (cmake-V10-03-13)
- Update RealSurface data to 2.0
@@ -371,15 +500,15 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
or generator expressions yet.
21st February 2017 - Gunter Folger (cmake-V10-03-10)
- base on tag cmake-V10-03-06, and only update History
+ base on tag cmake-V10-03-06, and only update History
and Modules/Geant4DatasetDefinitions.cmake to trunk.
- Changes to above two files committed first in trunk.
+ Changes to above two files committed first in trunk.
Then create branch cmake-V10-03-06_branch for tagging.
- switch to PhotonEvaporation 4.3.2
-21st February 2017 - Gunter Folger (cmake-V10-03-09)
- rejected: as based on previous rejected tags
+21st February 2017 - Gunter Folger (cmake-V10-03-09)
+ rejected: as based on previous rejected tags
- switch to PhotonEvaporation 4.3.2
10th February 2017 - Ben Morgan (cmake-V10-03-08)
@@ -398,7 +527,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
8th February 2017 - Ben Morgan (branch cmake-bugfix-1934)
- BUGFIX 1934
- Note that this patch should not be applied to Geant4 < 10.3 without additional
- changes to support CLHEP's imported targets in versions =< 2.3.3.0.
+ changes to support CLHEP's imported targets in versions =< 2.3.3.0.
- See the comments in Geant4OptionalComponents.cmake for details.
- Remove obsolete FindCLHEP.cmake module
- Geant4OptionalComponents.cmake: Update Internal/System CLHEP selection
@@ -430,7 +559,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
- Include G4DeveloperAPI in top levl G4CMakeMain module.
3rd February 2017 - Gunter Folger (cmake-V10-03-05)
-- switch to
+- switch to
- PhotonEvaporation 4.3.1
- RadioactiveDecay 5.1.1
@@ -527,7 +656,7 @@ add this in the documentation for the changed file as [BUGFIX #BUGNUMBER].
8th November 2016 - Gunter Folger (cmake-V10-02-31)
- switch to RadioactiveDecay5.1, PhotonEvaporation4.2, G4ENSDFSTATE2.1
-
+
3rd November 2016 - Gunter Folger (cmake-V10-02-30)
- switch to PhotonEvaporation 4.1
@@ -556,16 +685,16 @@ to Release mode only. Add -fno-math-errno and -ftree-vectorize.
6th October 2016 - Ben Morgan (cmake-V10-02-25)
- Modules/Geant4MakeRules_cxx.cmake : Add -fno-trapping-math to default
-flags of GCC/Clang compielrs to assist in auto-vectorization (recommended
-by CMS/GCC). Bump optimization level in Release mode to O3 on all supported
+flags of GCC/Clang compielrs to assist in auto-vectorization (recommended
+by CMS/GCC). Bump optimization level in Release mode to O3 on all supported
compilers.
3rd October 2016- Gunter Folger (cmake-V10-02-24)
-- switch to use G4ENSDFSTATE 2.0
+- switch to use G4ENSDFSTATE 2.0
(requires tag particles-V10-02-28)
29th September 2016 - Robert Hatcher (cmake-V10-02-23)
-- Templates/Geant4Config.cmake.in : No longer use --whole-archive for
+- Templates/Geant4Config.cmake.in : No longer use --whole-archive for
G4physicslists on static builds; this was never possible for _WIN32 and recent
physics list factory work makes this untenable on some build platforms.
@@ -579,8 +708,8 @@ physics list factory work makes this untenable on some build platforms.
- switch to G4RadioactiveDecay.5.0
22nd August 2016 - Ben Morgan (cmake-V10-02-19)
-- Templates/UseGeant4.cmake : Force core and per-mode flags to those used to
- build Geant4. When Geant4 is built with a single mode generator, default
+- Templates/UseGeant4.cmake : Force core and per-mode flags to those used to
+ build Geant4. When Geant4 is built with a single mode generator, default
CMAKE_BUILD_TYPE for the client to that used to build this install. This
guarantees matching of librayr/application optimization for most use cases.
NB: No default mode can be provided if Geant4 itself was built/installed using
@@ -600,14 +729,14 @@ physics list factory work makes this untenable on some build platforms.
9th June 2016 - Gunter Folger (cmake-V10-02-16)
- revert change in Templates/Geant4Config.cmake.in in tag cmake-V10-02-14,
- revision 97140; the coworking tags have been rejected.
+ revision 97140; the coworking tags have been rejected.
3rd June 2016 - Gunter Folger (cmake-V10-02-15)
- switch to RadioActiveDecay 4.4.1 and G4ENSDFSTATE 1.3.1, both provided by
Laurent.
25th May 2016 - Robert Hatcher (cmake-V10-02-14)
-- Templates/Geant4Config.cmake.in : No longer use --whole-archive for
+- Templates/Geant4Config.cmake.in : No longer use --whole-archive for
G4physicslists on static builds; this was never possible for _WIN32 and recent
physics list factory work makes this untenable.
@@ -636,7 +765,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
23rd May 2016 - Ben Morgan
- Modules/Geant4OptionalComponents.cmake : Allow developers to select
- subsets of solids to replace with USolids equivalents. Request from developers
+ subsets of solids to replace with USolids equivalents. Request from developers
and CMS to assist in performance evaluation. NOT INTENDED FOR USERS!
If GEANT4_USE_SOLIDS is set, use existing configuration/setup. If it is OFF,
allow setting of additional CMake options, one per shape, to enable replacement
@@ -656,8 +785,8 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
settings of CMAKE_MODULE_PATH.
19th April 2016 - Gunter Folger (cmake-V10-02-09)
-- correct Modules/genwindef/LibSymbolInfo.cpp for use with VC 64 bit compilation
-
+- correct Modules/genwindef/LibSymbolInfo.cpp for use with VC 64 bit compilation
+
29th March 2016 - Gunter Folger (cmake-V10-02-08)
- switch to RadioActiveDecay 4.4; dataset identical to 4.3.1, packaging
corrected to be a compressed tar file, 4.3.1 is plain tar
@@ -677,10 +806,10 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
23rd February 2016 - Gunter Folger (cmake-V10-02-04)
- Modules/Geant4DatasetDefinitions.cmake: Use data set G4ENSDFSTATE.1.2.1
- Note 1.2.1 is identical to 1.3, it is a patch on 1.2
+ Note 1.2.1 is identical to 1.3, it is a patch on 1.2
5th February 2016 - Gunter Folger (cmake-V10-02-03)
-- Modules/Geant4DatasetDefinitions.cmake: Use new data set G4ENSDFSTATE.1.3
+- Modules/Geant4DatasetDefinitions.cmake: Use new data set G4ENSDFSTATE.1.3
22nd January 2016 - Ben Morgan (cmake-V10-02-02)
- Modules/FindCLHEP.cmake : Restore from last version. Update regexing
@@ -691,7 +820,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
to locate CLHEP. Modify CLHEP_LIBRARIES after finding to fill this with
the imported targets instead of absolute paths.
- Modules/Geant4BuildProjectConfig.cmake : Add FindCLHEP.cmake to installed
- modules so that Geant4Config.cmake can refind CLHEP and hence the imported
+ modules so that Geant4Config.cmake can refind CLHEP and hence the imported
targets.
- Templates/Geant4Config.cmake.in : Refind CLHEP using package-mode,
using hardcoded CLHEP_ROOT_DIR if set as a hint.
@@ -699,7 +828,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
15th December 2015 - Ben Morgan (cmake-V10-02-01)
- Templates/Geant4Config.cmake.in : Use PATHS option in find_package
for CLHEP, setting it to discovered CLHEP_DIR. Required at present
- to provide a hint to builds of tests, which do not have
+ to provide a hint to builds of tests, which do not have
CMAKE_PREFIX_PATH set appropriately.
15th December 2015 - Ben Morgan (cmake-V10-02-00)
@@ -752,7 +881,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
set of compile features being set.
17th November 2015 - Ben Morgan (cmake-V10-01-38)
-- Modules/Geant4LibraryBuildOptions.cmake : To provide backward
+- Modules/Geant4LibraryBuildOptions.cmake : To provide backward
compatibility, allow GEANT4_BUILD_CXXSTD to be supplied as either
an epoch like '11' or as 'c++'. If the latter form is supplied
postprocess to remove the 'c++' so that standards can be dealt with in
@@ -779,8 +908,8 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
compile features for this compiler.
- Modules/Geant4MacroLibraryTargets.cmake : Use target_compile_features
to set the required features on all Geant4 targets.
-- Modules/Geant4BuildProjectConfig.cmake,
- Templates/Geant4Config.cmake.in, Templates/geant4-config.in: Update
+- Modules/Geant4BuildProjectConfig.cmake,
+ Templates/Geant4Config.cmake.in, Templates/geant4-config.in: Update
setting of flags and standard used to obtain information from
compile features.
@@ -789,7 +918,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
Modules/Geant4OptionalComponents.cmake.
9th November 2015 - Gunter Folger (cmake-V10-01-35)
-- Modules/Geant4DatasetDefinitions.cmake: Use new data sets
+- Modules/Geant4DatasetDefinitions.cmake: Use new data sets
PhotonEvaporation3.2 and RadioactiveDecay4.3.
2nd November 2015 - Ben Morgan (cmake-V10-01-34)
@@ -800,7 +929,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
- Modules/Geant4DatasetDefinitions.cmake: Use new data set G4EMLOW6.48
23th October 2015 - Gunter Folger (cmake-V10-01-32)
-- Modules/Geant4DatasetDefinitions.cmake: Use new data set G4ENSDFSTATE.1.2
+- Modules/Geant4DatasetDefinitions.cmake: Use new data set G4ENSDFSTATE.1.2
22nd October 2015 - Ben Morgan (cmake-V10-01-31)
- Modules/Geant4ToolchainBackwardCompatibility.cmake : Add export
@@ -809,12 +938,12 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
For the buildtree, point it to PROJECT_SOURCE_DIR/source/analysis/fonts
Treat TOOLS_FONT_PATH as a UNIX style PATH variable with normal
separators.
-- Templates/geant4-env-skeleton.in, Templates/geant4make-skeleton.in :
+- Templates/geant4-env-skeleton.in, Templates/geant4make-skeleton.in :
Add export variables for configuring TOOLS_FONT_PATH variable.
21st October 2015 - Ben Morgan (cmake-V10-01-30)
-- Modules/Geant4ConfigureConfigScript.cmake : Export value of
- GEANT4_USE_FREETYPE to geant4-config to allow this to report support
+- Modules/Geant4ConfigureConfigScript.cmake : Export value of
+ GEANT4_USE_FREETYPE to geant4-config to allow this to report support
status of freetype in G4analysis
- Templates/geant4-config.in : Add freetype feature to report status of
freetype support in G4analysis
@@ -921,7 +1050,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
13th July 2015 - Ben Morgan (cmake-V10-01-14)
- Modules/Geant4LibraryBuildOptions.cmake : Migrate output directories
for build products to use same layout as install tree. For single
- mode generators (Makefiles/Ninja), products are output to a
+ mode generators (Makefiles/Ninja), products are output to a
'BuildProducts' subdir of the main binary dir which holds bin/lib
directories as derived from requested install dirs. With multimode
generators (Xcode/VS), 'BuildProducts' holds an extra directory layer,
@@ -936,7 +1065,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
if Geant4 was configured with Qt5 support. Qt5 libraries are in
public link interface of G4interfaces and G4OpenGL whether or not it
is activated for an application, so must always be linked. Without
- refinding, dangling imported targets are left in the link interfaces
+ refinding, dangling imported targets are left in the link interfaces
of G4interfaces and G4OpenGL.
26th May 2015 - Gunter Folger (cmake-V10-01-12)
@@ -976,11 +1105,11 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
dependencies between components, and fail on REQUIRED if any requested
component or dependency is not found. Set cache variables for each requested
component library, and fill CLHEP_LIBRARIES with the requested libraries
-- Modules/Geant4OptionalComponents.cmake: Provide new advanced option
+- Modules/Geant4OptionalComponents.cmake: Provide new advanced option
GEANT4_USE_SYSTEM_CLHEP_GRANULAR, which can be set to enable use of CLHEP
- granular libraries from the system. When activated, use new FindCLHEP
- interface to search for Geant4's required components.
-- Templates/Geant4Config.cmake.in: Export and document a new variable,
+ granular libraries from the system. When activated, use new FindCLHEP
+ interface to search for Geant4's required components.
+- Templates/Geant4Config.cmake.in: Export and document a new variable,
Geant4_system_clhep_ISGRANULAR that clients can query to check whether
the system CLHEP was linked in granular mode.
- Modules/Geant4ConfigureConfigScript.cmake: Process and export system CLHEP
@@ -1022,7 +1151,7 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
- Modules/Geant4MakeRules_cxx.cmake: Add support for compiling against
c++1y standard for GNU and Clang compilers. Add support for compiling
against c++11 standard for Intel compiler.
-
+
17th December - Ben Morgan (cmake-V10-01-02)
- Modules/Geant4InterfaceOptions.cmake: BUGFIX #1683. Correct search
path for X11 libraries to ensure location of Xquartz libs on OS X.
@@ -1051,16 +1180,16 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
as this is no longer required
11th November 2014 - Gunter Folger (cmake-V10-00-34)
-- Modules/Geant4DatasetDefinitions.cmake: update md5sum
- for G4EMLOW6.21 after correction of files access permissions.
+- Modules/Geant4DatasetDefinitions.cmake: update md5sum
+ for G4EMLOW6.21 after correction of files access permissions.
10th November 2014 - Gunter Folger (cmake-V10-00-33)
- Modules/Geant4DatasetDefinitions.cmake: RadioactiveDecay4.2
- and update md5sum for G4EMLOW6.21 after correction of files
- access permissions.
+ and update md5sum for G4EMLOW6.21 after correction of files
+ access permissions.
07th November 2014 - Ben Morgan (cmake-V10-00-32)
-- Modules/Geant4OptionalComponents.cmake : BUGFIX: Failures of static
+- Modules/Geant4OptionalComponents.cmake : BUGFIX: Failures of static
builds traced to typo in USolids settings in static mode where
EXPAT_LIBRARIES was overwritten. Correct typo.
@@ -1072,9 +1201,9 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
USolids equivalents, OFF means Geant4 solids and USolids are available
- A USolids lib must ALWAYS be availble, so GEANT4_USE_SYSTEM_USOLIDS
simply switches between these.
-- Templates/Geant4Config.cmake.in : decouple GEANT4_USE_USOLIDS and
+- Templates/Geant4Config.cmake.in : decouple GEANT4_USE_USOLIDS and
GEANT4_USE_SYSTEM_USOLIDS
-- Templates/geant4-config.in : decouple GEANT4_USE_USOLIDS and
+- Templates/geant4-config.in : decouple GEANT4_USE_USOLIDS and
GEANT4_USE_SYSTEM_USOLIDS
30th October 2014 - Ben Morgan (cmake-V10-00-30)(INTERNAL)
@@ -1121,23 +1250,23 @@ using Motif/OpenInventor to avoid missing symbol errors on OS X.
20th October 2014 - Ben Morgan
- Modules/Geant4ToolchainBackwardCompatibility.cmake,
- Templates/geant4make-skeleton.in: Revert changes introduced to
+ Templates/geant4make-skeleton.in: Revert changes introduced to
support modulefiles due to uneeded variables being exported.
10th October 2014 - Andrea Dotti (cmake-V10-00-26)
- Modules/FindROOT.cmake add ROOT_BIN_DIR variable to point to the
path of root executables. Needed to use hadd application for
- physics testings (merging of output files for MT)
+ physics testings (merging of output files for MT)
08th October 2014 - Ben Morgan (cmake-V10-00-25)
-- Templates/UseGeant4.cmake : BUGFIX #1663, Append existing CMake
+- Templates/UseGeant4.cmake : BUGFIX #1663, Append existing CMake
CXX/EXE_LINKER flags to Geant4 flags when setting overall CMake flags.
This allows users to override the base set if needed, at their own
risk.
26th September 2014 - Ben Morgan (cmake-V10-00-24)
- Modules/Geant4ToolchainBackwardCompatibility.cmake,
- Templates/geant4make-skeleton.in: Revert changes introduced to
+ Templates/geant4make-skeleton.in: Revert changes introduced to
support modulefiles due to incorrect installation names of scripts.
26th August 2014 - Gunter Folger (cmake-V10-00-23)
@@ -1178,7 +1307,7 @@ lines containing '=' character).
- Modules/Geant4LibraryBuildOptions.cmake : Provide advanced option
to select thread local storage model when building multithreaded.
Default to supported initial-exec model. Addresses JIRA DEV-142.
-
+
26th May 2014 - Ben Morgan (cmake-V10-00-15)
- Modules/Geant4MakeRules_cxx.cmake : Add -DG4FPE_DEBUG to GNU/Clang
flags for Debug build mode. Added following discussion with Gunter
@@ -1228,7 +1357,7 @@ Folger to help developers diagnose FPE problems.
18th February 2014 - Ben Morgan (cmake-V10-00-05)
- Modules/Geant4ConfigureConfigScript.cmake : Export use of builtin
zlib or otherwise to geant4-config (Bugfix #1572).
-- Template/geant4-config.in : Add builtin zlib to list of features,
+- Template/geant4-config.in : Add builtin zlib to list of features,
adding G4zlib to list of libraries when used (Bugfix #1572).
- Template/geant4-config.in : Replace use of GNU awk extension 'length'
for determining number of datasets. Use return value of split function
@@ -1236,22 +1365,22 @@ Folger to help developers diagnose FPE problems.
http://hypernews.slac.stanford.edu/HyperNews/geant4/get/installconfig/1614.html
17th February 2014 - Ben Morgan (cmake-V10-00-04)
-- Templates/geant4make-skeleton.in : Add variables for
+- Templates/geant4make-skeleton.in : Add variables for
G4LIB_{BUILD,USE}_EXPAT as for ZLIB. Fixes Bug #1567
-- Modules/Geant4ToolchainBackwardCompatibility.cmake : Export
+- Modules/Geant4ToolchainBackwardCompatibility.cmake : Export
G4LIB_{BUILD,USE}_EXPAT based on value of GEANT4_USE_SYSTEM_EXPAT.
Fixes Bug #1567.
21st January 2014 - Jonathan Madsen (cmake-V10-00-03)
- Updated Modules/Geant4InterfaceOptions.cmake to include /opt/X11
paths that are now the standard places for X11 and OpenGL on Mac OSX
- as of Mavericks (OS X 10.9). Without these paths configuring CMake with
+ as of Mavericks (OS X 10.9). Without these paths configuring CMake with
GEANT4_USE_OPENGL_X11=ON fails
18th December 2013 - Gunter Folger (cmake-V10-00-02)
-- Modules/Geant4TestDriver.cmake: CTEST_TEST_TIMEOUT is empty, or
- its setting is not visible.
- Directly using environment variable CTEST_TIMEOUT finally works.
+- Modules/Geant4TestDriver.cmake: CTEST_TEST_TIMEOUT is empty, or
+ its setting is not visible.
+ Directly using environment variable CTEST_TIMEOUT finally works.
16th December 2013 - Gunter Folger (cmake-V10-00-01)
- Modules/Geant4TestDriver.cmake: fix typo introduced in previous tag
@@ -1268,7 +1397,7 @@ Folger to help developers diagnose FPE problems.
from datasets exported to the environment. This is because this dataset
should not be set in the environment by default.
- Modules/Geant4InstallData.cmake : Remove G4ENSDFSTATE dataset from
- export definitions. The ENSDF data is not intended to be used by
+ export definitions. The ENSDF data is not intended to be used by
default, and any setting of its environment variable changes the
behaviour of Geant4 (i.e. it's an active rather than passive variable).
@@ -1315,7 +1444,7 @@ Folger to help developers diagnose FPE problems.
of existence of USolids support to geant4-config.
- Templates/geant4-config.in : Add usolids as a new feature. If present,
ensure G4GEOM_USE_USOLIDS compile definition is prepended to the cflags.
-- Modules/Geant4BuildProjectConfig.cmake : Export required
+- Modules/Geant4BuildProjectConfig.cmake : Export required
G4GEOM_USE_USOLIDS to core definitions if USolids support enabled.
- Modules/Geant4OptionalComponents.cmake : Add option to enable support
for USolids classes. Marked as advanced.
@@ -1357,7 +1486,7 @@ Templates/geant4make-skeleton.in : Support export of QT4/5 variables to G ea
Modules/Geant4ToolchainBackwardCompatibility.cmake : Support export of QT 4/5 variables to Geant4Make
Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to Geant4Make
-25st October 2013 - Gunter Folger
+25st October 2013 - Gunter Folger
- switch to G4ELOW6.35
- add new NuclideTable with datafile ENSDFSTATE
@@ -1377,7 +1506,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
24rd October 2013 - Laurent Garnier
- Modules/Geant4InterfaceOptions.cmake : Add section for locating Wt
-- Modules/FindWt.cmake : New file taken form Wt sources
+- Modules/FindWt.cmake : New file taken form Wt sources
http://www.webtoolkit.eu/wt/download
23rd October 2013 - Ben Morgan (cmake-V09-06-29)
@@ -1400,7 +1529,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
multithreaded mode on a UNIX system, perform a compile test to check
that compiler supports thread local storage via availability of
"__thread". Emit a FATAL_ERROR if the compiler does not support TLS,
- reporting this and the compiler used.
+ reporting this and the compiler used.
- Templates/geant4-config.cmake.in : Implement new --check-datasets and
--install-datasets tasks. The former checks that the known datasets are
installed in the configured location, reporting status. The latter is a
@@ -1415,7 +1544,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Templates/Geant4Config.cmake.in : Expand export variable holding
list of dataset tuples. Process list to create variable holding a
list of dataset names, plus variables, one per dataset, holding the
- dataset environment variable and configured path.
+ dataset environment variable and configured path.
- Modules/Geant4ConfigureConfigScript.cmake : Call geant4_export_datasets
function before configuration of build/install tree version(s) of
geant4-config so dataset information can be exported to it
@@ -1423,7 +1552,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
function before configuration of build/install tree version(s) of
Geant4Config.cmake so dataset information can be exported to the
CMake config script.
-- Modules/Geant4InstallData.cmake : Implement new geant4_export_datasets
+- Modules/Geant4InstallData.cmake : Implement new geant4_export_datasets
function. Write list of dataset tuples to an output variable, each
tuple consisting of dataset name, envvar name and path separated by "|"
Use option argument BUILD|INSTALL to use build and install paths for
@@ -1436,14 +1565,14 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
30th August 2013 - Gunter Folger (cmake-V09-06-23)
- add FindXvfb checking if fake X server Xvfb is installed in system (/usr/bin)
needed by test202.
-
+
22nd August 2013 - Ben Morgan (cmake-V09-06-22)
- Modules/Geant4MakeRules_cxx.cmake : Check for "Apple LLVM" string
in output of regex parse of "clang++ -v" command output. If string is
found, re-parse string to extract LLVM version on which Apple LLVM is
based because this reflects the true LLVM, and hence C++ Standard
support, of the compiler. Fixes problem with being unable to change
- C++ Standard with latest Xcode reported by Gabriele Cosmo.
+ C++ Standard with latest Xcode reported by Gabriele Cosmo.
16th August 2013 - Ivana Hrivnacova (cmake-V09-06-21)
- Suppress error messages from FindAIDA module for informative options.
@@ -1454,14 +1583,14 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
23rd July 2013 - Ben Morgan (cmake-V09-06-19)
- Modules/Geant4InstallData.cmake : Remove GEANT4_INSTALL_EXAMPLES option.
- Always install example/ directory, move installation scripting into
+ Always install example/ directory, move installation scripting into
the top level CMakeLists.txt.
25th June 2013 - John Apostolakis (cmake-V09-06-18)
- Added FindTBB.cmake module for Intel Threading-Building-Blocks library.
13th June 2013 - Ben Morgan (cmake-V09-06-17)
-- Templates/geant4-config.in : BUGFIX #1477 : Correct output of
+- Templates/geant4-config.in : BUGFIX #1477 : Correct output of
--has-feature for clhep feature.
11th June 2013 - Gunter Folger (cmake-V09-06-16)
@@ -1471,10 +1600,10 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Update datasets for NDL, EMLOW, and RadioactiveDecay
11th June 2013 - Pere Mato (cmake-V09-06-14)
-- Modules/FindROOT.cmake : Minor changes for gccxml dictionary generation.
+- Modules/FindROOT.cmake : Minor changes for gccxml dictionary generation.
28th May 2013 - Ben Morgan (cmake-V09-06-13)
-- Modules/Geant4LibraryBuildOptions.cmake : Add option
+- Modules/Geant4LibraryBuildOptions.cmake : Add option
GEANT4_BUILD_TPMALLOC. It defaults to OFF, and is set to OFF if
GEANT4_BUILD_MULTITHREADED is OFF or the platform is WIN32.
When set, this adds a global compiler definition G4TPMALLOC.
@@ -1487,7 +1616,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
Dotti.
7th May 2013 - Ben Morgan (cmake-V09-06-11)
-- Modules/Geant4OptionalComponents.cmake : Set variables
+- Modules/Geant4OptionalComponents.cmake : Set variables
GEANT4_USE_BUILTIN_{CLHEP,EXPAT,ZLIB} when the builtin versions
of these packages are used. This is to assist the generation of
Geant4Config.cmake using simple expansion variables
@@ -1503,8 +1632,8 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
6th May 2013 - Gunter Folger (cmake-V09-06-10)
- modification for internal zlib:
- ZLIB_INCLUDE_DIRS: added ${PROJECT_BINARY_DIR}/source/externals/zlib to
- make generated zconf.h available; as side effect this zconf.h will be
+ ZLIB_INCLUDE_DIRS: added ${PROJECT_BINARY_DIR}/source/externals/zlib to
+ make generated zconf.h available; as side effect this zconf.h will be
installed.
22nd April 2013 - Gabriele Cosmo (cmake-V09-06-09)
@@ -1513,7 +1642,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
15th April 2013 - Ben Morgan (cmake-V09-06-08)
- Modules/Geant4MakeRules_cxx.cmake : Use -pthread flag for clang and
- gcc compilers in preference to -lpthread. Remove -lpthread from
+ gcc compilers in preference to -lpthread. Remove -lpthread from
exe linker flags as the compiler flag should get passed to this.
- Modules/Geant4LibraryBuildOptions.cmake : Remove addition of MT flags
from exe linker flags, as main CXX flags should handle this.
@@ -1529,7 +1658,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
25th March 2013 - Ben Morgan (cmake-V09-06-07)
- Modules/Geant4OptionalComponents.cmake : BUGFIX #1322 Noted that
FindZLIB in CMake < 2.8 does not set the ZLIB_INCLUDE_DIRS variable,
- so set it manually to ensure uniform behaviour in ZLIB clients.
+ so set it manually to ensure uniform behaviour in ZLIB clients.
25th March 2013 - Ben Morgan
- Modules/Geant4OptionalComponents.cmake : BUGFIX #1322 Enable option
@@ -1542,23 +1671,23 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Modules/Geant4MacroLibraryTargets.cmake : BUGFIX #1353 : Add a build
mode dependent compiler definition to the build of each Geant4 target
in the form GEANT4_DEVELOPER_ where is the uppercased
- build mode as determined from CMAKE_CONFIGURATION_TYPES or
+ build mode as determined from CMAKE_CONFIGURATION_TYPES or
CMAKE_BUILD_TYPE as appropriate for the generator.
Checked on Linux and Mac with Make/Xcode generators, tagging for testing
1st March 2013 - Ben Morgan (cmake-V09-06-05)
-- Templates/Geant4Config.cmake.in : Add 'multithreaded' component to
+- Templates/Geant4Config.cmake.in : Add 'multithreaded' component to
indicate if Geant4 was built with multithreading. If it is requested,
and the build is multithreaded, append the -DG4MULTITHREADED compile
definition to GEANT4_DEFINITIONS. Note clear this is the best option
yet, but awaits testing and example builds.
-- Modules/Geant4LibraryBuildOptions.cmake : Add option
+- Modules/Geant4LibraryBuildOptions.cmake : Add option
GEANT4_BUILD_MULTITHREADED which when ON, adds the compiler definition
-DG4MULTITHREADED globally, and appends GEANT4_MULTITHREADED_CXX_FLAGS
to CMAKE_CXX_FLAGS. Set to OFF by default as requested for testing.
- Modules/Geant4MakeRules_cxx.cmake : For GNU compiler only (which may also
apply to clang compiler with CMake 2.8.2 and earlier), set a new variable
- GEANT4_MULTITHREADED_CXX_FLAGS to hold any extra flags needed by
+ GEANT4_MULTITHREADED_CXX_FLAGS to hold any extra flags needed by
multithreaded build, but would conflict with sequential. Not clear
this separation is needed yet, but this aims for safety to allow testing
of MT builds without interfering with other work.
@@ -1575,13 +1704,13 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
out line for future reference, although MT will be optional.
11th February 2013 - Pere Mato (cmake-V09-06-01)
-- Modules/Geant4TestDriver.cmake : increased the timeout safety to 120
- seconds. This is to avoid having a timeout in a test without having
+- Modules/Geant4TestDriver.cmake : increased the timeout safety to 120
+ seconds. This is to avoid having a timeout in a test without having
the time to write the output.
18th December 2012 - Ben Morgan (cmake-V09-06-00)
- Templates/UseGeant4_internal.cmake : Tidy layout
-- Templates/UseGeant4.cmake : Tidy layout and remove obsolete
+- Templates/UseGeant4.cmake : Tidy layout and remove obsolete
geant4_collate_application_sources macro.
- Templates/Geant4ConfigVersion.cmake.in : Tidy layout
- Templates/Geant4Config.cmake.in : Tidy layout
@@ -1640,7 +1769,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
20th November 2012 - Ivana Hrivnacova (cmake-V09-05-73)
- Fixed FindHepMC.cmake (GenEvent.h file extension was missing)
-
+
16th November 2012 - Ben Morgan (cmake-V09-05-72)
- Modules/Geant4ToolchainBackwardCompatibility.cmake : Improve
description of workaround for sourcing Cshell scripts
@@ -1659,7 +1788,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
14th November 2012 - Gunter Folger (cmake-V09-05-69)
-- switch to G4NDL 4.2
+- switch to G4NDL 4.2
(excluding changes made past tag cmake-V09-05-68)
13th November 2012 - Ben Morgan
@@ -1667,13 +1796,13 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Templates/geant4-config.in : Add support for G3ToG4 library. Add
CLHEP library to link line using output from clhep-config.
Replace explicit -I@VAR@ flags with pure @VAR@ variables for
- each include path that may be filtered out if it is in the
+ each include path that may be filtered out if it is in the
compiler's default search path.
- Modules/Geant4ConfigureConfigScript.cmake : Set export variable
for existence of G3ToG4. Implement function to return list of
default search paths for GNU, Clang and Intel compilers.
Create list before configuring geant4-config, and filter out
- any header paths that we need to export but that appear in this list
+ any header paths that we need to export but that appear in this list
before creating export variables.
13th November 2012 - Ben Morgan (cmake-V09-05-68)
@@ -1772,9 +1901,9 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
31th October 2012 - Gunter Folger (cmake-V09-05-59)
-- bring settings for ABLA back in , used elsewhere, and caused
+- bring settings for ABLA back in , used elsewhere, and caused
configure to badly fail.
-
+
30th October 2012 - Gunter Folger (cmake-V09-05-58)
- Modules/Geant4InstallData.cmake: Revert to use G4EMLOW.6.32
and delete settings for ABLA, not needed per Davide M.
@@ -1807,7 +1936,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Modules/Geant4ToolchainBackwardCompatibility.cmake : Export
new G4SAIDDATA dataset to scripts.
- Modules/Geant4CTest.cmake : Add new G4SAIDDATA dataset to
- CTest environment, and remove obsolete G4ELASTICDATA and
+ CTest environment, and remove obsolete G4ELASTICDATA and
NeutronHPCrossSections environment variables.
- Templates/geant4-env-skeleton.in : Add expansion variable for
export of new G4SAIDDATA dataset.
@@ -1822,7 +1951,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Modules/Geant4InterfaceOptions.cmake: BUGFIX #1320: Add SoXt headers
to INVENTOR_INCLUDE_DIR when on UNIX, and FATAL_ERROR if SoXt not
located. Add X11 Xt library when SoXt is used on Mac OS X
-
+
9th October 2012 Pere Mato (cmake-V09-05-50)
- Modules/Geant4CTest.cmake: minor changes to avoid user traps
@@ -1862,7 +1991,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
29th August 2012 Witek Pokorski (cmake-V09-05-41)
- Adding FindHepMC module.
-28th August 2012 - Pere Mato
+28th August 2012 - Pere Mato
- Modules/Geant4MacroUtilities.cmake: Defined new macro GEANT4_ADD_UNIT_TESTS
- Modules/Geant4LibraryBuildOptions.cmake: Added new option GEANT4_BUILD_TESTS
@@ -1877,7 +2006,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
error messages so all errors go to stderr.
10th July 2012 - Ben Morgan (cmake-V09-05-36)
-- Modules/Geant4MakeRules_cxx.cmake : Add preliminary support for Clang
+- Modules/Geant4MakeRules_cxx.cmake : Add preliminary support for Clang
detection (CMake > 2.8.1)
- Modules/Geant4/LibraryBuildOptions.cmake : Add preliminary support for
Clang detection (CMake > 2.8.1)
@@ -1887,7 +2016,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
10th July 2012 - Andrea Dotti (cmake-V09-05-35)
- Modules/FindStatTest.cmake : First commit of module to find and setup
- utility program StatTest for automatic regression testing of Geant4
+ utility program StatTest for automatic regression testing of Geant4
ctest outputs
27th June 2012 - Pere Mato (cmake-V09-05-34)
@@ -1900,7 +2029,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
file name and not the full path of the executable.
22nd June 2012 - Pere Mato (cmake-V09-05-32)
-- Modules/Geant4TestDriver.cmake : adapted to create .out and .err files
+- Modules/Geant4TestDriver.cmake : adapted to create .out and .err files
with stdout and stderr each time a test is run in the current directory.
21th June 2012 - Gunter Folger (cmake-V09-05-31)
@@ -1909,7 +2038,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
21th June 2012 - Gunter Folger (cmake-V09-05-30)
- After recreating G4NDL4.1, update md5sum.
-20th June 2012 - Gunter Folger (cmake-V09-05-29)
+20th June 2012 - Gunter Folger (cmake-V09-05-29)
- Modules/Geant4InstallData.cmake: Use G4NDL 4.1
15th June 2012 - Gabriele Cosmo (cmake-V09-05-28)
@@ -1938,7 +2067,7 @@ Modules/Geant4InterfaceOptions.cmake : Support export of QT4/5 variables to
- Modules/Geant4InstallData.cmake: use G4EMLOW.6.27
1st June, 2012 - Ben Morgan (cmake-V09-05-22)
-- Modules/Geant4InstallData.cmake : Complete rewrite of data installation
+- Modules/Geant4InstallData.cmake : Complete rewrite of data installation
with support for CMake >= 2.6.4 and custom physics data install location.
Downloaded data bundles are also verified using MD5 hashes.
- Modules/Geant4ToolchainBackwardCompatibility.cmake : Location of data
@@ -1954,13 +2083,13 @@ May 30th, 2012 - Pere Mato (cmake-V09-05-20)
This is to avoid warnings of the type "warning: feupdateenv is not implemented and will always fail"
May 30th, 2012 - Pere Mato (cmake-V09-05-19)
-- Templates/UseGeant4_internal.cmake : Added new arguments WORKING_DIRECTORY and LABELS to GEANT4_ADD_TEST()
+- Templates/UseGeant4_internal.cmake : Added new arguments WORKING_DIRECTORY and LABELS to GEANT4_ADD_TEST()
This allows to assign tests to specific test slots (Nightly, Continuous, PhyscisChecks). If no label is specified it is
given the Nightly label.
May 29th, 2012 - Ben Morgan (cmake-V09-05-18)
-- Modules/Geant4ToolchainBackwardCompatibility.cmake : [BUGFIX #1268] Enable use of C-shell scripts inside other scripts.
- This follows the pattern used in ROOT's cshell scripts, which works at
+- Modules/Geant4ToolchainBackwardCompatibility.cmake : [BUGFIX #1268] Enable use of C-shell scripts inside other scripts.
+ This follows the pattern used in ROOT's cshell scripts, which works at
the cost of the user having to supply extra information to the source
command/script.
- Templates/geant4-env-skeleton.in : [BUGFIX #1268] Protect changes to the environment if self location fails.
@@ -1968,7 +2097,7 @@ May 29th, 2012 - Ben Morgan (cmake-V09-05-18)
May 9th, 2012 - Pere Mato (cmake-V09-05-17)
-- Templates/UseGeant4_internal.cmake : By default tests building anything will fail in case of warnings.
+- Templates/UseGeant4_internal.cmake : By default tests building anything will fail in case of warnings.
This is wanted by G. Folger.
May 8th, 2012 - Pere Mato (cmake-V09-05-16)
@@ -2021,7 +2150,7 @@ March 7th, 2012 - Pere Mato (cmake-V09-05-05)
March 6th, 2012 - Pere Mato (cmake-V09-05-04)
- Modules/Geant4LibraryBuildOptions.cmake : matching "icc" in addition to "icpc" to detect Intel compiler
-- Modules/Geant4MakeRules_cxx.cmake : change ICC option from -Wnon-virtual-dtor to -Wno-non-virtual-dtor
+- Modules/Geant4MakeRules_cxx.cmake : change ICC option from -Wnon-virtual-dtor to -Wno-non-virtual-dtor
February 10th, 2012 - Pere Mato (cmake-V09-05-03)
- Added function REFLEX_GENERATE_DICTIONARY() in FindROOT.cmake
@@ -2037,7 +2166,7 @@ December 6th 2011 - B.Morgan (cmake-V09-05-00)
setting of expansion variable needed to prepend path with G4WORKDIR path.
- Templates/geant4make-skeleton.in [BUGFIX #1265] : Added expansion variable for
path setup to G4WORKDIR directory for executables.
-- Templates/geant4-env-skeleton.in [BUGFIX #1265] : Added needed '@' symbol
+- Templates/geant4-env-skeleton.in [BUGFIX #1265] : Added needed '@' symbol
to end of GEANT4_TC_SHELL_PROGRAM used as shbang.
@@ -2048,7 +2177,7 @@ November 30th 2011 - B.Morgan (cmake-V09-04-41)
prevent its use for now.
November 29th 2011 - B.Morgan (cmake-V09-04-40)
-- Modules/Geant4InterfaceOptions.cmake : Added ability for Mac to concurrently
+- Modules/Geant4InterfaceOptions.cmake : Added ability for Mac to concurrently
build mixed Qt and X11 OpenGL driver. Xt library adde to X11 libraries, but
only on Mac when Xm is built. Linking Xt on Linux causes runtime errors.
- Templates Geant4Config.cmake.in : Fixed bug that prevented OpenInventor
@@ -2104,25 +2233,25 @@ November 16th 2011 - B.Morgan (cmake-V09-04-35)
use only.
November 16th 2011 - G.Folger (cmake-V09-04-34)
-- Modules/Geant4InstallData.cmake: correct data file name
+- Modules/Geant4InstallData.cmake: correct data file name
November 15th 2011 - G.Folger (cmake-V09-04-33)
- Modules/Geant4InstallData.cmake: update data libraries version for 9.5
November 8th 2011 - B.Morgan (cmake-V09-04-32)
-- Templates/Geant4Config.cmake.in [BUGFIX #1196, #1261]: Added support for
+- Templates/Geant4Config.cmake.in [BUGFIX #1196, #1261]: Added support for
G4OpenInventor as a component, named 'vis_openinventor'. Prtected inclusion of
Geant4LibraryDepends file by test on a variable Geant4_LIBDEPS_LOADED so that
multiple calls to the config file from find_package are possible. This allows
option selecting of the components. NB Full Inventor build requires tag
openinventor-V09-04-02).
-- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added support for
+- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added support for
configuration of OpenInventor environment variables in
geant4-environment-setup scripts.
- Templates/geant4-environment-skeleton.in : Added support for OpenInventor
environment variables needed by old Makefile toolchain. At present, OIVHOME is
not set, as the Geant4 public interface should not need this.
-- Modules/Geant4ConfigureConfigScript.cmake : Added support for configuration
+- Modules/Geant4ConfigureConfigScript.cmake : Added support for configuration
of OpenInventor feature.
- Templates/geant4-config.in : Added support for OpenInventor feature.
- Modules/Geant4InterfaceOptions.cmake : Added support for OpenInventor, with
@@ -2134,7 +2263,7 @@ November 8th 2011 - B.Morgan (cmake-V09-04-32)
November 4th 2011 - B.Morgan
-- Modules/Geant4ConfigureConfigScript.cmake : Added setup of installed script
+- Modules/Geant4ConfigureConfigScript.cmake : Added setup of installed script
to use self location functionality in geant4-config when installation is
relocatable.
- Templates/geant4-config.in : Added capability for script to self locate
@@ -2157,13 +2286,13 @@ November 2nd 2011 - B.Morgan (cmake-V09-04-30)
- Modules/Geant4BuildModes.cmake : Reverted file to revision 51604
(cmake-V04-04-28 tag) which removes the TestReleaseDebug mode.
- Modules/Geant4MakeRules_cxx.cmake : Reverted file to revision 52696
- (cmake-V09-04-28 tag) which removes the TestReleaseDebug mode. This reverts
- TestRelease to having platform dependent flags, specifically there is no
+ (cmake-V09-04-28 tag) which removes the TestReleaseDebug mode. This reverts
+ TestRelease to having platform dependent flags, specifically there is no
optimization on Apple.
- Modules/geant4-config.in : Fixed typo error that used incorrect name for
CMake supplied variable Geant4_VERSION, preventing correct expansion.
- Modules/Geant4ConfigureConfigScript.cmake : Tidied up indenting to standard
- two space format. Added skeleton setup for making script relocatable in
+ two space format. Added skeleton setup for making script relocatable in
the Install Tree.
@@ -2187,17 +2316,17 @@ October 10th 2011 - B.Morgan (cmake-V09-04-29)
reported. If any mismatches are found, the script will fail with FATAL_ERROR,
though it will not do so until the whole tree has been scanned to ensure all
mismatches are located. It ignores certain files that are known to cause
- mismatch detection but which are no longer part of the Geant4 CMake build.
+ mismatch detection but which are no longer part of the Geant4 CMake build.
October 6th 2011 - B.Morgan (cmake-V09-04-28)
-- Modules/Geant4BuildModes.cmake : Added TestReleaseDebug mode to
+- Modules/Geant4BuildModes.cmake : Added TestReleaseDebug mode to
CMAKE_BUILD_TYPES and CMAKE_CONFIGURATION_TYPES.
NB: Diaganosed problem reported by Pere, whereby added modes were not
appearing in VS. This is likely because CMAKE_CONFIGURATION_TYPES is set
*after* the project(...) call: http://www.itk.org/Bug/view.php?id=6788
Will fix after new modes are confirmed.
-- Modules/Geant4MakeRules_cxx.cmake : Split TestRelease mode into two,
+- Modules/Geant4MakeRules_cxx.cmake : Split TestRelease mode into two,
TestRelease, which is optimized and has debugging symbols, and
TestReleaseDebug, which has debug symbols only. Both still use
G4DEBUG_VERBOSE and G4FPE_DEBUG definitions.
@@ -2212,7 +2341,7 @@ October 4th 2011 - P. Mato (cmake-V09-04-26)
September 30th 2011 - P. Mato (cmake-V09-04-25)
- Modules/Geant4MakeRules_cxx.cmake: Fixed debug flag to -Zi for Visual C++
-- Modules/Geant4CTest.cmake: Moved from tests/CMakeLists.txt the logic to
+- Modules/Geant4CTest.cmake: Moved from tests/CMakeLists.txt the logic to
construct the GEANT_TEST_ENVIRONMENT with data file locations to be useful
for benchmarks tests.
@@ -2243,7 +2372,7 @@ September 15th 2011 - P. Mato (cmake-V09-04-21)
- Templates/UseGeant4_internal.cmake: Fixed a bug affecting tests on Windows.
August 16th 2011 - P. Mato (cmake-V09-04-20)
-- Templates/UseGeant4_internal.cmake: Added support for tests on Windows with
+- Templates/UseGeant4_internal.cmake: Added support for tests on Windows with
NMake and Visual Studio.
- Modules/Geant4TestDriver.cmake: Avoid the use of ':' as separator since is used
@@ -2267,7 +2396,7 @@ August 16th 2011 - B.Morgan (cmake-V09-04-18)
August 10th 2011 - B.Morgan (cmake-V09-04-17)
-- Modules/Geant4BuildProjectConfig.cmake : Added copy of UseGeant4_internal
+- Modules/Geant4BuildProjectConfig.cmake : Added copy of UseGeant4_internal
file to build tree, but do not install it.
- UseGeant4.cmake : Factored out internal only macros into UseGeant4_internal
@@ -2279,15 +2408,15 @@ August 10th 2011 - B.Morgan (cmake-V09-04-17)
This is done to fix a bug reported offline by Alberto Ribon, where including
UseGeant4.cmake fails due to an unfound custom CMake module. The functions
like GEANT4_ADD_TEST use extra functionality which is located in custom CMake
- modules. Whilst these modules could be installed, this adds unneeded
- complexity to the use of Geant4 and may also clash with CMake itself. Also,
+ modules. Whilst these modules could be installed, this adds unneeded
+ complexity to the use of Geant4 and may also clash with CMake itself. Also,
the functions needing the modules are not intended for use by users, so are
factored out into this build tree only module.
August 3rd 2011 - B.Morgan (cmake-V09-04-16)
- Modules/Geant4MakeRules_cxx.cmake, Modules/Geant4BuildModes.cmake :
- Moved setting of initial values for TestRelease and Maintainer mode compiler
+ Moved setting of initial values for TestRelease and Maintainer mode compiler
flags to make rules override file. Values are now set based on compiler and
platform, as G4FPE_DEBUG option should only be used for GNU compiler, and
with non-optimized code on Mac OS X (information from Gunter Folger).
@@ -2295,7 +2424,7 @@ August 3rd 2011 - B.Morgan (cmake-V09-04-16)
can be reset from the command line and within the cache interfaces if
needed.
-- Modules/Geant4BuildProjectConfig.cmake : Re-added WIN32 guard on export of
+- Modules/Geant4BuildProjectConfig.cmake : Re-added WIN32 guard on export of
the G4LIB_BUILD_DLL definition.
@@ -2304,9 +2433,9 @@ July 29th 2011 - B.Morgan (cmake-V09-04-15)
to use direct URL. Original URL redirects, which early 2.8 iterations of
CMake appear not to like.
Use .tar.gz of RadioactiveDecay as this is available and cheaper to download.
- Added use of PREFIX in ExternalProject so that all EP directories are
- created under a single 'Externals' directory. This is simply to keep the
- build tree nicely organized. The data still appear in the data/ subdirectory
+ Added use of PREFIX in ExternalProject so that all EP directories are
+ created under a single 'Externals' directory. This is simply to keep the
+ build tree nicely organized. The data still appear in the data/ subdirectory
of the build directory, so this should not affect usage by tests.
@@ -2347,15 +2476,15 @@ July 28th 2011 - B. Morgan (cmake-V09-04-14)
variable. Always added for now rather than as an optional component.
-July 27th 2011 - P. Mato
+July 27th 2011 - P. Mato
- Added the downloading and installation of Geant4 Data files if the option
GEANT4_INSTALL_DATA is set. Modified Modules/Geant4InstallData.cmake
- Initial version of CPack configuration for binaries.
Modified Modules/Geant4CPackBase.cmake and added Templates/CMakeCPackOptions.cmake.in,
- Templates/g4_small.gif
+ Templates/g4_small.gif
- Initial set of files needed for testing with CTest.
Added Modules/FindROOT.cmake, Modules/Geant, Geant4TestDriver.cmake
- Added options GEANT4_ENABLE_TESTING, GEANT4_BUILD_EXAMPLES in
+ Added options GEANT4_ENABLE_TESTING, GEANT4_BUILD_EXAMPLES in
Modules/Geant4LibraryBuildOptions.cmake
Inherit CMAKE_MODULE_PATH in tests. Modified Modules/Geant4BuildProjectConfig.cmake,
Templates/Geant4Config.cmake.in
@@ -2365,9 +2494,9 @@ July 27th 2011 - P. Mato
July 5th 2011 - G.Folger (cmake-V09-04-13)
- Modules/{Geant4LibraryBuildOptions,Geant4BuildProjectConfig}.cmake:
protect setting of G4LIB_BUILD_DLL to happen on WIN32 only.
- (Affected examples/.../olap, which was built without this flag,
+ (Affected examples/.../olap, which was built without this flag,
and failed to link)
-
+
July 5th 2011 - B. Morgan (cmake-V09-04-12)
- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added support for
setting GDML/Xerces variables as needed.
@@ -2408,7 +2537,7 @@ June 23rd 2011 - B.Morgan (cmake-V09-04-09)
June 22nd 2011 - B.Morgan (cmake-V09-04-08)
- INSTALL.g4cmake : Finalized with description of using the three toolchains
- to build Geant4 applications.
+ to build Geant4 applications.
- Modules/Geant4ConfigureConfigScript.cmake : Updated with patch from Pere
Mato Vila to export use of internal CLHEP to script when used. Also upgraded
to export details on Motif. Script is now generated for both the build and
@@ -2513,7 +2642,7 @@ June 17th 2011 - B.Morgan (cmake-V09-04-03)
Full support also requires tags:
interfaces-V09-04-03
opengl-V09-04-05
-
+
- Modules/Geant4InterfaceOptions.cmake : Rewritten to enable correct switch
between Qt and X11 based GUIs on Mac, with consistent changes in OpenGL
location. Added in find_package for Motif. Added full option and find_package
@@ -2544,7 +2673,7 @@ June 15th 2011 - B.Morgan
- Modules/Geant4InterfaceOptions.cmake : Added in option for enabling Xm (Motif)
support with find_package for Motif headers/libraries.
Use of Qt and X11 OpenGL have been made mutually exclusive on Mac OS X to
- prevent clashes between Framework OpenGL and X11 OpenGL.
+ prevent clashes between Framework OpenGL and X11 OpenGL.
Added new stub option to build OpenInventor driver
TODO: Add FindInventor module, check build of OpenInventor category.
Added new stub option to build Win32 OpenGL driver.
@@ -2561,7 +2690,7 @@ June 15th 2011 - B.Morgan (cmake-V09-04-01)
the 'optimized' etc library link keywords. By default, FindQt4 will use
these keywords...
KNOWNISSUE: Using imported targets means that the Geant4Config.cmake file
- must regenerate these targets otherwise the link will fail.
+ must regenerate these targets otherwise the link will fail.
June 14th 2011 - B.Morgan
- Modules/Geant4MacroLibraryTargets.cmake : Added build of DLL targets on
@@ -2584,14 +2713,14 @@ June 14th 2011 - B.Morgan
for CLHEP, Expat, ZLIB, GDML, G3TOG4 from top level CMakeLists.txt to
help with modularization.
- Modules/Geant4LibraryBuildOptions.cmake : NEW FILE : Refactoring of library
- build options from top level CMakeLists.txt, including global define flags,
+ build options from top level CMakeLists.txt, including global define flags,
global vs granular library format and static vs shared builds.
- Modules/Geant4MacroLibraryTargets.cmake : Ensure that when static targets
are built, they are linked to Geant4 static targets.
TODO: Do we want to make this the case also for external libraries (very
difficult?)?
KNOWNISSUE: G4global will always be linked to shared G4clhep if latter is
- built as will G4processes to shared G4expat. Not critical (well, shouldn't
+ built as will G4processes to shared G4expat. Not critical (well, shouldn't
affect running or applications).
June 13th 2011 - B.Morgan
@@ -2614,21 +2743,21 @@ June 10th 2011 - B.Morgan
- Modules/Geant4MacroLibraryTargets.cmake : Added support for install of
libraries and headers to new install paths defined by Geant4InstallDirs.
Added EXPORT to library targets so that they can be used by Geant4Config
- scripts.
+ scripts.
Added proper COMPONENT argument to install commands to correctly partition
targets needed for Development and for Runtime.
Appended each library target and include paths to global
properties so these can be exported to Geant4Config file easily for use
- from the build tree.
+ from the build tree.
- Templates/Geant4Config.cmake.in : NEW FILE : Template versioning file
for use by Geant4Config.cmake.
- Templates/Geant4Config.cmake.in : NEW FILE : Template files for CMake
config script for Geant4. VERY PRELIMINARY.
- Modules/Geant4BuildProjectConfig.in : NEW FILE : Builds CMake Config scripts
to allow external projects to use Geant4 from a build or install tree.
-- Modules/Geant4InstallDirs.cmake : NEW FILE : Adds a standard set of
+- Modules/Geant4InstallDirs.cmake : NEW FILE : Adds a standard set of
installation location based on the GNU set. Adapted from GNUInstallDirs
- provided with CMake 2.8, but cut down to only use directories needed by
+ provided with CMake 2.8, but cut down to only use directories needed by
Geant4.
- Modules/CMakeUninstallTarget.cmake : NEW FILE : Adds an 'uninstall' target
to remove all items installed via the install command.
@@ -2647,7 +2776,7 @@ May 25th 2011 - B.Morgan
- Templates/geant4-env.csh.in : Added variable setting for OpenGL X11
- Templates/geant4-config.in : Added needed reporting and flags setting for
OpenGL X11 support.
-- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added setting of
+- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added setting of
variable needed to export the existence of OpenGL X11 in the geant4-env
scripts.
- Modules/Geant4ConfigureConfigScript.cmake : Added setting of variables
@@ -2660,7 +2789,7 @@ May 24th 2011 - B.Morgan (cmake-V09-04-00)
- Templates/geant4-env.csh.in : Added variable setting for RayTracerX
- Templates/geant4-config.in : Added needed reporting and flags setting for
RayTracerX support.
-- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added setting of
+- Modules/Geant4ToolchainBackwardCompatibility.cmake : Added setting of
variable needed to export the existence of RayTracerX in the geant4-env
scripts.
- Modules/Geant4ConfigureConfigScript.cmake : Added setting of variables
diff --git a/cmake/Modules/FindWt.cmake b/cmake/Modules/FindWt.cmake
index 6baf0e1448..670b6b8667 100644
--- a/cmake/Modules/FindWt.cmake
+++ b/cmake/Modules/FindWt.cmake
@@ -44,113 +44,101 @@
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+find_path(Wt_INCLUDE_DIR NAMES Wt/WObject PATHS ENV PATH PATH_SUFFIXES include wt )
+
+include(SelectLibraryConfigurations)
+
+find_library( Wt_LIBRARY_RELEASE NAMES wt PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_LIBRARY_DEBUG NAMES wtd PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt)
+
+find_library( Wt_EXT_LIBRARY_RELEASE NAMES wtext PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_EXT_LIBRARY_DEBUG NAMES wtextd PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_EXT)
+
+find_library( Wt_HTTP_LIBRARY_RELEASE NAMES wthttp PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_HTTP_LIBRARY_DEBUG NAMES wthttpd PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_HTTP)
+
+find_library( Wt_FCGI_LIBRARY_RELEASE NAMES wtfcgi PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_FCGI_LIBRARY_DEBUG NAMES wtfcgid PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_FCGI)
+
+find_library( Wt_DBO_LIBRARY_RELEASE NAMES wtdbo PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_DBO_LIBRARY_DEBUG NAMES wtdbod PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_DBO)
+
+find_library( Wt_DBOSQLITE3_LIBRARY_RELEASE NAMES wtdbosqlite3 PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_DBOSQLITE3_LIBRARY_DEBUG NAMES wtdbosqlite3d PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_DBOSQLITE3)
+
+find_library( Wt_DBOPOSTGRES_LIBRARY_RELEASE NAMES wtdbopostgres PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+find_library( Wt_DBOPOSTGRES_LIBRARY_DEBUG NAMES wtdbopostgresd PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+select_library_configurations(Wt_DBOPOSTGRES)
+
+# Need at least Boost signals...
+find_package(Boost REQUIRED signals)
+
include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Wt REQUIRED_VARS Wt_INCLUDE_DIR Wt_LIBRARY)
-FIND_PATH( Wt_INCLUDE_DIR NAMES Wt/WObject PATHS ENV PATH PATH_SUFFIXES include wt )
+# - Create imported targets as needed by Geant4
+if(Wt_FOUND)
+ # Main library
+ if(NOT TARGET Wt::Wt)
+ add_library(Wt::Wt UNKNOWN IMPORTED)
+ set_target_properties(Wt::Wt PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${Wt_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES "Boost::signals;Boost::headers")
-SET( Wt_FIND_COMPONENTS Release Debug )
+ if(Wt_LIBRARY_RELEASE)
+ set_property(TARGET Wt::Wt APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(Wt::Wt PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${Wt_LIBRARY_RELEASE}")
+ endif()
-IF( Wt_INCLUDE_DIR )
- FIND_LIBRARY( Wt_LIBRARY NAMES wt PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_EXT_LIBRARY NAMES wtext PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_HTTP_LIBRARY NAMES wthttp PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_FCGI_LIBRARY NAMES wtfcgi PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_DBO_LIBRARY NAMES wtdbo PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_DBOSQLITE3_LIBRARY NAMES wtdbosqlite3 PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
- FIND_LIBRARY( Wt_DBOPOSTGRES_LIBRARY NAMES wtdbopostgres PATHS PATH PATH_SUFFIXES lib lib-release lib_release )
+ if(Wt_LIBRARY_DEBUG)
+ set_property(TARGET Wt::Wt APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(Wt::Wt PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${Wt_LIBRARY_DEBUG}")
+ endif()
- FIND_LIBRARY( Wt_DEBUG_LIBRARY NAMES wtd wt PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_EXT_DEBUG_LIBRARY NAMES wtextd wtext PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_HTTP_DEBUG_LIBRARY NAMES wthttpd wthttp PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_FCGI_DEBUG_LIBRARY NAMES wtfcgid wtfcgi PATHS PATH PATH_SUFFIXES lib libd lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_DBO_DEBUG_LIBRARY NAMES wtdbod wtdbo PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_DBOSQLITE3_DEBUG_LIBRARY NAMES wtdbosqlite3d wtdbosqlite3 PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
- FIND_LIBRARY( Wt_DBOPOSTGRES_DEBUG_LIBRARY NAMES wtdbopostgresd wtdbopostgres PATHS PATH PATH_SUFFIXES lib lib-debug lib_debug HINTS /usr/lib/debug/usr/lib)
+ if(NOT Wt_LIBRARY_RELEASE AND NOT Wt_LIBRARY_DEBUG)
+ set_property(TARGET Wt::Wt APPEND PROPERTY
+ IMPORTED_LOCATION "${Wt_LIBRARY}")
+ endif()
+ endif()
- IF( Wt_LIBRARY )
- IF( Wt_HTTP_LIBRARY )
- SET( Wt_FOUND TRUE )
- SET( Wt_FIND_REQUIRED_Release TRUE )
- SET( Wt_LIBRARIES ${Wt_HTTP_LIBRARY} ${Wt_LIBRARY} )
- IF( Wt_FCGI_LIBRARY )
- SET( Wt_LIBRARIES ${Wt_LIBRARIES} ${Wt_FCGI_LIBRARY} )
- ENDIF( Wt_FCGI_LIBRARY )
- ELSE( Wt_HTTP_LIBRARY )
- IF( Wt_FCGI_LIBRARY )
- SET( Wt_FOUND TRUE )
- SET( Wt_FIND_REQUIRED_Release TRUE )
- SET( Wt_LIBRARIES ${Wt_FCGI_LIBRARY} ${Wt_LIBRARY} )
- ENDIF( Wt_FCGI_LIBRARY )
- ENDIF( Wt_HTTP_LIBRARY )
- ENDIF( Wt_LIBRARY )
+ # Components
+ foreach(__wt_target HTTP)
+ if(NOT TARGET Wt::${__wt_target})
+ add_library(Wt::${__wt_target} UNKNOWN IMPORTED)
+ set_target_properties(Wt::${__wt_target} PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${Wt_INCLUDE_DIR}")
- IF( Wt_EXT_LIBRARY )
- SET( Wt_LIBRARIES ${Wt_LIBRARIES} ${Wt_EXT_LIBRARY} )
- ENDIF( Wt_EXT_LIBRARY )
+ if(Wt_${__wt_target}_LIBRARY_RELEASE)
+ set_property(TARGET Wt::${__wt_target} APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(Wt::${__wt_target} PROPERTIES
+ IMPORTED_LOCATION_RELEASE "${Wt_${__wt_target}_LIBRARY_RELEASE}")
+ endif()
- IF( Wt_DBO_LIBRARY )
- SET( Wt_LIBRARIES ${Wt_LIBRARIES} ${Wt_DBO_LIBRARY} )
- IF( Wt_DBOSQLITE3_LIBRARY )
- SET( Wt_LIBRARIES ${Wt_LIBRARIES} ${Wt_DBOSQLITE3_LIBRARY} )
- ENDIF( Wt_DBOSQLITE3_LIBRARY )
- IF( Wt_DBOPOSTGRES_LIBRARY )
- SET( Wt_LIBRARIES ${Wt_LIBRARIES} ${Wt_DBOPOSTGRES_LIBRARY} )
- ENDIF( Wt_DBOPOSTGRES_LIBRARY )
- ENDIF( Wt_DBO_LIBRARY )
+ if(Wt_${__wt_target}_LIBRARY_DEBUG)
+ set_property(TARGET Wt::${__wt_target} APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(Wt::${__wt_target} PROPERTIES
+ IMPORTED_LOCATION_DEBUG "${Wt_${__wt_target}_LIBRARY_DEBUG}")
+ endif()
- IF( Wt_DEBUG_LIBRARY )
- IF ( Wt_HTTP_DEBUG_LIBRARY)
- SET( Wt_DEBUG_FOUND TRUE )
- SET( Wt_FIND_REQUIRED_Debug TRUE )
- SET( Wt_DEBUG_LIBRARIES ${Wt_HTTP_DEBUG_LIBRARY} ${Wt_DEBUG_LIBRARY} )
-
- IF( Wt_FCGI_DEBUG_LIBRARY )
- SET( Wt_DEBUG_LIBRARIES ${Wt_DEBUG_LIBRARIES} ${Wt_FCGI_DEBUG_LIBRARY} )
- ENDIF( Wt_FCGI_DEBUG_LIBRARY )
- ELSE( Wt_HTTP_DEBUG_LIBRARY )
- IF( Wt_FCGI_DEBUG_LIBRARY )
- SET( Wt_DEBUG_FOUND TRUE )
- SET( Wt_FIND_REQUIRED_Debug TRUE )
- SET( Wt_DEBUG_LIBRARIES ${Wt_FCGI_DEBUG_LIBRARY} ${Wt_DEBUG_LIBRARY} )
- ENDIF( Wt_FCGI_DEBUG_LIBRARY )
- ENDIF( Wt_HTTP_DEBUG_LIBRARY)
- ENDIF( Wt_DEBUG_LIBRARY )
-
- IF( Wt_DBO_DEBUG_LIBRARY )
- SET( Wt_DEBUG_LIBRARIES ${Wt_DEBUG_LIBRARIES} ${Wt_DBO_DEBUG_LIBRARY} )
- IF( Wt_DBOSQLITE3_DEBUG_LIBRARY )
- SET( Wt_DEBUG_LIBRARIES ${Wt_DEBUG_LIBRARIES} ${Wt_DBOSQLITE3_DEBUG_LIBRARY} )
- ENDIF( Wt_DBOSQLITE3_DEBUG_LIBRARY )
- IF( Wt_DBOPOSTGRES_DEBUG_LIBRARY )
- SET( Wt_DEBUG_LIBRARIES ${Wt_DEBUG_LIBRARIES} ${Wt_DBOPOSTGRES_DEBUG_LIBRARY} )
- ENDIF( Wt_DBOPOSTGRES_DEBUG_LIBRARY )
- ENDIF( Wt_DBO_DEBUG_LIBRARY )
-
- IF(Wt_FOUND)
- IF (NOT Wt_FIND_QUIETLY)
- MESSAGE(STATUS "Found the Wt libraries at ${Wt_LIBRARIES}")
- MESSAGE(STATUS "Found the Wt headers at ${Wt_INCLUDE_DIR}")
- ENDIF (NOT Wt_FIND_QUIETLY)
- ELSE(Wt_FOUND)
- IF(Wt_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could NOT find Wt")
- ENDIF(Wt_FIND_REQUIRED)
- ENDIF(Wt_FOUND)
-
- IF(Wt_DEBUG_FOUND)
- IF (NOT Wt_FIND_QUIETLY)
- MESSAGE(STATUS "Found the Wt debug libraries at ${Wt_DEBUG_LIBRARIES}")
- MESSAGE(STATUS "Found the Wt debug headers at ${Wt_INCLUDE_DIR}")
- ENDIF (NOT Wt_FIND_QUIETLY)
- ELSE(Wt_DEBUG_FOUND)
- IF(Wt_FIND_REQUIRED_Debug)
- MESSAGE(FATAL_ERROR "Could NOT find Wt debug libraries")
- ENDIF(Wt_FIND_REQUIRED_Debug)
- ENDIF(Wt_DEBUG_FOUND)
-
-ENDIF( Wt_INCLUDE_DIR )
-
-find_package_handle_standard_args(Wt DEFAULT_MSG Wt_INCLUDE_DIR Wt_LIBRARY)
-set(Wt_FOUND ${WT_FOUND})
+ if(NOT Wt_${__wt_target}_LIBRARY_RELEASE AND NOT Wt_${__wt_target}_LIBRARY_DEBUG)
+ set_property(TARGET Wt::${__wt_target} APPEND PROPERTY
+ IMPORTED_LOCATION "${Wt_${__wt_target}_LIBRARY}")
+ endif()
+ endif()
+ endforeach()
+endif()
diff --git a/cmake/Modules/FindXQuartzGL.cmake b/cmake/Modules/FindXQuartzGL.cmake
new file mode 100644
index 0000000000..dd878d91c5
--- /dev/null
+++ b/cmake/Modules/FindXQuartzGL.cmake
@@ -0,0 +1,97 @@
+#[=======================================================================[.rst:
+FindXQuartzGL
+-------------
+
+FindModule for XQuartz implementation of OpenGL/GLU. Specific to Geant4
+to allow use of XQuartz only.
+
+Use of the module on non-macOS systems will result in a fatal error
+
+IMPORTED Targets
+^^^^^^^^^^^^^^^^
+
+This module defines the :prop_tgt:`IMPORTED` targets:
+
+``XQuartz::GL``
+ Defined to the XQuartz GL library
+``XQuartz::GLU``
+ Define to the XQuartz GLU library
+
+Result Variables
+^^^^^^^^^^^^^^^^
+
+This module sets the following variables:
+
+``XQuartzGL_FOUND``
+ True, if the XQuartz GL/GLU libraries were located
+
+Cache Variables
+^^^^^^^^^^^^^^^
+
+The following cache variables may also be set
+
+``XQuartzGL_INCLUDE_DIR``
+ Path to the XQuartz GL include directory
+``XQuartzGL_gl_LIBRARY``
+ Path to the XQuartz GL library
+``XQuartzGL_glu_LIBRARY``
+ Path to the XQuartz GLU library
+
+#]=======================================================================]
+
+# Just don't run if we're on macOS
+if(NOT APPLE)
+ message(FATAL_ERROR "FindXquartzGL is only for use on macOS platforms")
+endif()
+
+# - This is for X11 GL drivers, so we DON'T want Framework!
+set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
+set(CMAKE_FIND_FRAMEWORK NEVER)
+
+find_path(XQuartzGL_INCLUDE_DIR GL/gl.h
+ PATHS /usr/X11R6/include /opt/X11/include
+ NO_DEFAULT_PATH
+ )
+
+find_library(XQuartzGL_gl_LIBRARY GL
+ PATHS /usr/X11R6/lib /opt/X11/lib
+ NO_DEFAULT_PATH
+ )
+
+find_library(XQuartzGL_glu_LIBRARY GLU
+ PATHS /usr/X11R6/lib /opt/X11/lib
+ NO_DEFAULT_PATH
+ )
+
+set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(XQuartzGL
+ FOUND_VAR
+ XQuartzGL_FOUND
+ REQUIRED_VARS
+ XQuartzGL_INCLUDE_DIR
+ XQuartzGL_gl_LIBRARY
+ XQuartzGL_glu_LIBRARY
+ )
+
+mark_as_advanced(XQuartzGL_INCLUDE_DIR XQuartzGL_gl_LIBRARY XQuartzGL_glu_LIBRARY)
+
+if(XQuartzGL_FOUND)
+ if(NOT TARGET XQuartzGL::GL)
+ add_library(XQuartzGL::GL UNKNOWN IMPORTED)
+ set_target_properties(XQuartzGL::GL PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${XQuartzGL_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${XQuartzGL_gl_LIBRARY}"
+ )
+ endif()
+
+ if(NOT TARGET XQuartzGL::GLU)
+ add_library(XQuartzGL::GLU UNKNOWN IMPORTED)
+ set_target_properties(XQuartzGL::GLU PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${XQuartzGL_INCLUDE_DIR}"
+ INTERFACE_LINK_LIBRARIES XQuartzGL::GL
+ IMPORTED_LOCATION "${XQuartzGL_glu_LIBRARY}"
+ )
+ endif()
+endif()
diff --git a/cmake/Modules/FindXercesC.cmake b/cmake/Modules/FindXercesC.cmake
deleted file mode 100644
index 09dca4299e..0000000000
--- a/cmake/Modules/FindXercesC.cmake
+++ /dev/null
@@ -1,79 +0,0 @@
-# - Find Xerces-C
-# This module tries to find the Xerces-C library and headers.
-# Once done this will define
-#
-# XERCESC_FOUND - system has Xerces-C headers and libraries
-# XERCESC_INCLUDE_DIRS - the include directories needed for Xerces-C
-# XERCESC_LIBRARIES - the libraries needed to use Xerces-C
-#
-# Variables used by this module, which can change the default behaviour and
-# need to be set before calling find_package:
-#
-# XERCESC_ROOT_DIR Root directory to Xerces-C installation. Will
-# be used ahead of CMake default path.
-#
-# The following advanced variables may be used if the module has difficulty
-# locating Xerces-C or you need fine control over what is used.
-#
-# XERCESC_INCLUDE_DIR
-#
-# XERCESC_LIBRARY
-#
-# Copyright (c) 2009, Ben Morgan,
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-
-
-# Look for the header - preferentially searching below XERCESC_ROOT_DIR
-find_path(
- XERCESC_INCLUDE_DIR
- NAMES xercesc/util/XercesVersion.hpp
- PATHS ${XERCESC_ROOT_DIR}
- PATH_SUFFIXES include
- NO_DEFAULT_PATH
-)
-
-# If we didn't find it there, fall back to some standard search paths
-find_path(
- XERCESC_INCLUDE_DIR
- NAMES xercesc/util/XercesVersion.hpp
-)
-
-# Look for the library, preferentially searching below XERCESC_ROOT_DIR
-find_library(
- XERCESC_LIBRARY
- NAMES xerces-c xerces-c_3
- PATHS ${XERCESC_ROOT_DIR}
- PATH_SUFFIXES lib64 lib32 lib
- NO_DEFAULT_PATH
-)
-
-find_library(
- XERCESC_LIBRARY
- NAMES xerces-c xerces-c_3
-)
-
-
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(
- XercesC
- DEFAULT_MSG
- XERCESC_LIBRARY
- XERCESC_INCLUDE_DIR
-)
-
-if (XERCESC_FOUND)
- set(XERCESC_LIBRARIES ${XERCESC_LIBRARY})
- set(XERCESC_INCLUDE_DIRS ${XERCESC_INCLUDE_DIR})
-else (XERCESC_FOUND)
- set(XERCESC_LIBRARIES)
- set(XERCESC_INCLUDE_DIRS)
-endif (XERCESC_FOUND)
-
-
-mark_as_advanced(
- XERCESC_LIBRARY
- XERCESC_INCLUDE_DIR
-)
diff --git a/cmake/Modules/G4BuildSettings.cmake b/cmake/Modules/G4BuildSettings.cmake
index 2aa64dced8..1cf4c0615b 100644
--- a/cmake/Modules/G4BuildSettings.cmake
+++ b/cmake/Modules/G4BuildSettings.cmake
@@ -57,6 +57,7 @@ endif()
#
include(CheckCXXSourceCompiles)
include(IntelCompileFeatures)
+include(MSVCCompileFeatures)
#-----------------------------------------------------------------------
#.rst:
@@ -156,10 +157,16 @@ endif() #NOT WIN32
# - ``GEANT4_BUILD_CXXSTD`` (Allowed values: 11, 14, 17, c++11, c++14, c++17)
#
# - Choose C++ Standard to build against from supported list.
+# - Note that only C++17 is supported on Windows with MSVC
#
+set(__g4_default_cxxstd 11 14 17 c++11 c++14 c++17)
+if(MSVC)
+ set(__g4_default_cxxstd 17 c++17)
+endif()
+
enum_option(GEANT4_BUILD_CXXSTD
DOC "C++ Standard to compile against"
- VALUES 11 14 17 c++11 c++14 c++17
+ VALUES ${__g4_default_cxxstd}
CASE_INSENSITIVE
)
diff --git a/cmake/Modules/G4CMakeUtilities.cmake b/cmake/Modules/G4CMakeUtilities.cmake
index 99ffaad3ce..1380f52eff 100644
--- a/cmake/Modules/G4CMakeUtilities.cmake
+++ b/cmake/Modules/G4CMakeUtilities.cmake
@@ -179,6 +179,57 @@ function(geant4_latest_version dir name var)
set(${var} ${dir}/${name}${newer} PARENT_SCOPE)
endfunction()
+#-----------------------------------------------------------------------
+# GEANT4 EXTERNAL PACKAGE HELPERS
+#-----------------------------------------------------------------------
+# function geant4_save_package_variables( ... )
+# Save variables ... under for export to
+# build-time package settings file.
+#
+function(geant4_save_package_variables _title)
+ get_property(__ep_titles GLOBAL PROPERTY GEANT4_EXPORT_PACKAGE_TITLES)
+ if(NOT (${_title} IN_LIST __ep_titles))
+ set_property(GLOBAL APPEND PROPERTY GEANT4_EXPORT_PACKAGE_TITLES ${_title})
+ endif()
+
+ get_property(__exported_vars GLOBAL PROPERTY GEANT4_EXPORT_PACKAGE_${_title}_VARIABLES)
+ foreach(__varname ${ARGN})
+ if(NOT (${__varname} IN_LIST __exported_vars))
+ # TODO: Also check that the save variable is in the cache...
+ # if(CACHE ...) only available from 3.14
+ set_property(GLOBAL APPEND PROPERTY GEANT4_EXPORT_PACKAGE_${_title}_VARIABLES ${__varname})
+ endif()
+ endforeach()
+endfunction()
+
+# function geant4_export_package_variables()
+# Write saved package variables to
+#
+function(geant4_export_package_variables _file)
+ set(GEANT4_PACKAGE_SETTINGS )
+ get_property(__g4_exports GLOBAL PROPERTY GEANT4_EXPORT_PACKAGE_TITLES)
+
+ foreach(__pkg_title ${__g4_exports})
+ set(__local_build_setting "\n# ${__pkg_title} Build Time Settings")
+ get_property(__pkg_vars GLOBAL PROPERTY GEANT4_EXPORT_PACKAGE_${__pkg_title}_VARIABLES)
+
+ foreach(__var ${__pkg_vars})
+ get_property(__var_value CACHE ${__var} PROPERTY VALUE)
+ get_property(__var_type CACHE ${__var} PROPERTY TYPE)
+ get_property(__var_help CACHE ${__var} PROPERTY HELPSTRING)
+ list(APPEND __local_build_setting "geant4_set_and_check_package_variable(${__var} \"${__var_value}\" ${__var_type} \"${__var_help}\")")
+ endforeach()
+
+ list(APPEND GEANT4_PACKAGE_SETTINGS ${__local_build_setting})
+ endforeach()
+
+ string(REPLACE ";" "\n" GEANT4_PACKAGE_SETTINGS "${GEANT4_PACKAGE_SETTINGS}")
+
+ configure_file(${PROJECT_SOURCE_DIR}/cmake/Templates/Geant4PackageCache.cmake.in
+ ${_file}
+ @ONLY
+ )
+endfunction()
#-----------------------------------------------------------------------
# GEANT4 TESTING
diff --git a/cmake/Modules/G4ClangFormat.cmake b/cmake/Modules/G4ClangFormat.cmake
new file mode 100644
index 0000000000..f59e6db607
--- /dev/null
+++ b/cmake/Modules/G4ClangFormat.cmake
@@ -0,0 +1,168 @@
+################################################################################
+#
+# Creates a 'format' target that runs clang-format
+#
+################################################################################
+
+# - Include guard
+if(NOT __G4CLANGFORMAT_INCLUDED)
+ set(__G4CLANGFORMAT_INCLUDED 1)
+else()
+ return()
+endif()
+
+#------------------------------------------------------------------------------#
+
+set(G4FORMAT_LOGDIR ${PROJECT_BINARY_DIR}/format CACHE PATH
+ "Output folder of files that are formatted")
+
+#------------------------------------------------------------------------------#
+
+find_program(CLANG_FORMATTER
+ NAMES
+ clang-format-8.0
+ clang-format-7.0
+ clang-format-6.0
+ clang-format)
+
+#------------------------------------------------------------------------------#
+
+function(exclude_from_format)
+ cmake_parse_arguments(ARG
+ "" "" "HEADERS;SOURCES;FILES" ${ARGN})
+
+ function(_add_labels _path)
+ foreach(_FILE ${ARGN})
+ if(NOT IS_ABSOLUTE ${_FILE})
+ set(_FILE ${CMAKE_CURRENT_LIST_DIR}${_path}/${_FILE})
+ endif()
+ set(_LABELS "EXCLUDE_FORMAT")
+ get_source_file_property(_EXISTING_LABELS ${_FILE} LABELS)
+ if(_EXISTING_LABELS)
+ list(APPEND _LABELS ${_EXISTING_LABELS})
+ endif()
+ set_source_files_properties(${_FILE} PROPERTIES
+ LABELS "${_LABELS}")
+ get_source_file_property(_EXISTING_LABELS ${_FILE} LABELS)
+ endforeach()
+ endfunction()
+
+ _add_labels("/include" ${ARG_HEADERS})
+ _add_labels("/src" ${ARG_SOURCES})
+ _add_labels("" ${ARG_FILES})
+
+endfunction()
+
+#------------------------------------------------------------------------------#
+
+function(create_format_directory)
+ if(NOT EXISTS ${G4FORMAT_LOGDIR})
+ execute_process(COMMAND ${CMAKE_COMMAND}
+ -E make_directory ${G4FORMAT_LOGDIR})
+ endif()
+endfunction()
+
+#------------------------------------------------------------------------------#
+
+function(geant4_format_target)
+ if(CLANG_FORMATTER)
+ cmake_parse_arguments(G4FMTTARGET
+ "" "NAME" "SOURCES" ${ARGN})
+ string(REGEX REPLACE "-format$" "" G4TARGET_NAME "${G4FMTTARGET_NAME}")
+ # ensure not empty list
+ if(NOT "${G4FMTTARGET_SOURCES}" STREQUAL "")
+ # create output directory
+ create_format_directory()
+ set(SOURCES ) # list of sources
+ set(FILELOG ) # string of sources (for log)
+ foreach(_SOURCE ${G4FMTTARGET_SOURCES})
+ # files in binary directory are almost always generated files
+ string(FIND "${_SOURCE}" "${PROJECT_BINARY_DIR}" IN_BINARY_DIR)
+ # ignore generated files
+ if(IN_BINARY_DIR GREATER -1)
+ continue()
+ endif()
+ # check if exists (valid full path)
+ if(EXISTS "${_SOURCE}")
+ # do nothing -- absolute path was specified
+ elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${_SOURCE}")
+ # a relative path was specified
+ set(_SOURCE ${CMAKE_CURRENT_LIST_DIR}/${_SOURCE})
+ else()
+ # neither relative nor absolute
+ message(STATUS "[format] file not found: '${_SOURCE}'")
+ continue()
+ endif()
+ #string(REPLACE "${PROJECT_SOURCE_DIR}/" "" _SOURCE ${_SOURCE})
+ get_source_file_property(SOURCE_LABELS ${_SOURCE} LABELS)
+ list(FIND SOURCE_LABELS "EXCLUDE_FORMAT" EXCLUDE_FORMAT)
+ if(EXCLUDE_FORMAT GREATER -1)
+ continue()
+ endif()
+ # append to log
+ set(FILELOG "${FILELOG}${_SOURCE}\n")
+ # add to list to be processed
+ list(APPEND SOURCES ${_SOURCE})
+ endforeach()
+ # write format file
+ set(FMTLOG_OUT ${G4FORMAT_LOGDIR}/${G4TARGET_NAME}.txt)
+ file(WRITE ${FMTLOG_OUT} "${FILELOG}")
+ file(RELATIVE_PATH FMTLOG_RELATIVE_OUT ${PROJECT_BINARY_DIR} ${FMTLOG_OUT})
+ # get the number of source files
+ list(LENGTH SOURCES NUM_SOURCES)
+ # if there are too many source files (arguments), command will fail
+ # so process no more than 500 at a time
+ if(NUM_SOURCES GREATER 500)
+ # function to generate indices
+ function(generate_indices VAR NUM)
+ set(INDICES )
+ set(N 0)
+ while(N LESS NUM)
+ list(APPEND INDICES ${N})
+ math(EXPR N "${N}+1")
+ endwhile()
+ set(${VAR} ${INDICES} PARENT_SCOPE)
+ endfunction()
+ # generate 500 indices
+ generate_indices(INDICES 500)
+ set(FORMAT_COMMANDS )
+ # while there are still sources in list
+ while(NUM_SOURCES GREATER 0)
+ # if below 500, re-generate indices
+ if(NUM_SOURCES LESS 500)
+ generate_indices(INDICES ${NUM_SOURCES})
+ endif()
+ # get the subset of first 500
+ list(GET SOURCES ${INDICES} SOURCES_SUBSET)
+ # add the target for block of 500
+ list(APPEND FORMAT_COMMANDS COMMAND ${CLANG_FORMATTER} -i ${SOURCES_SUBSET})
+ # remove 500 we just processed
+ list(REMOVE_AT SOURCES ${INDICES})
+ # update the number of sources remaining
+ list(LENGTH SOURCES NUM_SOURCES)
+ endwhile()
+ # add the custom command
+ list(LENGTH FORMAT_COMMANDS NUM_COMMANDS)
+ if(NUM_COMMANDS GREATER 0)
+ add_custom_target(${G4FMTTARGET_NAME}
+ ${FORMAT_COMMANDS}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ COMMENT
+ "Running '${CLANG_FORMATTER}' on source files in '${G4TARGET_NAME}' target (see ${FMTLOG_RELATIVE_OUT})...")
+ endif()
+ else()
+ list(LENGTH SOURCES NUM_SOURCES)
+ if(NUM_SOURCES GREATER 0)
+ # if less than 500 source files, add all in one target
+ add_custom_target(${G4FMTTARGET_NAME}
+ COMMAND ${CLANG_FORMATTER} -i ${SOURCES}
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ COMMENT
+ "Running '${CLANG_FORMATTER}' on source files in '${G4TARGET_NAME}' target (see ${FMTLOG_RELATIVE_OUT})...")
+ endif()
+ endif(NUM_SOURCES GREATER 500)
+ endif(NOT "${G4FMTTARGET_SOURCES}" STREQUAL "")
+ endif(CLANG_FORMATTER)
+endfunction()
+
+#------------------------------------------------------------------------------#
diff --git a/cmake/Modules/G4ConfigureCMakeHelpers.cmake b/cmake/Modules/G4ConfigureCMakeHelpers.cmake
index 23922880bd..9f64ae914f 100644
--- a/cmake/Modules/G4ConfigureCMakeHelpers.cmake
+++ b/cmake/Modules/G4ConfigureCMakeHelpers.cmake
@@ -38,7 +38,6 @@
# Compiler flags (because user apps are a bit dependent on them...)
set(GEANT4_COMPILER_FLAG_HINTS "#
-set(CMAKE_CXX_EXTENSIONS OFF)
set(Geant4_CXX_FLAGS \"${CMAKE_CXX_FLAGS} ${GEANT4_CXXSTD_FLAGS}\")
set(Geant4_EXE_LINKER_FLAGS \"${CMAKE_EXE_LINKER_FLAGS}\")")
@@ -83,45 +82,26 @@ if(NOT GEANT4_USE_SYSTEM_ZLIB)
list(APPEND GEANT4_EXTERNALS_TARGETS G4zlib)
endif()
-# - GDML
-# Need to include Xerces-C headers becuase these do appear in the public
-# interface of GDML. The library should then be in the LINK_INTERFACE of
-# persistency...
-if(GEANT4_USE_GDML)
- list(APPEND GEANT4_THIRD_PARTY_INCLUDES ${XERCESC_INCLUDE_DIRS})
-endif()
-
# - USolids
# Compile definitions
if(GEANT4_USE_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
set(GEANT4_USE_USOLIDS_EITHER ON)
-
- # System USolids headers, because these do appear in Geant4's
- # public interface. The library should be in the link interface
- # of G4geometry (may need refinding)
- list(APPEND GEANT4_CORE_DEFINITIONS ${VECGEOM_DEFINITIONS})
- list(APPEND GEANT4_THIRD_PARTY_INCLUDES "${USOLIDS_INCLUDE_DIRS} ${VECGEOM_EXTERNAL_INCLUDES}")
endif()
# - Stuff from Geant4InterfaceOptions.cmake
-if(GEANT4_USE_QT)
- list(APPEND GEANT4_THIRD_PARTY_INCLUDES
- ${QT_INCLUDE_DIR}
- ${QT_QTCORE_INCLUDE_DIR}
- ${QT_QTGUI_INCLUDE_DIR}
- ${QT_QTOPENGL_INCLUDE_DIR}
- )
- # On WIN32, re-import the Qt targets.
- if(WIN32)
- set(GEANT4_QT4_IMPORT_SETUP "
-# Qt reimport on WIN32
-set(QT_QMAKE_EXECUTABLE ${QT_QMAKE_EXECUTABLE})
-set(QT_USE_IMPORTED_TARGETS ON)
-find_package(Qt4 REQUIRED)
- ")
- endif()
-endif()
+#-----------------------------------------------------------------------
+# - Common Build/Install Tree Configuration files
+#-----------------------------------------------------------------------
+# External package variables
+geant4_export_package_variables(${PROJECT_BINARY_DIR}/Geant4PackageCache.cmake)
+
+# Versioning file
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Templates/Geant4ConfigVersion.cmake.in
+ ${PROJECT_BINARY_DIR}/Geant4ConfigVersion.cmake
+ @ONLY
+ )
#-----------------------------------------------------------------------
# - Generate Build Tree Configuration Files
@@ -133,6 +113,8 @@ set(GEANT4_CMAKE_DIR "${PROJECT_BINARY_DIR}")
# rather paths. We extract the paths from the global
# GEANT4_BUILDTREE_INCLUDE_DIRS property and use this to create the
# header setup
+# This is *ONLY* required in case clients use ROOT dictionaries, whose
+# generation mechanism is blind to usage requirements
#
get_property(__geant4_buildtree_include_dirs GLOBAL PROPERTY
GEANT4_BUILDTREE_INCLUDE_DIRS
@@ -140,20 +122,15 @@ get_property(__geant4_buildtree_include_dirs GLOBAL PROPERTY
set(GEANT4_INCLUDE_DIR_SETUP "
# Geant4 configured for use from the build tree - absolute paths are used.
-set(Geant4_INCLUDE_DIR ${__geant4_buildtree_include_dirs})
-")
-
-set(GEANT4_MODULE_PATH_SETUP "
-# Geant4 configured for use CMake modules from source tree
-set(CMAKE_MODULE_PATH \${CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH})
+set(Geant4_INCLUDE_DIR \"${__geant4_buildtree_include_dirs}\")
")
# Geant4 data used in build tree
geant4_export_datasets(BUILD GEANT4_DATASET_DESCRIPTIONS)
# Export targets in the Geant4LibraryDepends export set from the build tree
-# No longer need GEANT4_EXPORTED_TARGETS global property to list these for us.
export(EXPORT Geant4LibraryDepends
+ NAMESPACE Geant4::
FILE ${PROJECT_BINARY_DIR}/Geant4LibraryDepends.cmake
)
@@ -164,13 +141,6 @@ configure_file(
@ONLY
)
-# Configure the build tree versioning file
-configure_file(
- ${PROJECT_SOURCE_DIR}/cmake/Templates/Geant4ConfigVersion.cmake.in
- ${PROJECT_BINARY_DIR}/Geant4ConfigVersion.cmake
- @ONLY
- )
-
# Copy the custom modules into the build tree
configure_file(
${PROJECT_SOURCE_DIR}/cmake/Modules/IntelCompileFeatures.cmake
@@ -178,7 +148,50 @@ configure_file(
COPYONLY
)
-foreach(_mod AIDA HepMC Pythia6 StatTest TBB)
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/MSVCCompileFeatures.cmake
+ ${PROJECT_BINARY_DIR}/Modules/MSVCCompileFeatures.cmake
+ COPYONLY
+ )
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4EXPATShim.cmake
+ ${PROJECT_BINARY_DIR}/G4EXPATShim.cmake
+ COPYONLY
+ )
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4FreetypeShim.cmake
+ ${PROJECT_BINARY_DIR}/G4FreetypeShim.cmake
+ COPYONLY
+ )
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4HDF5Shim.cmake
+ ${PROJECT_BINARY_DIR}/G4HDF5Shim.cmake
+ COPYONLY
+ )
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4MotifShim.cmake
+ ${PROJECT_BINARY_DIR}/G4MotifShim.cmake
+ COPYONLY
+)
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4VecGeomShim.cmake
+ ${PROJECT_BINARY_DIR}/G4VecGeomShim.cmake
+ COPYONLY
+ )
+
+configure_file(
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/G4X11Shim.cmake
+ ${PROJECT_BINARY_DIR}/G4X11Shim.cmake
+ COPYONLY
+)
+
+
+foreach(_mod AIDA HepMC Pythia6 StatTest TBB XQuartzGL)
configure_file(
${PROJECT_SOURCE_DIR}/cmake/Modules/Find${_mod}.cmake
${PROJECT_BINARY_DIR}/Modules/Find${_mod}.cmake
@@ -226,14 +239,13 @@ get_filename_component(Geant4_INCLUDE_DIR \"\${_geant4_thisdir}/${GEANT4_RELATIV
")
endif()
-set(GEANT4_MODULE_PATH_SETUP)
-
# Geant4 data used in install tree
geant4_export_datasets(INSTALL GEANT4_DATASET_DESCRIPTIONS)
# Install exported targets file for the install tree - we just install
# the named export
install(EXPORT Geant4LibraryDepends
+ NAMESPACE Geant4::
DESTINATION ${GEANT4_CMAKE_DIR}
COMPONENT Development
)
@@ -245,23 +257,32 @@ configure_file(
@ONLY
)
-# Configure the install tree config versioning file...
-configure_file(
- ${PROJECT_SOURCE_DIR}/cmake/Templates/Geant4ConfigVersion.cmake.in
- ${PROJECT_BINARY_DIR}/InstallTreeFiles/Geant4ConfigVersion.cmake
- @ONLY
- )
-
# Install the config, config versioning and use files
install(FILES
${PROJECT_BINARY_DIR}/InstallTreeFiles/Geant4Config.cmake
- ${PROJECT_BINARY_DIR}/InstallTreeFiles/Geant4ConfigVersion.cmake
+ ${PROJECT_BINARY_DIR}/Geant4ConfigVersion.cmake
+ ${PROJECT_BINARY_DIR}/G4EXPATShim.cmake
+ ${PROJECT_BINARY_DIR}/G4FreetypeShim.cmake
+ ${PROJECT_BINARY_DIR}/G4HDF5Shim.cmake
+ ${PROJECT_BINARY_DIR}/G4VecGeomShim.cmake
+ ${PROJECT_BINARY_DIR}/G4MotifShim.cmake
+ ${PROJECT_BINARY_DIR}/G4X11Shim.cmake
${PROJECT_SOURCE_DIR}/cmake/Templates/UseGeant4.cmake
DESTINATION ${GEANT4_CMAKE_DIR}
COMPONENT Development
)
-# Install the custom modules for the examples
+# Install the package settings file if required (always for now)
+option(GEANT4_INSTALL_PACKAGE_CACHE "Install file recording build-time locations of required packages" ON)
+mark_as_advanced(GEANT4_INSTALL_PACKAGE_CACHE)
+if(GEANT4_INSTALL_PACKAGE_CACHE)
+ install(FILES ${PROJECT_BINARY_DIR}/Geant4PackageCache.cmake
+ DESTINATION ${GEANT4_CMAKE_DIR}
+ COMPONENT Development
+ )
+endif()
+
+# Install the custom modules for dependencies/examples
install(DIRECTORY
${PROJECT_BINARY_DIR}/Modules
DESTINATION ${GEANT4_CMAKE_DIR}
diff --git a/cmake/Modules/G4ConfigureGNUMakeHelpers.cmake b/cmake/Modules/G4ConfigureGNUMakeHelpers.cmake
index 5a4f8a4cd5..78b00c2e8a 100644
--- a/cmake/Modules/G4ConfigureGNUMakeHelpers.cmake
+++ b/cmake/Modules/G4ConfigureGNUMakeHelpers.cmake
@@ -513,7 +513,7 @@ macro(_g4tc_configure_tc_variables SHELL_FAMILY SCRIPT_NAME)
# Backward compatibility requires XERCESCROOT to be set
# As this is a 'rootdir' determine it from the XERCESC_INCLUDE_DIR
# variable...
- get_filename_component(_xercesc_root ${XERCESC_INCLUDE_DIR} PATH)
+ get_filename_component(_xercesc_root ${XercesC_INCLUDE_DIR} PATH)
_g4tc_setenv_command(GEANT4_TC_GDML_PATH_SETUP ${SHELL_FAMILY} XERCESCROOT ${_xercesc_root})
else()
set(GEANT4_TC_G4LIB_USE_GDML "# NOT BUILT WITH GDML SUPPORT")
@@ -914,8 +914,8 @@ foreach(_shell bourne;cshell)
# - XercesC
set(GEANT4_TC_XERCESC_LIB_PATH_SETUP "# GDML SUPPORT NOT AVAILABLE")
if(GEANT4_USE_GDML)
- get_filename_component(_XERCESC_LIB_DIR "${XERCESC_LIBRARY}" REALPATH)
- get_filename_component(_XERCESC_LIB_DIR "${XERCESC_LIBRARY}" DIRECTORY)
+ get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" REALPATH)
+ get_filename_component(_XERCESC_LIB_DIR "${XercesC_LIBRARY}" DIRECTORY)
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
_g4tc_append_path(GEANT4_TC_XERCESC_LIB_PATH_SETUP
${_shell}
diff --git a/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake b/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
index 7de74a2153..d1a5a468d5 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()
+ # - Smart Stack
+ if(GEANT4_USE_SMARTSTACK)
+ set(G4_BUILTWITH_SMARTSTACK "yes")
+ else()
+ set(G4_BUILTWITH_SMARTSTACK "no")
+ endif()
+
# - CLHEP
if(GEANT4_USE_SYSTEM_CLHEP)
set(G4_BUILTWITH_CLHEP "no")
@@ -163,7 +170,7 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
# - GDML
if(GEANT4_USE_GDML)
set(G4_BUILTWITH_GDML "yes")
- set(G4_XERCESC_INCLUDE_DIRS ${XERCESC_INCLUDE_DIRS})
+ set(G4_XERCESC_INCLUDE_DIRS ${XercesC_INCLUDE_DIR})
list(REMOVE_DUPLICATES G4_XERCESC_INCLUDE_DIRS)
list(REMOVE_ITEM G4_XERCESC_INCLUDE_DIRS ${_cxx_compiler_dirs})
@@ -233,18 +240,18 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS AND UNIX)
endif()
# - Wt
- if(GEANT4_USE_WT)
- set(G4_BUILTWITH_WT "yes")
- set(G4_WT_INCLUDE_DIRS ${Wt_INCLUDE_DIR} ${Boost_INCLUDE_DIR} )
+ #if(GEANT4_USE_WT)
+ # set(G4_BUILTWITH_WT "yes")
+ # set(G4_WT_INCLUDE_DIRS ${Wt_INCLUDE_DIR} ${Boost_INCLUDE_DIR} )
- set(G4_WT_CFLAGS )
- foreach(_dir ${G4_WT_INCLUDE_DIRS})
- set(G4_WT_CFLAGS "${G4_WT_CFLAGS} -I${_dir}")
- endforeach()
+ # set(G4_WT_CFLAGS )
+ # foreach(_dir ${G4_WT_INCLUDE_DIRS})
+ # set(G4_WT_CFLAGS "${G4_WT_CFLAGS} -I${_dir}")
+ # endforeach()
- else()
- set(G4_BUILTWITH_WT "no")
- endif()
+ #else()
+ # set(G4_BUILTWITH_WT "no")
+ #endif()
# - Motif
if(GEANT4_USE_XM)
diff --git a/cmake/Modules/G4DeveloperAPI_OLD.cmake b/cmake/Modules/G4DeveloperAPI_OLD.cmake
index 5b6b09199f..26f482a586 100644
--- a/cmake/Modules/G4DeveloperAPI_OLD.cmake
+++ b/cmake/Modules/G4DeveloperAPI_OLD.cmake
@@ -42,7 +42,7 @@ endif()
# - Needed CMake modules
include(CMakeParseArguments)
-include(G4WindowsDLLSupport)
+include(G4ClangFormat)
#-----------------------------------------------------------------------
#.rst:
@@ -103,10 +103,13 @@ include(G4WindowsDLLSupport)
# 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"
- "HEADERS;SOURCES;GRANULAR_DEPENDENCIES;GLOBAL_DEPENDENCIES;LINK_LIBRARIES"
+ "${multiargs}"
${ARGN}
)
@@ -134,6 +137,10 @@ macro(geant4_define_module)
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()
@@ -145,8 +152,6 @@ macro(geant4_define_module)
foreach(_LIB ${G4DEFMOD_LINK_LIBRARIES})
list(APPEND ${G4MODULENAME}_LINK_LIBRARIES ${_LIB})
endforeach()
-
- include_directories(${${G4MODULENAME}_INCDIR})
endmacro()
@@ -214,25 +219,6 @@ endmacro()
#-----------------------------------------------------------------------
-# function geant4_compile_definitions_config()
-# Set a custom compile definition for a Geant4 target on a
-# per configuration basis:
-# For mode , define GEANT4_DEVELOPER_
-#
-function(geant4_compile_definitions_config _target)
- if(NOT TARGET ${_target})
- message(FATAL_ERROR "geant4_compile_definitions_config passed target '${_target}' which is not a valid CMake target")
- endif()
-
- # CMake 3 prefers $ in generator expressions
- set(__default_config_generator "\$")
-
- set_property(TARGET ${_target}
- APPEND PROPERTY COMPILE_DEFINITIONS
- GEANT4_DEVELOPER_${__default_config_generator}
- )
-endfunction()
-
#-----------------------------------------------------------------------
# - GEANT4_LIBRARY_TARGET
@@ -245,26 +231,26 @@ macro(geant4_library_target)
${ARGN}
)
+ geant4_format_target(NAME ${G4LIBTARGET_NAME}-format SOURCES ${G4LIBTARGET_SOURCES})
+
if(BUILD_SHARED_LIBS)
# Add the shared library target and link its dependencies
- # WIN32/CMake<3.4 workaround
- if(WIN32 AND (CMAKE_VERSION VERSION_LESS 3.4))
- __geant4_add_dll_old(${ARGV})
- else()
- # - Common shared lib commands
- add_library(${G4LIBTARGET_NAME} SHARED ${G4LIBTARGET_SOURCES})
- geant4_compile_definitions_config(${G4LIBTARGET_NAME})
- target_compile_features(${G4LIBTARGET_NAME} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
- target_link_libraries(${G4LIBTARGET_NAME}
- ${G4LIBTARGET_GEANT4_LINK_LIBRARIES}
- ${G4LIBTARGET_LINK_LIBRARIES})
- # 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)
- endif()
+ # - 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})
+ target_link_libraries(${G4LIBTARGET_NAME}
+ ${G4LIBTARGET_GEANT4_LINK_LIBRARIES}
+ ${G4LIBTARGET_LINK_LIBRARIES})
+ # 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.
@@ -283,6 +269,9 @@ macro(geant4_library_target)
)
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
@@ -290,12 +279,8 @@ macro(geant4_library_target)
EXPORT Geant4LibraryDepends
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Runtime
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development)
-
- # Append the library target to a global property so that build tree
- # export of library dependencies can pick up all targets
- set_property(GLOBAL APPEND
- PROPERTY GEANT4_EXPORTED_TARGETS ${G4LIBTARGET_NAME})
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
endif()
#
@@ -306,8 +291,9 @@ macro(geant4_library_target)
# -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})
- geant4_compile_definitions_config(${G4LIBTARGET_NAME}-static)
+ 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})
@@ -324,7 +310,7 @@ macro(geant4_library_target)
"${G4LIBTARGET_LINK_LIBRARIES}"
)
- target_link_libraries(${G4LIBTARGET_NAME}-static
+ target_link_libraries(${G4LIBTARGET_NAME}-static PUBLIC
${G4LIBTARGET_GEANT4_LINK_LIBRARIES_STATIC}
${G4LIBTARGET_LINK_LIBRARIES_STATIC})
@@ -339,14 +325,15 @@ macro(geant4_library_target)
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)
-
- set_property(GLOBAL APPEND
- PROPERTY GEANT4_EXPORTED_TARGETS ${G4LIBTARGET_NAME}-static)
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development
+ INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
endif()
endmacro()
@@ -373,7 +360,7 @@ macro(geant4_header_module_target)
# 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})
+ PROPERTY GEANT4_BUILDTREE_INCLUDE_DIRS "${${G4MODULENAME}_INCDIR}")
endmacro()
#-----------------------------------------------------------------------
@@ -388,26 +375,7 @@ macro(geant4_granular_library_target)
${ARGN}
)
- # Granular lib only has one component, but we must pick out
- # the granular dependencies
- include(${G4GRANLIB_COMPONENT})
-
- # Add the library target, using variables set by the inclusion of
- # the component file
- geant4_library_target(NAME ${G4MODULENAME}
- SOURCES ${${G4MODULENAME}_SOURCES} ${${G4MODULENAME}_HEADERS}
- GEANT4_LINK_LIBRARIES ${${G4MODULENAME}_GRANULAR_DEPENDENCIES}
- LINK_LIBRARIES ${${G4MODULENAME}_LINK_LIBRARIES})
-
- # 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})
+ message(FATAL_ERROR "geant4_granular_library_target is no longer supported")
endmacro()
#-----------------------------------------------------------------------
@@ -443,11 +411,8 @@ macro(geant4_global_library_target)
list(APPEND ${G4GLOBLIB_NAME}_BUILDTREE_INCLUDES ${${G4MODULENAME}_INCDIR})
endforeach()
- # Reset include dirs, setting from module direct dirs only
- # But need to pass this forward to the library target so that
- # it can use this list in target_include_directories...
- #set_directory_properties(PROPERTIES INCLUDE_DIRECTORIES "")
- #include_directories(${${G4GLOBLIB_NAME}_BUILDTREE_INCLUDES})
+ # 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)
@@ -473,8 +438,9 @@ macro(geant4_global_library_target)
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
+ # 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/G4EXPATShim.cmake b/cmake/Modules/G4EXPATShim.cmake
new file mode 100644
index 0000000000..bce839ea45
--- /dev/null
+++ b/cmake/Modules/G4EXPATShim.cmake
@@ -0,0 +1,16 @@
+# - G4EXPATShim
+#
+# Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
+# The EXPAT dependency is located through CMake's builtin FindEXPAT
+# module and linked through the EXPAT::EXPAT imported target.
+# This target is however only available from CMake 3.10, so recreate
+# EXPAT::EXPAT target if it does not exist
+if(EXPAT_FOUND)
+ if(NOT TARGET EXPAT::EXPAT)
+ add_library(EXPAT::EXPAT UNKNOWN IMPORTED)
+ set_target_properties(EXPAT::EXPAT PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${EXPAT_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${EXPAT_INCLUDE_DIRS}")
+ endif()
+endif()
\ No newline at end of file
diff --git a/cmake/Modules/G4FreetypeShim.cmake b/cmake/Modules/G4FreetypeShim.cmake
new file mode 100644
index 0000000000..5b8feef502
--- /dev/null
+++ b/cmake/Modules/G4FreetypeShim.cmake
@@ -0,0 +1,37 @@
+# - G4FreetypeShim
+#
+# Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
+# The Freetype dependency is located through CMake's builtin FindFreetype
+# module and linked through the Freetype::Freetype imported target.
+# This target is however only available from CMake 3.10, so recreate
+# Freetype::Freetype target if it does not exist
+if(Freetype_FOUND)
+ if(NOT TARGET Freetype::Freetype)
+ add_library(Freetype::Freetype UNKNOWN IMPORTED)
+ set_target_properties(Freetype::Freetype PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${FREETYPE_INCLUDE_DIRS}")
+
+ if(FREETYPE_LIBRARY_RELEASE)
+ set_property(TARGET Freetype::Freetype APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(Freetype::Freetype PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION_RELEASE "${FREETYPE_LIBRARY_RELEASE}")
+ endif()
+
+ if(FREETYPE_LIBRARY_DEBUG)
+ set_property(TARGET Freetype::Freetype APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(Freetype::Freetype PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION_DEBUG "${FREETYPE_LIBRARY_DEBUG}")
+ endif()
+
+ if(NOT FREETYPE_LIBRARY_RELEASE AND NOT FREETYPE_LIBRARY_DEBUG)
+ set_target_properties(Freetype::Freetype PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${FREETYPE_LIBRARY}")
+ endif()
+ endif()
+endif()
+
diff --git a/cmake/Modules/G4HDF5Shim.cmake b/cmake/Modules/G4HDF5Shim.cmake
new file mode 100644
index 0000000000..963a7bb5be
--- /dev/null
+++ b/cmake/Modules/G4HDF5Shim.cmake
@@ -0,0 +1,41 @@
+ # - G4HDF5Shim
+#
+# Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
+# The HDF5 dependency is located through CMake's builtin FindHDF5
+# module, but this does not supply imported targets as of CMake 3.16.
+# It may use HDF5's hdf5-config.cmake file if available, so create
+# custom imported target Geant4::HDF5 to allow both cases to be handled
+# without interference with either.
+
+if(HDF5_FOUND)
+ # If we're in MT mode, found HDF5 must also support MT
+ if(GEANT4_BUILD_MULTITHREADED OR Geant4_multithreaded_FOUND)
+ include(CheckCXXSymbolExists)
+ set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE_DIRS}")
+ check_cxx_symbol_exists(H5_HAVE_THREADSAFE "H5pubconf.h" GEANT4_HAVE_H5_HAVE_THREADSAFE)
+ unset(CMAKE_REQUIRED_INCLUDES)
+
+ if(NOT GEANT4_HAVE_H5_HAVE_THREADSAFE)
+ message(FATAL_ERROR
+ "Found an install of HDF5, but it was not built with support for thread safety. "
+ "Either build Geant4 in single threaded mode, or use/reinstall HDF5 with "
+ "thread safety enabled. See HDF5's install guides, available from https://support.hdfgroup.org/HDF5/release/, for instructions on this.\n"
+ )
+ endif()
+ endif()
+
+ # As FindHDF5 does not yet supply imported targets, we
+ # create an internal INTERFACE target to wrap these.
+ # This still hard-codes include/library paths, but limits it
+ # to one place. Later, we'll create proper imported targets
+ # with re-finds but for now this is the best minimally invasive proceedure
+ if(NOT TARGET Geant4::HDF5)
+ add_library(Geant4::HDF5 IMPORTED UNKNOWN)
+ set_target_properties(Geant4::HDF5 PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${HDF5_C_LIBRARY_hdf5}"
+ INTERFACE_INCLUDE_DIRECTORIES "${HDF5_C_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${HDF5_C_LIBRARIES}"
+ )
+ endif()
+endif()
\ No newline at end of file
diff --git a/cmake/Modules/G4MotifShim.cmake b/cmake/Modules/G4MotifShim.cmake
new file mode 100644
index 0000000000..ce00783261
--- /dev/null
+++ b/cmake/Modules/G4MotifShim.cmake
@@ -0,0 +1,15 @@
+# - G4MotifShim
+#
+# Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
+# The Motif dependency is located through CMake's builtin FindMotif
+# This module does not support imported targets as of CMake 3.16, so
+# provide a target Motif::Xm
+if(Motif_FOUND)
+ if(NOT TARGET Motif::Xm)
+ add_library(Motif::Xm UNKNOWN IMPORTED)
+ set_target_properties(Motif::Xm PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${MOTIF_INCLUDE_DIR}"
+ IMPORTED_LOCATION "${MOTIF_LIBRARIES}"
+ )
+ endif()
+endif()
\ No newline at end of file
diff --git a/cmake/Modules/G4VecGeomShim.cmake b/cmake/Modules/G4VecGeomShim.cmake
new file mode 100644
index 0000000000..bce1847e59
--- /dev/null
+++ b/cmake/Modules/G4VecGeomShim.cmake
@@ -0,0 +1,20 @@
+# Create imported target to help use VecGeom (a mess because the VecGeomConfig is...)
+if(VecGeom_FOUND)
+ if(NOT TARGET VecGeom::VecGeom)
+ add_library(VecGeom::VecGeom UNKNOWN IMPORTED)
+ # VecGeom's config file is awful, so the following is neccessary...
+ foreach(__vglib ${VECGEOM_LIBRARIES})
+ if(__vglib MATCHES ".*libvecgeom\.(a|so|dylib|lib|dll)$")
+ set(VECGEOM_LIBRARY "${__vglib}")
+ endif()
+ endforeach()
+
+ string(REGEX REPLACE "^\-D|;-D" ";" VECGEOM_COMPILE_DEFINITIONS "${VECGEOM_DEFINITIONS}")
+ set_target_properties(VecGeom::VecGeom PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS ${VECGEOM_COMPILE_DEFINITIONS}
+ INTERFACE_INCLUDE_DIRECTORIES "${VECGEOM_INCLUDE_DIRS}"
+ INTERFACE_LINK_LIBRARIES "${VECGEOM_LIBRARIES}"
+ IMPORTED_LOCATION "${VECGEOM_LIBRARY}")
+ endif()
+endif()
+
diff --git a/cmake/Modules/G4WindowsDLLSupport.cmake b/cmake/Modules/G4WindowsDLLSupport.cmake
deleted file mode 100644
index 71170f7f09..0000000000
--- a/cmake/Modules/G4WindowsDLLSupport.cmake
+++ /dev/null
@@ -1,116 +0,0 @@
-#.rst:
-# G4WindowsDLLSupport
-# -------------------
-#
-# Provides functions needed to support builds of DLLs both pre and post
-# CMake 3.4. This version introduced the WINDOWS_EXPORT_ALL_SYMBOLS
-# property, removing the need for the shipped `genwindef` program.
-#
-# With Geant4 10.4 and below having a minimum version requirement of
-# CMake 3.3, we need to provide both so that patches can be applied
-# to these versions without requiring clients to bump their CMake version.
-#
-
-#-----------------------------------------------------------------
-# 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.
-#
-#-----------------------------------------------------------------
-
-if(NOT __G4WINDOWSDLLSUPPORT_INCLUDED)
- set(__G4WINDOWSDLLSUPPORT_INCLUDED)
-else()
- return()
-endif()
-
-# On WIN32, we need to build the genwindef application to create export
-# def files for building DLLs.
-# We only use it as a helper application at the moment so we exclude it from
-# the ALL target.
-if(WIN32)
- # Assume the sources are co-located
- get_filename_component(_genwindef_src_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
- add_executable(genwindef EXCLUDE_FROM_ALL
- ${_genwindef_src_dir}/genwindef/genwindef.cpp
- ${_genwindef_src_dir}/genwindef/LibSymbolInfo.h
- ${_genwindef_src_dir}/genwindef/LibSymbolInfo.cpp)
-endif()
-
-#.rst:
-# Macro for supporting DLL build on CMake < 3.4
-macro(__geant4_add_dll_old)
- # It's an error to call this on non-WIN32 platforms
- if(NOT WIN32)
- message(FATAL_ERROR "__geant4_add_dll_old is not callable on non-Windows platforms!")
- endif()
-
- # - Takes same args as geant4_library_target for compatibility
- cmake_parse_arguments(__G4ADDOLDDLL
- ""
- "NAME" "SOURCES;GEANT4_LINK_LIBRARIES;LINK_LIBRARIES"
- ${ARGN}
- )
-
- # We have to generate the def export file from an archive library.
- # This is a temporary separate from a real archive library, and
- # even though it's static, we need to mark that it will have
- # DLL symbols via the G4LIB_BUILD_DLL macro
- add_library(_${__G4ADDOLDDLL_NAME}-archive STATIC EXCLUDE_FROM_ALL ${__G4ADDOLDDLL_SOURCES})
- set(_archive _${__G4ADDOLDDLL_NAME}-archive)
- target_compile_features(${_archive} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
- target_compile_definitions(${_archive} PUBLIC -DG4LIB_BUILD_DLL)
-
- # - Add the config specific compile definitions
- geant4_compile_definitions_config(${_archive})
-
- # - Create the .def file for this library
- # Use generator expressions to get path to per-mode lib and
- # older CMAKE_CFG_INTDIR variable to set name of per-mode def
- # file (Needed as generator expressions cannot be used in argument
- # to OUTPUT...
- add_custom_command(OUTPUT _${__G4ADDOLDDLL_NAME}-${CMAKE_CFG_INTDIR}.def
- COMMAND genwindef -o _${__G4ADDOLDDLL_NAME}-${CMAKE_CFG_INTDIR}.def -l ${__G4ADDOLDDLL_NAME} $
- DEPENDS ${_archive} genwindef)
-
- # - Now we can build the DLL
- # We create it from a dummy empty C++ file plus the def file.
- # Also set the public compile definition on it so that clients
- # will set correct macro automatically.
- file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/_${__G4ADDOLDDLL_NAME}.cpp
- "// empty _${__G4ADDOLDDLL_NAME}.cpp\n")
-
- add_library(${__G4ADDOLDDLL_NAME} SHARED _${__G4ADDOLDDLL_NAME}.cpp
- _${__G4ADDOLDDLL_NAME}-${CMAKE_CFG_INTDIR}.def)
- target_compile_definitions(${__G4ADDOLDDLL_NAME} PUBLIC -DG4LIB_BUILD_DLL)
- target_compile_features(${__G4ADDOLDDLL_NAME} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
-
- # - Link the DLL.
- # We link it to the archive, and the supplied libraries,
- # but then remove the archive from the LINK_INTERFACE.
- target_link_libraries(${__G4ADDOLDDLL_NAME}
- ${_archive}
- ${__G4ADDOLDDLL_GEANT4_LINK_LIBRARIES}
- ${__G4ADDOLDDLL_LINK_LIBRARIES})
-
- set_target_properties(${__G4ADDOLDDLL_NAME}
- PROPERTIES INTERFACE_LINK_LIBRARIES "${__G4ADDOLDDLL_GEANT4_LINK_LIBRARIES};${__G4ADDOLDDLL_LINK_LIBRARIES}")
-endmacro()
diff --git a/cmake/Modules/G4X11Shim.cmake b/cmake/Modules/G4X11Shim.cmake
new file mode 100644
index 0000000000..9a2640d17b
--- /dev/null
+++ b/cmake/Modules/G4X11Shim.cmake
@@ -0,0 +1,67 @@
+# - G4X11Shim
+#
+# Geant4's Geant4Config.cmake file aims to support CMake 3.8 and newer
+# The X11 dependency is located through CMake's builtin FindX11
+# module and linked through the X11:: imported targets.
+# These targets are however only available from CMake 3.14, so recreate
+# those we need if they do not exist.
+
+if(X11_FOUND)
+ if (NOT TARGET X11::X11)
+ add_library(X11::X11 UNKNOWN IMPORTED)
+ set_target_properties(X11::X11 PROPERTIES
+ IMPORTED_LOCATION "${X11_X11_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_X11_INCLUDE_PATH}")
+ endif ()
+
+ if (X11_ICE_FOUND AND NOT TARGET X11::ICE)
+ add_library(X11::ICE UNKNOWN IMPORTED)
+ set_target_properties(X11::ICE PROPERTIES
+ IMPORTED_LOCATION "${X11_ICE_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_ICE_INCLUDE_PATH}")
+ endif ()
+
+ if (X11_SM_FOUND AND NOT TARGET X11::SM)
+ add_library(X11::SM UNKNOWN IMPORTED)
+ set_target_properties(X11::SM PROPERTIES
+ IMPORTED_LOCATION "${X11_SM_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_SM_INCLUDE_PATH}")
+ endif ()
+
+ if (X11_Xext_FOUND AND NOT TARGET X11::Xext)
+ # CMake < 3.14 won't search for Xext headers
+ if(NOT X11_Xext_INCLUDE_PATH)
+ find_path(X11_Xext_INCLUDE_PATH X11/extensions/Xext.h ${X11_INC_SEARCH_PATH})
+ mark_as_advanced(X11_Xext_INCLUDE_PATH)
+ endif()
+ add_library(X11::Xext UNKNOWN IMPORTED)
+ set_target_properties(X11::Xext PROPERTIES
+ IMPORTED_LOCATION "${X11_Xext_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_Xext_INCLUDE_PATH}"
+ INTERFACE_LINK_LIBRARIES "X11::X11")
+ endif ()
+
+ if (X11_Xmu_FOUND AND NOT TARGET X11::Xmu)
+ add_library(X11::Xmu UNKNOWN IMPORTED)
+ set_target_properties(X11::Xmu PROPERTIES
+ IMPORTED_LOCATION "${X11_Xmu_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_Xmu_INCLUDE_PATH}"
+ INTERFACE_LINK_LIBRARIES "X11::Xt;X11::Xext;X11::X11")
+ endif ()
+
+ if (X11_Xpm_FOUND AND NOT TARGET X11::Xpm)
+ add_library(X11::Xpm UNKNOWN IMPORTED)
+ set_target_properties(X11::Xpm PROPERTIES
+ IMPORTED_LOCATION "${X11_Xpm_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_Xpm_INCLUDE_PATH}"
+ INTERFACE_LINK_LIBRARIES "X11::X11")
+ endif ()
+
+ if (X11_Xt_FOUND AND NOT TARGET X11::Xt)
+ add_library(X11::Xt UNKNOWN IMPORTED)
+ set_target_properties(X11::Xt PROPERTIES
+ IMPORTED_LOCATION "${X11_Xt_LIB}"
+ INTERFACE_INCLUDE_DIRECTORIES "${X11_Xt_INCLUDE_PATH}"
+ INTERFACE_LINK_LIBRARIES "X11::ICE;X11::SM;X11::X11")
+ endif ()
+endif()
diff --git a/cmake/Modules/Geant4DatasetDefinitions.cmake b/cmake/Modules/Geant4DatasetDefinitions.cmake
index e25dc7ea67..3a2ece8ed0 100644
--- a/cmake/Modules/Geant4DatasetDefinitions.cmake
+++ b/cmake/Modules/Geant4DatasetDefinitions.cmake
@@ -8,51 +8,51 @@
# - NDL
geant4_add_dataset(
NAME G4NDL
- VERSION 4.5
+ VERSION 4.6
FILENAME G4NDL
EXTENSION tar.gz
ENVVAR G4NEUTRONHPDATA
- MD5SUM fd29c45fe2de432f1f67232707b654c0
+ MD5SUM d07e43499f607e01f2c1ce06d7a09f3e
)
# - Low energy electromagnetics
geant4_add_dataset(
NAME G4EMLOW
- VERSION 7.7
+ VERSION 7.9
FILENAME G4EMLOW
EXTENSION tar.gz
ENVVAR G4LEDATA
- MD5SUM 0f650ea65c028e862a05293c10ec1089
+ MD5SUM d28a09f0c93243522512cf2a3a733348
)
# - Photon evaporation
geant4_add_dataset(
NAME PhotonEvaporation
- VERSION 5.3
+ VERSION 5.5
FILENAME G4PhotonEvaporation
EXTENSION tar.gz
ENVVAR G4LEVELGAMMADATA
- MD5SUM 8991682af997e71bdd87f72ee3b3e9ee
+ MD5SUM 707514c864414089af9671db0f656e35
)
# - Radioisotopes
geant4_add_dataset(
NAME RadioactiveDecay
- VERSION 5.3
+ VERSION 5.4
FILENAME G4RadioactiveDecay
EXTENSION tar.gz
ENVVAR G4RADIOACTIVEDATA
- MD5SUM ce1fe5e4d82d1a2ce89380e5e7e16cc8
+ MD5SUM 08abe2bcc0bcd1ac4bbe09f5ae69cdbe
)
# - Particle XS - replaces Neutron XS
geant4_add_dataset(
NAME G4PARTICLEXS
- VERSION 2.0
+ VERSION 2.1
FILENAME G4PARTICLEXS
EXTENSION tar.gz
ENVVAR G4PARTICLEXSDATA
- MD5SUM bc115502d4524ef7625557d9cab355c0
+ MD5SUM 24a68bb627a95629e2edcd098131d6b3
)
# - PII
diff --git a/cmake/Modules/Geant4InterfaceOptions.cmake b/cmake/Modules/Geant4InterfaceOptions.cmake
index 7f41bc8e33..1c5cb57dd3 100644
--- a/cmake/Modules/Geant4InterfaceOptions.cmake
+++ b/cmake/Modules/Geant4InterfaceOptions.cmake
@@ -11,10 +11,9 @@
#
# UI category : Built on supported platforms when Third Party
# library(libraries) available
-# G4UIQt : UNIX, WIN32 (Requires : Qt4)
-# G4UIWt : Web (Requires : Wt)
+# G4UIQt : UNIX, WIN32 (Requires : Qt5)
+# G4UIWt : Web (Requires : Wt) DEPRECATED
# G4UIXm : UNIX
-# G4UIXaw : DEPRECATED
#
# Vis Category: Always built on supported platforms
# DAWNFILE : UNIX, Win32
@@ -36,6 +35,8 @@
# Specific UI/Vis options are also handled here.
#
+# Prefer Legacy GL when using CMake >= 3.10
+set(OpenGL_GL_PREFERENCE "LEGACY")
#-----------------------------------------------------------------------
# Configure OpenInventor support
@@ -66,7 +67,7 @@ if(GEANT4_USE_INVENTOR)
endif()
endif()
- GEANT4_ADD_FEATURE(GEANT4_USE_INVENTOR "Build OpenInventor Driver")
+ geant4_add_feature(GEANT4_USE_INVENTOR "Build OpenInventor Driver")
endif()
@@ -74,29 +75,14 @@ endif()
# Configure Qt Support if needed (CROSSPLATFORM).
#
option(GEANT4_USE_QT "Build Geant4 with Qt support (Qt5 preferred, Qt4 fallback)" OFF)
-option(GEANT4_FORCE_QT4 "When building Qt support require Qt4 only" OFF)
-mark_as_advanced(GEANT4_FORCE_QT4)
if(GEANT4_USE_QT)
- # Find and configure Qt and OpenGL - Search for 5 first, then 4, unless
- # GEANT4_FORCE_QT4 is set. In this case only search for 4.
- # This is fine on Mac OS X because Qt will use Framework GL.
- # On WIN32 only, set QT_USE_IMPORTED_TARGETS. The Qt4 module will
- # otherwise set QT_LIBRARIES using the 'optimized A; debug Ad'
- # technique. CMake will then complain because when building DLLs we reset
- # LINK_INTERFACE_LIBRARIES and this cannot be passed a link of this form.
- # This means we have to recreate the imported targets later though...
- if(WIN32)
- set(QT_USE_IMPORTED_TARGETS ON)
- endif()
-
- if(NOT GEANT4_FORCE_QT4)
- find_package(Qt5Core QUIET)
- find_package(Qt5Gui QUIET)
- find_package(Qt5Widgets QUIET)
- find_package(Qt5OpenGL QUIET)
- find_package(Qt5PrintSupport QUIET)
- endif()
+ # Find and configure Qt and OpenGL - Search for 5 first, then 4
+ find_package(Qt5Core QUIET)
+ find_package(Qt5Gui QUIET)
+ find_package(Qt5Widgets QUIET)
+ find_package(Qt5OpenGL QUIET)
+ find_package(Qt5PrintSupport QUIET)
if(Qt5Core_FOUND
AND Qt5Gui_FOUND
@@ -107,20 +93,42 @@ if(GEANT4_USE_QT)
macro(qt4_wrap_cpp)
qt5_wrap_cpp(${ARGN})
endmacro()
- set(Qt5_USE_FILE_IN "${PROJECT_SOURCE_DIR}/cmake/Templates/Geant4UseQt5.cmake.in")
- set(QT_USE_FILE "${PROJECT_BINARY_DIR}/Geant4UseQt5.cmake")
- configure_file("${Qt5_USE_FILE_IN}" "${QT_USE_FILE}" @ONLY)
+
+ # 4/5 Compatibility
+ set(QT_QTCORE_LIBRARY Qt5::Core Qt5::PrintSupport)
+ set(QT_QTGUI_LIBRARY Qt5::Gui Qt5::Widgets)
+ set(QT_OPENGL_LIBRARY Qt5::Gui Qt5::OpenGL)
+ set(QT_LIBRARIES Qt5::OpenGL Qt5::Gui Qt5::PrintSupport Qt5::Widgets)
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)
else()
unset(Qt5Core_DIR CACHE)
unset(Qt5Gui_DIR CACHE)
unset(Qt5Widgets_DIR CACHE)
unset(Qt5OpenGL_DIR CACHE)
unset(Qt5PrintSupport_DIR CACHE)
+ # On WIN32 only, set QT_USE_IMPORTED_TARGETS. The Qt4 module will
+ # otherwise set QT_LIBRARIES using the 'optimized A; debug Ad'
+ # technique.
+ if(WIN32)
+ set(QT_USE_IMPORTED_TARGETS ON)
+ endif()
+
find_package(Qt4 REQUIRED COMPONENTS QtCore QtGui QtOpenGL)
+ if(Qt4_FOUND)
+ message(WARNING "Support for Qt4 in Geant4 is now deprecated and will be removed in the next release")
+ endif()
+
+ # 4/5 Compatibility
+ set(QT_QTCORE_LIBRARY Qt4::QtCore)
+ set(QT_QTGUI_LIBRARY Qt4::QtGui)
+ set(QT_OPENGL_LIBRARY Qt4::QtOpenGL)
+ set(QT_LIBRARIES Qt4::QtOpenGL Qt4::QtGui)
+ geant4_save_package_variables(Qt4 QT_QMAKE_EXECUTABLE)
endif()
find_package(OpenGL REQUIRED)
+ geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY OPENGL_glu_LIBRARY)
# Variables for export
execute_process(COMMAND ${QT_QMAKE_EXECUTABLE} -query QT_INSTALL_PREFIX OUTPUT_VARIABLE G4QTHOME OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -129,31 +137,35 @@ if(GEANT4_USE_QT)
# OpenGL part of Qt is in OpenGL component so mark the need to
# add OpenGL.
set(GEANT4_USE_OPENGL ON)
- GEANT4_ADD_FEATURE(GEANT4_USE_QT "Build Geant4 with Qt support")
+ geant4_add_feature(GEANT4_USE_QT "Build Geant4 with Qt support")
endif()
#-----------------------------------------------------------------------
# Configure Wt Support
#
-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)
- find_package(Boost REQUIRED signals)
-
- set(WT_DEFINITIONS "-DQT_NO_KEYWORDS")
-
- # Link the library to the Wt library, plus its dependents.
- list(APPEND Wt_LIBRARY "${Wt_HTTP_LIBRARY}" "${Boost_SIGNALS_LIBRARY}")
-
- # 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")
+ 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 OPENGL_glu_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()
#-----------------------------------------------------------------------
@@ -166,24 +178,20 @@ if(UNIX)
#
# Possible headers checks for needed network parts?
#
- GEANT4_ADD_FEATURE(GEANT4_USE_NETWORKDAWN "Build Dawn driver with Client/Server support")
+ 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)
- #
- # Possible header checks for needed network parts?
- #
- GEANT4_ADD_FEATURE(GEANT4_USE_NETWORKVRML "Build VRML driver with Client/Server support")
+ 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)
+ 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)
@@ -194,117 +202,52 @@ if(UNIX)
# - X11
if(GEANT4_USE_XM OR GEANT4_USE_OPENGL_X11 OR GEANT4_USE_RAYTRACER_X11 OR GEANT4_USE_INVENTOR)
find_package(X11 REQUIRED)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
- # We also require Xmu, which isn't found by default
- # Just the search in here, copying pattern from
- # FindX11. We don't add it to X11 libraries because it's only
- # needed in the OpenGL driver.
- #
- set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
- set(CMAKE_FIND_FRAMEWORK NEVER)
-
- set(X11_INC_SEARCH_PATH
- /usr/pkg/xorg/include
- /usr/X11R6/include
- /usr/X11R7/include
- /usr/include/X11
- /usr/openwin/include
- /usr/openwin/share/include
- /opt/graphics/OpenGL/include
- /opt/X11/include
- )
-
- set(X11_LIB_SEARCH_PATH
- /usr/pkg/xorg/lib
- /usr/X11R6/lib
- /usr/X11R7/lib
- /usr/openwin/lib
- /opt/X11/lib
- )
-
- find_path(X11_Xmu_INCLUDE_PATH X11/Xmu/Xmu.h ${X11_INC_SEARCH_PATH})
- find_library(X11_Xmu_LIBRARY Xmu ${X11_LIB_SEARCH_PATH})
- if(NOT X11_Xmu_LIBRARY OR NOT X11_Xmu_INCLUDE_PATH)
+ # 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()
- mark_as_advanced(X11_Xmu_INCLUDE_PATH X11_Xmu_LIBRARY)
- set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
- # END of finding Xmu
-
- # Check for additional required X11 libraries
# - Xt
if(NOT X11_Xt_FOUND)
message(FATAL_ERROR "could not find X11 Xt library and/or headers")
endif()
- # Create final list of X11 libraries needed for Geant4
- # - Motif/Inventor
- if(GEANT4_USE_XM OR GEANT4_USE_INVENTOR)
- set(X11_LIBRARIES ${X11_LIBRARIES} ${X11_Xt_LIB} ${X11_Xmu_LIBRARY})
- endif()
+ geant4_save_package_variables(X11
+ X11_X11_INCLUDE_PATH
+ X11_X11_LIB
+ X11_ICE_INCLUDE_PATH
+ X11_ICE_LIB
+ X11_SM_INCLUDE_PATH
+ X11_SM_LIB
+ X11_Xext_INCLUDE_PATH
+ X11_Xext_LIB
+ 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")
+ geant4_add_feature(GEANT4_USE_RAYTRACER_X11 "Build RayTracer driver with X11 support")
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 OPENGL_glu_LIBRARY)
- # - If we're on Apple, also find the X11 GL libraries and append them.
+ # - If we're on Apple, also find the XQuartz GL libraries and append t.
if(APPLE)
- # - This is for X11 GL drivers, so we DON'T want Framework!
- set(CMAKE_FIND_FRAMEWORK_SAVE ${CMAKE_FIND_FRAMEWORK})
- set(CMAKE_FIND_FRAMEWORK NEVER)
-
- find_path(OPENGL_X11_INCLUDE_DIR GL/gl.h
- PATHS /usr/X11R6/include /opt/X11/include
- NO_DEFAULT_PATH
- )
-
- find_library(OPENGL_X11_gl_LIBRARY GL
- PATHS /usr/X11R6/lib /opt/X11/lib
- NO_DEFAULT_PATH
- )
-
- find_library(OPENGL_X11_glu_LIBRARY GLU
- PATHS /usr/X11R6/lib /opt/X11/lib
- NO_DEFAULT_PATH
- )
-
- mark_as_advanced(
- OPENGL_X11_INCLUDE_DIR
- OPENGL_X11_gl_LIBRARY
- OPENGL_X11_glu_LIBRARY
- )
-
- if(NOT OPENGL_X11_INCLUDE_DIR)
- message(FATAL_ERROR "Apple X11 OpenGL GL/gl.h NOTFOUND")
- endif()
-
- if(NOT OPENGL_X11_gl_LIBRARY)
- message(FATAL_ERROR "Apple X11 OpenGL GL Library NOTFOUND")
- endif()
-
- if(NOT OPENGL_X11_glu_LIBRARY)
- message(FATAL_ERROR "Apple X11 OpenGL GLU Library NOTFOUND")
- endif()
-
- # Append the X11 GL libraries to the native paths
- set(OPENGL_INCLUDE_DIR ${OPENGL_INCLUDE_DIR} ${OPENGL_X11_INCLUDE_DIR})
- set(OPENGL_LIBRARIES ${OPENGL_LIBRARIES}
- ${OPENGL_X11_gl_LIBRARY}
- ${OPENGL_X11_glu_LIBRARY}
- )
-
- # Restore framework search
- set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_SAVE})
+ find_package(XQuartzGL REQUIRED)
+ geant4_save_package_variables(XQuartzGL XQuartzGL_INCLUDE_DIR XQuartzGL_gl_LIBRARY XQuartzGL_glu_LIBRARY)
endif()
# Add feature for X11 GL
- GEANT4_ADD_FEATURE(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support")
+ geant4_add_feature(GEANT4_USE_OPENGL_X11 "Build Geant4 OpenGL driver with X11 support")
endif()
# - Add need for OpenGL in X11 case
@@ -315,7 +258,9 @@ if(UNIX)
# - Motif last of all, then can add the feature
if(GEANT4_USE_XM)
find_package(Motif REQUIRED)
- GEANT4_ADD_FEATURE(GEANT4_USE_XM "Build Geant4 with Xm Support")
+ 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()
@@ -332,9 +277,8 @@ if(WIN32)
# 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_add_feature(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
+ geant4_save_package_variables(OpenGL OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY OPENGL_glu_LIBRARY)
endif()
endif()
diff --git a/cmake/Modules/Geant4MakeRules_cxx.cmake b/cmake/Modules/Geant4MakeRules_cxx.cmake
index 7cdc67e3f8..e71196dc06 100644
--- a/cmake/Modules/Geant4MakeRules_cxx.cmake
+++ b/cmake/Modules/Geant4MakeRules_cxx.cmake
@@ -81,7 +81,6 @@ if(MSVC)
# Extra modes
set(CMAKE_CXX_FLAGS_TESTRELEASE_INIT "-MDd -Zi -G4DEBUG_VERBOSE")
set(CMAKE_CXX_FLAGS_MAINTAINER_INIT "-MDd -Zi")
-
endif()
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/Geant4OptionalComponents.cmake b/cmake/Modules/Geant4OptionalComponents.cmake
index 701bc0df5f..28717565c8 100644
--- a/cmake/Modules/Geant4OptionalComponents.cmake
+++ b/cmake/Modules/Geant4OptionalComponents.cmake
@@ -35,14 +35,10 @@
# `GEANT4_USE_SYSTEM_CLHEP_GRANULAR` is available to configure
# use of the modular CLHEP libraries.
#
+set(_default_use_system_clhep OFF)
if(CLHEP_ROOT_DIR)
set(_default_use_system_clhep ON)
- # CLHEP_ROOT_DIR is non-standard for Config mode, so attempt temporary translation
- # into CMAKE_PREFIX_PATH. Could also add as PATHS to find_package,
- # but CMAKE_PREFIX_PATH has higher search priority.
list(INSERT CMAKE_PREFIX_PATH 0 "${CLHEP_ROOT_DIR}")
-else()
- set(_default_use_system_clhep OFF)
endif()
option(GEANT4_USE_SYSTEM_CLHEP "Use system CLHEP library" ${_default_use_system_clhep})
@@ -65,16 +61,9 @@ if(GEANT4_USE_SYSTEM_CLHEP)
set(__system_clhep_mode " (granular)")
endif()
- # Find CLHEP using config-mode (i.e. CLHEPConfig)
- # Note that the imported targets have different properties
- # depending on version:
- # >= 2.3.3.0 Imported targets have INTERFACE_INCLUDE_DIRECTORIES
- # >= 2.3.1.0 Imported targets are namespaced, all components available
- # < 2.3.1.0 Only CLHEP/CLHEPS available as imported targets
- #
- # By supplying components, CLHEP_LIBRARIES is populated with the
- # appropriate set of imported targets.
find_package(CLHEP 2.3.3.0 REQUIRED ${__g4_clhep_components} CONFIG)
+
+ geant4_save_package_variables(CLHEP CLHEP_DIR)
else()
set(CLHEP_FOUND TRUE)
# TODO: CLHEP_INCLUDE_DIRS still required for windows support
@@ -115,6 +104,8 @@ else()
if(GEANT4_USE_SYSTEM_EXPAT)
# If system package requested, find it or fail
find_package(EXPAT REQUIRED)
+ # Shim only needed until we require CMake >= 3.10
+ include("${CMAKE_CURRENT_LIST_DIR}/G4EXPATShim.cmake")
# Check version requirement externally to provide information
# on using internal expat.
@@ -131,65 +122,54 @@ EXPAT_LIBRARY = ${__badexpat_library}
are of insufficient version '${EXPAT_VERSION_STRING}' (Required >= 2.0.1)
Set the above CMake variables to point to an expat install of the required version, or set GEANT4_USE_SYSTEM_EXPAT to OFF to use Geant4's packaged version.")
endif()
+
+ # Backward compatibility for sources.cmake using the variable
+ set(EXPAT_LIBRARIES EXPAT::EXPAT)
+ geant4_save_package_variables(EXPAT EXPAT_INCLUDE_DIR EXPAT_LIBRARY)
else()
set(EXPAT_FOUND TRUE)
set(GEANT4_USE_BUILTIN_EXPAT TRUE)
set(EXPAT_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/source/externals/expat/include)
- if(BUILD_SHARED_LIBS)
- set(EXPAT_LIBRARIES G4expat)
- else()
- set(EXPAT_LIBRARIES G4expat-static)
- endif()
+ set(EXPAT_LIBRARIES G4expat)
endif()
endif()
-GEANT4_ADD_FEATURE(GEANT4_USE_SYSTEM_EXPAT "Using system EXPAT library")
+geant4_add_feature(GEANT4_USE_SYSTEM_EXPAT "Using system EXPAT library")
#-----------------------------------------------------------------------
-# Find required ZLIB package
-# Default to use internal zlib, otherwise point interface variables to
-# internal zlib
+# Find required ZLIB package, defaulting in internal
+# Rely on ZLIB::ZLIB imported target (since CMake 3.1)
option(GEANT4_USE_SYSTEM_ZLIB "Use system zlib library" OFF)
if(GEANT4_USE_SYSTEM_ZLIB)
find_package(ZLIB REQUIRED)
-
- # NB : FindZLIB on cmake < 2.8 does not set the ZLIB_INCLUDE_DIRS
- # variable, only the ZLIB_INCLUDE_DIR variable. Set the DIRS variable
- # here for backward compatibility.
- if(${CMAKE_VERSION} VERSION_LESS "2.8.0")
- set(ZLIB_INCLUDE_DIRS "${ZLIB_INCLUDE_DIR}")
- endif()
+ # Backward compatibility for sources.cmake using the variable
+ set(ZLIB_LIBRARIES ZLIB::ZLIB)
+ geant4_save_package_variables(ZLIB ZLIB_INCLUDE_DIR ZLIB_LIBRARY_DEBUG ZLIB_LIBRARY_RELEASE)
else()
set(ZLIB_FOUND TRUE)
set(GEANT4_USE_BUILTIN_ZLIB TRUE)
- set(ZLIB_INCLUDE_DIRS ${PROJECT_SOURCE_DIR}/source/externals/zlib/include
- ${PROJECT_BINARY_DIR}/source/externals/zlib)
- if(BUILD_SHARED_LIBS)
- set(ZLIB_LIBRARIES G4zlib)
- else()
- set(ZLIB_LIBRARIES G4zlib-static)
- endif()
+ set(ZLIB_LIBRARIES G4zlib)
endif()
-GEANT4_ADD_FEATURE(GEANT4_USE_SYSTEM_ZLIB "Using system zlib library")
+geant4_add_feature(GEANT4_USE_SYSTEM_ZLIB "Using system zlib library")
#-----------------------------------------------------------------------
# Optional Support for GDML - requires Xerces-C package
-#
+# Relies on XercesC::XercesC imported target (since CMake 3.5)
+set(_default_use_gdml OFF)
if(XERCESC_ROOT_DIR)
set(_default_use_gdml ON)
-else()
- set(_default_use_gdml OFF)
+ list(INSERT CMAKE_PREFIX_PATH 0 "${XERCESC_ROOT_DIR}")
endif()
-option(GEANT4_USE_GDML "Build Geant4 with GDML support" ${_default_use_gdml}
-)
+option(GEANT4_USE_GDML "Build Geant4 with GDML support" ${_default_use_gdml})
if(GEANT4_USE_GDML)
find_package(XercesC REQUIRED)
+ geant4_save_package_variables(XercesC XercesC_INCLUDE_DIR XercesC_LIBRARY_DEBUG XercesC_LIBRARY_RELEASE)
endif()
-GEANT4_ADD_FEATURE(GEANT4_USE_GDML "Building Geant4 with GDML support")
+geant4_add_feature(GEANT4_USE_GDML "Building Geant4 with GDML support")
#-----------------------------------------------------------------------
# Optional use of smart stack
@@ -204,37 +184,35 @@ GEANT4_ADD_FEATURE(GEANT4_USE_GDML "Building Geant4 with GDML support")
option(GEANT4_USE_SMARTSTACK "Use smart track stack" OFF)
mark_as_advanced(GEANT4_USE_SMARTSTACK)
-
-if(GEANT4_USE_SMARTSTACK)
- add_definitions(-DG4_USESMARTSTACK)
-endif()
-
-GEANT4_ADD_FEATURE(GEANT4_USE_SMARTSTACK "Use smart track stack")
+geant4_add_feature(GEANT4_USE_SMARTSTACK "Use smart track stack")
#-----------------------------------------------------------------------
-# Optional Support for TiMemory -- cross-language timing and memory
+# Optional Support for TiMemory -- timing, memory, HW counters, roofline, gperftools, etc.
# easily installed via:
-# "pip install timemory" and pointing TiMemory_DIR to
-# /share/cmake/TiMemory
-# e.g. -DTiMemory_DIR=/usr/local/share/cmake/TiMemory
-# for /usr/local/bin/pip
+# git clone https://github.com/NERSC/timemory.git timemory
+# pip install -vvv ./timemory
+# and setting timemory_DIR to `python -c "import sys; print(sys.prefix)"`
#
+set(_default_use_timemory OFF)
if(TiMemory_DIR)
set(_default_use_timemory ON)
-else()
- set(_default_use_timemory OFF)
endif()
-option(GEANT4_USE_TIMEMORY "Build Geant4 with TiMemory support"
- ${_default_use_timemory}
-)
+option(GEANT4_USE_TIMEMORY "Build Geant4 with TiMemory support" ${_default_use_timemory})
mark_as_advanced(GEANT4_USE_TIMEMORY)
if(GEANT4_USE_TIMEMORY)
- find_package(TiMemory REQUIRED)
+ set(_G4timemory_DEFAULT_COMPONENTS headers caliper papi gotcha gperftools-cpu vector)
+ set(G4timemory_COMPONENTS "${_G4timemory_DEFAULT_COMPONENTS}" CACHE STRING
+ "timemory INTERFACE libraries that activate various capabilities in toolkit")
+ set(G4timemory_VERSION 3.0)
+ set(timemory_FIND_COMPONENTS_INTERFACE geant4-timemory)
+ find_package(timemory ${G4timemory_VERSION} REQUIRED COMPONENTS ${G4timemory_COMPONENTS})
+ set(timemory_LIBRARIES geant4-timemory)
+ geant4_save_package_variables(timemory timemory_DIR)
endif()
-GEANT4_ADD_FEATURE(GEANT4_USE_TIMEMORY "Building Geant4 with TiMemory support")
+geant4_add_feature(GEANT4_USE_TIMEMORY "Building Geant4 with TiMemory support")
#-----------------------------------------------------------------------
# Optional support for G3TOG4 convertion interface.
@@ -261,6 +239,9 @@ set(GEANT4_USOLIDS_SHAPES
BOX
CONS
CTUBS
+ ELLIPSOID
+ ELLIPTICALCONE
+ ELLIPTICALTUBE
EXTRUDEDSOLID
HYPE
GENERICPOLYCONE
@@ -309,7 +290,14 @@ 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)
+ # Shim until VecGeom supports config mode properly
+ include("${CMAKE_CURRENT_LIST_DIR}/G4VecGeomShim.cmake")
+ # Backward Compatibility
+ set(VECGEOM_LIBRARIES VecGeom::VecGeom)
+
+ geant4_save_package_variables(VecGeom VecGeom_DIR)
if(GEANT4_USE_ALL_USOLIDS)
set(G4GEOM_USE_USOLIDS TRUE)
@@ -321,11 +309,6 @@ if(GEANT4_USE_ALL_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
endforeach()
GEANT4_ADD_FEATURE(GEANT4_USE_USOLIDS "Replacing Geant4 solids with VecGeom equivalents for ${GEANT4_USE_PARTIAL_USOLIDS_SHAPE_LIST} (EXPERIMENTAL)")
endif()
-
- # Always need defs/includes for VecGeom until that supports usage reqs...
- # Or can create a "G4VecGeom" internal target to propagate these.
- add_definitions(${VECGEOM_DEFINITIONS})
- include_directories(${VECGEOM_INCLUDE_DIR} ${VECGEOM_EXTERNAL_INCLUDES})
endif()
@@ -337,9 +320,17 @@ mark_as_advanced(GEANT4_USE_FREETYPE)
if(GEANT4_USE_FREETYPE)
find_package(Freetype REQUIRED)
+ # Shim only needed until we require CMake >= 3.10
+ include("${CMAKE_CURRENT_LIST_DIR}/G4FreetypeShim.cmake")
+
+ geant4_save_package_variables(Freetype
+ FREETYPE_INCLUDE_DIR_freetype2
+ FREETYPE_INCLUDE_DIR_ft2build
+ FREETYPE_LIBRARY_DEBUG
+ FREETYPE_LIBRARY_RELEASE)
endif()
-GEANT4_ADD_FEATURE(GEANT4_USE_FREETYPE "Building Geant4 analysis library with Freetype support")
+geant4_add_feature(GEANT4_USE_FREETYPE "Building Geant4 analysis library with Freetype support")
#-----------------------------------------------------------------------
# Optional support for HDF5
@@ -351,35 +342,19 @@ mark_as_advanced(GEANT4_USE_HDF5)
if(GEANT4_USE_HDF5)
find_package(HDF5 1.8 REQUIRED)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4HDF5Shim.cmake")
+ # Backward compatibility
+ set(HDF5_LIBRARIES Geant4::HDF5)
- # If we're in MT mode, found HDF5 must also support MT
- if(GEANT4_BUILD_MULTITHREADED)
- include(CheckCXXSymbolExists)
- set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE_DIRS}")
- check_cxx_symbol_exists(H5_HAVE_THREADSAFE "H5pubconf.h" GEANT4_HAVE_H5_HAVE_THREADSAFE)
- unset(CMAKE_REQUIRED_INCLUDES)
-
- if(NOT GEANT4_HAVE_H5_HAVE_THREADSAFE)
- message(FATAL_ERROR
- "Found an install of HDF5, but it was not built with support for thread safety. "
- "Either build Geant4 in single threaded mode, or use/reinstall HDF5 with "
- "thread safety enabled. See HDF5's install guides, available from https://support.hdfgroup.org/HDF5/release/, for instructions on this.\n"
- )
+ # May have found via config mode...
+ if(HDF5_DIR)
+ geant4_save_package_variables(HDF5 HDF5_DIR)
+ else()
+ # Otherwise almost certainly used compiler wrapper
+ geant4_save_package_variables(HDF5
+ HDF5_C_COMPILER_EXECUTABLE
+ HDF5_C_LIBRARY_hdf5)
endif()
- endif()
-
- # As FindHDF5 does not yet supply imported targets, we
- # create an internal INTERFACE target to wrap these.
- # This still hard-codes include/library paths, but limits it
- # to one place. Later, we'll create proper imported targets
- # with re-finds but for now this is the best minimally invasive proceedure
- add_library(G4HDF5 INTERFACE)
- target_include_directories(G4HDF5 INTERFACE ${HDF5_INCLUDE_DIRS})
- target_link_libraries(G4HDF5 INTERFACE ${HDF5_LIBRARIES})
- install(TARGETS G4HDF5 EXPORT Geant4LibraryDepends)
-
- # Override HDF5_LIBRARIES for back compatibility
- set(HDF5_LIBRARIES G4HDF5)
endif()
GEANT4_ADD_FEATURE(GEANT4_USE_HDF5 "Building Geant4 analysis library with HDF5 support")
diff --git a/cmake/Modules/IntelCompileFeatures.cmake b/cmake/Modules/IntelCompileFeatures.cmake
index 464b124403..bd3ee9067c 100644
--- a/cmake/Modules/IntelCompileFeatures.cmake
+++ b/cmake/Modules/IntelCompileFeatures.cmake
@@ -1,115 +1,30 @@
-# - Rough n'Ready setup of CXX compile features for Intel
+# - CXX compile features for Intel to support C++14/17 on CMake from 3.8
#
#-----------------------------------------------------------------------
# Add compile features for Intel - should eventually be placed
# into a module, as it will need exporting for use by clients
if(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
- # Now version selection, focus on version 15 and above as that is the
- # baseline - means that this isn't comprehensive for lower versions
+ # CMake 3.8,3.9,3.10 support up to 16.0, c++14
+ # 3.11,3,12,3.13,3.14,3.15,3.16 support up to 18, c++17
+ # So need to provide addons to provide c++17 on 3.8-3.10
+ if(CMAKE_VERSION VERSION_LESS 3.11)
+ if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
+ set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-Qstd=c++17")
+ set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
- # c++98 should be supported for all(?) versions we may encounter, and
- # make it the default as required for compilers that recognise standards
- set(CMAKE_CXX_STANDARD_DEFAULT "98")
-
- set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
- set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
-
- if(NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0))
- set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
- set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
-
- # 15 and higher also allow c++14...
- set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
- set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
- endif()
-
- # Now the compile features... Eventually want to do these in the same
- # way as CMake does (using compile time checks on compiler version
- # etc - may also allow checks on GCC version in use), but for now
- # *assume* that the underlying library will support.
- if(NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0))
- set(CMAKE_CXX14_COMPILE_FEATURES
- cxx_contextual_conversions
- cxx_generic_lambdas
- cxx_aggregate_default_initializers
- cxx_attribute_deprecated
- cxx_digit_separators
- )
- endif()
-
- if(NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0))
- set(CMAKE_CXX14_COMPILE_FEATURES
- ${CMAKE_CXX14_COMPILE_FEATURES}
- cxx_binary_literals
- cxx_decltype_auto #cxx_return_type_deduction?
- cxx_lambda_init_captures
- )
- if(NOT WIN32)
- list(APPEND CMAKE_CXX14_COMPILE_FEATURES cxx_attribute_deprecated)
- endif()
-
- set(CMAKE_CXX11_COMPILE_FEATURES
- cxx_alias_templates
- cxx_alignas
- cxx_alignof
- cxx_attributes
- cxx_auto_type
- cxx_constexpr
- cxx_decltype_incomplete_return_types
- cxx_decltype
- cxx_default_function_template_args
- cxx_defaulted_functions
- cxx_defaulted_move_initializers
- cxx_delegating_constructors
- cxx_deleted_functions
- cxx_enum_forward_declarations
- cxx_explicit_conversions
- cxx_extended_friend_declarations
- cxx_extern_templates
- cxx_final
- cxx_func_identifier
- cxx_generalized_initializers
- cxx_inheriting_constructors
- cxx_inline_namespaces
- cxx_lambdas
- cxx_local_type_template_args
- cxx_long_long_type
- cxx_noexcept
- cxx_nonstatic_member_init
- cxx_nullptr
- cxx_override
- cxx_range_for
- cxx_raw_string_literals
- cxx_reference_qualified_functions
- cxx_right_angle_brackets
- cxx_rvalue_references
- cxx_sizeof_member
- cxx_static_assert
- cxx_strong_enums
- cxx_trailing_return_types
- cxx_unicode_literals
- cxx_uniform_initialization # Not explicit in Intel notes but should do...
- cxx_user_literals
- cxx_variadic_macros
- cxx_variadic_templates
- )
-
- if(UNIX)
- list(APPEND CMAKE_CXX11_COMPILE_FEATURES
- cxx_unrestricted_unions # Linux/OSX only
- cxx_thread_local # Linux/OSX only
- )
+ list(APPEND CMAKE_CXX17_COMPILE_FEATURES cxx_std_17)
+ set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} "${CMAKE_CXX17_COMPILE_FEATURES}")
+ endif()
+ else()
+ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
+ set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
+ set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
+ list(APPEND CMAKE_CXX17_COMPILE_FEATURES cxx_std_17)
+ set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} "${CMAKE_CXX17_COMPILE_FEATURES}")
+ endif()
endif()
endif()
- # always available?
- set(CMAKE_CXX98_COMPILE_FEATURES cxx_template_template_parameters)
- set(CMAKE_CXX_COMPILE_FEATURES
- ${CMAKE_CXX98_COMPILE_FEATURES}
- ${CMAKE_CXX11_COMPILE_FEATURES}
- ${CMAKE_CXX14_COMPILE_FEATURES}
- )
endif()
-
-
diff --git a/cmake/Modules/MSVCCompileFeatures.cmake b/cmake/Modules/MSVCCompileFeatures.cmake
new file mode 100644
index 0000000000..937288fe49
--- /dev/null
+++ b/cmake/Modules/MSVCCompileFeatures.cmake
@@ -0,0 +1,35 @@
+#.rst:
+# MSVC Compile Features for Geant4
+# --------------------------------
+#
+# Due to use of C++17 features in visualization on Windows, Geant4 requires
+# use of VS 2017 update 3 or newer. CMake 3.10 and higher support this out
+# of the box, but with our minimum requirement of 3.8, we add this shim
+# to:
+#
+# 1) Check the version requirement
+# 2) Set the compile flags/features when using CMake < 3.10
+#
+if(MSVC)
+ # Require MSVC that supports standard flags and std::filesystem
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.20)
+ message(FATAL_ERROR "Geant4 requires MSVC 19.20 (Visual Studio 2019 Version 16.0) or newer")
+ else()
+ # Set cxxstd flags on CMake < 3.10
+ if(CMAKE_VERSION VERSION_LESS 3.10)
+ # VS 2015 Update 3 and above support language standard level flags,
+ # with the default and minimum level being C++14.
+ set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+ set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+ set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
+ set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
+ set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std:c++14")
+ set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std:c++14")
+ set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++17")
+ set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++17")
+ list(APPEND CMAKE_CXX17_COMPILE_FEATURES cxx_std_17)
+ set(CMAKE_CXX_COMPILE_FEATURES ${CMAKE_CXX_COMPILE_FEATURES} "${CMAKE_CXX17_COMPILE_FEATURES}")
+ endif()
+ endif()
+endif()
+
diff --git a/cmake/Modules/genwindef/LibSymbolInfo.cpp b/cmake/Modules/genwindef/LibSymbolInfo.cpp
deleted file mode 100644
index 0f0fff5c74..0000000000
--- a/cmake/Modules/genwindef/LibSymbolInfo.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-//==========================================
-// Matt Pietrek
-// Microsoft Systems Journal, April 1998
-// Program: LibDump
-// FILE: LibSymbolInfo.CPP
-//==========================================
-
-// LibSymbolInfo.cpp: implementation of the CLibSymbolInfo class.
-//
-//////////////////////////////////////////////////////////////////////
-
-
-#include "LibSymbolInfo.h"
-
-using namespace std;
-
-
-#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD_PTR)(ptr) + (DWORD_PTR)(addValue))
-
-/////////////////////////////////////////////////////////////////////////////
-// CLibSymbolInfo
-
-CLibSymbolInfo::CLibSymbolInfo()
-{
-}
-
-CLibSymbolInfo::~CLibSymbolInfo()
-{
-}
-
-//=============================================================================
-// Function: DumpSymbols
-//
-// Parameters:
-// LPTSTR lpszLibPathName - The library file path name
-// CStdioFile* pFile - Address of the file in which to dump the symbols
-//
-// Description:
-//
-// Given a library file path name, the function dumps the symbol info into the file
-// pointed to by pFile.
-//=============================================================================
-BOOL CLibSymbolInfo::DumpSymbols(LPTSTR lpszLibPathName, ostream& pFile)
-{
- if(lpszLibPathName == NULL || pFile.bad() ) {
- assert(lpszLibPathName != NULL);
- assert(pFile.good());
- m_strErrorMsg.assign("NULL or Invalid file handle.");
- return FALSE;
- }
-
- if(!Dump(lpszLibPathName, pFile)) return FALSE;
- return TRUE;
-}
-
-//=============================================================================
-// Function: Dump
-//
-// Parameters:
-// As mentioned above.
-//
-// Description:
-//
-// Depending on the value specified in / the routine dumps/greps
-// the symbo info.
-//=============================================================================
-BOOL CLibSymbolInfo::Dump(LPTSTR lpszLibPathName, ostream& pFile)
-{
- string sBuff;
- MEMORY_MAPPED_FILE libFile(lpszLibPathName);
-
- // Ensure that the file mapping worked
- if( FALSE == libFile.IsValid() ) {
- m_strErrorMsg = "Unable to access file ";
- m_strErrorMsg+= lpszLibPathName;
- return FALSE;
- }
- // All COFF libraries start with the string "!\n". Verify that this
- // string is at the beginning of the mapped file
-
- PSTR pArchiveStartString = (PSTR)libFile.GetBase();
-
- if ( 0 != strncmp( pArchiveStartString, IMAGE_ARCHIVE_START,
- IMAGE_ARCHIVE_START_SIZE ) ) {
- m_strErrorMsg.assign("Not a valid COFF LIB file.");
- return FALSE;
- }
-
- // Point to the first archive member. This entry contains the LIB symbols,
- // and immediately follows the archive start string ("!\n")
- PIMAGE_ARCHIVE_MEMBER_HEADER pMbrHdr;
- pMbrHdr = MakePtr( PIMAGE_ARCHIVE_MEMBER_HEADER, pArchiveStartString,
- IMAGE_ARCHIVE_START_SIZE );
-
- // First DWORD after this member header is a symbol count
- PDWORD pcbSymbols = (PDWORD)(pMbrHdr + 1); // Pointer math!
-
- // The symbol count is stored in big endian format, so adjust as
- // appropriate for the target architecture
- DWORD cSymbols = ConvertBigEndian( *pcbSymbols );
-
- // Following the symbol count is an array of offsets to archive members
- // (essentially, embedded .OBJ files)
- PDWORD pMemberOffsets = pcbSymbols + 1; // Pointer math!
-
- // Following the array of member offsets is an array of offsets to symbol
- // names.
- PSTR pszSymbolName = MakePtr( PSTR, pMemberOffsets, 4 * cSymbols );
-
- //
- // Loop through every symbol in the first archive member
- //
- for ( unsigned i = 0; i < cSymbols; i++ )
- {
- DWORD offset;
-
- // The offsets to the archive member that contains the symbol is stored
- // in big endian format, so convert it appropriately.
- offset = ConvertBigEndian( *pMemberOffsets );
-
- // Call DisplayLibInfoForSymbol, which figures out what kind of symbol
- // it is. The "IsRegularLibSymbol" filters out symbols that are
- // internal to the linking process
- if ( IsRegularLibSymbol( pszSymbolName ) ) {
- string symbol(pszSymbolName);
- if (IsFiltedSymbol(symbol) ) {
- pFile << symbol << endl;
- }
- }
- // Advanced to the next symbol offset and name. The MemberOffsets
- // array has fixed length entries, while the symbol names are
- // sequential null-terminated strings
- pMemberOffsets++;
- pszSymbolName += strlen(pszSymbolName) + 1;
- }
- return TRUE;
-}
-
-//=============================================================================
-// Filters out symbols that are internal to the linking process, and which
-// the programmer never explicitly sees.
-//=============================================================================
-BOOL CLibSymbolInfo::IsRegularLibSymbol( PSTR pszSymbolName )
-{
- if ( 0 == strncmp( pszSymbolName, "__IMPORT_DESCRIPTOR_", 20 ) )
- return FALSE;
-
- if ( 0 == strncmp( pszSymbolName, "__NULL_IMPORT_DESCRIPTOR", 24 ) )
- return FALSE;
-
- if ( strstr( pszSymbolName, "_NULL_THUNK_DATA" ) )
- return FALSE;
-
- return TRUE;
-}
-//=============================================================================
-// Filters out symbols that are not needed....
-//=============================================================================
-BOOL CLibSymbolInfo::IsFiltedSymbol( string& symbolName )
-{
- // Filter problematic symbols for Win64
- if ( symbolName.substr(0,3) == "_CT" ) return FALSE;
- if ( symbolName.substr(0,3) == "_TI" ) return FALSE;
- // Filter other symbols
- if ( symbolName.substr(0,2) == "__" )
- return FALSE;
- if ( symbolName.substr(0,3) == "??_" && symbolName[3] != '0') // Keep 'operator/=' [??_0]
- return FALSE;
- if( symbolName[0] == '_') {
- symbolName.erase(0, 1); // C functions ...
- }
- // Filter the internal Boost symbols
- if (symbolName.find ("detail@boost") != string::npos )
- return FALSE;
- if (symbolName.find ("details@boost") != string::npos )
- return FALSE;
- return TRUE;
-}
-
-//=============================================================================
-// Converts from big endian to little endian numbers.
-//=============================================================================
-DWORD CLibSymbolInfo::ConvertBigEndian(DWORD bigEndian)
-{
- DWORD temp = 0;
-
- temp |= bigEndian >> 24;
- temp |= ((bigEndian & 0x00FF0000) >> 8);
- temp |= ((bigEndian & 0x0000FF00) << 8);
- temp |= ((bigEndian & 0x000000FF) << 24);
-
- return temp;
-}
-
-string CLibSymbolInfo::GetLastError() const
-{
- return m_strErrorMsg;
-}
-
-
-MEMORY_MAPPED_FILE::MEMORY_MAPPED_FILE( PSTR pszFileName ) {
-
- //
- // Given a filename, the constructor opens a file handle, creates a file
- // mapping, and maps the entire file into memory.
- //
- m_hFile = INVALID_HANDLE_VALUE;
- m_hFileMapping = 0;
- m_pMemoryMappedFileBase = 0;
- m_cbFile = 0;
- m_errCode = errMMF_FileOpen; // Initial error code: not found
- // First get a file handle
- m_hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE)0);
-
- if ( m_hFile == INVALID_HANDLE_VALUE )
- {
- m_errCode = errMMF_FileOpen;
- return;
- }
- m_cbFile = ::GetFileSize( m_hFile, 0 );
- // Now, create a file mapping
- m_hFileMapping = CreateFileMapping(m_hFile,NULL, PAGE_READONLY, 0, 0,NULL);
- if ( m_hFileMapping == 0 )
- {
- // Oops. Something went wrong. Clean up.
- CloseHandle(m_hFile);
- m_hFile = INVALID_HANDLE_VALUE;
- m_errCode = errMMF_FileMapping;
- return;
- }
- m_pMemoryMappedFileBase = (PCHAR)MapViewOfFile( m_hFileMapping,
- FILE_MAP_READ, 0, 0, 0);
- if ( m_pMemoryMappedFileBase == 0 )
- {
- // Oops. Something went wrong. Clean up.
- CloseHandle(m_hFileMapping);
- m_hFileMapping = 0;
- CloseHandle(m_hFile);
- m_hFile = INVALID_HANDLE_VALUE;
- m_errCode = errMMF_MapView;
- return;
- }
- m_errCode = errMMF_NoError;
-}
-
-MEMORY_MAPPED_FILE::~MEMORY_MAPPED_FILE(void)
-{
- // Clean up everything that was created by the constructor
- if ( m_pMemoryMappedFileBase )
- UnmapViewOfFile( m_pMemoryMappedFileBase );
-
- if ( m_hFileMapping )
- CloseHandle( m_hFileMapping );
-
- if ( m_hFile != INVALID_HANDLE_VALUE )
- CloseHandle( m_hFile );
-
- m_errCode = errMMF_FileOpen;
-}
diff --git a/cmake/Modules/genwindef/genwindef.cpp b/cmake/Modules/genwindef/genwindef.cpp
deleted file mode 100644
index 36aec087cd..0000000000
--- a/cmake/Modules/genwindef/genwindef.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-
-#ifdef _WIN32
- // Disable a warning in Boost program_options headers:
- // inconsistent linkage in program_options/variables_map.hpp
- #pragma warning ( disable : 4273 )
- #define popen _popen
- #define pclose _pclose
- #define fileno _fileno
- #include
-#endif
-
-// Include files----------------------------------------------------------------
-#include
-#include
-#include
-#include
-#include "LibSymbolInfo.h"
-
-using namespace std;
-
-namespace windef {
- void usage(){
- cerr << "Usage: genwindef [-l ] [-o | exports.def] " << endl;
- exit(1);
- }
-}
-
-//--- Command main program-----------------------------------------------------
-int main ( int argc, char** argv )
-//-----------------------------------------------------------------------------
-{
- string outfile("exports.def");
- string library("UnknownLib");
- string objfiles;
- bool debug(false);
-
- int arg;
- if (argc < 3) windef::usage();
- arg = 1;
- while (argv[arg][0] == '-') {
- if (strcmp(argv[arg], "--") == 0) {
- windef::usage();
- }
- else if (strcmp(argv[arg], "-l") == 0) {
- arg++;
- if (arg == argc) windef::usage();
- library = argv[arg];
- }
- else if (strcmp(argv[arg], "-o") == 0) {
- arg++;
- if (arg == argc) windef::usage();
- outfile = argv[arg];
- }
- arg++;
- }
- if (arg == argc) windef::usage();
- for (arg; arg < argc; arg++) {
- objfiles += argv[arg];
- if( arg+1 < argc) objfiles += " ";
- }
-
- CLibSymbolInfo libsymbols;
- ofstream out(outfile.c_str());
- if(out.fail()) {
- cerr << "windef: Error opening file " << outfile << endl;
- return 1;
- }
- out << "LIBRARY " << library << endl;
- out << "EXPORTS" << endl;
-
- libsymbols.DumpSymbols(const_cast(objfiles.c_str()), out);
-
- out.close();
-
-
- return 0;
-}
-
-
-
diff --git a/cmake/Templates/Geant4Config.cmake.in b/cmake/Templates/Geant4Config.cmake.in
index c18f73ccf9..fa9c1598a2 100644
--- a/cmake/Templates/Geant4Config.cmake.in
+++ b/cmake/Templates/Geant4Config.cmake.in
@@ -28,7 +28,7 @@
# By default only the core (or kernel) of Geant4 is activated by this
# module. You can specify additional components of Geant4 through the
# COMPONENTS argument to find_package. By default, all core libraries of
-# Geant4 are appended to the Geant4_LIBRARIES variable. Specifiying
+# Geant4 are appended to the Geant4_LIBRARIES variable. Specifying
# additional components will enable a check on the existence of these
# components, with the following per component variables being set:
#
@@ -44,9 +44,12 @@
# generally activated by compile definitions, and in these cases the
# appropriate definition will be added to the Geant4_DEFINITIONS component.
#
-# If you specify components and use the REQUIRED option to find_package,
-# then the module will issue a FATAL_ERROR if this build of Geant4 does
-# not have the requested component(s).
+# If you use the REQUIRED and/or COMPONENTS arguments of find_package to
+# specify components, then the module will issue a FATAL_ERROR if the
+# found Geant4 does not have the requested component(s). Any components
+# specified through the OPTIONAL_COMPONENTS argument will be enabled
+# only if the found Geant4 supports them, with no error being raised if
+# they are not supported.
#
# The components available generally correspond to configurations of
# the Geant4 libraries or optional extras that Geant4 can be built with.
@@ -56,12 +59,14 @@
# static (Static libraries available. Using this component
# when static libraries are available will result in
# Geant4_LIBRARIES being populated with the static
-# versions of the Geant4 libraries. It does not
+# versions of the Geant4 libraries. It does not, and cannot,
# guarantee the use of static third party libraries.)
# multithreaded (Libraries are multithread capable)
#
# usolids (Geant4 solids are replaced with USolids equivalents)
#
+# smartstack (G4event library G4StackManager uses G4SmartTrackStack)
+#
# Optional Components
# -------------------
# gdml (GDML support)
@@ -74,7 +79,6 @@
#
# motif (Motif-X11/OpenGL Graphical User Interface)
# qt (Qt4/OpenGL Graphical User Interface)
-# wt (Wt/OpenGL Web based Graphical User Interface)
#
# vis_network_dawn (Client/Server network interface to DAWN visualization)
# vis_network_vrml (Client/Server network interface to VRML visualization)
@@ -139,6 +143,13 @@
#
#-----------------------------------------------------------------------
+# 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
#
@@ -174,68 +185,23 @@ set(Geant4_CXXSTD "c++@GEANT4_BUILD_CXXSTD@")
# Set the base compile definitions required to use Geant4 if the variable
# does not exist (we do this to ensure multiple calls to find_package
# don't overwrite previous invocations)
-# Components may append to this
-# We set VIS/UI_USE directly here, because for now they are, unfortunately,
-# always needed for the Examples.
-# However, they ARE NOT required to use Geant4 itself.
-#
+# Components may append to this, but should prefer usage requirements
+# via INTERFACE_COMPILE_DEFINITIONS
if(NOT Geant4_DEFINITIONS)
set(Geant4_DEFINITIONS @GEANT4_CORE_DEFINITIONS@)
endif()
-# We set VIS/UI_USE directly here, because for now they are, unfortunately,
-# always needed for the Examples.
-# However, they ARE NOT required to use Geant4 itself.
-#
-if(NOT G4UI_NONE)
- list(APPEND Geant4_DEFINITIONS -DG4UI_USE)
-endif()
-
-if(NOT G4VIS_NONE)
- list(APPEND Geant4_DEFINITIONS -DG4VIS_USE)
-endif()
-
#-----------------------------------------------------------------------
# Configure the path to the Geant4 headers, using a relative path if
# possible. This is only known at CMake time, so we expand a CMake
# supplied variable.
#
@GEANT4_INCLUDE_DIR_SETUP@
+set(Geant4_INCLUDE_DIRS "${Geant4_INCLUDE_DIR}")
-@GEANT4_MODULE_PATH_SETUP@
-
-#-----------------------------------------------------------------------
-# Re-Configure paths for third party packages.
-# - Refind any needed external/imported targets.
-# - Relies on same/compatible packages being in the paths CMake uses to
-# search for packages
-
-#-----------------------------------------------------------------------
-# If we have used imported targets for any third party packages, reimport
-# them here, BEFORE we try and import the Geant4 targets which are
-# linked against them.
-# Generally, we try and use a standard find_package, but try and force it
-# to find the actual package we were built against.
-# THIS IS NOT PERFECT, AS IT CANNOT GUARANTEE A BINARY COMPATIBLE
-# PACKAGE IS FOUND.
-#@GEANT4_THIRD_PARTY_IMPORT_SETUP@
-
-#-----------------------------------------------------------------------
-# Configure the path(s) to third party headers.
-# This is not a perfect solution to recording dependencies on external
-# libraries, but it does ensure that users of THIS Geant4 will pick up
-# those it was built against.
-# Library dependencies are generally handled through the
-# Geant4LibraryDepends file listed below (apart from one exception!)
-#
-set(Geant4_THIRD_PARTY_INCLUDE_DIRS @GEANT4_THIRD_PARTY_INCLUDES@)
-
-#-----------------------------------------------------------------------
-# Construct overall include path for using Geant4
-#
-set(Geant4_INCLUDE_DIRS
- ${Geant4_INCLUDE_DIR}
- ${Geant4_THIRD_PARTY_INCLUDE_DIRS})
+# Push our own module path onto the CMake one to help refind dependencies
+# - Popped at end of this module
+list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}/Modules")
#-----------------------------------------------------------------------
# Data Resources
@@ -256,29 +222,26 @@ unset(Geant4_DATASET_DESCRIPTIONS)
#-----------------------------------------------------------------------
# Setup components.
-# THIS SECTION IS VERY ROUGH AND VERY MUCH CUT AND PASTE.
-# TODO: INVESTIGATE TIDY UP WITH LESS PROCESSING.
#-----------------------------------------------------------------------
# Many components are simply present as parts of libraries or always built
# but require additional compile definitions.
#
+# Optionally import build-time package settings to provide hard values
+# for find_package to work with
+include("${CMAKE_CURRENT_LIST_DIR}/Geant4PackageCache.cmake" OPTIONAL)
+
# Builtin/External packages
set(Geant4_system_clhep_FOUND @GEANT4_USE_SYSTEM_CLHEP@)
if(Geant4_system_clhep_FOUND)
set(Geant4_builtin_clhep_FOUND FALSE)
set(Geant4_system_clhep_ISGRANULAR @GEANT4_USE_SYSTEM_CLHEP_GRANULAR@)
-
- # TODO: Review hard-coding of build-time CLHEP_DIR, as this prevents
- # full relocatability, but minimizes client configuration. It is
- # also required by the testing system (due to tests/example *builds*
- # being tests.
- # TODO: See if hard-coded variables can be stored in an optional
- # "build settings" file that can be optionally installed/included
- set(CLHEP_DIR "@CLHEP_DIR@")
- find_package(CLHEP @CLHEP_VERSION@ EXACT REQUIRED @__g4_clhep_components@ CONFIG)
-
- # HACK: Explicitly use include_directories.
+ if(Geant4_system_clhep_ISGRANULAR)
+ find_dependency(CLHEP @CLHEP_VERSION@ EXACT COMPONENTS @__g4_clhep_components@ CONFIG)
+ else()
+ find_dependency(CLHEP @CLHEP_VERSION@ EXACT CONFIG)
+ endif()
+ # Explicitly use include_directories.
# - Geant4 and CLHEP use full imported targets with usage requirements,
# but ROOT (used in the examples), ignores usage requirements in dictionary
# generation steps.
@@ -292,13 +255,19 @@ else()
endif()
set(Geant4_builtin_expat_FOUND @GEANT4_USE_BUILTIN_EXPAT@)
+if(NOT Geant4_builtin_expat_FOUND)
+ find_dependency(EXPAT @EXPAT_VERSION_STRING@)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4EXPATShim.cmake")
+endif()
+
set(Geant4_builtin_zlib_FOUND @GEANT4_USE_BUILTIN_ZLIB@)
+if(NOT Geant4_builtin_zlib_FOUND)
+ find_dependency(ZLIB @ZLIB_VERSION_STRING@)
+endif()
# - Multithreading
set(Geant4_multithreaded_FOUND @GEANT4_BUILD_MULTITHREADED@)
if(Geant4_multithreaded_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS multithreaded)
-
# - Define variable to indicate TLS model used
set(Geant4_TLS_MODEL "@GEANT4_BUILD_TLS_MODEL@")
if(Geant4_TLS_MODEL STREQUAL "auto")
@@ -309,29 +278,21 @@ endif()
# - GDML
set(Geant4_gdml_FOUND @GEANT4_USE_GDML@)
if(Geant4_gdml_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS gdml)
+ find_dependency(XercesC @XercesC_VERSION@)
endif()
# - Smart track stack
-set(Geant4_use_smartstack_FOUND @GEANT4_USE_SMARTSTACK@)
-if(Geant4_use_smartstack_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS smartstack)
- list(APPEND Geant4_DEFINITIONS -DG4_USESMARTSTACK)
-endif()
+set(Geant4_smartstack_FOUND @GEANT4_USE_SMARTSTACK@)
# - TiMemory
set(Geant4_timemory_FOUND @GEANT4_USE_TIMEMORY@)
if(Geant4_timemory_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS timemory)
- set(_geant4_timemory_dir "@TiMemory_DIR@")
- # always use same installation
- unset(TiMemory_DIR CACHE)
- set(TiMemory_DIR "${_geant4_timemory_dir}" CACHE PATH
- "TiMemory installation of Geant4")
- find_package(TiMemory REQUIRED QUIET)
- include_directories(${TiMemory_INCLUDE_DIRS})
- set(_geant4_use_timemory_library ON)
-endif(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@)
+ set(timemory_LIBRARIES @timemory_FIND_COMPONENTS_INTERFACE@)
+endif()
# - G3toG4
set(Geant4_g3tog4_FOUND @GEANT4_USE_G3TOG4@)
@@ -339,66 +300,79 @@ if(Geant4_g3tog4_FOUND)
if(Geant4_FIND_REQUIRED_g3tog4)
set(_geant4_use_g3tog4_library ON)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS g3tog4)
endif()
-# - Usolids
+# - VecGeom
set(Geant4_usolids_FOUND @GEANT4_USE_USOLIDS_EITHER@)
if(Geant4_usolids_FOUND)
- # Requires refind of VecGeom once that supports Targets/Usage Reqs
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS usolids)
+ find_dependency(VecGeom @VecGeom_VERSION@)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4VecGeomShim.cmake")
endif()
# - Freetype
set(Geant4_freetype_FOUND @GEANT4_USE_FREETYPE@)
if(Geant4_freetype_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS freetype)
+ find_dependency(Freetype @FREETYPE_VERSION_STRING@)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4FreetypeShim.cmake")
endif()
# - HDF5
set(Geant4_hdf5_FOUND @GEANT4_USE_HDF5@)
if(Geant4_hdf5_FOUND)
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS hdf5)
+ find_dependency(HDF5 @HDF5_VERSION@)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4HDF5Shim.cmake")
+endif()
+
+#-----------------------------------------------------------------------
+# UI/VIS
+#
+# Prefer Legacy GL when using CMake >= 3.10
+set(OpenGL_GL_PREFERENCE_SAVE "${OpenGL_GL_PREFERENCE}")
+set(OpenGL_GL_PREFERENCE "LEGACY")
+
+# - Helper variables for ui/vis_all components
+if("ui_all" IN_LIST Geant4_FIND_COMPONENTS)
+ set(Geant4_ui_all_FOUND TRUE)
+endif()
+
+if("vis_all" IN_LIST Geant4_FIND_COMPONENTS)
+ set(Geant4_vis_all_FOUND TRUE)
endif()
# - UI : TCSH
set(Geant4_ui_tcsh_FOUND @UNIX@)
if(Geant4_ui_tcsh_FOUND)
- if(Geant4_FIND_REQUIRED_ui_tcsh OR Geant4_FIND_REQUIRED_ui_all)
+ if(("ui_tcsh" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4UI_USE_TCSH)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_tcsh)
endif()
# - UI : win32
set(Geant4_ui_win32_FOUND @WIN32@)
if(Geant4_ui_win32_FOUND)
- if(Geant4_FIND_REQUIRED_ui_win32 OR Geant4_FIND_REQUIRED_ui_all)
+ if(("ui_win32" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_WIN32
-DG4UI_USE_WIN32
)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_win32)
endif()
# - Visualization : Network DAWN
set(Geant4_vis_dawn_network_FOUND @GEANT4_USE_NETWORK_DAWN@)
if(Geant4_vis_dawn_network_FOUND)
- if(Geant4_FIND_REQUIRED_vis_dawn_network OR Geant4_FIND_REQUIRED_vis_all)
+ if(("vis_dawn_network" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_DAWN)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_dawn_network)
endif()
# - Visualization : Network VRML
set(Geant4_vis_vrml_network_FOUND @GEANT4_USE_NETWORK_VRML@)
if(Geant4_vis_vrml_network_FOUND)
- if(Geant4_FIND_REQUIRED_vis_vrml_network OR Geant4_FIND_REQUIRED_vis_all)
+ if(("vis_vrml_network" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_VRML)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_vrml_network)
endif()
#-----------------------------------------------------------------------
@@ -407,14 +381,16 @@ endif()
# - Visualization : RayTracerX
set(Geant4_vis_raytracer_x11_FOUND @GEANT4_USE_RAYTRACER_X11@)
if(Geant4_vis_raytracer_x11_FOUND)
- if(Geant4_FIND_REQUIRED_vis_raytracer_x11 OR Geant4_FIND_REQUIRED_vis_all)
+ find_dependency(X11)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
+
+ if(("vis_raytracer_x11" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_XT
-DG4VIS_USE_RAYTRACERX
)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_raytracer_x11)
endif()
# - Qt (UI and Vis!)
@@ -424,17 +400,19 @@ if(Geant4_qt_FOUND)
# Must always refind Qt5 to recreate imported targets. Because these
# are in the public interface, always need linking.
if(Geant4_USES_QT5)
- find_package(Qt5Core REQUIRED PATHS "@Qt5Core_DIR@")
- find_package(Qt5Gui REQUIRED PATHS "@Qt5Gui_DIR@")
- find_package(Qt5Widgets REQUIRED PATHS "@Qt5Widgets_DIR@")
- find_package(Qt5OpenGL REQUIRED PATHS "@Qt5OpenGL_DIR@")
- find_package(Qt5PrintSupport REQUIRED PATHS "@Qt5PrintSupport_DIR@")
+ find_dependency(Qt5Core REQUIRED)
+ find_dependency(Qt5Gui REQUIRED)
+ find_dependency(Qt5Widgets REQUIRED)
+ find_dependency(Qt5OpenGL REQUIRED)
+ find_dependency(Qt5PrintSupport REQUIRED)
else()
- # On Windows, must refind Qt4 because this always uses imported targets
- @GEANT4_QT4_IMPORT_SETUP@
+ find_dependency(Qt4 REQUIRED QtCore QtGui QtOpenGL)
endif()
- if(Geant4_FIND_REQUIRED_qt OR Geant4_FIND_REQUIRED_ui_all OR Geant4_FIND_REQUIRED_vis_all)
+ # Also require OpenGL
+ find_dependency(OpenGL)
+
+ if(("qt" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_QT
@@ -443,30 +421,37 @@ if(Geant4_qt_FOUND)
)
set(_geant4_use_opengl_library ON)
endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS qt)
endif()
# - Wt (UI and Vis!)
-set(Geant4_wt_FOUND @GEANT4_USE_WT@)
-if(Geant4_wt_FOUND)
- if(Geant4_FIND_REQUIRED_wt OR Geant4_FIND_REQUIRED_ui_all OR
- Geant4_FIND_REQUIRED_vis_all)
- list(APPEND
- Geant4_DEFINITIONS
- -DG4INTY_USE_WT
- -DG4UI_USE_WT
- -DG4VIS_USE_OPENGLWT
- )
- set(_geant4_use_opengl_library ON)
- endif()
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS wt)
-endif()
+#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)
- if(Geant4_FIND_REQUIRED_motif OR Geant4_FIND_REQUIRED_ui_all OR
- Geant4_FIND_REQUIRED_vis_all)
+ find_dependency(X11)
+ 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)
+ endif()
+
+ if(("motif" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_ui_all_FOUND OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_XT
@@ -475,14 +460,19 @@ if(Geant4_motif_FOUND)
)
set(_geant4_use_opengl_library ON)
endif()
-
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS motif)
endif()
# - OpenGL X11
set(Geant4_vis_opengl_x11_FOUND @GEANT4_USE_OPENGL_X11@)
if(Geant4_vis_opengl_x11_FOUND)
- if(Geant4_FIND_REQUIRED_vis_opengl_x11 OR Geant4_FIND_REQUIRED_vis_all)
+ find_dependency(X11)
+ include("${CMAKE_CURRENT_LIST_DIR}/G4X11Shim.cmake")
+ find_dependency(OpenGL)
+ if(APPLE)
+ find_dependency(XQuartzGL)
+ endif()
+
+ if(("vis_opengl_x11" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_XT
@@ -490,14 +480,13 @@ if(Geant4_vis_opengl_x11_FOUND)
)
set(_geant4_use_opengl_library ON)
endif()
-
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_opengl_x11)
endif()
# - OpenGL Win32
set(Geant4_vis_opengl_win32_FOUND @GEANT4_USE_OPENGL_WIN32@)
if(Geant4_vis_opengl_win32_FOUND)
- if(Geant4_FIND_REQUIRED_vis_opengl_win32 OR Geant4_FIND_REQUIRED_vis_all)
+ find_dependency(OpenGL)
+ if(("vis_opengl_win32" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND
Geant4_DEFINITIONS
-DG4INTY_USE_WIN32
@@ -505,14 +494,12 @@ if(Geant4_vis_opengl_win32_FOUND)
)
set(_geant4_use_opengl_library ON)
endif()
-
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_opengl_win32)
endif()
# - OpenInventor
set(Geant4_vis_openinventor_FOUND @GEANT4_USE_INVENTOR@)
if(Geant4_vis_openinventor_FOUND)
- if(Geant4_FIND_REQUIRED_vis_openinventor OR Geant4_FIND_REQUIRED_vis_all)
+ if(("vis_openinventor" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
if(UNIX AND NOT WIN32)
list(APPEND Geant4_DEFINITIONS
-DG4INTY_USE_XT
@@ -529,18 +516,20 @@ if(Geant4_vis_openinventor_FOUND)
set(_geant4_use_inventor_library ON)
endif()
-
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS vis_openinventor)
endif()
+# Reset any OpenGL Preference
+set(OpenGL_GL_PREFERENCE "${OpenGL_GL_PREFERENCE_SAVE}")
+
#-----------------------------------------------------------------------
# Include the files listing all the imported targets and configuring
-# Intel Compile Features
+# Intel/MSVC Compile Features
# (Not needed if used in the same Geant4 project, or if we have run before)
# This is always installed in the same location as us...
#
if(NOT CMAKE_PROJECT_NAME STREQUAL Geant4)
include("${_geant4_thisdir}/Modules/IntelCompileFeatures.cmake")
+ include("${_geant4_thisdir}/Modules/MSVCCompileFeatures.cmake")
if(NOT Geant4_LIBDEPS_LOADED)
include("${_geant4_thisdir}/Geant4LibraryDepends.cmake")
@@ -563,9 +552,8 @@ else()
set(_geant4_lib_use_suffix "-static")
endif()
-if(Geant4_FIND_REQUIRED_static AND Geant4_static_FOUND)
+if(("static" IN_LIST Geant4_FIND_COMPONENTS) AND Geant4_static_FOUND)
set(_geant4_lib_use_suffix "-static")
- list(REMOVE_ITEM Geant4_FIND_COMPONENTS static)
endif()
# The list of libraries probably should be autogenerated, but we hard code
@@ -573,19 +561,19 @@ endif()
# do so for consistency with the way we'll need to do it for static.
# - Always on Vis Components
set(_geant4_internal_libraries
- G4Tree${_geant4_lib_use_suffix}
- G4FR${_geant4_lib_use_suffix}
- G4GMocren${_geant4_lib_use_suffix}
- G4visHepRep${_geant4_lib_use_suffix}
- G4RayTracer${_geant4_lib_use_suffix}
- G4VRML${_geant4_lib_use_suffix}
+ Geant4::G4Tree${_geant4_lib_use_suffix}
+ Geant4::G4FR${_geant4_lib_use_suffix}
+ Geant4::G4GMocren${_geant4_lib_use_suffix}
+ Geant4::G4visHepRep${_geant4_lib_use_suffix}
+ Geant4::G4RayTracer${_geant4_lib_use_suffix}
+ Geant4::G4VRML${_geant4_lib_use_suffix}
)
# - G4OpenGL if it's requested.
if(_geant4_use_opengl_library)
list(APPEND _geant4_internal_libraries
- G4OpenGL${_geant4_lib_use_suffix}
- G4gl2ps${_geant4_lib_use_suffix}
+ Geant4::G4OpenGL${_geant4_lib_use_suffix}
+ Geant4::G4gl2ps${_geant4_lib_use_suffix}
)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_OPENGL)
endif()
@@ -593,18 +581,18 @@ endif()
# - G4OpenInventor if it's requested.
if(_geant4_use_inventor_library)
list(APPEND _geant4_internal_libraries
- G4OpenInventor${_geant4_lib_use_suffix}
+ Geant4::G4OpenInventor${_geant4_lib_use_suffix}
)
endif()
# - G3toG4 if it's requested
if(_geant4_use_g3tog4_library)
- set(_geant4_g3tog4_library G3toG4${_geant4_lib_use_suffix})
+ set(_geant4_g3tog4_library Geant4::G3toG4${_geant4_lib_use_suffix})
endif()
-# - link to TiMemory library if activated
+# - link to timemory library if activated
if(_geant4_use_timemory_library)
- list(APPEND _geant4_internal_libraries ${TiMemory_LIBRARIES})
+ list(APPEND _geant4_internal_libraries ${timemory_LIBRARIES})
endif()
# - Factory registration mechanism in physics_lists requires whole
@@ -614,7 +602,7 @@ endif()
# static builds. --whole-archive never was implemented for _WIN32
# (appears not to even be possible)
# In order re-implement whole-archive, switch Geant4_FORCE_WHOLE_ARCHIVE ON
-set(_geant4_physicslists_library G4physicslists${_geant4_lib_use_suffix})
+set(_geant4_physicslists_library Geant4::G4physicslists${_geant4_lib_use_suffix})
set(Geant4_FORCE_WHOLE_ARCHIVE OFF)
if( Geant4_FORCE_WHOLE_ARCHIVE )
@@ -624,52 +612,52 @@ if(_geant4_lib_use_suffix STREQUAL "-static")
# flags,keep their sections separate until behaviour confirmed
#
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
- set(_geant4_physicslists_library -Wl,--whole-archive G4physicslists${_geant4_lib_use_suffix} -Wl,--no-whole-archive)
+ set(_geant4_physicslists_library -Wl,--whole-archive Geant4::G4physicslists${_geant4_lib_use_suffix} -Wl,--no-whole-archive)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
- set(_geant4_physicslists_library -Wl,-force_load G4physicslists${_geant4_lib_use_suffix})
+ set(_geant4_physicslists_library -Wl,-force_load Geant4::G4physicslists${_geant4_lib_use_suffix})
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
- set(_geant4_physicslists_library -Wl,--whole-archive G4physicslists${_geant4_lib_use_suffix} -Wl,--no-whole-archive)
+ set(_geant4_physicslists_library -Wl,--whole-archive Geant4::G4physicslists${_geant4_lib_use_suffix} -Wl,--no-whole-archive)
else()
# Needs determination of other compiler options.
# NB: MSVC has /OPT:NOREF, but may apply globally...
# reading up on this ... doesn't seem that it applies for subtle reasons
# only real way is to actually reference the static variables
- set(_geant4_physicslists_library G4physicslists${_geant4_lib_use_suffix})
+ set(_geant4_physicslists_library Geant4::G4physicslists${_geant4_lib_use_suffix})
endif()
endif()
endif()
# - 'Kernel' libraries
list(APPEND _geant4_internal_libraries
- G4vis_management${_geant4_lib_use_suffix}
- G4modeling${_geant4_lib_use_suffix}
- G4interfaces${_geant4_lib_use_suffix}
- G4persistency${_geant4_lib_use_suffix}
+ Geant4::G4vis_management${_geant4_lib_use_suffix}
+ Geant4::G4modeling${_geant4_lib_use_suffix}
+ Geant4::G4interfaces${_geant4_lib_use_suffix}
+ Geant4::G4persistency${_geant4_lib_use_suffix}
${_geant4_g3tog4_library}
- G4analysis${_geant4_lib_use_suffix}
- G4error_propagation${_geant4_lib_use_suffix}
- G4readout${_geant4_lib_use_suffix}
+ Geant4::G4analysis${_geant4_lib_use_suffix}
+ Geant4::G4error_propagation${_geant4_lib_use_suffix}
+ Geant4::G4readout${_geant4_lib_use_suffix}
${_geant4_physicslists_library}
- G4run${_geant4_lib_use_suffix}
- G4event${_geant4_lib_use_suffix}
- G4tracking${_geant4_lib_use_suffix}
- G4parmodels${_geant4_lib_use_suffix}
- G4processes${_geant4_lib_use_suffix}
- G4digits_hits${_geant4_lib_use_suffix}
- G4track${_geant4_lib_use_suffix}
- G4particles${_geant4_lib_use_suffix}
- G4geometry${_geant4_lib_use_suffix}
- G4materials${_geant4_lib_use_suffix}
- G4graphics_reps${_geant4_lib_use_suffix}
- G4intercoms${_geant4_lib_use_suffix}
- G4global${_geant4_lib_use_suffix}
+ Geant4::G4run${_geant4_lib_use_suffix}
+ Geant4::G4event${_geant4_lib_use_suffix}
+ Geant4::G4tracking${_geant4_lib_use_suffix}
+ Geant4::G4parmodels${_geant4_lib_use_suffix}
+ Geant4::G4processes${_geant4_lib_use_suffix}
+ Geant4::G4digits_hits${_geant4_lib_use_suffix}
+ Geant4::G4track${_geant4_lib_use_suffix}
+ Geant4::G4particles${_geant4_lib_use_suffix}
+ Geant4::G4geometry${_geant4_lib_use_suffix}
+ Geant4::G4materials${_geant4_lib_use_suffix}
+ Geant4::G4graphics_reps${_geant4_lib_use_suffix}
+ Geant4::G4intercoms${_geant4_lib_use_suffix}
+ Geant4::G4global${_geant4_lib_use_suffix}
)
# - Any externals built by Geant4
foreach(_extlib @GEANT4_EXTERNALS_TARGETS@)
list(APPEND
_geant4_internal_libraries
- ${_extlib}${_geant4_lib_use_suffix}
+ Geant4::${_extlib}${_geant4_lib_use_suffix}
)
endforeach()
@@ -680,9 +668,28 @@ set(Geant4_LIBRARIES ${_geant4_internal_libraries})
# Remove any duplicates from the Geant4_{DEFINITIONS,INCLUDE_DIRS,LIBRARIES}
# variables so that multiple passes append things correctly
#
-list(REMOVE_DUPLICATES Geant4_DEFINITIONS)
-list(REMOVE_DUPLICATES Geant4_INCLUDE_DIRS)
-list(REMOVE_DUPLICATES Geant4_LIBRARIES)
+if(Geant4_DEFINITIONS)
+ list(REMOVE_DUPLICATES Geant4_DEFINITIONS)
+endif()
+# - Create an interface target to export the selected definitions as
+# usage requirements
+if(NOT TARGET Geant4::G4UIVisDefinitions)
+ add_library(Geant4::G4UIVisDefinitions INTERFACE IMPORTED)
+endif()
+string(REGEX REPLACE "^\-D|;-D" ";" G4UIVIS_COMPILE_DEFINITIONS "${Geant4_DEFINITIONS}")
+set_target_properties(Geant4::G4UIVisDefinitions PROPERTIES
+ INTERFACE_COMPILE_DEFINITIONS "${G4UIVIS_COMPILE_DEFINITIONS}")
+unset(G4UIVIS_COMPILE_DEFINITIONS)
+
+list(APPEND Geant4_LIBRARIES Geant4::G4UIVisDefinitions)
+
+if(Geant4_INCLUDE_DIRS)
+ list(REMOVE_DUPLICATES Geant4_INCLUDE_DIRS)
+endif()
+
+if(Geant4_LIBRARIES)
+ list(REMOVE_DUPLICATES Geant4_LIBRARIES)
+endif()
#-----------------------------------------------------------------------
# Point the user to the UseGeant4.cmake file which they may wish to include
@@ -691,22 +698,18 @@ list(REMOVE_DUPLICATES Geant4_LIBRARIES)
set(Geant4_USE_FILE "${_geant4_thisdir}/UseGeant4.cmake")
#-----------------------------------------------------------------------
-# Finally, handle any remaining components.
-# We should have dealt with all available components above, except for
-# ui_all and vis_all, and removed them from the list of FIND_COMPONENTS
-# so any left we either didn't find or don't know about. Emit a warning
-# if REQUIRED isn't set, or FATAL_ERROR otherwise
-#
-list(REMOVE_DUPLICATES Geant4_FIND_COMPONENTS)
-list(REMOVE_ITEM Geant4_FIND_COMPONENTS ui_all vis_all)
+# Pop our custom module path from the CMake one
+list(REMOVE_AT CMAKE_MODULE_PATH 0)
-foreach(_remaining ${Geant4_FIND_COMPONENTS})
- if(Geant4_FIND_REQUIRED)
- message(FATAL_ERROR "Geant4 component ${_remaining} not found")
- elseif(NOT Geant4_FIND_QUIETLY)
- message(WARNING " Geant4 component ${_remaining} not found")
+#-----------------------------------------------------------------------
+# Finally, check FOUNDness of required components.
+foreach(_comp ${Geant4_FIND_COMPONENTS})
+ if(NOT Geant4_${_comp}_FOUND)
+ if(Geant4_FIND_REQUIRED_${_comp})
+ message(WARNING "Geant4 required component '${_comp}' not found")
+ set(Geant4_FOUND FALSE)
+ endif()
endif()
- unset(Geant4_FIND_REQUIRED_${_remaining})
endforeach()
# And we should be done...
diff --git a/cmake/Templates/Geant4PackageCache.cmake.in b/cmake/Templates/Geant4PackageCache.cmake.in
new file mode 100644
index 0000000000..ebbf07c3e4
--- /dev/null
+++ b/cmake/Templates/Geant4PackageCache.cmake.in
@@ -0,0 +1,16 @@
+# This file is generated by the Geant4 CMake buildsystem and should not be editted
+#
+# This file stores paths and settings to external libraries found and used by this
+# install of Geant4 when it was built.
+
+macro(geant4_set_and_check_package_variable _name _value _type _docstring)
+ if(DEFINED ${_name})
+ if(NOT ("${${_name}}" STREQUAL "${_value}"))
+ message(WARNING "Value of '${_name}' is already set and does not match value set at Geant4 build-time")
+ endif()
+ else()
+ set(${_name} ${_value} CACHE ${_type} "${_docstring}")
+ endif()
+endmacro()
+
+@GEANT4_PACKAGE_SETTINGS@
diff --git a/cmake/Templates/Geant4UseQt5.cmake.in b/cmake/Templates/Geant4UseQt5.cmake.in
deleted file mode 100644
index 12a504c2f7..0000000000
--- a/cmake/Templates/Geant4UseQt5.cmake.in
+++ /dev/null
@@ -1,23 +0,0 @@
-# - Forward compatibility use file for Qt5
-include_directories("@Qt5Core_INCLUDE_DIRS@")
-include_directories("@Qt5Gui_INCLUDE_DIRS@")
-include_directories("@Qt5Widgets_INCLUDE_DIRS@")
-include_directories("@Qt5OpenGL_INCLUDE_DIRS@")
-include_directories("@Qt5PrintSupport_INCLUDE_DIRS@")
-
-add_definitions(@Qt5Core_DEFINITIONS@)
-add_definitions(@Qt5Gui_DEFINITIONS@)
-add_definitions(@Qt5Widgets_DEFINITIONS@)
-add_definitions(@Qt5OpenGL_DEFINITIONS@)
-add_definitions(@Qt5PrintSupport_DEFINITIONS@)
-
-list(APPEND QT_QTCORE_LIBRARY
- "@Qt5Core_LIBRARIES@;@Qt5PrintSupport_LIBRARIES@")
-list(APPEND QT_QTGUI_LIBRARY
- "@Qt5Widgets_LIBRARIES@;@Qt5Gui_LIBRARIES@")
-list(APPEND QT_QTOPENGL_LIBRARY
- "@Qt5OpenGL_LIBRARIES@;@Qt5Gui_LIBRARIES@")
-
-list(APPEND QT_LIBRARIES
- "@Qt5OpenGL_LIBRARIES@;@Qt5Gui_LIBRARIES@;@Qt5PrintSupport_LIBRARIES@;@Qt5Widgets_LIBRARIES@")
-
diff --git a/cmake/Templates/UseGeant4.cmake b/cmake/Templates/UseGeant4.cmake
index f1c91aaf40..00823e0f46 100644
--- a/cmake/Templates/UseGeant4.cmake
+++ b/cmake/Templates/UseGeant4.cmake
@@ -1,7 +1,10 @@
# - Use file for Geant4
-# This file should be included after a find_package call has successfully
-# located Geant4. If Geant4 has been located via the Geant4Config.cmake
-# config file, this will have set the following variable:
+# This file may be included after a find_package call has successfully
+# located Geant4 to set global compile definitions, include directories,
+# and compiler flags for building and linking to the Geant4 libraries.
+#
+# If Geant4 has been located via the Geant4Config.cmake config file, the
+# following variable will be set:
#
# Geant4_USE_FILE : Point to the location of the use file for the found
# Geant4 installation.
@@ -14,7 +17,7 @@
# include directories to those of the directory in which this file is
# included.
#
-# Header paths are added to include_directories as SYSTEM type directories
+# Header paths are added via include_directories as SYSTEM type directories
#
# The recommended Geant4 compiler flags are also prepended to
# CMAKE_CXX_FLAGS but duplicated flags are NOT removed. This permits
@@ -39,15 +42,14 @@ include_directories(AFTER SYSTEM ${Geant4_INCLUDE_DIRS})
#-----------------------------------------------------------------------
# Because Geant4 is sensitive to the compiler flags, set the base
# set here. This reproduces as far as possible the behaviour of the
-# original makefile system. Users requiring additional flags must append them
-# *after* inclusion of this file
+# original makefile system.
#
-set(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS}")
-set(CMAKE_CXX_FLAGS_DEBUG "${Geant4_CXX_FLAGS_DEBUG}")
-set(CMAKE_CXX_FLAGS_MINSIZEREL "${Geant4_CXX_FLAGS_MINSIZEREL}")
-set(CMAKE_CXX_FLAGS_RELEASE "${Geant4_CXX_FLAGS_RELEASE}")
-set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${Geant4_CXX_FLAGS_RELWITHDEBINFO}")
-set(CMAKE_EXE_LINKER_FLAGS "${Geant4_EXE_LINKER_FLAGS}")
+set(CMAKE_CXX_FLAGS "${Geant4_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS_DEBUG "${Geant4_CXX_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_DEBUG}")
+set(CMAKE_CXX_FLAGS_MINSIZEREL "${Geant4_CXX_FLAGS_MINSIZEREL} ${CMAKE_CXX_FLAGS_MINSIZEREL}")
+set(CMAKE_CXX_FLAGS_RELEASE "${Geant4_CXX_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_RELEASE}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${Geant4_CXX_FLAGS_RELWITHDEBINFO} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+set(CMAKE_EXE_LINKER_FLAGS "${Geant4_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}")
#-----------------------------------------------------------------------
# Update build type information ONLY for single mode build tools, adding
diff --git a/cmake/Templates/UseGeant4_internal.cmake b/cmake/Templates/UseGeant4_internal.cmake
index 5ae029d74d..ed8ffccd3b 100644
--- a/cmake/Templates/UseGeant4_internal.cmake
+++ b/cmake/Templates/UseGeant4_internal.cmake
@@ -113,7 +113,7 @@ function(geant4_add_test test)
"COMMAND;PRECMD;POSTCMD;ENVIRONMENT;DEPENDS;LABELS"
${ARGN})
- if(NOT CMAKE_GENERATOR MATCHES Makefiles)
+ if(CMAKE_CONFIGURATION_TYPES)
set(_cfg $/)
endif()
diff --git a/cmake/Templates/geant4-config.in b/cmake/Templates/geant4-config.in
index 5cc671031c..45502b0db1 100644
--- a/cmake/Templates/geant4-config.in
+++ b/cmake/Templates/geant4-config.in
@@ -95,6 +95,13 @@ else
geant4_tls_model=""
fi
+# - smart stacking
+have_smartstack="@G4_BUILTWITH_SMARTSTACK@"
+feature_list="${feature_list} smartstack[${have_smartstack}]"
+if test "x${have_smartstack}" = "xyes" ; then
+ cflags="-DG4_USESMARTSTACK ${cflags}"
+fi
+
# - Includes and Libs
for g4incdir in ${includedirs} ; do
cflags="${cflags} -I${g4incdir}"
@@ -552,6 +559,9 @@ while test $# -gt 0 ; do
multithreading)
echo ${have_multithreading}
;;
+ smartstack)
+ echo ${have_smartstack}
+ ;;
clhep)
echo ${have_clhep}
;;
diff --git a/cmake/Templates/geant4make-skeleton.in b/cmake/Templates/geant4make-skeleton.in
index 93f9da08a7..e389477c57 100644
--- a/cmake/Templates/geant4make-skeleton.in
+++ b/cmake/Templates/geant4make-skeleton.in
@@ -81,7 +81,6 @@
# - UI Build and Use options
# USE options only for applications.
@GEANT4_TC_UNSET_COMMAND@ G4UI_NONE
-@GEANT4_TC_UNSET_COMMAND@ G4UI_BUILD_WT_SESSION
@GEANT4_TC_UNSET_COMMAND@ G4UI_BUILD_QT_SESSION
@GEANT4_TC_UNSET_COMMAND@ G4UI_BUILD_WIN32_SESSION
@GEANT4_TC_UNSET_COMMAND@ G4UI_BUILD_XAW_SESSION
@@ -92,7 +91,6 @@
@GEANT4_TC_UNSET_COMMAND@ G4UI_USE_XAW
@GEANT4_TC_UNSET_COMMAND@ G4UI_USE_XM
@GEANT4_TC_UNSET_COMMAND@ G4UI_USE_QT
-@GEANT4_TC_UNSET_COMMAND@ G4UI_USE_WT
#- VIS Build and Use options
# Only USE options matter for applications.
@@ -113,9 +111,6 @@
@GEANT4_TC_UNSET_COMMAND@ G4VIS_USE_OIX
# - OpenGL drivers
-@GEANT4_TC_UNSET_COMMAND@ G4VIS_BUILD_OPENGLWT_DRIVER
-@GEANT4_TC_UNSET_COMMAND@ G4VIS_USE_OPENGLWT
-
@GEANT4_TC_UNSET_COMMAND@ QTHOME
@GEANT4_TC_UNSET_COMMAND@ QTLIBPATH
@GEANT4_TC_UNSET_COMMAND@ QTLIBS
@@ -245,12 +240,6 @@
@GEANT4_TC_G4VIS_USE_OPENGLQT@
@GEANT4_TC_QT_LIB_PATH_SETUP@
-#-----------------------------------------------------------------------
-# Wt UI/Vis
-#
-@GEANT4_TC_G4UI_USE_WT@
-@GEANT4_TC_G4VIS_USE_OPENGLWT@
-
#-----------------------------------------------------------------------
# Xm UI/Vis
#
diff --git a/config/G4UI_BUILD.gmk b/config/G4UI_BUILD.gmk
index 66efa0fdf0..e9a6c114e3 100644
--- a/config/G4UI_BUILD.gmk
+++ b/config/G4UI_BUILD.gmk
@@ -7,6 +7,7 @@
ifndef G4UI_NONE
G4UI_BUILD = 1
CPPFLAGS += -DG4UI_BUILD
+ INC_X11 = 1
# The following sessions are built by default (no environment
# variables needed)...
diff --git a/config/History b/config/History
index 8ed14a6661..4b6dd85810 100644
--- a/config/History
+++ b/config/History
@@ -15,6 +15,31 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+20th Nov 2019 Gabriele Cosmo (config-V10-05-08)
+- interactivity.gmk: added -DQT_NO_DEPRECATED_WARNINGS to Qt compilation
+ settings, to silence warnings from Qt for use of deprecated features.
+
+22nd Oct 2019 Gabriele Cosmo (config-V10-05-07)
+- Force use of c++17 in WIN32 targets.
+
+9th Oct 2019 Gabriele Cosmo (config-V10-05-06)
+- Corrected default path for XM in Darwin targets.
+
+13th Sep 2019 Ivana Hrivnacova (config-V10-05-05)
+- Added new analysis/factory subdirectory in includes in binmake.gmk;
+ removed analysis/parameters which does not exist anymore.
+
+4th Sep 2019 Gabriele Cosmo (config-V10-05-04)
+- Fixed compilation warning on gcc-9.2 for liblist.c; replaced use
+ of strncat() with strcat().
+
+13th Aug 2019 Gabriele Cosmo (config-V10-05-03)
+- geomconf.gmk: added VecGeom wrappers flags for G4EllipticalTube,
+ G4EllipticalCone and G4Ellipsoid.
+
+28th Jun 2019 Gabriele Cosmo (config-V10-05-02)
+- Fixed default paths for Linux architectures.
+
16th May 2019 Gabriele Cosmo (config-V10-05-01)
- Hard-code Qt version through QT_VERSION flag.
Corrected Qt5 setup for Linux-g++ and Linux-clang.
diff --git a/config/binmake.gmk b/config/binmake.gmk
index 406f0736d5..aba6110d11 100644
--- a/config/binmake.gmk
+++ b/config/binmake.gmk
@@ -50,8 +50,8 @@ ifndef INCFLAGS
-I$(G4BASE)/analysis/csv/include \
-I$(G4BASE)/analysis/root/include \
-I$(G4BASE)/analysis/xml/include \
- -I$(G4BASE)/analysis/parameters/include \
- -I$(G4BASE)/analysis/accumulables/include \
+ -I$(G4BASE)/analysis/factory/include \
+ -I$(G4BASE)/analysis/accumulables/include \
-I$(G4BASE)/global/management/include \
-I$(G4BASE)/global/HEPRandom/include \
-I$(G4BASE)/global/HEPGeometry/include \
diff --git a/config/geomconf.gmk b/config/geomconf.gmk
index 0ae1d87491..1ddcc799f7 100644
--- a/config/geomconf.gmk
+++ b/config/geomconf.gmk
@@ -23,6 +23,15 @@ endif
ifdef G4GEOM_USE_UCTUBS
CPPFLAGS += -DG4GEOM_USE_UCTUBS
endif
+ifdef G4GEOM_USE_UELLIPTICALTUBE
+ CPPFLAGS += -DG4GEOM_USE_UELLIPTICALTUBE
+endif
+ifdef G4GEOM_USE_UELLIPTICALCONE
+ CPPFLAGS += -DG4GEOM_USE_UELLIPTICALCONE
+endif
+ifdef G4GEOM_USE_UELLIPSOID
+ CPPFLAGS += -DG4GEOM_USE_UELLIPSOID
+endif
ifdef G4GEOM_USE_UEXTRUDEDSOLID
CPPFLAGS += -DG4GEOM_USE_UEXTRUDEDSOLID
endif
diff --git a/config/interactivity.gmk b/config/interactivity.gmk
index dc68029587..1691040148 100644
--- a/config/interactivity.gmk
+++ b/config/interactivity.gmk
@@ -26,7 +26,7 @@ endif
########################### Qt ###############################
# Should be before X11.
ifdef INC_QT
- CPPFLAGS += $(QTFLAGS)
+ CPPFLAGS += -DQT_NO_DEPRECATED_WARNINGS $(QTFLAGS)
endif
ifdef LOAD_QT
INTYLIBS += $(QTLIBS)
diff --git a/config/liblist.c b/config/liblist.c
index a475e4a839..5850bcf061 100644
--- a/config/liblist.c
+++ b/config/liblist.c
@@ -71,7 +71,7 @@ char** parsedir(char *directory,int *argc)
strlen(entry->d_name)+2)*sizeof(char));
strcpy(buffer,directory);
strncat(buffer,"/",1);
- strncat(buffer,entry->d_name,strlen(entry->d_name));
+ strcat(buffer,entry->d_name);
s=stat(buffer,&status);
if(s==0)
{
@@ -295,7 +295,7 @@ int main (int argc, char** argv) {
while(ptr&&strcmp(ptr,"GNUmakefile"))
{
strncat(libmapPtr->trigger,"/",1);
- strncat(libmapPtr->trigger,ptr,strlen(ptr));
+ strcat(libmapPtr->trigger,ptr);
ptr=strtok(NULL,"/");
}
if(!ptr)
diff --git a/config/sys/Darwin-clang.gmk b/config/sys/Darwin-clang.gmk
index d7af1cce3e..76205e6495 100644
--- a/config/sys/Darwin-clang.gmk
+++ b/config/sys/Darwin-clang.gmk
@@ -63,15 +63,15 @@ ifeq ($(G4SYSTEM),Darwin-clang)
X11LIBS := -L/usr/X11/lib -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
- XMFLAGS := -I/sw/include
+ XMFLAGS := -I/usr/local/include
# XMFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XMLIBS
- XMLIBS := -L/sw/lib -lXm -lXpm
+ XMLIBS := -L/usr/local/lib -lXm -lXpm
# XMLIBS := -L/usr/X11/lib -lXm -lXpm ##### some installations.
endif
ifndef XAWFLAGS
- XAWFLAGS := -I/sw/include
+ XAWFLAGS := -I/usr/local/include
# XAWFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XAWLIBS
diff --git a/config/sys/Darwin-g++.gmk b/config/sys/Darwin-g++.gmk
index e03d74d589..80d6affbba 100644
--- a/config/sys/Darwin-g++.gmk
+++ b/config/sys/Darwin-g++.gmk
@@ -69,15 +69,15 @@ ifeq ($(G4SYSTEM),Darwin-g++)
X11LIBS := -L/usr/X11/lib -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
- XMFLAGS := -I/sw/include
+ XMFLAGS := -I/usr/local/include
# XMFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XMLIBS
- XMLIBS := -L/sw/lib -lXm -lXpm
+ XMLIBS := -L/usr/local/lib -lXm -lXpm
# XMLIBS := -L/usr/X11/lib -lXm -lXpm ##### some installations.
endif
ifndef XAWFLAGS
- XAWFLAGS := -I/sw/include
+ XAWFLAGS := -I/usr/local/include
# XAWFLAGS := -I/usr/X11/include ##### some installations.
endif
ifndef XAWLIBS
diff --git a/config/sys/Linux-clang.gmk b/config/sys/Linux-clang.gmk
index 70862c37b2..0cda8b5b91 100644
--- a/config/sys/Linux-clang.gmk
+++ b/config/sys/Linux-clang.gmk
@@ -66,21 +66,24 @@ ifeq ($(G4SYSTEM),Linux-clang)
X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11
endif
ifndef X11LIBS
- X11LIBS := -L/usr/X11R6/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
+ X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
- XMFLAGS := -I/usr/X11R6/include
+ XMFLAGS := -I/usr/include
endif
ifndef XMLIBS
XMLIBS := -lXm -lXpm
endif
ifndef XAWFLAGS
- XAWFLAGS := -I/usr/X11R6/include
+ XAWFLAGS := -I/usr/include
endif
ifndef XAWLIBS
XAWLIBS := -lXaw
endif
DLDLIBS := -ldl
+ ifndef OGLHOME
+ OGLHOME := /usr
+ endif
ifndef OGLFLAGS
OGLFLAGS := -I$(OGLHOME)/include
endif
diff --git a/config/sys/Linux-g++.gmk b/config/sys/Linux-g++.gmk
index bb6e44d60e..ffba35dfe8 100644
--- a/config/sys/Linux-g++.gmk
+++ b/config/sys/Linux-g++.gmk
@@ -64,21 +64,24 @@ ifeq ($(G4SYSTEM),Linux-g++)
X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11
endif
ifndef X11LIBS
- X11LIBS := -L/usr/X11R6/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
+ X11LIBS := -L/usr/lib$(ARCH) -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
- XMFLAGS := -I/usr/X11R6/include
+ XMFLAGS := -I/usr/include
endif
ifndef XMLIBS
XMLIBS := -lXm -lXpm
endif
ifndef XAWFLAGS
- XAWFLAGS := -I/usr/X11R6/include
+ XAWFLAGS := -I/usr/include
endif
ifndef XAWLIBS
XAWLIBS := -lXaw
endif
DLDLIBS := -ldl
+ ifndef OGLHOME
+ OGLHOME := /usr
+ endif
ifndef OGLFLAGS
OGLFLAGS := -I$(OGLHOME)/include
endif
diff --git a/config/sys/Linux-icc.gmk b/config/sys/Linux-icc.gmk
index f8edd5430e..f93c7a665f 100644
--- a/config/sys/Linux-icc.gmk
+++ b/config/sys/Linux-icc.gmk
@@ -56,16 +56,16 @@ ifeq ($(G4SYSTEM),Linux-icc)
X11FLAGS := -I/usr/include/X11/extensions -I/usr/include/X11
endif
ifndef X11LIBS
- X11LIBS := -L/usr/X11R6/lib -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
+ X11LIBS := -L/usr/lib -lXmu -lXt -lXext -lX11 -lXi -lSM -lICE
endif
ifndef XMFLAGS
- XMFLAGS := -I/usr/X11R6/include
+ XMFLAGS := -I/usr/include
endif
ifndef XMLIBS
XMLIBS := -lXm -lXpm
endif
ifndef XAWFLAGS
- XAWFLAGS := -I/usr/X11R6/include
+ XAWFLAGS := -I/usr/include
endif
ifndef XAWLIBS
XAWLIBS := -lXaw
@@ -74,6 +74,9 @@ ifeq ($(G4SYSTEM),Linux-icc)
ifndef OGLFLAGS
OGLFLAGS := -I$(OGLHOME)/include
endif
+ ifndef OGLHOME
+ OGLHOME := /usr
+ endif
ifndef OGLLIBS
OGLLIBS := -L$(OGLHOME)/lib -lGLU -lGL
endif
diff --git a/config/sys/WIN32-VC.gmk b/config/sys/WIN32-VC.gmk
index dec5e16caf..118349d70f 100644
--- a/config/sys/WIN32-VC.gmk
+++ b/config/sys/WIN32-VC.gmk
@@ -1,5 +1,5 @@
#
-# ------ WIN32/VC ------ Visual-C++ 7 .NET and higher
+# ------ WIN32/VC ------ Visual Studio 2019 and higher
#
ifeq ($(G4SYSTEM),WIN32-VC)
CXX := CL
@@ -10,7 +10,7 @@ ifeq ($(G4SYSTEM),WIN32-VC)
CXXFLAGS += -Od -MDd -Zi -Fd$(G4LIBDIR)/lib$(name)
endif
endif
- CXXFLAGS += -GR -EHsc -Zm200 -nologo
+ CXXFLAGS += -GR -EHsc -Zm200 -nologo -std:c++17
CXXFLAGS += -D_CONSOLE -D_WIN32 -DOS
CPPFLAGS += -DWIN32 -DXPNET -D_CRT_SECURE_NO_DEPRECATE
LDFLAGS += -FORCE /NODEFAULTLIB:MSVCRT.dll /STACK:12582912
diff --git a/config/sys/WIN32-g++.gmk b/config/sys/WIN32-g++.gmk
index 006c7b07c3..87090bebbb 100644
--- a/config/sys/WIN32-g++.gmk
+++ b/config/sys/WIN32-g++.gmk
@@ -1,9 +1,7 @@
#
# ------ GNU/WIN32 CYGWIN ------ !!! not supported !!!
-# Cygnus CygWin - gcc-3.2 and higher
-# Windows XP
-#
-# Stefano Agostinelli (agos001@pn.itnet.it) - IST Group, Genova
+# Cygnus CygWin - gcc-9.2 and higher
+# Windows 10
#
ifeq ($(G4SYSTEM),WIN32-g++)
CXX := g++
@@ -12,18 +10,9 @@ ifeq ($(G4SYSTEM),WIN32-g++)
CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe
CXXFLAGS += -fno-trapping-math -ftree-vectorize -fno-math-errno
G4USE_STD11 := 1
- ifdef G4USE_STD14
- CPPFLAGS += -std=c++14
- CXXFLAGS += -std=c++14
- else
- ifdef G4USE_STD17
- CPPFLAGS += -std=c++17
- CXXFLAGS += -std=c++17
- else
- CXXFLAGS += -std=c++11
- CPPFLAGS += -std=c++11
- endif
- endif
+ G4USE_STD17 := 1
+ CPPFLAGS += -std=c++17
+ CXXFLAGS += -std=c++17
ifdef G4OPTIMISE
CXXFLAGS += -O3
FCFLAGS := -O3
diff --git a/environments/History b/environments/History
index 45fa126d2f..54fd2b3e13 100644
--- a/environments/History
+++ b/environments/History
@@ -17,9 +17,13 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+envs-V10-05-00/ Dec. 1, 2019 K.Murakami
+ - g4py, updated for 10.6 release
+ - g4pym boost_python library name can be specified in cmake (BZ-2059)
+
envs-V10-04-01 / Nov. 30, 2018 K.Murakami
- g4py, updated for 10.5 release
- - g4py, fix CMAKE_INSTALL_PREFIX does not work (id 1924)
+ - g4py, fix CMAKE_INSTALL_PREFIX does not work (id 1924)
envs-V10-03-01 / Nov. 24, 2017 K.Murakami
- g4py, updated for 10.4 release
@@ -201,7 +205,7 @@ envs-V08-01-00 20 November 2006 Koichi Murakami
- more exposed stuffs
- add physics list module
- add GUI examples using wxPython
-
+
envs-V08-00-09 29 June 2006 Koichi Murakami
[g4py]
- fix rpath of boost_python (config/sys/linux.gmk, linuxx8664gcc.gmk)
@@ -235,7 +239,7 @@ envs-V08-00-04 05 June 2006 Koichi Murakami
- [g4py] additional moddifications of g4py for G4 8.1 (08-00-ref-05)
envs-V08-00-03 05 June 2006 Koichi Murakami
- - History file is updated.
+ - History file is updated.
- same as the previous
envs-V08-00-02 05 June 2006 Koichi Murakami
@@ -252,7 +256,7 @@ envs-V08-00-00 28 February 2006 Hajime Yoshida
-addition of new Python environments
-- g4py/source : Python wrappers of geant4/sources
-- g4py/site-modules : some application modules using the wrappers
- -- g4py/ associated files to configure
+ -- g4py/ associated files to configure
envs-V06-02-00 27 November 2004 Hajime Yoshida
-old depricated files
@@ -283,7 +287,7 @@ envs-V01-01-01 09 June 2000 John Allison
- Only OPACS and History tagged.
09 June 2000 Guy Barrand
-- Some correction to be able to compile
+- Some correction to be able to compile
with 01-01-ref-04
envs-V01-01-00 7th June 2000 Guy Barrand
@@ -320,7 +324,7 @@ envs-00-03-02 14th Sep 1998 Hajime Yoshida
- minor updates in GGE
envs-00-03-01 13th Sep 1998 Hajime Yoshida
-Momo/GGEmake added README and a macro file
- -Momo/java/Momo/GGE updated.
+ -Momo/java/Momo/GGE updated.
BREPs, sample persistent files etc.
envs-00-02-01 3rd Sep 1998 Hajime Yoshida
Momo/GGEmake
diff --git a/environments/g4py/CMakeLists.txt b/environments/g4py/CMakeLists.txt
index 1b64e2741a..80c5cb49c4 100644
--- a/environments/g4py/CMakeLists.txt
+++ b/environments/g4py/CMakeLists.txt
@@ -40,6 +40,14 @@ if(NOT GEANT4_FOUND)
message(FATAL_ERROR "NOT Found Geant4.")
endif()
+if(NOT DEFINED BOOST_PYTHON_LIB)
+ if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ set(BOOST_PYTHON_LIB boost_python)
+ elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ set(BOOST_PYTHON_LIB boost_python3)
+ endif()
+endif()
+
#------------------------------------------------------------------------------
# parameters for building
message(STATUS "--------------------------------------------------------")
diff --git a/environments/g4py/History b/environments/g4py/History
index acd09e3525..b3d8db832a 100644
--- a/environments/g4py/History
+++ b/environments/g4py/History
@@ -11,6 +11,11 @@ Geant4Py is a Geant4-Python bridge.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+1 Dec. 2019 K. Murakami
+- update for 10.6 release
+- update for Python3 support
+- boost_python library name can be specified in cmake (BZ-2059)
+
31 Jan. 2019, I.Hrivnacova
- Merged GitHub PR #4: all Boolean operators now return G4bool.
diff --git a/environments/g4py/README.md b/environments/g4py/README.md
index c0578cc9f0..76ec00d0c3 100644
--- a/environments/g4py/README.md
+++ b/environments/g4py/README.md
@@ -24,9 +24,8 @@ ROOT for histogramming/analysis
### Tested Platforms
-* CentOS7 (RH7 clones)
-* OSX (High Siera)
-
+* CentOS7 (Python2)
+* Ubuntu 18.04 LTS (Python3)
How to Install
--------------
@@ -40,7 +39,7 @@ then
# mkdir build
# cd build
- # cmake ..
+ # cmake ..
# make
# make install
@@ -67,7 +66,11 @@ Python module search directories, given by a colon-separated list of directories
# export PYTHONPATH=/lib64:/lib64/examples:/lib64/tests (zsh, bash)
# setenv PYTHONPATH /lib64:/lib64/examples:/lib64/tests (csh)
+### *LD_LIBRARY_PATH*
+You might need define LD_LIBRARY_PATH for Geant4 libraries.
+ # export LD_LIBRARY_PATH=/lib (zsh, bash)
+ # setenv LD_LIBRARY_PATH=/lib (csh)
### Getting started
You can import Geant4Py modules in Python just like
diff --git a/environments/g4py/site-modules/geometries/ExN01geom/CMakeLists.txt b/environments/g4py/site-modules/geometries/ExN01geom/CMakeLists.txt
index 0c4a6c0167..3950bdb139 100644
--- a/environments/g4py/site-modules/geometries/ExN01geom/CMakeLists.txt
+++ b/environments/g4py/site-modules/geometries/ExN01geom/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/geometries/ExN03geom/CMakeLists.txt b/environments/g4py/site-modules/geometries/ExN03geom/CMakeLists.txt
index eb43ffb9fc..ee2c95fc38 100644
--- a/environments/g4py/site-modules/geometries/ExN03geom/CMakeLists.txt
+++ b/environments/g4py/site-modules/geometries/ExN03geom/CMakeLists.txt
@@ -17,7 +17,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/geometries/Qgeom/CMakeLists.txt b/environments/g4py/site-modules/geometries/Qgeom/CMakeLists.txt
index 52e3c8fe32..fba98dd1ed 100644
--- a/environments/g4py/site-modules/geometries/Qgeom/CMakeLists.txt
+++ b/environments/g4py/site-modules/geometries/Qgeom/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/geometries/ezgeom/CMakeLists.txt b/environments/g4py/site-modules/geometries/ezgeom/CMakeLists.txt
index be323df1d4..48ceb14152 100644
--- a/environments/g4py/site-modules/geometries/ezgeom/CMakeLists.txt
+++ b/environments/g4py/site-modules/geometries/ezgeom/CMakeLists.txt
@@ -19,7 +19,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/materials/NISTmaterials/CMakeLists.txt b/environments/g4py/site-modules/materials/NISTmaterials/CMakeLists.txt
index 9441f95deb..6117367945 100644
--- a/environments/g4py/site-modules/materials/NISTmaterials/CMakeLists.txt
+++ b/environments/g4py/site-modules/materials/NISTmaterials/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/materials/Qmaterials/CMakeLists.txt b/environments/g4py/site-modules/materials/Qmaterials/CMakeLists.txt
index 14d51314cf..ec88962d9e 100644
--- a/environments/g4py/site-modules/materials/Qmaterials/CMakeLists.txt
+++ b/environments/g4py/site-modules/materials/Qmaterials/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/physics_lists/EMSTDpl/CMakeLists.txt b/environments/g4py/site-modules/physics_lists/EMSTDpl/CMakeLists.txt
index d8c7f905e6..d42d38f297 100644
--- a/environments/g4py/site-modules/physics_lists/EMSTDpl/CMakeLists.txt
+++ b/environments/g4py/site-modules/physics_lists/EMSTDpl/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/physics_lists/ExN01pl/CMakeLists.txt b/environments/g4py/site-modules/physics_lists/ExN01pl/CMakeLists.txt
index a9244e7a6b..f0d7f9832f 100644
--- a/environments/g4py/site-modules/physics_lists/ExN01pl/CMakeLists.txt
+++ b/environments/g4py/site-modules/physics_lists/ExN01pl/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/primaries/MedicalBeam/CMakeLists.txt b/environments/g4py/site-modules/primaries/MedicalBeam/CMakeLists.txt
index 65be403d80..a8d867f616 100644
--- a/environments/g4py/site-modules/primaries/MedicalBeam/CMakeLists.txt
+++ b/environments/g4py/site-modules/primaries/MedicalBeam/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/primaries/ParticleGun/CMakeLists.txt b/environments/g4py/site-modules/primaries/ParticleGun/CMakeLists.txt
index 92a200d944..87d40ad25c 100644
--- a/environments/g4py/site-modules/primaries/ParticleGun/CMakeLists.txt
+++ b/environments/g4py/site-modules/primaries/ParticleGun/CMakeLists.txt
@@ -16,7 +16,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/site-modules/processes/emcalculator/python3/CMakeLists.txt b/environments/g4py/site-modules/processes/emcalculator/python3/CMakeLists.txt
index 80d47b3856..1c06d753f2 100644
--- a/environments/g4py/site-modules/processes/emcalculator/python3/CMakeLists.txt
+++ b/environments/g4py/site-modules/processes/emcalculator/python3/CMakeLists.txt
@@ -22,5 +22,5 @@ add_custom_command (
# install
install (FILES ${PY_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
diff --git a/environments/g4py/site-modules/python/CMakeLists.txt b/environments/g4py/site-modules/python/CMakeLists.txt
index 0048282feb..ed43ed0f36 100644
--- a/environments/g4py/site-modules/python/CMakeLists.txt
+++ b/environments/g4py/site-modules/python/CMakeLists.txt
@@ -22,5 +22,5 @@ add_custom_command (
# install
install (FILES ${PY_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
diff --git a/environments/g4py/site-modules/utils/MCScore/python3/CMakeLists.txt b/environments/g4py/site-modules/utils/MCScore/python3/CMakeLists.txt
index 50fb98a0a0..dca8401f10 100644
--- a/environments/g4py/site-modules/utils/MCScore/python3/CMakeLists.txt
+++ b/environments/g4py/site-modules/utils/MCScore/python3/CMakeLists.txt
@@ -22,5 +22,5 @@ add_custom_command (
# install
install (FILES ${PY_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
-install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYC_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
+#install (FILES ${PYO_FILES} DESTINATION ${G4SITEMODULES_INSTALL_DIR})
diff --git a/environments/g4py/source/digits_hits/CMakeLists.txt b/environments/g4py/source/digits_hits/CMakeLists.txt
index 90113589ed..5cbf044e82 100644
--- a/environments/g4py/source/digits_hits/CMakeLists.txt
+++ b/environments/g4py/source/digits_hits/CMakeLists.txt
@@ -18,7 +18,7 @@ set_target_properties(${_TARGET}
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/event/CMakeLists.txt b/environments/g4py/source/event/CMakeLists.txt
index 55f7097eb9..9063d5da4d 100644
--- a/environments/g4py/source/event/CMakeLists.txt
+++ b/environments/g4py/source/event/CMakeLists.txt
@@ -23,7 +23,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/gdml/CMakeLists.txt b/environments/g4py/source/gdml/CMakeLists.txt
index 86cd1a6e76..56c15dd75a 100644
--- a/environments/g4py/source/gdml/CMakeLists.txt
+++ b/environments/g4py/source/gdml/CMakeLists.txt
@@ -24,7 +24,7 @@ set_target_properties(${_TARGET}
target_link_libraries (${_TARGET}
${GEANT4_LIBRARIES_WITH_VIS} ${XERCESC_LIBRARY}
- boost_python ${PYTHON_LIBRARIES})
+ ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${G4MODULES_INSTALL_DIR})
diff --git a/environments/g4py/source/geometry/CMakeLists.txt b/environments/g4py/source/geometry/CMakeLists.txt
index 49efa1aba6..a5316a6ab8 100644
--- a/environments/g4py/source/geometry/CMakeLists.txt
+++ b/environments/g4py/source/geometry/CMakeLists.txt
@@ -56,7 +56,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc b/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc
index 5c28dd52b9..8e50becad1 100644
--- a/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc
+++ b/environments/g4py/source/geometry/pyG4VPhysicalVolume.cc
@@ -61,33 +61,29 @@ void export_G4VPhysicalVolume()
// ---
.def("SetTranslation", &G4VPhysicalVolume::SetTranslation)
.def("GetTranslation", &G4VPhysicalVolume::GetTranslation,
- return_internal_reference<>())
+ return_value_policy())
.def("GetObjectTranslation", &G4VPhysicalVolume::GetObjectTranslation)
.def("GetFrameTranslation", &G4VPhysicalVolume::GetObjectTranslation)
// ---
.def("SetRotation", &G4VPhysicalVolume::SetRotation)
.def("GetRotation", f1_GetRotation,
- return_internal_reference<>())
+ return_internal_reference<>())
.def("GetRotation", f2_GetRotation,
- return_internal_reference<>())
+ return_internal_reference<>())
.def("GetObjectRotationValue", &G4VPhysicalVolume::GetObjectRotationValue)
.def("GetFrameRotation", &G4VPhysicalVolume::GetFrameRotation,
- return_internal_reference<>())
+ return_internal_reference<>())
// ---
.def("SetLogicalVolume", &G4VPhysicalVolume::SetLogicalVolume)
.def("SetMotherLogical", &G4VPhysicalVolume::SetMotherLogical)
.def("GetLogicalVolume", &G4VPhysicalVolume::GetLogicalVolume,
- return_internal_reference<>())
+ return_internal_reference<>())
.def("GetMotherLogical", &G4VPhysicalVolume::GetMotherLogical,
- return_internal_reference<>())
+ return_internal_reference<>())
// ---
.def("SetName", &G4VPhysicalVolume::SetName)
-#if G4VERSION_NUMBER <= 801
- .def("GetName", &G4VPhysicalVolume::GetName)
-#else
.def("GetName", &G4VPhysicalVolume::GetName,
return_value_policy())
-#endif
.def("SetCopyNo", &G4VPhysicalVolume::SetCopyNo)
.def("GetCopyNo", &G4VPhysicalVolume::GetCopyNo)
// ---
@@ -96,7 +92,6 @@ void export_G4VPhysicalVolume()
.def("IsParameterised", &G4VPhysicalVolume::IsParameterised)
.def("GetMultiplicity", &G4VPhysicalVolume::GetMultiplicity)
.def("GetParameterisation", &G4VPhysicalVolume::GetParameterisation,
- return_value_policy())
+ return_value_policy())
;
}
-
diff --git a/environments/g4py/source/global/CMakeLists.txt b/environments/g4py/source/global/CMakeLists.txt
index e57e763ff9..8889ebb522 100644
--- a/environments/g4py/source/global/CMakeLists.txt
+++ b/environments/g4py/source/global/CMakeLists.txt
@@ -36,9 +36,8 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${G4MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/source/graphics_reps/CMakeLists.txt b/environments/g4py/source/graphics_reps/CMakeLists.txt
index d49498aebc..900080d8fa 100644
--- a/environments/g4py/source/graphics_reps/CMakeLists.txt
+++ b/environments/g4py/source/graphics_reps/CMakeLists.txt
@@ -18,7 +18,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/intercoms/CMakeLists.txt b/environments/g4py/source/intercoms/CMakeLists.txt
index 51f0a723fd..b332f38cb0 100644
--- a/environments/g4py/source/intercoms/CMakeLists.txt
+++ b/environments/g4py/source/intercoms/CMakeLists.txt
@@ -20,7 +20,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/interface/CMakeLists.txt b/environments/g4py/source/interface/CMakeLists.txt
index a8928e0f30..5545856ae5 100644
--- a/environments/g4py/source/interface/CMakeLists.txt
+++ b/environments/g4py/source/interface/CMakeLists.txt
@@ -17,7 +17,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/materials/CMakeLists.txt b/environments/g4py/source/materials/CMakeLists.txt
index 9b1ed90493..a54bb50c6c 100644
--- a/environments/g4py/source/materials/CMakeLists.txt
+++ b/environments/g4py/source/materials/CMakeLists.txt
@@ -24,7 +24,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/materials/pyG4Material.cc b/environments/g4py/source/materials/pyG4Material.cc
index e438b7bd18..27fc9c13e8 100644
--- a/environments/g4py/source/materials/pyG4Material.cc
+++ b/environments/g4py/source/materials/pyG4Material.cc
@@ -29,7 +29,6 @@
// 2005 Q
// ====================================================================
#include
-#include "G4Version.hh"
#include "G4Material.hh"
using namespace boost::python;
@@ -45,6 +44,14 @@ void (G4Material::*f1_AddElement)(G4Element*, G4int)
void (G4Material::*f2_AddElement)(G4Element*, G4double)
= &G4Material::AddElement;
+// GetMaterial
+G4Material* (*f1_GetMaterial)(const G4String&, G4bool)
+ = &G4Material::GetMaterial;
+G4Material* (*f2_GetMaterial)(G4double, G4double, G4double)
+ = &G4Material::GetMaterial;
+G4Material* (*f3_GetMaterial)(size_t, G4double)
+ = &G4Material::GetMaterial;
+
BOOST_PYTHON_FUNCTION_OVERLOADS(f_GetMaterial, G4Material::GetMaterial, 1, 2)
// raw pointer -> Python list conversion
@@ -156,9 +163,12 @@ void export_G4Material()
.def("GetNumberOfMaterials", &G4Material::GetNumberOfMaterials)
.staticmethod("GetNumberOfMaterials")
.def("GetIndex", &G4Material::GetIndex)
- .def("GetMaterial", &G4Material::GetMaterial,
- f_GetMaterial()
- [return_value_policy()])
+ .def("GetMaterial", f1_GetMaterial, f_GetMaterial()
+ [return_value_policy()])
+ .def("GetMaterial", f2_GetMaterial,
+ return_value_policy())
+ .def("GetMaterial", f3_GetMaterial,
+ return_value_policy())
.staticmethod("GetMaterial")
// ---
//.def(self_ns::str(self))
@@ -173,4 +183,3 @@ void export_G4Material()
.value("kStateGas", kStateGas)
;
}
-
diff --git a/environments/g4py/source/particles/CMakeLists.txt b/environments/g4py/source/particles/CMakeLists.txt
index 9221968019..7f817f0328 100644
--- a/environments/g4py/source/particles/CMakeLists.txt
+++ b/environments/g4py/source/particles/CMakeLists.txt
@@ -23,7 +23,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/physics_lists/CMakeLists.txt b/environments/g4py/source/physics_lists/CMakeLists.txt
index 3be406ba91..69e4fa5141 100644
--- a/environments/g4py/source/physics_lists/CMakeLists.txt
+++ b/environments/g4py/source/physics_lists/CMakeLists.txt
@@ -17,7 +17,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/processes/CMakeLists.txt b/environments/g4py/source/processes/CMakeLists.txt
index 3a7805a0bb..2c72405023 100644
--- a/environments/g4py/source/processes/CMakeLists.txt
+++ b/environments/g4py/source/processes/CMakeLists.txt
@@ -25,7 +25,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/python/__init__.py b/environments/g4py/source/python/__init__.py
index b7ce80d5a6..39860ccf62 100644
--- a/environments/g4py/source/python/__init__.py
+++ b/environments/g4py/source/python/__init__.py
@@ -7,8 +7,8 @@
# This package contains a set of Python interface with Geant4.
# ==================================================================
"""
-__version__ ='10.5'
-__date__ = 'December/2018'
+__version__ ='10.6'
+__date__ = 'December/2019'
__author__ = 'K.Murakami (Koichi.Murakami@kek.jp)'
# import submodules
diff --git a/environments/g4py/source/python3/CMakeLists.txt b/environments/g4py/source/python3/CMakeLists.txt
index 8d1a31cd3a..ac77e2e34a 100644
--- a/environments/g4py/source/python3/CMakeLists.txt
+++ b/environments/g4py/source/python3/CMakeLists.txt
@@ -5,8 +5,8 @@ file (GLOB PY_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.py)
foreach (_pyfile ${PY_FILES})
configure_file (${CMAKE_CURRENT_SOURCE_DIR}/${_pyfile}
${CMAKE_CURRENT_BINARY_DIR}/${_pyfile} COPYONLY)
- list (APPEND PYC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${_pyfile}c")
- list (APPEND PYO_FILES "${CMAKE_CURRENT_BINARY_DIR}/${_pyfile}o")
+ #list (APPEND PYC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${_pyfile}c")
+ #list (APPEND PYO_FILES "${CMAKE_CURRENT_BINARY_DIR}/${_pyfile}o")
endforeach()
add_custom_target (Geant4Py ALL)
@@ -20,7 +20,8 @@ add_custom_command (
)
# install
-
install (FILES ${PY_FILES} DESTINATION ${G4MODULES_INSTALL_DIR})
-install (FILES ${PYC_FILES} DESTINATION ${G4MODULES_INSTALL_DIR})
-install (FILES ${PYO_FILES} DESTINATION ${G4MODULES_INSTALL_DIR})
+install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/__pycache__
+ DESTINATION ${G4MODULES_INSTALL_DIR})
+#install (FILES ${PYC_FILES} DESTINATION ${G4MODULES_INSTALL_DIR})
+#install (FILES ${PYO_FILES} DESTINATION ${G4MODULES_INSTALL_DIR})
diff --git a/environments/g4py/source/python3/__init__.py b/environments/g4py/source/python3/__init__.py
index c40a3cc0bb..f4bd4c1bc4 100644
--- a/environments/g4py/source/python3/__init__.py
+++ b/environments/g4py/source/python3/__init__.py
@@ -7,8 +7,8 @@
# This package contains a set of Python interface with Geant4.
# ==================================================================
"""
-__version__ ='10.5'
-__date__ = 'December/2018'
+__version__ ='10.6'
+__date__ = 'December/2019'
__author__ = 'K.Murakami (Koichi.Murakami@kek.jp)'
# import submodules
@@ -85,9 +85,6 @@ gParticleIterator = PyG4ParticleList()
# gProcessTable
gProcessTable = G4ProcessTable.GetProcessTable()
-# gLossTableManager
-gLossTableManager = G4LossTableManager.Instance()
-
# gProductionCutsTable
gProductionCutsTable = G4ProductionCutsTable.GetProductionCutsTable()
diff --git a/environments/g4py/source/run/CMakeLists.txt b/environments/g4py/source/run/CMakeLists.txt
index 2dbcf6ca4d..006aacb750 100644
--- a/environments/g4py/source/run/CMakeLists.txt
+++ b/environments/g4py/source/run/CMakeLists.txt
@@ -25,7 +25,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/track/CMakeLists.txt b/environments/g4py/source/track/CMakeLists.txt
index 34e7946670..b2820010dd 100644
--- a/environments/g4py/source/track/CMakeLists.txt
+++ b/environments/g4py/source/track/CMakeLists.txt
@@ -21,7 +21,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/tracking/CMakeLists.txt b/environments/g4py/source/tracking/CMakeLists.txt
index 42e0418882..ee88ad9d45 100644
--- a/environments/g4py/source/tracking/CMakeLists.txt
+++ b/environments/g4py/source/tracking/CMakeLists.txt
@@ -19,7 +19,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/source/visualization/CMakeLists.txt b/environments/g4py/source/visualization/CMakeLists.txt
index 9f59d80dbf..827e90f0d9 100644
--- a/environments/g4py/source/visualization/CMakeLists.txt
+++ b/environments/g4py/source/visualization/CMakeLists.txt
@@ -42,7 +42,7 @@ set_target_properties(${_TARGET}
BUILD_WITH_INSTALL_RPATH TRUE)
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/tests/CMakeLists.txt b/environments/g4py/tests/CMakeLists.txt
index 49900b29db..0df6104beb 100644
--- a/environments/g4py/tests/CMakeLists.txt
+++ b/environments/g4py/tests/CMakeLists.txt
@@ -24,18 +24,22 @@ add_subdirectory(gtest01/module)
# testing
add_subdirectory(test00)
add_subdirectory(test01)
-add_subdirectory(test02)
-add_subdirectory(test03)
-add_subdirectory(test04)
-add_subdirectory(test05)
-add_subdirectory(test06)
-add_subdirectory(test07)
-add_subdirectory(test08)
-add_subdirectory(test09)
-add_subdirectory(test10)
-add_subdirectory(test11)
-add_subdirectory(test12)
-add_subdirectory(test13)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ add_subdirectory(test02)
+ add_subdirectory(test03)
+ add_subdirectory(test04)
+ add_subdirectory(test05)
+ add_subdirectory(test06)
+ add_subdirectory(test07)
+ add_subdirectory(test08)
+ add_subdirectory(test09)
+ add_subdirectory(test10)
+ add_subdirectory(test11)
+ add_subdirectory(test12)
+ add_subdirectory(test13)
+endif()
+
#
add_subdirectory(gtest01)
add_subdirectory(gtest02)
diff --git a/environments/g4py/tests/gtest01/CMakeLists.txt b/environments/g4py/tests/gtest01/CMakeLists.txt
index d12bddf92e..a3ab4b79ac 100644
--- a/environments/g4py/tests/gtest01/CMakeLists.txt
+++ b/environments/g4py/tests/gtest01/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest01 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest01
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest01/module/CMakeLists.txt b/environments/g4py/tests/gtest01/module/CMakeLists.txt
index 24e18a1e51..ab982a2359 100644
--- a/environments/g4py/tests/gtest01/module/CMakeLists.txt
+++ b/environments/g4py/tests/gtest01/module/CMakeLists.txt
@@ -27,7 +27,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "gtest01")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
+ ${GEANT4_LIBRARIES_WITH_VIS} ${BOOST_PYTHON_LIB}
${PYTHON_LIBRARIES})
# install
diff --git a/environments/g4py/tests/gtest01/python3/test.py b/environments/g4py/tests/gtest01/python3/test.py
index eca51be0c0..5ce0964dd8 100755
--- a/environments/g4py/tests/gtest01/python3/test.py
+++ b/environments/g4py/tests/gtest01/python3/test.py
@@ -69,7 +69,7 @@ class MyField(G4MagneticField):
bfield.y= 5.*tesla
bfield.z= 0.
return bfield
-
+
# ==================================================================
# main
# ==================================================================
@@ -89,7 +89,7 @@ gRunManager.SetUserAction(myPGA)
#myRA= MyRunAction()
#gRunManager.SetUserAction(myRA)
-
+
myEA= MyEventAction()
gRunManager.SetUserAction(myEA)
@@ -113,9 +113,6 @@ fieldMgr.CreateChordFinder(myField)
gRunManager.Initialize()
-# visualization
-gControlExecute("vis.mac")
-
# beamOn
gRunManager.BeamOn(10)
-
+gTerminate()
diff --git a/environments/g4py/tests/gtest02/CMakeLists.txt b/environments/g4py/tests/gtest02/CMakeLists.txt
index bc6846dda7..4312f6662a 100644
--- a/environments/g4py/tests/gtest02/CMakeLists.txt
+++ b/environments/g4py/tests/gtest02/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest02 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest02
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest03/CMakeLists.txt b/environments/g4py/tests/gtest03/CMakeLists.txt
index fc7525c96c..5f31853305 100644
--- a/environments/g4py/tests/gtest03/CMakeLists.txt
+++ b/environments/g4py/tests/gtest03/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest03 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest03
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest04/CMakeLists.txt b/environments/g4py/tests/gtest04/CMakeLists.txt
index ac0edf87f3..17cb18c422 100644
--- a/environments/g4py/tests/gtest04/CMakeLists.txt
+++ b/environments/g4py/tests/gtest04/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest04 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest04
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest05/CMakeLists.txt b/environments/g4py/tests/gtest05/CMakeLists.txt
index d7756c9d11..051b23d562 100644
--- a/environments/g4py/tests/gtest05/CMakeLists.txt
+++ b/environments/g4py/tests/gtest05/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest05 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest05
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest05/python3/test.py b/environments/g4py/tests/gtest05/python3/test.py
index 91d181c3a2..79a0a6d611 100755
--- a/environments/g4py/tests/gtest05/python3/test.py
+++ b/environments/g4py/tests/gtest05/python3/test.py
@@ -20,7 +20,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
self.air= gNistManager.FindOrBuildMaterial("G4_AIR")
self.lv_object= None
self.world= self.ConstructWorld()
-
+
self.va_red= G4VisAttributes(G4Color(1.,0.,0.))
self.va_cyan= G4VisAttributes(G4Color(0.,1.,1.))
self.va_green= G4VisAttributes(G4Color(0.,1.,0.))
@@ -34,7 +34,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
global sld_world, lv_world, pv_world, va_world
sld_world= G4Box("world", 1.*m, 1.*m, 1.*m)
- lv_world= G4LogicalVolume(sld_world, self.air, "world")
+ lv_world= G4LogicalVolume(sld_world, self.air, "world")
pv_world= G4PVPlacement(G4Transform3D(), lv_world, "world",
None, False, 0)
@@ -58,7 +58,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
self.lv_object.SetSolid(sld_box)
self.lv_object.SetVisAttributes(self.va_red)
gRunManager.GeometryHasBeenModified()
-
+
# -----------------------------------------------------------------
def ConstructTubs(self):
global sld_tubs
@@ -66,7 +66,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
self.lv_object.SetSolid(sld_tubs)
self.lv_object.SetVisAttributes(self.va_cyan)
gRunManager.GeometryHasBeenModified()
-
+
# -----------------------------------------------------------------
def ConstructCons(self):
global sld_cons
@@ -114,7 +114,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def ConstructOrb(self):
global sld_orb
- sld_orb= G4Orb("orb", 100.*cm)
+ sld_orb= G4Orb("orb", 100.*cm)
self.lv_object.SetSolid(sld_orb)
self.lv_object.SetVisAttributes(self.va_red)
gRunManager.GeometryHasBeenModified()
@@ -122,7 +122,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def ConstructTorus(self):
global sld_torus
- sld_torus= G4Torus("torus", 40.*cm, 60.*cm, 200.*cm, 0., 90.*deg)
+ sld_torus= G4Torus("torus", 40.*cm, 60.*cm, 200.*cm, 0., 90.*deg)
self.lv_object.SetSolid(sld_torus)
self.lv_object.SetVisAttributes(self.va_magenta)
gRunManager.GeometryHasBeenModified()
@@ -164,7 +164,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def ConstructEllipticalTube(self):
global sld_et
- sld_et= G4EllipticalTube("ellipticaltube", 5.*cm, 10.*cm, 20.*cm)
+ sld_et= G4EllipticalTube("ellipticaltube", 5.*cm, 10.*cm, 20.*cm)
self.lv_object.SetSolid(sld_et)
self.lv_object.SetVisAttributes(self.va_cyan)
gRunManager.GeometryHasBeenModified()
@@ -182,7 +182,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
def ConstructEllipticalCone(self):
global sld_ec
sld_ec= G4EllipticalCone("ellipticalcone", 30.*cm, 60.*cm,
- 50.*cm, 25.*cm)
+ 50.*cm, 25.*cm)
self.lv_object.SetSolid(sld_ec)
self.lv_object.SetVisAttributes(self.va_magenta)
gRunManager.GeometryHasBeenModified()
@@ -249,8 +249,8 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def Construct(self): # return the world volume
- return self.world
-
+ return self.world
+
# ==================================================================
# main
# ==================================================================
@@ -304,7 +304,8 @@ f_list= (
for s,f in f_list:
f.__call__()
- gRunManager.BeamOn(1)
+ gRunManager.BeamOn(1)
fname= "%s.wrl" % (s)
os.rename("g4_00.wrl", fname)
-
+
+gTerminate()
diff --git a/environments/g4py/tests/gtest06/CMakeLists.txt b/environments/g4py/tests/gtest06/CMakeLists.txt
index 9835b1d4f4..0fcad24495 100644
--- a/environments/g4py/tests/gtest06/CMakeLists.txt
+++ b/environments/g4py/tests/gtest06/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest06 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest06
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/gtest06/python3/test.py b/environments/g4py/tests/gtest06/python3/test.py
index cfdeaf3096..cb894448c3 100755
--- a/environments/g4py/tests/gtest06/python3/test.py
+++ b/environments/g4py/tests/gtest06/python3/test.py
@@ -19,7 +19,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
self.air= gNistManager.FindOrBuildMaterial("G4_AIR")
self.lv_object= None
self.world= self.ConstructWorld()
-
+
self.va_red= G4VisAttributes(G4Color(1.,0.,0.))
self.va_cyan= G4VisAttributes(G4Color(0.,1.,1.))
self.va_green= G4VisAttributes(G4Color(0.,1.,0.))
@@ -36,7 +36,7 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
global sld_world, lv_world, pv_world, va_world
sld_world= G4Box("world", 1.*m, 1.*m, 1.*m)
- lv_world= G4LogicalVolume(sld_world, self.air, "world")
+ lv_world= G4LogicalVolume(sld_world, self.air, "world")
pv_world= G4PVPlacement(G4Transform3D(), lv_world, "world",
None, False, 0)
@@ -56,16 +56,16 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def ConstructUnion(self):
global sld_union
- sld_union= G4UnionSolid("box+cylinder", self.sld_box, self.sld_cyl);
-
+ sld_union= G4UnionSolid("box+cylinder", self.sld_box, self.sld_cyl);
+
self.lv_object.SetSolid(sld_union)
self.lv_object.SetVisAttributes(self.va_blue)
gRunManager.GeometryHasBeenModified()
-
+
# -----------------------------------------------------------------
def ConstructIntersection(self):
offset= G4ThreeVector(20.*cm, 20.*cm, 0.)
- global sld_intersection
+ global sld_intersection
sld_intersection= G4IntersectionSolid("box*cylinder",
self.sld_box, self.sld_cyl,
None, offset)
@@ -76,18 +76,18 @@ class MyDetectorConstruction(G4VUserDetectorConstruction):
# -----------------------------------------------------------------
def ConstructSubtraction(self):
- global sld_subtraction
+ global sld_subtraction
sld_subtraction= G4SubtractionSolid("box-cylinder",
self.sld_box, self.sld_cyl)
self.lv_object.SetSolid(sld_subtraction)
self.lv_object.SetVisAttributes(self.va_red)
gRunManager.GeometryHasBeenModified()
-
+
# -----------------------------------------------------------------
def Construct(self): # return the world volume
- return self.world
-
+ return self.world
+
# ==================================================================
# main
# ==================================================================
@@ -122,5 +122,5 @@ for s,f in f_list:
fname= "%s.jpg" % (s)
cmdstr= "/vis/rayTracer/trace " + fname
gApplyUICommand(cmdstr)
-
+gTerminate()
diff --git a/environments/g4py/tests/gtest07/CMakeLists.txt b/environments/g4py/tests/gtest07/CMakeLists.txt
index 48e429c2f2..62409c63de 100644
--- a/environments/g4py/tests/gtest07/CMakeLists.txt
+++ b/environments/g4py/tests/gtest07/CMakeLists.txt
@@ -1,7 +1,13 @@
# add teting
add_test(gtest07 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST gtest07
PROPERTY ENVIRONMENT
PYTHONPATH=./module:${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
diff --git a/environments/g4py/tests/test00/CMakeLists.txt b/environments/g4py/tests/test00/CMakeLists.txt
index 82d1715daa..f3f0144a67 100644
--- a/environments/g4py/tests/test00/CMakeLists.txt
+++ b/environments/g4py/tests/test00/CMakeLists.txt
@@ -1,5 +1,11 @@
# add teting
add_test(test00 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST test00 PROPERTY ENVIRONMENT PYTHONPATH=./module)
diff --git a/environments/g4py/tests/test00/module/CMakeLists.txt b/environments/g4py/tests/test00/module/CMakeLists.txt
index d0fedd4337..8934422d62 100644
--- a/environments/g4py/tests/test00/module/CMakeLists.txt
+++ b/environments/g4py/tests/test00/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test00")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test00/python3/test.py b/environments/g4py/tests/test00/python3/test.py
new file mode 100755
index 0000000000..3050197ddd
--- /dev/null
+++ b/environments/g4py/tests/test00/python3/test.py
@@ -0,0 +1,11 @@
+#!/usr/bin/python3
+# ==================================================================
+# python script for Geant4Py test
+#
+#
+# ==================================================================
+import test00
+
+print("importing created module...\n")
+
+print(test00.greet())
diff --git a/environments/g4py/tests/test01/CMakeLists.txt b/environments/g4py/tests/test01/CMakeLists.txt
index 37f6f7ac5e..9bfb14ad89 100644
--- a/environments/g4py/tests/test01/CMakeLists.txt
+++ b/environments/g4py/tests/test01/CMakeLists.txt
@@ -1,5 +1,11 @@
# add teting
add_test(test01 python test.py)
-configure_file(test.py test.py)
+
+if (${PYTHON_VERSION_MAJOR} MATCHES "2")
+ configure_file(test.py test.py)
+elseif (${PYTHON_VERSION_MAJOR} MATCHES "3")
+ configure_file(python3/test.py test.py)
+endif()
+
set_property(TEST test01 PROPERTY ENVIRONMENT PYTHONPATH=./module)
diff --git a/environments/g4py/tests/test01/module/CMakeLists.txt b/environments/g4py/tests/test01/module/CMakeLists.txt
index 7f06ba30bb..0c2e4eb848 100644
--- a/environments/g4py/tests/test01/module/CMakeLists.txt
+++ b/environments/g4py/tests/test01/module/CMakeLists.txt
@@ -20,8 +20,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test01")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test01/python3/test.py b/environments/g4py/tests/test01/python3/test.py
new file mode 100755
index 0000000000..4fcc8f7b77
--- /dev/null
+++ b/environments/g4py/tests/test01/python3/test.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python3
+# ==================================================================
+# python script for Geant4Py test
+#
+#
+# ==================================================================
+import test01
+
+print("importing created module...\n")
+
+a= test01.AClass()
+b= test01.AClass(0)
+c= test01.AClass(1, 1.)
+
+print(" >>a<<", a.AMethod())
+print(" >>b<<", b.AMethod())
+print(" >>c<<", c.AMethod())
diff --git a/environments/g4py/tests/test02/module/CMakeLists.txt b/environments/g4py/tests/test02/module/CMakeLists.txt
index 81503f198b..48027e6f19 100644
--- a/environments/g4py/tests/test02/module/CMakeLists.txt
+++ b/environments/g4py/tests/test02/module/CMakeLists.txt
@@ -22,8 +22,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test02")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test03/module/CMakeLists.txt b/environments/g4py/tests/test03/module/CMakeLists.txt
index 997e97d9ee..32767db249 100644
--- a/environments/g4py/tests/test03/module/CMakeLists.txt
+++ b/environments/g4py/tests/test03/module/CMakeLists.txt
@@ -20,8 +20,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test03")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test04/module/CMakeLists.txt b/environments/g4py/tests/test04/module/CMakeLists.txt
index f2b676414b..44dca33ae1 100644
--- a/environments/g4py/tests/test04/module/CMakeLists.txt
+++ b/environments/g4py/tests/test04/module/CMakeLists.txt
@@ -21,7 +21,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test04")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
diff --git a/environments/g4py/tests/test05/module/CMakeLists.txt b/environments/g4py/tests/test05/module/CMakeLists.txt
index c04047fba7..3f715cd67a 100644
--- a/environments/g4py/tests/test05/module/CMakeLists.txt
+++ b/environments/g4py/tests/test05/module/CMakeLists.txt
@@ -21,8 +21,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test05")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test06/module/CMakeLists.txt b/environments/g4py/tests/test06/module/CMakeLists.txt
index 4a7fd64400..c22bb082ac 100644
--- a/environments/g4py/tests/test06/module/CMakeLists.txt
+++ b/environments/g4py/tests/test06/module/CMakeLists.txt
@@ -21,8 +21,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test06")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test07/module/CMakeLists.txt b/environments/g4py/tests/test07/module/CMakeLists.txt
index 53e23864ab..17944273d2 100644
--- a/environments/g4py/tests/test07/module/CMakeLists.txt
+++ b/environments/g4py/tests/test07/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test07")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test08/module/CMakeLists.txt b/environments/g4py/tests/test08/module/CMakeLists.txt
index 9d05db3b4f..9a586e447b 100644
--- a/environments/g4py/tests/test08/module/CMakeLists.txt
+++ b/environments/g4py/tests/test08/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test08")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test09/module/CMakeLists.txt b/environments/g4py/tests/test09/module/CMakeLists.txt
index 30fe131680..9d59bb11a5 100644
--- a/environments/g4py/tests/test09/module/CMakeLists.txt
+++ b/environments/g4py/tests/test09/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test09")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test09/module/test09.cc b/environments/g4py/tests/test09/module/test09.cc
index 88747ced47..e992065cd2 100644
--- a/environments/g4py/tests/test09/module/test09.cc
+++ b/environments/g4py/tests/test09/module/test09.cc
@@ -46,7 +46,7 @@ public:
AClass operator+(const AClass& aclass) {
AClass atemp;
- atemp.ival= ival + aclass.ival;
+ atemp.ival= ival + aclass.ival;
return atemp;
}
@@ -55,7 +55,7 @@ public:
return *this;
}
- G4bool operator==(const AClass& aclass) const {
+ bool operator==(const AClass& aclass) const {
if(ival == aclass.ival) return true;
return false;
}
@@ -84,4 +84,3 @@ BOOST_PYTHON_MODULE(test09)
.def(self_ns::str(self))
;
}
-
diff --git a/environments/g4py/tests/test10/module/CMakeLists.txt b/environments/g4py/tests/test10/module/CMakeLists.txt
index 338223d469..b6bcb2632b 100644
--- a/environments/g4py/tests/test10/module/CMakeLists.txt
+++ b/environments/g4py/tests/test10/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test10")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test11/module/CMakeLists.txt b/environments/g4py/tests/test11/module/CMakeLists.txt
index f3983235c2..d49d8f5707 100644
--- a/environments/g4py/tests/test11/module/CMakeLists.txt
+++ b/environments/g4py/tests/test11/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test11")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test12/module/CMakeLists.txt b/environments/g4py/tests/test12/module/CMakeLists.txt
index 06be012f70..16ad7eb91c 100644
--- a/environments/g4py/tests/test12/module/CMakeLists.txt
+++ b/environments/g4py/tests/test12/module/CMakeLists.txt
@@ -20,8 +20,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test12")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/environments/g4py/tests/test13/module/CMakeLists.txt b/environments/g4py/tests/test13/module/CMakeLists.txt
index c96b02324b..763be65c98 100644
--- a/environments/g4py/tests/test13/module/CMakeLists.txt
+++ b/environments/g4py/tests/test13/module/CMakeLists.txt
@@ -19,8 +19,7 @@ set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "test13")
set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-target_link_libraries (${_TARGET} boost_python ${PYTHON_LIBRARIES})
+target_link_libraries (${_TARGET} ${BOOST_PYTHON_LIB} ${PYTHON_LIBRARIES})
# install
install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
-
diff --git a/examples/.doxygen/Doxyfile b/examples/.doxygen/Doxyfile
index 3f8597db8a..351755d776 100644
--- a/examples/.doxygen/Doxyfile
+++ b/examples/.doxygen/Doxyfile
@@ -799,9 +799,6 @@ INPUT = Doxymain.h \
../extended/analysis/AnaEx03/.README.AIDA.txt \
../extended/analysis/AnaEx03/.README.OpenScientist.txt \
../extended/analysis/B1Con \
- ../extended/analysis/B3aScoreWriter/.README.txt \
- ../extended/analysis/B3aScoreWriter/scoreWriter \
- ../extended/analysis/B4dScoreWriter/.README.txt \
../extended/biasing \
../extended/electromagnetic/.README.txt \
../extended/electromagnetic/TestEm0/.README.txt \
@@ -852,6 +849,7 @@ INPUT = Doxymain.h \
../extended/hadronic/Hadr04/.README.txt \
../extended/hadronic/Hadr06/.README.txt \
../extended/hadronic/Hadr07/.README.txt \
+ ../extended/hadronic/Hadr08/.README.txt \
../extended/hadronic/FissionFragment \
../extended/hadronic/NeutronSource/.README.txt \
../extended/medical/.README.txt \
@@ -869,15 +867,18 @@ INPUT = Doxymain.h \
../extended/medical/dna/chem4/.README.txt \
../extended/medical/dna/chem5/.README.txt \
../extended/medical/dna/clustering/.README.txt \
+ ../extended/medical/dna/dnadamage1/.README.txt \
../extended/medical/dna/dnaphysics/.README.txt \
../extended/medical/dna/icsd/.README.txt \
../extended/medical/dna/mfp/.README.txt \
../extended/medical/dna/microdosimetry/.README.txt \
+ ../extended/medical/dna/microprox/.README.txt \
../extended/medical/dna/microyz/.README.txt \
../extended/medical/dna/neuron/.README.txt \
../extended/medical/dna/pdb4dna/.README.txt \
../extended/medical/dna/range/.README.txt \
../extended/medical/dna/slowing/.README.txt \
+ ../extended/medical/dna/splitting/.README.txt \
../extended/medical/dna/spower/.README.txt \
../extended/medical/dna/svalue/.README.txt \
../extended/medical/dna/wholeNuclearDNA/.README.txt \
@@ -892,6 +893,7 @@ INPUT = Doxymain.h \
../extended/parallel/MPI/examples/exMPI01/.README.txt \
../extended/parallel/MPI/examples/exMPI02/.README.txt \
../extended/parallel/MPI/examples/exMPI03/.README.txt \
+ ../extended/parallel/MPI/examples/exMPI04/.README.txt \
../extended/parallel/MPI/source \
../extended/parallel/TBB \
../extended/parallel/ThreadsafeScorers \
@@ -968,6 +970,7 @@ EXCLUDE = ../basic/B2/B2b/include/B2ActionInitialization.hh \
../basic/B2/B2b/src/B2RunAction.cc \
../basic/B2/B2b/src/B2TrackerHit.cc \
../basic/B2/B2b/src/B2TrackerSD.cc \
+ ../basic/B3/B3b/include/B3Analysis.hh \
../basic/B3/B3b/include/B3DetectorConstruction.hh \
../basic/B3/B3b/include/B3PhysicsList.hh \
../basic/B3/B3b/include/B3PrimaryGeneratorAction.hh \
@@ -1042,6 +1045,29 @@ EXCLUDE = ../basic/B2/B2b/include/B2ActionInitialization.hh \
../extended/parallel/TBB/B2b/src/B2RunAction.cc \
../extended/parallel/TBB/B2b/src/B2TrackerHit.cc \
../extended/parallel/TBB/B2b/src/B2TrackerSD.cc \
+ ../extended/parameterisations/gflash/gflasha \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashActionInitialization.hh \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashEventAction.hh \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashHit.hh \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashHitsCollection.hh \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashPrimaryGeneratorAction.hh \
+ ../extended/parameterisations/gflash/gflash2/include/ExGflashRunAction.hh \
+ ../extended/parameterisations/gflash/gflash2/src/ExGflashActionInitialization.cc \
+ ../extended/parameterisations/gflash/gflash2/src/ExGflashEventAction.cc \
+ ../extended/parameterisations/gflash/gflash2/src/ExGflashHit.cc \
+ ../extended/parameterisations/gflash/gflash2/src/ExGflashPrimaryGeneratorAction.cc \
+ ../extended/parameterisations/gflash/gflash2/src/ExGflashRunAction.cc \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashActionInitialization.hh \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashEventAction.hh \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashHit.hh \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashHitsCollection.hh \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashPrimaryGeneratorAction.hh \
+ ../extended/parameterisations/gflash/gflash3/include/ExGflashRunAction.hh \
+ ../extended/parameterisations/gflash/gflash3/src/ExGflashActionInitialization.cc \
+ ../extended/parameterisations/gflash/gflash3/src/ExGflashEventAction.cc \
+ ../extended/parameterisations/gflash/gflash3/src/ExGflashHit.cc \
+ ../extended/parameterisations/gflash/gflash3/src/ExGflashPrimaryGeneratorAction.cc \
+ ../extended/parameterisations/gflash/gflash3/src/ExGflashRunAction.cc \
../extended/visualization/userVisAction/include/B1ActionInitialization.hh \
../extended/visualization/userVisAction/include/B1DetectorConstruction.hh \
../extended/visualization/userVisAction/include/B1EventAction.hh \
diff --git a/examples/.doxygen/Doxymodules_analysis.h b/examples/.doxygen/Doxymodules_analysis.h
index 5109036ed9..90d89ec489 100644
--- a/examples/.doxygen/Doxymodules_analysis.h
+++ b/examples/.doxygen/Doxymodules_analysis.h
@@ -53,39 +53,4 @@
/** @} */
-/** @defgroup extended_analysis_B3aScoreWriter B3aScoreWriter
- * Analysis example B3aScoreWriter
- * @ingroup extended_analysis
- * @{
- */
-
- class B3DetectorConstruction {};
- class B3PhysicsList {};
- class B3PrimaryGeneratorAction {};
- class B3StackingAction {};
- class B3aActionInitialization {};
- class B3aEventAction {};
- class B3aRunAction {};
- class G4ScoreNtupleWriter {};
- class G4ScoreNtupleWriterMessenger {};
-
-/** @} */
-
-/** @defgroup extended_analysis_B4dScoreWriter B4dScoreWriter
- * Analysis example B4dScoreWriter
- * @ingroup extended_analysis
- * @{
- */
-
- class B4Analysis {};
- class B4PrimaryGeneratorAction {};
- class B4RunAction {};
- class B4dActionInitialization {};
- class B4dDetectorConstruction {};
- class B4dEventAction {};
- class G4ScoreNtupleWriter {};
- class G4ScoreNtupleWriterMessenger {};
-
-/** @} */
-
/** @} */
diff --git a/examples/.doxygen/Doxymodules_biasing.h b/examples/.doxygen/Doxymodules_biasing.h
index d60073850c..1d217590be 100644
--- a/examples/.doxygen/Doxymodules_biasing.h
+++ b/examples/.doxygen/Doxymodules_biasing.h
@@ -144,6 +144,20 @@
/** @} */
+/** @defgroup extended_biasing_GB07 GB07
+ * Biasing example GB07
+ * @ingroup extended_biasing
+ * @{
+ */
+
+ class GB07ActionInitialization {};
+ class GB07BOptrLeadingParticle {};
+ class GB07DetectorConstruction {};
+ class GB07PrimaryGeneratorAction {};
+ class GB07SD {};
+
+/** @} */
+
/** @defgroup extended_biasing_ReverseMC01 ReverseMC01
* Biasing example ReverseMC01
* @ingroup extended_biasing
diff --git a/examples/.doxygen/Doxymodules_hadronic.h b/examples/.doxygen/Doxymodules_hadronic.h
index f8510b7385..3645ccf609 100644
--- a/examples/.doxygen/Doxymodules_hadronic.h
+++ b/examples/.doxygen/Doxymodules_hadronic.h
@@ -65,7 +65,16 @@
/** @defgroup extended_hadronic_Hadr07 Hadr07
* The Hadr07 hadronic classes have their
- * standalone documentation
+ * standalone documentation
+ * @ingroup extended_hadronic
+ * @{
+ */
+
+/** @} */
+
+/** @defgroup extended_hadronic_Hadr08 Hadr08
+ * The Hadr08 hadronic classes have their
+ * standalone documentation
* @ingroup extended_hadronic
* @{
*/
diff --git a/examples/.doxygen/Doxymodules_medical.h b/examples/.doxygen/Doxymodules_medical.h
index 8b3f0dd186..b19d528a56 100644
--- a/examples/.doxygen/Doxymodules_medical.h
+++ b/examples/.doxygen/Doxymodules_medical.h
@@ -176,6 +176,15 @@
/** @} */
+/** @defgroup extended_medical_dna_dnadamage1 dnadamage1
+ * Medical dna dnadamage1 example has its
+ * standalone documentation
+ * @ingroup extended_medical_dna
+ * @{
+ */
+
+/** @} */
+
/** @defgroup extended_medical_dna_dnaphysics dnaphysics
* Medical dna dnaphysics example has its
* standalone documentation
@@ -212,6 +221,15 @@
/** @} */
+/** @defgroup extended_medical_dna_microprox microprox
+ * Medical dna microprox example has its
+ * standalone documentation
+ * @ingroup extended_medical_dna
+ * @{
+ */
+
+/** @} */
+
/** @defgroup extended_medical_dna_microyz microyz
* Medical dna microyz example has its
* standalone documentation
@@ -257,6 +275,15 @@
/** @} */
+/** @defgroup extended_medical_dna_splitting splitting
+ * Medical dna splitting example has its
+ * standalone documentation
+ * @ingroup extended_medical_dna
+ * @{
+ */
+
+/** @} */
+
/** @defgroup extended_medical_dna_spower spower
* Medical dna spower example has its
* standalone documentation
diff --git a/examples/.doxygen/Doxymodules_parallel.h b/examples/.doxygen/Doxymodules_parallel.h
index 5ce4094da0..d2e69c8b76 100644
--- a/examples/.doxygen/Doxymodules_parallel.h
+++ b/examples/.doxygen/Doxymodules_parallel.h
@@ -43,6 +43,15 @@
/** @} */
+/** @defgroup extended_parallel_MPI_exMPI04 exMPI04
+ * Parallel MPI exMPI04 example has its
+ * standalone documentation
+ * @ingroup extended_parallel_MPI
+ * @{
+ */
+
+/** @} */
+
/** @defgroup extended_parallel_MPI_libG4mpi libG4mpi
* Library libG4mpi
* @ingroup extended_parallel_MPI
diff --git a/examples/.doxygen/Doxymodules_parameterisations.h b/examples/.doxygen/Doxymodules_parameterisations.h
index 3f5943c9fd..91be472f54 100644
--- a/examples/.doxygen/Doxymodules_parameterisations.h
+++ b/examples/.doxygen/Doxymodules_parameterisations.h
@@ -52,19 +52,68 @@ class Par02TrackingAction {};
/** @} */
/** @defgroup extended_parameterisations_gflash gflash
- * parameterisations example gflash
+ * Extended examples parameterisations gflash classes
* @{
*/
+/** @defgroup extended_parameterisations_gflash_gflash1 gflash1
+ * parameterisations example gflash1
+ * @{
+ */
+
+ class ExGflash1DetectorConstruction {};
+ class ExGflash1SensitiveDetector {};
class ExGflashActionInitialization {};
- class ExGflashDetectorConstruction {};
class ExGflashEventAction {};
class ExGflashHit {};
class ExGflashHitsCollection {};
- class ExGflashPhysics {};
class ExGflashPrimaryGeneratorAction {};
class ExGflashRunAction {};
- class ExGflashSensitiveDetector {};
+
+/** @} */
+
+/** @defgroup extended_parameterisations_gflash_gflash2 gflash2
+ * parameterisations example gflash2
+ * @{
+ */
+
+ class ExGflash2DetectorConstruction {};
+ class ExGflash2ParallelWorld {};
+ class ExGflash2SensitiveDetector {};
+ class ExGflashActionInitialization {};
+ class ExGflashEventAction {};
+ class ExGflashHit {};
+ class ExGflashHitsCollection {};
+ class ExGflashPrimaryGeneratorAction {};
+ class ExGflashRunAction {};
+
+/** @} */
+
+/** @defgroup extended_parameterisations_gflash_gflash3 gflash3
+ * parameterisations example gflash3
+ * @{
+ */
+
+ class ExGflash3DetectorConstruction {};
+ class ExGflash3ParallelWorld {};
+ class ExGflash3SensitiveDetector {};
+ class ExGflashActionInitialization {};
+ class ExGflashEventAction {};
+ class ExGflashHit {};
+ class ExGflashHitsCollection {};
+ class ExGflashPrimaryGeneratorAction {};
+ class ExGflashRunAction {};
+
+/** @} */
+
+/** @defgroup extended_parameterisations_gflash_gflasha gflasha
+ * The gflasha classes have their
+ * standalone documentation
+ * @ingroup extended_parameterisations_gflash
+ * @{
+ */
+
+/** @} */
/** @} */
diff --git a/examples/.doxygen/History b/examples/.doxygen/History
index 2b22cb6d1d..c8cb26f55f 100644
--- a/examples/.doxygen/History
+++ b/examples/.doxygen/History
@@ -17,6 +17,18 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+28/11/19 I.Hrivnacova (doxygen-V10-05-03)
+- Updated for reorganization of gflash examples,
+ added new GB07 in modules
+
+26/11/19 I.Hrivnacova (doxygen-V10-05-02)
+- Added new examples (Hadr08, dnadamage1, microprox, splittimg, exMPI04)
+ and fixing documentation for 10.6
+
+10/07/19 I.Hrivnacova (doxygen-V10-05-01)
+- Removed analysis/B3aScoreWriter and analysis/B4dScoreWriter
+ extended examples
+
7/5/19 I.Hrivnacova (doxygen-V10-05-00)
- Fixes in documentation:
- Linking of geant4.tag in standalone documentation
diff --git a/examples/.doxygen/extra_stylesheet.css.mymods b/examples/.doxygen/extra_stylesheet.css.mymods
new file mode 100644
index 0000000000..365cdf8f6c
--- /dev/null
+++ b/examples/.doxygen/extra_stylesheet.css.mymods
@@ -0,0 +1,41 @@
+/* The standard CSS for doxygen 1.8.5 */
+/* Extension for Geant4 example documentation */
+
+/* header style */
+#g4header {
+ color: black;
+ background-color: #cfd6ed;
+ border: 1px solid #9ca3ba;
+/* border: 10px solid white; */
+ padding-top: .5em;
+ padding-right: 1em;
+ width: 100%;
+ margin-bottom: .5em;
+ -moz-border-radius: 15px;
+}
+
+#g4header img {
+ padding-left: 1em;
+ background: #cfd6ed;
+}
+
+#breadcrumb {
+ color: #003366;
+ background-color: #cfd6ed;
+ border: 0;
+ border-right: 1em solid white;
+ font-weight: bold;
+ text-align: left;
+ font-size: 90%;
+}
+
+/* overwrite default size of \section and \subsection titles: 150% */
+h1 {
+ font-size: 130%;
+}
+h2 {
+ font-size: 110%;
+}
+h3 {
+ font-size: 100%;
+}
diff --git a/examples/.doxygen/generate_standalone.sh b/examples/.doxygen/generate_standalone.sh
index 8e4c21e0d9..d76f457f57 100755
--- a/examples/.doxygen/generate_standalone.sh
+++ b/examples/.doxygen/generate_standalone.sh
@@ -47,12 +47,12 @@ generate() {
}
# process examples in second level directory in extended
-for DIR in analysis/shared analysis/AnaEx01 analysis/AnaEx02 analysis/AnaEx03 electromagnetic/TestEm0 electromagnetic/TestEm1 electromagnetic/TestEm2 electromagnetic/TestEm3 electromagnetic/TestEm4 electromagnetic/TestEm5 electromagnetic/TestEm6 electromagnetic/TestEm7 electromagnetic/TestEm8 electromagnetic/TestEm9 electromagnetic/TestEm10 electromagnetic/TestEm11 electromagnetic/TestEm12 electromagnetic/TestEm13 electromagnetic/TestEm14 electromagnetic/TestEm15 electromagnetic/TestEm16 electromagnetic/TestEm17 electromagnetic/TestEm18 eventgenerator/particleGun eventgenerator/exgps eventgenerator/userPrimaryGenerator exoticphysics/channeling exoticphysics/dmparticle exoticphysics/monopole geometry/transforms hadronic/Hadr00 hadronic/Hadr01 hadronic/Hadr02 hadronic/Hadr03 hadronic/Hadr04 hadronic/Hadr06 hadronic/Hadr07 hadronic/NeutronSource medical/electronScattering medical/electronScattering2 medical/fanoCavity medical/fanoCavity2 medical/GammaTherapy optical/OpNovice2 physicslists/extensibleFactory physicslists/factory physicslists/genericPL polarisation/Pol01 radioactivedecay/Activation radioactivedecay/rdecay01 radioactivedecay/rdecay02; do
+for DIR in analysis/shared analysis/AnaEx01 analysis/AnaEx02 analysis/AnaEx03 electromagnetic/TestEm0 electromagnetic/TestEm1 electromagnetic/TestEm2 electromagnetic/TestEm3 electromagnetic/TestEm4 electromagnetic/TestEm5 electromagnetic/TestEm6 electromagnetic/TestEm7 electromagnetic/TestEm8 electromagnetic/TestEm9 electromagnetic/TestEm10 electromagnetic/TestEm11 electromagnetic/TestEm12 electromagnetic/TestEm13 electromagnetic/TestEm14 electromagnetic/TestEm15 electromagnetic/TestEm16 electromagnetic/TestEm17 electromagnetic/TestEm18 eventgenerator/particleGun eventgenerator/exgps eventgenerator/userPrimaryGenerator exoticphysics/channeling exoticphysics/dmparticle exoticphysics/monopole geometry/transforms hadronic/Hadr00 hadronic/Hadr01 hadronic/Hadr02 hadronic/Hadr03 hadronic/Hadr04 hadronic/Hadr06 hadronic/Hadr07 hadronic/Hadr08 hadronic/NeutronSource medical/electronScattering medical/electronScattering2 medical/fanoCavity medical/fanoCavity2 medical/GammaTherapy optical/OpNovice2 physicslists/extensibleFactory physicslists/factory physicslists/genericPL polarisation/Pol01 radioactivedecay/Activation radioactivedecay/rdecay01 radioactivedecay/rdecay02; do
generate ${DIR} ${BACK_PATH2}
done
# process examples in third level directory in extended
-for DIR in eventgenerator/HepMC/MCTruth parallel/TopC/ParN02 parallel/TopC/ParN04 medical/dna/chem1 medical/dna/chem2 medical/dna/chem3 medical/dna/chem4 medical/dna/chem5 medical/dna/clustering medical/dna/dnaphysics medical/dna/icsd medical/dna/mfp medical/dna/microdosimetry medical/dna/microyz medical/dna/neuron medical/dna/pdb4dna medical/dna/range medical/dna/slowing medical/dna/spower medical/dna/svalue medical/dna/wholeNuclearDNA medical/dna/wvalue; do
+for DIR in eventgenerator/HepMC/MCTruth medical/dna/chem1 medical/dna/chem2 medical/dna/chem3 medical/dna/chem4 medical/dna/chem5 medical/dna/clustering medical/dna/dnadamage1 medical/dna/dnaphysics medical/dna/icsd medical/dna/mfp medical/dna/microdosimetry medical/dna/microprox medical/dna/microyz medical/dna/neuron medical/dna/pdb4dna medical/dna/range medical/dna/slowing medical/dna/splitting medical/dna/spower medical/dna/svalue medical/dna/wholeNuclearDNA medical/dna/wvalue parameterisations/gflash/gflasha parallel/TopC/ParN02 parallel/TopC/ParN04; do
generate ${DIR} ${BACK_PATH3}
done
diff --git a/examples/History b/examples/History
index f3cad0885b..69e672859f 100644
--- a/examples/History
+++ b/examples/History
@@ -16,6 +16,67 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
+6th December 2019 Gabriele Cosmo (examples-V10-06-00)
+- Updated reference outputs according to reference tag geant4-10-06-ref-00.
+- Includes tags: doxygen-V10-05-02, air_shower-V10-05-01, ccal-V10-05-01,
+ hadrontherapy-V10-05-02, nanobeam-V10-05-01, purmag-V10-05-00,
+ STCyclotron-V10-05-01, DMX-V10-05-03, exampleB1-V10-05-00,
+ exampleB2-V10-05-00, exampleB3-V10-05-02, exampleB4-V10-05-04.
+ exampleB5-V10-05-01, AnaEx03-V10-05-00, biasingGB07-V10-05-00,
+ B1Con-V10-05-00, ReverseMC01-V10-05-01, testem2-V10-05-01,
+ testem3-V10-05-00, testem7-V10-05-01, testem13-V10-05-01,
+ testem14-V10-05-01, testem15-V10-05-01, testem16-V10-05-02,
+ testem17-V10-05-02, testem18-V10-05-00, monopole-V10-05-02,
+ ExUCN-V10-05-00, fieldex01-V10-05-00, fieldex04-V10-05-00,
+ fieldex06-V10-05-01, exHadronic-V10-05-01, exHadr08-V10-05-01,
+ DICOM-V10-05-03, DICOM2-V10-05-04, exdna-V10-05-03,
+ dnadamage1-V10-05-02, exicsd-V10-05-01, mfp-V10-05-00,
+ microprox-V10-05-01, neuron-V10-05-00, slowing-V10-05-00,
+ splitting-V10-05-00, spower-V10-05-00, svalue-V10-05-00,
+ electroscattering-V10-05-00, LXe-V10-05-05, ParN02-V10-05-00,
+ OpNovice2-V10-05-02, ThreadsafeScorers-V10-05-00, G01-V10-05-06,
+ exParameterisations-V10-05-01, exgflash-V10-05-02,
+ exgflasha-V10-05-01, expar02-V10-05-00, G02-V10-05-00,
+ G03-V10-05-00, G04-V10-05-00, exampleP01-V10-05-01,
+ exampleP02-V10-05-00, extFactory-V10-05-00, factory-V10-05-00,
+ human_phantom-V10-05-01, genericPL-V10-05-01,
+ rdecay01-V10-05-06.
+
+31st October 2019 Gabriele Cosmo (examples-V10-05-10)
+- Updated reference outputs according to reference tag geant4-10-05-ref-10.
+- Includes tags: eRosita-V10-05-02, hadrontherapy-V10-05-01, testem0-V10-05-02,
+ radioprotection-V10-05-01, exampleB3-V10-05-01, LXe-V10-05-03,
+ exampleB4-V10-05-02, testem1-V10-05-03, exHadronic-V10-05-01,
+ exHadr08-V10-05-00, OpNovice-V10-05-00, OpNovice2-V10-05-01,
+ WLS-V10-05-01, MPI-V10-05-02, rdecay01-V10-05-05.
+
+30th September 2019 Gabriele Cosmo (examples-V10-05-09)
+- Updated reference outputs according to reference tag geant4-10-05-ref-09.
+- Includes tags: brachy-V10-05-00, ChargeExchangeMC-V10-05-02, DMX-V10-05-02,
+ hadrontherapy-V10-05-01, microelectronics-V10-05-00,
+ gammaknife-V10-05-01,XRayFluo-V10-05-01, xraytel-V10-05-00,
+ exampleB5-V10-05-00, ReverseMC01-V10-05-00, testem0-V10-05-01,
+ testem1-V10-05-02, testem13-V10-05-00, testem14-V10-05-00,
+ testem17-V10-05-01, chem4-V10-05-03, chem5-V10-05-02,
+ svalue-V10-05-00, G01-V10-05-05, exhadr00-V10-05-01,
+ rdecay01-V10-05-04, exampleRE03-V10-05-00.
+
+31st August 2019 Gabriele Cosmo (examples-V10-05-08)
+- Updated reference outputs according to reference tag geant4-10-05-ref-08.
+- Includes tags: doiPET-V10-05-01, eRosita-V10-05-01, gammaknife-V10-05-00,
+ hadrontherapy-V10-05-01, microelectronics-V10-05-00,
+ DMX-V10-05-02, XRayFluo-V10-05-01, xraytel-V10-05-00,
+ testem0-V10-05-00, testem1-V10-05-01, exhadr00-V10-05-00,
+ exhadr01-V10-05-01, exhadr02-V10-05-03, G01-V10-05-04,
+ OpNovice2-V10-05-00.
+
+17th July 2019 Gabriele Cosmo (examples-V10-05-07)
+- Updated reference outputs according to reference tag geant4-10-05-ref-07.
+- Includes tags: doxygen-V10-05-01, exampleB3-V10-05-00, exampleB4-V10-05-01,
+ analysisExample-V10-05-00, exEventgenerator-V10-05-01,
+ monopole-V10-05-01, MPI-V10-05-01, exTopC-V10-05-00,
+ rdecay01-V10-05-01.
+
30th June 2019 Gabriele Cosmo (examples-V10-05-06)
- Updated reference outputs according to reference tag geant4-10-05-ref-06.
- Includes tags: B03-V10-05-01, testem1-V10-05-00, exhadr02-V10-05-01,
diff --git a/examples/advanced/CMakeLists.txt b/examples/advanced/CMakeLists.txt
index 981e13f4e8..49850fbb92 100644
--- a/examples/advanced/CMakeLists.txt
+++ b/examples/advanced/CMakeLists.txt
@@ -46,3 +46,5 @@ add_subdirectory(microelectronics)
add_subdirectory(purging_magnet)
add_subdirectory(underground_physics)
add_subdirectory(xray_fluorescence)
+add_subdirectory(STCyclotron)
+
diff --git a/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.cc b/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.cc
index cc3fe161d4..a3ab613f9f 100644
--- a/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.cc
+++ b/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.cc
@@ -51,7 +51,6 @@
#endif
#include
#include
-#ifdef G4UI_USE
#include
#include
#ifdef G4UI_USE_TCSH
@@ -60,10 +59,7 @@
#ifdef G4UI_USE_QT
#include
#endif
-#endif
-#ifdef G4VIS_USE
#include
-#endif
#include "CexmcRunManager.hh"
#include "CexmcHistoManager.hh"
#include "CexmcSetup.hh"
@@ -295,9 +291,9 @@ G4bool parseArgs( int argc, char ** argv, CexmcCmdLineData & cmdLineData )
int main( int argc, char ** argv )
{
-#ifdef G4UI_USE
+
G4UIsession * session( NULL );
-#endif
+
CexmcCmdLineData cmdLineData;
#ifdef CEXMC_USE_PERSISTENCY
@@ -339,9 +335,9 @@ int main( int argc, char ** argv )
CexmcRunManager * runManager( NULL );
CexmcMessenger::Instance();
-#ifdef G4VIS_USE
+
G4VisManager * visManager( NULL );
-#endif
+
#ifdef CEXMC_USE_ROOT
CexmcHistoManager::Instance();
#endif
@@ -423,13 +419,13 @@ int main( int argc, char ** argv )
CexmcHistoManager::Instance()->Initialize();
#endif
-#ifdef G4VIS_USE
+
if ( cmdLineData.isInteractive )
{
visManager = new G4VisExecutive( CexmcVisManagerVerboseLevel );
visManager->Initialize();
}
-#endif
+
#ifdef CEXMC_USE_PERSISTENCY
if ( runManager->ProjectIsRead() )
@@ -446,7 +442,7 @@ int main( int argc, char ** argv )
if ( cmdLineData.isInteractive )
productionModel->PrintInitialData();
-#ifdef G4UI_USE
+
if ( cmdLineData.isInteractive )
{
if ( cmdLineData.startQtSession )
@@ -474,7 +470,6 @@ int main( int argc, char ** argv )
if ( session )
session->SessionStart();
}
-#endif
#ifdef CEXMC_USE_PERSISTENCY
if ( runManager->ProjectIsSaved() )
@@ -507,14 +502,14 @@ int main( int argc, char ** argv )
#ifdef CEXMC_USE_ROOT
CexmcHistoManager::Destroy();
#endif
-#ifdef G4VIS_USE
+
delete visManager;
-#endif
+
CexmcMessenger::Destroy();
delete runManager;
-#ifdef G4UI_USE
+
delete session;
-#endif
+
return 0;
}
diff --git a/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.out b/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.out
index 844059b651..8ebb19d417 100644
--- a/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.out
+++ b/examples/advanced/ChargeExchangeMC/ChargeExchangeMC.out
@@ -1,6 +1,10 @@
+ ############################################
+ !!! WARNING - FPE detection is activated !!!
+ ############################################
+
**************************************************************
- Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
+ Geant4 version Name: geant4-10-06-ref-00 (6-December-2019)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,7 +12,7 @@
WWW : http://geant4.org/
**************************************************************
-<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
+<<< Geant4 Physics List simulation engine: FTFP_BERT
--- Cexmc --- Production model 'ChargeExchange' instantiated
G4GDML: Reading 'lht.gdml'...
@@ -40,10 +44,10 @@ Stripping off GDML names of materials, solids and volumes ...
--- Cexmc --- TP Scorer of detector role 'VetoCounter' in volume 'vVetoCounter'
FTFP_BERT : new threshold between BERT and FTFP is over the interval
- for pions : 3 to 12 GeV
- for kaons : 3 to 12 GeV
- for proton : 3 to 12 GeV
- for neutron : 3 to 12 GeV
+ for pions : 3 to 6 GeV
+ for kaons : 3 to 6 GeV
+ for proton : 3 to 6 GeV
+ for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
/run/verbose 1
@@ -128,8 +132,7 @@ compt: for gamma SubType=13 BuildTable=1
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
- BetheHeitler : Emin= 0 eV Emax= 80 GeV ModifiedTsai
- BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
+ BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 7 bins/decade, spline: 0
@@ -492,7 +495,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
@@ -505,8 +508,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for GenericIon
Process: ionInelastic
- Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
- Model: FTFP: 2 GeV/n ---> 100 TeV/n
+ Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
+ Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -517,8 +520,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: He3Inelastic
- Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
- Model: FTFP: 2 GeV/n ---> 100 TeV/n
+ Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
+ Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -529,8 +532,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: alphaInelastic
- Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
- Model: FTFP: 2 GeV/n ---> 100 TeV/n
+ Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
+ Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -579,8 +582,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
- Model: hElasticLHEP: 0 eV ---> 100 TeV
- Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
+ Model: hElasticLHEP: 0 eV ---> 100.1 MeV
+ Model: AntiAElastic: 100 MeV ---> 100 TeV
+ Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
@@ -624,14 +628,14 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: dInelastic
- Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
- Model: FTFP: 2 GeV/n ---> 100 TeV/n
+ Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
+ Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e+
- Process: positronNuclear
+ Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
@@ -646,7 +650,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for gamma
Process: photonNuclear
- Model: BertiniCascade: 0 eV ---> 3.5 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
@@ -659,9 +663,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
- Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
@@ -672,9 +675,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
- Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -687,8 +689,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
- Model: FTFP: 2 GeV ---> 100 TeV
- Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
+ Model: FTFP: 3 GeV ---> 100 TeV
+ Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
@@ -710,30 +712,28 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for pi+
Process: hadElastic
- Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
- Model: hElasticGlauber: 1 GeV ---> 100 TeV
+ Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
- Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
- Model: hElasticGlauber: 1 GeV ---> 100 TeV
+ Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: Cexmc
- Model: CexmcChargeExchange: 0 eV ---> 25 GeV
+ Model: CexmcChargeExchange: 0 eV ---> 100 TeV
Cr_sctns: : 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -747,7 +747,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
- Model: BertiniCascade: 0 eV ---> 12 GeV
+ Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -758,8 +758,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: tInelastic
- Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
- Model: FTFP: 2 GeV/n ---> 100 TeV/n
+ Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
+ Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
================================================================
@@ -768,21 +768,24 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
-Pre-compound low energy (MeV) 0.1
+Pre-compound excitation low energy (MeV) 0.1
+Pre-compound excitation high energy (MeV) 30
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
-Min energy per nucleon for multifragmentation (MeV) 1e+05
+Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
Level density (1/MeV) 0.075
-Model of level density flag 1
+Use simple level density model 1
+Use discrete excitation energy of the residual 0
Time limit for long lived isomeres (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
+Upload data before 1st event for Z < 9
=======================================================================
========= Table of registered couples ==============================
@@ -860,608 +863,440 @@ Index : 9 used in the geometry : Yes
====================================================================
### Run 0 starts.
-Event 2459
- --- Track Points
- monitor : pi- [1,bp] 729.7 MeV : -1.95 0.4916 -0.125 cm [-0.003381, 0.006845, 1]
- target : pi- [1,bp] 728.9 MeV : 1.325 4.821 0.7024 cm [-0.6461, -0.7632, 0.008072]
- : eta [7,op] 191.5 MeV : -4.38 -1.929 0.7771 cm [-0.2376, -0.947, -0.2162]
- : neutron [8,np] 565.6 MeV : -4.38 -1.929 0.7771 cm [-0.7467, -0.6596, 0.08616]
- : gamma [10,opdp] 332.6 MeV : -4.38 -1.929 0.7771 cm [0.5521, -0.8277, -0.1004]
- : gamma [9,opdp] 247.8 MeV : -4.38 -1.929 0.7771 cm [-0.9248, 0.3792, -0.03234]
- vc (l) : gamma [10,opdp] 332.6 MeV : 4.227 -5.231 -0.25 cm [0.1506, -0.1004, 0.9835]
- vc (r) : gamma [9,opdp] 247.8 MeV : -4.046 -1.018 -0.25 cm [-0.1269, -0.03234, 0.9914]
- cal (l) : gamma [10,opdp] 332.6 MeV : 4.419 -5.358 -15 cm [0.1506, -0.1004, 0.9835]
- cal (r) : gamma [9,opdp] 247.8 MeV : -4.206 -1.058 -15 cm [-0.1269, -0.03234, 0.9914]
- ---
- angle between the eta decay products : 145.203 deg
- --- Triggered angular ranges:
- 9 [-0.6000, -0.8000)
- --- Production model data:
- Incident particle (LAB) : pi- -2.0006 7.3320 725.4316 MeV -- 738.7750 MeV
- (SCM) : pi- -1.2414 4.5499 450.1634 MeV -- 471.3270 MeV
- Nucleus particle (LAB) : proton -0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 1.2414 -4.5499 -450.1634 MeV -- 1.0407 GeV
- Output particle (LAB) : eta 81.7033 -41.4028 168.1563 MeV -- 580.3611 MeV
- (SCM) : eta 82.4208 -44.0323 -92.0069 MeV -- 563.3383 MeV
- Nucleus output particle (LAB) : neutron -83.7039 48.7348 557.2752 MeV -- 1.0967 GeV
- (SCM) : neutron -82.4208 44.0323 92.0069 MeV -- 948.6729 MeV
+Event 549
--- Reconstructed data:
-- entry points:
- left: 5.65638 -4.82445 -15 cm
- right: -5.19249 -1.93644 -15 cm
+ left: 11.6719 -2.73364 -15 cm
+ right: 9.66731 0.390458 -15 cm
target: 0 0 0 fm
- -- the angle: 139.848 deg
- -- mass of the output particle: 510.179 MeV
- -- mass of the nucleus output particle: 993.689 MeV
+ -- the angle: 131.825 deg
+ -- mass of the output particle: 461.764 MeV
+ -- mass of the nucleus output particle: 1.05053 GeV
-- production model data:
Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
(SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
(SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 54.6329 -31.9603 184.7774 MeV -- 546.2892 MeV
- (SCM) : eta 54.6329 -31.9603 -58.1533 MeV -- 517.3693 MeV
- Nucleus output particle (LAB) : neutron -54.6329 31.9603 545.2226 MeV -- 1.1352 GeV
- (SCM) : neutron -54.6329 31.9603 58.1533 MeV -- 997.3994 MeV
+ Output particle (LAB) : eta 34.2594 -9.6286 203.3526 MeV -- 505.8112 MeV
+ (SCM) : eta 34.2594 -9.6286 -18.0264 MeV -- 463.4843 MeV
+ Nucleus output particle (LAB) : neutron -34.2594 9.6286 526.6474 MeV -- 1.1757 GeV
+ (SCM) : neutron -34.2594 9.6286 18.0264 MeV -- 1.0513 GeV
-- triggered angular ranges:
- 9 [-0.6000, -0.8000)
+ 8 [-0.4000, -0.6000)
--- Energy Deposit
- monitor : 741.441 keV
+ monitor : 366.353 keV
vc (l) : 0 eV
vc (r) : 0 eV
- cal (l) : 302.226 MeV
- 0 0 0.9046 0 0 0
- 0 0.7596 1.534 0 0 0
- 0 108.5 87.93 2.081 0 0
- 1.881 42.27 55.17 1.168 0 0
- cal (r) : 244.063 MeV
- 0 0.7504 0.6914 0 0 0
- 0 0 0 2.567 5.03 0.5638
- 0 0.55 1.68 94.98 132.6 2.366
- 0 0 0.7211 1.567 0 0
-Event 5475
+ cal (l) : 252.008 MeV
+ 0 0 0 0 0 0
+ 4.748 3.488 0 0 0 0
+ 122.8 116.5 1.296 0 0 0
+ 2.212 0.7962 0.1189 0 0 0
+ cal (r) : 253.803 MeV
+ 0.275 2.406 0 0 0 0
+ 0.5053 182.2 0.4087 0 0 0
+ 8.63 57.51 0.09555 0 0 0
+ 0.296 1.274 0.199 0 0 0
+Event 2002
+ --- Reconstructed data:
+ -- entry points:
+ left: -0.864765 -6.56705 -15 cm
+ right: 11.2133 3.94998 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 118.797 deg
+ -- mass of the output particle: 517.598 MeV
+ -- mass of the nucleus output particle: 956.854 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta -151.2998 3.9944 337.9772 MeV -- 636.4304 MeV
+ (SCM) : eta -151.2998 3.9944 68.4677 MeV -- 543.6017 MeV
+ Nucleus output particle (LAB) : neutron 151.2998 -3.9944 392.0228 MeV -- 1.0451 GeV
+ (SCM) : neutron 151.2998 -3.9944 -68.4677 MeV -- 971.1669 MeV
+ -- triggered angular ranges:
+ 3 [ 0.6000, 0.4000)
+ --- Energy Deposit
+ monitor : 382.096 keV
+ vc (l) : 0 eV
+ vc (r) : 0 eV
+ cal (l) : 214.023 MeV
+ 0 0 0 0 0 0
+ 0 0 0 0.3197 0 0
+ 0 0.1589 2.535 45.38 4.822 0.4268
+ 0.5182 0.3806 78.71 80.77 0 0
+ cal (r) : 422.407 MeV
+ 17.56 36.6 0.9354 0 0 0
+ 115.7 246.9 0.471 0 0 0
+ 1.361 1.935 0 0 0 0
+ 1.012 0 0 0 0 0
+Event 4133
--- Track Points
- monitor : pi- [1,bp] 729.3 MeV : -1.619 -1.826 -0.125 cm [-0.002294, -0.0018, 1]
- target : pi- [1,bp] 728.5 MeV : 1.761 4.68 -1.872 cm [-0.6439, -0.7651, -0.001945]
- : eta [3,op] 326.5 MeV : 0.7804 3.515 -1.875 cm [-0.2972, -0.9429, 0.1506]
- : neutron [4,np] 450.4 MeV : 0.7804 3.515 -1.875 cm [-0.825, -0.5541, -0.1114]
- : gamma [6,opdp] 413.2 MeV : 0.7804 3.515 -1.875 cm [0.2649, -0.9585, 0.1055]
- : gamma [5,opdp] 224.6 MeV : 0.7804 3.515 -1.875 cm [-0.9193, 0.3928, 0.0248]
- vc (l) : gamma [6,opdp] 413.2 MeV : -8.175 4.756 -0.25 cm [-0.165, 0.1055, 0.9806]
- vc (r) : gamma [5,opdp] 224.6 MeV : -11.97 -0.4064 -0.25 cm [-0.1415, 0.0248, 0.9896]
- cal (l) : gamma [6,opdp] 413.2 MeV : -8.385 4.89 -15 cm [-0.165, 0.1055, 0.9806]
- cal (r) : gamma [5,opdp] 224.6 MeV : -12.15 -0.3751 -15 cm [-0.1415, 0.0248, 0.9896]
+ monitor : pi- [1,bp] 736.1 MeV : 1.157 -0.2862 -0.125 cm [-0.002204, -0.01123, 0.9999]
+ target : pi- [1,bp] 735.4 MeV : 3.981 3.026 -0.6172 cm [-0.6439, -0.765, -0.0116]
+ : eta [2,op] 320.8 MeV : 3.065 1.938 -0.6337 cm [-0.9155, -0.3952, 0.07493]
+ : neutron [3,np] 472.2 MeV : 3.065 1.938 -0.6337 cm [-0.3805, -0.9222, -0.06956]
+ : gamma [16,opdp] 256.3 MeV : 3.065 1.938 -0.6337 cm [0.2494, -0.9683, -0.01087]
+ : gamma [15,opdp] 378.6 MeV : 3.065 1.938 -0.6337 cm [-0.9446, 0.3206, 0.07085]
+ vc (l) : gamma [16,opdp] 256.3 MeV : -7.437 -1.288 -0.25 cm [-0.1832, -0.01087, 0.983]
+ vc (r) : gamma [15,opdp] 378.6 MeV : -6.676 3.723 -0.25 cm [-0.06523, 0.07085, 0.9954]
+ cal (l) : gamma [16,opdp] 256.3 MeV : -7.67 -1.302 -15 cm [-0.1832, -0.01087, 0.983]
+ cal (r) : gamma [15,opdp] 378.6 MeV : -6.758 3.812 -15 cm [-0.06523, 0.07085, 0.9954]
---
- angle between the eta decay products : 128.123 deg
+ angle between the eta decay products : 123.15 deg
--- Triggered angular ranges:
5 [ 0.2000, 0.0000)
--- Production model data:
- Incident particle (LAB) : pi- -0.7141 -0.9959 728.1632 MeV -- 741.4195 MeV
- (SCM) : pi- -0.4427 -0.6174 451.3689 MeV -- 472.4556 MeV
+ Incident particle (LAB) : pi- -1.1805 -8.8099 734.9557 MeV -- 748.1435 MeV
+ (SCM) : pi- -0.7297 -5.4460 454.3301 MeV -- 475.3165 MeV
Nucleus particle (LAB) : proton 0.0000 -0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.4427 0.6174 -451.3689 MeV -- 1.0412 GeV
- Output particle (LAB) : eta 123.5209 49.1773 298.1596 MeV -- 637.7521 MeV
- (SCM) : eta 123.7897 49.5522 24.0459 MeV -- 564.3672 MeV
- Nucleus output particle (LAB) : neutron -124.2350 -50.1732 430.0036 MeV -- 1.0419 GeV
- (SCM) : neutron -123.7897 -49.5522 -24.0459 MeV -- 949.2843 MeV
+ (SCM) : proton 0.7297 5.4460 -454.3301 MeV -- 1.0425 GeV
+ Output particle (LAB) : eta -143.4712 24.0360 285.8868 MeV -- 634.8589 MeV
+ (SCM) : eta -143.0285 27.3404 10.2213 MeV -- 566.9761 MeV
+ Nucleus output particle (LAB) : neutron 142.2908 -32.8459 449.0689 MeV -- 1.0516 GeV
+ (SCM) : neutron 143.0285 -27.3404 -10.2213 MeV -- 950.8376 MeV
--- Reconstructed data:
-- entry points:
- left: -9.51425 5.19641 -15 cm
- right: -12.1295 0.464818 -15 cm
+ left: -9.71641 -2.44183 -15 cm
+ right: -8.15908 3.14359 -15 cm
target: 0 0 0 fm
- -- the angle: 132.177 deg
- -- mass of the output particle: 533.95 MeV
- -- mass of the nucleus output particle: 954.978 MeV
+ -- the angle: 128.6 deg
+ -- mass of the output particle: 587.356 MeV
+ -- mass of the nucleus output particle: 900.423 MeV
-- production model data:
Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
(SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
(SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 128.5842 36.0419 274.7274 MeV -- 615.1506 MeV
- (SCM) : eta 128.5842 36.0419 8.5114 MeV -- 550.4612 MeV
- Nucleus output particle (LAB) : neutron -128.5842 -36.0419 455.2726 MeV -- 1.0663 GeV
- (SCM) : neutron -128.5842 -36.0419 -8.5114 MeV -- 964.3075 MeV
+ Output particle (LAB) : eta -137.5893 8.8034 269.1147 MeV -- 660.6197 MeV
+ (SCM) : eta -137.5893 8.8034 -19.6317 MeV -- 603.6398 MeV
+ Nucleus output particle (LAB) : neutron 137.5893 -8.8034 460.8853 MeV -- 1.0209 GeV
+ (SCM) : neutron 137.5893 -8.8034 19.6317 MeV -- 911.1288 MeV
+ -- triggered angular ranges:
+ 6 [ 0.0000, -0.2000)
+ --- Energy Deposit
+ monitor : 583.442 keV
+ vc (l) : 47.3284 keV
+ vc (r) : 0 eV
+ cal (l) : 276.635 MeV
+ 0 0 0 0 0 0.3863
+ 0 0 0 3.261 7.205 2.538
+ 0 0 0 1.78 241.5 12.85
+ 0 0 0 0.6819 2.658 3.742
+ cal (r) : 383.985 MeV
+ 0 0 0 4.409 24 7.835
+ 0 0 0.3761 6.192 330.8 0.6061
+ 0 0 0.3454 2.564 1.87 4.031
+ 0 0.524 0.1667 0 0 0.2673
+Event 4140
+ --- Reconstructed data:
+ -- entry points:
+ left: 12.0121 1.97501 -15 cm
+ right: 10.0401 3.10042 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 131.602 deg
+ -- mass of the output particle: 531.239 MeV
+ -- mass of the nucleus output particle: 962.455 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta -117.1408 27.0437 274.3508 MeV -- 609.8656 MeV
+ (SCM) : eta -117.1408 27.0437 10.6402 MeV -- 544.7760 MeV
+ Nucleus output particle (LAB) : neutron 117.1408 -27.0437 455.6492 MeV -- 1.0716 GeV
+ (SCM) : neutron 117.1408 -27.0437 -10.6402 MeV -- 969.9926 MeV
-- triggered angular ranges:
5 [ 0.2000, 0.0000)
--- Energy Deposit
- monitor : 689.108 keV
+ monitor : 477.464 keV
vc (l) : 0 eV
vc (r) : 0 eV
- cal (l) : 404.09 MeV
- 0 0.6434 0 2.542 102.5 32.21
- 0 0 0 5.694 240.2 16.36
- 0 0 0.5586 0 0 3.317
- 0 0 0 0 0 0
- cal (r) : 211.061 MeV
- 0 0 0 0 1.85 0
- 0 0 0 0.4363 47.29 61.97
- 0 0 0 0 14.1 85.05
- 0 0 0 0.364 0 0
-Event 7604
- --- Track Points
- monitor : pi- [1,bp] 722.8 MeV : 0.446 1.514 -0.125 cm [-0.01169, 0.005862, 0.9999]
- target : pi- [1,bp] 722.2 MeV : 3.377 3.687 1.708 cm [-0.649, -0.7608, 0.007017]
- : eta [6,op] 286.5 MeV : -2.17 -2.823 1.767 cm [-0.8799, -0.443, -0.1716]
- : neutron [7,np] 476.3 MeV : -2.17 -2.823 1.767 cm [-0.4482, -0.8865, 0.1154]
- : gamma [9,opdp] 259 MeV : -2.17 -2.823 1.767 cm [0.3319, -0.9413, -0.06069]
- : gamma [8,opdp] 359.3 MeV : -2.17 -2.823 1.767 cm [-0.941, 0.3252, -0.09313]
- vc (l) : gamma [9,opdp] 259 MeV : -8.735 -1.722 -0.25 cm [-0.09699, -0.06069, 0.9934]
- vc (r) : gamma [8,opdp] 359.3 MeV : -0.7912 -3.614 -0.25 cm [-0.0706, -0.09313, 0.9931]
- cal (l) : gamma [9,opdp] 259 MeV : -8.857 -1.799 -15 cm [-0.09699, -0.06069, 0.9934]
- cal (r) : gamma [8,opdp] 359.3 MeV : -0.88 -3.731 -15 cm [-0.0706, -0.09313, 0.9931]
- ---
- angle between the eta decay products : 127.798 deg
- --- Triggered angular ranges:
+ cal (l) : 214.479 MeV
+ 2.295 1.699 0 0 0 0
+ 64.39 125.1 0 0 0 0
+ 16.64 3.619 0 0 0 0
+ 0.7855 0 0 0 0 0
+ cal (r) : 395.387 MeV
+ 3.238 12.46 2.194 0.7606 0 0
+ 41.82 318.9 0.03087 0.5457 0 0
+ 6.808 8.042 0 0 0 0
+ 0.6255 0 0 0 0 0
+Event 5061
+ --- Reconstructed data:
+ -- entry points:
+ left: -5.59184 -5.46183 -15 cm
+ right: -6.76075 -3.69149 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 130.393 deg
+ -- mass of the output particle: 538.767 MeV
+ -- mass of the nucleus output particle: 945.497 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta -135.9089 -44.0518 237.3725 MeV -- 605.8283 MeV
+ (SCM) : eta -135.9089 -44.0518 -28.4624 MeV -- 558.1150 MeV
+ Nucleus output particle (LAB) : neutron 135.9089 44.0518 492.6275 MeV -- 1.0757 GeV
+ (SCM) : neutron 135.9089 44.0518 28.4624 MeV -- 956.6537 MeV
+ -- triggered angular ranges:
6 [ 0.0000, -0.2000)
+ --- Energy Deposit
+ monitor : 379.466 keV
+ vc (l) : 0 eV
+ vc (r) : 0 eV
+ cal (l) : 242.163 MeV
+ 0 0 0 0 0 0.5568
+ 0 0.7736 0 2.315 0 2.235
+ 0 0 0 35.97 14.4 0
+ 0 0 0 152.5 32.09 1.367
+ cal (r) : 363.665 MeV
+ 0 0 0 0 0 0
+ 0 0 0 0.5894 0.4906 0.3318
+ 0 0 2.521 52.73 288.5 0.1592
+ 0 0 0 6.556 11.79 0
+Event 7900
+ --- Reconstructed data:
+ -- entry points:
+ left: -11.8927 3.54701 -15 cm
+ right: 9.55663 3.72415 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 109.45 deg
+ -- mass of the output particle: 514.266 MeV
+ -- mass of the nucleus output particle: 983.083 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta 25.8960 37.5134 363.1283 MeV -- 631.1971 MeV
+ (SCM) : eta 25.8960 37.5134 98.9091 MeV -- 525.6716 MeV
+ Nucleus output particle (LAB) : neutron -25.8960 -37.5134 366.8717 MeV -- 1.0503 GeV
+ (SCM) : neutron -25.8960 -37.5134 -98.9091 MeV -- 989.0971 MeV
+ -- triggered angular ranges:
+ 1 [ 1.0000, 0.8000)
+ --- Energy Deposit
+ monitor : 403.692 keV
+ vc (l) : 0 eV
+ vc (r) : 0 eV
+ cal (l) : 335.62 MeV
+ 0 0 0.4066 0 4.661 18.23
+ 0 0 0.2078 1.144 99.37 204.2
+ 0 0 0 0 1.955 5.444
+ 0 0 0 0 0 0
+ cal (r) : 295.577 MeV
+ 2.459 39.89 0.5853 0 0 0
+ 2.091 242.6 2.139 0 0 0
+ 3.443 2.003 0 0 0 0
+ 0.06417 0.305 0 0 0 0
+Event 10733
+ --- Reconstructed data:
+ -- entry points:
+ left: 3.43905 -3.22935 -15 cm
+ right: 5.68118 3.1405 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 127.95 deg
+ -- mass of the output particle: 466.316 MeV
+ -- mass of the nucleus output particle: 1.01905 GeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta 137.8253 -7.5255 225.3841 MeV -- 536.0051 MeV
+ (SCM) : eta 137.8253 -7.5255 -8.1211 MeV -- 486.3840 MeV
+ Nucleus output particle (LAB) : neutron -137.8253 7.5255 504.6159 MeV -- 1.1455 GeV
+ (SCM) : neutron -137.8253 7.5255 8.1211 MeV -- 1.0284 GeV
+ -- triggered angular ranges:
+ 6 [ 0.0000, -0.2000)
+ --- Energy Deposit
+ monitor : 527.646 keV
+ vc (l) : 0 eV
+ vc (r) : 0 eV
+ cal (l) : 335.098 MeV
+ 0 0.09963 0 0 0 0
+ 0 15.23 6.307 0.987 0 0.4142
+ 3.963 3.311 248.1 10.78 1.947 0
+ 0 12.16 29.91 1.868 0 0
+ cal (r) : 200.907 MeV
+ 0 3.402 1.721 0 0 0
+ 4.364 41.11 147.6 0.5654 0 0
+ 0.5333 0 0.5615 1.087 0 0
+ 0 0 0 0 0 0
+Event 12276
+ --- Track Points
+ monitor : pi- [1,bp] 730.7 MeV : -1.361 0.1986 -0.125 cm [0.0097, -0.01364, 0.9999]
+ target : pi- [1,bp] 730 MeV : 2.276 4.452 -0.1846 cm [-0.6368, -0.7709, -0.01386]
+ : eta [4,op] 335.4 MeV : -2.774 -1.661 -0.2945 cm [-0.3263, -0.9286, 0.1764]
+ : neutron [5,np] 439.8 MeV : -2.774 -1.661 -0.2945 cm [-0.8091, -0.5654, -0.1603]
+ : gamma [7,opdp] 383.5 MeV : -2.774 -1.661 -0.2945 cm [0.3773, -0.9219, 0.08797]
+ : gamma [6,opdp] 258.9 MeV : -2.774 -1.661 -0.2945 cm [-0.9818, 0.1627, 0.09827]
+ vc (l) : gamma [7,opdp] 383.5 MeV : -6.016 4.871 -0.25 cm [-0.04769, 0.08797, 0.995]
+ vc (r) : gamma [6,opdp] 258.9 MeV : 7.852 5.311 -0.25 cm [0.09693, 0.09827, 0.9904]
+ cal (l) : gamma [7,opdp] 383.5 MeV : -6.076 4.981 -15 cm [-0.04769, 0.08797, 0.995]
+ cal (r) : gamma [6,opdp] 258.9 MeV : 7.974 5.435 -15 cm [0.09693, 0.09827, 0.9904]
+ ---
+ angle between the eta decay products : 120.782 deg
+ --- Triggered angular ranges:
+ 4 [ 0.4000, 0.2000)
--- Production model data:
- Incident particle (LAB) : pi- -3.6761 5.7931 719.9551 MeV -- 733.3909 MeV
- (SCM) : pi- -2.2863 3.6028 447.7555 MeV -- 469.0235 MeV
+ Incident particle (LAB) : pi- 3.6191 -11.3208 728.1401 MeV -- 741.4911 MeV
+ (SCM) : pi- 2.2433 -7.0173 451.3413 MeV -- 472.4861 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton -2.2433 7.0173 -451.3413 MeV -- 1.0412 GeV
+ Output particle (LAB) : eta 116.3541 59.1753 308.9270 MeV -- 642.3618 MeV
+ (SCM) : eta 114.9864 63.4532 33.7746 MeV -- 564.3950 MeV
+ Nucleus output particle (LAB) : neutron -112.7349 -70.4961 419.2131 MeV -- 1.0374 GeV
+ (SCM) : neutron -114.9864 -63.4532 -33.7746 MeV -- 949.3008 MeV
+ --- Reconstructed data:
+ -- entry points:
+ left: -7.39869 6.11398 -15 cm
+ right: 9.11782 5.05555 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 113.586 deg
+ -- mass of the output particle: 487.185 MeV
+ -- mass of the nucleus output particle: 997.246 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta 111.3085 55.8699 320.3083 MeV -- 596.2026 MeV
+ (SCM) : eta 111.3085 55.8699 68.2407 MeV -- 507.4613 MeV
+ Nucleus output particle (LAB) : neutron -111.3085 -55.8699 409.6917 MeV -- 1.0853 GeV
+ (SCM) : neutron -111.3085 -55.8699 -68.2407 MeV -- 1.0073 GeV
+ -- triggered angular ranges:
+ 3 [ 0.6000, 0.4000)
+ --- Energy Deposit
+ monitor : 528.79 keV
+ vc (l) : 147.2 keV
+ vc (r) : 0 eV
+ cal (l) : 362.167 MeV
+ 0 0 0.516 34.92 192.1 0
+ 0 0 0.5746 4.391 128.4 0.1214
+ 0 0 0 0 0.443 0.7335
+ 0 0 0 0 0 0
+ cal (r) : 234.036 MeV
+ 2.882 128.7 1.108 0 0 0
+ 1.782 89.38 6.973 0 0 0
+ 0 1.666 0 0 0 0
+ 1.566 0 0 0 0 0
+Event 13522
+ --- Reconstructed data:
+ -- entry points:
+ left: -9.02543 5.62386 -15 cm
+ right: -3.93639 -3.29667 -15 cm
+ target: 0 0 0 fm
+ -- the angle: 125.321 deg
+ -- mass of the output particle: 538.541 MeV
+ -- mass of the nucleus output particle: 947.369 MeV
+ -- production model data:
+ Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
+ (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
+ Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
+ (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
+ Output particle (LAB) : eta -141.6408 2.3998 270.5499 MeV -- 619.1058 MeV
+ (SCM) : eta -141.6408 2.3998 1.9680 MeV -- 556.8650 MeV
+ Nucleus output particle (LAB) : neutron 141.6408 -2.3998 459.4501 MeV -- 1.0624 GeV
+ (SCM) : neutron 141.6408 -2.3998 -1.9680 MeV -- 957.9037 MeV
+ -- triggered angular ranges:
+ 5 [ 0.2000, 0.0000)
+ --- Energy Deposit
+ monitor : 364.597 keV
+ vc (l) : 0 eV
+ vc (r) : 0 eV
+ cal (l) : 246.825 MeV
+ 0 0 3.933 1.455 82.24 12.03
+ 0 0 0 1.251 133.7 11.3
+ 0 0 0 0.1587 0.7699 0
+ 0 0 0 0 0 0
+ cal (r) : 372.281 MeV
+ 0 1.206 0 0 0 0
+ 0 0 2.141 7.39 1.737 0.356
+ 0 0 2.657 279.1 23.23 10.77
+ 0 0.4894 4.184 36.08 2.966 0
+Event 14455
+ --- Track Points
+ monitor : pi- [1,bp] 727 MeV : -1.169 -0.455 -1.25 mm [-0.003548, 0.01198, 0.9999]
+ target : pi- [1,bp] 726.5 MeV : 3.047 3.964 0.2767 cm [-0.6454, -0.7637, 0.01184]
+ : eta [3,op] 405.2 MeV : 2.588 3.42 0.2852 cm [-0.7384, -0.6681, 0.0916]
+ : neutron [4,np] 332 MeV : 2.588 3.42 0.2852 cm [-0.5109, -0.8554, -0.08553]
+ : gamma [6,opdp] 378.1 MeV : 2.588 3.42 0.2852 cm [-0.9949, 0.05988, 0.08099]
+ : gamma [5,opdp] 303.4 MeV : 2.588 3.42 0.2852 cm [0.2535, -0.9671, 0.02144]
+ vc (l) : gamma [5,opdp] 303.4 MeV : -7.262 1.609 -0.25 cm [-0.1789, 0.02144, 0.9836]
+ vc (r) : gamma [6,opdp] 378.1 MeV : 8.369 5.291 -0.25 cm [0.1997, 0.08099, 0.9765]
+ cal (l) : gamma [5,opdp] 303.4 MeV : -7.489 1.636 -15 cm [-0.1789, 0.02144, 0.9836]
+ cal (r) : gamma [6,opdp] 378.1 MeV : 8.625 5.395 -15 cm [0.1997, 0.08099, 0.9765]
+ ---
+ angle between the eta decay products : 107.964 deg
+ --- Triggered angular ranges:
+ 1 [ 1.0000, 0.8000)
+ --- Production model data:
+ Incident particle (LAB) : pi- -2.5472 8.7229 726.3407 MeV -- 739.6845 MeV
+ (SCM) : pi- -1.5800 5.4109 450.5594 MeV -- 471.7154 MeV
Nucleus particle (LAB) : proton -0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 2.2863 -3.6028 -447.7555 MeV -- 1.0396 GeV
- Output particle (LAB) : eta -111.5562 -49.1775 259.3086 MeV -- 618.2693 MeV
- (SCM) : eta -110.1928 -51.3260 -7.7056 MeV -- 561.2388 MeV
- Nucleus output particle (LAB) : neutron 107.8800 54.9705 460.6465 MeV -- 1.0534 GeV
- (SCM) : neutron 110.1928 51.3260 7.7056 MeV -- 947.4277 MeV
+ (SCM) : proton 1.5800 -5.4109 -450.5594 MeV -- 1.0409 GeV
+ Output particle (LAB) : eta -55.1739 37.1211 399.7567 MeV -- 681.4546 MeV
+ (SCM) : eta -54.1798 33.7169 116.2927 MeV -- 563.6923 MeV
+ Nucleus output particle (LAB) : neutron 52.6267 -28.3983 326.5840 MeV -- 996.5020 MeV
+ (SCM) : neutron 54.1798 -33.7169 -116.2927 MeV -- 948.8832 MeV
--- Reconstructed data:
-- entry points:
- left: -10.0922 -2.5147 -15 cm
- right: -3.19722 -2.95542 -15 cm
+ left: -9.80264 1.38066 -15 cm
+ right: 9.82907 5.44099 -15 cm
target: 0 0 0 fm
- -- the angle: 123.285 deg
- -- mass of the output particle: 558.568 MeV
- -- mass of the nucleus output particle: 942.804 MeV
+ -- the angle: 111.198 deg
+ -- mass of the output particle: 468.233 MeV
+ -- mass of the nucleus output particle: 1.02967 GeV
-- production model data:
Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
(SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
(SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta -90.9354 -29.1127 293.5310 MeV -- 638.1817 MeV
- (SCM) : eta -90.9354 -29.1127 18.2855 MeV -- 566.9654 MeV
- Nucleus output particle (LAB) : neutron 90.9354 29.1127 436.4690 MeV -- 1.0433 GeV
- (SCM) : neutron 90.9354 29.1127 -18.2855 MeV -- 947.8033 MeV
+ Output particle (LAB) : eta -56.4287 34.2825 321.3710 MeV -- 571.7348 MeV
+ (SCM) : eta -56.4287 34.2825 81.2118 MeV -- 479.7882 MeV
+ Nucleus output particle (LAB) : neutron 56.4287 -34.2825 408.6290 MeV -- 1.1098 GeV
+ (SCM) : neutron 56.4287 -34.2825 -81.2118 MeV -- 1.0350 GeV
-- triggered angular ranges:
- 5 [ 0.2000, 0.0000)
+ 2 [ 0.8000, 0.6000)
--- Energy Deposit
- monitor : 430.327 keV
+ monitor : 362.932 keV
vc (l) : 0 eV
vc (r) : 0 eV
- cal (l) : 285.977 MeV
- 0 0 0 0 0.4785 0.4471
- 0 0 0 0.1683 7.521 5.51
- 0 0 0 1.931 246.3 12.58
- 0 0 0 1.365 3.843 5.856
- cal (r) : 352.205 MeV
- 0 0 0 0 0.1361 0.5703
- 0 0.3753 2.971 7.985 15.12 0
- 0 0 10.54 280.8 0.8851 0.157
- 0 2.292 1.972 17.6 10.33 0.4283
-Event 8337
- --- Track Points
- monitor : pi- [1,bp] 736.7 MeV : 9.338 2.638 -1.25 mm [-0.01558, -0.008169, 0.9998]
- target : pi- [1,bp] 736.2 MeV : 3.557 3.514 0.03398 cm [-0.6545, -0.756, -0.007771]
- : eta [4,op] 223.1 MeV : -1.206 -1.988 -0.02258 cm [-0.9509, -0.283, -0.1254]
- : neutron [5,np] 561 MeV : -1.206 -1.988 -0.02258 cm [-0.4788, -0.8771, 0.03891]
- : gamma [7,opdp] 236.7 MeV : -1.206 -1.988 -0.02258 cm [0.4621, -0.8866, 0.02011]
- : gamma [6,opdp] 354.9 MeV : -1.206 -1.988 -0.02258 cm [-0.9059, 0.4133, -0.09224]
- vc (l) : gamma [7,opdp] 236.7 MeV : 0.6064 1.134 -0.25 cm [0.04416, 0.02011, 0.9988]
- vc (r) : gamma [6,opdp] 354.9 MeV : -7.514 -5.48 -0.25 cm [-0.1647, -0.09224, 0.982]
- cal (l) : gamma [7,opdp] 236.7 MeV : 0.6616 1.16 -15 cm [0.04416, 0.02011, 0.9988]
- cal (r) : gamma [6,opdp] 354.9 MeV : -7.723 -5.597 -15 cm [-0.1647, -0.09224, 0.982]
- ---
- angle between the eta decay products : 141.899 deg
- --- Triggered angular ranges:
- 8 [-0.4000, -0.6000)
- --- Production model data:
- Incident particle (LAB) : pi- -11.3889 -6.1442 734.3366 MeV -- 747.5945 MeV
- (SCM) : pi- -7.0419 -3.7990 454.0489 MeV -- 475.0834 MeV
- Nucleus particle (LAB) : proton 0.0000 -0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 7.0419 3.7990 -454.0489 MeV -- 1.0424 GeV
- Output particle (LAB) : eta -121.9101 -27.9762 184.7235 MeV -- 591.5406 MeV
- (SCM) : eta -117.7919 -25.7545 -80.8071 MeV -- 566.7634 MeV
- Nucleus output particle (LAB) : neutron 110.5212 21.8320 549.6131 MeV -- 1.0943 GeV
- (SCM) : neutron 117.7919 25.7545 80.8071 MeV -- 950.7108 MeV
- --- Reconstructed data:
- -- entry points:
- left: 1.28372 2.01618 -15 cm
- right: -7.63142 -5.38332 -15 cm
- target: 0 0 0 fm
- -- the angle: 138.44 deg
- -- mass of the output particle: 547.443 MeV
- -- mass of the nucleus output particle: 954.694 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta -72.2950 -20.3148 204.8943 MeV -- 589.3337 MeV
- (SCM) : eta -72.2950 -20.3148 -56.5663 MeV -- 555.4568 MeV
- Nucleus output particle (LAB) : neutron 72.2950 20.3148 525.1057 MeV -- 1.0922 GeV
- (SCM) : neutron 72.2950 20.3148 56.5663 MeV -- 959.3118 MeV
- -- triggered angular ranges:
- 9 [-0.6000, -0.8000)
- --- Energy Deposit
- monitor : 437.842 keV
- vc (l) : 0 eV
- vc (r) : 0 eV
- cal (l) : 261.246 MeV
- 0 0 0 0.385 0 0
- 0 3.441 220.2 23.79 1.989 0
- 0 0.5005 4.544 6.411 0 0
+ cal (l) : 251.07 MeV
+ 0 0 0 0.1739 1.038 0
+ 0 0 0 7.094 200.3 22.69
+ 0 0 0 0.1088 8.331 7.733
+ 0 0 0 0 3.57 0
+ cal (r) : 320.665 MeV
+ 35.74 143.6 0.7158 0 0 0
+ 28.97 103.9 1.943 0 0 0
+ 0 0 5.24 0.5402 0 0
0 0 0 0 0 0
- cal (r) : 328.088 MeV
- 0 0 0 0 0 0
- 0 4.552 0 0 0.5577 0.4049
- 0 0 4.335 13.06 111.4 0.5784
- 0 0 0 1.999 165.2 25.97
-Event 8567
- --- Track Points
- monitor : pi- [1,bp] 732.4 MeV : 1.645 -6.581 -1.25 mm [0.009266, 0.0178, 0.9998]
- target : pi- [1,bp] 731.6 MeV : 3.569 3.502 -0.1376 cm [-0.6342, -0.773, 0.01834]
- : eta [9,op] 304.3 MeV : 1.763 1.301 -0.08535 cm [-0.9126, -0.4026, -0.07124]
- : neutron [10,np] 481.4 MeV : 1.763 1.301 -0.08535 cm [-0.385, -0.9199, 0.07427]
- : gamma [12,opdp] 240.5 MeV : 1.763 1.301 -0.08535 cm [0.3924, -0.919, 0.03766]
- : gamma [11,opdp] 386.2 MeV : 1.763 1.301 -0.08535 cm [-0.9636, 0.2551, -0.0796]
- vc (l) : gamma [12,opdp] 240.5 MeV : 0.2073 2.146 -0.25 cm [-0.03275, 0.03766, 0.9988]
- vc (r) : gamma [11,opdp] 386.2 MeV : -1.534 -4.886 -0.25 cm [0.002972, -0.0796, 0.9968]
- cal (l) : gamma [12,opdp] 240.5 MeV : 0.1663 2.193 -15 cm [-0.03275, 0.03766, 0.9988]
- cal (r) : gamma [11,opdp] 386.2 MeV : -1.53 -4.985 -15 cm [0.002972, -0.0796, 0.9968]
- ---
- angle between the eta decay products : 127.996 deg
- --- Triggered angular ranges:
- 6 [ 0.0000, -0.2000)
- --- Production model data:
- Incident particle (LAB) : pi- 8.6555 14.0696 730.7624 MeV -- 744.1548 MeV
- (SCM) : pi- 5.3593 8.7116 452.4735 MeV -- 473.6208 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -5.3593 -8.7116 -452.4735 MeV -- 1.0417 GeV
- Output particle (LAB) : eta -134.0063 -21.6804 272.3985 MeV -- 626.7228 MeV
- (SCM) : eta -137.2331 -26.9256 -0.0349 MeV -- 565.4296 MeV
- Nucleus output particle (LAB) : neutron 142.6618 35.7500 458.3638 MeV -- 1.0557 GeV
- (SCM) : neutron 137.2331 26.9256 0.0349 MeV -- 949.9163 MeV
- --- Reconstructed data:
- -- entry points:
- left: 0.302956 3.37809 -15 cm
- right: -3.17646 -5.29333 -15 cm
- target: 0 0 0 fm
- -- the angle: 133.415 deg
- -- mass of the output particle: 553.721 MeV
- -- mass of the nucleus output particle: 940.17 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta -116.0173 -18.4160 240.1917 MeV -- 614.8970 MeV
- (SCM) : eta -116.0173 -18.4160 -29.7034 MeV -- 566.8233 MeV
- Nucleus output particle (LAB) : neutron 116.0173 18.4160 489.8083 MeV -- 1.0666 GeV
- (SCM) : neutron 116.0173 18.4160 29.7034 MeV -- 947.9454 MeV
- -- triggered angular ranges:
- 7 [-0.2000, -0.4000)
- --- Energy Deposit
- monitor : 590.459 keV
- vc (l) : 80.0977 keV
- vc (r) : 5.33847 keV
- cal (l) : 246.902 MeV
- 0 2.228 4.463 2.447 0.6307 0
- 0 2.689 164.8 58.43 5.679 0
- 0 0 2.06 3.107 0.3673 0
- 0 0 0 0 0 0
- cal (r) : 367.995 MeV
- 0 0 0 0 0 0
- 0 0 0 0.46 0 0
- 0 0.6476 3.534 280.3 1.297 0.5484
- 0 0.912 1.827 67.56 9.846 1.073
-Event 9144
- --- Track Points
- monitor : pi- [1,bp] 734.4 MeV : -4.271 3.692 -1.25 mm [0.004495, 0.01408, 0.9999]
- target : pi- [1,bp] 733.6 MeV : 2.94 4.044 0.7745 cm [-0.6403, -0.768, 0.01394]
- : eta [4,op] 261.8 MeV : -1.448 -1.22 0.87 cm [-0.1547, -0.988, -0.002653]
- : neutron [5,np] 524.7 MeV : -1.448 -1.22 0.87 cm [-0.815, -0.5792, 0.01975]
- : gamma [7,opdp] 235.1 MeV : -1.448 -1.22 0.87 cm [-0.9603, 0.2714, -0.06389]
- : gamma [6,opdp] 372.2 MeV : -1.448 -1.22 0.87 cm [0.4977, -0.8665, 0.03849]
- vc (l) : gamma [6,opdp] 372.2 MeV : 3.139 3.122 -0.25 cm [0.08489, 0.03849, 0.9956]
- vc (r) : gamma [7,opdp] 235.1 MeV : 0.7642 -2.822 -0.25 cm [-0.01365, -0.06389, 0.9979]
- cal (l) : gamma [6,opdp] 372.2 MeV : 3.245 3.17 -15 cm [0.08489, 0.03849, 0.9956]
- cal (r) : gamma [7,opdp] 235.1 MeV : 0.7471 -2.902 -15 cm [-0.01365, -0.06389, 0.9979]
- ---
- angle between the eta decay products : 135.695 deg
- --- Triggered angular ranges:
- 7 [-0.2000, -0.4000)
- --- Production model data:
- Incident particle (LAB) : pi- 3.0229 9.6697 731.8059 MeV -- 745.0653 MeV
- (SCM) : pi- 1.8710 5.9850 452.9511 MeV -- 474.0083 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -1.8710 -5.9850 -452.9511 MeV -- 1.0419 GeV
- Output particle (LAB) : eta 135.2421 -0.6946 224.1801 MeV -- 607.2070 MeV
- (SCM) : eta 134.1337 -4.2399 -44.1334 MeV -- 565.7830 MeV
- Nucleus output particle (LAB) : neutron -132.2191 10.3642 507.6258 MeV -- 1.0761 GeV
- (SCM) : neutron -134.1337 4.2399 44.1334 MeV -- 950.1267 MeV
- --- Reconstructed data:
- -- entry points:
- left: 3.34157 2.42186 -15 cm
- right: 3.44389 -2.87437 -15 cm
- target: 0 0 0 fm
- -- the angle: 129.953 deg
- -- mass of the output particle: 511.528 MeV
- -- mass of the nucleus output particle: 981.808 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 119.8065 2.9984 237.4960 MeV -- 576.5653 MeV
- (SCM) : eta 119.8065 2.9984 -14.2229 MeV -- 525.5716 MeV
- Nucleus output particle (LAB) : neutron -119.8065 -2.9984 492.5040 MeV -- 1.1049 GeV
- (SCM) : neutron -119.8065 -2.9984 14.2229 MeV -- 989.1971 MeV
- -- triggered angular ranges:
- 6 [ 0.0000, -0.2000)
- --- Energy Deposit
- monitor : 704.979 keV
- vc (l) : 0 eV
- vc (r) : 205.304 keV
- cal (l) : 346.909 MeV
- 0 3.236 4.671 2.043 0 0
- 0.2759 43.21 268.6 11.59 0.4074 0
- 0 4.858 4.897 1.22 0 0.846
- 0 0.4488 0.5927 0 0 0
- cal (r) : 229.656 MeV
- 0 0.5069 0 0 0 0
- 4.327 1.317 2.447 0.6179 0 0
- 0 0.8308 180.5 27.23 0.956 0
- 1.682 3.365 4.968 0.8989 0 0
-Event 10836
- --- Track Points
- monitor : pi- [1,bp] 727.3 MeV : 1.752 0.8627 -0.125 cm [0.001518, -0.02274, 0.9997]
- target : pi- [1,bp] 726.7 MeV : 4.367 2.435 0.2168 cm [-0.6417, -0.7667, -0.02169]
- : eta [4,op] 233.9 MeV : 0.3176 -2.404 0.08153 cm [-0.1843, -0.9824, 0.03161]
- : neutron [5,np] 533.7 MeV : 0.3176 -2.404 0.08153 cm [-0.7915, -0.6097, -0.04341]
- : gamma [7,opdp] 353.6 MeV : 0.3176 -2.404 0.08153 cm [0.5341, -0.8454, 0.01053]
- : gamma [6,opdp] 242.1 MeV : 0.3176 -2.404 0.08153 cm [-0.9582, 0.2858, 0.01516]
- vc (l) : gamma [7,opdp] 353.6 MeV : 6.485 0.6807 -0.25 cm [0.1268, 0.01053, 0.9919]
- vc (r) : gamma [6,opdp] 242.1 MeV : 5.635 9.865 -2.5 mm [-0.02807, 0.01516, 0.9995]
- cal (l) : gamma [7,opdp] 353.6 MeV : 6.645 0.694 -15 cm [0.1268, 0.01053, 0.9919]
- cal (r) : gamma [6,opdp] 242.1 MeV : 0.5284 1.005 -15 cm [-0.02807, 0.01516, 0.9995]
- ---
- angle between the eta decay products : 138.867 deg
- --- Triggered angular ranges:
- 8 [-0.4000, -0.6000)
- --- Production model data:
- Incident particle (LAB) : pi- 0.2121 -15.7790 724.5109 MeV -- 738.0006 MeV
- (SCM) : pi- 0.1316 -9.7947 449.7351 MeV -- 470.9962 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -0.1316 9.7947 -449.7351 MeV -- 1.0405 GeV
- Output particle (LAB) : eta 114.6484 7.3928 203.6958 MeV -- 595.6876 MeV
- (SCM) : eta 114.5714 13.1283 -59.6543 MeV -- 563.0367 MeV
- Nucleus output particle (LAB) : neutron -114.4364 -23.1719 520.8151 MeV -- 1.0806 GeV
- (SCM) : neutron -114.5714 -13.1283 59.6543 MeV -- 948.4939 MeV
- --- Reconstructed data:
- -- entry points:
- left: 7.33198 1.67247 -15 cm
- right: 0.609877 2.91175 -15 cm
- target: 0 0 0 fm
- -- the angle: 136.18 deg
- -- mass of the output particle: 542.852 MeV
- -- mass of the nucleus output particle: 960.612 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 72.8068 21.7456 214.1275 MeV -- 588.4832 MeV
- (SCM) : eta 72.8068 21.7456 -45.9070 MeV -- 550.0631 MeV
- Nucleus output particle (LAB) : neutron -72.8068 -21.7456 515.8725 MeV -- 1.0930 GeV
- (SCM) : neutron -72.8068 -21.7456 45.9070 MeV -- 964.7056 MeV
- -- triggered angular ranges:
- 8 [-0.4000, -0.6000)
- --- Energy Deposit
- monitor : 460.054 keV
- vc (l) : 0 eV
- vc (r) : 0 eV
- cal (l) : 325.682 MeV
- 0 1.549 0.8996 0 0 0
- 2.517 255.3 48.88 0 0 0
- 2.058 8.588 3.667 1.333 0 0
- 0 0.3392 0.5228 0 0 0
- cal (r) : 262.801 MeV
- 0 0 4.047 0.5748 1.306 0
- 0 0.3165 200.5 45.99 0.2636 0
- 0 0 6.672 3.151 0 0
- 0 0 0 0 0 0
-Event 12894
- --- Track Points
- monitor : pi- [1,bp] 725.2 MeV : -1.274 -0.6867 -0.125 cm [0.009968, -0.003472, 0.9999]
- target : pi- [1,bp] 724.5 MeV : 2.394 4.39 -0.8007 cm [-0.6356, -0.772, -0.003244]
- : eta [3,op] 332.6 MeV : -1.151 0.08332 -0.8188 cm [-0.3215, -0.9407, -0.1077]
- : neutron [4,np] 431.4 MeV : -1.151 0.08332 -0.8188 cm [-0.8201, -0.5669, 0.07803]
- : gamma [6,opdp] 230.8 MeV : -1.151 0.08332 -0.8188 cm [-0.9319, 0.3563, -0.06756]
- : gamma [5,opdp] 410.1 MeV : -1.151 0.08332 -0.8188 cm [0.2637, -0.9633, -0.04933]
- vc (l) : gamma [5,opdp] 410.1 MeV : -11.14 -3.791 -0.25 cm [-0.1682, -0.04933, 0.9845]
- vc (r) : gamma [6,opdp] 230.8 MeV : -5.76 -4.741 -0.25 cm [-0.103, -0.06756, 0.9924]
- cal (l) : gamma [5,opdp] 410.1 MeV : -11.35 -3.854 -15 cm [-0.1682, -0.04933, 0.9845]
- cal (r) : gamma [6,opdp] 230.8 MeV : -5.89 -4.827 -15 cm [-0.103, -0.06756, 0.9924]
- ---
- angle between the eta decay products : 125.848 deg
- --- Triggered angular ranges:
- 4 [ 0.4000, 0.2000)
- --- Production model data:
- Incident particle (LAB) : pi- 5.3786 -2.1659 723.1126 MeV -- 736.4817 MeV
- (SCM) : pi- 3.3408 -1.3453 449.1473 MeV -- 470.3468 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -3.3408 1.3453 -449.1473 MeV -- 1.0402 GeV
- Output particle (LAB) : eta 119.1860 -35.8254 308.3994 MeV -- 640.8992 MeV
- (SCM) : eta 117.1541 -35.0072 35.2252 MeV -- 562.4448 MeV
- Nucleus output particle (LAB) : neutron -113.8074 33.6595 414.7132 MeV -- 1.0339 GeV
- (SCM) : neutron -117.1541 35.0072 -35.2252 MeV -- 948.1426 MeV
- --- Reconstructed data:
- -- entry points:
- left: -11.4346 -0.970449 -15 cm
- right: -6.58833 -3.74389 -15 cm
- target: 0 0 0 fm
- -- the angle: 125.324 deg
- -- mass of the output particle: 506.114 MeV
- -- mass of the nucleus output particle: 988.472 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 109.0858 -19.2192 291.4884 MeV -- 594.4627 MeV
- (SCM) : eta 109.0858 -19.2192 37.0871 MeV -- 519.4188 MeV
- Nucleus output particle (LAB) : neutron -109.0858 19.2192 438.5116 MeV -- 1.0870 GeV
- (SCM) : neutron -109.0858 19.2192 -37.0871 MeV -- 995.3498 MeV
- -- triggered angular ranges:
- 4 [ 0.4000, 0.2000)
- --- Energy Deposit
- monitor : 623.207 keV
- vc (l) : 0 eV
- vc (r) : 0 eV
- cal (l) : 382.045 MeV
- 0 0 0 3.705 13.46 1.569
- 0 0 0 1.921 3.443 3.006
- 0 0 0 0 67.58 280.1
- 0 0 0 1.771 2.533 2.997
- cal (r) : 212.417 MeV
- 0 0 0 0 0.2077 0
- 0 0.3033 0 0.4522 0.6301 0.297
- 0 0.5961 2.422 25.43 157.6 2.244
- 0 0 0 8.732 12.73 0.8118
-Event 13199
- --- Track Points
- monitor : pi- [1,bp] 726.1 MeV : -0.4149 -1.768 -0.125 cm [0.005891, -0.001633, 1]
- target : pi- [1,bp] 725.7 MeV : 3.042 3.968 -1.836 cm [-0.6368, -0.771, -0.001269]
- : eta [3,op] 345.2 MeV : 0.01502 0.3039 -1.842 cm [-0.3499, -0.9271, 0.1342]
- : neutron [4,np] 418.8 MeV : 0.01502 0.3039 -1.842 cm [-0.8137, -0.5697, -0.1152]
- : gamma [6,opdp] 372.7 MeV : 0.01502 0.3039 -1.842 cm [0.4094, -0.9098, 0.06774]
- : gamma [5,opdp] 274.8 MeV : 0.01502 0.3039 -1.842 cm [-0.9946, 0.06943, 0.0767]
- vc (l) : gamma [6,opdp] 372.7 MeV : -0.6542 2.165 -0.25 cm [-0.01346, 0.06774, 0.9976]
- vc (r) : gamma [5,opdp] 274.8 MeV : 11.12 2.757 -0.25 cm [0.1904, 0.0767, 0.9787]
- cal (l) : gamma [6,opdp] 372.7 MeV : -0.6711 2.25 -15 cm [-0.01346, 0.06774, 0.9976]
- cal (r) : gamma [5,opdp] 274.8 MeV : 11.36 2.855 -15 cm [0.1904, 0.0767, 0.9787]
- ---
- angle between the eta decay products : 117.722 deg
- --- Triggered angular ranges:
- 4 [ 0.4000, 0.2000)
- --- Production model data:
- Incident particle (LAB) : pi- 5.4906 -1.9370 724.5816 MeV -- 737.9242 MeV
- (SCM) : pi- 3.4084 -1.2024 449.7930 MeV -- 470.9635 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -3.4084 1.2024 -449.7930 MeV -- 1.0405 GeV
- Output particle (LAB) : eta 113.1832 46.3252 322.7711 MeV -- 647.5264 MeV
- (SCM) : eta 111.0981 47.0608 47.6085 MeV -- 563.0070 MeV
- Nucleus output particle (LAB) : neutron -107.6926 -48.2622 401.8104 MeV -- 1.0287 GeV
- (SCM) : neutron -111.0981 -47.0608 -47.6085 MeV -- 948.4762 MeV
- --- Reconstructed data:
- -- entry points:
- left: -0.777789 1.88141 -15 cm
- right: 12.9269 2.92145 -15 cm
- target: 0 0 0 fm
- -- the angle: 116.955 deg
- -- mass of the output particle: 553.484 MeV
- -- mass of the nucleus output particle: 931.359 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 133.4843 25.0740 332.3314 MeV -- 659.7235 MeV
- (SCM) : eta 133.4843 25.0740 50.9750 MeV -- 572.1795 MeV
- Nucleus output particle (LAB) : neutron -133.4843 -25.0740 397.6686 MeV -- 1.0218 GeV
- (SCM) : neutron -133.4843 -25.0740 -50.9750 MeV -- 942.5892 MeV
- -- triggered angular ranges:
- 4 [ 0.4000, 0.2000)
- --- Energy Deposit
- monitor : 344.861 keV
- vc (l) : 0 eV
- vc (r) : 0 eV
- cal (l) : 388.279 MeV
- 0 0 2.021 1.749 0 0
- 0 8.784 69.08 271.8 1.537 0.5166
- 0 1.582 14.34 6.29 10.62 0
- 0 0 0 0 0 0
- cal (r) : 271.444 MeV
- 2.027 0.3924 0 0 0 0
- 204.6 61.15 0 0 0 0
- 2.768 0.5392 0 0 0 0
- 0 0 0 0 0 0
-Event 14983
- --- Track Points
- monitor : pi- [1,bp] 738.8 MeV : -9.145 -2.942 -1.25 mm [0.02055, 0.01165, 0.9997]
- target : pi- [1,bp] 738.3 MeV : 2.963 4.027 0.04843 cm [-0.6269, -0.779, 0.01209]
- : eta [5,op] 273.7 MeV : -2.292 -2.502 0.1505 cm [-0.1398, -0.9799, 0.1425]
- : neutron [6,np] 522.2 MeV : -2.292 -2.502 0.1505 cm [-0.8079, -0.5863, -0.059]
- : gamma [8,opdp] 399.2 MeV : -2.292 -2.502 0.1505 cm [0.3751, -0.9231, 0.08504]
- : gamma [7,opdp] 213.2 MeV : -2.292 -2.502 0.1505 cm [-0.8819, 0.4709, 0.02364]
- vc (l) : gamma [8,opdp] 399.2 MeV : -6.032 5.06 -0.25 cm [-0.05017, 0.08504, 0.9951]
- vc (r) : gamma [7,opdp] 213.2 MeV : -10.3 1.539 -0.25 cm [-0.2266, 0.02364, 0.9737]
- cal (l) : gamma [8,opdp] 399.2 MeV : -6.095 5.167 -15 cm [-0.05017, 0.08504, 0.9951]
- cal (r) : gamma [7,opdp] 213.2 MeV : -10.59 1.569 -15 cm [-0.2266, 0.02364, 0.9737]
- ---
- angle between the eta decay products : 139.767 deg
- --- Triggered angular ranges:
- 7 [-0.2000, -0.4000)
- --- Production model data:
- Incident particle (LAB) : pi- 16.6888 8.1817 735.6861 MeV -- 749.0389 MeV
- (SCM) : pi- 10.3128 5.0559 454.6158 MeV -- 475.6966 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton -10.3128 -5.0559 -454.6158 MeV -- 1.0427 GeV
- Output particle (LAB) : eta 143.0638 38.9900 229.9961 MeV -- 612.4038 MeV
- (SCM) : eta 136.9222 35.9791 -40.7449 MeV -- 567.3227 MeV
- Nucleus output particle (LAB) : neutron -126.3750 -30.8083 505.6900 MeV -- 1.0749 GeV
- (SCM) : neutron -136.9222 -35.9791 40.7449 MeV -- 951.0444 MeV
- --- Reconstructed data:
- -- entry points:
- left: -3.83527 4.87503 -15 cm
- right: -12.1451 1.58731 -15 cm
- target: 0 0 0 fm
- -- the angle: 137.381 deg
- -- mass of the output particle: 490.008 MeV
- -- mass of the nucleus output particle: 978.399 MeV
- -- production model data:
- Incident particle (LAB) : pi- 0.0000 0.0000 730.0000 MeV -- 743.2226 MeV
- (SCM) : pi- 0.0000 0.0000 452.1737 MeV -- 473.2239 MeV
- Nucleus particle (LAB) : proton 0.0000 0.0000 0.0000 eV -- 938.2720 MeV
- (SCM) : proton 0.0000 0.0000 -452.1737 MeV -- 1.0415 GeV
- Output particle (LAB) : eta 171.0710 36.2372 228.6272 MeV -- 568.2928 MeV
- (SCM) : eta 171.0710 36.2372 -20.0811 MeV -- 520.6626 MeV
- Nucleus output particle (LAB) : neutron -171.0710 -36.2372 501.3728 MeV -- 1.1132 GeV
- (SCM) : neutron -171.0710 -36.2372 20.0811 MeV -- 994.1061 MeV
- -- triggered angular ranges:
- 6 [ 0.0000, -0.2000)
- --- Energy Deposit
- monitor : 371.234 keV
- vc (l) : 0 eV
- vc (r) : 0 eV
- cal (l) : 391.75 MeV
- 10.46 0 0.8818 26.62 20.84 0
- 0.4397 0 2.02 116.4 213.6 0
- 0 0 0 0 0.5409 0
- 0 0 0 0 0 0
- cal (r) : 176.543 MeV
- 0 0 0 0 0 4.616
- 0 0 0 0 71.41 87.09
- 0 0 0 0.3867 6.862 4.878
- 0 0 0 0 0.2344 1.064
Run terminated.
Run Summary
- Number of events processed : 14984, effectively: 10
- User=9.070000s Real=9.170163s Sys=0.010000s
+ Number of events processed : 14456, effectively: 10
+ User=8.780000s Real=9.096388s Sys=0.030000s
--- Setup acceptances (range | real (trg / mon) | rec (trg / mon / all)):
- 1 [ 1.0000, 0.8000) | 0.00000000 ( 0 / 1136 ) | 0.00000000 ( 0 / 1136 / 1418 )
- 2 [ 0.8000, 0.6000) | 0.00000000 ( 0 / 1141 ) | 0.00000000 ( 0 / 1141 / 1389 )
- 3 [ 0.6000, 0.4000) | 0.00000000 ( 0 / 1213 ) | 0.00000000 ( 0 / 1213 / 1494 )
- 4 [ 0.4000, 0.2000) | 0.00174672 ( 2 / 1145 ) | 0.00174672 ( 2 / 1145 / 1411 )
- 5 [ 0.2000, 0.0000) | 0.00084746 ( 1 / 1180 ) | 0.00169492 ( 2 / 1180 / 1434 )
- 6 [ 0.0000, -0.2000) | 0.00176991 ( 2 / 1130 ) | 0.00176991 ( 2 / 1130 / 1405 )
- 7 [-0.2000, -0.4000) | 0.00189573 ( 2 / 1055 ) | 0.00094787 ( 1 / 1055 / 1330 )
- 8 [-0.4000, -0.6000) | 0.00177462 ( 2 / 1127 ) | 0.00088731 ( 1 / 1127 / 1419 )
- 9 [-0.6000, -0.8000) | 0.00084175 ( 1 / 1188 ) | 0.00168350 ( 2 / 1188 / 1484 )
- 10 [-0.8000, -1.0000) | 0.00000000 ( 0 / 1091 ) | 0.00000000 ( 0 / 1091 / 1352 )
+ 1 [ 1.0000, 0.8000) | 0.00254453 ( 1 / 393 ) | 0.00000000 ( 0 / 393 / 480 )
+ 2 [ 0.8000, 0.6000) | 0.00000000 ( 0 / 404 ) | 0.00247525 ( 1 / 404 / 498 )
+ 3 [ 0.6000, 0.4000) | 0.00000000 ( 0 / 423 ) | 0.00236407 ( 1 / 423 / 499 )
+ 4 [ 0.4000, 0.2000) | 0.00259067 ( 1 / 386 ) | 0.00000000 ( 0 / 386 / 480 )
+ 5 [ 0.2000, 0.0000) | 0.00236407 ( 1 / 423 ) | 0.00000000 ( 0 / 423 / 511 )
+ 6 [ 0.0000, -0.2000) | 0.00000000 ( 0 / 411 ) | 0.00243309 ( 1 / 411 / 511 )
+ 7 [-0.2000, -0.4000) | 0.00000000 ( 0 / 428 ) | 0.00000000 ( 0 / 428 / 510 )
+ 8 [-0.4000, -0.6000) | 0.00000000 ( 0 / 400 ) | 0.00000000 ( 0 / 400 / 503 )
+ 9 [-0.6000, -0.8000) | 0.00000000 ( 0 / 398 ) | 0.00000000 ( 0 / 398 / 486 )
+ 10 [-0.8000, -1.0000) | 0.00000000 ( 0 / 371 ) | 0.00000000 ( 0 / 371 / 454 )
---
- False hits (edt | rec): 0 | 0
+ False hits (edt | rec): 7 | 7
G4 kernel has come to Quit state.
================== Deleting memory pools ===================
Number of memory pools allocated: 16; of which, static: 3
-Dynamic pools deleted: 13 / Total memory freed: 0.39 MB
+Dynamic pools deleted: 13 / Total memory freed: 0.97 MB
============================================================
RunManagerKernel is deleted. Good bye :)
diff --git a/examples/advanced/ChargeExchangeMC/History b/examples/advanced/ChargeExchangeMC/History
index 81b3d6c024..f15af47c53 100644
--- a/examples/advanced/ChargeExchangeMC/History
+++ b/examples/advanced/ChargeExchangeMC/History
@@ -7,6 +7,9 @@ cirrone@lns.infn.it
History file of the ChargeExchangeMC application
====================================================
+02.09.2019 - S. Guatelli, Tag ChargeExchangeMC-V10-05-02
+ G4VIS_USE and G4UI_USE deleted
+
31.01.2019 - G.Cosmo, Tag ChargeExchangeMC-V10-05-01
Fixed compilation warnings for unused data when no analysis set.
Fixed regular expression error in schema validation for lht.gdml.
diff --git a/examples/advanced/ChargeExchangeMC/src/CexmcRunManager.cc b/examples/advanced/ChargeExchangeMC/src/CexmcRunManager.cc
index 6878846e50..d1b2ce29e8 100644
--- a/examples/advanced/ChargeExchangeMC/src/CexmcRunManager.cc
+++ b/examples/advanced/ChargeExchangeMC/src/CexmcRunManager.cc
@@ -127,7 +127,7 @@ CexmcRunManager::CexmcRunManager( const G4String & projectId_,
if ( rProject != "" && rProject == projectId )
throw CexmcException( CexmcWeirdException );
- const char * projectsDirEnv( getenv( "CEXMC_PROJECTS_DIR" ) );
+ const char * projectsDirEnv( std::getenv( "CEXMC_PROJECTS_DIR" ) );
if ( projectsDirEnv )
projectsDir = projectsDirEnv;
diff --git a/examples/advanced/STCyclotron/CMakeLists.txt b/examples/advanced/STCyclotron/CMakeLists.txt
new file mode 100755
index 0000000000..aea14b05ad
--- /dev/null
+++ b/examples/advanced/STCyclotron/CMakeLists.txt
@@ -0,0 +1,72 @@
+#----------------------------------------------------------------------------
+# Setup the project
+cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
+project(STCyclotron)
+#----------------------------------------------------------------------------
+# Find Geant4 package, activating all available UI and Vis drivers by default
+# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
+# to build a batch mode only executable
+#
+option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
+if(WITH_GEANT4_UIVIS)
+find_package(Geant4 REQUIRED ui_all vis_all)
+else()
+find_package(Geant4 REQUIRED)
+endif()
+#----------------------------------------------------------------------------
+# Setup Geant4 include directories and compile definitions
+#
+include(${Geant4_USE_FILE})
+include_directories(${PROJECT_SOURCE_DIR}/include)
+#----------------------------------------------------------------------------
+# Setup Geant4 include directories and compile definitions
+#
+include(${Geant4_USE_FILE})
+#---------------------------------------------------
+# Locate sources and headers for this project
+#
+include_directories(${PROJECT_SOURCE_DIR}/include
+ ${Geant4_INCLUDE_DIR})
+
+file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
+file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
+#----------------------------------------------------------------------------
+# Add the executable, and link it to the Geant4 libraries
+#
+add_executable(STCyclotron STCyclotron.cc ${sources} ${headers})
+
+target_link_libraries(STCyclotron ${Geant4_LIBRARIES} ${ROOT_LIBRARIES})
+#----------------------------------------------------------------------------
+# Copy all scripts to the build directory, i.e. the directory in which we
+# build rdecay02. This is so that we can run the executable directly because it
+# relies on these scripts being in the current working directory.
+#
+set(STCYCLOTRON_SCRIPTS
+ init.mac
+ init_parameters.mac
+ run.mac
+ vis.mac
+ Macro/Vis/vis.mac
+ Macro/Vis/init_vis.mac
+ Macro/init.mac
+ Macro/init_parameters.mac
+ Macro/run.mac
+ Macro/Vis/vis.mac
+ Macro/Vis/init_vis.mac
+ Plot.C
+ Macro/GUI/gui.mac
+ Macro/GUI/icons.mac
+ Macro/GUI/run.png
+ Macro/Material/Target/Ni64_enriched_95.mac
+ Macro/Material/Target/Ni64_pure.mac
+ Macro/Material/Target/My_designed_material.mac
+ )
+
+foreach(_script ${STCYCLOTRON_SCRIPTS})
+ configure_file(
+ ${PROJECT_SOURCE_DIR}/${_script}
+ ${PROJECT_BINARY_DIR}/${_script}
+ COPYONLY
+ )
+endforeach()
+
diff --git a/examples/advanced/STCyclotron/GNUmakefile b/examples/advanced/STCyclotron/GNUmakefile
new file mode 100755
index 0000000000..fd710e889f
--- /dev/null
+++ b/examples/advanced/STCyclotron/GNUmakefile
@@ -0,0 +1,37 @@
+# $Id: GNUmakefile 68058 2013-03-13 14:47:43Z gcosmo $
+# --------------------------------------------------------------
+# GNUmakefile for examples module. Gabriele Cosmo, 06/04/98.
+# --------------------------------------------------------------
+
+name := STCyclotron
+G4TARGET := $(name)
+G4EXLIB := true
+
+ifndef G4INSTALL
+ G4INSTALL = ../../..
+endif
+
+.PHONY: all
+all: lib bin
+
+ifdef G4ANALYSIS_USE_ROOT
+ CPPFLAGS += -DG4ANALYSIS_USE_ROOT
+endif
+
+include $(G4INSTALL)/config/architecture.gmk
+
+ifdef G4ANALYSIS_USE_ROOT
+ CPPFLAGS += $(shell $(ROOTSYS)/bin/root-config --cflags)
+ LDFLAGS += $(shell $(ROOTSYS)/bin/root-config --glibs)
+endif
+
+include $(G4INSTALL)/config/binmake.gmk
+
+visclean:
+ rm -f g4*.prim g4*.eps g4*.wrl
+ rm -f .DAWN_*
+
+anaclean:
+ rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SahmriG4Histo*
+ rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SahmriG4Analysis*
+ rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SahmriG4Stepping*
diff --git a/examples/advanced/STCyclotron/History b/examples/advanced/STCyclotron/History
new file mode 100644
index 0000000000..232fb20b20
--- /dev/null
+++ b/examples/advanced/STCyclotron/History
@@ -0,0 +1,18 @@
+-------------------------------------------------------------------
+-------------------------------------------------------------------
+
+ =========================================================
+ Geant4 - radiprotection example
+ =========================================================
+
+ Category History file
+ ---------------------
+
+19.11.2019 - G. Cosmo tag STCyclotron-V10-05-01
+- Fixed compilation warnings for cases of implicit type conversions.
+
+08.11.2019 - S. Guatelli tag STCyclotron-V10-05-00
+ new example modelling a solid target of the cyclotron to study to
+ production of the radioisotope of interest for proton irradiation.
+
+
diff --git a/examples/advanced/STCyclotron/Macro/GUI/gui.mac b/examples/advanced/STCyclotron/Macro/GUI/gui.mac
new file mode 100755
index 0000000000..657360bd86
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/GUI/gui.mac
@@ -0,0 +1,77 @@
+#
+# This file permits to customize, with commands,
+# the menu bar of the G4UIXm, G4UIQt, G4UIWin32 sessions.
+# It has no effect with G4UIterminal.
+#
+#
+# Add icons of general interest
+#
+/control/execute Macro/GUI/icons.mac
+/control/execute Macro/init_beam.mac
+
+# File menu :
+/gui/addMenu file File
+/gui/addButton file Quit exit
+
+# Run menu :
+/gui/addMenu run Run
+/gui/addButton run "BeamOn 1" "/run/beamOn 1"
+/gui/addButton run "Beam On" "/run/beamOn"
+/gui/addButton run "Save History" /control/saveHistory
+#/gui/addButton run run1 "/control/execute run1.mac"
+
+# Gun menu :
+/gui/addMenu beam Beam
+/gui/addButton beam "Energy - Type : mono" "/gps/ene/mono"
+/gui/addButton beam "Particle : proton" "/gps/particle proton"
+/gui/addButton beam "Particle : deuteron" "/gps/particle deuteron"
+/gui/addButton beam "Irradiation Time in hour(s)" "/setTimeOfIrradiation/time"
+/gui/addButton beam "Beam current in Ampere" "/setBeamCurrent/beamCurrent"
+
+
+
+# Viewer menu :
+/gui/addMenu viewer Viewer
+/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
+/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
+/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
+/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
+/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
+/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
+/gui/addButton viewer "Disable viewer" "/vis/disable"
+/gui/addButton viewer "Enable viewer" "/vis/enable"
+
+#
+
+
+# User defined icon :
+/gui/addIcon "Run beam on" user_icon "/run/beamOn 1" run.png
+
+
+#Target Material Menu
+
+/gui/addMenu targetMaterial Target_Material
+/gui/addButton targetMaterial "My designed Material" "/control/execute Macro/Material/Target/My_designed_material.mac"
+/gui/addButton targetMaterial "Pure 64Ni" "/control/execute Macro/Material/Target/Ni64_pure.mac"
+/gui/addButton targetMaterial "95% 64Ni" "/control/execute Macro/Material/Target/Ni64_enriched_95.mac"
+/gui/addButton targetMaterial "NIST material list" "/material/nist/listMaterials"
+/gui/addButton targetMaterial "Target material modification using NIST" "/changeTarget/materialNist"
+
+
+#Target Geometry Menu
+
+/gui/addMenu targetGeometry Target_Geometry
+/gui/addButton targetGeometry "Thickness" "/changeTarget/thickness"
+/gui/addButton targetGeometry "Diameter" "/changeTarget/diameter"
+
+#Foil Material Menu
+
+/gui/addMenu foilMaterial Foil_Material
+/gui/addButton foilMaterial "My designed Material" "/control/execute Macro/Material/Foil/My_designed_material.mac"
+/gui/addButton foilMaterial "NIST material list" "/material/nist/listMaterials"
+/gui/addButton foilMaterial "Target material modification using NIST" "/changeFoil/materialNist"
+
+#Foil Geometry Menu
+
+/gui/addMenu foilGeometry Foil_Geometry
+/gui/addButton foilGeometry "Thickness" "/changeFoil/thickness"
diff --git a/examples/advanced/STCyclotron/Macro/GUI/icons.mac b/examples/advanced/STCyclotron/Macro/GUI/icons.mac
new file mode 100755
index 0000000000..e474a7ab78
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/GUI/icons.mac
@@ -0,0 +1,26 @@
+#
+# This file permits to customize, with commands,
+# the icon menu bar of the G4UIQt sessions not yet implemented other UI drivers (geant4-09-05-ref-09)
+# It has no effect with G4UIterminal.
+
+# open/save icons
+/gui/addIcon "Open macro file" open /control/execute
+/gui/addIcon "Save viewer state" save /vis/viewer/save
+
+# Cursors style icons
+/gui/addIcon "Move" move
+/gui/addIcon "Pick" pick
+/gui/addIcon "Zoom out" zoom_out
+/gui/addIcon "Zoom in" zoom_in
+/gui/addIcon "Rotate" rotate
+
+# Surface Style icons
+# Surface Style icons
+/gui/addIcon "Hidden line removal" hidden_line_removal
+/gui/addIcon "Hidden line and hidden surface removal" hidden_line_and_surface_removal
+/gui/addIcon "Surfaces" solid
+/gui/addIcon "Wireframe" wireframe
+
+# Perspective/Ortho icons
+/gui/addIcon "Perspective" perspective
+/gui/addIcon "Orthographic" ortho
diff --git a/examples/advanced/STCyclotron/Macro/GUI/run.png b/examples/advanced/STCyclotron/Macro/GUI/run.png
new file mode 100755
index 0000000000..31867611bb
Binary files /dev/null and b/examples/advanced/STCyclotron/Macro/GUI/run.png differ
diff --git a/examples/advanced/STCyclotron/Macro/Material/Target/My_designed_material.mac b/examples/advanced/STCyclotron/Macro/Material/Target/My_designed_material.mac
new file mode 100755
index 0000000000..828d447e8f
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/Material/Target/My_designed_material.mac
@@ -0,0 +1,35 @@
+#Design your own material following an example
+
+# Example 2 : defining the following : 2.6% of Ni58, 1.72% of Ni60, 0.15% of Ni61, 0.53% of Ni62, 95% of Ni64
+#/changeTarget/designedMaterial/materialDensity 8.9 g/cm3
+#/changeTarget/designedMaterial/MaterialNComponents 1
+#/changeTarget/designedMaterial/ElementName enrichedNi64
+#/changeTarget/designedMaterial/MaterialFractionMass 1.
+#/changeTarget/designedMaterial/ElementSymbole enrichedNi64
+#/changeTarget/designedMaterial/ElementNComponents 5
+#/changeTarget/designedMaterial/isotopeName Ni64
+#/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.95
+#/changeTarget/designedMaterial/isotopeZ 28.
+#/changeTarget/designedMaterial/isotopeN 64
+#/changeTarget/designedMaterial/isotopeA 64.
+#/changeTarget/designedMaterial/isotopeName Ni58
+#/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.026
+#/changeTarget/designedMaterial/isotopeZ 28.
+#/changeTarget/designedMaterial/isotopeN 58
+#/changeTarget/designedMaterial/isotopeA 58.
+#/changeTarget/designedMaterial/isotopeName Ni60
+#/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0172
+#/changeTarget/designedMaterial/isotopeZ 28.
+#/changeTarget/designedMaterial/isotopeN 60
+#/changeTarget/designedMaterial/isotopeA 60.
+#/changeTarget/designedMaterial/isotopeName Ni61
+#/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0015
+#/changeTarget/designedMaterial/isotopeZ 28.
+#/changeTarget/designedMaterial/isotopeN 61
+#/changeTarget/designedMaterial/isotopeA 61.
+#/changeTarget/designedMaterial/isotopeName Ni62
+#/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0053
+#/changeTarget/designedMaterial/isotopeZ 28.
+#/changeTarget/designedMaterial/isotopeN 62
+#/changeTarget/designedMaterial/isotopeA 62.
+#/changeTarget/designedMaterial/update
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_enriched_95.mac b/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_enriched_95.mac
new file mode 100755
index 0000000000..ae23d7057b
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_enriched_95.mac
@@ -0,0 +1,33 @@
+# Example 2 : defining the following : 2.6% of Ni58, 1.72% of Ni60, 0.15% of Ni61, 0.53% of Ni62, 95% of Ni64
+/changeTarget/designedMaterial/materialDensity 8.9 g/cm3
+/changeTarget/designedMaterial/MaterialNComponents 1
+/changeTarget/designedMaterial/ElementName enrichedNi64
+/changeTarget/designedMaterial/MaterialFractionMass 1.
+/changeTarget/designedMaterial/ElementSymbole enrichedNi64
+/changeTarget/designedMaterial/ElementNComponents 5
+/changeTarget/designedMaterial/isotopeName Ni64
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.95
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 64
+/changeTarget/designedMaterial/isotopeA 64.
+/changeTarget/designedMaterial/isotopeName Ni58
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.026
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 58
+/changeTarget/designedMaterial/isotopeA 58.
+/changeTarget/designedMaterial/isotopeName Ni60
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0172
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 60
+/changeTarget/designedMaterial/isotopeA 60.
+/changeTarget/designedMaterial/isotopeName Ni61
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0015
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 61
+/changeTarget/designedMaterial/isotopeA 61.
+/changeTarget/designedMaterial/isotopeName Ni62
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 0.0053
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 62
+/changeTarget/designedMaterial/isotopeA 62.
+/changeTarget/designedMaterial/update
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_pure.mac b/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_pure.mac
new file mode 100755
index 0000000000..c39b4a6ad7
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/Material/Target/Ni64_pure.mac
@@ -0,0 +1,13 @@
+# Example 3 : defining the following : pure Ni64
+/changeTarget/designedMaterial/materialDensity 8.85 g/cm3
+/changeTarget/designedMaterial/MaterialNComponents 1
+/changeTarget/designedMaterial/ElementName Ni64
+/changeTarget/designedMaterial/MaterialFractionMass 1.
+/changeTarget/designedMaterial/ElementSymbole Ni64
+/changeTarget/designedMaterial/ElementNComponents 1
+/changeTarget/designedMaterial/isotopeName Ni64
+/changeTarget/designedMaterial/IsotopeAbundanceInElement 1.
+/changeTarget/designedMaterial/isotopeZ 28.
+/changeTarget/designedMaterial/isotopeN 64
+/changeTarget/designedMaterial/isotopeA 64.
+/changeTarget/designedMaterial/update
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Macro/Vis/init_vis.mac b/examples/advanced/STCyclotron/Macro/Vis/init_vis.mac
new file mode 100755
index 0000000000..ef3fc8a557
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/Vis/init_vis.mac
@@ -0,0 +1,11 @@
+# Macro file for the initialization phase of example B1
+# when running in interactive mode with visualization
+#
+# Set some default verbose
+#
+/control/verbose 1
+/control/saveHistory
+/run/verbose 1
+#
+# Visualization setting
+/control/execute Macro/Vis/vis.mac
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Macro/Vis/vis.mac b/examples/advanced/STCyclotron/Macro/Vis/vis.mac
new file mode 100755
index 0000000000..0dc6854e5c
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/Vis/vis.mac
@@ -0,0 +1,92 @@
+# Macro file for the visualization setting in the initialization phase
+# of the example when running in interactive mode
+#
+#/vis/disable
+# Use these open statements to open selected visualization
+#
+# Use this open statement to create an OpenGL view:
+#/vis/open OGLI
+/vis/open OGL 600x600-0+0
+#
+# Disable auto refresh and quieten vis messages whilst scene and
+# trajectories are established:
+/vis/viewer/set/autoRefresh false
+/vis/verbose 1
+#
+# Draw geometry:
+/vis/drawVolume
+#
+# Specify view angle:
+/vis/viewer/set/viewpointVector -1 0 0
+/vis/viewer/set/lightsVector -1 0 0
+#zoom the whole target part
+#/vis/viewer/set/targetPoint 0 0 0.1 m
+#/vis/viewer/zoomTo 10
+#zoom just the target element
+/vis/viewer/set/targetPoint 0 0 0 mm
+/vis/viewer/zoomTo 1
+#
+#
+# Specify style (surface, wireframe, auxiliary edges,...)
+/vis/viewer/set/style surface
+#/vis/viewer/set/auxiliaryEdge true
+#/vis/viewer/set/lineSegmentsPerCircle 500
+#
+# Draw smooth trajectories at end of event, showing trajectory points
+# as markers 2 pixels wide:
+/vis/scene/add/trajectories smooth
+/vis/modeling/trajectories/create/drawByCharge
+/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
+/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
+# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
+#
+# Draw hits at end of event:
+/vis/scene/add/hits
+#
+# Many other options are available with /vis/modeling and /vis/filtering.
+# For example, to select colour by particle ID:
+/vis/modeling/trajectories/create/drawByParticleID
+/vis/modeling/trajectories/drawByParticleID-0/default/setDrawStepPts true
+# To select or override default colours (note: e+ is blue by default):
+/vis/modeling/trajectories/list
+/vis/modeling/trajectories/drawByParticleID-0/set e+ yellow
+#
+# To superimpose all of the events from a given run:
+#/vis/scene/endOfEventAction accumulate
+#
+# Decorations
+# Name
+/vis/set/textColour green
+/vis/set/textLayout right
+/vis/scene/add/text2D 0.9 -.9 24 ! ! sahmri_Simulation
+#/vis/scene/add/axes 0 0 0 186.14 mm
+#
+#
+# Set geometry attributes
+/vis/geometry/set/visibility World 0 0
+/vis/geometry/set/colour Layer_PART1 0 1. 0.1 0.5 0.3 #Al
+/vis/geometry/set/colour Layer_PART2 0 1. 0.1 0.5 0.3 #Al
+/vis/geometry/set/colour Layer_PART3 0 1. 0.2 0.4 0.3 #Al
+/vis/geometry/set/colour Layer_PART4 0 0. 0.2 0.7 0.3 #Al
+/vis/geometry/set/colour Layer1_PART4 0 1. 0. 0. 0.3 #Pt
+/vis/geometry/set/colour Layer1_PART5 0 0. 0.2 0.7 0.3 #Pt
+/vis/geometry/set/colour Layer2_PART5 0 1. 0. 0. 0.3 #Al
+/vis/geometry/set/colour Layer3_PART5 0 1. 0. 0. 0.3 #Al
+/vis/geometry/set/colour Foil 0 1. 0.8 0.4 0.3 #foil
+/vis/geometry/set/colour Target 0 0.1 0.8 0.4 0.6 #target
+/vis/geometry/set/colour Tube_PART1 0 1. 1. 0. 0.3 #beam
+/vis/geometry/set/colour Tube_PART2 0 1. 1. 0. 0.3 #beam
+/vis/geometry/set/colour Tube_PART3 0 1. 1. 0. 0.3 #beam
+/vis/geometry/set/colour Tube_PART4 0 1. 1. 0. 0.3 #beam
+/vis/geometry/set/colour Grid 0 0.1 0.5 1. 0.9 #Al
+#
+#/run/verbose 0
+#/tracking/verbose 1
+#/control/verbose 0
+
+# Re-establish auto refreshing and verbosity:
+/vis/viewer/set/autoRefresh true
+/vis/verbose warnings
+#
+# For file-based drivers, use this to create an empty detector view:
+#/vis/viewer/flush
diff --git a/examples/advanced/STCyclotron/Macro/init.mac b/examples/advanced/STCyclotron/Macro/init.mac
new file mode 100755
index 0000000000..c38ab3edb8
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/init.mac
@@ -0,0 +1,9 @@
+# Macro file for the initialization phase
+# when running in interactive mode without
+# visualization
+#
+# Set some default verbose
+/run/initialize
+/control/verbose 2
+/control/saveHistory
+/run/verbose 0
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Macro/init_parameters.mac b/examples/advanced/STCyclotron/Macro/init_parameters.mac
new file mode 100755
index 0000000000..93dd539e17
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/init_parameters.mac
@@ -0,0 +1,73 @@
+#This macro file is where the user can set up the different parameters one can modify.
+
+/run/initialize
+##############################################
+#
+# PART1: Set the values for the beam
+#
+/gps/particle proton #incoming particles = proton
+/gps/direction 0 0 1 #oriented along the Z axis
+/gps/ene/type Mono #monoenergetic
+/gps/ene/mono 18. MeV #at 18 MeV
+/gps/pos/type Beam
+/gps/pos/shape Circle #the beam geometry is a circle
+/gps/pos/radius 3. mm #of diameter of 3 mm
+#
+/setBeamCurrent/beamCurrent 30.E-6 #set the value of beam current in ampere
+/setTimeOfIrradiation/time 6. # Set the irradiation time (in hours)
+#
+#
+#
+##############################################
+#
+# PART 2 : Set the values for the Target
+#
+/changeTarget/diameter 6. mm
+/changeTarget/thickness 0.6 mm
+#control/execute Macro/Material/Target/Ni64_enriched_95.mac
+#
+#
+#
+###############################################
+#
+# PART 3 : Set the values for the Foil
+#
+#/changeFoil/thickness 0.32 mm
+/changeFoil/thickness 0.32 mm
+#
+#
+#
+##############################################
+# PART 4 : Set the edges of histograms
+#
+#Beam data
+/analysis/setFileName STCyclotron
+/analysis/h1/set 0 32 12. 19. MeV #energy primary particles when reaching the target (in MeV). By default equal or lower than the beam energy.
+/analysis/h1/set 1 16 16. 19. MeV #energy primary particles when reaching the foil (in MeV). By default equal or lower than the beam energy.
+/analysis/h1/set 2 72 0.0 18. MeV #energy spectrum of primaries going out of the target (MeV)
+/analysis/h1/set 3 32 12. 19. MeV #energy of primary particles when going out of the foil (MeV)
+/analysis/h1/set 4 30 185. 188. mm #depth of isotope creation in the target.
+/analysis/h1/set 5 72 0. 18. MeV #energy spectrum of positrons created in the target (MeV)
+/analysis/h1/set 6 72 0. 18. MeV #energy spectrum of electrons created in the target (MeV)
+/analysis/h1/set 7 72 0. 18. MeV #energy spectrum of gammas created in the target (MeV)
+/analysis/h1/set 8 72 0. 18. MeV #energy spectrum of neutrons created in the target (MeV)
+/analysis/h1/set 9 72 0. 18. MeV #energy spectrum of positrons created in the target via decay (MeV)
+/analysis/h1/set 10 72 0. 18. MeV #energy spectrum of electrons created in the target via decay (MeV)
+/analysis/h1/set 11 72 0. 18. MeV #energy spectrum of gammas created in the target via decay (MeV)
+/analysis/h1/set 12 72 0. 18. MeV #energy spectrum of neutrons created in the target via decay (MeV)
+/analysis/h1/set 13 72 0. 18. MeV #energy spectrum of nu_e created in the target via decay (MeV)
+/analysis/h1/set 14 72 0. 18. MeV #energy spectrum of anti_nu_e created in the target via decay (MeV)
+#
+#
+/analysis/h2/setX 0 100 -7.5 7.5 mm #beam intensity before hiting the target (mm)
+/analysis/h2/setY 0 100 -7.5 7.5 mm #beam intensity before hiting the target (mm)
+/analysis/h2/setX 1 100 -7.5 7.5 mm #beam intensity before hiting the foil (mm)
+/analysis/h2/setY 1 100 -7.5 7.5 mm #beam intensity before hiting the foil (mm)
+/analysis/h2/setX 2 21 14.5 35.5 #radioisotopes produced
+/analysis/h2/setY 2 30 44.5 74.5 #radioisotopes produced
+/analysis/h2/setX 3 100 185. 188. mm #depth = f(energy (MeV))
+/analysis/h2/setY 3 100 0. 19. MeV #depth = f(energy (MeV))
+/analysis/h2/setX 4 100 -7.5 7.5 mm #beam intensity going out from the target (mm)
+/analysis/h2/setY 4 100 -7.5 7.5 mm #beam intensity going out from the target (mm)
+/analysis/h2/setX 5 100 -7.5 7.5 mm #beam intensity going out from the foil (mm)
+/analysis/h2/setY 5 100 -7.5 7.5 mm #beam intensity going out from the foil (mm)
diff --git a/examples/advanced/STCyclotron/Macro/run.mac b/examples/advanced/STCyclotron/Macro/run.mac
new file mode 100755
index 0000000000..c62fe13911
--- /dev/null
+++ b/examples/advanced/STCyclotron/Macro/run.mac
@@ -0,0 +1,12 @@
+#
+# Macro file for myProgram
+#
+# set verbose level for this run
+#
+/control/execute Macro/init_parameters.mac
+/control/verbose 2
+/run/verbose 2
+/event/verbose 0
+/tracking/verbose 0
+#
+/run/beamOn 10
\ No newline at end of file
diff --git a/examples/advanced/STCyclotron/Plot.C b/examples/advanced/STCyclotron/Plot.C
new file mode 100755
index 0000000000..b9c50fc7fe
--- /dev/null
+++ b/examples/advanced/STCyclotron/Plot.C
@@ -0,0 +1,1000 @@
+#include "TF1.h"
+#include "TH2.h"
+#include "TH2D.h"
+#include "TH1.h"
+#include "TMath.h"
+#include
+#include "TGraph.h"
+#include