diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 0000000000..ca4b143fd4
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,219 @@
+cff-version: 1.2.0
+# CITATION.cff created with https://github.com/monperrus/bibtexbrowser/
+# wget https://www.sciencedirect.com/sdfe/arp/cite?pii=S0168900216306957&format=text%2Fx-bibtex&withabstract=true
+# php bibtex-to-cff.php S0168900216306957.bib --id ALLISON2016186 > CITATION.cff
+message: "If you use Geant4 toolkit, please cite it using these metadata."
+title: "Geant4"
+authors:
+ - family-names: Geant4
+ - given-names: Collaboration
+preferred-citation:
+ title: "Recent developments in Geant4"
+ doi: "https://doi.org/10.1016/j.nima.2016.06.125"
+ url: "https://www.sciencedirect.com/science/article/pii/S0168900216306957"
+ year: "2016"
+ type: article
+ journal: "Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment"
+ volume: "835"
+ start: "186"
+ end: "225"
+ issn: "0168-9002"
+ authors:
+ - family-names: Allison
+ given-names: J.
+ - family-names: Amako
+ given-names: K.
+ - family-names: Apostolakis
+ given-names: J.
+ - family-names: Arce
+ given-names: P.
+ - family-names: Asai
+ given-names: M.
+ - family-names: Aso
+ given-names: T.
+ - family-names: Bagli
+ given-names: E.
+ - family-names: Bagulya
+ given-names: A.
+ - family-names: Banerjee
+ given-names: S.
+ - family-names: Barrand
+ given-names: G.
+ - family-names: Beck
+ given-names: B.R.
+ - family-names: Bogdanov
+ given-names: A.G.
+ - family-names: Brandt
+ given-names: D.
+ - family-names: Brown
+ given-names: J.M.C.
+ - family-names: Burkhardt
+ given-names: H.
+ - family-names: Canal
+ given-names: Ph.
+ - family-names: Cano-Ott
+ given-names: D.
+ - family-names: Chauvie
+ given-names: S.
+ - family-names: Cho
+ given-names: K.
+ - family-names: Cirrone
+ given-names: G.A.P.
+ - family-names: Cooperman
+ given-names: G.
+ - family-names: Cortés-Giraldo
+ given-names: M.A.
+ - family-names: Cosmo
+ given-names: G.
+ - family-names: Cuttone
+ given-names: G.
+ - family-names: Depaola
+ given-names: G.
+ - family-names: Desorgher
+ given-names: L.
+ - family-names: Dong
+ given-names: X.
+ - family-names: Dotti
+ given-names: A.
+ - family-names: Elvira
+ given-names: V.D.
+ - family-names: Folger
+ given-names: G.
+ - family-names: Francis
+ given-names: Z.
+ - family-names: Galoyan
+ given-names: A.
+ - family-names: Garnier
+ given-names: L.
+ - family-names: Gayer
+ given-names: M.
+ - family-names: Genser
+ given-names: K.L.
+ - family-names: Grichine
+ given-names: V.M.
+ - family-names: Guatelli
+ given-names: S.
+ - family-names: Guèye
+ given-names: P.
+ - family-names: Gumplinger
+ given-names: P.
+ - family-names: Howard
+ given-names: A.S.
+ - family-names: Hřivnáčová
+ given-names: I.
+ - family-names: Hwang
+ given-names: S.
+ - family-names: Incerti
+ given-names: S.
+ - family-names: Ivanchenko
+ given-names: A.
+ - family-names: Ivanchenko
+ given-names: V.N.
+ - family-names: Jones
+ given-names: F.W.
+ - family-names: Jun
+ given-names: S.Y.
+ - family-names: Kaitaniemi
+ given-names: P.
+ - family-names: Karakatsanis
+ given-names: N.
+ - family-names: Karamitros
+ given-names: M.
+ - family-names: Kelsey
+ given-names: M.
+ - family-names: Kimura
+ given-names: A.
+ - family-names: Koi
+ given-names: T.
+ - family-names: Kurashige
+ given-names: H.
+ - family-names: Lechner
+ given-names: A.
+ - family-names: Lee
+ given-names: S.B.
+ - family-names: Longo
+ given-names: F.
+ - family-names: Maire
+ given-names: M.
+ - family-names: Mancusi
+ given-names: D.
+ - family-names: Mantero
+ given-names: A.
+ - family-names: Mendoza
+ given-names: E.
+ - family-names: Morgan
+ given-names: B.
+ - family-names: Murakami
+ given-names: K.
+ - family-names: Nikitina
+ given-names: T.
+ - family-names: Pandola
+ given-names: L.
+ - family-names: Paprocki
+ given-names: P.
+ - family-names: Perl
+ given-names: J.
+ - family-names: Petrović
+ given-names: I.
+ - family-names: Pia
+ given-names: M.G.
+ - family-names: Pokorski
+ given-names: W.
+ - family-names: Quesada
+ given-names: J.M.
+ - family-names: Raine
+ given-names: M.
+ - family-names: Reis
+ given-names: M.A.
+ - family-names: Ribon
+ given-names: A.
+ - family-names: Fira
+ given-names: A. Ristić
+ - family-names: Romano
+ given-names: F.
+ - family-names: Russo
+ given-names: G.
+ - family-names: Santin
+ given-names: G.
+ - family-names: Sasaki
+ given-names: T.
+ - family-names: Sawkey
+ given-names: D.
+ - family-names: Shin
+ given-names: J.I.
+ - family-names: Strakovsky
+ given-names: I.I.
+ - family-names: Taborda
+ given-names: A.
+ - family-names: Tanaka
+ given-names: S.
+ - family-names: Tomé
+ given-names: B.
+ - family-names: Toshito
+ given-names: T.
+ - family-names: Tran
+ given-names: H.N.
+ - family-names: Truscott
+ given-names: P.R.
+ - family-names: Urban
+ given-names: L.
+ - family-names: Uzhinsky
+ given-names: V.
+ - family-names: Verbeke
+ given-names: J.M.
+ - family-names: Verderi
+ given-names: M.
+ - family-names: Wendt
+ given-names: B.L.
+ - family-names: Wenzel
+ given-names: H.
+ - family-names: Wright
+ given-names: D.H.
+ - family-names: Wright
+ given-names: D.M.
+ - family-names: Yamashita
+ given-names: T.
+ - family-names: Yarba
+ given-names: J.
+ - family-names: Yoshida
+ given-names: H.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 26cabb15e2..fbad792297 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,7 @@ endif()
#-----------------------------------------------------------------------
# - Define CMake requirements and override make rules as needed
#
-cmake_minimum_required(VERSION 3.16...3.21)
+cmake_minimum_required(VERSION 3.16...3.24)
# - Make overrides for default flags, so they appear in interfaces
set(CMAKE_USER_MAKE_RULES_OVERRIDE_CXX
diff --git a/ReleaseNotes/Patch.11.0-2.txt b/ReleaseNotes/Patch.11.0-2.txt
index f085176343..82c076694e 100644
--- a/ReleaseNotes/Patch.11.0-2.txt
+++ b/ReleaseNotes/Patch.11.0-2.txt
@@ -66,7 +66,7 @@ List of fixes included in this public patch since the public release 11.0.1:
o Persistency:
-----------
+ GDML:
- o In G4GDMLReadMaterials, fixed default temperature to 20C
+ o In G4GDMLReadMaterials, fixed default temperature to 20°C
(NTP_Temperature).
o Addressing to the case of solid/volume name duplication when reading
more than one GDML files.
diff --git a/ReleaseNotes/Patch.11.0-3.txt b/ReleaseNotes/Patch.11.0-3.txt
new file mode 100644
index 0000000000..85ea9a3de7
--- /dev/null
+++ b/ReleaseNotes/Patch.11.0-3.txt
@@ -0,0 +1,107 @@
+
+ Geant4 11.0 - patch-03 Release Notes
+ ------------------------------------
+
+ 16 September 2022
+
+List of fixes included in this public patch since the public release 11.0.2:
+
+ o Configuration
+ -------------
+ + CMake:
+ o Update extraction of include paths from VecGeom to use imported target
+ property. Addressing problem report #2485.
+
+ o Geometry:
+ --------
+ + management:
+ o Added protection in G4GeometryManager for Open/CloseGeometry() to
+ be executed only by master thread. Addressing problem report #2502.
+
+ o Global:
+ ------
+ + Commented out debug printout in G4ThreadLocalSingleton method.
+ + Updated date and version for 11.0.3.
+
+ o Parameterisations:
+ -----------------
+ + gflash:
+ o GFlashHitMaker: fix to make it compatible with command-based scorer.
+
+ o Particles:
+ ---------
+ + Fixes for transportation of hypernuclei and anti-hypernuclei: in G4Ion,
+ set (forgotten) 'isGeneralIon' to false for hypernuclei and
+ anti-hypernuclei, to avoid they get assigned same processes as
+ 'GenericIon'.
+ In G4DoubleHyperDoubleNeutron and G4AntiDoubleHyperDoubleNeutron, added
+ (forgotten) call to SetDecayTable(), to have the decay table defined for
+ these particles.
+ In G4ParticleDefinition, protect methods GetNumberOfLambdasInHypernucleus()
+ and GetNumberOfAntiLambdasInAntiHypernucleus() against baryonic resonances
+ with high spins (such as N(2220), N(2250) and their anti-particles) which
+ have 8-digits PDG codes, but which are not hypernuclei or anti-hypernuclei.
+
+ o Physics Lists:
+ -------------
+ + constructors/electromagnetic
+ o G4GammaGeneralProcess: fixed problem of Compton scattering selection
+ in the low energy interval < 150 keV.
+
+ o Processes - Electromagnetic:
+ ---------------------------
+ + utils
+ o G4EmExtraParametersMessenger: fixed typo.
+ Addressing problem report #2492.
+
+ o Processes - Generic:
+ -------------------
+ + cuts
+ o G4VRangeToEnergyConverter: fixed static methods to provide correct
+ initialisation of energy limits.
+
+ o Processes - Hadronic:
+ --------------------
+ + models/particle_hp
+ o G4ParticleHPInelastic, G4ParticleHPCapture, G4ParticleHPFission,
+ G4ParticleHPElastic, G4ParticleHPThermalScattering: replaced the
+ threshold used for checking the absolute energy non-conservation from
+ DLB_MAX (implying no checking at all) to 350 GeV (this value allows for
+ cases where the residual nucleus is not produced, even when super-heavy
+ nuclides are involved).
+ o G4ParticleHPContAngularPar: added protections against evaluations of
+ arrays at negative index (-1), fixing rare reproducibility problems.
+ + models/parton_string
+ o Fixes to get isotropic distributions in annihilations at rest: in
+ G4DiffractiveSplitableHadron, set proper parton index.
+ In G4DiffractiveExcitation, in the CreateStrings() method, take into
+ account that strings are created in G4FTFAnnihilation; by default, the
+ method CreateStrings() creates a string from a wounded nucleon/hadron,
+ but this is not needed in the case of annihilation.
+ In G4FTFAnnihilation, removed splitting of hadron; fixed bugs in the
+ calculations of kinematical properties; set quark momenta at string
+ ends, to properly account for string order on rapidity.
+ o G4VSplitableHadron: changed the method Splitting() from "protected" to
+ "public" (needed to change the status of SplitableHadron in
+ G4FTFAnnihilation, to get isotropic distributions in annihilations
+ at rest).
+
+ o Track:
+ -----
+ + G4Step: added ResetPre/PostStepPoint() methods to replace a StepPoint
+ without deleting the previous object.
+
+ ----------------------------------------------------------------------------
+
+ Technical Notes
+ ---------------
+
+ o This patch should be applied on top of release 11.0 series.
+ o Technical notes distributed for release 11.0 are also applicable and
+ valid for this patch.
+
+The code and rebuilt binary libraries for release 11.0.3 are available
+through the Geant4 "Download" Web page.
+
+Please refer to the Geant4 User Documentation for further information about
+using Geant4.
diff --git a/ReleaseNotes/Patch4.10.7-4.txt b/ReleaseNotes/Patch4.10.7-4.txt
new file mode 100644
index 0000000000..a9657eb7a9
--- /dev/null
+++ b/ReleaseNotes/Patch4.10.7-4.txt
@@ -0,0 +1,76 @@
+
+ Geant4 10.7 - patch-04 Release Notes
+ ------------------------------------
+
+ 9 September 2022
+
+List of fixes included in this public patch since the public release 10.7.p03:
+
+ o Configuration
+ -------------
+ + CMake:
+ o Update extraction of include paths from VecGeom to use imported target
+ property. Addressing problem report #2485.
+
+ o Global:
+ ------
+ + Updated date and version for 10.7.p04.
+
+ o Physics Lists:
+ -------------
+ + constructors/electromagnetic
+ o G4GammaGeneralProcess: fixed problem of Compton scattering selection
+ in the low energy interval < 150 keV.
+
+ o Processes - Electromagnetic:
+ ---------------------------
+ + utils
+ o G4EmExtraParameters: safe definition of StepFuction for G4GenericIon.
+ Addressing problem report #2495.
+ o G4EmExtraParametersMessenger: fixed typo.
+ Addressing problem report #2492.
+
+ o Processes - Hadronic:
+ --------------------
+ + cross_sections
+ o G4ComponentAntiNuclNuclearXS: correct treatment of the cross-sections
+ of light anti-nuclei on hydrogen target. This relies on the isospin
+ symmetry assumption, according to which the properties of the reactions
+ between anti-proton and light nuclei are equivalent to those between
+ light anti-nuclei and hydrogen.
+ + models/coherent_elastic
+ o G4AntiNuclElastic: correction in SampleInvariantT() method of the
+ highest momentum transfer (which was causing the cosine of the polar
+ angle in the center-of-mass system to be larger than 1 in some cases).
+ Addressing problem report #2204.
+ + models/inclxx
+ o G4INCLXXInterface: fixed treatment of kaon0, anti_kaon0, kaon0L, and
+ kaon0S. In current reference physics lists, INCLXX is never used for
+ handling kaons, although it is capable of doing so, but at process-
+ level or in custom physics lists one could observe crashes when trying
+ to use INCLXX for neutral kaon projectiles. The change fixes this
+ misbehavior.
+ + models/particle_hp
+ o Fixed issue for photons too high in energy generated from
+ G4NDL/Capture/FSMF6 data. Addressing problem report #2468.
+ o G4ParticleHPContAngularPar: added protections against evaluations of
+ arrays at negative index (-1), fixing rare reproducibility problems
+ and rare crashes observed.
+ o Code cleanup in G4ParticleHPContEnergyAngular and
+ G4ParticleHPContAngularPar: removed debug and commented out code,
+ indentation of loops and if branches.
+
+ ----------------------------------------------------------------------------
+
+ Technical Notes
+ ---------------
+
+ o This patch should be applied on top of release 10.7 series.
+ o Technical notes distributed for release 10.7 are also applicable and
+ valid for this patch.
+
+The code and rebuilt binary libraries for release 10.7.p04 are available
+through the Geant4 "Download" Web page.
+
+Please refer to the Geant4 User Documentation for further information about
+using Geant4.
diff --git a/ReleaseNotes/ReleaseNotes.11.1.html b/ReleaseNotes/ReleaseNotes.11.1.html
new file mode 100644
index 0000000000..4a1f14a156
--- /dev/null
+++ b/ReleaseNotes/ReleaseNotes.11.1.html
@@ -0,0 +1,2773 @@
+
+
+Geant4 11.1 Release Notes
+
+
+
+
+
+
+
+
+
+Geant4 11.1 Release Notes
+
+
+
+|
+
+December 9th, 2022
+
+ |
+
+
+
+
+
+The code and binary libraries for the supported systems are available
+through our Source
+Code Web page.
+
+
+We are grateful for the efforts of Geant4 users who have provided
+ detailed feedback or comprehensive reports of issues.
+ We thank in particular those who have contributed corrections,
+ improvements or developments included in this release.
+
+
+Please refer to the
+Geant4
+User Documentation for further information about using Geant4.
+
+
+Contents
+
+- Supported and Tested Platforms
+- Supported CLHEP, VecGeom and PTL versions
+- Items for migration of the user code
+- New Developments and Capabilities
+- Expected effects on physics and performance
+- Known Run-Time Problems and Limitations
+- Compilation Warnings
+- Geant4 Software License
+- Detailed list of changes and fixes
+- Appendix
+
+
+
+
+
+
+
+
+1. Supported and Tested Platforms
+
+Platforms:
+
+- Linux, gcc-8.3.1.
+ Tested on 64 bit architectures (Intel or AMD) with
+ CERN CentOS Linux 8 (CC8) (based on CentOS Linux 8).
+- macOS 13.0.1 Ventura with Apple LLVM/Clang-14.
+ Tested on 64 bit architectures (Intel or Apple Silicon).
+- Windows-10 with Visual C++ 14.33 (Visual Studio 2022).
+
+
+More verified and tested configurations (64 bits):
+
+- Linux, gcc-9.3/10.3/11.3/12.2, clang-10/11/13/14
+- Linux, Intel-icc 2021.7, Intel-icx 2022.2
+- macOS 12.6 Monterey with Apple LLVM/clang-14
+- macOS 11.7 Big Sur with Apple LLVM/Clang-12
+- Windows/10 with Visual C++ 14.29 (Visual Studio 2019)
+
+
+
+
+
+
+
+
+2. Supported CLHEP, VecGeom and PTL versions
+
+This release of Geant4 has been verified with
+CLHEP, release 2.4.6.2.
+Use of a different CLHEP version may cause incorrect simulation results.
+NOTE: an internal module of the relevant CLHEP classes is provided and can be
+used as alternative to an external CLHEP library installation.
+A configuration option allows a Geant4 installation to use the
+VecGeom Library
+primitives, to replace the original Geant4 solids.
+VecGeom version 1.2.1 has been tested when using such configuration.
+PTL version 2.3.3 is required for external installation of the
+PTL tasking library.
+CMake 3.16 is the minimum version required to build Geant4.
+
+
+
+
+
+
+
+3. Items for migration of the user code
+
+Listed here is some relevant information on developments included in this
+release.
+Note that for all users a full re-installation of libraries (or a full
+re-compilation) and a re-compilation of user applications is required.
+
+
+General
+
+
+- Using standard install location for CMake find_package
+ configuration files under $CMAKE_INSTALL_PREFIX/lib/cmake/Geant4.
+ Application builds using CMake will need to set Geant4_DIR to
+ this new location, or use CMAKE_PREFIX_PATH, to find Geant4.
+- Added required configuration to be able to generate DEB/RPM packages
+ with CPack.
+- Added new scheme to locate required datasets, making use of environment
+ variables optional. See Appendix for details
+ on potential configuration and C++ changes required.
+- Removed Geant4Py from toolkit build with distribution and support moved
+ to upstream repository.
+ All support and feature requests should be directed to the related
+ GitHub Issue
+ Tracker.
+- Retired tasking module and merged contents in global and
+ run categories.
+
+
+
+Geometry, Fields and Transportation
+
+
+- Client code that uses the methods SetLowLooperThresholds() and/or
+ SetHighLooperThresholds() introduced in release 11.0 for G4Transportation
+ and G4CoupledTransportation, may need revision as now G4CoupledTransportation
+ inherits from G4Transportation.
+
+
+
+Electromagnetic and optical physics
+
+
+- New dataset G4EMLOW-8.2 is required and should be used.
+
+
+
+Visualization and Modeling
+
+
+- Qt drivers require the Qt-5 platform. Qt-6 is not yet supported.
+- The GEANT4_USE_TOOLSSG CMake option for the ToolsSG visualisation driver
+ has been removed, the driver now being automatically enabled.
+
+
+
+Data Sets
+
+
+- This release introduces new data set versions.
+ Please see the corresponding details in
+ Section 9 of this document.
+
+ - New data set versions: G4EMLOW-8.2, G4NDL-4.7.
+ Notice that the latter extends the number of materials for which
+ thermal scattering data is available.
+ - In order to use ParticleHP for charged particles
+ (protons, deuterons, tritons, He3 and alphas), an optional data
+ set G4TENDL-1.4 is required, and can be optionally
+ downloaded in addition.
+
+
+
+
+
+
+
+
+4. New Developments and Capabilities
+
+General
+
+- Improved diagnostic for problems with primary track parameters or with
+ secondary tracks in particle-change classes.
+- Introduced methods in the G4Track class that provide information on eventual
+ short-lived parent hadronic resonances.
+
+
+Analysis
+
+- Implemented support for writing analysis objects (histograms, profiles,
+ n-tuples) in a file multiple times.
+- Added new UI commands for analysis file management:
+ /analysis/openFile, write, closeFile and reset.
+
- Added new analysis manager List functions and associated commands:
+ /analysis/list [onlyIfActive],
+ /analysis/xy/list [onlyIfActive] where
+ xy = h1, h2, h3, p1, p2, ntuple.
+
+
+Geometry & Field
+
+- Added ability to optionally check for overlaps in parallel geometries
+ through the /geometry/run/test UI command.
+- A new class G4TransportationParameters enables fine grain control of
+ parameters for killing charged particles looping in a field.
+ It is optional, but if created it applies to all stable charged particles.
+ It must be instantiated in the master thread and all its parameters need
+ to be assigned values.
+- Improved computation of surface area and cubic volume in specific solids.
+- Revised implementation of G4CoupledTransportation: now it inherits from
+ G4Transportation and consolidates common variables and methods.
+- Revised G4FieldManager to ensure that epsilon_min/_max parameters
+ are between 'minimum and maximum accepted' accuracy values to ensure robust
+ behaviour of the integration.
+- Introduced a 2nd order symplectic integration method
+ G4BorisDriver, targetting better control of energy conservation and
+ conservation of phase space volume.
+
+
+Materials
+
+- In the NIST material data-base, the material descriptions for G4_ADENINE,
+ G4_GUANINE, G4_CYTOSINE, G4_THYMINE and G4_DEOXYRIBOSE have been updated
+ and G4_PHOSPHORIC_ACID has been added.
+- Fixed density effect data for 8 materials, the most significant fixes are
+ for G4_Tm, less relevant for G4_Be, G4_Mg,
+ G4_Fe, and G4_Y.
+
+
+Electromagnetic physics
+
+- Possibility to choose the model of fluctuations, using either the default
+ G4UrbanFluctuation, or the alternative G4UniversalFluctuation (more accurate
+ for thin targets), or G4LossFluctuationDummy (no fluctuations); new UI command
+ defines model of fluctuations for the full setup; inside user physics lists
+ it is possible to configure different fluctuation models per G4Region.
+- In G4UrbanMscModel, moving the safety computation before the algoritm of
+ step limitation in order to save few instructions; should not affect results.
+ Also, removed the computation and use of rangecut for step limitation,
+ providing some CPU speedup.
+- New G4TransportationWithMsc specialised tranportation process combined with
+ multiple-scattering, enabled by default with G4EmStandardPhysics_option1.
+ May be enabled for any EM physics via the new UI command. Added also
+ possibility to enable internal stepping.
+- New model and process for muon pair production by muon.
+- Use G4LinhardSorensenIonModel for GenericIon in physics-lists for
+ G4EmStandardPhysics_option3, G4EmStandardPhysics_option4,
+ G4EmPenelopePhysics and G4EmLivermorePhysics.
+- Set EPICS2017 cross sections to be the default for Livermore gamma
+ processes.
+- G4EmFluoDirectory: added new enumerator and introduced directory for
+ the fluorescence data as a parameter, allowing to use alternative
+ sets of atomic levels.
+- In optical physics, addded ability to calculate reflection/refraction from
+ thin film coating.
+- New utility class G4EmDNABuilder, providing instantiation of standard
+ and DNA processes/models in physics lists. Made G4EmDNAPhysics the base
+ class for DNA physics constructors. Optimised IRT-syn DNA model.
+- Added parameters in DNA including the chemical molecules and reaction
+ list involved in the radiolysis.
+- In G4DNA, incorporated model based on RPWBA to transport protons at
+ 100-300 MeV. Updated data structure to improve performance of the
+ mesoscopic model. Also added nitrogen models from PTra code.
+
+
+Hadronic physics
+
+- New integral method for hadronic processes (to take into account the change
+ of hadronic cross-sections along a step for charged hadrons due to the
+ decrease of hadron's kinetic energy by ionization loss.
+- Extended cross-sections for the computation of light anti-nuclei on hydrogen.
+ Extended nuclear cross-sections also for light hypernuclei and anti-hypernuclei
+ projectiles.
+- In coherent elastic hadronic model, added extensions for the simulation of
+ a light anti-hypernucleus projectile elastic scattering on a target nucleus.
+- Extended nuclear elastic and inelastic physics to support light hypernuclei
+ and anti-hypernuclei projectiles.
+ Implemented extension of the FTF model to deal with the annihilation of
+ light anti-hypernuclei, for all energies; general improvement of the
+ algorithm used to sample kinematical variables.
+ In coherent elastic hadronic model, added extension for the simulation of
+ light hypernuclei and anti-hypernuclei projectile elastic scattering on
+ target nuclei.
+- In hadronic de_excitation, added limitation (A < 30) on decay of unphysical
+ fragment, allowing for removal of light unphysical states and providing
+ improved isotope production for the spallation fragments.
+- Improved FTF fragmentation to better describe the production of strange
+ mesons and baryons in proton-proton interactions, as measured by the
+ NA61/SHINE Collaboration.
+ Also improved description of leading particle spectra in meson-nucleon
+ interactions.
+- Revised the mixing probability between vector mesons (rho0 and
+ omega), as well as the probabilities for the ratios between
+ pseudo-scalar and vector meson production for both FTF and QGS string
+ fragmentations, to improve the description of NA61/SHINE experimental
+ data.
+- New singleton class G4FTFTunings to allow to specify alternative sets
+ of FTF parameters, called "tunes"; added also specific UI messenger.
+ Currently, the feature is mostly meant for use in internal tests,
+ further study and development; in the future, such tunes may be offered
+ to users for specific studies.
+- Added option to G4HadronicParameters to control the diffraction
+ dissociation for nucleon projectile on target nucleus with baryon number
+ greater than 10: by default, both projectile and target diffraction are
+ switched off (but they are both active in the case of target nucleus with
+ baryon number below or equal to 10; if instead the flag is set to "true",
+ then both projectile and target diffraction are activated regardless of
+ the target nucleus).
+- Introduced de-excitation of fragments with lambda inside; extended upper
+ limit of atomic de-excitation from Z=100 to Z=104.
+- Implemented new process for tau-neutrino hadronic inelastic physics.
+
+
+Processes - General
+
+- Added flush() method to the fast simulation models, allowing to process the
+ input buffer of the fast simulation model before the end of an event;
+ triggered inside the event loop of G4EventManager, when the stack is empty.
+- Added a new utility method to access a process via sub-type.
+- Added extra virtual methods to G4VProcess base class, GetCreatorProcess()
+ and MinPrimaryEnergy() needed for treating new combined processes.
+- Added new virtual method G4VDiscreteProcess::GetCrossSection()
+ required in the implementation of integral approach.
+
+
+Physics Lists
+
+- New G4NeutronGeneralProcess combined process; enabled in QBBC physics-list.
+- In G4EmStandardPhysics_option3, use options providing more accurate
+ simulation without loss of CPU performance; significantly improving
+ fanoCavity results.
+- In G4EmStandardPhysics_option4, for low-energy electron ionisation
+ the Penelope model is used instead of the Livermore model.
+- For FTFP_BERT and FTFP_INCLXX physics lists, it is possible to enable the
+ transport of light hypernuclei and anti-hypernuclei, switched off by
+ default. When enabled, the following interactions are included:
+ a simplified treatment of weak decay; ionization and multiple scattering
+ for the charged particles; nuclear elastic scattering; nuclear inelastic
+ scattering, handled by either the FTF string model or by the INCL
+ intranuclear cascade model, with a very simplified treatment of nuclear
+ de-excitation.
+- In G4RadioactiveDecayPhysics time limit for radioactive decay is now
+ coherent with the limit used in the nuclear de-excitation. The default
+ limit of 1 ns may be changed via UI command.
+- All DNA physics lists are now combined with standard EM models. The
+ default upper energy limit of 300 MeV may be increased or
+ decreased. DNA physics may now work with radioactive decay.
+
+
+Visualization and Interfaces
+
+- ToolsSG drivers for X11, Xt and Qt (short name TSG): now fully functional
+ and supporting histogram plotting.
+- Fast rendering of complex meshes (special mesh rendering) for most drivers
+ (see advanced examples ICRP110 and 145).
+- "Twinkling" of volumes when centring (/vis/viewer/centreOn, etc.).
+- Cutaway (/vis/viewer/addCutawayPlane) now available for all
+ visualization drivers.
+
+
+Examples
+
+- New set of extended examples, implementing different setups showing how
+ to score particle fluences.
+- New example analysis/AnaEx03, showing usage of new analysis
+ commands for file management, writing histograms and n-tuples in a file
+ multiple times
+- In medical/dna, new example jetcounter, simulation of
+ a typical experiment with the Jet Counter nanodosemeter; new example
+ moleculardna, simulation of physics, physico-chemistry and
+ chemistry processes in DNA geometries.
+- The example field/field01 now demonstrates how to use the new
+ G4TransporationParameters class, and shows a full set of ways to control
+ the parameters for killing looping stable charged particles.
+- eFLASH_radiotherapy: new application simulating the beamline and energy
+ spectra based on the Triode Electron Gun Equipped ElectronFlash Manufactured
+ by Sordina Iort Technologies S.p.A. available at the Centro Pisano Flash
+ Radiotherapy (CPFR) in Pisa.
+- New advanced example implementing a ICRP145 human phantom.
+
+
+
+
+
+
+
+5. Expected effects on physics and computing performance
+
+Geometry & Field
+
+- A potential CPU time increase could be experienced due to the new maximum
+ value for relative accuracy of integration of charged particle tracks in
+ field (epsilon_max). This can be due to extra steps for low
+ energy electrons or muons moving in (near) vaccuum.
+ Potential remedies: either use (the more efficient) templated equation
+ of motion, stepper and driver, or investigate using an alternative driver
+ which treats long steps (those with a large angle arc of the helix) using
+ a separate helical method. To obtain it, use the four argument
+ G4ChordFinder constructor, with a 4th argument
+ stepperId=4.
+
+
+Electromagnetic physics
+
+- A new process of muon pair production by muons is available and can be
+ enabled via UI command or C++ interface through the G4EmExtraPhysics
+ constructor.
+- G4GammaGeneralProcess is used for gamma physics by default. It brings few
+ percent speedup depending on geometry setup and type of simulation.
+- Implemented usage of PhotoeffectBelowKShell flag, allowing to enable/disable
+ photo-electron production below K-shell of an atom; by default this is
+ enabled.
+
+
+Hadronic physics
+
+- FTFP_BERT pion showers have slightly (~0.5%) higher energy response and
+ (~2%) narrower lateral shapes with respect to release 11.0.3. QGSP_BERT
+ pion showers have slightly (~0.5%) lower energy response and (~2%) wider
+ lateral shapes. Comparing QGSP_BERT pion showers with those of FTFP_BERT,
+ they become closer to each other with respect previous versions, with
+ the QGSP_BERT pion showers still having slightly higher energy response,
+ significantly wider energy resolution, and longer and narrower shower
+ shapes with respect to those of FTFP_BERT.
+
+
+
+
+
+
+
+
+6. Known Run-Time Problems and Limitations
+For a complete list of outstanding run-time problems and to submit any
+problem you may find while running this version of Geant4, please refer
+to the
+Geant4 Problem
+Reporting System.
+
+
+
+
+
+
+
+7. Compilation Warnings
+
+There may be a few compilation warnings on some platforms.
+We do not believe that any of these lead to incorrect run-time behaviour.
+
+
+
+
+
+
+
+8. Geant4 Software License
+
+A Software License applies to the Geant4 code.
+Users must accept this license in order to use it.
+The details and the list of copyright holders is available at
+http://cern.ch/geant4/license
+and also in the text file LICENSE distributed with the source code.
+
+
+
+
+
+
+
+9. Detailed list of changes and fixes
+
+These are the main new features/fixes included in this release since the
+last patched public release (for more detailed lists of fixes/additions,
+please refer to the corresponding History files provided in most packages):
+
+
+
+
+Configuration
+
+- CMake
+
+ - Added support for Intel-icpx/icx compiler and updated compilation flags
+ for all Intel compilers.
+ - Enable ToolsSG and backends based on use of external libraries (Qt, X11,
+ Xm, Win32). Backends made non-mutally exclusive; removed
+ GEANT4_USE_TOOLSSG public CMake option and flag, since ToolsSG is now
+ built by default.
+ - Fixed bug in Qt3D viasualisation driver activation, based on report
+ in Users Forum.
+ - Avoid setting LD_LIBRARY_PATH configuration on MacOS; adding paths to
+ DLL into PATH on Windows.
+ - Corrected logic error in checking whether module is already composed.
+ - Deprecated tags `geant4_define_module`, `geant4_global_library_target`;
+ decouples the source code organisation and the module/library
+ composition commands; implementation reduced to emitting a CMake
+ warning message on what to replace with.
+ - Updated CMake build scripts in all modules, by replacing
+ geant4_global_library_target with direct file inclusion and
+ call to geant4_add_category to define library build from source
+ modules.
+ - Reorganised DLL import/export flags for single-module categories.
+ - Set default value of GEANT4_BUILD_BUILTIN_BACKTRACE to OFF.
+ - Do not use CMAKE_VERBOSE_MAKEFILE when building tests.
+ - Rationalized declaration and use of internal builds of required
+ externals CLHEP, zlib, expat, PTL and tools libraries.
+ - Support declaration and composition of header-only modules and
+ libraries.
+ - New geant4_module_check.py script to provide convenient interface for
+ developers and testing to check module/library cycles and dependency
+ inconsistencies. Filter out visualization driver modules from consistency
+ check for visualization/management module. Filter out C++ filesystem
+ library from checks.
+ - Adding geant4_module_sources command to enable appending of
+ headers/sources to a module after creation.
+ - Providing GEANT4_BUILD_ENABLE_ASSERTIONS option to enable assert() in
+ all release build modes (Release, RelWithDebInfo, MinSizeRel).
+ - Forward `CMAKE__FLAGS[_]` flags to `geant4_add_test` so that
+ a consistent set is used through the project.
+ - Promote INTERFACE module properties to PUBLIC when merging them into a
+ non-INTERFACE final target.
+ - Removed retired tasking module and library from configuration
+ files.
+ - Removed deprecated functions in G4DeveloperAPI and fixed typo that
+ prevented installation of headers.
+ - Removed obsolete and now longer built G4gl2ps target.
+ - Allow library composition to be overriden in developer builds.
+ - Do not use readlink -f to support pre-Monterey macOS systems.
+ - Adding -Og to GNU/Clang default debug flags.
+ - Copy .clang-tidy file to build directory to assist run-clang-tidy
+ reporting.
+ - In G4ConfigurePkgConfigHelpers.cmake, geant4-config.in for geant4-config
+ generation: adding new flag --features (add vtk and qt3d features);
+ allow use of md5sun if openssl missing; canonicalise prefix path.
+
- Added options --sh and --csh to geant4-config script.
+ - In G4ConfigureGNUMakeHelpers.cmake for geant4.[c]sh, geant4.bat
+ generation: allow full path source in zsh, sh; unset local variables at
+ the end; introducing GEANT4_DATA_DIR, with all data-set paths relative
+ to this.
+ - Added commands for working with categories analagous to module commands.
+ - Added required configuration to be able to generate DEB/RPM packages
+ with CPack.
+ - Use more standard install location for CMake files.
+ - Remove version from default installation directories.
+ - Rationalised interlinked PTL/TBB build options.
+ - G4ConfigureGNUMakeHelpers.cmake (geant4.[c]sh, geant4.bat generation):
+ use the environment variable GEANT4_DATA_DIR as top data directory; the
+ environment variables for individual dataset commented in scripts.
+ - Added source validation exception for G4FindDataDir generated header.
+ - Added -diag-disable=10441 CXX option to Intel compilers, to
+ disable icc compiler deprecation message.
+ - Removed Geant4Py from toolkit build, pointing users to upstream repository
+ when setting GEANT4_USE_PYTHON in CMake configuration.
+ - Keep file timestamps from unpacked data libraries in CMake 3.24 and
+ newer.
+ - Fix issue in Qt3D activation as reported on the Users Forum.
+ - Set CLHEP minimum version to 2.4.6.0 and VecGeom 1.2.0.
+ - New data sets G4EMLOW-8.2 and G4NDL-4.7 with new ThermalScattering data.
+ - Updated tag-IDs for 11.1.
+
+- GNUMake
+
+ - Added Linux-icx.gmk configuration for Intel OneAPI DPC++ compiler.
+ Updated compilation flags for Intel icc/icx compilers.
+ - Enable -pthread only for MT builds in other configurations.
+ - Retired tasking category and library from build.
+ - Removed obsolete G4gl2ps module and library from build.
+ - Added --gcc-toolchain option for CXX and CC in Linux-clang.
+ - Added -diag-disable=10441 option to Linux-icc, to disable
+ Intel/icc compiler deprecation message.
+ - Silence ld warnings in Darwin setups.
+ - G4VIS_BUILD.gmk, G4VIS_USE.gmk: handle vis/ToolsSG by default.
+ - Replaced use of deprecated sprintf() with snprintf() in liblist.c tool.
+ Fixed gcc compilation warnings.
+
+
+
+
+Analysis
+
+- Implemented support for writing analysis objects (histograms, profiles,
+ n-tuples) in a file multiple times: with Root output type, the object
+ cycle number is attributed automatically; with other output types that
+ do not support object cycles, the object name is appended with
+ _vN, where N is the number of the write cycle, when
+ the object is written more than once; no extension is added when the
+ object is written for the first time (cycle 0).
+- Added new UI commands for analysis file management, supporting also multiple
+ write with/without calling write and/or reset in between two runs:
+ /analysis/openFile, write, closeFile and reset
+ /analysis/setDefaultFileType.
+- Implemented new analysis manager List functions and associated commands:
+ /analysis/list [onlyIfActive],
+ /analysis/xy/list [onlyIfActive] where
+ xy = h1, h2, h3, p1, p2, ntuple.
+- Added UI commands for visualization: /analysis/hn|pn/getVector.
+- Internal changes:
+
+ - Replaced G4TNtupleDescription, G4RootPNtupleDescription structures with
+ classes more suitable for adding members for handling n-tuple cycles.
+ - Changed namespace for g4tools code from tools to toolx
+ for externals.
+ - Added G4RootRFile type = a tuple for the Root read file including its
+ directories, analogue to G4RootRFile for Root output, used now in the
+ G4RootRfileManager::fRFiles map instead of tools::rroot::file.
+ This allows deleting file directories in the class destructor, and
+ should fix a reported Coverity defect.
+ - Refactored analysis manager methods for file handling from the output
+ specific managers in the common implementation in G4ToolsAnalysisManger.
+ Besides code simplification, this guaranties identical behaviour with
+ generic analysis manager.
+ - Introduced a common implementation for histogram/profiles manager.
+ New classes:
+
+ - G4VTBaseHnManager - replaces G4VHn|PnManager.
+ - G4THnToolsManager - replaces G4H*|P*Manager classes.
+ - G4THnMessenger - replaces G4H*|P*Messenger class.
+ - G4HnDimension - helper type to manipulate ndim, xmin, xmake
+ parameters.
+
+ Updated classes:
+
+ - G4THnManager: added a vector of pairs of histogram and information
+ as a data member to simplify the access when both objects are used.
+ - Updated HnInformation structures functions to use compacted
+ parameters.
+ - Updated functions in G4AnalysisUtilities.
+ - In all messenger classes, replaced the usage of the analysis
+ messenger helper with private helper functions.
+ - G4Plot* classes moved from management in hntools.
+
+ Removed classes:
+
+ - G4VH1Manager, etc. for H2, H3, P1, P2.
+ - G4H1Manager, etc. for H2, H3, P1, P2.
+ - G4H1Messenger, etc. for H2, H3, P1, P2.
+ - G4ToolsAnalysisMassenger, G4FileMessenger.
+ - G4BaseHistoUtilities.
+
+ - Use geant4_category_modules in CMake script to optionally add G4hdf5
+ module to category.
+
+- Fixes:
+
+ - Fix in applying units in create and set UI
+ commands.
+ - Fixes in deleting files: do not delete (not empty) main n-tuple files
+ with generic analysis manager, delete empty n-tuple csv and xml files
+ created on the main thread.
+ Fix in deleting files (root): do not delete the final (merged) file
+ when only n-tuples are present.
+ - Added a protection against nullptr in
+ G4VAnalysisManager::GetNofNtuples(). Addressing problem report
+ #2518.
+ - Applied clang-tidy fixes.
+ - Fixed compilation warnings on gcc-12.
+ - Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+ - Fixed reported Coverity defects.
+
+
+
+
+Digitization & Hits
+
+- Added support for ntuple merging in G4TScoreNtupleWriter; it can be
+ activated with G4TScoreNtupleWriter::SetNtupleMerging().
+- Canonicalise implementations of custom new() and delete() operators that
+ use G4Allocator. Removed un-needed/duplicated checks on static allocator
+ creation in member functions.
+- Applying standard clang-tidy plus range-based for and Boolean
+ simplification fixes in scoring classes. General code tidy and modernization:
+ use consistent, grouped ordering of public-protected-private members; do not
+ override virtual members when no difference to base class implementation; use
+ delegating constructors to remove duplicated code; use C++ Boolean
+ true/false keywords.
+- G4VScoringMesh: fixed reported Coverity defects for use of auto&.
+ Some minor code cleanup.
+- Removed large commented-out blocks of dead codein utils module.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Electromagnetic Processes
+
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Resolved internal sub-modules dependency inconsistencies.
+- Adjoint:
+
+ - G4AdjointComptonModel, G4AdjointCSManager: use updated interface
+ to cross-section from G4VEmProcess.
+ - G4AdjointBremsstrahlungModel: use updated interface to G4EmModelManager.
+ - Fixed defects reported by Coverity in G4AdjointCSManager, to use
+ auto&.
+
+- DNA:
+
+ - Added G4DNAPolyNucleotideReactionProcess and G4VDNAHitModel classes for
+ DNA damage applications.
+ - Added nitrogen models from PTra code.
+ - Prefer pointer to const G4Material where possible.
+ Removed useless const_cast of G4VSensitiveDetector.
+ - Optimised IRT-syn model, use reaction radius and reaction type from the
+ reaction table.
+ - Fixed issue in IRT model: if the first IRTSampling won't give any reactions,
+ stop the simulation; no StepProcessor set.
+ Minor correction of IRT-syn model (chemistry): contact reactions should not
+ happen after 1 ps.
+ - Deleted G4VReactionType, G4DNAReactionTypeManager, G4DNAIRT_geometries,
+ G4DNATotallyDiffusionControlled and G4DNAPartiallyDiffusionControlled.
+ - G4ITTransportation: Make PrepareState() more function-like, expect
+ semicolon.
+ - G4DNAPolyNucleotideReactionProcess: some code restructuring.
+ - Added condition of water material for the OUTSIDE_OF_MOTHER_VOLUME
+ warning in G4DNAMolecularDissociation::DecayIt().
+ - Added protection in G4DNACPA100IonisationModel for cumulative
+ cross-section interpolation.
+ - Added protection for HighEnergyLimit/LowEnergyLimit in
+ G4DNARPWBAIonisationModel and G4DNARPWBAExcitationModel.
+ - Added flag OctreeFinder in IRT_syn's Initialize() method.
+ - Added parameters including the chemical molecules and reaction list
+ involved in the radiolysis.
+ - Modified the macro in G4Molecule and G4ITType for linker problems on
+ Windows.
+ - Save local instances for recurrent access to particle definition in
+ G4DNAMillerGreenExcitationModel, G4DNARuddIonisationExtendedModel and
+ G4DNARuddIonisationModel.
+ - Revised code to use G4Pow and G4Log consistently.
+ - In G4DNARuddIonisationExtendedModel, do not include ions that are not
+ defined in G4DNAGenericIonsManager; corrected DNA ion definitions.
+ Fixed common work between DNA physics and radioactive decay module;
+ modification of the model scaling. Relation to the carbon ion is used
+ for any ion, which has no data; low-energy limit is used now more
+ correctly; all ions are stopped but not killed, as they may have
+ radioactive decay at rest.
+ - Fix in G4KDTree algorithm. Addressing problem report
+ #2235.
+ Minor code cleanup.
+ - Added G4VUserBrownianAction class, used in G4DNABrownianTransportation
+ and in G4DNAMolecularDissociation.
+ - Use int64_t for molecules width integer types.
+ - Added fResetScavenger data member in G4SchedulerMessenger.
+ - Incorporation of model based on RPWBA to transport protons
+ at 100-300 MeV.
+ - Added G4DNARPWBAExcitationModel and G4DNARPWBAIonisationModel.
+ - Updated data structure to improve performance of the mesoscopic model.
+ - Change scavenging filter of the IRT beyond 1 us.
+ - Incorporation of models based on RPWBA (G4DNARPWBAExcitationModel and
+ G4DNARPWBAIonisationModel) to transport protons at 100-300 MeV.
+ - Updated data structure to improve performance of the mesoscopic
+ model.
+ - Use thread-local flag in G4VMoleculeCounter.
+ - Replaced std::getenv() calls for data variables with
+ G4FindDataDir() in data readers.
+
- G4DNAUeharaScreenedRutherfordElasticModel: code cleanup; introduced
+ low and high energy limit for the model; removed misleading
+ G4Exception.
+ - G4DNAExcitation, G4DNAVibExcitation, G4DNARotExcitation: class cleanup
+ according to the recent G4VEmProcess base class; model headers are moved
+ to source; introduced C++11 features.
+ - Defining G4CT_MAX_COUNT for changing "compile time counter" depth to fix
+ build errors on NVHPC compiler.
+ - Added missing headers inclusions for self-consistency.
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used in G4ITNavigator2.
+ - Fixed Coverity reported defects.
+
+- High Energy
+
+ - G4hPairProduction, G4hPairProductionModel: removed not needed methods.
+
+- Low Energy
+
+ - G4LivermoreGammaConversionModel, G4LivermorePhotoElectricModel and
+ G4LivermoreGammaConversion5DModel: set Spline interpolation for EPDL97.
+ - G4Rayleigh scattering moved boundary between low and high energy
+ table from 100 keV to 150 keV to be coherent with G4GammaGeneralProcess.
+ - G4UAtomicDeexcitation, G4AtomicTransitionManager, G4ShellData, G4AugerData:
+ added de-excitation for heavy elements Z=101-104; removed
+ commented lines; improved comments; improved code format;
+ use pre-increment.
+ - G4AtomicTransitionManager: read fluorescence data using new interface
+ G4EmParameters::FluoDirectory().
+ - G4PhotoEffectAngularGeneratorPolarized: include factor of 1/8 for L-shell
+ differential cross-section. Addressing problem report
+ #2293.
+ - G4LivermoreComptonModel: minor clean-up.
+ - Fixed use of potential uninitialised pointer in
+ G4AtomicDeexcitation::GenerateParticles(..).
+ - Replaced getenv() calls for data variables with G4FindDataDir()
+ in data readers.
+ - Fixed exception printout in Livermore models.
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used in G4BoldyshevTripletModel::SampleSecondaries() and in
+ G4Generator2BN::SampleDirection().
+ - Fixed Coverity warnings.
+ - Removed Latin-1 characters from description in banners.
+
+- Muons
+
+ - G4MuonToMuonPairProductionModel, G4MuonToMuonPairProduction: new
+ model and process for muon pair production by muon.
+ - G4MuIonisation: added selection of the model for energy loss
+ fluctuations. Use G4MuBetheBloch model above 0.2 MeV.
+ - G4MuBremsstrahlungModel: moved low energy limit from 1 GeV
+ to 100 MeV.
+ - G4MuPairProductionModel: moved low energy limit from 1 GeV
+ to 850 MeV.
+ Some code cleanup: formatting, removed extra space lines.
+ - G4MuPairProductionModel, G4MuPairProduction: reorganised methods;
+ use G4lrint.
+
+Standard
+
+ - G4UrbanMscModel: moving safety computation before step limitation
+ algorithms in order to save few instructions; should not affect results.
+ Optimised some code. Added two extra class members. Improved code comments.
+ Extended cache data with 5 variables for positrons;
+ removed unused headers; minor saving of instructions.
+ Removed computation and use of rangecut for step limitation: this change
+ affects only EM option3 physics, making results closer to option4 and
+ providing some CPU speedup.
+ - Fixed stopping power parameterisation below lowest energy point; apply
+ unit factor to material vector and not to data inside each element vector.
+ Implemented data tables for materials and not material-cut-couples;
+ provided non-zero dEdx for ions with Z > 80.
+ Included debug printouts protected by verbosity.
+ - G4eIonisation, G4hIonisation, G4ionIonisation: added selection of the
+ model for energy loss fluctuations.
+ - G4hIonisation, G4ionIonisation: updated initialisation to be coherent with
+ possible creation of combined DNA/standard physics-list: do not modify low
+ energy limit for a model; define high energy limit considering high energy
+ limit set in the physics-list and the mass of the particle.
+ - G4BetheBlochModel, G4BraggIonModel, G4LindhardSorensenIonModel: use the
+ same computation of effective charge and energy at a step inside method
+ CorrectionAlongStep(..); improved range of ions in the default EM physics
+ configuration.
+ - G4AtimaEnergyLossModel, G4BetheBlochModel, G4BraggIonModel,
+ G4LindhardSorensenIonModel: do not set effective charge to the model of
+ energy loss fluctuation inside CorrectionAlongStep(..) method, it is
+ done by G4VEnergyLossProcess. Addressing problem report
+ #2495.
+ - G4LindhardSorensenIonModel: fixed CorrectionAlongStep() computations
+ at low energy.
+ - G4PairProductionRelModel, G4eBremsstrahlungRelModel,
+ G4PairProductionRelModel and G4eBremsstrahlungRelModel: added inclusion
+ of headers of G4Exp, G4Pow to to make translation unit self-consistent.
+ - In G4WentzelVIRelModel, G4WentzelOKandVIxSection,
+ G4LindhardSorensenIonModel and G4ICRU49NuclearStoppingModel, use
+ G4AutoLock.
+ - G4PEEffectFluoModel: implemented usage of PhotoeffectBelowKShell
+ flag, allowing to enable/disable photo-electron production below K-shell
+ of an atom; by default this is enabled, so it affects the results; if
+ disabled, some CPU improvement may be expected.
+ - G4BetheHeitler5DModel: do not instantiate G4MuonPlus, G4MuonMinus inside
+ the model to allow usage of this class in physics lists without muons.
+ - G4eBremsstrahlung, G4hIonisation: improved initialisation.
+ - G4eBremsstrahlungRelModel, G4eBremParametrizedModel: code cosmetics.
+ - Run clang-tidy, use nullptr, default and auto keywords; removed
+ unneeded nullptr checks when deleting.
+ - Replaced getenv() calls for data variables with G4FindDataDir()
+ in data readers.
+ - Requires data-set G4EMLOW-8.2.
+
+Utils
+
+ - New G4TransportationWithMsc specialised transportation process; added
+ related flag to G4EmParameters.
+ - G4EmConfigurator implemented model per region for
+ G4TransportationWithMsc. Updated interfaces.
+ - G4EmTableType: added third peak energy in the data structure needed for
+ Bremsstrahlung.
+ - G4VEnergyLossProcess: fill data structure for Bremsstrahlung type of
+ cross-section only in the master thread; do not repeat it in each thread;
+ removed ineffective cache from run time computation of cross-section.
+ - G4EmParameters, G4EmParametersMessenger: added extra Boolean flag for
+ sampling of photoeffect below K-shell, which was introduced in ATLAS.
+ - G4EmParametersMessenger: improved instantiation order of UI directories;
+ directories are created only in the master thread.
+ Restored forgotten UI command to set number of bins per decade.
+ - G4EmModelManager: updated interface to Initialise() method;
+ removed obsolete method Update().
+ - G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering: use updated
+ method of G4EmModelManager.
+ - G4EmParametersMessenger: restored UI command
+ /process/em/integral.
+ - G4VEmProcess: updated methods to access cross-section at run time;
+ implemented new virtual method GetCrossSection(); removed unused
+ methods.
+ - G4EmProcessSubType: added extra types for muon pair production by muons
+ and dark particles Bremsstrahlung.
+ - G4EmCalculator: use updated method from G4VEmProcess.
+ Updated computation of ion dEdx. Addressing problem report
+ #2495.
+ Added extra flag applySmoothing to enable/disable smoothing
+ algorithms to connect low-energy and high energy models; code clean-up.
+ Fixed variable shadowing.
+ - G4LossTableManager: fixed selection of energy loss process used by
+ G4EmCalculator.
+ - G4EmUtility: a new utility class.
+ - G4VMultipleScattering: updated arguments for AddEmModel(..),
+ SetEmModel(..), and EmModel(..) methods from G4VEmModel* to
+ G4VMscModel*. Removed two virtual calls.
+ - G4VMscModel: added Boolean flag useSpline and setter to
+ allow choosing Spline for transport cross-section.
+ - G4LowEnergyEmProcessSubType: added sub-type ID (66) for DNAScavenger
+ process.
+ - G4EmTableUtil: new utility to perform common computations at
+ initialisation.
+ - G4VEmModel, G4EmCalculator, G4EmConfigurator: use G4EmUtility.
+ - G4VEmModel, G4VEmProcess, G4VEnergyLossProcess, G4VMultipleScattering
+ and G4LossTableManager: use new utiity methods; updated sampling of
+ random elements in compounds and random isotopes; code cleanup.
+ - G4EmLowEParameters: change default photon database to EPICS2017.
+ - G4VEmProcess, G4VEnergyLossProcess: for integral method, use master
+ thread cross-section type and pointers directly; simplifying
+ initialisation.
+ - G4EmParameters: update flag to tri-state for enabling it.
+ Added extra parameter: type of fluctuation model.
+ - G4EmFluoDirectory: added new enumerator.
+ - G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger:
+ introduced directory for the fluorescence data as a parameter, added
+ new UI command, improved information printout.
+ - G4EmFluoDirectory: added new enumerator.
+ - G4EmParameters, G4EmLowEParameters, G4EmLowEParametersMessenger:
+ introduced directory for the fluorescence data as a parameter;
+ added new UI command; improved information printout.
+ - G4EmParametersMessenger: added extra UI command to define fluctuations
+ model.
+ - G4VEnergyLossProcess: moved out common computations to G4EmTableUtil;
+ use G4EmDataHandler and removed unused headers/methods. Fixed trivial
+ Coverity warnings. For ions, compute effective charge pre-step and
+ set this value to the model of energy loss fluctuations.
+ - G4VEnergyLossProcess, G4EmDataHandler: improved StorePhysicsTable(..)
+ method and debug printouts.
+ - Code cleanup with clang-tidy: use default constructors; nullptr,
+ auto and using keywords.
+
+Xrays
+
+ - G4VXTRenergyLoss: fixed bug in the angle range for fMaxThetaTR.
+ - Code cleanup with clang-tidy: use default constructors; nullptr
+ and auto keywords.
+
+
+
+
+Error Propagation
+
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Event
+
+- Added call to G4GlobalFastSimulationManager::Flush() method in the event
+ loop.
+- Canonicalise implementations of custom new() and delete() operators that
+ use G4Allocator.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Externals
+
+- Rationalising externals builds to decouple them from the core
+ module/category definitions.
+- CLHEP:
+
+ - Updated to CLHEP version 2.4.6.2.
+ - Resolved gcc-12 warnings in Evaluator source.
+ - Fixed inconsistencies in Evaluator internal set of units.
+ - Add cstdint header where uint32_t and
+ uint64_t are used.
+ - Applied patch for building on MinGW.
+ Based on GitHub PR#51.
+
+- Expat:
+
+ - Updated source and build scripts to expat-2.4.9 sources from upstream.
+
+- G4tools:
+
+ - Updated to version 6.1.0
+ - Fixed compilation warnings on Intel compiler and Coverity defects.
+
- Use thread-safe version of gl2ps-1.4.2.
+ In gl2psPrintPostScriptPixmap(): pass greyscale, nbit in arguments
+ to avoid a dead code issue; in gl2psPDFgroupListInit(), fixed issue
+ for uninitialized pointer read; removed commented out code.
+ - sg/text: corrections in update_sg() due to copy-paste error.
+ - Moved g4tools code externals from tools to toolx
+ module. Concerns code related to Qt, Windows, X11, Xt, OpenGL, hdf5,
+ expat, mpi, zlib.
+ - In toolx/X11/base_session, check in show_window() that the window is
+ not already mapped.
+ - Fixed compilation warnings on Intel compilers.
+ - Applied patch for building on MinGW.
+ Based on GitHub PR#51.
+
+- PTL:
+
+ - Updated PTL to version v2.3.3.
+ - New/improved support for initialization and finalization routines
+ in ThreadPool.
+ - Threading: fix in GetNumberOfPhysicalCpus(), to never return zero.
+ - Fixed verbose message to cerr to be protected within verbosity level.
+ - Fixes for C++20 compilation warnings and updates to build scripts.
+ - Removed outdated TiMemory implementation.
+ - Make copy explicit in range loop.
+ - General code cleanup/tidy.
+ - Minor fixes for macOS/Clang and use as a subproject.
+ - Updated CMake install directory for PTL to match recent changes
+ in default install directories in Geant4.
+ - Use any existing value of PTL_SANITIZER_TYPE to set the cache value
+ to prevent override.
+ - Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+ - Coverity fixes.
+
+- ZLIB:
+
+ - Updated source to zlib-1.2.12 sources from upstream, retaining prior
+ Geant4 patches.
+ - Suppressed deprecated-non-prototype warnings for compilers that check
+ this.
+ - Applied patch for Zlib, to address Valgrind warnings.
+ Based on
+ GitHub PR#43.
+
+
+
+
+G3toG4
+
+- Replaced sprintf with std::to_string to address macOS 13 deprecation
+ warnings.
+- Fixed compilation warnings on Intel/icc compiler for deprecated conversion
+ of string literal to char* in G3EleTable.
+- Fixed compilation warning on Intel/icx compiler for variable set
+ but not used in clparse source code.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+General Processes
+
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Biasing
+
+ - Fixed defects reported by Coverity in G4BOptnLeadingParticle, to use
+ auto&.
+ - Fixed compilation warning on Intel/icx compiler for variable set but not
+ used in G4GeometrySampler.
+
+- Cuts
+
+ - G4ProductionCuts: removed unnecessary thread-local variables; code clean-up
+ and simplified.
+
+- Management
+
+ - G4VDiscreteProcess: added virtual method GetCrossSection()
+ needed for integral approach both in hadronics and EM modules.
+ Added virtual method MinPrimaryEnergy(..).
+ - G4VRestDiscreteProcess, G4VRestProcess, G4VRestContinuesDiscreteProcess:
+ added protection against arithmetic operations with DBL_MAX.
+ Addressing problem report
+ #2452.
+ - G4VProcess: introduced new virtual method GetCreatorProcess().
+ - Fixed compilation warnings on Intel/icx compiler for variable set
+ but not used in G4ProcessTableMessenger.
+
+- Optical
+
+ - G4OpBoundaryProcess: calculating reflection/refraction from thin film
+ coating.
+ Issuing warning when step size is slightly larger than geometry
+ tolerance, in which case boundary scattering may be incorrect.
+ Addressing problem report
+ #2510.
+ - Code cleanup with clang-tidy: use default constructors; auto keyword;
+ remove void function argument; don't check for nullptr
+ before delete; use operator==() for string comparisons.
+ Prefer pointer to const G4Material where possible.
+
+- Parameterisation
+
+ - Added flush() method to the fast simulation model. This method allows to
+ process the input buffer of the fast simulation model before the end of an
+ event. It is used when particles are grouped together before the
+ processing. The 'flush' is triggered inside the event loop of
+ G4EventManager, when the stack is empty. The fast simulation model may
+ add secondaries to the stack, which will then be processed by Geant4.
+ - G4FastStep: code clean-up; delete copy constructor and operator=().
+ - G4FastSimHitMaker: making it compatible to command-based scorer.
+
+- Solid State
+
+ - In G4LatticeReader, replaced getenv() calls for data variables
+ with G4FindDataDir()
+
+- Transportation
+
+ - Revised implementation of G4CoupledTransportation: now inheriting from
+ G4Transportation and removed duplicated variables and methods; use new
+ constant kMassNavigatorId from G4TransportationManager.
+ - New class G4TransportationParameters to hold looper parameters & others.
+ This class has to be created in master to hold the values of all looper
+ parameters for G4Transportation and derived classes.
+ - G4CoupledTransportation: set flags from G4Transportation: replaced
+ fFirstStepInAnyVolume with fFirstStepInVolume; replaced
+ fAnyGeometryLimitedStep with fGeometryLimitedStep;
+ removed wrong check in case of zero steps.
+ - G4Transportation: removed problem check in case of zero steps; set step
+ status on volume boundary. Removed non-working check for any field.
+ - Moved G4UserSpecialCuts to physics_lists/constructors/limiters
+ module.
+
- Removed useless const_cast of G4VSensitiveDetector.
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used.
+
+
+
+
+Geometry
+
+- Fixed compilation warnings on Intel-icx compiler for variables set
+ but not used.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Magnetic Field
+
+ - Revised G4FieldManager to ensure that epsilon_min/_max parameters are
+ less than a 'maximum accepted' accuracy (now=0.02) to ensure robust
+ behaviour of the integration. Improved their set methods, adding warnings
+ with corrective behaviour, and a fatal exception in case of values
+ outside the accepted range. To cope with needs of legacy applications
+ or existing needs for performance, the value of the 'ceiling' maximum
+ accepted accuracy can be modified using the new static method
+ G4FieldManager::SetMaxAcceptedEpsilon(maxAccept, softFail)
+ but must remain under or equal to a final ceiling currently of
+ fMaxFinalEpsilon=0.02.
+ - Introduced G4BorisScheme and G4BorisDriver, that implement the Boris
+ integration scheme for motion in an electromagnetic field. It is
+ a 2nd order symplectic integration method, created as part
+ of GSoC 2022.
+
+- Management
+
+ - Get rid of heap allocations in G4BoundingEnvelope.
+ - G4ReflectedSolid: added GetCubicVolume(), GetSurfaceArea().
+ - Added headers for directly used classes from
+ global/HEPGeometry.
+
+- Navigation
+
+ - The /geometry/run/test UI command can now check for overlaps in
+ parallel worlds if /geometry/run/check_parallel is set to
+ true.
+ - Improved diagnostic message in G4MultiLevelLocator, now printing the
+ stored information on trial integration steps in one error case.
+ Refresh candidate intersection point when needed.
+ - G4Navigator: minor code improvements in ComputeSafety(), ComputeStep(),
+ and LocateGlobalPointAndSetup().
+ - Added constant kMassNavigatorId in G4TransportationManager and
+ make use of it in G4SafetyHelper.
+
+- Solids (Boolean)
+
+ - G4DisplacedSolid: added GetCubicVolume(), GetSurfaceArea().
+ - G4SubtractionSolid: fixed problem of non-zero volume for null resulting
+ objects in GetCubicVolume().
+
+- Solids (CSG)
+
+ - G4Cons: define private enums within unnamed namespace, to overcome
+ C++ ODR (One Definition Rule) violation.
+
+- Solids (Specific)
+
+ - G4GenericTrap: implemented calculation of volume using analytical
+ expression in GetCubicVolume(); in GetSurfaceArea(), improved
+ calculation of the area of lateral faces; removed private function
+ GetFaceCubicVolume(); private functions GetFaceSurfaceArea(),
+ GetTwistedFaceSurfaceArea() replaced with private function
+ GetLateralFaceArea().
+ - G4Ellipsoid: in LateralSurfaceArea(), enhanced calculation of the
+ lateral surface area.
+ - G4VTwistedFaceted, G4TwistedBox, G4TwistedTrd: optimised calculation
+ of volume and surface area.
+ - G4VTwistedFaceted: fCubicVolume, fSurfaceArea made protected;
+ GetCubicVolume() and GetSurfaceArea() no longer inlined and moved to
+ source.
+ - G4TwistedTubs: implemented GetSurfaceArea() based on analytical
+ expressions; added private functions GetLateralArea(),
+ GetPhiCutArea().
+ - G4Hype: use analytical expression in GetCubicVolume() and
+ GetSurfaceArea().
+ - G4VTwistedFaceted: use numerical evaluation of a single integral to
+ calculate lateral face surface area.
+ - G4ExtrudedSolid, G4UExtrudedSolid: added default values for parameters
+ in the constructor with two z-sections. Added default constructor to
+ ZSection.
+
+
+
+
+Global
+
+- Define G4lrint as std::lrint; removed unused G4lint and G4rint.
+- Imported from tasking module all core interfaces that only depend on
+ PTL.
+- Corrected G4ErrorPropagatorData destructor.
+- Additional clang-tidy fixes for header-only code.
+- Moved implementation details of G4Exception to source file.
+ Removed obsolete re-declaration of G4Exception in G4Timer.
+- G4FindDataDir: correction for windows runtime, G4MULTITHREADED flag.
+ Use the environment variable GEANT4_DATA_DIR as top data dir.
+- Applied patch for building on MinGW.
+ Based on GitHub PR#51.
+- Fixed compilation warning on Intel-icx compiler for variable set but not
+ used in G4AnalyticalPolSolver::QuarticRoots().
+- Make dataset environment variables optional in CMake builds.
+- Removed obsolete CMakeLists.txt script in management module.
+ Declare HEPGeometry dependencies as INTERFACE as the module is
+ header-only. Removed dependency on TBB which is not a direct dependency
+ of the global category.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Updated date of release for 11.1.
+
+
+
+Graphical Representations
+
+- HepPolyhedron, G4Polyhedron: added new constructors taking vertices and
+ faces; added derived classes HepPolyhedronTetMesh, G4PolyhedronTetMesh;
+ added SetVertex(), SetFacet() functions and made SetReferences() and
+ InvertFacets() public methods. Implemented JoinCoplanarFacets() function,
+ move constructor and move assignment operator.
+- Implemented faster version of HepPolyhedronTetMesh.
+- Revised HepPolyhedronEllipsoid, fixed visibility of edges in case of cut
+ ellipsoid.
+- G4Visible: added "user" data member fInfo from G4VMarker, with
+ access and operator<<() functions, intended to offer the user/developer
+ a way of communicating information.
+- G4VVisManager: added new virtual function DrawGeometry(), drawing a geometry
+ tree starting at the specified physical volume; this base class implementation
+ is empty, i.e., the derived class implementation is not forced.
+- Fixed compilation warning on Intel/icx compiler for variable set
+ but not used in HepPolyhedron::FindNodeNormal().
+ Fixed minor Coverity defect in operator<<().
+- G4VisExtent: in Transform(), use const auto& to avoid copying.
+- G4VisAttributes: fixed formatting in operator<<().
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Applied clang-tidy fixes to the code.
+
+
+
+Hadronic Processes
+
+- Replaced getenv() calls for data variables with G4FindDataDir() in data
+ readers.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Updated dependencies in CMake script to address warnings from
+ consistency check.
+- Cross Sections
+
+ - G4CrossSectionDataStore, G4NeutronElasticXS, G4NeutronInelasticXS:
+ added interfaces needed for G4NeutronGeneralProcess.
+ Implemented new interfaces in G4NeutronCaptureXS.
+ - G4TauNeutrinoNucleusTotXsc: new cross-section for tau-neutrinos, based on
+ energy scaled cross-section of muon-neutrinos..
+ - G4NeutronElasticXS, G4NeutronInelasticXS, G4NeutronCaptureXS: code cleanup;
+ use G4AutoLock.
+ - G4ParticleInelasticXS: code cleanup; use G4AutoLock.
+ Fixed cross-section calculation. Addressing problem report
+ #2498.
+ - G4VCrossSectionDataSet: added extra interfaces with G4ParticleDefinition
+ and kinetic energy.
+ - G4ComponentAntiNuclNuclearXS: fix and extension in methods
+ GetTotalElementCrossSection() and GetInelasticElementCrossSection();
+ a bug was causing undefined values for, respectively, the total and
+ inelastic cross-sections of anti-proton interactions with light target
+ nuclei (d, H3, He3 and He4); extended to simulation of a light
+ anti-hypernucleus projectile scattering on a target nucleus.
+ Fixed Coverity warning, added checks against nullptr pointers.
+ - G4ComponentGGNuclNuclXsc, G4ComponentGGHadronNuclXsc: extension to
+ light hyper-nuclei on hydrogen.
+ - G4CrossSectionDataStore, G4VCrossSectionDataSet: removed unused methods.
+
+- Management
+
+ - G4HadronicProcess: implemented integral method.
+ Make access to target nucleus public needed for neutron general process.
+ - G4HadXSTypes, G4HadXSHelper: new helper classes.
+ - G4HadronicProcessType: added fNeutronGeneral.
+ - G4HadronicProcessStore: extended Dump() method for hyper-triton and
+ anti_hyper-triton.
+
+- Processes
+
+ - G4NeutronGeneralProcess: new combined process; make it work with QBBC
+ physics-list.
+ - G4TauNeutrinoNucleusProcess: new process for tau-neutrino hadronic
+ inelastic physics.
+ - G4HadronElasticProcess: extended debug printout.
+ - G4NeutronCaptureProcess: avoid double instantiation of the cross-section.
+ - Prefer pointer to const G4Material where possible.
+
+- Utilities
+
+ - G4Fragment: added IsLongLived flag and Get/Set methods needed
+ for the de-excitation module; clean-up inline methods.
+ Fixed computation of binding energy for hypernuclei; added
+ a new private method to recompute ground state mass, excitation energy
+ and to check consistency of input; left inlined only simple methods;
+ added new methods SetZAandMomentum(..) and RecomputeGroundStateMass();
+ improved comments and warning messages.
+ - G4Nucleus: corrected method GetN_asInt() for the case of hypernuclei.
+ - G4HadronicParameters: added flags for switching on/off the integral
+ approach for hadron elastic and, independently, inelastic processes;
+ by default, it is enabled for inelastic.
+ Added flag to enable general neutron process.
+ Moved G4Threading header to source.
+ - Added option to G4HadronicParameters to control the diffraction
+ dissociation for nucleon projectile on target nucleus with baryon
+ number greater than 10: by default, both projectile and target
+ diffraction are switched off (but they are both active in the case
+ of target nucleus with baryon number below or equal to 10; if instead
+ the flag is set to true, then both projectile and target
+ diffraction are activated regardless of the target nucleus).
+ - G4KineticTrack, G4HadSecondary, G4ReactionProduct, G4DecayKineticTracks,
+ G4DecayStrongResonances: propagate the information on parent resonance.
+ - G4HadDataHandler: new data class.
+ - G4NuclearPolarization: fixed Coverity warning.
+
+- Abla
+
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used in G4AblaDataDefs header.
+
+- Bertini Cascade
+
+ - G4NumIntTwoBodyAngDst: corrected incomplete initialization of a vector.
+ Addressing problem report
+ #2515.
+ - G4TwoBodyAngularDist: corrected the charge exchange reaction of pion+ on
+ neutron producing in the final state pion0 and proton.
+ Addressing problem report
+ #2516.
+ - Fixed wrong comparison between two arrays in findCrossSection(..) for
+ G4CascadePPChannel, G4CascadeNPChanneland G4CascadeNNChannel.
+ - Fixed compilation warning on gcc-12.
+
+- Binary Cascade
+
+ - G4GeneratorPrecompoundInterface, G4BinaryCascade: propagate the
+ information on parent resonance (in the ApplyYourself() method, from
+ G4ReactionProduct to G4HadSecondary; in other methods, from
+ G4KineticTrack to G4ReactionProduct).
+ - G4GeneratorPrecompoundInterface: in PropagateNuclNucl() method, in the
+ case of anti-nucleus projectile, convert also lambdas into anti-lambdas
+ after the de-excitation (which assumes a projectile nucleus).
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used in G4BinaryCascade.
+
+- De-excitation
+
+ - G4Evaporation, G4UnstableFragmentBreakUp: completed fix about production
+ of unphysical fragments; improved debug printout. Addressing problem report
+ #2355.
+ - G4EvaporationChannel, G4Evaporation: added limitation (A < 30)
+ on decay of unphysical fragments, allowing for removal of light unphysical
+ states and providing improved isotope production for the spallation
+ fragments.
+ - G4EvaporationChannel, G4EvaporationProbability, G4VEmissionProbability,
+ G4VCoulombBarrier, G4CoulombBarrier: use new method from G4Fragment.
+ - G4VEvaporationChannel, G4EvaporationChannel, G4VEmissionProbability
+ and G4EvaporationProbability: improved inverse cross-section
+ parameterisation at threshold.
+ - G4PhotonEvaporation: fixed situation when excited fragments are created
+ with excitation energy not corresponding to level energies from
+ G4LEVELGAMMADATA. Addressing problem report
+ #2434.
+ Also fixing event non-reproducibility for the case when radioactive
+ decay is enabled on top of any physics list.
+ Simplified handling of floating levels. For floating levels check if
+ levels with the same energy can be used for sampling transitions;
+ improved use of mutex; code clean-up.
+ - G4EvaporationProbability: reduced usage of cache.
+ - G4ExcitationHandler: use IsLongLived() flag from G4Fragment to decide
+ if the de-excitation of the fragment should be stopped.
+ Introduced de-excitation of fragments with lambda inside. Added
+ protections that prevents potential crashes and large energy
+ non-conservations in case of hypernuclei and anti-hypernuclei
+ projectiles. Added extra sanity check for negative value of lambda
+ inside a fragment.
+ Note: there are still a few warnings of rejected candidate final-states
+ with off-shell masses and few GeV energy non-conservations (implying a
+ resampling of the final-state) in the case of light hypernuclei and
+ anti-hypernuclei projectiles, that need further investigation.
+ - G4AtomicTransition: extended upper limit of atomic de-excitation
+ from Z=100 to Z=104.
+ - G4FermiCoulombBarrier: new class for Coulomb barrier according to
+ prescription. Updated G4FermiDecayProbability and G4FermiFragment
+ accordingly.
+ - G4VEmissionProbability: limit number of bins for numerical integration
+ to 50.
+ - G4VEmissionProbability: updated sampling of the emitted fragment energy
+ needed. Addressing problem report
+ #2443.
+ Fixed sampling of the tail of distributions; added numerical protections.
+ Stronger limit on accuracy of integrated probability; improved debug
+ printout.
+ - G4CoulombBarrier: tuned parameters.
+ - G4LevelManger, G4NuclLevel: removed verbose printouts; code clean-up.
+ - G4NuclearLevelData: use G4AutoLock.
+ - Use G4BestUnit in G4DeexPrecoParameters::StreamInfo().
+ - G4StatMFChannel: fixes in the solver of the equation of motion of the
+ multi-fragmentation model.<
+ - Code cleanup.
+
+- Elastic scattering
+
+ - G4AntiNuclElastic: extension of the SampleInvariantT() method for the
+ simulation of a light anti-hypernucleus projectile elastic scattering
+ on a target nucleus.
+ Note: most of the considered light anti-hypernuclei projectiles have
+ baryon number equal to -4 : it is assumed that their properties are similar
+ to anti-He4, therefore their elastic scattering is set-up as for anti-He4
+ elastic nuclear scattering. These properties can be improved in the future
+ if theoretical estimations will be available.
+
+- Electromagnetic Dissociation
+
+ - G4EMDissociation: updated according to G4Fragment modifications.
+
+- Fission
+
+ - G4FissLib, G4LFission: use consistent thresholds for relative (10% instead
+ of 5%) and absolute (350 GeV instead of 250 GeV) energy non-conservation
+ check.
+
+- INCLXX
+
+ - G4INCLXXInterface: introduced a protection against unphysical nuclear
+ remnants (i.e. unbound systems) and, if this is the case, resample the
+ collision.
+ - G4INCLParticle, G4INCLEventInfo, G4INCLNucleus, G4INCLDeltaDecayChannel,
+ G4INCLXXInterface: set and propagate the information on parent resonance.
+ - G4INCLPiNElasticChannel: erase the information on parent resonance in
+ the case of charge exchange.
+ - G4INCLPiNToDeltaChannel, G4INCLPiNToOmegaChannel, G4INCLPiNToEtaChannel,
+ G4INCLPiNToMultiPionsChannel, G4INCLNpiToLKpiChannel,
+ G4INCLNpiToLK2piChannel, G4INCLNpiToNKKbChannel, G4INCLNpiToSK2piChannel,
+ G4INCLNpiToSKpiChannel, G4INCLNpiToSKChannel, G4INCLNpiToLKChannel,
+ G4INCLNpiToMissingStrangenessChannel: erase the information on parent
+ resonance in inelastic channels (where the nucleon and pion initial-state
+ objects are re-used for the final state).
+ - Fixed compilation warnings on Intel/icx compiler for variables set
+ but not used.
+
+- Lend
+
+ - Fixed potential use of pointer after free in nf_utilities/nfu_realloc(..)
+ function.
+ - Applied patch for building on MinGW.
+ Based on GitHub PR#51.
+ - Replaced use of sprintf() with snprintf(), to fix deprecation compilation
+ warnings on macOS-13 SDK.
+
+- Lepto-nuclear
+
+ - G4(A)NuTauMucleusNc(Cc)Models: new final-state models for tau and
+ anti-tau neutral and charged current neutrino-nucleus interactions.
+ - G4ElectroVDNuclearModel: added protections against null pointers to gamma
+ cross-section and material, responsible for rare crashes.
+
+- Particle High Precision
+
+ - Removed environment variables G4PHPTEST, G4PHPTEST2 and NeutronHPCapture,
+ associated getenv() calls and associated debug code, as no longer used and
+ found to slow down the code significantly.
+ Addressing problem report
+ #2501.
+ - G4ParticleHPContAngularPar: added protection against zero probability
+ for both discrete and continuous emission.
+ - G4ParticleHPThermalScatteringNames: updated to use new ThermalScattering
+ data in G4NDL-4.7.
+ - Fixed compilation warnings on Intel/icx compiler for variable set
+ but not used in G4ParticleHPInelasticCompFS and G4ParticleHPFFFissionFS.
+ - Use auto for iterators in
+ G4ParticleHPFFFissionFS::GetAFissionFragment().
+ - Fixed Coverity reports.
+
+- Parton-String
+
+ - G4FTFModel: implemented extension of the model to deal with the
+ annihilation of light anti-hypernuclei.
+ In methods AdjustNucleonsAlgorithm_beforeSampling() and
+ ComputeNucleusProperties(), check if the residual is a single nucleon
+ (or lambda) or a pair of nucleons (or lambdas); also use the absolute
+ value of the nuclear residual charge to take into account the case of
+ anti-nuclei projectiles.
+ - G4FTFAnnihilation: reorganization of Create2QuarkAntiQuarkStrings() and
+ Create3QuarkAntiQuarkStrings() methods, in order to better handle
+ unphysical configurations that need to be rejected.
+ The algorithm has been also optimised by changing the order of the
+ sampling: light-cone variables are sampled first, then transverse momenta.
+ The positions of quark and anti-quark in strings have been corrected: this
+ is expected to improve the kinematical properties of the produced
+ hadrons.
+ - G4FTFTunings: new singleton class to allow the possibility to specify
+ alternative sets of FTF parameters, called "tunes".
+ Moved into this class some special, internal classes, useful for tuning
+ of parameters, that were originally in G4FTFParameters.
+ - G4FTFTuningsMessenger: new messenger class for G4FTFTunings.
+ - Allow control of diffraction for baryon number greater than 10 in
+ G4FPFParameters. The option comes from G4HadronicParameters and the
+ default behaviour remains the same (i.e. off).
+ Use of the new G4FTFTunings class; instead of having one, single set of
+ parameters, it has now an array of set of parameters, with each element
+ corresponding to one specific "tune".
+ Clean-up of the class by moving to G4FTFTunings some code.
+ - G4HadronBuilder: added a new argument in constructor, and a new data
+ member to the class. This is needed to set a special mixing of
+ pseudo-scalar and vector mesons for s-sbar mesons. Introduced to
+ describe phi-meson production in proton-proton interactions measured
+ by NA61/SHINE.
+ - G4VLongitudinalStringDecay: tuned the probability of pseudo-scalar meson
+ production, to describe K*0 meson production in proton-proton
+ interactions according to NA61/SHINE data. Introduced also a new
+ parameter (probability of pseudo-scalar meson production in s-sbar
+ mesons) to increase the phi-meson yield in proton-proton interactions.
+ Fixed a bug in mixing eta_prime and phi mesons in the quark systems
+ d-dbar, u-ubar and s-sbar.
+ Brought back the value (0.5) of the mixing between (rho0 and omega)
+ vector mesons as it was originally before version 10.0. This should
+ describe better NA61/SHINE experimental data. The change has some effect
+ on the hadronic showers, giving that the various vector mesons have
+ different decay rates into neutral pions.
+ - G4VPartonStringModel: added debugging information on the number of
+ lambdas for residual projectile hypernuclei.
+ - G4HadronBuilder, G4VLongitudinalStringDecay, G4LundStringFragmentation,
+ G4QGSMFragmentation, G4ExcitedStringDecay: in order to describe the
+ NA61/SHINE data on K*0 and phi mesons production in proton-proton
+ interactions, different probabilities were introduced for the ratios
+ between pseudo-scalar and vector meson production. These ratios are the
+ following: for ordinary mesons from u- and d- quarks, the ratio is 0.5/0.5;
+ for strange mesons the ratio is 0.4/0.6; for mesons with hidden strangeness
+ (as for phi), the ratio is 0.3/0.7.
+ This approach is similar to the one adopted in Pythia8.
+ It is also assumed that the probabilities for hidden strangeness (0.3/0.7)
+ apply for mesons with hidden charm and beauty.
+ - G4LundStringFragmentation: introduced few changes for a special
+ treatment of the last string decay in the case of ss-q or
+ ss-qq, ss-sbar sbar last string decay. This improves the
+ yield of anti-Xi hyperons in proton-proton interactions
+ according to the NA61/SHINE data.
+ Moreover, some parameters have been tuned to better describe the
+ NA61/SHINE data on various particles produced in proton-proton
+ interactions.
+ - G4DiffractiveExcitation: improved ExciteParticipants_doChargeExchange()
+ method: for a projectile meson in the case of quark exchange, a more
+ correct ratio between pseudo-scalar and vector mesons is included; the
+ pion after the exchange can transform into pi0, eta, eta', rho0
+ and omega mesons. This allows to improve the description of leading
+ particle spectra in meson-nucleon interactions.
+ - G4DiffractiveSplitableHadron: fixed rare warnings about large energy
+ non-conservations (which are rejected and require resampling) seen
+ with FTF when dealing with charm and bottom hadron inelastic nuclear
+ interactions.
+ - Fixed compilation warning on Intel/icx compiler for variables set
+ but not used in G4QGSMSplitableHadron and G4QGSParticipants.
+
+- Pre-equilibrium
+
+ - G4PreCompoundModel: in the case of hypernuclei do not perform pre-compound
+ emission but only equilibrium emission.
+
+- QMD
+
+ - Fixed compilation warning on Intel/icx compiler for variable set
+ but not used in G4QMDMeanField.
+
+- Radioactive Decay
+
+ - G4ECDecay: added protection against negative neutrino energy.
+ Addressing problem report
+ #2509.
+ Removed negative neutrino energy warning but keep protection
+ against negative values. Negative values are due to negative Q values
+ from ENSDF for only four nuclides.
+ - G4ECDecay, G4ITDecay: extended upper limit of atomic de-excitation
+ from Z=100 to Z=104.
+ - G4RadioactiveDecay: removed SetICM() method, as deprecated for some time
+ and no longer used. ICM now set exclusively in G4PhotonEvaporation.
+ Added printout of the flag of atomic relaxation.
+ - G4RadioactiveDecayMessenger: removed icmCmd corresponding to SetICM()
+ above.
+ - Cosmetic changes in G4RadioactiveDecay::StreamInfo().
+
+- Theo_High_Energy
+
+ - G4TheoFSGenerator: propagate the information on parent resonance (in
+ the ApplyYourself() method, from G4ReactionProduct to G4HadSecondary).
+ Simplified treatment for low-energy inelastic nuclear reactions of
+ light hypernuclei (needed because Bertini and Binary intra-nuclear
+ cascade models are not applicable for these projectiles).
+ Note that for light anti-hypernuclei, FTF works fine down to zero
+ kinetic energy.
+
+
+
+
+Intercoms
+
+- Applied set of clang-tidy modernize, readability and performance fixes.
+- Always expand path argument to ExecuteMacroFile() using FindMacroPath().
+ Based on GitHub PR#40.
+
- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Interfaces
+
+- G4InteractorMessenger: prevent propagation of /gui/* commands
+ to workers.
+- Applied patch for building on MinGW.
+ Based on GitHub PR#51.
+- Fixed compilation warning on Intel compiler for shadowing data.
+- Use geant4_module_sources to add optional sources in CMake script.
+ Added required G4VIS_USE_VTK_QT flag here instead of Vtk
+ visualization module. Added dependency on Qt5 Widgets to common
+ sub-module CMake script.
+- Fixed compilation warnings on Intel/icc for deprecated conversion of string
+ literal to char* in G4UIXm.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Materials
+
+- G4Material: added an extra check on number of atoms in method
+ AddElementByNumberOfAtoms(..). Addressing problem report
+ #2514.
+- G4MaterialPropertyVector, G4OpticalMaterialProperties: organise material
+ property vectors in increasing order of energy. Modified from
+ GitHub PR#42.
+- G4MaterialPropertiesIndex, G4MaterialPropertiesTable, G4SurfaceProperty:
+ added parameters to specify optical photon transport through thin film
+ coating.
+- G4AtomicShell: added extra data for Z=101-104.
+- G4AtomicShell, G4AtomicShell_XDB_EADL: changed format of internal tables
+ allowing to see differences in a clearer way.
+- Corrected G4UCNMicroRoughnessHelper destructor.
+- G4NistMaterialBuilder: fixed bio-medical material descriptions for
+ G4_ADENINE, G4_GUANINE, G4_CYTOSINE, G4_THYMINE, G4_DEOXYRIBOSE, and
+ added G4_PHOSPHORIC_ACID.
+- Applied set of clang-tidy modernize, readability and performance fixes.
+- G4NistManager, G4NistMaterialBuilder, G4NistElementBuilder: use G4AutoLock
+ for code simplification.
+- Replaced getenv() calls for data variables with G4FindDataDir() in
+ G4IonStoppingData, G4MicroElecMaterialStructure and G4OpticalSurface.
+- G4CrystalExtension: fixed Coverity warning and minor clean-up.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Parameterisations
+
+- GFLASH:
+
+ - Fixed compilation warning on Intel/icx compiler for variable set
+ but not used in GFlashShowerModel::ElectronDoIt().
+ - Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+
+Particles
+
+- Changed halflife threshold for nuclide creation to be consistent with
+ lifetimes in nuclear de-excitation code. In G4NuclideTable, changed
+ threshold_of_halflife from 1000 ns to 1 ns.
+- In G4NuclieTable, replaced getenv() calls for data variables with
+ G4FindDataDir().
+- G4NuclideTableMessenger: added command
+ /particle/manage/nuclide/min_meanlife corresponding to
+ G4NuclideTable::SetMeanLifeThreshold().
+ Default minimum mean life is 1.0 ns.
+ In /particle/nuclideTable/min_halflife changed default minimum
+ half-life to 0.693 ns.
+- Changed half-life threshold for nuclide creation to be consistent with
+ lifetimes in nuclear de-excitation code; in G4NuclideTable constructor,
+ change threshold_of_halflife from 1000 ns to
+ 1 ns.
+- Use nuclide mean-life instead of half-life in G4NuclideTable in order
+ to be consistent with ENSDFSTATE data, which uses mean-life. Provided
+ two new methods, SetMeanLifeThreshold() and GetMeanLifeThreshold() so
+ that the life-times can be accessed as either half-life or mean-life.
+- G4Triton, G4AntiTriton: corrected the lifetime value for triton and
+ anti_triton: the half-life (12.32 years) was incorrectly used instead of
+ the mean lifetime (17.774 years) for triton, whereas the anti_triton was
+ incorrectly treated as stable.
+- Removed obsolete and unused G4DynamicParticleFastVector type alias.
+- G4HyperNucleiProperties: optimization improvement and minor clean-up.
+- Replaced reinterpret_cast with static_cast where
+ possible.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Fixed compilation warning on Intel/icx compiler for variable set
+ but never used in G4MuonRadiativeDecayChannelWithSpin.
+- Minor code formatting.
+
+
+
+Persistency
+
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- mctruth: added headers for directly used classes from
+ global/HEPGeometry.
+
+
+
+Physics lists
+
+- Updated public/private dependencies for consistency in CMake script
+ and added missing dependency
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+- Constructors:
+
+ - Replaced getenv() calls for data variables with G4FindDataDir()
+ in data readers.
+ - decay
+
+ - G4DecayPhysics: added instantiation of singletons for physics.
+ - Added calls to G4EmBuilder and G4PhysListUtil in order to prevent from
+ warnings on decays of light hypernuclei, in the case of simplified
+ custom Physics Lists.
+
+ - electromagnetic:
+
+ - G4EmModelActivator: fixed mechanism to define PAI model per region.
+ - In G4EmStandardPhysics_option3, G4EmStandardPhysics_option4,
+ G4EmPenelopePhysics, G4EmStandardPhysicsSS, and G4EmLivermorePhysics
+ use G4LinhardSorensenIonModel for GenericIon.
+ - Adding possibility to enable new G4TransportationWithMsc for
+ multiple-scattering. Enabled by default in G4EmStandardPhysics_option1.
+ - G4EmBuilder: enable internal stepping in G4TransportationWithMsc
+ if requested.
+ Added G4Lamda, G4AntiLambda and G4PionZero to the minimal EM
+ particle list to avoid warnings issued due to new hypernuclei.
+ Added e- and mu- neutrino and anti-neutrino.
+ Added minimal list of EM standard particles to all DNA
+ physics variants, to allow enabling of radioactive decay; provides
+ correct printout of EM processes and models. Addressing problem report
+ #2412.
+ - G4EmBuilder, G4EmDNAPhysics: instantiate singletons for physics.
+ - G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4:
+ adopt identical configuration for msc, muon, hadron, and ion physics.
+ - G4EmLivermorePhysics, G4EmPenelopePhysics, G4EmStandardPhysics_option4,
+ G4EmStandardPhysics: selection of the model for energy loss
+ fluctuation is included in ionisation processes according to the type
+ defined in G4EmParameters.
+ - G4EmStandardPhysics, G4EmStandardPhysics_option3,
+ G4EmStandardPhysics_option4: use G4GammaGeneralProcess by default.
+ - G4GammaGeneralProcess: implemented new method GetCreatorProcess().
+ Apply Spline interpolation for tables at low energy (<150 keV)
+ and at high energy (> 100 MeV).
+ - G4EmStandardPhysics_option4: use Penelope ionisation model for e-
+ below 100 keV.
+ - G4EmBuilder: use check on process sub-type, do not substitute
+ G4CoupledTransportation with G4TransportationWithMsc.
+ - G4EmDNABuilder: new utility class, which provides instantiation of
+ standard and DNA processes/models; this reduces code duplication for
+ DNA physics, energy intervals for DNA models are defined in one place.
+ Added option2,3,4,6,8 configurations.
+ Added extra utility methods to find or to build electron processes.
+ Introduced constant upper limit of 1 MeV for DNA models;
+ introduced constant upper limit of 2 MeV for standard
+ low-energy ionisation; use the same upper limit for DNA excitation
+ and ionisation.
+ Enabling combination of DNA and standard physics processes.
+ - Increased upper limit of DNA proton/ion physics from 100 MeV
+ to 300 MeV in all DNA constructors.
+ - Made G4EmDNAPhysics the base class for DNA physics constructors.
+ Added interface to G4EmDNABuilder.
+ - G4EmDNABuilder, G4EmDNAPhysicsActivator: make consistent the
+ configuration of DNA physics on top of standard physics.
+ - Simplified code in G4EmDNAPhysics_option1, G4EmDNAPhysics_stationary,
+ G4EmDNAPhysics_option5 and G4EmDNAPhysics_stationary_option4.
+ - G4EmDNAPhysics_option6, G4EmDNAPhysics_option8: use "fast" option.
+ - G4EmDNAPhysics_option7, G4EmDNAPhysics_stationary_option6,
+ G4EmDNAPhysics_option3, G4EmDNAPhysics_stationary_option2: simplified
+ code.
+ - Added G4DNABrownianTransportation, SBS and IRT_syn models in
+ G4EmDNAChemistry_option3.
+ - Added used headers in chemistry builders.
+
+ - gamma_lepto_nuclear:
+
+ - G4EmExtraPhysics, G4EmMessenger: added muon to muon pair process;
+ use C++11 keywords; suppressed broadcasting of UI commands; moved
+ initialisation class members to the headers.
+ - G4EmExtraPhysics: introduced tau-neutrino nucleus processes.
+
+ - hadron_elastic:
+
+ - G4HadronElasticPhysics: use G4HadProcesses utility to build neutron
+ elastic, which allows to use an option of neutron general process.
+ Extended nuclear elastic for light hypernuclei and anti-hypernuclei
+ projectiles.
+
+ - hadron_inelastic:
+
+ - G4HadronPhysicsFTFP_BERT, G4HadronPhysicsINCLXX: extension to inelastic
+ nuclear interactions of light hypernuclei (with either FTFP only or
+ FTFP+INCLXX) and anti-hypernuclei (with only FTFP for all energies).
+ Notice that the QGSP string model cannot currently handle nuclear
+ projectiles of any kind.
+ - G4HadronInelasticQBBC: use G4HadProcesses utility to build neutron
+ elastic, which allows to use an option of neutron general process.
+
+ - limiters:
+
+ - G4SpecialCuts: added setting of process type fGeneral and
+ sub type.
+ - G4MinEkineCuts: removed setting of process type fUserDefined.
+ - G4NeutronTrackingCut: use enumerator for neutron general process instead
+ of hard-coded number. Added check if G4NeutronGeneralProcess is defined to
+ avoid double instantiation of the same cut.
+ - Moved G4UserSpecialCuts class from transportation module.
+ - Fixed defects reported by Coverity in G4GenericBiasingPhysics, to use
+ auto&.
+
+
+- Util:
+
+ - G4PhysListUtil: added new utility method to access a process via
+ sub-type, simplified methods to access hadron processes.
+ Use dynamic_cast instead of static_cast.
+ In the method InitialiseParameters(), call the singleton
+ G4FTFTunings::Instance() to allow the setting of a FTF tune via UI commands
+ at PreInit state. Extended InitialiseParameters() method.
+ - G4PhysListUtil, G4HadProcesses: added extra methods needed for neutron
+ general process initialisation. Use enumerator for neutron general process
+ instead of hard-coded number in G4PhysListUtil.
+ - Added internal dependencies on hadronic/deexcitation/photon_evaporation,
+ run and processes/management modules.
+
+
+
+
+Readout
+
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Run
+
+- Imported implementations of task-based interfaces/implementations from
+ the tasking module. See History.tasking file for History
+ of tasking code.
+- Added new G4DNAScavenger in PhysicsListHelper for DNA processes.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Tasking
+
+- Retired module. Contents merged in global and run
+ categories.
+
+
+
+Track & Tracking
+
+- General clean-up of all ParticleChange classes: delete copy constructors
+ and operator=(); removed unused methods; removed tracking cut to 1 eV
+ implemented in G4ParticleChangeForLoss; make more effective handling of
+ secondary tracks; substitute G4ParticleChangeForRadDecay with
+ G4ParticleChangeForDecay; make all derived classes/methods final;
+ removed commented code and corrected comments; removed duplicated code.
+ Improved diagnostic for problems with primary track parameters or with
+ secondary tracks; ensuring kinetic energy to be positive after a step;
+ improved comments.
+- G4SteppingManager: removed G4Exception with JustWarning severity for the case
+ of no active at rest processes existing. Addressing problem report
+ #2493.
+- In G4ParticleChangeForTransport, simplified UpdateStepForAlongStep(),
+ assuming that transportation is always the first process.
+ Apply proposed step length; further simplified UpdateStepForAlongStep()
+ method, assuming that transportation is always the first process.
+- G4ParticleChangeForMSC: substituted virtual initialisation by inline
+ method. Fixed crash in /tracking/verbose 6.
+- Only set step status of fGeomBoundary when on volume boundary.
+- In G4SteppingManager, refactor and simplify processing of secondaries;
+ use new virtual method GetCreatorProcess() when processing secondaries.
+ Corrected ProcessDefinedStep for AtRest case.
+ Removed check on cuts and removed dependence of tracking from EM physics;
+ real implementation of ApplyCut() is done within EM physics classes.
+ Merged G4SteppingManager translation units.
+- G4Track: added methods to get/set information on (short-lived) parent
+ resonance.
+- Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+
+
+
+Visualization
+
+- General
+
+ - Removed obsolete gl2ps subcategory and externals
+ module.
+ - Fixed compilation warnings for implicit type conversions on
+ macOS/XCode 14.1.
+ - Introduced G4warn (temporarly the same as G4cout) as new output stream
+ for visualization code, and used in place of G4cerr.
+ - Updated build scripts and internal dependencies.
+
+- Management
+
+ - Implemented Twinkling, i.e, the rhythmic variation of brightness of
+ given touchables: in G4VVisCommand added Twinkle() method; exploit
+ twinkling in UI commands in G4VisCommandsTouchable and
+ G4VisCommandsViewer.
+ - Implemented generic cutaway. Prior to this, cutaways were implemented
+ only in OpenGL by using OpenGL's clipping plane feature. This still
+ pertains for OpenGL since it is very fast, but here cutaways are
+ implemented using Boolean operations in a reasonably robust and
+ reliable way. Based on the initial motivation and implementation on
+ the management side from
+ GitHub PR#53.
+ - Re-worked and rationalised special mesh rendering utilities.
+ The idea is that these are "standard" functions that are optional.
+ They are optimised for OpenGL but they also work fine for ToolsSG and
+ Qt3D. An attempt to draw a mesh with any other driver will result in a
+ warning and only the container will be drawn. Other drivers will have to
+ implement their own AddCompound(...G4Mesh...) function or choose to use
+ the standard functions or some thereof.
+ - Take advantage of recent developments in HepPolyhedron for rendering:
+ conversion of tetrahedra to enclosing polyhedron removing inner surfaces;
+ conversion of boxes to enclosing polyhedron removing inner surfaces.
+ Also take advantage of developments in G4PhysicalVolumeModel:
+ when a mesh has been found, an artificial node is created and added
+ to the PVPath whose physical volume points to the parameterisation.
+ - G4VisCommandsViewer: /vis/viewer/centreOn and
+ centreAndZoomInOn:
+ only fly and twinkle if 'KernelVisitElapsedTimeSeconds < 0.1'.
+ Introducing /vis/viewer/resetCameraParameters UI command, resetting
+ *only* the camera parameters (view direction, etc.).
+ - G4VSceneHandler: added utility function Draw3DRectMeshAsDots(..); for a
+ rectangular 3-D mesh, draw as coloured dots, one dot randomly placed in
+ each visible cell. Tidy Draw3DRectMeshAsDots().
+ Allow for multiple meshes in a single screen; relevant for special mesh
+ rendering.
+ Implemented GetPointInBox() and GetPointInTet() to sample a random point
+ inside a box and a tetrahedron.
+ Exploit move operator when creating polyhedra for Special Mesh Rendering.
+ Numerous improvements to comments and messaging.
+ - Introducing drawing of parameterised tetrahedral mesh.
+ G4VSceneHandler::DrawTetMeshAsDots(): default tet mesh drawing.
+ - Ensure X-geometry string is copied correctly to a new viewer.
+ - G4VisCommandsCompound: improved command guidance of /vis/open.
+ - G4VisCommandsViewer: improved command guidance of
+ /vis/viewer/create.
+ - G4VisParameters: added new accessors IsWindowLocationHintX/YNegative().
+ - G4VisCommandsTouchable: augment /vis/touchable/draw, added Boolean
+ argument: if true, draw the extent (bounding box); Default false.
+ In /vis/touchable/dump, fix missing dump of vis attributes.
+ - G4VViewer: added data member and access method for
+ KernelVisitElapsedTimeSeconds. This is measured in
+ ProcessView().
+ - In G4VisExecutive, introducing 'FALLBACK' drivers for TSGQt and VTKQt.
+ A FALLBACK vis driver is selected if the user chooses a UI session that
+ is not compatible with the requested driver. For example, if the user
+ has built Geant4 with Qt, the TSGQt driver will be available and be
+ the "default" driver, so /vis/open TSG will attempt to open
+ TSGQt. But if the user has chosen a dumb terminal session, the vis
+ manager selects TSGX11, for example, instead. Added TOOLSSG_OFFSCREEN.
+ - Improved messaging for the case that a driver is not found in the
+ candidate list.
+ - Changed G4cout to G4warn in those cases where 'verbosity >= warnings'.
+ - Introduced compound command: /vis/plot
.
+ This is the first part of a programme to facilitate the drawing of
+ plots (if any have been registered with the analysis manager) at the
+ end of a run. At the moment only the ToolsSG vis driver can offer this,
+ so the vis manager issues appropriate messages.
+ Later, we hope to introduce something like /vis/reviewPlots,
+ which will allow the user to view all available plots in sequence.
+ - G4VisManager: added access method: IsEnabled(). Register the new
+ commands. In EndOfEvent(), protect view checking with mutex lock
+ in MT mode, and deal better with the case of scene requesting no kept
+ events (greatly speeds plotting).
+ Only print list of available histograms if more than one per category.
+ GeometryHasChanged() is a method that is called by the run
+ manager. Sometimes the user chooses to delete the existing geometry
+ tree and ask the run manager to construct a new detector geometry.
+ Previously existing vis models of the geometry become invalid and the
+ vis manager had to pick up the new geometry.
+ The vis manager removes invalid models from the vis scenes and now adds
+ the new version of the world back in. Other types of models, trajectory
+ drawing, for example, if specified in the original scene, are kept in
+ the new version of the scene.
+ Implemented G4VisManager::DrawGeometry(), drawing a geometry tree starting
+ at the specified physical volume.
+ - G4VisCommandsSceneAdd: new command /vis/scene/add/plotter,
+ to add G4PlotterModel to end-of-run list.
+ Adapted /vis/scene/add/volume UI command to new
+ G4PhysicalVolumesSearchScene.
+ - G4Scene: redefined IsEmpty().
+ - G4VisCommandsViewerSet: improved messaging for
+ /vis/viewer/set/lineWidth; this simply prints a message saying
+ how *actually* to change line width.
+ - Introducing /vis/viewer/set/specialMeshRenderingOption
+ UI command; "dots" draw one dot per mesh point; "surfaces" group mesh
+ points by colour and material and compute the outer surface or envelope,
+ removing internal shared faces. So far, only the "dots" option is
+ implemented for some drivers.
+ - Introducing /vis/viewer/set/lineWidth UI command, a do-nothing command
+ that tells how to change line width.
+ - Implemented /vis/reviewPlots UI command.
+ - G4VisCommandsSceneAdd: changed the default width of axes added to the
+ scene with automatic length and width determination.
+ - G4VisCommandsCompound, G4VisCommandsSceneAdd, G4VisCommandsTouchable,
+ G4VisCommandsViewer: fixed control of verbosity.
+
+- Modeling
+
+ - G4Mesh: augmented available data for 3D rectangular mesh.
+ Programmed for parameterised tetrahedron mesh.
+ Simplified algorithm: now finding 1-deep rectangular meshes such as
+ G4PhantomParameterisation.
+ A simple parameterisation may only be one level; nested
+ parameterisations may be 2- or 3-level.
+ - G4PhysicalVolumeModel: added LocalExtent and GlobalExtent
+ to method GetAttDefs().
+ Added modifiers; for AddCompound(mesh), provide an artificial node as
+ an (optional) hook for anything that might be generated.
+ Implemented generic cutaway: in G4PhysicalVolumeModel::DescribeSolid(),
+ simplified clipping, sectioning and cutaway code.
+ - Migrated G4PhysicalVolumesSearchScene and G4TouchablePropertiesScene
+ to use fTouchableFullPVPath.
+ - Retired G4BoundingSphereScene and G4PhysicalVolumeSearchScene.
+ G4BoundingSphereScene accumulated bounding spheres and often
+ overestimated the extent of the scene; it is now superseded by
+ G4BoundingExtentScene. G4BoundingExtentScene deals directly with
+ extents, which makes it neater and more tightly estimates the overall
+ extent of the scene.
+ - G4PhysicalVolumeSearchScene is superseded by
+ G4PhysicalVolumesSearchScene. G4PhysicalVolumesSearchScene finds all
+ occurrences of a physical volume and returns a "findings vector".
+ Removed last ambiguous and misleading argument in the constructor.
+ - G4PseudoScene: added AddCompound(const G4Mesh&) method; if special mesh
+ rendering is set, this catches mesh candidates (certain types of
+ parameterisations) and avoids descending into the parameterisations.
+ - G4PhysicalVolumeModel: added SetSpecialMeshRendering(true) to avoid
+ traversing (certain types of) parameterisations (see above).
+ Eliminated goto statements.
+ - Allow arrow proportions to be greater than 1/100. Produces more visible
+ arrows for field visualisation and also obeys the input parameters more
+ closely.
+
+- FukuiRenderer
+
+ - Replaced use of sprintf() with snprintf(), to fix deprecation compilation
+ warnings on macOS-13 SDK.
+
+- gMocren
+
+ - G4GMocrenFileSceneHandler: removed redundant header inclusion.
+
+- OpenGL
+
+ - G4OpenGLSceneHandler: in AddCompound(..), use base class utility
+ G4VSceneHandler::Draw3DRectMeshAsDots(..); for parameterised tetrahedron
+ mesh, call default G4VSceneHandler::DrawTetMeshAsDots(); added missing
+ return statement for unimplemented cases; code tidy.
+ - G4OpenGLStoredViewer, G4OpenGLStoredQtViewer: added check on special
+ mesh rendering option in CompareForKernelVisit().
+ - Updated comment about requesting a kernel visit when cutaway mode
+ changes (noted but not relevant because OGL does its own cutaways).
+ - Minor tidy: speed cutaway check in G4OpenGLViewer::SetView().
+ - Retired display list re-use and display list limit.
+ - Added G4gl2ps, a class frontend to tools/gl2ps intended to
+ be used by OpenGL and OpenInventor; does not depend directly of OpenGL.
+ - Have G4OpenGLViewer use the thread safe tools/gl2ps.
+ - Use StandardSpecialMeshRendering(mesh).
+ - Fixed compiler warnings in the use of G4OpenGLQtViewer::toggleProjection.
+ - Replaced use of sprintf() with snprintf(), to fix deprecation compilation
+ warnings on macOS-13 SDK.
+ - Fixed compilation warnings on Intel/icc compiler for deprecated conversion
+ of string literal to char* in G4OpenGLXmConvenienceRoutines and
+ G4OpenGLXmViewer.
+
+- OpenInventor
+
+ - Implemented special mesh rendering.
+ - Request kernel visit when cutaway mode changes in G4OpenInventorViewer.
+ - G4OpenInventorQtExaminerViewer: for macOS only, disabled the mouse wheel
+ event handler to fix the trackpad zoom direction issue.
+ - G4OpenInventorViewer: removed misleading obsolete comment regarding
+ kernel visit in the case of a change in vis attribute modifiers.
+ Added check on special mesh rendering option in CompareForKernelVisit().
+ - G4OpenInventorQtExaminerViewer: fixed compilation warning on Intel
+ compiler for shadowing data.
+ - Have G4OpenGLOpenInventorViewer and SoGL2PSAction using the thread safe
+ tools/gl2ps.
+ - Replaced use of sprintf() and vsprintf() with snprintf() and vsnprintf()
+ respectively, to fix deprecation compilation warnings on macOS-13 SDK.
+ - Fixed compilation warnings on Intel/icc compiler for deprecated conversion
+ of string literal to char* in G4OpenInventorQtExaminerViewer.
+ - Fixed compilation warning on gcc-12.
+
+Qt3D
+
+ - G4Qt3DViewer: re-implemented wheelEvent() for perspective projection;
+ now taking into account the extent of the scene.
+ Added check on special mesh rendering option in CompareForKernelVisit().
+ - G4Qt3DSceneHandler:in AddCompound(..), use base class utility
+ G4VSceneHandler::Draw3DRectMeshAsDots(..).
+ - Request kernel visit when cutaway mode changes in G4Qt3DViewer.
+ - G4Qt3DSceneHandler::AddCompound(): for parameterised tetrahedron mesh,
+ call default G4VSceneHandler::DrawTetMeshAsDots().
+ - G4Qt3DSceneHandler: updated AddPrimitive(..) to current usage.
+ Commented out line elimination in AddPrimitive(..), as too expensive for
+ a large polyhedron; allow the graphics-reps utilities to optimise this.
+ Use StandardSpecialMeshRendering(mesh).
+ - Fixed compilation warnings about shadowing.
+
+ToolsSG
+
+ - New offscreen sub-driver.
+ - G4ToolsSGViewer: handle ambient lightning; handling zb_png and zb_jpeg
+ formats; corrected fSGViewer->set_clear_color().
+ - Request kernel visit when cutaway mode changes in G4ToolsSGViewer.
+ - G4ToolsSGViewer: reimplement wheel_rotate() for perspective projection;
+ now taking into account the extent of the scene.
+ Currently, the ToolsSG viewer cannot draw trajectories in MT mode, so
+ in function SwitchToMasterThread() we draw any events that have been
+ kept by the vis manager. It fixes an issue where plots were being drawn
+ twice.
+ - Reactivate G4ToolsSGQtGLES::IsUISessionCompatible(), paves way for
+ permitted instantiation of multiple TSG drivers.
+ - Access G4VVisCommand::G4VisManager pointer through static function
+ GetVisManager() to prevent DLL issues on Windows.
+ - G4ToolsSGSceneHandler: in AddPrimitive(), define dots as a single pixel;
+ Use GetMarkerSize() for circles and squares.
+ In AddCompound(): for parameterised tetrahedron mesh, call default
+ G4VSceneHandler::DrawTetMeshAsDots().
+ Adding warning message if plot cannot be found.
+ In SetPlotterHistograms(), suppressed /control/verbose
+ messages for /analysis/*/get* commands.
+ In AddPrimitive(..), comment out common line elimination, as too
+ expensive for a large polyhedron; allow the graphics-reps utilities to
+ optimise this. Use StandardSpecialMeshRendering(mesh).
+ - Changed namespace for g4tools code from "tools" to "toolx" for externals.
+
+Vtk
+
+ - Moved setting of G4VIS_USE_VTK_QT flag to interfaces module.
+ - Replaced reinterpret_cast with static_cast where possible.
+
+
+
+
+Environments
+
+- Removed g4py and zmq builtin environments.
+ The source and support for these have moved to GitHub under:
+
+
+
+
+Data sets
+
+- New low-energy data set version, G4EMLOW-8.2:
+
+ - New files for Nitrogen cross-sections for dna models.
+ - New files for fluorescence and Auger electron transitions for
+ heavy elements Z=101-104.
+ - Added DNA files for the RPWBA models.
+
+- New neutron data files for low energy neutron transport with
+ thermal cross-sections G4NDL-4.7:
+
+ - Updated ThermalScattering component, obtained from thermal
+ scattering data from JEFF-3.3, and adding the ENDF/BVIII-0 materials
+ not in JEFF-3.3, coupled to JEFF-3.3 nuclear cross-sections.
+
+
+
+
+Examples
+
+- Updated reference outputs, macros, READMEs and scripts.
+- Fixes for Doxygen documentation and coding guidelines.
+- Fixed compilation warnings on Intel-icx compiler for set but unused
+ variables.
+- advanced
+
+ - Updated to use default MixMax random generator.
+ - air_shower
+
+ - Define all material properties in order of increasing energy.
+
+ - amsEcal
+
+ - Prefer pointer to const G4Material where possible.
+
+ - brachytherapy
+
+ - Migration to C++11/14/17 features.
+
+ - CaTS
+
+ - Fixed compilation warnings on latest gcc compilers.
+
+ - ChargeExchangeMC
+
+ - CexmcHadronicProcess: disabled integral method, as not applicable to
+ this example.
+
+ - eFLASH_radiotherapy
+
+ - New application simulating the beamline and energy spectra based on the
+ Triode Electron Gun Equipped ElectronFlash Manufactured by Sordina Iort
+ Technologies S.p.A. available at the Centro Pisano Flash Radiotherapy (CPFR)
+ at Pisa. The linac is able to provide low-energy electron flash beams and
+ is currently the first machine installed in Italy capable of reaching
+ FLASH dose-rate (MGy/s) and extremely high dose per pulse DPP).
+
+ - eRosita
+
+ - Migrated to use C++17 Standard. General code refactoring.
+ - Removed obsolete physics classes.
+ - Updated physics-list with Livermore and Penelope models.
+ - Replaced getenv() calls for data variables with
+ G4FindDataDir().
+
+ - gammaray_telescope
+
+ - Migrated to use C++17 Standard. General code refactoring.
+
+ - hadrontherapy
+
+ - Prefer pointer to const G4Material where possible.
+
+ - human_phantom
+
+ - Fixed GDML description of the phantom.
+ - Code review.
+
+ - ICRP110_HumanPhantoms
+
+ - Use special mesh rendering.
+ - Corrected error in reading the first voxels (in x=0, y=0).
+ - Migration to C++11/14/17 features.
+
+ - ICRP145_HumanPhantoms
+
+ - New example implementing a ICRP145 human phantom, based on
+ related ICRP publication.
+
+ - iort_therapy
+
+ - Simplified calls to SetProductionCut().
+
+ - medical_linac
+
+ - Replaced sprintf() use with std::to_string(); sprintf() deprecated
+ on macOS-13, leading to compilation warnings.
+
+ - microbeam
+
+ - Moved back to original switching field value.
+
+ - radioprotection
+
+ - Added diamondTelescope detector. Messengers modified accordingly.
+ - Added python scripts to analyze the spectra files and calculate
+ microdosimetric Quantities.
+
+ - STCyclotron
+
+ - Removed no-op lines; simplified calls to SetProductionCut().
+
+
+- basic
+
+ - Applied clang-tidy checks.
+ - B1
+
+ - In vis.mac, commented TSG_OFFSCREEN usage example.
+
+ - B3
+
+ - Set new analysis file name for the second run in run2.mac to avoid
+ overwriting the output from the first run.
+ - Activated merging of n-tuples with score n-tuple writer.
+ - Added commented setting in run2.mac.
+
+ - B4
+
+ - Activated merging of n-tuples with score n-tuple writer in B4d.
+
+
+- extended
+
+ - analysis
+
+ - Use G4Accummulables for RunAction summary data in AnaEx01 and AnaEx02
+ to get them merged in MT mode.
+ - Reordered runs in test macro (run the test run first to get meaningful
+ output at the end).
+ - Updated AnaEx01 and AnaEx02 classes in shared with modifications applied
+ in AnaEx03.
+ - AnaEx03
+
+ - New example demonstrating usage of analysis commands for file
+ management, in particular writing histograms and n-tuples in a
+ file multiple times.
+
+
+ - biasing
+
+ - Removed redundant code (forward declarations, includes) from GB*
+ examples.
+
+ - common
+
+ - Applied new coding guidelines and added tests.
+
+ - electromagnetic
+
+ - TestEm1
+
+ - In PhysicsList::AddRadioactiveDecay(), enable atomic de-excitation.
+ Addressing problem report
+ #2494.
+ - Added three new macros to play with StepFunction(): pRange,
+ alphaRange, ionRange.
+ - PhysicsList::AddRadioactiveDecay(): updated lifeTime threshold.
+ - Updated photoelec.mac macro.
+
+ - TestEm3
+
+ - Prefer pointer to const G4Material where possible.
+
+ - TestEm5
+
+ - Allow changing the gun position via UI command.
+ - Added summary on gamma processes.
+
+ - TestEm7
+
+ - Make local EM physics the same as EM physics option3 with
+ G4IonParameterizedModel.
+
+ - TestEm9
+
+ - Updated all user actions: more correct count of creator processes;
+ use C++11 keywords; removed not needed headers; moved ScoreNewTrack(..)
+ from Tracking to Stepping action class.
+ - Removed verbose data member in PhysListEmStandard, use the
+ verboseLevel defined in the base class for this purpose.
+
+ - TestEm11
+
+ - PhysicsList::AddRadioactiveDecay(): updated lifeTime threshold.
+
+ - TestEm15
+
+ - Added description of UI commands to control G4BetheHeitler5DModel.
+
+ - TestEm16
+
+ - Minor cleanup in vis.mac and run01.mac to make MT output more
+ readable.
+
+ - TestEm17
+
+ - Added new process of muon pair production by muons; extended analysis
+ and added new histograms.
+
+
+ - errorpropagation
+
+ - New examples category and moved existing example (now renamed
+ errProp) therein.
+
+ - eventgenerator
+
+ - particleGun
+
+ - Updated reference in PrimaryGeneratorAction2.
+
+ - pythia/decayer6
+
+ - P6DExtDecayerPhysics: make sure the external decayer is set to
+ G4Decay process only once to avoid potential misleading.
+
+ - pythia/py8decayer
+
+ - Added ActionInitialization class.
+ - Updated pythia8_decayer to use ActionInitialization.
+ Code cleanup to avoid potential misleading.
+
+
+ - exoticphysics
+
+ - channeling
+
+ - Use single-scattering EM physics instead of Opt4 and disabled Coulomb
+ scattering.
+
+ - monopole
+
+ - G4MonopoleTransportation: set step status on volume boundary.
+ - Removed useless 'const_cast' of G4VSensitiveDetector.
+
+ - ucn
+
+ - Corrected value of epsMax, to 0.001 in DetectorConstruction.
+ Also fixed epsMin to be dimensionless.
+
+
+ - field
+
+ - field01
+
+ - Added Boris integration method as an option.
+ - In main(), demonstrating how to use G4TransporationParameters to set
+ looper values for transportation.
+ - F01FieldSetup: show how to control Epsilon Min/Max.
+
+ - field04
+
+ - Replaced sprintf() use with std::to_string(); sprintf() deprecated
+ on macOS-13, leading to compilation warnings.
+ - Corrected value of epsMax, to 0.001 n DetectorConstruction.
+ Also fixed epsMin to be dimensionless.
+ - Fixed compilation warning on gcc-12.
+
+ - field05
+
+ - Corrected value of epsMax, to 0.001 n DetectorConstruction.
+ Also fixed epsMin to be dimensionless.
+
+
+ - g3tog4
+
+ - Updated common directory.
+
+ - hadronic
+
+ - FissionFragment
+
+ - Replaced sprintf() use with std::to_string(); sprintf() deprecated
+ on macOS-13, leading to compilation warnings.
+
+ - Hadr01
+
+ - Added UI commands to enable charmed and bottom hadrons physics and
+ hypernuclei (and anti-hypernuclei) physics;
+ added macro files to demonstrate this.
+
+ - Hadr03
+
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+ Use G4NuclideTable::SetMeanLifeThreshold(1ns);
+ use QBBC as the default configuration.
+
- In Run, added protection for the case when G4NeutronGeneralProcess
+ is used; in that case it is not currently possible to access
+ cross-section via G4HadronicProcessStore. Addressing problem report
+ #2517.
+ - Use default MixMax engine in main().
+
+ - Hadr05
+
+ - Prefer pointer to 'const G4Material' where possible.
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+
+ - Hadr06
+
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+
+ - Hadr07
+
+ - TrackingAction: print ions with zero meanLife.
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+
+ - Hadr08
+
+ - BiasingOperation: use Bertini cascade instead of pre-compound model,
+ as not applicable for pion interactions. The Bertini cascade is
+ applied from 0 to 41 MeV, INCLXX from 40 MeV to
+ 12 GeV.
+ - Moved run initialisation to macro files.
+
+ - Hadr09
+
+ - Extended to exercise hypernuclei and anti-hypernuclei inelastic nuclear
+ interactions.
+
+ - NeutronSource
+
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+
+ - ParticleFluence
+
+ - New set of examples implementing different setups showing how to score
+ particle fluences (Sphere, Concentric Spheres, Layer, Calo).
+
+
+ - medical/DICOM
+
+ - Introduced special mesh rendering of DICOM image.
+ - Replace sprintf with direct G4String use to remove deprecation warnings
+ on macOS-13.
+
+ - medical/dna
+
+ - chem4:
+
+ - Added macro commands to control chemical molecules and reactions.
+ - Minor correction for reaction type in macro file beam.in.
+ - Use thread-local flag in G4VMoleculeCounter.
+
+ - chem5:
+
+ - Use thread-local flag in G4VMoleculeCounter.
+
+ - chem6:
+
+ - Adding condition for only one event, to avoid potential FPE crash.
+ - Added PhysicsListMessenger.
+ - Added short chemical reaction list.
+ - Use thread-local flag in G4VMoleculeCounter.
+ - Added missing headers inclusion for self-consistency.
+ - Fixed analysis macros to allow running on Window.
+
+ - dnaphysics:
+
+ - In main(), enable visualisation only in interactive mode;
+ use G4RunManagerFactory.
+ - Added UI command to add different standard EM, DNA physics, and
+ radioactive decay models.
+ - PhysicsList: added RadioactiveDecayPhysics.
+ Added possibility to change DNA physics via UI commands.
+
+ - icsd:
+
+ - PhysicsList: make use of nitrogen material.
+ - Geometry: propose two geometries, nanodosimeter (N2) and dna (THF).
+
+ - jetcounter:
+
+ - New example providing a setup for simulation of a typical experiment
+ with the Jet Counter nanodosimeter. Allows the calculation of the
+ ionisation cluster size distribution (ICSD) (the number of ionisations
+ per projectile) in a real sized cylindrical interaction volume (IV) of
+ the Jet Counter device.
+
+ - microyz:
+
+ - Added UI commands for TrackerSD radius selection.
+ - Added missing headers inclusion for self-consistency.
+
+ - moleculardna:
+
+ - New example showing how to simulate physics, physico-chemistry and
+ chemistry processes in DNA geometries, for simulating DNA damage.
+
+ - scavenger:
+
+ - Fixed analysis macros to allow running on Window.
+ - EmDNAChemistry: added forgotten header.
+ - Use thread-local flag in G4VMoleculeCounter.
+
+ - spower:
+
+ - In main(), enable visualisation only in interactive mode;
+ use G4RunManagerFactory.
+
+
+ - optical
+
+ - LXe
+
+ - Modified LXeSteppingAction: removed thread-local variable;
+ use PDG code instead of particle name; added more checks on
+ pointers; extended printout before fatal exception.
+
+ - OpNovice2
+
+ - Added new macro complexRindex.mac, using dielectric-metal surface with
+ the surface having a complex index of refraction.
+ - Added new histograms to record separately Fresnel reflection, TIR,
+ absorption, etc.
+ - Use new histos to plot spike reflection/absorption vs angle on surface
+ (useful for complex refractive index).
+ - PrimaryGeneratorMessenger: fixed command /opnovice2/gun/randomDirection.
+ Based on
+ GitHub PR#33.
+ - Added local SteppingVerbose to print velocity with
+ /tracking/verbose 1.
+ - New macro coated.mac, and book-keeping code, to show
+ reflection/refraction from thin film coating.
+ - SteppingAction: check that group velocity is correct.
+ Don't include Absorbed or Detected photons in plots for forward-going
+ particles.
+
+ - wls
+
+ - Fixed compilation warning on gcc-12.
+
+
+ - parallel
+
+ - MPI
+
+ - Removed use of obsolete G4DeveloperAPI functions from CMake script.
+ - Changed namespace for g4tools code from tools::mpi to
+ toolx::mpi.
+ - Updated analysis classes for changes in analysis module.
+ - Fixed exMPI04 example failing in sequential mode when MPI n-tuple
+ merging is activated.
+
+
+ - parameterisations
+
+ - Par04
+
+ - Added python training scripts.
+ - Added model conversion to ONNX and LWTNN to the training script.
+ - Added updated version of the training code (PEP 8 style guide,
+ formatting with YAPF, annotation with types, code upgrade to TF2.9,
+ logic for GPU usage management).
+ - Added support of LibTorch for inference.
+ - Fixed warnings and lwtnn macro.
+ - Changed visualization scripts for fast simulation.
+ - Added new control histograms.
+ - Changed extension of macros from .in to .mac.
+
+
+ - radioactivedecay
+
+ - Activation
+
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+
+ - rdecay01
+
+ - PhysicsList: added G4NuclideTable::SetThresholdOfHalfLife(1ns*log2).
+ In constructor, adjust meanLifeTime and halfLifeTime.
+ Added SetInternalConversionFlag() function.
+ Moved setup of options to the class constructor; use minimal
+ list of particles defined in G4EmBuilder; added extended comments
+ to the code; updated headers according to C++11.
+ Adjusted meanLifeTime and halfLifeTime.
+ - Use default MixMax engine in main().
+ - Fixed compilation warning on gcc-12.
+
+
+ - runAndEvent
+
+ - RE02
+
+ - Replaced sprintf() with std::ostringstream to fix deprecation
+ warnings on macOS-13.
+
+ - RE07
+
+ - Renamed static class member fMasterTrackingManager.
+ - Applied clang-format to code.
+
+
+
+
+
+
+
+
+
+
+
+10. Appendix
+
+
+A1 - Location of Geant4's datasets
+
+Use of environment variables to locate Geant4's datasets at application
+runtime is now optional, the following fallback-based search is being used
+for backward compatibility with existing setups:
+
+
+
+
+
+
diff --git a/cmake/History b/cmake/History
index ec867deeb0..4704b9ce3f 100644
--- a/cmake/History
+++ b/cmake/History
@@ -6,6 +6,78 @@ It must **not** be used as a substitute for writing good git commit messages!
-------------------------------------------------------------------------------
+## 2022-12-05 Ben Morgan (cmake-V11-00-50)
+- Revert VecGeom minimum version to 1.2.0 due to issues with 1.2.1 reported by
+ CMS but not yet triaged in VecGeom itself.
+
+## 2022-11-29 Ben Morgan (cmake-V11-00-49)
+- Stamp minimum versions of CLHEP and VecGeom required for 11.1 release
+
+## 2022-11-21 Ben Morgan (cmake-V11-00-48)
+- Only support Qt5. Code updates to support Qt6 did not make release deadline, so
+ remove find of Qt6, retaining other support structures to enable quick updates
+ later.
+
+## 2022-11-15 Ben Morgan (cmake-V11-00-47)
+- Remove Geant4Py from toolkit build, pointing users to upstream repo if they
+ set GEANT4_USE_PYTHON in the CMake arguments.
+
+## 2022-11-07 Ben Morgan (cmake-V11-00-46)
+- Keep file timestamps from unpacked data libraries in CMake 3.24 and newer.
+
+## 2022-10-27 Ben Morgan (cmake-V11-00-45)
+- Fix bug in Qt3D activation as [reported on the Forum](https://geant4-forum.web.cern.ch/t/compiling-geant4-11-1-0-beta-failed-on-built-target-g4physicslist-s/9064/8)
+
+## 2022-10-20 Guy Barrand (cmake-V11-00-44)
+- Modules/G4InterfaceOptions.cmake: remove usage of GEANT4_USE_TOOLSSG since ToolsSG
+ is now "always on" on all platforms.
+- Templates/Geant4Config.cmake.in: remove usage of _geant4_use_toolssg_library, and
+ setup of -DG4VIS_USE_TOOLSSG for compilation.
+
+## 2022-10-13 Ben Morgan (cmake-V11-00-43)
+- Find, use and re-find Qt OpenGLWidgets component when Qt6 is in use.
+
+## 2022-10-12 Gunter Folger (cmake-V11-00-42)
+- add new dataset G4EMLOW 8.2 as provided by Vladimir:
+ This modification include additions for atomic de-excitation for Z=101-104
+ and N2 DNA data. No change for existing tests is expected.
+
+## 2022-10-07 Gabriele Cosmo (cmake-V11-00-41)
+- Added "-diag-disable=10441" CXX option to Intel compilers, to disable
+ icc compiler deprecation message.
+
+## 2022-09-27 Ben Morgan (cmake-V11-00-40)
+- Promote INTERFACE module properties to PUBLIC when merging them into a non-INTERFACE
+ final target.
+
+## 2022-09-25 Ben Morgan (cmake-V11-00-39)
+- Fix bug causing failure in `do_provides` function of geant4_module_check.py
+
+## 2022-09-10 Ben Morgan (cmake-V11-00-38)
+- Implement mechanism to filter out headers in geant4_module_check with linting comment
+
+## 2022-09-09 Ben Morgan (cmake-V11-00-37)
+- Fix geant4_module_check returning 1 on successful run
+- Filter out C++ filesystem library from checks
+
+## 2022-09-03 Ben Morgan (cmake-V11-00-36)
+- Filter out Vis driver modules from consistency check for G4vis_management
+ - G4VisExecutive is a user level compile time interface to "plugin" drivers.
+ - Driver headers need filtering out as they are not linked to in Geant4 itself
+ to avoid circular dependencies.
+
+## 2022-08-31 Ben Morgan (cmake-V11-00-35)
+- New geant4_module_check.py script to provide convenient interface for developers
+ and testing to check module/library cycles and dependency inconsistencies.
+
+## 2022-07-14 Ben Morgan (cmake-V11-00-34)
+- Remove obsolete and now longer built G4gl2ps target
+
+## 2022-07-14 Ben Morgan (cmake-V11-00-33)
+- Address [Bugzilla 2485](https://bugzilla-geant4.kek.jp/show_bug.cgi?id=2485)
+ - Update extraction of include paths from VecGeom to use imported target
+ property.
+
## 2022-06-09 Igor Semeniouk (cmake-V11-00-32)
- G4ConfigureGNUMakeHelpers.cmake (geant4.[c]sh, geant4.bat generation )
- use the environment variable GEANT4_DATA_DIR as top data dir
diff --git a/cmake/Modules/G4CMakeMain.cmake b/cmake/Modules/G4CMakeMain.cmake
index 0aa2afd610..82262a892f 100644
--- a/cmake/Modules/G4CMakeMain.cmake
+++ b/cmake/Modules/G4CMakeMain.cmake
@@ -72,19 +72,12 @@ include(G4CTest)
#-----------------------------------------------------------------------
# Add the source and environments subdirectories
# source : Process all the Geant4 core targets
-# environments : Process optional wrappings of Geant4 (NOTYETIMPLEMENTED)
add_subdirectory(source)
-option(GEANT4_USE_PYTHON "Build Python bindings for Geant4" OFF)
if(GEANT4_USE_PYTHON)
- # We can only build g4py with MT geant4 if TLS is global-dynamic (or auto?)
- if(GEANT4_BUILD_MULTITHREADED AND (NOT GEANT4_BUILD_TLS_MODEL MATCHES "global-dynamic"))
- message(FATAL_ERROR "Geant4Py only supports 'global-dynamic' thread local storage, but
-'${GEANT4_BUILD_TLS_MODEL}' selected by GEANT4_BUILD_TLS_MODEL option
-")
- endif()
-
- add_subdirectory(environments/g4py)
+ message(WARNING "Geant4Py is no longer distributed with the Geant4 toolkit."
+ " It can be downloaded from:\n https://github.com/koichi-murakami/g4python \n"
+ "and requests for support on installation and use should be directed there.\n")
endif()
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/G4CMakeSettings.cmake b/cmake/Modules/G4CMakeSettings.cmake
index 9c25b37783..b3243dea36 100644
--- a/cmake/Modules/G4CMakeSettings.cmake
+++ b/cmake/Modules/G4CMakeSettings.cmake
@@ -113,18 +113,26 @@ add_custom_target(validate_sources
)
#.rst:
-# A custom ``validate_no_module_cycles`` is declared if Python3.9 is available.
-# This runs the geant4_check_module_cycles Python script to check that the
-# source module dependency graph has no cycles. It will fail if any cycles
-# are found, listing the first found to stderr.
+# Custom ``validate_no_module_cycles`` and ``validate_module_consistency`` targets
+# are declared if Python3.9 is available.
+# These runs the geant4_module_check.py Python script to check for cycles or
+# inconsistencies in the module dependency graph and declarations.
find_package(Python3 3.9 QUIET COMPONENTS Interpreter)
if(Python3_FOUND)
+ set(G4MODULE_VALIDATION_CMD Python3::Interpreter
+ ${PROJECT_SOURCE_DIR}/cmake/Modules/geant4_module_check.py
+ -db ${PROJECT_BINARY_DIR}/G4ModuleInterfaceMap.csv)
+
add_custom_target(validate_no_module_cycles
- COMMAND Python3::Interpreter
- ${PROJECT_SOURCE_DIR}/cmake/Modules/geant4_check_module_cycles.py
- -f ${PROJECT_BINARY_DIR}/G4ModuleAdjacencyList.txt
+ COMMAND ${G4MODULE_VALIDATION_CMD} --find-cycles
COMMENT "Checking for cycles in declared source module dependencies"
)
+
+ add_custom_target(validate_module_consistency
+ COMMAND ${G4MODULE_VALIDATION_CMD} --find-inconsistencies
+ COMMENT "Checking for inconsistencies in declared source module dependencies"
+ USES_TERMINAL
+ )
endif()
#-----------------------------------------------------------------------
diff --git a/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake b/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
index 71fab3ce45..4b83a60b99 100644
--- a/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
+++ b/cmake/Modules/G4ConfigurePkgConfigHelpers.cmake
@@ -214,16 +214,13 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS)
# - USolids
if(GEANT4_USE_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
set(G4_BUILTWITH_USOLIDS "yes")
- set(G4_USOLIDS_INCLUDE_DIRS "${USOLIDS_INCLUDE_DIRS} ${VECGEOM_EXTERNAL_INCLUDES}")
+ get_target_property(G4_USOLIDS_INCLUDE_DIRS VecGeom::vecgeom INTERFACE_INCLUDE_DIRECTORIES)
list(REMOVE_DUPLICATES G4_USOLIDS_INCLUDE_DIRS)
- if(_cxx_compiler_dirs)
- list(REMOVE_ITEM G4_USOLIDS_INCLUDE_DIRS ${_cxx_compiler_dirs})
- endif()
-
- string(REPLACE ";" " " G4_USOLIDS_CFLAGS "${VECGEOM_DEFINITIONS}")
foreach(_dir ${G4_USOLIDS_INCLUDE_DIRS})
set(G4_USOLIDS_CFLAGS "${G4_USOLIDS_CFLAGS} -I${_dir}")
endforeach()
+ # NB: should ALSO account for VecGeom having compile_options, but
+ # this is better handled through proper pkg-config support
else()
set(G4_BUILTWITH_USOLIDS "no")
endif()
@@ -245,7 +242,15 @@ if(NOT GEANT4_BUILD_GRANULAR_LIBS)
# - Qt
if(GEANT4_USE_QT)
set(G4_BUILTWITH_QT "yes")
- set(G4_QT_INCLUDE_DIRS ${Qt5Core_INCLUDE_DIRS} ${Qt5Gui_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5OpenGL_INCLUDE_DIRS} ${Qt5PrintSupport_INCLUDE_DIRS} ${Qt53DCore_INCLUDE_DIRS} ${Qt53DExtras_INCLUDE_DIRS} ${Qt53DRender_INCLUDE_DIRS})
+ set(_qtcomps Core Gui Widgets OpenGL PrintSupport)
+ if(QT_VERSION_MAJOR VERSION_GREATER_EQUAL 5.15)
+ list(APPEND _qtcomp 3DCore 3DExtras 3DRender)
+ endif()
+
+ set(G4_QT_INCLUDE_DIRS )
+ foreach(_qtc ${_qtcomps})
+ list(APPEND G4_QT_INCLUDE_DIRS ${Qt${QT_VERSION_MAJOR}${_qtc}_INCLUDE_DIRS})
+ endforeach()
list(REMOVE_DUPLICATES G4_QT_INCLUDE_DIRS)
if(_cxx_compiler_dirs)
diff --git a/cmake/Modules/G4DatasetDefinitions.cmake b/cmake/Modules/G4DatasetDefinitions.cmake
index 75bc69015b..bee223acf8 100644
--- a/cmake/Modules/G4DatasetDefinitions.cmake
+++ b/cmake/Modules/G4DatasetDefinitions.cmake
@@ -18,11 +18,11 @@ geant4_add_dataset(
# - Low energy electromagnetics
geant4_add_dataset(
NAME G4EMLOW
- VERSION 8.1
+ VERSION 8.2
FILENAME G4EMLOW
EXTENSION tar.gz
ENVVAR G4LEDATA
- MD5SUM e4abc7d2cd73a2f6d19837e9bcce984a
+ MD5SUM 07773e57be3f6f2ebb744da5ed574f6d
)
# - Photon evaporation
diff --git a/cmake/Modules/G4DeveloperAPI.cmake b/cmake/Modules/G4DeveloperAPI.cmake
index bea4eaf301..5ae6243591 100644
--- a/cmake/Modules/G4DeveloperAPI.cmake
+++ b/cmake/Modules/G4DeveloperAPI.cmake
@@ -873,6 +873,14 @@ function(geant4_compose_targets)
# and sources (what it uses internally)
# Probaly just needs module : location
# - Checking of files is runtime operation, so will refind/check each time
+ # - Store set of build settings relevant to filtering headers in dependency checks
+ # - "Dumb" as simply reproduced as CMake list in last column of every row (de-dupped in script)
+ # - Settings are designed to overcome limitation of ifdef in parsing, so map
+ # to symbols in code
+ set(__gmc_build_settings )
+ if(GEANT4_BUILD_MULTITHREADED)
+ list(APPEND __gmc_build_settings "G4MULTITHREADED")
+ endif()
file(WRITE "${PROJECT_BINARY_DIR}/G4ModuleInterfaceMap.csv" "")
configure_file("${PROJECT_SOURCE_DIR}/cmake/Modules/geant4_module_check.py" "${PROJECT_BINARY_DIR}/geant4_module_check.py" COPYONLY)
@@ -888,9 +896,10 @@ function(geant4_compose_targets)
# 2. Module interfaces, needs CMAKE, PUBLIC_HEADER
geant4_get_module_property(__listfile ${__module} CMAKE_LIST_FILE)
geant4_get_module_property(__publichdrs ${__module} PUBLIC_HEADERS)
+ geant4_get_module_property(__parent_target ${__module} PARENT_TARGET)
get_filename_component(__listdir "${__listfile}" DIRECTORY)
list(TRANSFORM __publichdrs REPLACE "^/.*/" "")
- file(APPEND "${PROJECT_BINARY_DIR}/G4ModuleInterfaceMap.csv" "${__module},${__listdir},${__publichdrs},${__publicdeps},${__privatedeps},${__interfacedeps}\n")
+ file(APPEND "${PROJECT_BINARY_DIR}/G4ModuleInterfaceMap.csv" "${__module},${__listdir},${__publichdrs},${__publicdeps},${__privatedeps},${__interfacedeps},${__parent_target},${__gmc_build_settings}\n")
endforeach()
# Process all defined libraries
@@ -1183,6 +1192,7 @@ function(__geant4_add_library _name _type)
else()
target_compile_features(${_target_name} PUBLIC ${GEANT4_TARGET_COMPILE_FEATURES})
set(_props_to_process "PUBLIC" "PRIVATE" "INTERFACE")
+ set(_promote_interface_to_public TRUE)
endif()
if(_lib_cmake_type STREQUAL "SHARED")
@@ -1249,11 +1259,21 @@ function(__geant4_add_library _name _type)
# sets of rules should apply (i.e. can't specify inc dirs
# at source level).
foreach(_prop ${_props_to_process})
+ # Further gotcha with INTERFACE modules here
+ # - If an interface module is composed into a non-interface module
+ # its headers are exposed correctly to *clients* of the library, but
+ # *not* the internals of the library! This being the case, we promote
+ # these properties to PUBLIC
+ set(_target_prop ${_prop})
+ if(_promote_interface_to_public AND (_prop STREQUAL "INTERFACE"))
+ set(_target_prop "PUBLIC")
+ endif()
+
geant4_get_module_property(_incdirs ${__g4mod} ${_prop}_INCLUDE_DIRECTORIES)
- target_include_directories(${_target_name} ${_prop} ${_incdirs})
+ target_include_directories(${_target_name} ${_target_prop} ${_incdirs})
geant4_get_module_property(_defs ${__g4mod} ${_prop}_COMPILE_DEFINITIONS)
- target_compile_definitions(${_target_name} ${_prop} ${_defs})
+ target_compile_definitions(${_target_name} ${_target_prop} ${_defs})
# Target linking requires additional processing to resolve
geant4_get_module_property(_linklibs ${__g4mod} ${_prop}_LINK_LIBRARIES)
@@ -1277,7 +1297,7 @@ function(__geant4_add_library _name _type)
set(_linklibs ${_g4linklibs})
endif()
- target_link_libraries(${_target_name} ${_prop} ${_linklibs})
+ target_link_libraries(${_target_name} ${_target_prop} ${_linklibs})
endif()
endforeach()
diff --git a/cmake/Modules/G4InstallData.cmake b/cmake/Modules/G4InstallData.cmake
index 263225bf2c..10110f542a 100644
--- a/cmake/Modules/G4InstallData.cmake
+++ b/cmake/Modules/G4InstallData.cmake
@@ -402,19 +402,28 @@ function(geant4_install_dataset _name _destination _timeout)
message(STATUS "Configuring download of missing dataset ${_name} (${_ds_version})")
- # - Dispatch to ExternalProject or our own implementation.
- # Use of URL_MD5 *and* TIMEOUT require CMake 2.8.2 or higher.
+ # - Dispatch to ExternalProject
include(ExternalProject)
- ExternalProject_Add(${_name}
+
+ # - We want to retain timestamps in extracted archives as the data files
+ # are "constants". CMake >= 3.24 changed this behaviour, so we setup
+ # ExternalProject based on running version
+ set(__ep_extract_timestamp_arg )
+ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
+ set(__ep_extract_timestamp_arg DOWNLOAD_EXTRACT_TIMESTAMP TRUE)
+ endif()
+
+ ExternalProject_add(${_name}
PREFIX Externals/${_name}-${_ds_version}
SOURCE_DIR ${GEANT4_BUILD_FULL_DATADIR}/${_ds_dir}
URL ${_ds_url}
URL_MD5 ${_ds_md5sum}
TIMEOUT ${_timeout}
+ ${__ep_extract_timestamp_arg}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
+ INSTALL_COMMAND "")
+
# - Configure the dataset's build and install locations
geant4_set_dataset_property(${_name} BUILD_DIR "${PROJECT_BINARY_DIR}/data/${_ds_dir}")
geant4_set_dataset_property(${_name} INSTALL_DIR "${_destination}/${_ds_dir}")
diff --git a/cmake/Modules/G4InterfaceOptions.cmake b/cmake/Modules/G4InterfaceOptions.cmake
index d60220bb22..5a2643e0bf 100644
--- a/cmake/Modules/G4InterfaceOptions.cmake
+++ b/cmake/Modules/G4InterfaceOptions.cmake
@@ -106,15 +106,6 @@ if(WIN32)
geant4_add_feature(GEANT4_USE_OPENGL_WIN32 "Build OpenGL driver with Win32 support")
endif()
-# Overall ToolsSG enable flag
-set(GEANT4_USE_TOOLSSG OFF)
-if(GEANT4_USE_TOOLSSG_QT_GLES
- OR GEANT4_USE_TOOLSSG_XT_GLES
- OR GEANT4_USE_TOOLSSG_X11_GLES
- OR GEANT4_USE_TOOLSSG_WINDOWS_GLES)
- set(GEANT4_USE_TOOLSSG ON)
-endif()
-
#-----------------------------------------------------------------------
# Find dependencies
#
@@ -147,14 +138,9 @@ if(GEANT4_USE_QT)
# Use versioned targets to support Qt5 < 5.15
# Once 5.15 is the minimum version, the "Qt${QT_VERSION_MAJOR}_..." variables can be dropped
# - https://doc.qt.io/qt-6/cmake-manual.html
- find_package(QT NAMES Qt5 Qt6 COMPONENTS Core REQUIRED)
+ find_package(QT NAMES Qt5 COMPONENTS Core REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets OpenGL PrintSupport REQUIRED)
- if(QT_VERSION_MAJOR VERSION_LESS 6)
- get_target_property(QT_QMAKE_EXECUTABLE ${Qt${QT_VERSION_MAJOR}Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
- else()
- get_target_property(QT_QMAKE_EXECUTABLE Qt6::qmake IMPORTED_LOCATION)
- endif()
geant4_save_package_variables(Qt${QT_VERSION_MAJOR}
Qt${QT_VERSION_MAJOR}Core_DIR
Qt${QT_VERSION_MAJOR}Gui_DIR
@@ -162,14 +148,14 @@ if(GEANT4_USE_QT)
Qt${QT_VERSION_MAJOR}OpenGL_DIR
Qt${QT_VERSION_MAJOR}PrintSupport_DIR)
-
+ get_target_property(QT_QMAKE_EXECUTABLE ${Qt${QT_VERSION_MAJOR}Core_QMAKE_EXECUTABLE} IMPORTED_LOCATION)
geant4_add_feature(GEANT4_USE_QT "Build Geant4 with Qt${QT_VERSION_MAJOR} support")
# Qt3D is only supported on 5.15 and above, but always on if available
set(QT3D_MINIMUM_VERSION 5.15.0)
set(GEANT4_USE_QT3D OFF)
- if(QT_VERSION GREATER_EQUAL QT3D_MINIMUM_VERSION)
+ if(QT_VERSION VERSION_GREATER_EQUAL QT3D_MINIMUM_VERSION)
find_package(Qt${QT_VERSION_MAJOR}3DCore ${QT_VERSION} EXACT QUIET)
find_package(Qt${QT_VERSION_MAJOR}3DExtras ${QT_VERSION} EXACT QUIET)
find_package(Qt${QT_VERSION_MAJOR}3DRender ${QT_VERSION} EXACT QUIET)
diff --git a/cmake/Modules/G4MakeRules_cxx.cmake b/cmake/Modules/G4MakeRules_cxx.cmake
index 8b5067928a..54e56b5c94 100644
--- a/cmake/Modules/G4MakeRules_cxx.cmake
+++ b/cmake/Modules/G4MakeRules_cxx.cmake
@@ -81,7 +81,7 @@ endif()
# Sufficient id on all platforms?
if(CMAKE_CXX_COMPILER_ID MATCHES "Intel")
# Warnings
- set(CMAKE_CXX_FLAGS_INIT "-W -Wall -pedantic -Wno-non-virtual-dtor -Wno-long-long -Wwrite-strings -Wpointer-arith -Woverloaded-virtual -Wno-variadic-macros -Wshadow -fp-model precise")
+ set(CMAKE_CXX_FLAGS_INIT "-W -Wall -pedantic -Wno-non-virtual-dtor -Wno-long-long -Wwrite-strings -Wpointer-arith -Woverloaded-virtual -Wno-variadic-macros -Wshadow -fp-model precise -diag-disable=10441")
# Use pipes rather than temp files
set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} -pipe")
diff --git a/cmake/Modules/G4OptionalComponents.cmake b/cmake/Modules/G4OptionalComponents.cmake
index 4c55adf24b..cd07b3a9b4 100644
--- a/cmake/Modules/G4OptionalComponents.cmake
+++ b/cmake/Modules/G4OptionalComponents.cmake
@@ -39,7 +39,7 @@ endif()
option(GEANT4_USE_SYSTEM_CLHEP "Use system CLHEP library" ${_default_use_system_clhep})
if(GEANT4_USE_SYSTEM_CLHEP)
- find_package(CLHEP 2.4.5.1 REQUIRED CONFIG)
+ find_package(CLHEP 2.4.6.0 REQUIRED CONFIG)
geant4_save_package_variables(CLHEP CLHEP_DIR)
else()
set(CLHEP_FOUND TRUE)
@@ -295,7 +295,7 @@ endif()
# - Geant4 USolids/VecGom setup
if(GEANT4_USE_ALL_USOLIDS OR GEANT4_USE_PARTIAL_USOLIDS)
- find_package(VecGeom 1.1.18 REQUIRED)
+ find_package(VecGeom 1.2.0 REQUIRED)
# Shim until VecGeom supports config mode properly
include("${CMAKE_CURRENT_LIST_DIR}/G4VecGeomShim.cmake")
# Backward Compatibility
diff --git a/cmake/Modules/geant4_check_module_cycles.py b/cmake/Modules/geant4_check_module_cycles.py
old mode 100644
new mode 100755
diff --git a/cmake/Modules/geant4_module_check.py b/cmake/Modules/geant4_module_check.py
index f2ea5b90a5..f04a70985f 100755
--- a/cmake/Modules/geant4_module_check.py
+++ b/cmake/Modules/geant4_module_check.py
@@ -24,38 +24,95 @@ import sys
import re
import json
import graphlib
+from collections import defaultdict, OrderedDict
def initdb(filename):
- db = {}
+ db = {'modules': {}, 'build_settings': set()}
with open(filename, 'r') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
- db[row[0]] = {'location': row[1],
- 'headers': set(row[2].split(';')) - set(['']),
- 'public_deps': set(row[3].split(';')) - set(['']),
- 'private_deps': set(row[4].split(';')) - set(['']),
- 'interface_deps': set(row[5].split(';')) - set([''])}
+ db['modules'][row[0]] = {'location': row[1],
+ 'headers': set(row[2].split(';')) - set(['']),
+ 'public_deps': set(row[3].split(';')) - set(['']),
+ 'private_deps': set(row[4].split(';')) - set(['']),
+ 'interface_deps': set(row[5].split(';')) - set(['']),
+ 'parent_target': row[6]}
+ db['build_settings'].add(row[7])
return db
-def scan_includes(input_file):
+def get_modules(db):
+ return db['modules'].keys()
+
+
+def get_module(name, db):
+ return db['modules'][name]
+
+
+def get_location(name, db):
+ return get_module(name, db)['location']
+
+
+def get_headers(name, db):
+ return get_module(name, db)['headers']
+
+
+def get_public_deps(name, db):
+ return get_module(name, db)['public_deps']
+
+
+def get_private_deps(name, db):
+ return get_module(name, db)['private_deps']
+
+
+def get_interface_deps(name, db):
+ return get_module(name, db)['interface_deps']
+
+
+def get_parent_target(name, db):
+ return get_module(name, db)['parent_target']
+
+
+def what_provides(h, db):
+ return set([m for m in get_modules(db) if h in get_headers(m, db)])
+
+
+def has_setting(setting, build_settings):
+ if setting.startswith('!'):
+ return setting[1:] not in build_settings
+ else:
+ return setting in build_settings
+
+
+def scan_includes(input_file, settings):
result = set()
lines = open(input_file).readlines()
for line in lines:
- m = re.search("^ *# *include *\"(.*)\"", line)
+ m = re.search("^ *# *include *\"(.*)\"(.*)$", line)
if m:
+ c = re.search(
+ "\s*//\s*no_geant4_module_check\s*(\((.*)\))?.*$", m.group(2))
+ if c:
+ conds = set()
+ if c.group(2):
+ conds = set(
+ filter(None, [''.join(c.split(' ')) for c in c.group(2).strip().split(',')]))
+
+ if not conds or any(has_setting(s, settings) for s in conds):
+ continue
+
result.add(m.group(1))
return result
-def scan_files(input_path):
+def scan_files(input_path, settings):
used_headers = set()
with os.scandir(input_path) as hdr_it:
for entry in hdr_it:
- used_headers |= scan_includes(entry.path)
+ used_headers |= scan_includes(entry.path, settings)
return used_headers
@@ -64,8 +121,8 @@ def find_modules(list_of_headers, module_db):
found_modules = set()
orphan_hdrs = set()
for h in list_of_headers:
- ms = [k for k, v in module_db.items() if h in v['headers']]
- found_modules |= set(ms)
+ ms = what_provides(h, module_db)
+ found_modules |= ms
if not ms:
orphan_hdrs.add(h)
@@ -75,21 +132,28 @@ def find_modules(list_of_headers, module_db):
def usage_requirements(module_name, module_db):
""" Find modules needed publically and privately by input module
"""
- module_path = module_db[module_name]['location']
- module_headers = module_db[module_name]['headers']
+ try:
+ module_path = get_location(module_name, module_db)
+ module_headers = get_headers(module_name, module_db)
+ except KeyError as err:
+ print(f'No module named \'{module_name}\'', file=sys.stderr)
+ sys.exit(1)
# Determine public usage reqs
- includes_from_headers = scan_files(os.path.join(module_path, "include"))
+ includes_from_headers = scan_files(os.path.join(module_path, "include"), module_db['build_settings'])
includes_from_headers -= module_headers
public_deps = find_modules(includes_from_headers, module_db)
- # The same for private
- includes_from_srcs = scan_files(os.path.join(module_path, "src"))
- includes_from_srcs -= module_headers
- private_deps = find_modules(includes_from_srcs, module_db)
- # Public deps are higher priority
- private_deps['modules'] -= public_deps['modules']
- private_deps['headers'] -= public_deps['headers']
+ # The same for private, if module has srcs
+ try:
+ includes_from_srcs = scan_files(os.path.join(module_path, "src"), module_db['build_settings'])
+ includes_from_srcs -= module_headers
+ private_deps = find_modules(includes_from_srcs, module_db)
+ # Public deps are higher priority
+ private_deps['modules'] -= public_deps['modules']
+ private_deps['headers'] -= public_deps['headers']
+ except FileNotFoundError:
+ private_deps = {'modules': set(), 'headers': set()}
# Transform results to output dict
d = {'module': module_name,
@@ -108,18 +172,22 @@ def usage_requirements(module_name, module_db):
def check_consistency(module_name, module_db):
""" Check module declared/apparent dependencies for consistency
"""
- # NB: Can have false positives from externals G4expat, G4clhep, G4zlib, G4tools (plus imported :: targets)
- def filter_dependencies(dep_list):
- return set([x for x in dep_list if not re.match("^.+::.+", x)]) - set(['G4expat', 'G4clhep', 'G4zlib', 'G4tools', 'G4ptl'])
+ # NB: Can have false positives from externals G4expat, G4clhep, G4zlib, G4tools (plus imported :: targets and stdlib)
+ def filter_dependencies(dep_list, module_name):
+ return set([x for x in dep_list if not re.match("^.+::.+", x)]) - set(['G4expat', 'G4clhep', 'G4zlib', 'G4tools', 'G4ptl', 'stdc++fs'])
ur = usage_requirements(module_name, module_db)
- apparent_public_deps = filter_dependencies(ur['dependencies']['public'])
- apparent_private_deps = filter_dependencies(ur['dependencies']['private'])
+ apparent_public_deps = filter_dependencies(
+ ur['dependencies']['public'], module_name)
+ apparent_private_deps = filter_dependencies(
+ ur['dependencies']['private'], module_name)
declared_public_deps = filter_dependencies(
- module_db[module_name]['public_deps'])
+ get_public_deps(module_name, module_db), module_name)
+ declared_interface_deps = filter_dependencies(
+ get_interface_deps(module_name, module_db), module_name)
declared_private_deps = filter_dependencies(
- module_db[module_name]['private_deps'])
+ get_private_deps(module_name, module_db), module_name)
# Collate any consistency errors
report = []
@@ -128,41 +196,72 @@ def check_consistency(module_name, module_db):
duplicated_deps = declared_public_deps & declared_private_deps
if duplicated_deps:
report.append(
- f'- has duplicated PUBLIC/PRIVATE dependencies: {duplicated_deps}')
+ f' - has duplicated PUBLIC/PRIVATE dependencies: {duplicated_deps}')
# - Apparent dep not declared
- missing_public_deps = apparent_public_deps - declared_public_deps
+ missing_public_deps = apparent_public_deps - \
+ declared_public_deps - declared_interface_deps
if missing_public_deps:
report.append(
- f'- may require PUBLIC dependencies: {missing_public_deps}')
+ f' + may require PUBLIC or INTERFACE dependencies: {missing_public_deps}')
missing_private_deps = apparent_private_deps - declared_private_deps
if missing_private_deps:
report.append(
- f'- may require PRIVATE dependencies: {missing_private_deps}')
+ f' + may require PRIVATE dependencies: {missing_private_deps}')
# - Declared dep not in apparent (overdeclared)
overdeclared_public_deps = declared_public_deps - apparent_public_deps
if overdeclared_public_deps:
report.append(
- f'- may not require PUBLIC dependencies: {overdeclared_public_deps}')
+ f' - may not require PUBLIC dependencies: {overdeclared_public_deps}')
overdeclared_private_deps = declared_private_deps - apparent_private_deps
if overdeclared_private_deps:
report.append(
- f'- may not require PRIVATE dependencies: {overdeclared_private_deps}')
+ f' - may not require PRIVATE dependencies: {overdeclared_private_deps}')
return report
-def find_cycles(module_db, verbose):
+def do_provides(header_name, module_db, verbose):
+ # find the header, there should not be duplicates!
+ mods = what_provides(header_name, module_db)
+ if len(mods) == 0:
+ print(f"No module provides header '{header_name}'", file=sys.stderr)
+ sys.exit(1)
+ if len(mods) > 1:
+ print(
+ f"Header '{args.provides}' is provided by multiple modules: {mods}", file=sys.stderr)
+ sys.exit(1)
+
+ print(mods.pop())
+
+
+def do_check_consistency(module_name, module_db):
+ try:
+ cc = check_consistency(module_name, module_db)
+ if cc:
+ print(f'{module_name} has inconsistent dependencies:', file=sys.stderr)
+ print("\n".join(cc), file=sys.stderr)
+ sys.exit(1)
+ else:
+ print(f'Module {module_name} appears consistent')
+ except KeyError as err:
+ print(f'No module named \'{module_name}\'', file=sys.stderr)
+ sys.exit(1)
+
+
+def do_find_cycles(module_db, verbose):
""" Check for any cycles in the complete module dependency graph
"""
# Build adjacency list
adjlist = {}
- for k, v in module_db.items():
- adjlist[k] = list(v['public_deps'] | v['private_deps']
- | v['interface_deps'])
+
+ for m in get_modules(module_db):
+ adjlist[m] = list(get_public_deps(m, module_db)
+ | get_private_deps(m, module_db)
+ | get_interface_deps(m, module_db))
try:
# Topo sort throws cycle error if one occurs during prepare
@@ -182,19 +281,45 @@ def find_cycles(module_db, verbose):
ts.done(*nodes)
generation += 1
- print(f"pass: No cycles detected in module dependency graph")
+ print(f"No cycles detected in module dependency graph")
except graphlib.CycleError as err:
print(
- f"error: cycles detected in module dependency graph",
+ f"Cycles detected in module dependency graph:",
file=sys.stderr,
)
- cycle = " <- ".join(err.args[1])
- print(f"cycle: {cycle}", file=sys.stderr)
+ cycle = " -> ".join(reversed(err.args[1]))
+ print(f"{cycle}", file=sys.stderr)
sys.exit(1)
+def do_find_inconsistencies(db, verbose):
+ inconsistent = {}
+ for m in get_modules(db):
+ cc = check_consistency(m, db)
+ if cc:
+ inconsistent[m] = "\n".join(cc)
+
+ if len(inconsistent) > 0:
+ for k, v in inconsistent.items():
+ print(f'{k}:\n{v}', file=sys.stderr)
+
+ sys.exit(1)
+ else:
+ print(
+ "No inconsistencies detected in declared/apparent module dependencies")
+
+
+def do_libraries(db, verbose):
+ libmap = defaultdict(set)
+
+ for m in get_modules(db):
+ libmap[get_parent_target(m, db)].add(m)
+
+ for k, v in sorted(libmap.items()):
+ print(f'{k}: {v}')
+
+
if __name__ == "__main__":
- # Parse command line to get command to run
parser = argparse.ArgumentParser(
description=str(__doc__), formatter_class=argparse.RawDescriptionHelpFormatter
)
@@ -210,6 +335,11 @@ if __name__ == "__main__":
action='store_true',
help="list declared source code modules"
)
+ query_group.add_argument(
+ "-s", "--source",
+ metavar="",
+ help="print directory holding CMake file where module is defined"
+ )
query_group.add_argument(
"-i", "--interface",
metavar="",
@@ -240,6 +370,16 @@ if __name__ == "__main__":
action="store_true",
help="find inconsistencies in apparent/declared dependencies of all modules"
)
+ query_group.add_argument(
+ "--library",
+ metavar="",
+ help="print final library (.so/.dll) that module is compiled into"
+ )
+ query_group.add_argument(
+ "--libraries",
+ action="store_true",
+ help="print final libraries and their module compositions"
+ )
args = parser.parse_args()
# Initialize the module/header "database"
@@ -251,52 +391,36 @@ if __name__ == "__main__":
# Implementations
if args.list:
- print("\n".join(db.keys()))
+ print("\n".join(get_modules(db)))
+ elif args.source:
+ try:
+ print(get_location(args.source, db))
+ except KeyError as err:
+ print(f"No module named {err}", file=sys.stderr)
+ sys.exit(1)
elif args.interface:
try:
- print("\n".join(db[args.interface]['headers']))
+ print(
+ "\n".join(sorted(get_headers(args.interface, db))))
except KeyError as err:
print(f"No module named {err}", file=sys.stderr)
sys.exit(1)
elif args.provides:
- # find the header, there should not be duplicates!
- mods = [k for k, v in db.items() if args.provides in v['headers']]
- if len(mods) == 0:
- print(
- f"No module provides header '{args.provides}'",
- file=sys.stderr)
- sys.exit(1)
- if len(mods) > 1:
- print(
- f"Header '{args.provides}' is provided by multiple modules: {mods}",
- file=sys.stderr)
- sys.exit(1)
-
- print(mods[0])
+ do_provides(args.provides, db, args.verbose)
elif args.usage_requirements:
ur = usage_requirements(args.usage_requirements, db)
print(json.dumps(ur, indent=2))
elif args.check_consistency:
- cc = check_consistency(args.check_consistency, db)
- if cc:
- print(f'{args.check_consistency}:', file=sys.stderr)
- print("\n".join(cc), file=sys.stderr)
- sys.exit(1)
- else:
- print(
- f'{args.check_consistency} appears consistent')
+ do_check_consistency(args.check_consistency, db)
elif args.find_cycles:
- find_cycles(db, args.verbose)
+ do_find_cycles(db, args.verbose)
elif args.find_inconsistencies:
- inconsistent = {}
- for m in db.keys():
- cc = check_consistency(m, db)
- if cc:
- inconsistent[m] = "\n".join(cc)
-
- if len(inconsistent) > 0:
- print(f'Inconsistent dependencies in modules:', file=sys.stderr)
- for k, v in inconsistent.items():
- print(f'{k}:\n{v}', file=sys.stderr)
-
+ do_find_inconsistencies(db, args.verbose)
+ elif args.library:
+ try:
+ print(get_parent_target(args.library, db))
+ except KeyError as err:
+ print(f"No module named {err}", file=sys.stderr)
sys.exit(1)
+ elif args.libraries:
+ do_libraries(db, args.verbose)
diff --git a/cmake/Templates/Geant4Config.cmake.in b/cmake/Templates/Geant4Config.cmake.in
index 6a751f8484..cf277ffa83 100644
--- a/cmake/Templates/Geant4Config.cmake.in
+++ b/cmake/Templates/Geant4Config.cmake.in
@@ -527,7 +527,6 @@ if(Geant4_vis_toolssg_x11_gles_FOUND)
if(("vis_toolssg_x11_gles" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_TOOLSSG_X11_GLES)
- set(_geant4_use_toolssg_library ON)
endif()
endif()
@@ -537,7 +536,6 @@ if(Geant4_vis_toolssg_windows_gles_FOUND)
find_dependency(OpenGL)
if(("vis_toolssg_windows_gles" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_TOOLSSG_WINDOWS_GLES)
- set(_geant4_use_toolssg_library ON)
endif()
endif()
@@ -554,7 +552,6 @@ if(Geant4_vis_toolssg_xt_gles_FOUND)
if(("vis_toolssg_xt_gles" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_TOOLSSG_XT_GLES)
- set(_geant4_use_toolssg_library ON)
endif()
endif()
@@ -564,7 +561,6 @@ if(Geant4_vis_toolssg_qt_gles_FOUND)
find_dependency(OpenGL)
if(("vis_toolssg_qt_gles" IN_LIST Geant4_FIND_COMPONENTS) OR Geant4_vis_all_FOUND)
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_TOOLSSG_QT_GLES)
- set(_geant4_use_toolssg_library ON)
endif()
endif()
@@ -627,13 +623,12 @@ set(_geant4_internal_libraries
Geant4::G4GMocren${_geant4_lib_use_suffix}
Geant4::G4visHepRep${_geant4_lib_use_suffix}
Geant4::G4RayTracer${_geant4_lib_use_suffix}
- Geant4::G4VRML${_geant4_lib_use_suffix})
+ Geant4::G4VRML${_geant4_lib_use_suffix}
+ Geant4::G4ToolsSG${_geant4_lib_use_suffix})
# - G4OpenGL if it's requested.
if(_geant4_use_opengl_library)
- list(APPEND _geant4_internal_libraries
- Geant4::G4OpenGL${_geant4_lib_use_suffix}
- Geant4::G4gl2ps${_geant4_lib_use_suffix})
+ list(APPEND _geant4_internal_libraries Geant4::G4OpenGL${_geant4_lib_use_suffix})
list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_OPENGL)
endif()
@@ -648,12 +643,6 @@ if(_geant4_use_inventor_library)
list(APPEND _geant4_internal_libraries Geant4::G4OpenInventor${_geant4_lib_use_suffix})
endif()
-# - G4ToolsSG if it's requested.
-if(_geant4_use_toolssg_library)
- list(APPEND _geant4_internal_libraries Geant4::G4ToolsSG${_geant4_lib_use_suffix})
- list(APPEND Geant4_DEFINITIONS -DG4VIS_USE_TOOLSSG)
-endif()
-
if(_geant4_use_vtk_library)
list(APPEND _geant4_internal_libraries Geant4::G4visVtk${_geant4_lib_use_suffix})
endif()
diff --git a/cmake/Templates/geant4-config.in b/cmake/Templates/geant4-config.in
index d64d21cc70..5c32d7af2d 100644
--- a/cmake/Templates/geant4-config.in
+++ b/cmake/Templates/geant4-config.in
@@ -215,13 +215,6 @@ feature_list="${feature_list} qt[${have_qt}]"
if test "x${have_qt}" = "xyes" ; then
vis_cflags="${vis_cflags} \
-DG4UI_USE_QT -DG4VIS_USE_OPENGLQT @G4_QT_CFLAGS@"
-
-if test "x${qt_version}" \< "5.15.0" ; then
- vis_libs="-lG4visQt3D ${vis_libs}"
- libs="-lG4visQt3D ${libs}"
- vis_cflags="${vis_cflags} -DG4UI_USE_QT3D"
-fi
-
geant4_uses_opengl="yes"
fi
@@ -229,6 +222,10 @@ fi
have_qt3d="@G4_BUILTWITH_QT3D@"
feature_list="${feature_list} qt3d[${have_qt3d}]"
+if test "x${have_qt3d}" = "xyes" ; then
+ vis_libs="-lG4visQt3D ${vis_libs}"
+ vis_cflags="${vis_cflags} -DG4UI_USE_QT3D"
+fi
# - Motif
have_motif="@G4_BUILTWITH_MOTIF@"
@@ -276,10 +273,10 @@ feature_list="${feature_list} vtk[${have_vtk}]"
# - If we have any OpenGL based feature, then we need to add in the
-# OpenGL global define and the G4OpenGL/G4gl2ps libraries.
+# OpenGL global define and the G4OpenGL libraries.
if test "x${geant4_uses_opengl}" = "xyes" ; then
vis_cflags="-DG4VIS_USE_OPENGL ${vis_cflags}"
- vis_libs="-lG4OpenGL -lG4gl2ps ${vis_libs}"
+ vis_libs="-lG4OpenGL ${vis_libs}"
fi
# - If we have any X11 based feature, then we *may* need the X11 includes
diff --git a/config/G4VIS_BUILD.gmk b/config/G4VIS_BUILD.gmk
index 8ebcd03e91..306eae6e3b 100644
--- a/config/G4VIS_BUILD.gmk
+++ b/config/G4VIS_BUILD.gmk
@@ -16,6 +16,7 @@ ifndef G4VIS_NONE
# G4VIS_BUILD_HEPREPFILE_DRIVER
# G4VIS_BUILD_RAYTRACER_DRIVER
# G4VIS_BUILD_VRMLFILE_DRIVER
+# G4VIS_BUILD_TOOLSSG_OFFSCREEN_DRIVER
ifdef G4VIS_BUILD_OPENGLXM_DRIVER
# OPENGLXM requires OPENGLX...
diff --git a/config/G4VIS_USE.gmk b/config/G4VIS_USE.gmk
index 486eb8a5b8..abb050e73b 100644
--- a/config/G4VIS_USE.gmk
+++ b/config/G4VIS_USE.gmk
@@ -32,6 +32,9 @@ VISLIBS += -lG4RayTracer
CPPFLAGS += -DG4VIS_USE_VRMLFILE
VISLIBS += -lG4VRML
+CPPFLAGS += -DG4VIS_USE_TOOLSSG_OFFSCREEN
+VISLIBS += -lG4ToolsSG
+
ifneq ($(G4INCLUDE_EXEC),1)
CPPFLAGS += -I$(G4BASE)/visualization/FukuiRenderer/include
CPPFLAGS += -I$(G4BASE)/visualization/gMocren/include
@@ -39,6 +42,7 @@ ifneq ($(G4INCLUDE_EXEC),1)
CPPFLAGS += -I$(G4BASE)/visualization/RayTracer/include
CPPFLAGS += -I$(G4BASE)/visualization/Tree/include
CPPFLAGS += -I$(G4BASE)/visualization/VRML/include
+ CPPFLAGS += -I$(G4BASE)/visualization/ToolsSG/include
endif
ifdef G4VIS_USE_OPENGLX
@@ -135,13 +139,6 @@ ifdef G4VIS_USE_VRML
# CPPFLAGS += -I... and VISLIBS += set above.
endif
-ifdef G4LIB_USE_GL2PS
- ifneq ($(G4INCLUDE_EXEC),1)
- CPPFLAGS += -I$(G4BASE)/visualization/externals/gl2ps/include
- endif
- VISLIBS += -lG4gl2ps
-endif
-
########################### and finally... #######################
G4VIS_USE = 1
diff --git a/config/History b/config/History
index 868f35f348..e8f9789f0d 100644
--- a/config/History
+++ b/config/History
@@ -6,6 +6,35 @@ It must **not** be used as a substitute for writing good git commit messages!
--------------------------------------------------------------------------------
+## 2022-11-02 Gabriele Cosmo (config-V11-00-12)
+- Silence ld warnings in Darwin setups.
+
+## 2022-10-31 Gabriele Cosmo (config-V11-00-11)
+- Corrected buffer size in liblist.c tool.
+
+## 2022-10-25 Guy Barrand (config-V11-00-10)
+- G4VIS_BUILD.gmk, G4VIS_USE.gmk: handle vis/ToolsSG by default.
+
+## 2022-10-21 Gunter Folger (config-V11-00-09)
+- Add --gcc-toolchain option for CXX and CC in Linux-clang.
+- Removed protecton in definition of CXX and CC
+
+## 2022-10-19 Gabriele Cosmo (config-V11-00-08)
+- Protected definition of CXX and CC in Linux-clang.
+
+## 2022-10-12 Gabriele Cosmo (config-V11-00-07)
+- Replaced use of deprecated sprintf() with snprintf() in liblist.c tool.
+
+## 2022-10-07 Gabriele Cosmo (config-V11-00-06)
+- Added "-diag-disable=10441" option to Linux-icc, to disable Intel/icc
+ compiler deprecation message.
+
+## 2022-08-30 Gabriele Cosmo (config-V11-00-05)
+- Fixed gcc compilation warnings on liblist.c tool.
+
+## 2022-07-14 Ben Morgan (config-V11-00-04)
+- Remove obsolete G4gl2ps category and library from build
+
## 2022-03-25 Ben Morgan (config-V11-00-03)
- Retire G4tasking category and library from build
diff --git a/config/liblist.c b/config/liblist.c
index 5850bcf061..6933594d5f 100644
--- a/config/liblist.c
+++ b/config/liblist.c
@@ -70,7 +70,7 @@ char** parsedir(char *directory,int *argc)
buffer=(char*) malloc((strlen(directory)+
strlen(entry->d_name)+2)*sizeof(char));
strcpy(buffer,directory);
- strncat(buffer,"/",1);
+ strcat(buffer,"/");
strcat(buffer,entry->d_name);
s=stat(buffer,&status);
if(s==0)
@@ -294,7 +294,7 @@ int main (int argc, char** argv) {
ptr=strtok(NULL,"/");
while(ptr&&strcmp(ptr,"GNUmakefile"))
{
- strncat(libmapPtr->trigger,"/",1);
+ strcat(libmapPtr->trigger,"/");
strcat(libmapPtr->trigger,ptr);
ptr=strtok(NULL,"/");
}
@@ -349,7 +349,7 @@ int main (int argc, char** argv) {
}
strcpy(workbuf,libmapPtr->lib);
/* Add trailing "/" to distinguish track/ and tracking/, etc. */
- strncat(workbuf,"/",1);
+ strcat(workbuf,"/");
if(strstr(ptr,workbuf)) break;
}
if(libmapPtr)
@@ -381,7 +381,7 @@ int main (int argc, char** argv) {
exit(1);
}
strcpy(workbuf,libmapPtr->trigger);
- strncat(workbuf,"/include",8);
+ strcat(workbuf,"/include");
ptr=strstr(bufferPtr,workbuf);
if(ptr && (userLibmapPtr != libmapPtr))
{
@@ -407,7 +407,7 @@ int main (int argc, char** argv) {
exit(1);
}
strcpy(workbuf,libmapPtr->lib);
- strncat(workbuf,"/",1);
+ strcat(workbuf,"/");
ptr=strstr(bufferPtr,workbuf);
if(ptr && (userLibmapPtr != libmapPtr))
{
@@ -590,17 +590,17 @@ int main (int argc, char** argv) {
/* Check existance of libraries and print out only installed ones */
- sprintf(libname, "%s/lib%s.a", libpath, libmapPtr->lib);
+ snprintf(libname, libname_usable_size+16, "%s/lib%s.a", libpath, libmapPtr->lib);
if (access(libname,R_OK))
{
- sprintf(libname, "%s/lib%s.so", libpath, libmapPtr->lib);
+ snprintf(libname, libname_usable_size+16, "%s/lib%s.so", libpath, libmapPtr->lib);
if (!access(libname,R_OK))
{
printf("-l%s ",libmapPtr->lib);
}
else /* case MacOS .dylib */
{
- sprintf(libname, "%s/lib%s.dylib", libpath, libmapPtr->lib);
+ snprintf(libname, libname_usable_size+16, "%s/lib%s.dylib", libpath, libmapPtr->lib);
if (!access(libname,R_OK))
{
printf("-l%s ",libmapPtr->lib);
diff --git a/config/sys/Darwin-clang.gmk b/config/sys/Darwin-clang.gmk
index c535bba9c8..9a6b438ae2 100644
--- a/config/sys/Darwin-clang.gmk
+++ b/config/sys/Darwin-clang.gmk
@@ -179,13 +179,13 @@ ifeq ($(G4SYSTEM),Darwin-clang)
define build-granular-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMPDIR); \
- $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \
+ $(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) *.o
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMP)/$(G4SYSTEM); \
- $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \
+ $(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) $(foreach dir,$(SUBLIBS),$(dir)/*.o);
endef
diff --git a/config/sys/Darwin-g++.gmk b/config/sys/Darwin-g++.gmk
index 1ea2d07bef..ad48cd01c6 100644
--- a/config/sys/Darwin-g++.gmk
+++ b/config/sys/Darwin-g++.gmk
@@ -208,13 +208,13 @@ ifeq ($(G4SYSTEM),Darwin-g++)
define build-granular-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMPDIR); \
- $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \
+ $(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) *.o
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMP)/$(G4SYSTEM); \
- $(CXX) -dynamiclib -single_module -undefined dynamic_lookup \
+ $(CXX) -Wl,-w -dynamiclib -single_module -undefined dynamic_lookup \
-o $$libdir/$(@F) $(INTYLIBS) $(foreach dir,$(SUBLIBS),$(dir)/*.o);
endef
diff --git a/config/sys/Linux-clang.gmk b/config/sys/Linux-clang.gmk
index 5c2195d585..f7c5b4cc76 100644
--- a/config/sys/Linux-clang.gmk
+++ b/config/sys/Linux-clang.gmk
@@ -4,7 +4,8 @@
# Original author: Gabriele Cosmo - CERN
#
ifeq ($(G4SYSTEM),Linux-clang)
- CXX := clang++
+ GCCBASE := $(shell which g++ | sed -e "s=/bin/g++==")
+ CXX := clang++ --gcc-toolchain=$(GCCBASE)
CXXFLAGS := -Wall -Wno-non-virtual-dtor -Wno-long-long
CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual
CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe
@@ -45,7 +46,7 @@ ifeq ($(G4SYSTEM),Linux-clang)
G4RUNPATHOPTION := -Wl,-rpath,
G4STATIC_MODE += -Wl,--whole-archive
G4NOSTATIC_MODE += -Wl,--no-whole-archive
- CC := clang
+ CC := clang --gcc-toolchain=$(GCCBASE)
FC := gfortran
FCFLAGS += -fno-automatic -fno-backslash -fno-second-underscore
FCLIBS := -lg2c -lnsl
diff --git a/config/sys/Linux-icc.gmk b/config/sys/Linux-icc.gmk
index d415097327..1bca1c3a98 100644
--- a/config/sys/Linux-icc.gmk
+++ b/config/sys/Linux-icc.gmk
@@ -6,7 +6,7 @@ ifeq ($(G4SYSTEM),Linux-icc)
CXXFLAGS := -W -Wall -ansi -pedantic -Wno-non-virtual-dtor -Wno-long-long
CXXFLAGS += -Wwrite-strings -Wpointer-arith -Woverloaded-virtual
CXXFLAGS += -Wno-variadic-macros -Wshadow -pipe
- CXXFLAGS += -fp-model precise
+ CXXFLAGS += -fp-model precise -diag-disable=10441
CPPFLAGS += -std=c++17
CXXFLAGS += -std=c++17
G4USE_STD17 := 1
@@ -138,12 +138,12 @@ ifeq ($(G4SYSTEM),Linux-icc)
define build-granular-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMPDIR); \
- $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) *.o
+ $(CXX) -diag-disable=10441 -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) *.o
endef
define build-global-shared-lib
@libdir=`(cd $(@D);/bin/pwd)`; \
cd $(G4TMP)/$(G4SYSTEM); \
- $(CXX) -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) \
+ $(CXX) -diag-disable=10441 -Wl,-soname,$(@F) -shared -o $$libdir/$(@F) $(INTYLIBS) \
$(foreach dir,$(SUBLIBS),$(dir)/*.o);
endef
diff --git a/environments/History b/environments/History
index 150d107b1d..8a91119723 100644
--- a/environments/History
+++ b/environments/History
@@ -4,6 +4,12 @@ See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
which **must** added in reverse chronological order (newest at the top). It must **not**
be used as a substitute for writing good git commit messages!
+## 2022-11-15 Ben Morgan (envs-V11-00-01)
+- Remove g4py and zmq environments from toolkit. The source and support for these
+ envs has moved to GitHub under:
+ - [Geant4Py](https://github.com/koichi-murakami/g4python)
+ - [ZMQ](https://github.com/koichi-murakami/zmq-geant4)
+
## 2021-12-10 Ben Morgan (envs-V11-00-00)
- Change to new Markdown History format
diff --git a/environments/README.md b/environments/README.md
new file mode 100644
index 0000000000..64e17d0c61
--- /dev/null
+++ b/environments/README.md
@@ -0,0 +1,14 @@
+# Getting Geant4Py and ZMQ Environments
+
+To enable better support and development of the Geant4Py and ZMQ environments for
+end users, the distribution and build of these as part of the Geant4 toolkit has
+been removed in Geant4 11.1.
+
+Both codes are still available from the original and ongoing upstream development
+repositories on GitHub:
+
+- [Geant4Py](https://github.com/koichi-murakami/g4python)
+- [ZMQ](https://github.com/koichi-murakami/zmq-geant4)
+
+All support enquiries and questions should be directed to the Issues boards on
+those projects.
diff --git a/environments/g4py/CMakeLists.txt b/environments/g4py/CMakeLists.txt
deleted file mode 100644
index 715a437050..0000000000
--- a/environments/g4py/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-# - Top-level CMakeLists.txt for Geant4Py
-# Note that we are assuming it is always part of Geant4, never separately
-# released. That's for later, if required at all.
-# In particular, Geant4Py must be matched exactly to a given Geant4 release
-
-# Require Python 3 or newer, calling Interp before Libs to help find a consistent set
-# Boost python requirement is reliant on correct user config (not yet known how to check
-# which Python an install of Boost Python uses)...
-find_package(PythonInterp 3.0 REQUIRED)
-find_package(PythonLibs REQUIRED)
-find_package(Boost 1.65 REQUIRED python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
-
-# Variables and Functions to help build, organise, and install modules
-include(${CMAKE_CURRENT_SOURCE_DIR}/G4PythonHelpers.cmake)
-
-# - Build package/modules, tests if required
-add_subdirectory(source)
-if(GEANT4_ENABLE_TESTING)
- add_subdirectory(tests)
-endif()
-
-# Add the feature recording here so we can note the Python version
-geant4_add_feature(GEANT4_USE_PYTHON "Building bindings for Python ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}")
-
diff --git a/environments/g4py/G4PythonHelpers.cmake b/environments/g4py/G4PythonHelpers.cmake
deleted file mode 100644
index 648ece11c6..0000000000
--- a/environments/g4py/G4PythonHelpers.cmake
+++ /dev/null
@@ -1,80 +0,0 @@
-# Try and get modules output to config dependent site-packages
-# Can put all Python outputs under GEANT4_PYTHON_OUTPUT_DIR (and conf variants)
-# That's the baseline, packages however need to then adjust output path for
-# any substructure
-set(GEANT4_PYTHON_OUTPUT_DIR "$/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages")
-
-set(CMAKE_INSTALL_PYTHONDIR "${CMAKE_INSTALL_LIBDIR}/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" CACHE PATH "Python modules/packages")
-mark_as_advanced(CMAKE_INSTALL_PYTHONDIR)
-if(NOT IS_ABSOLUTE "${CMAKE_INSTALL_PYTHONDIR}")
- set(CMAKE_INSTALL_FULL_PYTHONDIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_PYTHONDIR}")
-else()
- set(CMAKE_INSTALL_FULL_PYTHONDIR "${CMAKE_INSTALL_PYTHONDIR}")
-endif()
-
-# Extension modules link to libraries so relative RPATH modules to libraries
-file(RELATIVE_PATH GEANT4_PYMODULE_RPATH
- "${CMAKE_INSTALL_FULL_PYTHONDIR}/Geant4"
- "${CMAKE_INSTALL_FULL_LIBDIR}")
-
-# Basic "add module" command to wrap common functionality
-# Should also help when migrating to pybind11 or FindPython builtins
-function(g4py_add_module target_name)
- add_library(${target_name} MODULE ${ARGN})
-
- # Python extension module naming
- set_property(TARGET ${target_name} PROPERTY PREFIX "")
- if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
- set_property(TARGET ${target_name} PROPERTY SUFFIX ".pyd")
- set_property(TARGET ${target_name} PROPERTY DEBUG_SUFFIX "_d")
- endif()
-
- # Adjust output location (may need adjustment on Windows)
- set_property(TARGET ${target_name} PROPERTY LIBRARY_OUTPUT_DIRECTORY "${GEANT4_PYTHON_OUTPUT_DIR}")
- foreach(_conftype ${CMAKE_CONFIGURATION_TYPES})
- string(TOUPPER ${_conftype} _conftype_uppercase)
- set_property(TARGET ${target_name} PROPERTY LIBRARY_OUTPUT_DIRECTORY_${_conftype_uppercase} "${GEANT4_PYTHON_OUTPUT_DIR}")
- endforeach()
-
- # Force linkage to extension system, other deps to be linked by client
- # Use dynamic_lookup on Darwin to avoid direct linking to libpython (Linux has this as default,
- # to be checked for Windows)
- target_include_directories(${target_name} PRIVATE ${PYTHON_INCLUDE_DIRS})
- target_link_libraries(${target_name} PRIVATE Boost::python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR} "$<$:-undefined dynamic_lookup>")
-
- # Workaround to suppress pragma message spam in Boost >= 1.73
- # - See https://github.com/boostorg/python/pull/315
- target_compile_definitions(${target_name} PRIVATE BOOST_BIND_GLOBAL_PLACEHOLDERS)
-endfunction()
-
-
-# Handle core Geant4 modules
-# Wraps g4py_add_module, because we have to avoid duplicate target names
-# (e.g. "G4global" for libG4global.dylib vs G4global.so)
-# It just manages the naming and output name/directory
-function(geant4_add_pymodule _name)
- if(NOT (_name MATCHES "^pyG4[a-zA-Z0-9_]+"))
- message(FATAL_ERROR "Invalid Geant4 Python module name '${_name}'. Names must begin with 'pyG4'")
- endif()
-
- set(_module_target "${_name}")
- string(REGEX REPLACE "^py" "" _module_lib "${_module_target}")
-
- g4py_add_module(${_module_target} ${ARGN})
-
- set_property(TARGET ${_module_target} PROPERTY OUTPUT_NAME "${_module_lib}")
-
- set_property(TARGET ${_module_target} APPEND_STRING PROPERTY LIBRARY_OUTPUT_DIRECTORY "/Geant4")
- foreach(_conftype ${CMAKE_CONFIGURATION_TYPES})
- string(TOUPPER ${_conftype} _conftype_uppercase)
- set_property(TARGET ${_module_target} APPEND_STRING PROPERTY LIBRARY_OUTPUT_DIRECTORY_${_conftype_uppercase} "/Geant4")
- endforeach()
-
- if(UNIX AND NOT APPLE)
- set_property(TARGET ${_module_target} PROPERTY
- INSTALL_RPATH "\$ORIGIN/${GEANT4_PYMODULE_RPATH}")
- elseif(APPLE)
- set_property(TARGET ${_module_target} PROPERTY
- INSTALL_RPATH "@loader_path/${GEANT4_PYMODULE_RPATH}")
- endif()
-endfunction()
diff --git a/environments/g4py/History b/environments/g4py/History
deleted file mode 100644
index 66b3ff30df..0000000000
--- a/environments/g4py/History
+++ /dev/null
@@ -1,323 +0,0 @@
-# Category geant4py History
-
-See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
-which **must** added in reverse chronological order (newest at the top). It must **not**
-be used as a substitute for writing good git commit messages!
-
-
-## 2021-12-10 Ben Morgan (geant4py-V11-00-00)
-- Change to new Markdown History format
-
----
-
-# History entries prior to 11.0
-
-2 Nov. 2021 B.Morgan (geant4py-V10-07-05)
-- Apply GitHub PR #31 from andriish
-- Use exact version of python for boost.python module
-
-31 Aug. 2021 B.Morgan (geant4py-V10-07-04)
-- Remove binding to obsolete member functions of G4Sphere and G4Tubs
- - Either no longer used or cause issues when using Vecgeom
-
-27 August 2021 Ben Morgan (geant4py-V10-07-03)
-- Remove obsolete HepRep(WIRED) driver
-
-26 Aug. 2021 B. Morgan (geant4py-V10-07-02)
-- Remove obsolete VRML1 driver
-
-17 Aug. 2021 J. Hahnfeld (geant4py-V10-07-01)
-- Export binding for G4ElementVector, now that it's different from G4ElementTable
-
-12 Nov. 2021 V. Ivanchenko (geant4py-V10-07-00)
-- TestEm0 - use default Geant4 EM physics, do not use obsolete class
- G4EmProcessOptions
-
-16 Nov. 2020 B. Morgan (geant4py-V10-06-04)
-- Boost 1.73 modified use of its bind and placeholder functionality, resulting
- in Boost.Python spamming pragma messages about deprecation of this.
- See https://github.com/boostorg/python/pull/315. Add BOOST_BIND_GLOBAL_PLACEHOLDERS
- as a private compile definition to geant4py targets to suppress these.
-
-11 Nov. 2020 B. Morgan (geant4py-V10-06-03)
-- Address Bugzilla 2283
-- Make CMAKE_INSTALL_PYTHONDIR a user-configurable cache variable
-- RPATH issue is addressed by use of CMAKE_SKIP_INSTALL_RPATH variable by client
-
-6 Oct. 2020 B. Morgan (geant4py-V10-06-02)
-- Add binding to G4PhysListFactory (GitHub PR #14, contributed by Daniel Hellfeld)
-- Add simple test case of binding.
-
-25 Aug. 2020 B. Morgan (geant4py-V10-06-01)
-- Remove obsolete boost.python indexing suite. Only required on
- very old Boost versions <= 1.33
-
-19 Mar. 2020 B. Morgan (geant4py-V10-06-00)
-- Integrate build, test, and install of geant4py with core Geant4
- CMake buildsystem.
-
-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.
-
-30 Nov. 2017 K. Murakami
- - update for 10.5 release
- - fix CMAKE_INSTALL_PREFIX does not work (id 1924)
-
-24 Nov. 2017 K. Murakami
- - update for 10.4 release
-
-7 Dec. 2016 K. Murakami
- - remove G4VisAttributes::Invisible as deprecated
-
-21 Nov. 2016 K. Murakami
- - fix version strings in __init__.py
-
-18 Nov. 2016 K. Murakami
- - update for 10.3 release
- - CMake modified for unit/integration tests with CTest
- - remove ExN03 physics list
-
-19 Nov. 2015 K. Murakami
- - update CMakeLists.txt, change minimum version requirement to 3.3
- - add exported methods requested by enhansment-id 1613
-
-13 Nov. 2015 K. Murakami
- - update CMakeLists.txt for C++11 migration
- - update for 10.2 release, following changes of class interface.
-
-15 Nov. 2014 K. Murakami
- - complete migration to cmake for building library. (GNUmakefiles removed)
- - update for 10.1 release, following changes of class interface.
- - linker problem of OSX was fixed. (OSX Yosemite tested)
-
-May 25 2014 Koichi Murakami
- - remove IsGeneric() method in pyG4Polyone.cc because that method is removed.
- (bug-id 1544)
- - configure script, physics list is changed to be always turned on.
- (bug-id 1546)
- - pyG4EllipticalCone.cc, add missing return in CreateEllipticalCone() method.
- (bug-id 1586)
-
-15 November 2013 K.Murakami
- - add support for CMake build
- - updated for 10.0 release
- - suppress warnings
-
-8 November 2012 K.Murakami
- - configure script is updated for CMake build
- - updated Geant4 interface for the latest
- - G4SystemOfUnits.hh and G4PhysicalConstants.hh are explictly added.
- - Documentations are updated in Markdown format.
- - some minor updated for examples
-
-23 July 2012 K.Murakami
- - configure script: fixed logics for specifying python include path (bug.1316)
- - pyG4VisManager: (bug.1318))
- added static statement for GetVerbosity.
- fixed GetConcreteInstance returns an insufficient class pointer.
-
-21 July 2012 K.Murakami
- - configure script is updated for internal G4clhep
- - pyG4Run.cc, pyG4Event.cc are updated as non-copyable (9.5.p01) (bug.1317)
- - g4autobuild, g4package scripts are apdated for internal clhep use.
-
-10 Nomvembter 2011 K.Murakami
- - fixes on OSX Lion matters
- - some minor fixes for 9.5 release
-
-8 November 2011 K.Murakami
- - update for 9.5 release
- - eliminate obsolete G4Exception.
-
-1 December 2010 K.Murakami
- - update for chages of G4 classes (G4GDMLParser, physics list)
- - add a new example using GTK (examples/emplot/emcalc_gui.py)
- - experimentally support for Python3
-
-21 June 2010 K.Murakami (tagged as envs-V09-03-01)
- - updates for changes of G4 classes (G4RunManager, physics list)
- - use G4xMultipleScattering for EMLowEpl site-pacakage module
-
-4 June 2010 K.Murakami (tagged as envs-V09-03-00)
- - update for the 9.4 beta release
- - use G4xMultipleScattering instead if G4MultipleScattering class.
- - bug fix in pyG4GDMLParser.cc
-
-27 November 2009 K.Murakami
- - config/g4py.gmk: add -lz as linker options
-
-19 November 2009 K.Murakami
- - add checking gl2ps library in configure script.
- - gl2ps is added in config/g4vis.gmk.
- - update pyPhysicsList.cc for 9.3 release
-
-14 May 2009 K. Murakami (tagged)
- - fixes on configure script and config/module.gmk
- - change default search paths for G4/CLHEP include and lib
-
-3 December 2008 K.Murakami (tagged)
- - modified for the 9.2 releaase.
- * G4Material, G4Isotope, G4Element
-
-30 November 2008 K.Murakami
- - GDML is merged to G4GDML package (g4gdml->gdml)
- add write functionality
-
-30 June 2008 K. Murakami
- - brushup python scripts (accroding with PEP-8)
- - emcalculator.py : move to site-modules
- - add G4CrossSectionHandler
- - EZgeom package is moved to geometry/ezgeom
-
-25 June 2008 K. Murakami
- - configure : fix a wrong incdir variable.
- - config/sys/linux.gmk, linuxx8664gcc :
- add -fpermissive compile option for gcc 4.3
-
-12 June 2008 K. Murakami (1.6.1)
- - configure : fix echo -n problem, add --with-extra-dir flag
- - tools/g4autobuild : add treatment of XERCESCROOT
- - tools/g4pack : fix echo -n problem
-
-4 June 2008 K. Murakami
- - add G4AtomicShells
- - update configure script (compatible with Debian/Ubuntsu sh)
- - cleanup config/*.gmk
- - configire: improve search for python include path
-
-27 May 2008 K.Murakami
- - add some random engines
-
-22 May 2008 K.Murakami
- - fix typo in G4VModularPhysicsList
-
-13 March 2008 K.Murakami (1.6.0)
- - use G4Version.hh directly, instead pyG4Version.hh
- - configure script updated
-
-28 February 2008 K.Murakami
- - fix pyPhysicsList.cc compilation error
- - fix pyG4GDMLParser.cc compilation error
- - G4GDML is automatically detected by configure script
-
-26 November 2007 K.Murakami
- - add G4 GDML module support
- - update PL for 9.1
-
-12 November 2007 K.Murakami (1.5.0)
- - add FTFP_BERT in PL for 9.1
- - add GDML (external lib.) support (experimental)
- - add exposure of G4Navigator
-
-07 November 2007 K.Murakami
- - update for 9.1
- * G4ParticleGun
- * G4NistManager
-
-07 August 2007 K.Murakami (1.4.1)
- - add boolean sold classes
- - add G4PVPlacement constructors for geometry overlap check
- - add gtest06/07 for geometry test
-
-12 July 2007 K.Murakami (1.4.0)
- - add version contorol in pyG4UIterminal.cc
- - bug fix in pyG4VUserDetectorConstruction
- - Construct() method should return PV
- - update G4VSolid
- - add specific CSG solid classes
- - add gtest05 as an example constructing CSG solid geometry in Python
- - a new example of TestEm0 is contributed by Jean
-
-07 June 2007 K.Murakami
- - modified for 9.0
- - pyG4LossTableManager.cc : updated
- - physics lists : removed some staffs
-
-24 May 2007 K.Murakami (1.3.0)
- - implement software abort by Ctrl-C.
- - modified for 8.3/9.0
- - pyG4EmCalculator.cc : updated
- - pyG4LossTableManager.cc : updated
- - pyG4ProductionCutsTable.cc : updated
- - pyG4TwoVector.cc : added
- - physics lists : new staffs are added
-
-01 Dec 2006 K.Murakami (1.2.0)
- - pyG4Material.cc : fix namespace problem
- - pyG4VisManager.cc : replace SetVerboisity with SetVerboseLevel for G4.8.2
- - add messenger for ExN03geom
-
-21 November 2006 K.Murakami (1.1.0)
- - implement G4ExceptionHandler as translation to Python exceptions
- - remove obsolete method; G4VPhysicalVolume::GetObjectRotation()
-
-20 November 2006 K.Murakami
- - modification for G4.8.2
- - add G4Exception and G4ExceptionSeverity
- - modify configure for supporting physics lists
- - add physics list modules
-
-15 November 2006 H. Yoshida
- - add 00README_MACOSX
-
-23 August 2006 K.Murakami
- - add G4Version
- - G4LossTableManager, modify for version evolution
-
-06 August 2006 K.Murakami (1.0.2)
- - modify config tools for building on MacOSX (some side-effects)
- - add tools dir for support tools for building user environment
- - add intercoms dir (move pyG4UImanager.cc from interfacr to intercoms)
- - new exposed staffs;
- G4UImanager, G4UIcommandTree, G4UIcommand, G4UIparameter
- - __init__.py is updeted
- (gUImanager as global, and some modifications)
-
-12 July 2006 K.Murakami (1.0.1)
- - add exposures of G4LossTableManager, G4ProductionCutsTable
- - add site-modules/utls/MCScore
- - add site-modules/physics_lists/EMLowEpl
-
-29 June 2006 K.Murakami
- - "site-modules/primaries/MedicalBeam/MedicalMeam.cc"
- fix a bug in calculation of cos from a sin value
- - remove duplicated DISCLAIMER (ExN03PhysicsList.cc/hh in site-modules)
-
-27 June 2006 K.Murakami
- - fix rpath of boost_python (config/sys/linux.gmk, linuxx8664gcc.gmk)
-
-21 June 2006 K.Murakami
- - sh version of configure script
- - G4UserStackingAction: fixed for not being called
-
-14 June 2006 K.Murakami
- - update 00README
- - update expose of G4Track
- - change python calls pass-by-reference
- (XXXUserAction::XXXAction())
- - change install path of site-modules (lib/site-modules -> lib/)
- - remove COPYING
- - update examples/education/lesson2
-
-07 June 2006 K.Murakami
- - fix segmentation fault at termination
- (XXUserAction-s, GraphicSystem-s)
-
-05 June 2006 K.Murakami
- - add disclaimer for .cc/.hh files
- - some modifications for 08-00-ref-05
- (G4FieldManager/G4EmCalculator/G4VPhysicalVolume/G4ParticleDefinition)
-
-25 April 2006 K.Murakami
- - update to a revised version (local tag: g4py-weekly-23-Apr-06)
- - Directory structure is slightly modified.
- - some classes are newly exposed.
- - some new examples are added.
-
-27 February 2006 K.Murakami
- - commit the first version (local tag: g4py-27-feb-06)
diff --git a/environments/g4py/README.md b/environments/g4py/README.md
deleted file mode 100644
index 76ec00d0c3..0000000000
--- a/environments/g4py/README.md
+++ /dev/null
@@ -1,78 +0,0 @@
-Geant4Py
-========
-
-_A set of python modules for using Geant4_
-
-
-System Requirements
--------------------
-
-### CMake
-Building system is migrated to CMake system.
-
-### Python
-
-Python2.x and Python 3.x (experimental)
-
-### Boost
-
-Boost_Python is needed.
-
-### (Optional)
-
-ROOT for histogramming/analysis
-
-### Tested Platforms
-
-* CentOS7 (Python2)
-* Ubuntu 18.04 LTS (Python3)
-
-How to Install
---------------
-Before building library, *GEANT4_INSTALL* environment variable should be set.
-
- # export GEANT4_INSTALL= (zsh, bash)
- # setenv GEANT4_INSTALL (csh)
- (G4 install path is the path specified by "CMAKE_INSTALL_PREFIX" when building Geant4)
-
-then
-
- # mkdir build
- # cd build
- # cmake ..
- # make
- # make install
-
-By default, g4py is installed in \/lib(64) directory.
-
-Before doing tests with CTest, you have to set environment variables
-for Geant4 data.
-
- # make
- # make install
- # ctest
-
-performs automatic unit/integration tests with CTest.
-
-How to Use:
------------
-Some environment variables are required at run time.
-
-### *PYTHONPATH*
-
-Python module search directories, given by a colon-separated list of directories, like
-
-
- # 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
-
- >>> import Geant4
diff --git a/environments/g4py/examples/CMakeLists.txt b/environments/g4py/examples/CMakeLists.txt
deleted file mode 100644
index 97a391d1f1..0000000000
--- a/environments/g4py/examples/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# - add examples
-
-set(TEST_MODULES_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/examples)
-
-# demos
-add_subdirectory(demos/TestEm0/module)
-add_subdirectory(demos/water_phantom/module)
diff --git a/environments/g4py/examples/History b/environments/g4py/examples/History
deleted file mode 100644
index 29fd60653b..0000000000
--- a/environments/g4py/examples/History
+++ /dev/null
@@ -1,33 +0,0 @@
-# Category g4py-examples History
-
-See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
-which **must** added in reverse chronological order (newest at the top). It must **not**
-be used as a substitute for writing good git commit messages!
-
-
-## 2021-12-10 Ben Morgan (g4py-examples-V11-00-00)
-- Change to new Markdown History format
-
----
-
-# History entries prior to 11.0
-
-12 November 2007 K.Murakami
-- add GDML I/O examples
-
-14 June 2006 K.Murakami
-- Summary
- [demos/water_phantom]
- an example of dose calculation in water phantom with
- on-line histogramming with ROOT
-
- [education/lesson1, lesson2]
- educational examples with TKinter GUI
-
- [emplot]
- examples of plotting photon cross section and stopping power
-
-
-24 June 2005 K.Murakami
-- just created.
-
diff --git a/environments/g4py/examples/README b/environments/g4py/examples/README
deleted file mode 100644
index c445d98866..0000000000
--- a/environments/g4py/examples/README
+++ /dev/null
@@ -1,33 +0,0 @@
--------------------------------------------------------------------
-
-This directory contains a set of examples for Geant4Py.
-
-[demos/water_phantom]
-An example of "water phantom dosimetry"
-
-This demo program shows that a Geant4 application well coworks with ROOT
-on Python front end. VisManager, PrimaryGeneratorAction, UserAction-s,
-histogramming with ROOT are implemented in Python;
- + dose calculation in a water phantom
- + Python overloading of user actions
- + on-line histogramming with ROOT
- + visualization
-
-
-[education]
-Educational examples with Graphical User Interface using TKinter
-
-* lesson1
-The first version of the courseware of the mass attenuation coefficient.
-
-* lesson2
-GUI interface of ExN03, which can control geometry configuration,
-intial particle condition, physics processes, cut value,
-magnetic field and visualization outputs.
-
-[emplot]
-Examples of plotting photon cross sections and stopping powers with ROOT
-
-[gdml]
-Examples of writing/reading user's geometry to/from a GDML file
-
diff --git a/environments/g4py/examples/demos/TestEm0/demo.py b/environments/g4py/examples/demos/TestEm0/demo.py
deleted file mode 100755
index a82fa0e7e1..0000000000
--- a/environments/g4py/examples/demos/TestEm0/demo.py
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# python script for testem0 python version
-#
-# ==================================================================
-import Geant4 as g4
-import testem0
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-
-
-# ==================================================================
-# main
-# ==================================================================
-
-myDC= testem0.DetectorConstruction()
-g4.gRunManager.SetUserInitialization(myDC)
-
-myPL= testem0.PhysicsList()
-g4.gRunManager.SetUserInitialization(myPL)
-
-# set user actions...
-myPGA= testem0.PrimaryGeneratorAction(myDC)
-g4.gRunManager.SetUserAction(myPGA)
-
-myRA= testem0.RunAction(myDC,myPGA)
-
-# set user action classes
-g4.gRunManager.SetUserAction(myRA)
-
-
-
-g4.gRunManager.Initialize()
-
-pg = g4.G4ParticleGun()
-
-materialList = testem0.getMaterialTable();
-
-particleList = testem0.getParticleTable()
-
-enrgyList = ["eV","keV","MeV","GeV","TeV","PeV"]
-
-cutsList = ["um", "mm" , "cm", "m", "km"]
-
-
-
-
-# GUI
-
-from Tkinter import *
-class App(Frame):
-
-
- def init(self):
-
-# title and header
- title = Label(self, text="testem0 empowered by Geant4Py\n\n\n")
- title.grid(row=0, column=1, columnspan = 4)
-
-# particle list box
- particle_title = Label(self, text="Particle")
- particle_title.grid(row=2, column=0)
-
- particleFrame = Frame(self)
- scrollbar2 = Scrollbar(particleFrame)
- scrollbar2.pack(side = RIGHT, fill = Y)
- self.particleListBox = Listbox(particleFrame, yscrollcommand=scrollbar2.set, exportselection=FALSE,height = 6)
- self.particleListBox.pack(side = LEFT)
- for item in particleList:
- self.particleListBox.insert(END, item)
- scrollbar2.config(command=self.particleListBox.yview)
- particleFrame.grid(row=3, column=0)
- self.particleListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=1)
-
-# material list box
- detmaterial_title = Label(self, text="Material")
- detmaterial_title.grid(row=2, column=2)
-
- materialFrame = Frame(self)
- scrollbar = Scrollbar(materialFrame)
- scrollbar.pack(side = RIGHT, fill = Y)
- self.materialListBox = Listbox(materialFrame, yscrollcommand=scrollbar.set, exportselection=FALSE, height = 6)
- self.materialListBox.pack(side = LEFT, fill = Y)
- for item in materialList:
- self.materialListBox.insert(END, item)
- scrollbar.config(command=self.materialListBox.yview)
- materialFrame.grid(row=3, column=2)
- self.materialListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=3)
-
-# energy
- fEnergy = Frame(self)
- energyLabel = Label(self, text="Energy")
- energyLabel.grid(row = 2, column = 4)
-
- scrollbarEnergy = Scrollbar(fEnergy)
- scrollbarEnergy.pack(side = RIGHT, fill = Y)
- self.energyEntry = Entry(fEnergy, width= 8 );
- self.energyEntry.pack(side = TOP)
- self.energyEntry.insert(0, "1.0")
-
- self.energyListBox = Listbox(fEnergy, yscrollcommand=scrollbarEnergy.set,exportselection=FALSE,width=8,height = 5)
- self.energyListBox.pack(side = BOTTOM )
- for item in enrgyList:
- self.energyListBox.insert(END, item)
- scrollbarEnergy.config(command=self.energyListBox.yview)
- fEnergy.grid(row = 3, column = 4 )
- self.energyListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=5)
-
-# cuts
- fCuts = Frame(self)
- cutsLabel = Label(self, text="Cuts", width= 8)
- cutsLabel.grid(row = 2, column = 6)
-
- scrollbarCuts = Scrollbar(fCuts)
- scrollbarCuts.pack(side = RIGHT, fill = Y)
- self.cutsEntry = Entry(fCuts, width= 8);
- self.cutsEntry.pack(side = TOP)
- self.cutsEntry.insert(0, "1.0")
-
- self.cutsListBox = Listbox(fCuts, width= 8 ,yscrollcommand=scrollbarCuts.set,exportselection=FALSE,height = 5)
- self.cutsListBox.pack(side = BOTTOM )
- for item in cutsList:
- self.cutsListBox.insert(END, item)
- scrollbarCuts.config(command=self.cutsListBox.yview)
- fCuts.grid(row = 3, column = 6 )
- self.cutsListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,height = 40)
- fblank.grid(row=4,column=0)
-
-# start a run button
- startBut = Button(self, bg="green", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=5, column=2, sticky=W)
-
-# exit button
- exitBut = Button(self, bg="grey", text="Exit", command=self.quit)
- exitBut.grid(row=5, column=6, sticky=E)
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
- def cmd_beamOn(self):
-
- # get and set particle
- if self.particleListBox.curselection():
- index =int(self.particleListBox.curselection()[0])
- g4.gApplyUICommand("/gun/particle " + particleList[index])
-
- # get and set detector Material
- if self.materialListBox.curselection():
- index =int(self.materialListBox.curselection()[0])
- g4.gApplyUICommand("/testem/det/setMat " + materialList[index])
-
- # get and set energy
- energy = self.energyEntry.get()
- if self.energyListBox.curselection():
- index = int(self.energyListBox.curselection()[0])
- unity = enrgyList[index]
- g4.gApplyUICommand("/gun/energy " + energy + " " + unity)
-
- # get and set cuts
- cuts = self.cutsEntry.get()
- if self.cutsListBox.curselection():
- index = int(self.cutsListBox.curselection()[0])
- unity = cutsList[index]
- g4.gApplyUICommand("/testem/phys/setCuts " + cuts + " " + unity)
-
- # run beamOn
- g4.gRunManager.BeamOn(1)
-
-
-app = App()
-app.mainloop()
-
diff --git a/environments/g4py/examples/demos/TestEm0/module/CMakeLists.txt b/environments/g4py/examples/demos/TestEm0/module/CMakeLists.txt
deleted file mode 100644
index bbc747c642..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-# - build test library
-
-include_directories(
- ${PYTHON_INCLUDE_PATH}
- ${Boost_INCLUDE_DIRS}
- ${GEANT4_INCLUDE_DIR}
-)
-
-link_directories (${GEANT4_LIBRARY_DIR} ${Boost_LIBRARY_DIRS})
-
-# library
-set(_TARGET testem0)
-add_library(
- ${_TARGET} SHARED
- DetectorConstruction.cc
- DetectorMessenger.cc
- PhysListEmStandard.cc
- PhysicsList.cc
- PhysicsListMessenger.cc
- PrimaryGeneratorAction.cc
- RunAction.cc
- pytestem0.cc
-)
-
-set_target_properties(${_TARGET} PROPERTIES PREFIX "")
-set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "testem0")
-set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-
-target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
- ${PYTHON_LIBRARIES})
-
-# install
-install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
diff --git a/environments/g4py/examples/demos/TestEm0/module/DetectorConstruction.cc b/environments/g4py/examples/demos/TestEm0/module/DetectorConstruction.cc
deleted file mode 100644
index e06fbb09c8..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/DetectorConstruction.cc
+++ /dev/null
@@ -1,198 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-
-//
-//
-//
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "DetectorConstruction.hh"
-#include "DetectorMessenger.hh"
-
-#include "G4Material.hh"
-#include "G4NistManager.hh"
-#include "G4Box.hh"
-#include "G4LogicalVolume.hh"
-#include "G4PVPlacement.hh"
-
-#include "G4GeometryManager.hh"
-#include "G4PhysicalVolumeStore.hh"
-#include "G4LogicalVolumeStore.hh"
-#include "G4SolidStore.hh"
-
-#include "G4UnitsTable.hh"
-#include "G4SystemOfUnits.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-DetectorConstruction::DetectorConstruction()
-:pBox(0), aMaterial(0)
-{
- BoxSize = 1*mm;
- DefineMaterials();
- SetMaterial("Germanium");
- detectorMessenger = new DetectorMessenger(this);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-DetectorConstruction::~DetectorConstruction()
-{ delete detectorMessenger;}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4VPhysicalVolume* DetectorConstruction::Construct()
-{
- return ConstructVolumes();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void DetectorConstruction::DefineMaterials()
-{
- //
- // define Elements
- //
- G4double z,a;
-
- G4Element* H = new G4Element("Hydrogen" ,"H" , z= 1., a= 1.01*g/mole);
- G4Element* N = new G4Element("Nitrogen" ,"N" , z= 7., a= 14.01*g/mole);
- G4Element* O = new G4Element("Oxygen" ,"O" , z= 8., a= 16.00*g/mole);
- G4Element* Ge = new G4Element("Germanium","Ge", z=32., a= 72.59*g/mole);
- G4Element* Bi = new G4Element("Bismuth" ,"Bi", z=83., a= 208.98*g/mole);
-
- //
- // define materials
- //
- G4double density;
- G4int ncomponents, natoms;
- G4double fractionmass;
-
- G4Material* Air =
- new G4Material("Air", density= 1.290*mg/cm3, ncomponents=2);
- Air->AddElement(N, fractionmass=70.*perCent);
- Air->AddElement(O, fractionmass=30.*perCent);
-
- G4Material* H2l =
- new G4Material("H2liquid", density= 70.8*mg/cm3, ncomponents=1);
- H2l->AddElement(H, fractionmass=1.);
-
- G4Material* H2O =
- new G4Material("Water", density= 1.000*g/cm3, ncomponents=2);
- H2O->AddElement(H, natoms=2);
- H2O->AddElement(O, natoms=1);
- ///H2O->SetChemicalFormula("H_2O");
- H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
-
- G4Material* steam =
- new G4Material("WaterSteam", density= 1.0*mg/cm3, ncomponents=1);
- steam->AddMaterial(H2O, fractionmass=1.);
- steam->GetIonisation()->SetMeanExcitationEnergy(71.6*eV);
-
- G4Material* BGO =
- new G4Material("BGO", density= 7.10*g/cm3, ncomponents=3);
- BGO->AddElement(O , natoms=12);
- BGO->AddElement(Ge, natoms= 3);
- BGO->AddElement(Bi, natoms= 4);
-
- new G4Material("Aluminium" , z=13., a= 26.98*g/mole, density= 2.700*g/cm3);
- new G4Material("Silicon" , z=14., a= 28.09*g/mole, density= 2.330*g/cm3);
- new G4Material("liquidArgon", z=18., a= 39.95*g/mole, density= 1.390*g/cm3);
- new G4Material("Iron" , z=26., a= 55.85*g/mole, density= 7.870*g/cm3);
- new G4Material("Copper" , z=29., a= 63.55*g/mole, density= 8.960*g/cm3);
- new G4Material("Germanium" , z=32., a= 72.61*g/mole, density= 5.323*g/cm3);
- new G4Material("Silver" , z=47., a=107.87*g/mole, density= 10.50*g/cm3);
- new G4Material("Tungsten" , z=74., a=183.85*g/mole, density= 19.30*g/cm3);
- new G4Material("Lead" , z=82., a=207.19*g/mole, density= 11.35*g/cm3);
- new G4Material("Uranium" , z=92., a=238.03*g/mole, density= 18.95*g/cm3);
-
-
- G4cout << *(G4Material::GetMaterialTable()) << G4endl;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
-{
- // Cleanup old geometry
- G4GeometryManager::GetInstance()->OpenGeometry();
- G4PhysicalVolumeStore::GetInstance()->Clean();
- G4LogicalVolumeStore::GetInstance()->Clean();
- G4SolidStore::GetInstance()->Clean();
-
- G4Box*
- sBox = new G4Box("Container", //its name
- BoxSize/2,BoxSize/2,BoxSize/2); //its dimensions
-
- G4LogicalVolume*
- lBox = new G4LogicalVolume(sBox, //its shape
- aMaterial, //its material
- aMaterial->GetName()); //its name
-
- pBox = new G4PVPlacement(0, //no rotation
- G4ThreeVector(), //at (0,0,0)
- lBox, //its logical volume
- aMaterial->GetName(), //its name
- 0, //its mother volume
- false, //no boolean operation
- 0); //copy number
-
- //always return the root volume
- //
- return pBox;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void DetectorConstruction::PrintParameters()
-{
- G4cout << "\n The Box is " << G4BestUnit(BoxSize,"Length")
- << " of " << aMaterial->GetName() << G4endl;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "G4RunManager.hh"
-
-void DetectorConstruction::SetMaterial(G4String materialChoice)
-{
- // search the material by its name, or build it from nist data base
- G4Material* pttoMaterial =
- G4NistManager::Instance()->FindOrBuildMaterial(materialChoice);
-
- if (pttoMaterial) {
- aMaterial = pttoMaterial;
- if (pBox) G4RunManager::GetRunManager()
- ->DefineWorldVolume(ConstructVolumes());
- } else {
- G4cout << "\n--> warning from DetectorConstruction::SetMaterial : "
- << materialChoice << " not found" << G4endl;
- }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/environments/g4py/examples/demos/TestEm0/module/PhysListEmStandard.cc b/environments/g4py/examples/demos/TestEm0/module/PhysListEmStandard.cc
deleted file mode 100644
index ea5c6f9e8e..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/PhysListEmStandard.cc
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "PhysListEmStandard.hh"
-#include "G4ParticleDefinition.hh"
-#include "G4ProcessManager.hh"
-
-#include "G4ComptonScattering.hh"
-#include "G4GammaConversion.hh"
-#include "G4PhotoElectricEffect.hh"
-
-#include "G4eMultipleScattering.hh"
-#include "G4MuMultipleScattering.hh"
-#include "G4hMultipleScattering.hh"
-
-#include "G4eIonisation.hh"
-#include "G4eBremsstrahlung.hh"
-#include "G4eplusAnnihilation.hh"
-
-#include "G4MuIonisation.hh"
-#include "G4MuBremsstrahlung.hh"
-#include "G4MuPairProduction.hh"
-
-#include "G4hIonisation.hh"
-#include "G4ionIonisation.hh"
-
-#ifdef theParticleIterator
-#undef theParticleIterator
-#endif
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysListEmStandard::PhysListEmStandard(const G4String& name)
- : G4VPhysicsConstructor(name)
-{ }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysListEmStandard::~PhysListEmStandard()
-{ }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysListEmStandard::ConstructProcess()
-{
- G4ParticleTable::G4PTblDicIterator*
- theParticleIterator = theParticleTable-> GetIterator();
-
- // Add standard EM Processes
-
- theParticleIterator->reset();
- while( (*theParticleIterator)() ){
- G4ParticleDefinition* particle = theParticleIterator->value();
- G4ProcessManager* pmanager = particle->GetProcessManager();
- G4String particleName = particle->GetParticleName();
-
- if (particleName == "gamma") {
- // gamma
- pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
- pmanager->AddDiscreteProcess(new G4ComptonScattering);
- pmanager->AddDiscreteProcess(new G4GammaConversion);
-
- } else if (particleName == "e-") {
- //electron
- pmanager->AddProcess(new G4eMultipleScattering, -1, 1,1);
- pmanager->AddProcess(new G4eIonisation, -1, 2,2);
- pmanager->AddProcess(new G4eBremsstrahlung, -1,-3,3);
-
- } else if (particleName == "e+") {
- //positron
- pmanager->AddProcess(new G4eMultipleScattering, -1, 1,1);
- pmanager->AddProcess(new G4eIonisation, -1, 2,2);
- pmanager->AddProcess(new G4eBremsstrahlung, -1,-3,3);
- pmanager->AddProcess(new G4eplusAnnihilation, 0,-1,4);
-
- } else if( particleName == "mu+" ||
- particleName == "mu-" ) {
- //muon
- pmanager->AddProcess(new G4MuMultipleScattering,-1, 1,1);
- pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
- pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
- pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
-
- } else if( particleName == "alpha" || particleName == "GenericIon" ) {
- pmanager->AddProcess(new G4hMultipleScattering,-1, 1,1);
- pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
-
- } else if ((!particle->IsShortLived()) &&
- (particle->GetPDGCharge() != 0.0) &&
- (particle->GetParticleName() != "chargedgeantino")) {
- //all others charged particles except geantino
- pmanager->AddProcess(new G4hMultipleScattering,-1,1,1);
- pmanager->AddProcess(new G4hIonisation, -1,2,2);
- }
- }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
diff --git a/environments/g4py/examples/demos/TestEm0/module/PhysicsList.cc b/environments/g4py/examples/demos/TestEm0/module/PhysicsList.cc
deleted file mode 100644
index 184fd75114..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/PhysicsList.cc
+++ /dev/null
@@ -1,249 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "PhysicsList.hh"
-#include "PhysicsListMessenger.hh"
-
-#include "PhysListEmStandard.hh"
-#include "G4EmStandardPhysics.hh"
-
-#include "G4LossTableManager.hh"
-#include "G4UnitsTable.hh"
-#include "G4SystemOfUnits.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysicsList::PhysicsList()
-: G4VModularPhysicsList()
-{
- G4LossTableManager::Instance();
-
- currentDefaultCut = 1.0*mm;
- cutForGamma = currentDefaultCut;
- cutForElectron = currentDefaultCut;
- cutForPositron = currentDefaultCut;
-
- pMessenger = new PhysicsListMessenger(this);
-
- SetVerboseLevel(1);
-
- // EM physics
- emName = G4String("standard");
- emPhysicsList = new G4EmStandardPhysics(1);
-
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysicsList::~PhysicsList()
-{
- delete pMessenger;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-// Bosons
-#include "G4ChargedGeantino.hh"
-#include "G4Geantino.hh"
-#include "G4Gamma.hh"
-#include "G4OpticalPhoton.hh"
-
-// leptons
-#include "G4MuonPlus.hh"
-#include "G4MuonMinus.hh"
-#include "G4NeutrinoMu.hh"
-#include "G4AntiNeutrinoMu.hh"
-
-#include "G4Electron.hh"
-#include "G4Positron.hh"
-#include "G4NeutrinoE.hh"
-#include "G4AntiNeutrinoE.hh"
-
-// Mesons
-#include "G4PionPlus.hh"
-#include "G4PionMinus.hh"
-#include "G4PionZero.hh"
-#include "G4Eta.hh"
-#include "G4EtaPrime.hh"
-
-#include "G4KaonPlus.hh"
-#include "G4KaonMinus.hh"
-#include "G4KaonZero.hh"
-#include "G4AntiKaonZero.hh"
-#include "G4KaonZeroLong.hh"
-#include "G4KaonZeroShort.hh"
-
-// Baryons
-#include "G4Proton.hh"
-#include "G4AntiProton.hh"
-#include "G4Neutron.hh"
-#include "G4AntiNeutron.hh"
-
-// Nuclei
-#include "G4Deuteron.hh"
-#include "G4Triton.hh"
-#include "G4Alpha.hh"
-#include "G4GenericIon.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::ConstructParticle()
-{
-// pseudo-particles
- G4Geantino::GeantinoDefinition();
- G4ChargedGeantino::ChargedGeantinoDefinition();
-
-// gamma
- G4Gamma::GammaDefinition();
-
-// optical photon
- G4OpticalPhoton::OpticalPhotonDefinition();
-
-// leptons
- G4Electron::ElectronDefinition();
- G4Positron::PositronDefinition();
- G4MuonPlus::MuonPlusDefinition();
- G4MuonMinus::MuonMinusDefinition();
-
- G4NeutrinoE::NeutrinoEDefinition();
- G4AntiNeutrinoE::AntiNeutrinoEDefinition();
- G4NeutrinoMu::NeutrinoMuDefinition();
- G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
-
-// mesons
- G4PionPlus::PionPlusDefinition();
- G4PionMinus::PionMinusDefinition();
- G4PionZero::PionZeroDefinition();
- G4Eta::EtaDefinition();
- G4EtaPrime::EtaPrimeDefinition();
- G4KaonPlus::KaonPlusDefinition();
- G4KaonMinus::KaonMinusDefinition();
- G4KaonZero::KaonZeroDefinition();
- G4AntiKaonZero::AntiKaonZeroDefinition();
- G4KaonZeroLong::KaonZeroLongDefinition();
- G4KaonZeroShort::KaonZeroShortDefinition();
-
-// barions
- G4Proton::ProtonDefinition();
- G4AntiProton::AntiProtonDefinition();
- G4Neutron::NeutronDefinition();
- G4AntiNeutron::AntiNeutronDefinition();
-
-// ions
- G4Deuteron::DeuteronDefinition();
- G4Triton::TritonDefinition();
- G4Alpha::AlphaDefinition();
- G4GenericIon::GenericIonDefinition();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::ConstructProcess()
-{
- // Transportation
- //
- AddTransportation();
-
- // Electromagnetic physics list
- //
- emPhysicsList->ConstructProcess();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::AddPhysicsList(const G4String& name)
-{
- if (verboseLevel>0) {
- G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
- }
-
- if (name == emName) return;
-
- if (name == "local") {
-
- emName = name;
- delete emPhysicsList;
- emPhysicsList = new PhysListEmStandard(name);
-
- } else if (name == "standard") {
-
- emName = name;
- delete emPhysicsList;
- emPhysicsList = new G4EmStandardPhysics(verboseLevel);
-
- } else {
-
- G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
- << " is not defined"
- << G4endl;
- }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "G4Gamma.hh"
-#include "G4Electron.hh"
-#include "G4Positron.hh"
-
-void PhysicsList::SetCuts()
-{
- // set cut values for gamma at first and for e- second and next for e+,
- // because some processes for e+/e- need cut values for gamma
- SetCutValue(cutForGamma, "gamma");
- SetCutValue(cutForElectron, "e-");
- SetCutValue(cutForPositron, "e+");
- DumpCutValuesTable();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::SetCutForGamma(G4double cut)
-{
- cutForGamma = cut;
- SetParticleCuts(cutForGamma, G4Gamma::Gamma());
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::SetCutForElectron(G4double cut)
-{
- cutForElectron = cut;
- SetParticleCuts(cutForElectron, G4Electron::Electron());
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsList::SetCutForPositron(G4double cut)
-{
- cutForPositron = cut;
- SetParticleCuts(cutForPositron, G4Positron::Positron());
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/environments/g4py/examples/demos/TestEm0/module/PhysicsListMessenger.cc b/environments/g4py/examples/demos/TestEm0/module/PhysicsListMessenger.cc
deleted file mode 100644
index ddcc00d274..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/PhysicsListMessenger.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "PhysicsListMessenger.hh"
-
-#include "PhysicsList.hh"
-#include "G4UIdirectory.hh"
-#include "G4UIcmdWithADoubleAndUnit.hh"
-#include "G4UIcmdWithAString.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
-:pPhysicsList(pPhys)
-{
- physDir = new G4UIdirectory("/testem/phys/");
- physDir->SetGuidance("physics list commands");
-
- gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setGCut",this);
- gammaCutCmd->SetGuidance("Set gamma cut.");
- gammaCutCmd->SetParameterName("Gcut",false);
- gammaCutCmd->SetUnitCategory("Length");
- gammaCutCmd->SetRange("Gcut>0.0");
- gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
-
- electCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setECut",this);
- electCutCmd->SetGuidance("Set electron cut.");
- electCutCmd->SetParameterName("Ecut",false);
- electCutCmd->SetUnitCategory("Length");
- electCutCmd->SetRange("Ecut>0.0");
- electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
-
- protoCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setPCut",this);
- protoCutCmd->SetGuidance("Set positron cut.");
- protoCutCmd->SetParameterName("Pcut",false);
- protoCutCmd->SetUnitCategory("Length");
- protoCutCmd->SetRange("Pcut>0.0");
- protoCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
-
- allCutCmd = new G4UIcmdWithADoubleAndUnit("/testem/phys/setCuts",this);
- allCutCmd->SetGuidance("Set cut for all.");
- allCutCmd->SetParameterName("cut",false);
- allCutCmd->SetUnitCategory("Length");
- allCutCmd->SetRange("cut>0.0");
- allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
-
- pListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
- pListCmd->SetGuidance("Add modula physics list.");
- pListCmd->SetParameterName("PList",false);
- pListCmd->AvailableForStates(G4State_PreInit);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-PhysicsListMessenger::~PhysicsListMessenger()
-{
- delete gammaCutCmd;
- delete electCutCmd;
- delete protoCutCmd;
- delete allCutCmd;
- delete pListCmd;
- delete physDir;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
- G4String newValue)
-{
- if( command == gammaCutCmd )
- { pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
-
- if( command == electCutCmd )
- { pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
-
- if( command == protoCutCmd )
- { pPhysicsList->SetCutForPositron(protoCutCmd->GetNewDoubleValue(newValue));}
-
- if( command == allCutCmd )
- {
- G4double cut = allCutCmd->GetNewDoubleValue(newValue);
- pPhysicsList->SetCutForGamma(cut);
- pPhysicsList->SetCutForElectron(cut);
- pPhysicsList->SetCutForPositron(cut);
- }
-
- if( command == pListCmd )
- { pPhysicsList->AddPhysicsList(newValue);}
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/environments/g4py/examples/demos/TestEm0/module/RunAction.cc b/environments/g4py/examples/demos/TestEm0/module/RunAction.cc
deleted file mode 100644
index de2bb14883..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/RunAction.cc
+++ /dev/null
@@ -1,349 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "RunAction.hh"
-#include "DetectorConstruction.hh"
-#include "PrimaryGeneratorAction.hh"
-
-#include "G4Run.hh"
-#include "G4ProcessManager.hh"
-#include "G4UnitsTable.hh"
-#include "G4EmCalculator.hh"
-#include "G4Electron.hh"
-#include "G4SystemOfUnits.hh"
-
-#include
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-RunAction::RunAction(DetectorConstruction* det, PrimaryGeneratorAction* kin)
-:detector(det), primary(kin)
-{ }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-RunAction::~RunAction()
-{ }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void RunAction::BeginOfRunAction(const G4Run*)
-{
- //set precision for printing
- G4int prec = G4cout.precision(6);
-
- // get particle
- G4ParticleDefinition* particle = primary->GetParticleGun()
- ->GetParticleDefinition();
- G4String partName = particle->GetParticleName();
- G4double charge = particle->GetPDGCharge();
- G4double energy = primary->GetParticleGun()->GetParticleEnergy();
-
- // get material
- G4Material* material = detector->GetMaterial();
- G4String matName = material->GetName();
- G4double density = material->GetDensity();
- G4double radl = material->GetRadlen();
-
- G4cout << "\n " << partName << " ("
- << G4BestUnit(energy,"Energy") << ") in "
- << material->GetName() << " (density: "
- << G4BestUnit(density,"Volumic Mass") << "; radiation length: "
- << G4BestUnit(radl, "Length") << ")" << G4endl;
-
- // get cuts
- GetCuts();
- if (charge != 0.) {
- G4cout << "\n Range cuts : \t gamma "
- << std::setw(8) << G4BestUnit(rangeCut[0],"Length")
- << "\t e- " << std::setw(8) << G4BestUnit(rangeCut[1],"Length");
- G4cout << "\n Energy cuts : \t gamma "
- << std::setw(8) << G4BestUnit(energyCut[0],"Energy")
- << "\t e- " << std::setw(8) << G4BestUnit(energyCut[1],"Energy")
- << G4endl;
- }
-
- // get processList and extract EM processes (but not MultipleScattering)
- G4ProcessVector* plist = particle->GetProcessManager()->GetProcessList();
- G4String procName;
- G4double cut;
- std::vector emName;
- std::vector enerCut;
- size_t length = plist->size();
- for (size_t j=0; jGetProcessName();
- cut = energyCut[1];
- if ((procName == "eBrem")||(procName == "muBrems")) cut = energyCut[0];
- if (((*plist)[j]->GetProcessType() == fElectromagnetic) &&
- (procName != "msc")) {
- emName.push_back(procName);
- enerCut.push_back(cut);
- }
- }
-
- // print list of processes
- G4cout << "\n processes : ";
- for (size_t j=0; jGetNumberOfElements() == 1) {
- G4double Z = material->GetZ();
- G4double A = material->GetA();
-
- std::vector sigma0;
- G4double sig, sigtot = 0.;
-
- for (size_t j=0; j sigma1;
- std::vector sigma2;
- G4double Sig, Sigtot = 0.;
-
- for (size_t j=0; j 0.) lambda = 1/sigma1[j];
- G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Length");
- }
-
- //mean free path (g/cm2)
- G4cout << "\n (g/cm2) : ";
- for (size_t j=0; j 0.) lambda = 1/sigma2[j];
- G4cout << "\t" << std::setw(13) << G4BestUnit( lambda, "Mass/Surface");
- }
- G4cout << G4endl;
-
- if (charge == 0.) {
- G4cout.precision(prec);
- G4cout << "\n-------------------------------------------------------------\n"
- << G4endl;
- return;
- }
-
- //get stopping power
- std::vector dedx1;
- std::vector dedx2;
- G4double dedx, dedxtot = 0.;
-
- for (size_t j=0; jGetTableSize();
- const G4MaterialCutsCouple* couple = 0;
- G4int index = 0;
- for (size_t i=0; iGetMaterialCutsCouple(i);
- if (couple->GetMaterial() == detector->GetMaterial()) {index = i; break;}
- }
-
- rangeCut[0] =
- (*(theCoupleTable->GetRangeCutsVector(idxG4GammaCut)))[index];
- rangeCut[1] =
- (*(theCoupleTable->GetRangeCutsVector(idxG4ElectronCut)))[index];
- rangeCut[2] =
- (*(theCoupleTable->GetRangeCutsVector(idxG4PositronCut)))[index];
-
- energyCut[0] =
- (*(theCoupleTable->GetEnergyCutsVector(idxG4GammaCut)))[index];
- energyCut[1] =
- (*(theCoupleTable->GetEnergyCutsVector(idxG4ElectronCut)))[index];
- energyCut[2] =
- (*(theCoupleTable->GetEnergyCutsVector(idxG4PositronCut)))[index];
-
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void RunAction::CriticalEnergy()
-{
- // compute e- critical energy (Rossi definition) and Moliere radius.
- // Review of Particle Physics - Eur. Phys. J. C3 (1998) page 147
- //
- G4EmCalculator emCal;
-
- const G4Material* material = detector->GetMaterial();
- const G4double radl = material->GetRadlen();
- G4double ekin = 5*MeV;
- G4double deioni;
- G4double err = 1., errmax = 0.001;
- G4int iter = 0 , itermax = 10;
- while (err > errmax && iter < itermax) {
- iter++;
- deioni = radl*
- emCal.ComputeDEDX(ekin,G4Electron::Electron(),"eIoni",material);
- err = std::abs(deioni - ekin)/ekin;
- ekin = deioni;
- }
- G4cout << "\n \n critical energy (Rossi) : "
- << "\t" << std::setw(8) << G4BestUnit(ekin,"Energy");
-
- //Pdg formula (only for single material)
- G4double pdga[2] = { 610*MeV, 710*MeV };
- G4double pdgb[2] = { 1.24, 0.92 };
- G4double EcPdg = 0.;
-
- if (material->GetNumberOfElements() == 1) {
- G4int istat = 0;
- if (material->GetState() == kStateGas) istat = 1;
- G4double Zeff = material->GetZ() + pdgb[istat];
- EcPdg = pdga[istat]/Zeff;
- G4cout << "\t\t\t (from Pdg formula : "
- << std::setw(8) << G4BestUnit(EcPdg,"Energy") << ")";
- }
-
- const G4double Es = 21.2052*MeV;
- G4double rMolier1 = Es/ekin, rMolier2 = rMolier1*radl;
- G4cout << "\n Moliere radius : "
- << "\t" << std::setw(8) << rMolier1 << " X0 "
- << "= " << std::setw(8) << G4BestUnit(rMolier2,"Length");
-
- if (material->GetNumberOfElements() == 1) {
- G4double rMPdg = radl*Es/EcPdg;
- G4cout << "\t (from Pdg formula : "
- << std::setw(8) << G4BestUnit(rMPdg,"Length") << ")";
- }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/environments/g4py/examples/demos/TestEm0/module/pytestem0.cc b/environments/g4py/examples/demos/TestEm0/module/pytestem0.cc
deleted file mode 100644
index c38298aa3d..0000000000
--- a/environments/g4py/examples/demos/TestEm0/module/pytestem0.cc
+++ /dev/null
@@ -1,113 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyTestEm0.cc
-//
-// python wrapper for user application
-// 2007 Q
-// ====================================================================
-#include "DetectorConstruction.hh"
-#include "RunAction.hh"
-#include "PhysicsList.hh"
-#include "PrimaryGeneratorAction.hh"
-#include "G4Material.hh"
-#include "G4MaterialTable.hh"
-#include "G4ParticleTable.hh"
-
-#include
-#include
-
-#include
-#include
-
-using namespace boost::python;
-// ========================================================================================
-// Wrap Gean4 methods which are not accessible from python because they return a pointer.
-// ========================================================================================
-boost::python::list getParticleTable()
-{
- // Create a list on heap which will be return to python
- boost::python::list *particleList = new boost::python::list();
-
- // Get particle list fron G4ParticleTable
- G4ParticleTable *g4ParticleList = G4ParticleTable::GetParticleTable();
-
- // Fill python list from g4ParticleList
- for ( int index = 0 ; index <= g4ParticleList->size() ; index++ ) {
- particleList->append ( (std::string) g4ParticleList->GetParticleName(index) );
- }
-
- return *particleList;
-}
-// ====================================================================
-boost::python::list getMaterialTable()
- {
- // Create a list on heap which will be return to python
- boost::python::list *materialTableList = new boost::python::list();
-
- // Get material list fron G4Material
- G4MaterialTable materialList = *G4Material::GetMaterialTable();
-
- std::vector::iterator itVectorData;
- for(itVectorData = materialList.begin(); itVectorData != materialList.end(); itVectorData++) {
- materialTableList->append ( (std::string)(*(itVectorData))->GetName()) ;
-
- }
- return *materialTableList;
-}
-
-
-// ====================================================================
-// Expose to Python
-// ====================================================================
-
-BOOST_PYTHON_MODULE(testem0) {
-
- def ("getMaterialTable", getMaterialTable);
-
- def ("getParticleTable", getParticleTable);
-
- class_ >
- ("DetectorConstruction", "testEm0 detector")
- .def("SetMaterial",&DetectorConstruction::SetMaterial)
- ;
-
- class_ >
- ("PrimaryGeneratorAction", init())
- ;
-
- class_ >
- ("RunAction", init())
- ;
-
- class_ >
- ("PhysicsList", "testEm0 physics list")
- ;
-}
diff --git a/environments/g4py/examples/demos/TestEm0/python3/testem0.py b/environments/g4py/examples/demos/TestEm0/python3/testem0.py
deleted file mode 100755
index 81fba79927..0000000000
--- a/environments/g4py/examples/demos/TestEm0/python3/testem0.py
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/usr/bin/python3
-# ==================================================================
-# python script for TestEm0 python version
-#
-# ==================================================================
-import Geant4 as g4
-import TestEm0
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-
-
-# ==================================================================
-# main
-# ==================================================================
-
-myDC= TestEm0.DetectorConstruction()
-g4.gRunManager.SetUserInitialization(myDC)
-
-myPL= TestEm0.PhysicsList()
-g4.gRunManager.SetUserInitialization(myPL)
-
-# set user actions...
-myPGA= TestEm0.PrimaryGeneratorAction(myDC)
-g4.gRunManager.SetUserAction(myPGA)
-
-myRA= TestEm0.RunAction(myDC,myPGA)
-
-# set user action classes
-g4.gRunManager.SetUserAction(myRA)
-
-
-
-g4.gRunManager.Initialize()
-
-pg = g4.G4ParticleGun()
-
-materialList = TestEm0.getMaterialTable();
-
-particleList = TestEm0.getParticleTable()
-
-enrgyList = ["eV","keV","MeV","GeV","TeV","PeV"]
-
-cutsList = ["um", "mm" , "cm", "m", "km"]
-
-
-
-
-# GUI
-
-from tkinter import *
-class App(Frame):
-
-
- def init(self):
-
-# title and header
- title = Label(self, text="TestEm0 empowered by Geant4Py\n\n\n")
- title.grid(row=0, column=1, columnspan = 4)
-
-# particle list box
- particle_title = Label(self, text="Particle")
- particle_title.grid(row=2, column=0)
-
- particleFrame = Frame(self)
- scrollbar2 = Scrollbar(particleFrame)
- scrollbar2.pack(side = RIGHT, fill = Y)
- self.particleListBox = Listbox(particleFrame, yscrollcommand=scrollbar2.set, exportselection=FALSE,height = 6)
- self.particleListBox.pack(side = LEFT)
- for item in particleList:
- self.particleListBox.insert(END, item)
- scrollbar2.config(command=self.particleListBox.yview)
- particleFrame.grid(row=3, column=0)
- self.particleListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=1)
-
-# material list box
- detmaterial_title = Label(self, text="Material")
- detmaterial_title.grid(row=2, column=2)
-
- materialFrame = Frame(self)
- scrollbar = Scrollbar(materialFrame)
- scrollbar.pack(side = RIGHT, fill = Y)
- self.materialListBox = Listbox(materialFrame, yscrollcommand=scrollbar.set, exportselection=FALSE, height = 6)
- self.materialListBox.pack(side = LEFT, fill = Y)
- for item in materialList:
- self.materialListBox.insert(END, item)
- scrollbar.config(command=self.materialListBox.yview)
- materialFrame.grid(row=3, column=2)
- self.materialListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=3)
-
-# energy
- fEnergy = Frame(self)
- energyLabel = Label(self, text="Energy")
- energyLabel.grid(row = 2, column = 4)
-
- scrollbarEnergy = Scrollbar(fEnergy)
- scrollbarEnergy.pack(side = RIGHT, fill = Y)
- self.energyEntry = Entry(fEnergy, width= 8 );
- self.energyEntry.pack(side = TOP)
- self.energyEntry.insert(0, "1.0")
-
- self.energyListBox = Listbox(fEnergy, yscrollcommand=scrollbarEnergy.set,exportselection=FALSE,width=8,height = 5)
- self.energyListBox.pack(side = BOTTOM )
- for item in enrgyList:
- self.energyListBox.insert(END, item)
- scrollbarEnergy.config(command=self.energyListBox.yview)
- fEnergy.grid(row = 3, column = 4 )
- self.energyListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,width = 40)
- fblank.grid(row=3,column=5)
-
-# cuts
- fCuts = Frame(self)
- cutsLabel = Label(self, text="Cuts", width= 8)
- cutsLabel.grid(row = 2, column = 6)
-
- scrollbarCuts = Scrollbar(fCuts)
- scrollbarCuts.pack(side = RIGHT, fill = Y)
- self.cutsEntry = Entry(fCuts, width= 8);
- self.cutsEntry.pack(side = TOP)
- self.cutsEntry.insert(0, "1.0")
-
- self.cutsListBox = Listbox(fCuts, width= 8 ,yscrollcommand=scrollbarCuts.set,exportselection=FALSE,height = 5)
- self.cutsListBox.pack(side = BOTTOM )
- for item in cutsList:
- self.cutsListBox.insert(END, item)
- scrollbarCuts.config(command=self.cutsListBox.yview)
- fCuts.grid(row = 3, column = 6 )
- self.cutsListBox.select_set(0)
-
-# separator frame
- fblank = Frame(self,height = 40)
- fblank.grid(row=4,column=0)
-
-# start a run button
- startBut = Button(self, bg="green", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=5, column=2, sticky=W)
-
-# exit button
- exitBut = Button(self, bg="grey", text="Exit", command=self.quit)
- exitBut.grid(row=5, column=6, sticky=E)
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
- def cmd_beamOn(self):
-
- # get and set particle
- if self.particleListBox.curselection():
- index =int(self.particleListBox.curselection()[0])
- g4.gApplyUICommand("/gun/particle " + particleList[index])
-
- # get and set detector Material
- if self.materialListBox.curselection():
- index =int(self.materialListBox.curselection()[0])
- g4.gApplyUICommand("/testem/det/setMat " + materialList[index])
-
- # get and set energy
- energy = self.energyEntry.get()
- if self.energyListBox.curselection():
- index = int(self.energyListBox.curselection()[0])
- unity = enrgyList[index]
- g4.gApplyUICommand("/gun/energy " + energy + " " + unity)
-
- # get and set cuts
- cuts = self.cutsEntry.get()
- if self.cutsListBox.curselection():
- index = int(self.cutsListBox.curselection()[0])
- unity = cutsList[index]
- g4.gApplyUICommand("/testem/phys/setCuts " + cuts + " " + unity)
-
- # run beamOn
- g4.gRunManager.BeamOn(1)
-
-
-app = App()
-app.mainloop()
-
diff --git a/environments/g4py/examples/demos/water_phantom/demo.py b/environments/g4py/examples/demos/water_phantom/demo.py
deleted file mode 100755
index 1fceca5ca9..0000000000
--- a/environments/g4py/examples/demos/water_phantom/demo.py
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# python script for Geant4Py test
-#
-# gtest01
-# - check basic control flow
-# ==================================================================
-from Geant4 import *
-import demo_wp
-import g4py.MedicalBeam
-import ROOT
-
-# ==================================================================
-# ROOT PART #
-# ==================================================================
-
-# ------------------------------------------------------------------
-def init_root():
-# ------------------------------------------------------------------
- ROOT.gROOT.Reset()
-
- # plot style
- ROOT.gStyle.SetTextFont(42)
- ROOT.gStyle.SetTitleFont(42, "X")
- ROOT.gStyle.SetLabelFont(42, "X")
- ROOT.gStyle.SetTitleFont(42, "Y")
- ROOT.gStyle.SetLabelFont(42, "Y")
-
- global gCanvas
- gCanvas= ROOT.TCanvas("water_phantom_plots",
- "Water Phantom Demo Plots",
- 620, 30, 800, 800)
-
-# ------------------------------------------------------------------
-def hini():
-# ------------------------------------------------------------------
- global gPad1
- gPad1= ROOT.TPad("2D", "2D", 0.02, 0.5, 0.98, 1.)
- gPad1.Draw()
- gPad1.cd()
-
- ROOT.gStyle.SetPalette(1);
-
- global hist_dose2d
- hist_dose2d= ROOT.TH2D("2D Dose", "Dose Distribution",
- 200, 0., 400.,
- 81, -81., 81.)
- hist_dose2d.SetXTitle("Z (mm)")
- hist_dose2d.SetYTitle("X (mm)")
- hist_dose2d.SetStats(0)
- hist_dose2d.Draw("colz")
-
- gCanvas.cd()
- global gPad2
- gPad2= ROOT.TPad("Z", "Z", 0.02, 0., 0.98, 0.5)
- gPad2.Draw()
- gPad2.cd()
-
- global hist_dosez
- hist_dosez= ROOT.TH1D("Z Dose", "Depth Dose", 200, 0., 400.)
- hist_dosez.SetXTitle("(mm)")
- hist_dosez.SetYTitle("Accumulated Dose (MeV)")
- hist_dosez.Draw()
-
-# ------------------------------------------------------------------
-def hshow():
-# ------------------------------------------------------------------
- gPad1.cd()
- hist_dose2d.Draw("colz")
- gPad2.cd()
- hist_dosez.Draw()
-
-
-# ==================================================================
-# Geant4 PART #
-# ==================================================================
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-class MyPrimaryGeneratorAction(G4VUserPrimaryGeneratorAction):
- "My Primary Generator Action"
-
- def __init__(self):
- G4VUserPrimaryGeneratorAction.__init__(self)
- self.particleGun= G4ParticleGun(1)
-
- def GeneratePrimaries(self, event):
- self.particleGun.GeneratePrimaryVertex(event)
-
-# ------------------------------------------------------------------
-class MyRunAction(G4UserRunAction):
- "My Run Action"
-
- def EndOfRunAction(self, run):
- print "*** End of Run"
- print "- Run sammary : (id= %d, #events= %d)" \
- % (run.GetRunID(), run.GetNumberOfEventToBeProcessed())
-
-# ------------------------------------------------------------------
-class MyEventAction(G4UserEventAction):
- "My Event Action"
-
- def EndOfEventAction(self, event):
- gPad1.Modified()
- gPad1.Update()
- gPad2.Modified()
- gPad2.Update()
- ROOT.gSystem.ProcessEvents()
-
-# ------------------------------------------------------------------
-class MySteppingAction(G4UserSteppingAction):
- "My Stepping Action"
-
- def UserSteppingAction(self, step):
- pass
-
-# ------------------------------------------------------------------
-class ScoreSD(G4VSensitiveDetector):
- "SD for score voxels"
-
- def __init__(self):
- G4VSensitiveDetector.__init__(self, "ScoreVoxel")
-
- def ProcessHits(self, step, rohist):
- preStepPoint= step.GetPreStepPoint()
- if(preStepPoint.GetCharge() == 0):
- return
-
- track= step.GetTrack()
- touchable= track.GetTouchable()
- voxel_id= touchable.GetReplicaNumber()
- dedx= step.GetTotalEnergyDeposit()
- xz= posXZ(voxel_id)
- hist_dose2d.Fill(xz[1], xz[0], dedx/MeV)
- if( abs(xz[0]) <= 100 ):
- hist_dosez.Fill(xz[1], dedx/MeV)
-
-# ------------------------------------------------------------------
-def posXZ(copyN):
- dd= 2.*mm
- nx= 81
-
- iz= copyN/nx
- ix= copyN-iz*nx-nx/2
-
- x0= ix*dd
- z0= (iz+0.5)*dd
- return (x0,z0)
-
-
-# ==================================================================
-# main
-# ==================================================================
-# init ROOT...
-init_root()
-hini()
-
-# configure application
-#app= demo_wp.MyApplication()
-#app.Configure()
-
-myMaterials= demo_wp.MyMaterials()
-myMaterials.Construct()
-
-myDC= demo_wp.MyDetectorConstruction()
-gRunManager.SetUserInitialization(myDC)
-
-myPL= FTFP_BERT()
-gRunManager.SetUserInitialization(myPL)
-
-# set user actions...
-myPGA= MyPrimaryGeneratorAction()
-gRunManager.SetUserAction(myPGA)
-
-myRA= MyRunAction()
-gRunManager.SetUserAction(myRA)
-
-myEA= MyEventAction()
-gRunManager.SetUserAction(myEA)
-
-#mySA= MySteppingAction()
-#gRunManager.SetUserAction(mySA)
-
-# set particle gun
-#pg= myPGA.particleGun
-#pg.SetParticleByName("proton")
-#pg.SetParticleEnergy(230.*MeV)
-#pg.SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.))
-#pg.SetParticlePosition(G4ThreeVector(0.,0.,-50.)*cm)
-
-# medical beam
-beam= g4py.MedicalBeam.Construct()
-beam.particle= "proton"
-beam.kineticE= 230.*MeV
-#beam.particle= "gamma"
-#beam.kineticE= 1.77*MeV
-beam.sourcePosition= G4ThreeVector(0.,0.,-100.*cm)
-beam.SSD= 100.*cm
-beam.fieldXY= [5.*cm, 5.*cm]
-
-# initialize
-gRunManager.Initialize()
-
-# set SD (A SD should be set after geometry construction)
-scoreSD= ScoreSD()
-myDC.SetSDtoScoreVoxel(scoreSD)
-
-# visualization
-gApplyUICommand("/control/execute vis.mac")
-
-# beamOn
-gRunManager.BeamOn(100)
-
-#ROOT.gSystem.Run()
-
diff --git a/environments/g4py/examples/demos/water_phantom/module/CMakeLists.txt b/environments/g4py/examples/demos/water_phantom/module/CMakeLists.txt
deleted file mode 100644
index e82d4bdc87..0000000000
--- a/environments/g4py/examples/demos/water_phantom/module/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-# - build test library
-
-include_directories(
- ${PYTHON_INCLUDE_PATH}
- ${Boost_INCLUDE_DIRS}
- ${GEANT4_INCLUDE_DIR}
-)
-
-link_directories (${GEANT4_LIBRARY_DIR} ${Boost_LIBRARY_DIRS})
-
-# library
-set(_TARGET demo_wp)
-add_library(
- ${_TARGET} SHARED
- MyDetectorConstruction.cc
- MyMaterials.cc
- pydemo_wp.cc
-)
-
-set_target_properties(${_TARGET} PROPERTIES PREFIX "")
-set_target_properties(${_TARGET} PROPERTIES OUTPUT_NAME "demo_wp")
-set_target_properties(${_TARGET} PROPERTIES SUFFIX ".so")
-
-target_link_libraries (${_TARGET}
- ${GEANT4_LIBRARIES_WITH_VIS} boost_python
- ${PYTHON_LIBRARIES})
-
-# install
-install(TARGETS ${_TARGET} LIBRARY DESTINATION ${TEST_MODULES_INSTALL_DIR})
diff --git a/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.cc b/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.cc
deleted file mode 100644
index 748ab150a7..0000000000
--- a/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.cc
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// MyDetectorConstruction.cc
-//
-// 2005 Q
-// ====================================================================
-#include "MyDetectorConstruction.hh"
-
-#include "G4Material.hh"
-#include "G4Box.hh"
-#include "G4LogicalVolume.hh"
-#include "G4PVPlacement.hh"
-#include "G4VisAttributes.hh"
-#include "G4SystemOfUnits.hh"
-
-// ====================================================================
-//
-// class description
-//
-// ====================================================================
-
-
-////////////////////////////////////////////////
-MyDetectorConstruction::MyDetectorConstruction()
- : scoreVoxel(0)
-////////////////////////////////////////////////
-{
-}
-
-/////////////////////////////////////////////////
-MyDetectorConstruction::~MyDetectorConstruction()
-/////////////////////////////////////////////////
-{
-}
-
-//////////////////////////////////////////////////////
-G4VPhysicalVolume* MyDetectorConstruction::Construct()
-//////////////////////////////////////////////////////
-{
- G4Material* mate;
- G4VisAttributes* va;
-
- // ==============================================================
- // world volume
- // ==============================================================
- G4Box* areaSolid= new G4Box("area", 25.*cm, 25.*cm, 1.1*m);
- G4Material* vacuum= G4Material::GetMaterial("Vacuum");
- G4LogicalVolume* areaLV= new G4LogicalVolume(areaSolid, vacuum, "area");
- G4PVPlacement* area= new G4PVPlacement(0, G4ThreeVector(), "area",
- areaLV, 0, false, 0);
- // vis. attributes
- va= new G4VisAttributes(G4Color(1.,1.,1.));
- va-> SetVisibility(false);
- areaLV-> SetVisAttributes(va);
-
- // ==============================================================
- // phantom
- // ==============================================================
- // water phantom
- const double dxyphantom= 40.*cm;
- const double dzphantom= 50.*cm;
-
- G4Box* sphantom= new G4Box("phantom",
- dxyphantom/2., dxyphantom/2., dzphantom/2.);
- G4Material* water= G4Material::GetMaterial("Water");
- G4LogicalVolume* lphantom= new G4LogicalVolume(sphantom,
- water, "phantom");
- G4PVPlacement* phantom= new G4PVPlacement(0,
- G4ThreeVector(0.,0., dzphantom/2.),
- lphantom, "phantom",
- areaLV, false, 0);
-
- va= new G4VisAttributes(G4Color(0.,0.1,0.8));
- lphantom-> SetVisAttributes(va);
-
- // score voxels
- const G4double dvoxel= 2.*mm;
- const G4double dvoxel_y= 20.*mm;
-
- G4Box* svoxel= new G4Box("voxel", dvoxel/2., dvoxel_y/2., dvoxel/2.);
- scoreVoxel= new G4LogicalVolume(svoxel, water, "voxel");
- va= new G4VisAttributes(G4Color(0.,0.8,0.8));
- va-> SetVisibility(false);
- scoreVoxel-> SetVisAttributes(va);
-
- G4int ix, iz;
- G4int index=0;
- for (iz=0; iz<200; iz++) {
- for (ix=-40; ix<=40; ix++) {
- G4double x0= ix*dvoxel;
- G4double z0= -dzphantom/2.+(iz+0.5)*dvoxel;
- G4PVPlacement* pvoxel= new
- G4PVPlacement(0, G4ThreeVector(x0, 0., z0),
- scoreVoxel, "voxel", lphantom,
- false, index);
- index++;
- }
- }
-
- return area;
-}
-
-
-/////////////////////////////////////////////////////////////////////////
-void MyDetectorConstruction::SetSDtoScoreVoxel(G4VSensitiveDetector* asd)
-/////////////////////////////////////////////////////////////////////////
-{
- if(scoreVoxel) {
- scoreVoxel-> SetSensitiveDetector(asd);
- }
-}
-
diff --git a/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.hh b/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.hh
deleted file mode 100644
index d2039aa759..0000000000
--- a/environments/g4py/examples/demos/water_phantom/module/MyDetectorConstruction.hh
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// MyDetectorConstruction.hh
-//
-// 2005 Q
-// ====================================================================
-#ifndef MY_DETECTOR_CONSTRUCTION_H
-#define MY_DETECTOR_CONSTRUCTION_H
-
-#include "G4VUserDetectorConstruction.hh"
-
-// ====================================================================
-//
-// class definition
-//
-// ====================================================================
-class G4LogicalVolume;
-class G4VSensitiveDetector;
-
-class MyDetectorConstruction : public G4VUserDetectorConstruction {
-private:
- G4LogicalVolume* scoreVoxel;
-
-public:
- MyDetectorConstruction();
- ~MyDetectorConstruction();
-
- virtual G4VPhysicalVolume* Construct();
-
- void SetSDtoScoreVoxel(G4VSensitiveDetector* asd);
-
-};
-
-#endif
diff --git a/environments/g4py/examples/demos/water_phantom/module/MyMaterials.cc b/environments/g4py/examples/demos/water_phantom/module/MyMaterials.cc
deleted file mode 100644
index fe159e7c9c..0000000000
--- a/environments/g4py/examples/demos/water_phantom/module/MyMaterials.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// MyMaterials.cc
-//
-// 2005 Q
-// ====================================================================
-#include "MyMaterials.hh"
-#include "G4Material.hh"
-#include "G4SystemOfUnits.hh"
-#include "G4PhysicalConstants.hh"
-
-// ====================================================================
-//
-// class description
-//
-// ====================================================================
-
-//////////////////////////
-MyMaterials::MyMaterials()
-//////////////////////////
-{
-}
-
-
-///////////////////////////
-MyMaterials::~MyMaterials()
-///////////////////////////
-{
-}
-
-
-/////////////////////////////
-void MyMaterials::Construct()
-/////////////////////////////
-{
- G4double A, Z;
-
- // ------------------------------------------------------------------------
- // Elements
- // ------------------------------------------------------------------------
- G4Element* elH = new G4Element("Hydrogen","H", Z=1., A=1.00794*g/mole);
- G4Element* elC = new G4Element("Carbon", "C", Z=6., A= 12.011 *g/mole);
- G4Element* elN = new G4Element("Nitrogen","N", Z=7., A= 14.00674*g/mole);
- G4Element* elO = new G4Element("Oxygen", "O", Z=8., A= 15.9994*g/mole);
-
- // ------------------------------------------------------------------------
- // Materials
- // ------------------------------------------------------------------------
- G4double density, massfraction;
- G4int natoms, nel;
-
- // temperature of experimental hall is controlled at 20 degree.
- const G4double expTemp= STP_Temperature+20.*kelvin;
-
- // vacuum
- density= universe_mean_density;
- G4Material* Vacuum= new G4Material("Vacuum", density, nel=2);
- Vacuum-> AddElement(elN, .7);
- Vacuum-> AddElement(elO, .3);
-
- // air
- density= 1.2929e-03 *g/cm3; // at 20 degree
- G4Material* Air= new G4Material("Air", density, nel=2,
- kStateGas, expTemp);
- G4double ttt= 75.47+23.20;
- Air-> AddElement(elN, massfraction= 75.47/ttt);
- Air-> AddElement(elO, massfraction= 23.20/ttt);
-
- // water
- density= 1.000*g/cm3;
- G4Material* H2O= new G4Material("Water", density, nel=2);
- H2O-> AddElement(elH, natoms=2);
- H2O-> AddElement(elO, natoms=1);
-
- // alminium
- A= 26.98 *g/mole;
- density= 2.70 *g/cm3;
- G4Material* Al= new G4Material("Al", Z=13., A, density);
-
- // iron
- A= 55.847 *g/mole;
- density= 7.87 *g/cm3;
- G4Material* Fe= new G4Material("Iron", Z=26., A, density);
-
- // lead
- A= 207.2 *g/mole;
- density= 11.35 *g/cm3;
- G4Material* Pb= new G4Material("Lead", Z=82., A, density);
-
- // scintillator (Polystyene(C6H5CH=CH2))
- density= 1.032 *g/cm3;
- G4Material* Scinti= new G4Material("Scinti", density, nel=2);
- Scinti-> AddElement(elC, natoms=8);
- Scinti-> AddElement(elH, natoms=8);
-
-}
-
diff --git a/environments/g4py/examples/demos/water_phantom/module/pydemo_wp.cc b/environments/g4py/examples/demos/water_phantom/module/pydemo_wp.cc
deleted file mode 100644
index ac557d4065..0000000000
--- a/environments/g4py/examples/demos/water_phantom/module/pydemo_wp.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pydemo_wp.cc
-//
-// python wrapper for user application
-// 2005 Q
-// ====================================================================
-#include
-#include "MyMaterials.hh"
-#include "MyDetectorConstruction.hh"
-#include "G4VSensitiveDetector.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// Expose to Python
-// ====================================================================
-
-BOOST_PYTHON_MODULE(demo_wp) {
- class_("MyMaterials", "my material")
- .def("Construct", &MyMaterials::Construct)
- ;
-
- class_ >
- ("MyDetectorConstruction", "my detector")
- .def("SetSDtoScoreVoxel", &MyDetectorConstruction::SetSDtoScoreVoxel)
- ;
-}
-
diff --git a/environments/g4py/examples/demos/water_phantom/test.py b/environments/g4py/examples/demos/water_phantom/test.py
deleted file mode 100755
index f1597f8799..0000000000
--- a/environments/g4py/examples/demos/water_phantom/test.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# python script for Geant4Py test
-#
-# ==================================================================
-from Geant4 import *
-import demo_wp
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-class MyPrimaryGeneratorAction(G4VUserPrimaryGeneratorAction):
- "My Primary Generator Action"
-
- def __init__(self):
- G4VUserPrimaryGeneratorAction.__init__(self)
- self.particleGun= G4ParticleGun(1)
-
- def GeneratePrimaries(self, event):
- self.particleGun.GeneratePrimaryVertex(event)
-
-# ------------------------------------------------------------------
-class MyRunAction(G4UserRunAction):
- "My Run Action"
-
- def EndOfRunAction(self, run):
- print "*** End of Run"
- print "- Run sammary : (id= %d, #events= %d)" \
- % (run.GetRunID(), run.GetNumberOfEventToBeProcessed())
-
-# ------------------------------------------------------------------
-class MyEventAction(G4UserEventAction):
- "My Event Action"
-
- def EndOfEventAction(self, event):
- pass
-
-# ------------------------------------------------------------------
-class MySteppingAction(G4UserSteppingAction):
- "My Stepping Action"
-
- def UserSteppingAction(self, step):
- pass
- #print "*** dE/dx in current step=", step.GetTotalEnergyDeposit()
- preStepPoint= step.GetPreStepPoint()
- track= step.GetTrack()
- touchable= track.GetTouchable()
- #print "*** vid= ", touchable.GetReplicaNumber()
-
-
-# ==================================================================
-# main
-# ==================================================================
-myMaterials= demo_wp.MyMaterials()
-myMaterials.Construct()
-
-myDC= demo_wp.MyDetectorConstruction()
-gRunManager.SetUserInitialization(myDC)
-
-myPL= FTFP_BERT()
-gRunManager.SetUserInitialization(myPL)
-
-# set user actions...
-myPGA= MyPrimaryGeneratorAction()
-gRunManager.SetUserAction(myPGA)
-
-myRA= MyRunAction()
-gRunManager.SetUserAction(myRA)
-
-myEA= MyEventAction()
-gRunManager.SetUserAction(myEA)
-
-mySA= MySteppingAction()
-gRunManager.SetUserAction(mySA)
-
-
-# set particle gun
-pg= myPGA.particleGun
-pg.SetParticleByName("proton")
-pg.SetParticleEnergy(230.*MeV)
-pg.SetParticleMomentumDirection(G4ThreeVector(0., 0., 1.))
-pg.SetParticlePosition(G4ThreeVector(0.,0.,-20.)*cm)
-
-gRunManager.Initialize()
-
-# visualization
-gApplyUICommand("/control/execute vis.mac")
-
-# beamOn
-#gRunManager.BeamOn(3)
-
-
diff --git a/environments/g4py/examples/demos/water_phantom/vis.mac b/environments/g4py/examples/demos/water_phantom/vis.mac
deleted file mode 100644
index ee558624f7..0000000000
--- a/environments/g4py/examples/demos/water_phantom/vis.mac
+++ /dev/null
@@ -1,16 +0,0 @@
-# vis.mac
-
-/vis/open OGLSX
-
-/vis/scene/create
-/vis/scene/add/volume
-
-/vis/sceneHandler/attach
-
-/vis/viewer/set/viewpointThetaPhi 90. 0.
-
-/tracking/storeTrajectory 1
-/vis/scene/add/trajectories
-/vis/scene/endOfEventAction accumulate
-#/vis/scene/endOfEventAction refresh
-
diff --git a/environments/g4py/examples/education/lesson1/History b/environments/g4py/examples/education/lesson1/History
deleted file mode 100644
index 9dd4350935..0000000000
--- a/environments/g4py/examples/education/lesson1/History
+++ /dev/null
@@ -1,43 +0,0 @@
-# Category g4py-examples-education History
-
-See `CONTRIBUTING.rst` for details of **required** info/format for each entry,
-which **must** added in reverse chronological order (newest at the top). It must **not**
-be used as a substitute for writing good git commit messages!
-
-
-## 2021-12-10 Ben Morgan (g4py-examples-education-V11-00-00)
-- Change to new Markdown History format
-
----
-
-# History entries prior to 11.0
-
-27 Sep. 2006 Hajime Yoshida
- - Lesson1.py as before
- - Lesson1withN03.py with the physics list of N03
- - Lesson2Wx.py N03 physics list AND wxPython GUI
-
-09 March 2006
-
-Hajime Yoshida
-
-The first version of mass attenuation coefficient
-
- - Lesson1.py
- select absorber material
- set its thickness upto 500 mm
- select beam particle
- set its energy upto 100 MeV
- set nu of events up to 100
- run
-
- and then
- zoom in (x1.1) or zoom out (x0.9)
-
- execute any G4 command but /gun/particle or /gun/energy which are
- defined by the above
-
- -oglx.mac
- OGLSX => important to make zooming effective after showing trajectories
- -gun.mac
-
diff --git a/environments/g4py/examples/education/lesson1/README b/environments/g4py/examples/education/lesson1/README
deleted file mode 100644
index 3d8a1fb187..0000000000
--- a/environments/g4py/examples/education/lesson1/README
+++ /dev/null
@@ -1,54 +0,0 @@
-Hajime Yoshida
-
-******* README of lesson1 ******
-
-26 September 2006
- - Lesson1.py as before
- - Lesson1withN03.py
- - physics is list is taken from examples/novice/N03
- - process on/off
- - Leson1Wx.py
- - same as Lesson1withN03 but
- - New GUI toolkit is used and the default Python isn't enough
- - wxPython is necessary
-
-
-26 May 2006 Geant4.8.1
-
-
-
-The first version of the courseware of the mass attenuation coefficient
-
- - Lesson1.py
- select absorber material
- set its thickness upto 500 mm
- select beam particle
- set its energy upto 100 MeV
- set nu of events up to 100
- run
-
- and then
- zoom in (x1.1) or zoom out (x0.9)
- pan in up/down and/or right/left in the unit of mm (type in two
- numbers separated by a space)
-
- execute any G4 command but /gun/particle or /gun/energy which are
- defined by the above
-
- -oglx.mac
- OGLSX => important to make zooming effective after showing trajectories.
-
- if you want to use VRML, you have to specify the directory where *.wrl
- file is stored and the VRML viewer to which the path is set:
- G4VRMLFILE_DEST_DIR=/home/yoshidah/tmp/
- G4VRMLFILE_VIEWER=vrmlview
-
- And you have VRML drivers built.
- G4VIS_BUILD_VRML_DRIVER=1
- G4VIS_USE_VRMLFILE=1
- G4VIS_BUILD_VRMLFILE_DRIVER=1
- G4VIS_USE_VRML=1
-
-
- -gun.mac
- This is used only at the initialization time.
\ No newline at end of file
diff --git a/environments/g4py/examples/education/lesson1/demo.py b/environments/g4py/examples/education/lesson1/demo.py
deleted file mode 100755
index fd79fdbf15..0000000000
--- a/environments/g4py/examples/education/lesson1/demo.py
+++ /dev/null
@@ -1,294 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# python script for "measurement" of mass attenuation coefficient
-#
-#
-# - using site-module packages
-# ==================================================================
-from Geant4 import *
-import g4py.NISTmaterials
-import g4py.ezgeom
-from g4py.ezgeom import G4EzVolume
-import g4py.EMSTDpl
-import g4py.ParticleGun
-from time import *
-import sys
-
-# ==================================================================
-# intialize
-# ==================================================================
-def Configure():
- # ------------------------------------------------------------------
- # setup for materials
- # ------------------------------------------------------------------
- # simple materials for Qgeom
- g4py.NISTmaterials.Construct()
-
- # ------------------------------------------------------------------
- # setup for geometry
- # ------------------------------------------------------------------
- #g4py.Qgeom.Construct()
- g4py.ezgeom.Construct() # initialize
-
- # ------------------------------------------------------------------
- # setup for physics list
- # ------------------------------------------------------------------
- g4py.EMSTDpl.Construct()
-
- # ------------------------------------------------------------------
- # setup for primary generator action
- # ------------------------------------------------------------------
- g4py.ParticleGun.Construct()
- gControlExecute("gun.mac")
-
-# ==================================================================
-# constructing geometry
-# ==================================================================
-def ConstructGeom():
- print "* Constructing geometry..."
- # reset world material
- global absorber
- air= G4Material.GetMaterial("G4_AIR", 1)
- galactic = G4Material.GetMaterial("G4_Galactic", 1)
- absorber = {} # material's dictionary to be used by a radiobutton
- aluminum = G4Material.GetMaterial("G4_Al", 1)
- iron = G4Material.GetMaterial("G4_Fe", 1)
- silver = G4Material.GetMaterial("G4_Ag", 1)
- gold = G4Material.GetMaterial("G4_Au", 1)
- lead = G4Material.GetMaterial("G4_Pb", 1)
- water = G4Material.GetMaterial("G4_WATER", 1)
- absorber = {"air":air, "aluminum":aluminum, "iron":iron, "lead":lead, "water":water, "gold":gold}
- g4py.ezgeom.SetWorldMaterial(galactic)
- g4py.ezgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
- # water phantom
- global water_phantom, water_phantom_pv
-
- water_phantom= G4EzVolume("WaterPhantom")
- water_phantom.CreateBoxVolume(water, 110.*cm, 110.*cm, 10.*cm)
-
- water_phantom_pv = water_phantom.PlaceIt(G4ThreeVector(0.,0.,0.*cm))
-
-# ==================================================================
-# main
-# ==================================================================
-# ------------------------------------------------------------------
-# randum number
-# ------------------------------------------------------------------
-print "Random numbers..."
-rand_engine= Ranlux64Engine()
-HepRandom.setTheEngine(rand_engine)
-HepRandom.setTheSeed(20050830L)
-
-# setup...
-
-Configure()
-ConstructGeom()
-
-# ------------------------------------------------------------------
-# go...
-# ------------------------------------------------------------------
-gRunManager.Initialize()
-
-# visualization not here but after "Start a run" button
-gControlExecute("oglx.mac")
-#gControlExecute("vrml.mac")
-
-# creating widgets using grid layout
-
-from Tkinter import *
-
-class App(Frame):
-
-
- def init(self):
-
-#title and header row=0, 1
- title = Label(self, text="Geant4Py for Education @ H. Yoshida Naruto Univ. of Education")
- title.grid(row=0, column=1, columnspan=5)
- header = Label(self, text="Measurement of Mass Attenuation Coefficient")
- header.grid(row=1, column=1, columnspan=5)
-
-#material selection row=2
- materialLabel = Label(self, bg="green", text="Material")
- materialLabel.grid(row=2, column=0, sticky=W)
- self.materialVar = StringVar()
- self.materialVar.set("water")
- ra1 = { }
- pos=1
- for i in absorber.keys():
- ra1[i] = Radiobutton(self, text=i, variable=self.materialVar, value=i)
- ra1[i].grid(row=2, column=pos, sticky=W)
- pos=pos+1
-
-#absorber thickness row=3
- thickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.thickVar = DoubleVar()
- self.thickVar.set(100.0)
- thick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.thickVar)
- thickLabel.grid(row=3, column=0, sticky=W)
- thick.grid(row=3, column=1, columnspan=5, sticky=W)
-
-#get logical volume and set its half length
- self.solid = g4py.ezgeom.G4EzVolume.GetSold(water_phantom)
-
-#particle row=4
- particleLabel = Label(self, bg="green", text="Particle")
- particleLabel.grid(row=4, column=0, sticky=W)
- self.particleVar = StringVar()
- self.particleVar.set("gamma")
- ra1 = { }
- pos1=1
- for i in ("gamma", "e-"):
- ra1[i] = Radiobutton(self, text=i, variable=self.particleVar, value=i)
- ra1[i].grid(row=4, column=pos1, sticky=W)
- pos1=pos1+1
-
-#energy row=5
- energyLabel = Label(self, bg="green", text="Energy (MeV)")
-
- self.energyVar=StringVar()
- self.energyVar.set(1)
- energy = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., tickinterval=10.0, resolution=0.1, variable=self.energyVar, digits=4 )
- energyLabel.grid(row=5, column=0, sticky=W)
- energy.grid(row=5, column=1, columnspan=5, sticky=W)
-
-#number of event row=6
- eventLabel = Label(self, bg="green", text="Events")
- self.eventVar=IntVar()
- event = Scale(self, orient=HORIZONTAL, length=400, from_=1, to=100, tickinterval=10, resolution=1, variable=self.eventVar )
- eventLabel.grid(row=6, column=0, sticky=W)
- event.grid(row=6, column=1, columnspan=5, sticky=W)
-
-#start a run button row=7
- startBut = Button(self, bg="orange", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=0, column=0, sticky=W)
-
-#Zoom in/out Pan X Y row=8
- visLabel = Label(self, text="viewer", bg="orange")
- expandBut = Button(self, text="Zoom in", command=self.cmd_expand)
- shrinkBut = Button(self, text="Zoom out", command=self.cmd_shrink)
- visLabel.grid(row=8, column=0, sticky=W)
- expandBut.grid(row=8, column=1, sticky=W)
- shrinkBut.grid(row=8, column=2, sticky=W)
-
- upBut = Button(self, text="Up", command=self.cmd_up)
- downBut = Button(self, text="Down", command=self.cmd_down)
- upBut.grid(row=8, column=3, sticky=W)
- downBut.grid(row=8, column=4, sticky=W)
-
- leftBut = Button(self, text="Left", command=self.cmd_left)
- rightBut = Button(self, text="Right", command=self.cmd_right)
- leftBut.grid(row=8, column=5, sticky=W)
- rightBut.grid(row=8, column=6, sticky=W)
-# later
-# resetBut = Button(self, text="Reset", command=self.cmd_reset)
-# resetBut.grid(row=8, column=7, sticky=W)
-
-
-# panLabel = Label(self, text="Pan X Y (mm)")
-# self.panXYVar = StringVar()
-# panXYEnt = Entry(self, textvariable=self.panXYVar)
-# panBut = Button(self, bg="orange", text="OK", command=self.cmd_pan)
-# panLabel.grid(row=8, column=3, sticky=W)
-# panXYEnt.grid(row=8, column=4)
-# panBut.grid(row=8, column=5)
-#Geant4 command entry row = 9
-# g4comLabel = Label(self, text="Geant4 command")
-# self.g4commandVar = StringVar()
-# commandEntry = Entry(self, textvariable=self.g4commandVar)
-# comBut = Button(self, bg="orange", text="Execute", command=self.cmd_g4command)
-# g4comLabel.grid(row=9, column=0, sticky=W)
-# commandEntry.grid(row=9, column=1, columnspan=4, sticky=E+W)
-# comBut.grid(row=9, column=5)
-
-#exit row = 10
- exitBut = Button(self, bg="red", text="End all", command=sys.exit)
- exitBut.grid(row=0, column=6, sticky=W)
-
-#on Run butto do...
- def cmd_beamOn(self):
- materialChosen = self.materialVar.get()
- water_phantom.SetMaterial(absorber[materialChosen])
-
- if materialChosen == "water":
- water_phantom.SetColor(0., 0.9, 1.0)
-
- if materialChosen == "air":
- water_phantom.SetColor(0.9, 0.9, 1.0)
-
- if materialChosen == "lead":
- water_phantom.SetColor(0.2, 0.2, 0.2)
-
- if materialChosen == "iron":
- water_phantom.SetColor(0.7, 0.5, 0.7)
-
- if materialChosen == "aluminum":
- water_phantom.SetColor(.7, 0.9, 1.0)
-
- if materialChosen == "gold":
- water_phantom.SetColor(1., 0.9, .0)
-
- self.solid.SetZHalfLength(self.thickVar.get() * mm/2.0)
-# gControlExecute("oglx.mac") #draw for each run
- gApplyUICommand("/vis/viewer/flush")
-
- self.cmd_particle(self.particleVar.get())
- self.cmd_energy(self.energyVar.get())
-# TODO later to reflesh text
- gApplyUICommand("/vis/scene/add/text 0 610 610 mm 20 0 0 " + " ")
- gApplyUICommand("/vis/scene/add/text 0 610 610 mm 20 0 0 " + self.materialVar.get() + " = " + str(self.thickVar.get()) + "mm " + self.particleVar.get() + " = "+self.energyVar.get() + "MeV")
-
- eventNum = self.eventVar.get()
- for i in range(eventNum):
- gunYZpos = str(i-eventNum/2) + ". -20. cm"
- gApplyUICommand("/gun/position 0. " + gunYZpos)
- gRunManager.BeamOn(1)
- sleep(0.01)
-# self.cmd_expand() #Zoom in to the last diaplayed OGLSX
-# self.cmd_shrink()
-
-
-
- def cmd_g4command(self):
- gApplyUICommand(self.g4commandVar.get())
-
- def cmd_particle(self, particle):
- gApplyUICommand("/gun/particle " + particle)
-
-
- def cmd_energy(self, penergy):
- gApplyUICommand("/gun/energy " + penergy + " MeV")
-
-
- def cmd_expand(self):
- gApplyUICommand("/vis/viewer/zoom 1.2")
-
- def cmd_up(self):
- gApplyUICommand("/vis/viewer/pan " + " 0. 10. mm")
-
- def cmd_down(self):
- gApplyUICommand("/vis/viewer/pan " + " 0. -10. mm")
-
- def cmd_right(self):
- gApplyUICommand("/vis/viewer/pan " + " -1. 0. mm")
-
- def cmd_left(self):
- gApplyUICommand("/vis/viewer/pan " + " 1. 0. mm")
-
-
- def cmd_shrink(self):
- gApplyUICommand("/vis/viewer/zoom 0.8")
-
-
-# def cmd_reset(self):
-# gApplyUICommand("/vis/viewer/pan " + " 0. 0. mm")
-
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
-
-app = App()
-app.mainloop()
diff --git a/environments/g4py/examples/education/lesson1/gun.mac b/environments/g4py/examples/education/lesson1/gun.mac
deleted file mode 100644
index 16c20471ba..0000000000
--- a/environments/g4py/examples/education/lesson1/gun.mac
+++ /dev/null
@@ -1,8 +0,0 @@
-# gun.mac
-
-/gun/number 1
-/gun/particle e-
-/gun/energy 0.2 MeV
-/gun/direction 0. 0. 1.
-/gun/position 0. -5. -30. cm
-
diff --git a/environments/g4py/examples/education/lesson1/oglx.mac b/environments/g4py/examples/education/lesson1/oglx.mac
deleted file mode 100644
index bb8f46afda..0000000000
--- a/environments/g4py/examples/education/lesson1/oglx.mac
+++ /dev/null
@@ -1,29 +0,0 @@
-# vis.mac
-
-#OpenGL Stored mode to accumulate trajectories
-
-/vis/open OGLSX
-
-#VRML viewer is usable if you defined env variables
-#/vis/open VRML2FILE
-
-/vis/viewer/refresh
-
-/vis/scene/create
-/vis/scene/add/volume
-#/vis/scene/add/axes 0 0 0 2 m
-#/vis/drawVolume
-/vis/viewer/set/style s
-
-
-/vis/sceneHandler/attach
-
-/vis/viewer/set/viewpointThetaPhi 90. 0.
-/vis/viewer/zoom 1.5
-
-#/vis/scene/add/text 0 610 610 mm 20 -0 -0 Geant4Py
-/tracking/storeTrajectory 1
-/vis/scene/add/trajectories
-/vis/scene/endOfEventAction accumulate
-/vis/scene/endOfRunAction accumulate
-
diff --git a/environments/g4py/examples/education/lesson1/python3/Lesson1.py b/environments/g4py/examples/education/lesson1/python3/Lesson1.py
deleted file mode 100755
index 97269b8146..0000000000
--- a/environments/g4py/examples/education/lesson1/python3/Lesson1.py
+++ /dev/null
@@ -1,294 +0,0 @@
-#!/usr/bin/python3
-# ==================================================================
-# python script for "measurement" of mass attenuation coefficient
-#
-#
-# - using site-module packages
-# ==================================================================
-from Geant4 import *
-import g4py.NISTmaterials
-import g4py.ezgeom
-from g4py.ezgeom import G4EzVolume
-import g4py.EMSTDpl
-import g4py.ParticleGun
-from time import *
-import sys
-
-# ==================================================================
-# intialize
-# ==================================================================
-def Configure():
- # ------------------------------------------------------------------
- # setup for materials
- # ------------------------------------------------------------------
- # simple materials for Qgeom
- g4py.NISTmaterials.Construct()
-
- # ------------------------------------------------------------------
- # setup for geometry
- # ------------------------------------------------------------------
- #g4py.Qgeom.Construct()
- g4py.ezgeom.Construct() # initialize
-
- # ------------------------------------------------------------------
- # setup for physics list
- # ------------------------------------------------------------------
- g4py.EMSTDpl.Construct()
-
- # ------------------------------------------------------------------
- # setup for primary generator action
- # ------------------------------------------------------------------
- g4py.ParticleGun.Construct()
- gControlExecute("gun.mac")
-
-# ==================================================================
-# constructing geometry
-# ==================================================================
-def ConstructGeom():
- print("* Constructing geometry...")
- # reset world material
- global absorber
- air= G4Material.GetMaterial("G4_AIR", 1)
- galactic = G4Material.GetMaterial("G4_Galactic", 1)
- absorber = {} # material's dictionary to be used by a radiobutton
- aluminum = G4Material.GetMaterial("G4_Al", 1)
- iron = G4Material.GetMaterial("G4_Fe", 1)
- silver = G4Material.GetMaterial("G4_Ag", 1)
- gold = G4Material.GetMaterial("G4_Au", 1)
- lead = G4Material.GetMaterial("G4_Pb", 1)
- water = G4Material.GetMaterial("G4_WATER", 1)
- absorber = {"air":air, "aluminum":aluminum, "iron":iron, "lead":lead, "water":water, "gold":gold}
- g4py.ezgeom.SetWorldMaterial(galactic)
- g4py.ezgeom.ResizeWorld(120.*cm, 120.*cm, 100.*cm)
- # water phantom
- global water_phantom, water_phantom_pv
-
- water_phantom= G4EzVolume("WaterPhantom")
- water_phantom.CreateBoxVolume(water, 110.*cm, 110.*cm, 10.*cm)
-
- water_phantom_pv = water_phantom.PlaceIt(G4ThreeVector(0.,0.,0.*cm))
-
-# ==================================================================
-# main
-# ==================================================================
-# ------------------------------------------------------------------
-# randum number
-# ------------------------------------------------------------------
-print("Random numbers...")
-rand_engine= Ranlux64Engine()
-HepRandom.setTheEngine(rand_engine)
-HepRandom.setTheSeed(20050830)
-
-# setup...
-
-Configure()
-ConstructGeom()
-
-# ------------------------------------------------------------------
-# go...
-# ------------------------------------------------------------------
-gRunManager.Initialize()
-
-# visualization not here but after "Start a run" button
-gControlExecute("oglx.mac")
-#gControlExecute("vrml.mac")
-
-# creating widgets using grid layout
-
-from tkinter import *
-
-class App(Frame):
-
-
- def init(self):
-
-#title and header row=0, 1
- title = Label(self, text="Geant4Py for Education @ H. Yoshida Naruto Univ. of Education")
- title.grid(row=0, column=1, columnspan=5)
- header = Label(self, text="Measurement of Mass Attenuation Coefficient")
- header.grid(row=1, column=1, columnspan=5)
-
-#material selection row=2
- materialLabel = Label(self, bg="green", text="Material")
- materialLabel.grid(row=2, column=0, sticky=W)
- self.materialVar = StringVar()
- self.materialVar.set("water")
- ra1 = { }
- pos=1
- for i in absorber.keys():
- ra1[i] = Radiobutton(self, text=i, variable=self.materialVar, value=i)
- ra1[i].grid(row=2, column=pos, sticky=W)
- pos=pos+1
-
-#absorber thickness row=3
- thickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.thickVar = DoubleVar()
- self.thickVar.set(100.0)
- thick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.thickVar)
- thickLabel.grid(row=3, column=0, sticky=W)
- thick.grid(row=3, column=1, columnspan=5, sticky=W)
-
-#get logical volume and set its half length
- self.solid = g4py.ezgeom.G4EzVolume.GetSold(water_phantom)
-
-#particle row=4
- particleLabel = Label(self, bg="green", text="Particle")
- particleLabel.grid(row=4, column=0, sticky=W)
- self.particleVar = StringVar()
- self.particleVar.set("gamma")
- ra1 = { }
- pos1=1
- for i in ("gamma", "e-"):
- ra1[i] = Radiobutton(self, text=i, variable=self.particleVar, value=i)
- ra1[i].grid(row=4, column=pos1, sticky=W)
- pos1=pos1+1
-
-#energy row=5
- energyLabel = Label(self, bg="green", text="Energy (MeV)")
-
- self.energyVar=StringVar()
- self.energyVar.set(1)
- energy = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., tickinterval=10.0, resolution=0.1, variable=self.energyVar, digits=4 )
- energyLabel.grid(row=5, column=0, sticky=W)
- energy.grid(row=5, column=1, columnspan=5, sticky=W)
-
-#number of event row=6
- eventLabel = Label(self, bg="green", text="Events")
- self.eventVar=IntVar()
- event = Scale(self, orient=HORIZONTAL, length=400, from_=1, to=100, tickinterval=10, resolution=1, variable=self.eventVar )
- eventLabel.grid(row=6, column=0, sticky=W)
- event.grid(row=6, column=1, columnspan=5, sticky=W)
-
-#start a run button row=7
- startBut = Button(self, bg="orange", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=0, column=0, sticky=W)
-
-#Zoom in/out Pan X Y row=8
- visLabel = Label(self, text="viewer", bg="orange")
- expandBut = Button(self, text="Zoom in", command=self.cmd_expand)
- shrinkBut = Button(self, text="Zoom out", command=self.cmd_shrink)
- visLabel.grid(row=8, column=0, sticky=W)
- expandBut.grid(row=8, column=1, sticky=W)
- shrinkBut.grid(row=8, column=2, sticky=W)
-
- upBut = Button(self, text="Up", command=self.cmd_up)
- downBut = Button(self, text="Down", command=self.cmd_down)
- upBut.grid(row=8, column=3, sticky=W)
- downBut.grid(row=8, column=4, sticky=W)
-
- leftBut = Button(self, text="Left", command=self.cmd_left)
- rightBut = Button(self, text="Right", command=self.cmd_right)
- leftBut.grid(row=8, column=5, sticky=W)
- rightBut.grid(row=8, column=6, sticky=W)
-# later
-# resetBut = Button(self, text="Reset", command=self.cmd_reset)
-# resetBut.grid(row=8, column=7, sticky=W)
-
-
-# panLabel = Label(self, text="Pan X Y (mm)")
-# self.panXYVar = StringVar()
-# panXYEnt = Entry(self, textvariable=self.panXYVar)
-# panBut = Button(self, bg="orange", text="OK", command=self.cmd_pan)
-# panLabel.grid(row=8, column=3, sticky=W)
-# panXYEnt.grid(row=8, column=4)
-# panBut.grid(row=8, column=5)
-#Geant4 command entry row = 9
-# g4comLabel = Label(self, text="Geant4 command")
-# self.g4commandVar = StringVar()
-# commandEntry = Entry(self, textvariable=self.g4commandVar)
-# comBut = Button(self, bg="orange", text="Execute", command=self.cmd_g4command)
-# g4comLabel.grid(row=9, column=0, sticky=W)
-# commandEntry.grid(row=9, column=1, columnspan=4, sticky=E+W)
-# comBut.grid(row=9, column=5)
-
-#exit row = 10
- exitBut = Button(self, bg="red", text="End all", command=sys.exit)
- exitBut.grid(row=0, column=6, sticky=W)
-
-#on Run butto do...
- def cmd_beamOn(self):
- materialChosen = self.materialVar.get()
- water_phantom.SetMaterial(absorber[materialChosen])
-
- if materialChosen == "water":
- water_phantom.SetColor(0., 0.9, 1.0)
-
- if materialChosen == "air":
- water_phantom.SetColor(0.9, 0.9, 1.0)
-
- if materialChosen == "lead":
- water_phantom.SetColor(0.2, 0.2, 0.2)
-
- if materialChosen == "iron":
- water_phantom.SetColor(0.7, 0.5, 0.7)
-
- if materialChosen == "aluminum":
- water_phantom.SetColor(.7, 0.9, 1.0)
-
- if materialChosen == "gold":
- water_phantom.SetColor(1., 0.9, .0)
-
- self.solid.SetZHalfLength(self.thickVar.get() * mm/2.0)
-# gControlExecute("oglx.mac") #draw for each run
- gApplyUICommand("/vis/viewer/flush")
-
- self.cmd_particle(self.particleVar.get())
- self.cmd_energy(self.energyVar.get())
-# TODO later to reflesh text
- gApplyUICommand("/vis/scene/add/text 0 610 610 mm 20 0 0 " + " ")
- gApplyUICommand("/vis/scene/add/text 0 610 610 mm 20 0 0 " + self.materialVar.get() + " = " + str(self.thickVar.get()) + "mm " + self.particleVar.get() + " = "+self.energyVar.get() + "MeV")
-
- eventNum = self.eventVar.get()
- for i in range(eventNum):
- gunYZpos = str(i-eventNum/2) + ". -20. cm"
- gApplyUICommand("/gun/position 0. " + gunYZpos)
- gRunManager.BeamOn(1)
- sleep(0.01)
-# self.cmd_expand() #Zoom in to the last diaplayed OGLSX
-# self.cmd_shrink()
-
-
-
- def cmd_g4command(self):
- gApplyUICommand(self.g4commandVar.get())
-
- def cmd_particle(self, particle):
- gApplyUICommand("/gun/particle " + particle)
-
-
- def cmd_energy(self, penergy):
- gApplyUICommand("/gun/energy " + penergy + " MeV")
-
-
- def cmd_expand(self):
- gApplyUICommand("/vis/viewer/zoom 1.2")
-
- def cmd_up(self):
- gApplyUICommand("/vis/viewer/pan " + " 0. 10. mm")
-
- def cmd_down(self):
- gApplyUICommand("/vis/viewer/pan " + " 0. -10. mm")
-
- def cmd_right(self):
- gApplyUICommand("/vis/viewer/pan " + " -1. 0. mm")
-
- def cmd_left(self):
- gApplyUICommand("/vis/viewer/pan " + " 1. 0. mm")
-
-
- def cmd_shrink(self):
- gApplyUICommand("/vis/viewer/zoom 0.8")
-
-
-# def cmd_reset(self):
-# gApplyUICommand("/vis/viewer/pan " + " 0. 0. mm")
-
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
-
-app = App()
-app.mainloop()
diff --git a/environments/g4py/examples/education/lesson2/README b/environments/g4py/examples/education/lesson2/README
deleted file mode 100644
index 7bc5adc31a..0000000000
--- a/environments/g4py/examples/education/lesson2/README
+++ /dev/null
@@ -1,82 +0,0 @@
-26 Sep 2006
- - added Lesson2Wx.py
- New version using wxPython
- functionas are identical with ExN03.py
-
-26 May 2006
-revised 02 July 2006
-Geant4.8.1 release
-===============================================
-Prerequisites for G4 environment variables.
-==============================================
-
-This scripts offers the choice of visualization systems;
-one among OGLSX (OpenGL stored mode), or VRML2FILE or Wired3.
-
-OGLSX is the default viewer and you need no environment variables.
-
-To use VRML2FILE you have to specify its viewer which is found in your
-search path and the destination directory where *.wrl file is stored.
-If you don't specify the name of the viewer, you can't choose it on the panel.
-For example,
- setenv G4VRMLFILE_VIEWER $HOME/bin/vrmlview
- setenv G4VRMLFILE_DEST_DIR $HOME/tmp/ <= terminate with /
-
-To use Wired, download it and install under your directory. Java Runtime
-Environment is necessary.
-Then set, for example;
- setenv G4HEPREPFILE_VIEWER $HOME/Wired/bin/wired <= any path you use
- setenv G4HEPREPFILE_DIR $HOME/tmp/
- setenv G4HEPREPFILE_NAME lesson2_00 <= any name you choose.
- setenv G4HEPREPFILE_OVERWRITE 1 <= to reuse the file for "next event"
-G4HEPREPFILE_VIEWER isn't an official Geant4 environment variable but is employed
-here to control the vissssualization viewers.
-The name of the HepRepFile is ${G4HEPREPFILE_NAME}.heprep which will be
-stored in ${G4HEPREPFILE_DIR}.
-
-ExN03.py script don't use VRML or Wired if their *_VIEWER isn't set.
-But other env variables are also used in the script to look for the
-file and to activate the viewer, you have to set all of the above variables
-in the shell where you activate ExN03.py script.
-
-
-NOTICE) VRML viewer blocks the window (modal), so that you have to exit it to
-display another run.
-
-********* ExN03.py script ***********
-
-This example id derived from examples/novice/N03.
-You can
- - choose the materials of absorber and gap
- - set the thickness of the absorber and gap
- - set the lateral (in YZ plane) size of the sandwitch cal.
- - choose an incedent particle
- - set its energy
- - set the number of events to run
- - toggle on/off of the electromagnetic processes
- - set cut length
- - set magnetic field
- - typein any Geant4 command (except related with the above functions) and execute it
-
-How to run it?
- %python ExN03.py
-
-You can visualize with OpenGL stored mode or VRML or Wired3
-You can choose either of the active viewers by pushing the
-radio buttons.
-=========================
-NOTICE)
-
-VRML viewer runs in the modal action, and you have to exit it
-to have a new diaplay for the new run, or you want to switch to
-another viewer.
-
-Wired has the "next"/"previous" event button. So to see the next
-event, first run and then "next" event. Wired doesn't block G4
-and you can have Wired and OGLSX both open.
-
-
-
-ExN03-Wired.py is OBSOLETE. Please use ExN03.py
-
-
diff --git a/environments/g4py/examples/education/lesson2/demo.py b/environments/g4py/examples/education/lesson2/demo.py
deleted file mode 100755
index 2fa4fcb513..0000000000
--- a/environments/g4py/examples/education/lesson2/demo.py
+++ /dev/null
@@ -1,426 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# python script for Geant4Py
-#
-# ExN03 : geant4/examples/novice/N03
-# using site-module packages
-# ==================================================================
-from Geant4 import *
-import g4py.Qmaterials, g4py.NISTmaterials
-import g4py.ExN03geom
-#import g4py.ExN03pl
-import g4py.EMSTDpl
-import g4py.ParticleGun, g4py.MedicalBeam
-import sys
-from time import *
-from subprocess import *
-import os
-
-# ==================================================================
-# main
-# ==================================================================
-# ------------------------------------------------------------------
-# randum number
-# ------------------------------------------------------------------
-rand_engine= Ranlux64Engine()
-HepRandom.setTheEngine(rand_engine)
-HepRandom.setTheSeed(20050830L)
-
-# ------------------------------------------------------------------
-# setup for materials
-# ------------------------------------------------------------------
-
-# NIST materials
-#g4py.NISTmaterials.Construct()
-
-# ------------------------------------------------------------------
-# setup for geometry
-# ------------------------------------------------------------------
-# normal way for constructing user geometry
-
-exN03geom= g4py.ExN03geom.ExN03DetectorConstruction()
-gRunManager.SetUserInitialization(exN03geom)
-
-# 2nd way, short-cut way
-
-#g4py.ExN01geom.Construct()
-#g4py.ExN03geom.Construct()
-
-# magnetic field
-#exN03geom.SetMagField(0.1 * tesla)
-
-# ------------------------------------------------------------------
-# setup for physics list
-# ------------------------------------------------------------------
-# normal way for constructing user physics list
-exN03PL= g4py.EMSTDpl.PhysicsListEMstd()
-gRunManager.SetUserInitialization(exN03PL)
-
-# 2nd way, short-cut way
-#g4py.ExN01pl.Construct()
-#g4py.EMSTDpl.Construct()
-
-# ------------------------------------------------------------------
-# setup for primary generator action
-# ------------------------------------------------------------------
-# normal way for constructing user physics list
-#pgPGA= g4py.ParticleGun.ParticleGunAction()
-#gRunManager.SetUserAction(pgPGA)
-#pg= pgPGA.GetParticleGun()
-
-# 2nd way, short-cut way
-pg= g4py.ParticleGun.Construct()
-
-# set parameters of particle gun
-pg.SetParticleByName("e-")
-pg.SetParticleEnergy(50.*MeV)
-pg.SetParticlePosition(G4ThreeVector(-40.,0.,0.)*cm)
-pg.SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.))
-
-# medical beam
-#beam= MedicalBeam.Construct()
-
-# ------------------------------------------------------------------
-# go...
-# ------------------------------------------------------------------
-gRunManager.Initialize()
-
-# beamOn
-#gRunManager.BeamOn(3)
-
-
-#TEST
-#gProcessTable.SetProcessActivation("msc", 0)
-#gProcessTable.SetProcessActivation("conv", 0)
-#gProcessTable.SetProcessActivation("eBrem", 0)
-#gProcessTable.SetProcessActivation("eIoni", 0)
-#gProcessTable.SetProcessActivation("annihil", 0)
-
-
-# visualization
-# OGLSX, VRML and HEPREP sceneHandlers are all created with names
-gApplyUICommand("/vis/sceneHandler/create OGLSX OGLSX")
-gApplyUICommand("/vis/sceneHandler/create VRML2FILE VRML")
-gApplyUICommand("/vis/sceneHandler/create HepRepFile HEPREP")
-
-# OGLSX is the default so, viewer is created and volume is drawn
-gApplyUICommand("/vis/viewer/create OGLSX oglsxviewer")
-gApplyUICommand("/vis/drawVolume")
-gApplyUICommand("/vis/scene/add/trajectories")
-
-gApplyUICommand("/tracking/storeTrajectory 1")
-gApplyUICommand("/vis/scene/endOfEventAction accumulate")
-gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-gApplyUICommand("/vis/viewer/select oglsxviewer")
-
-# viewers VRML and Wired are tested by their envs vars
-# if their envs var are set, then viewers are created and drawVolume
-
-global heprepViewer, heprepDir, heprepName
-heprepViewer = os.environ.get("G4HEPREPFILE_VIEWER")
-heprepDir = os.environ.get("G4HEPREPFILE_DIR")
-heprepName = os.environ.get("G4HEPREPFILE_NAME")
-if heprepViewer is not None:
- gApplyUICommand("/vis/viewer/create HEPREP wired")
- gApplyUICommand("/vis/drawVolume")
-
-# VRML viewers name is user defined
-vrmlDir = os.environ.get("G4VRML_DEST_DIR")
-vrmlViewer = os.environ.get("G4VRMLFILE_VIEWER")
-
-if vrmlViewer is not None:
- gApplyUICommand("/vis/viewer/create VRML vrmlviewer")
- gApplyUICommand("/vis/drawVolume")
-
-
-
-# creating widgets using grid layout
-
-from Tkinter import *
-
-class App(Frame):
-
- g4pipe = 0
-
- def init(self):
-
-#title and header row=0, 1
- title = Label(self, text="exampleN03")
- title.grid(row=0, column=1, columnspan=3)
- header = Label(self, text="empowered by \n Geant4Py")
- header.grid(row=1, column=1, columnspan=3)
-# number of layers
- layerLabel = Label(self, bg="green", text="No of layers")
- self.layerVar=IntVar()
- self.layerVar.set(10)
- layer = Scale(self, orient=HORIZONTAL, length=400, from_=0, to=10, tickinterval=1, resolution=1, variable=self.layerVar )
- layerLabel.grid(row=2, column=0, sticky=W)
- layer.grid(row=2, column=1, columnspan=5, sticky=W)
-
-#absorber material selection row=3
- absorbermaterialLabel = Label(self, bg="green", text="Absorber Material")
- absorbermaterialLabel.grid(row=3, column=0, sticky=W)
- self.absorbermaterialVar = StringVar()
- self.absorbermaterialVar.set("Lead")
- ra1 = { }
- pos=1
- for i in ("Aluminium", "Lead"):
- ra1[i] = Radiobutton(self, text=i, variable=self.absorbermaterialVar, value=i)
- ra1[i].grid(row=3, column=pos, sticky=W)
- pos=pos+1
-
-#absorber thickness row=4
- absorberthickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.absorberthickVar = DoubleVar()
- self.absorberthickVar.set(10.0)
- absorberthick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.absorberthickVar)
- absorberthickLabel.grid(row=4, column=0, sticky=W)
- absorberthick.grid(row=4, column=1, columnspan=5, sticky=W)
-
-
-#gap material selection row=5
- gapmaterialLabel = Label(self, bg="green", text="Gap Material")
- gapmaterialLabel.grid(row=5, column=0, sticky=W)
- self.gapmaterialVar = StringVar()
- self.gapmaterialVar.set("liquidArgon")
- ra2 = { }
- pos=1
- for i in ("liquidArgon","Scintillator", "Air", "Aerogel", "Galactic" ):
- ra2[i] = Radiobutton(self, text=i, variable=self.gapmaterialVar, value=i)
- ra2[i].grid(row=5, column=pos, sticky=W)
- pos=pos+1
-
-#gap thickness row=6
- gapthickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.gapthickVar = DoubleVar()
- self.gapthickVar.set(5.0)
- gapthick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.gapthickVar)
- gapthickLabel.grid(row=6, column=0, sticky=W)
- gapthick.grid(row=6, column=1, columnspan=5, sticky=W)
-
-#calorSizeYZ row=7
- calorsizeYZLabel = Label(self, bg="green", text="SizeYZ (mm)")
- self.calorsizeYZVar = DoubleVar()
- self.calorsizeYZVar.set(100.0)
- calorsizeYZ = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=200., resolution=0.05, tickinterval=20.0, digits=4, variable=self.calorsizeYZVar)
- calorsizeYZLabel.grid(row=7, column=0, sticky=W)
- calorsizeYZ.grid(row=7, column=1, columnspan=5, sticky=W)
-
-
-#particle row=8
- particleLabel = Label(self, bg="green", text="Particle")
- particleLabel.grid(row=8, column=0, sticky=W)
- self.particleVar = StringVar()
- self.particleVar.set("e-")
- ra1 = { }
- pos1=1
- for i in ("proton", "gamma", "e-", "e+", "mu-", "mu+"):
- ra1[i] = Radiobutton(self, text=i, variable=self.particleVar, value=i)
- ra1[i].grid(row=8, column=pos1, sticky=W)
- pos1=pos1+1
-
-#energy row=9
- energyLabel = Label(self, bg="green", text="Energy (MeV)")
-
- self.energyVar=StringVar()
- self.energyVar.set(50)
- energy = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=1000., tickinterval=100.0, resolution=0.1, variable=self.energyVar, digits=5 )
- energyLabel.grid(row=9, column=0, sticky=W)
- energy.grid(row=9, column=1, columnspan=5, sticky=W)
-
-#number of event row=10
- eventLabel = Label(self, bg="green", text="Events")
- self.eventVar=IntVar()
- self.eventVar.set(3)
- event = Scale(self, orient=HORIZONTAL, length=400, from_=0, to=100, tickinterval=10, resolution=1, variable=self.eventVar )
- eventLabel.grid(row=10, column=0, sticky=W)
- event.grid(row=10, column=1, columnspan=5, sticky=W)
-
-#start a run button row=0
- startBut = Button(self, bg="orange", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=0, column=0, sticky=W)
-
-#Zoom in/out Pan X Y row=13
-# visLabel = Label(self, text="viewer", bg="orange")
-# expandBut = Button(self, text="Zoom in", command=self.cmd_expand)
-# shrinkBut = Button(self, text="Zoom out", command=self.cmd_shrink)
-# visLabel.grid(row=13, column=0, sticky=W)
-# expandBut.grid(row=13, column=1, sticky=W)
-# shrinkBut.grid(row=13, column=2, sticky=W)
-# panLabel = Label(self, text="Pan X Y(mm)")
-# self.panXYVar = StringVar()
-# panXYEnt = Entry(self, textvariable=self.panXYVar, width=6)
-# panBut = Button(self, bg="orange", text="OK", command=self.cmd_pan)
-# panLabel.grid(row=13, column=3, sticky=W)
-# panXYEnt.grid(row=13, column=4)
-# panBut.grid(row=13, column=5)
-
-# process activate row 11 - 13
- processLabel=Label(self, text="Process on/off", bg="green")
- processLabel.grid(row=11, column=0, sticky=W)
- procTab = {}
-
- self.processList = ["phot", "compt", "conv", "msc", "eIoni", "eBrem", "annihil","muIoni", "muBrems", "hIoni"]
- pos=1
- self.processVar = {}
- for i in self.processList:
- self.processVar[i] = IntVar()
- procTab[i] = Checkbutton(self, text=i, variable=self.processVar[i], command=self.cmd_setProcess)
- if pos <= 3:
- procTab[i].grid(row=11, column=pos, sticky=W)
- if 4<= pos <= 7:
- procTab[i].grid(row=12, column=pos-3, sticky=W)
- if pos >= 8:
- procTab[i].grid(row=13, column=pos-7, sticky=W)
- pos=pos+1
- procTab[i].select()
-# set cuts row 14
- cutLabel = Label(self, bg="green", text="Cut (mm)")
-
- self.cutVar=DoubleVar()
- self.cutVar.set(1.)
- cut = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=10., tickinterval=1., resolution=0.005, variable=self.cutVar, digits=5 )
- cutLabel.grid(row=14, column=0, sticky=W)
- cut.grid(row=14, column=1, columnspan=5, sticky=W)
-
-# set mag field row 15
- magLabel = Label(self, bg="green", text="Magnetic (T)")
-
- self.magVar=DoubleVar()
- self.magVar.set(0.)
- mag = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=5., tickinterval=1., resolution=0.1, variable=self.magVar, digits=3 )
- magLabel.grid(row=15, column=0, sticky=W)
- mag.grid(row=15, column=1, columnspan=5, sticky=W)
-
-
-# viewer selection row=16
- viewerLabel = Label(self, bg="green", text="Viewer")
- viewerLabel.grid(row=16, column=0, sticky=W)
- self.viewerVar = StringVar()
- self.viewerVar.set("")
- stateOfViewer = {"OpenGL":"normal", "VRML":"normal", "Wired":"normal"}
- if vrmlViewer is None: stateOfViewer["VRML"] = "disabled"
- if heprepViewer is None: stateOfViewer["Wired"] = "disabled"
- viewers = { }
- pos=1
- for i in ("OpenGL", "VRML", "Wired"):
- viewers[i] = Radiobutton(self, text=i, variable=self.viewerVar, value=i, command=self.cmd_viewer, state=stateOfViewer[i])
- viewers[i].grid(row=16, column=pos, sticky=W)
- pos=pos+1
-
-
-#Geant4 command entry row = 17
- g4comLabel = Label(self, text="Geant4 command", bg="orange")
- self.g4commandVar = StringVar()
- commandEntry = Entry(self, textvariable=self.g4commandVar, width=15)
- self.g4commandVar.set("/vis/viewer/zoom 1.2")
- comBut = Button(self, bg="orange", text="Execute", command=self.cmd_g4command)
- g4comLabel.grid(row=17, column=0, sticky=W)
- commandEntry.grid(row=17, column=1, columnspan=3, sticky=E+W)
- comBut.grid(row=17, column=5)
-
-#exit row = 0
- exitBut = Button(self, bg="red", text="End all", command=sys.exit)
- exitBut.grid(row=0, column=5, sticky=W)
-
-#on Run butto do...
- def cmd_beamOn(self):
- exN03geom.SetNbOfLayers(self.layerVar.get())
- exN03geom.SetAbsorberMaterial(self.absorbermaterialVar.get())
- exN03geom.SetAbsorberThickness(self.absorberthickVar.get() * mm/2.0)
- exN03geom.SetGapMaterial(self.gapmaterialVar.get())
- exN03geom.SetGapThickness(self.gapthickVar.get() * mm/2.0)
- exN03geom.SetCalorSizeYZ(self.calorsizeYZVar.get() * mm)
- position = -self.layerVar.get()*(self.absorberthickVar.get() + self.gapthickVar.get())*1.2
-
- exN03geom.UpdateGeometry()
- exN03PL.SetDefaultCutValue(self.cutVar.get() * mm)
- exN03PL.SetCutsWithDefault()
- exN03geom.SetMagField(self.magVar.get() * tesla)
-
- print "Now geometry updated"
-
-
- self.cmd_particle(self.particleVar.get())
- self.cmd_energy(self.energyVar.get())
-
- print position
-
- eventNum = self.eventVar.get()
- for i in range(eventNum):
-
- pg.SetParticlePosition(G4ThreeVector(position*mm, (i-eventNum/2)*5.*mm, 0.*cm))
- gRunManager.BeamOn(1)
- sleep(0.01)
- gApplyUICommand("/vis/viewer/update")
-
- def cmd_setProcess(self):
- for i in self.processList:
- if self.processVar[i].get() == 0:
- gProcessTable.SetProcessActivation(i, 0)
- print "Process " + i + " inactivated"
- else:
- gProcessTable.SetProcessActivation(i, 1)
- print "Process " + i + " activated"
-
- def cmd_g4command(self):
- gApplyUICommand(self.g4commandVar.get())
-
- def cmd_particle(self, particle):
- gApplyUICommand("/gun/particle " + particle)
-
-
- def cmd_energy(self, penergy):
- gApplyUICommand("/gun/energy " + penergy + " MeV")
-
-
- def cmd_viewer(self):
- if self.viewerVar.get() == "OpenGL":
- gApplyUICommand("/vis/viewer/select oglsxviewer")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.viewerVar.get() == "VRML":
- gApplyUICommand("/vis/viewer/select vrmlviewer")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.viewerVar.get() == "Wired":
- gApplyUICommand("/vis/viewer/select wired")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.g4pipe == 0:
- Popen(heprepViewer + " -file " + heprepDir + "/" + heprepName +".heprep", shell=True)
- self.g4pipe = 1
-
-
- def cmd_expand(self):
- gApplyUICommand("/vis/viewer/zoom 1.2")
-
- def cmd_pan(self):
- gApplyUICommand("/vis/viewer/pan " + self.panXYVar.get() + " " + " mm")
-
-
- def cmd_shrink(self):
- gApplyUICommand("/vis/viewer/zoom 0.8")
-
-
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
-
-app = App()
-app.mainloop()
diff --git a/environments/g4py/examples/education/lesson2/python3/ExN03.py b/environments/g4py/examples/education/lesson2/python3/ExN03.py
deleted file mode 100755
index b747960adc..0000000000
--- a/environments/g4py/examples/education/lesson2/python3/ExN03.py
+++ /dev/null
@@ -1,426 +0,0 @@
-#!/usr/bin/python3
-# ==================================================================
-# python script for Geant4Py
-#
-# ExN03 : geant4/examples/novice/N03
-# using site-module packages
-# ==================================================================
-from Geant4 import *
-import g4py.Qmaterials, g4py.NISTmaterials
-import g4py.ExN03geom
-import g4py.ExN03pl
-import g4py.ParticleGun, g4py.MedicalBeam
-import sys
-from time import *
-from subprocess import *
-import os
-
-# ==================================================================
-# main
-# ==================================================================
-# ------------------------------------------------------------------
-# randum number
-# ------------------------------------------------------------------
-rand_engine= Ranlux64Engine()
-HepRandom.setTheEngine(rand_engine)
-HepRandom.setTheSeed(20050830)
-
-# ------------------------------------------------------------------
-# setup for materials
-# ------------------------------------------------------------------
-
-# NIST materials
-#g4py.NISTmaterials.Construct()
-
-# ------------------------------------------------------------------
-# setup for geometry
-# ------------------------------------------------------------------
-# normal way for constructing user geometry
-
-
-exN03geom= g4py.ExN03geom.ExN03DetectorConstruction()
-gRunManager.SetUserInitialization(exN03geom)
-
-# 2nd way, short-cut way
-
-#g4py.ExN01geom.Construct()
-#g4py.ExN03geom.Construct()
-
-# magnetic field
-#exN03geom.SetMagField(0.1 * tesla)
-
-# ------------------------------------------------------------------
-# setup for physics list
-# ------------------------------------------------------------------
-# normal way for constructing user physics list
-exN03PL= g4py.EMSTDpl.PhysicsListEMstd()
-gRunManager.SetUserInitialization(exN03PL)
-
-# 2nd way, short-cut way
-#g4py.ExN01pl.Construct()
-#g4py.EMSTDpl.Construct()
-
-# ------------------------------------------------------------------
-# setup for primary generator action
-# ------------------------------------------------------------------
-# normal way for constructing user physics list
-#pgPGA= g4py.ParticleGun.ParticleGunAction()
-#gRunManager.SetUserAction(pgPGA)
-#pg= pgPGA.GetParticleGun()
-
-# 2nd way, short-cut way
-pg= g4py.ParticleGun.Construct()
-
-# set parameters of particle gun
-pg.SetParticleByName("e-")
-pg.SetParticleEnergy(50.*MeV)
-pg.SetParticlePosition(G4ThreeVector(-40.,0.,0.)*cm)
-pg.SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.))
-
-# medical beam
-#beam= MedicalBeam.Construct()
-
-# ------------------------------------------------------------------
-# go...
-# ------------------------------------------------------------------
-gRunManager.Initialize()
-
-# beamOn
-#gRunManager.BeamOn(3)
-
-
-#TEST
-#gProcessTable.SetProcessActivation("msc", 0)
-#gProcessTable.SetProcessActivation("conv", 0)
-#gProcessTable.SetProcessActivation("eBrem", 0)
-#gProcessTable.SetProcessActivation("eIoni", 0)
-#gProcessTable.SetProcessActivation("annihil", 0)
-
-
-# visualization
-# OGLSX, VRML and HEPREP sceneHandlers are all created with names
-gApplyUICommand("/vis/sceneHandler/create OGLSX OGLSX")
-gApplyUICommand("/vis/sceneHandler/create VRML2FILE VRML")
-gApplyUICommand("/vis/sceneHandler/create HepRepFile HEPREP")
-
-# OGLSX is the default so, viewer is created and volume is drawn
-gApplyUICommand("/vis/viewer/create OGLSX oglsxviewer")
-gApplyUICommand("/vis/drawVolume")
-gApplyUICommand("/vis/scene/add/trajectories")
-
-gApplyUICommand("/tracking/storeTrajectory 1")
-gApplyUICommand("/vis/scene/endOfEventAction accumulate")
-gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-gApplyUICommand("/vis/viewer/select oglsxviewer")
-
-# viewers VRML and Wired are tested by their envs vars
-# if their envs var are set, then viewers are created and drawVolume
-
-global heprepViewer, heprepDir, heprepName
-heprepViewer = os.environ.get("G4HEPREPFILE_VIEWER")
-heprepDir = os.environ.get("G4HEPREPFILE_DIR")
-heprepName = os.environ.get("G4HEPREPFILE_NAME")
-if heprepViewer is not None:
- gApplyUICommand("/vis/viewer/create HEPREP wired")
- gApplyUICommand("/vis/drawVolume")
-
-# VRML viewers name is user defined
-vrmlDir = os.environ.get("G4VRML_DEST_DIR")
-vrmlViewer = os.environ.get("G4VRMLFILE_VIEWER")
-
-if vrmlViewer is not None:
- gApplyUICommand("/vis/viewer/create VRML vrmlviewer")
- gApplyUICommand("/vis/drawVolume")
-
-
-
-# creating widgets using grid layout
-
-from tkinter import *
-
-class App(Frame):
-
- g4pipe = 0
-
- def init(self):
-
-#title and header row=0, 1
- title = Label(self, text="exampleN03")
- title.grid(row=0, column=1, columnspan=3)
- header = Label(self, text="empowered by \n Geant4Py")
- header.grid(row=1, column=1, columnspan=3)
-# number of layers
- layerLabel = Label(self, bg="green", text="No of layers")
- self.layerVar=IntVar()
- self.layerVar.set(10)
- layer = Scale(self, orient=HORIZONTAL, length=400, from_=0, to=10, tickinterval=1, resolution=1, variable=self.layerVar )
- layerLabel.grid(row=2, column=0, sticky=W)
- layer.grid(row=2, column=1, columnspan=5, sticky=W)
-
-#absorber material selection row=3
- absorbermaterialLabel = Label(self, bg="green", text="Absorber Material")
- absorbermaterialLabel.grid(row=3, column=0, sticky=W)
- self.absorbermaterialVar = StringVar()
- self.absorbermaterialVar.set("Lead")
- ra1 = { }
- pos=1
- for i in ("Aluminium", "Lead"):
- ra1[i] = Radiobutton(self, text=i, variable=self.absorbermaterialVar, value=i)
- ra1[i].grid(row=3, column=pos, sticky=W)
- pos=pos+1
-
-#absorber thickness row=4
- absorberthickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.absorberthickVar = DoubleVar()
- self.absorberthickVar.set(10.0)
- absorberthick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.absorberthickVar)
- absorberthickLabel.grid(row=4, column=0, sticky=W)
- absorberthick.grid(row=4, column=1, columnspan=5, sticky=W)
-
-
-#gap material selection row=5
- gapmaterialLabel = Label(self, bg="green", text="Gap Material")
- gapmaterialLabel.grid(row=5, column=0, sticky=W)
- self.gapmaterialVar = StringVar()
- self.gapmaterialVar.set("liquidArgon")
- ra2 = { }
- pos=1
- for i in ("liquidArgon","Scintillator", "Air", "Aerogel", "Galactic" ):
- ra2[i] = Radiobutton(self, text=i, variable=self.gapmaterialVar, value=i)
- ra2[i].grid(row=5, column=pos, sticky=W)
- pos=pos+1
-
-#gap thickness row=6
- gapthickLabel = Label(self, bg="green", text="Thickness (mm)")
- self.gapthickVar = DoubleVar()
- self.gapthickVar.set(5.0)
- gapthick = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=100., resolution=0.05, tickinterval=10.0, digits=4, variable=self.gapthickVar)
- gapthickLabel.grid(row=6, column=0, sticky=W)
- gapthick.grid(row=6, column=1, columnspan=5, sticky=W)
-
-#calorSizeYZ row=7
- calorsizeYZLabel = Label(self, bg="green", text="SizeYZ (mm)")
- self.calorsizeYZVar = DoubleVar()
- self.calorsizeYZVar.set(100.0)
- calorsizeYZ = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=200., resolution=0.05, tickinterval=20.0, digits=4, variable=self.calorsizeYZVar)
- calorsizeYZLabel.grid(row=7, column=0, sticky=W)
- calorsizeYZ.grid(row=7, column=1, columnspan=5, sticky=W)
-
-
-#particle row=8
- particleLabel = Label(self, bg="green", text="Particle")
- particleLabel.grid(row=8, column=0, sticky=W)
- self.particleVar = StringVar()
- self.particleVar.set("e-")
- ra1 = { }
- pos1=1
- for i in ("proton", "gamma", "e-", "e+", "mu-", "mu+"):
- ra1[i] = Radiobutton(self, text=i, variable=self.particleVar, value=i)
- ra1[i].grid(row=8, column=pos1, sticky=W)
- pos1=pos1+1
-
-#energy row=9
- energyLabel = Label(self, bg="green", text="Energy (MeV)")
-
- self.energyVar=StringVar()
- self.energyVar.set(50)
- energy = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=1000., tickinterval=100.0, resolution=0.1, variable=self.energyVar, digits=5 )
- energyLabel.grid(row=9, column=0, sticky=W)
- energy.grid(row=9, column=1, columnspan=5, sticky=W)
-
-#number of event row=10
- eventLabel = Label(self, bg="green", text="Events")
- self.eventVar=IntVar()
- self.eventVar.set(3)
- event = Scale(self, orient=HORIZONTAL, length=400, from_=0, to=100, tickinterval=10, resolution=1, variable=self.eventVar )
- eventLabel.grid(row=10, column=0, sticky=W)
- event.grid(row=10, column=1, columnspan=5, sticky=W)
-
-#start a run button row=0
- startBut = Button(self, bg="orange", text="Start a run", command=self.cmd_beamOn)
- startBut.grid(row=0, column=0, sticky=W)
-
-#Zoom in/out Pan X Y row=13
-# visLabel = Label(self, text="viewer", bg="orange")
-# expandBut = Button(self, text="Zoom in", command=self.cmd_expand)
-# shrinkBut = Button(self, text="Zoom out", command=self.cmd_shrink)
-# visLabel.grid(row=13, column=0, sticky=W)
-# expandBut.grid(row=13, column=1, sticky=W)
-# shrinkBut.grid(row=13, column=2, sticky=W)
-# panLabel = Label(self, text="Pan X Y(mm)")
-# self.panXYVar = StringVar()
-# panXYEnt = Entry(self, textvariable=self.panXYVar, width=6)
-# panBut = Button(self, bg="orange", text="OK", command=self.cmd_pan)
-# panLabel.grid(row=13, column=3, sticky=W)
-# panXYEnt.grid(row=13, column=4)
-# panBut.grid(row=13, column=5)
-
-# process activate row 11 - 13
- processLabel=Label(self, text="Process on/off", bg="green")
- processLabel.grid(row=11, column=0, sticky=W)
- procTab = {}
-
- self.processList = ["phot", "compt", "conv", "msc", "eIoni", "eBrem", "annihil","muIoni", "muBrems", "hIoni"]
- pos=1
- self.processVar = {}
- for i in self.processList:
- self.processVar[i] = IntVar()
- procTab[i] = Checkbutton(self, text=i, variable=self.processVar[i], command=self.cmd_setProcess)
- if pos <= 3:
- procTab[i].grid(row=11, column=pos, sticky=W)
- if 4<= pos <= 7:
- procTab[i].grid(row=12, column=pos-3, sticky=W)
- if pos >= 8:
- procTab[i].grid(row=13, column=pos-7, sticky=W)
- pos=pos+1
- procTab[i].select()
-# set cuts row 14
- cutLabel = Label(self, bg="green", text="Cut (mm)")
-
- self.cutVar=DoubleVar()
- self.cutVar.set(1.)
- cut = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=10., tickinterval=1., resolution=0.005, variable=self.cutVar, digits=5 )
- cutLabel.grid(row=14, column=0, sticky=W)
- cut.grid(row=14, column=1, columnspan=5, sticky=W)
-
-# set mag field row 15
- magLabel = Label(self, bg="green", text="Magnetic (T)")
-
- self.magVar=DoubleVar()
- self.magVar.set(0.)
- mag = Scale(self, orient=HORIZONTAL, length=400, from_=0., to=5., tickinterval=1., resolution=0.1, variable=self.magVar, digits=3 )
- magLabel.grid(row=15, column=0, sticky=W)
- mag.grid(row=15, column=1, columnspan=5, sticky=W)
-
-
-# viewer selection row=16
- viewerLabel = Label(self, bg="green", text="Viewer")
- viewerLabel.grid(row=16, column=0, sticky=W)
- self.viewerVar = StringVar()
- self.viewerVar.set("")
- stateOfViewer = {"OpenGL":"normal", "VRML":"normal", "Wired":"normal"}
- if vrmlViewer is None: stateOfViewer["VRML"] = "disabled"
- if heprepViewer is None: stateOfViewer["Wired"] = "disabled"
- viewers = { }
- pos=1
- for i in ("OpenGL", "VRML", "Wired"):
- viewers[i] = Radiobutton(self, text=i, variable=self.viewerVar, value=i, command=self.cmd_viewer, state=stateOfViewer[i])
- viewers[i].grid(row=16, column=pos, sticky=W)
- pos=pos+1
-
-
-#Geant4 command entry row = 17
- g4comLabel = Label(self, text="Geant4 command", bg="orange")
- self.g4commandVar = StringVar()
- commandEntry = Entry(self, textvariable=self.g4commandVar, width=15)
- self.g4commandVar.set("/vis/viewer/zoom 1.2")
- comBut = Button(self, bg="orange", text="Execute", command=self.cmd_g4command)
- g4comLabel.grid(row=17, column=0, sticky=W)
- commandEntry.grid(row=17, column=1, columnspan=3, sticky=E+W)
- comBut.grid(row=17, column=5)
-
-#exit row = 0
- exitBut = Button(self, bg="red", text="End all", command=sys.exit)
- exitBut.grid(row=0, column=5, sticky=W)
-
-#on Run butto do...
- def cmd_beamOn(self):
- exN03geom.SetNbOfLayers(self.layerVar.get())
- exN03geom.SetAbsorberMaterial(self.absorbermaterialVar.get())
- exN03geom.SetAbsorberThickness(self.absorberthickVar.get() * mm/2.0)
- exN03geom.SetGapMaterial(self.gapmaterialVar.get())
- exN03geom.SetGapThickness(self.gapthickVar.get() * mm/2.0)
- exN03geom.SetCalorSizeYZ(self.calorsizeYZVar.get() * mm)
- position = -self.layerVar.get()*(self.absorberthickVar.get() + self.gapthickVar.get())*1.2
-
- exN03geom.UpdateGeometry()
- exN03PL.SetDefaultCutValue(self.cutVar.get() * mm)
- exN03PL.SetCutsWithDefault()
- exN03geom.SetMagField(self.magVar.get() * tesla)
-
- print("Now geometry updated")
-
-
- self.cmd_particle(self.particleVar.get())
- self.cmd_energy(self.energyVar.get())
-
- print(position)
-
- eventNum = self.eventVar.get()
- for i in range(eventNum):
-
- pg.SetParticlePosition(G4ThreeVector(position*mm, (i-eventNum/2)*5.*mm, 0.*cm))
- gRunManager.BeamOn(1)
- sleep(0.01)
- gApplyUICommand("/vis/viewer/update")
-
- def cmd_setProcess(self):
- for i in self.processList:
- if self.processVar[i].get() == 0:
- gProcessTable.SetProcessActivation(i, 0)
- print("Process " + i + " inactivated")
- else:
- gProcessTable.SetProcessActivation(i, 1)
- print("Process " + i + " activated")
-
- def cmd_g4command(self):
- gApplyUICommand(self.g4commandVar.get())
-
- def cmd_particle(self, particle):
- gApplyUICommand("/gun/particle " + particle)
-
-
- def cmd_energy(self, penergy):
- gApplyUICommand("/gun/energy " + penergy + " MeV")
-
-
- def cmd_viewer(self):
- if self.viewerVar.get() == "OpenGL":
- gApplyUICommand("/vis/viewer/select oglsxviewer")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.viewerVar.get() == "VRML":
- gApplyUICommand("/vis/viewer/select vrmlviewer")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.viewerVar.get() == "Wired":
- gApplyUICommand("/vis/viewer/select wired")
- gApplyUICommand("/vis/scene/add/trajectories")
-
- gApplyUICommand("/tracking/storeTrajectory 1")
- gApplyUICommand("/vis/scene/endOfEventAction accumulate")
- gApplyUICommand("/vis/scene/endOfRunAction accumulate")
-
- if self.g4pipe == 0:
- Popen(heprepViewer + " -file " + heprepDir + "/" + heprepName +".heprep", shell=True)
- self.g4pipe = 1
-
-
- def cmd_expand(self):
- gApplyUICommand("/vis/viewer/zoom 1.2")
-
- def cmd_pan(self):
- gApplyUICommand("/vis/viewer/pan " + self.panXYVar.get() + " " + " mm")
-
-
- def cmd_shrink(self):
- gApplyUICommand("/vis/viewer/zoom 0.8")
-
-
-
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.init()
- self.grid()
-
-
-app = App()
-app.mainloop()
diff --git a/environments/g4py/examples/emplot/EmPlot.py b/environments/g4py/examples/emplot/EmPlot.py
deleted file mode 100755
index 2c5ba5e1df..0000000000
--- a/environments/g4py/examples/emplot/EmPlot.py
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# An example of ploting by EmCalculator
-#
-# Plotting photon cross sections and stopping power with ROOT
-# ==================================================================
-from Geant4 import *
-import g4py.NISTmaterials
-import g4py.ezgeom
-
-# ==================================================================
-# geometry setup
-# ==================================================================
-
-# ------------------------------------------------------------------
-# setup
-# ------------------------------------------------------------------
-def Configure():
- g4py.NISTmaterials.Construct()
- g4py.ezgeom.Construct()
-
-# ------------------------------------------------------------------
-# constructing geometry
-# ------------------------------------------------------------------
-def SetMaterial(material_name):
- material= gNistManager.FindOrBuildMaterial(material_name)
- g4py.ezgeom.SetWorldMaterial(material)
-
-
-# ==================================================================
-# plot by ROOT
-# ==================================================================
-import ROOT
-from math import log, log10, sqrt, ceil, floor
-from array import array
-
-# ------------------------------------------------------------------
-# caclculate plot range
-# ------------------------------------------------------------------
-def plot_range(xmin, xmax, xmargin=0.):
- xmaxlog= 10
- xminlog= -10
-
- if(xmax!=0.):
- xmaxlog= log10(xmax)
-
- if(xmin!=0):
- xminlog= log10(xmin)
-
- ixmaxlog= xmaxlog+0.5
- ixminlog= xminlog-0.5-xmargin
-
- return [10**ixminlog, 10**ixmaxlog]
-
-# ------------------------------------------------------------------
-# ROOT init
-# ------------------------------------------------------------------
-def init_root():
- ROOT.gROOT.Reset()
-
- # plot style
- ROOT.gStyle.SetTextFont(82)
-
- ROOT.gStyle.SetTitleFont(82, "X")
- ROOT.gStyle.SetTitleFontSize(0.04)
- ROOT.gStyle.SetLabelFont(82, "X")
- ROOT.gStyle.SetTitleFont(82, "Y")
- ROOT.gStyle.SetLabelFont(82, "Y")
-
- #ROOT.gStyle.SetOptTitle(0)
- ROOT.gStyle.SetErrorX(0)
-
- canvas= ROOT.TCanvas("g4plot", "g4plot", 620, 30, 600, 600)
-
- canvas.SetLogy()
- canvas.SetLogx()
- canvas.SetGrid()
-
- return canvas
-
-# ------------------------------------------------------------------
-# do a plot
-# ------------------------------------------------------------------
-def make_plot(xlist, user_title, axis_titile, q_super_impose=0):
-
- ekin_array, y_array = array('d'), array('d')
-
- for x in xlist:
- ekin_array.append(x[0])
- y_array.append(x[1])
-
- # plot range
- xmin= min(ekin_array)
- xmax= max(ekin_array)
- xrange= plot_range(xmin, xmax)
-
- ymin= min(y_array)
- ymax= max(y_array)
- yrange= plot_range(ymin, ymax, 2)
-
- if(q_super_impose==0):
- htit= user_title
- global frame
- frame= ROOT.TH1F("dumy", htit, 1, xrange[0], xrange[1]);
- frame.SetMinimum(yrange[0]);
- frame.SetMaximum(yrange[1]);
- frame.SetXTitle("Kinetic Energy (MeV)")
- frame.GetXaxis().SetLabelSize(0.025)
- frame.GetXaxis().SetTitleSize(0.03)
- frame.SetYTitle(axis_titile)
- frame.GetYaxis().SetLabelSize(0.025)
- frame.GetYaxis().SetTitleSize(0.03)
- frame.SetStats(0)
- frame.Draw()
-
- plot= ROOT.TGraph(len(ekin_array), ekin_array, y_array)
- plot.Draw("L")
- plot.SetLineColor(q_super_impose+1)
-
- return plot
-
diff --git a/environments/g4py/examples/emplot/emcalc_gui.py b/environments/g4py/examples/emplot/emcalc_gui.py
deleted file mode 100755
index f843c2d2f1..0000000000
--- a/environments/g4py/examples/emplot/emcalc_gui.py
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env python
-# -*- coding:utf-8 -*-
-
-# ==================================================================
-# EM Calculator (GTK)
-#
-# Koichi Murakami (KEK/CRC)
-# ==================================================================
-from Geant4 import *
-import g4py.EMSTDpl
-import g4py.emcalculator
-import EmPlot
-import ROOT
-import sys
-from cStringIO import StringIO
-
-# ==================================================================
-# Geant4
-# ==================================================================
-def g4_configure() :
- EmPlot.Configure()
- g4py.EMSTDpl.Construct()
-
-# -------------------------------------------------------------------
-# plot for chaged particles
-# -------------------------------------------------------------------
-def plot_charged(material, pname) :
- EmPlot.SetMaterial(material)
-
- # initialize G4 kernel
- gRunManager.Initialize()
- gRunManagerKernel.RunInitialization()
-
- # energy
- elist= []
- for n in range(-3, 3):
- for i in range(10,99):
- elist.append(i/10.*10.**n *MeV)
-
- # calculate stopping power
- global mycout
- mycout.close()
- sys.stdout = mycout = StringIO()
- dedx_list= g4py.emcalculator.CalculateDEDX(pname, material, elist, 1)
- xlist_tot=[]
- xlist_ioni=[]
- xlist_brems=[]
-
- for x in dedx_list:
- xlist_tot.append((x[0], x[1]["tot"]/(MeV*cm2/g)))
- xlist_ioni.append((x[0], x[1]["ioni"]/(MeV*cm2/g)))
- xlist_brems.append((x[0], x[1]["brems"]/(MeV*cm2/g)))
-
- # make plot
- global myCanvas, aplot, bplot, cplot
- myCanvas = EmPlot.init_root()
- aplot = EmPlot.make_plot(xlist_tot, pname+" Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)")
- bplot = EmPlot.make_plot(xlist_ioni, "Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)", 1)
- cplot = EmPlot.make_plot(xlist_brems, "Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)", 3)
- myCanvas.SaveAs("/tmp/sp.png")
-
-
-# -------------------------------------------------------------------
-# plot for gamma
-# -------------------------------------------------------------------
-def plot_gamma(material) :
- EmPlot.SetMaterial(material)
-
- # initialize G4 kernel
- gRunManager.Initialize()
- gRunManagerKernel.RunInitialization()
-
- # energy
- elist= []
- for n in range(-3, 4):
- for i in range(10,99):
- elist.append(i/10.*10.**n *MeV)
-
- # calculate cross sections
- global mycout
- mycout.close()
- sys.stdout = mycout = StringIO()
- xsection_list= g4py.emcalculator.CalculatePhotonCrossSection(material,
- elist, 1)
- xlist_tot=[]
- xlist_comp=[]
- xlist_pe=[]
- xlist_conv=[]
- for x in xsection_list:
- xlist_tot.append((x[0]/MeV, x[1]["tot"]/(cm2/g)))
- xlist_comp.append((x[0]/MeV, x[1]["compt"]/(cm2/g)))
- xlist_pe.append((x[0]/MeV, x[1]["phot"]/(cm2/g)))
- xlist_conv.append((x[0]/MeV, x[1]["conv"]/(cm2/g)))
-
- # make plots
- global myCanvas, aplot, bplot, cplot, dplot
- myCanvas = EmPlot.init_root()
- aplot = EmPlot.make_plot(xlist_tot, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)")
- bplo = EmPlot.make_plot(xlist_comp, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 1)
- cplot = EmPlot.make_plot(xlist_pe, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 7)
- dplot = EmPlot.make_plot(xlist_conv, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 3)
- myCanvas.SaveAs("/tmp/cs.png")
-
-
-# ==================================================================
-# GUI
-# ==================================================================
-import pygtk
-pygtk.require20()
-import gtk
-
-# -------------------------------------------------------------------
-# main window
-# -------------------------------------------------------------------
-class MainWindow :
- def __init__(self) :
- self.__margin = 8
-
- # main window
- self.mainwindow = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.mainwindow.set_title('Em Calculator')
- self.mainwindow.set_position(gtk.WIN_POS_MOUSE)
- self.mainwindow.set_default_size(500, 300)
- self.mainwindow.connect('delete-event', lambda w,d: gtk.main_quit())
- self.mainwindow.connect('destroy-event',lambda w,d: gtk.main_quit())
-
- # components
- header = self.create_header()
-
- particle_frame = self.create_particle_frame()
- particle_frame.set_border_width(self.__margin)
-
- material_frame = self.create_material_frame()
- material_frame.set_border_width(self.__margin)
-
- separator = gtk.HSeparator()
-
- action_box = self.create_action_box()
- action_box.set_border_width(self.__margin)
-
- # layout
- vbox = gtk.VBox()
- vbox.pack_start(header)
- vbox.pack_start(particle_frame)
- vbox.pack_start(material_frame)
- vbox.pack_start(separator)
- vbox.pack_start(action_box)
-
- self.mainwindow.add(vbox)
- self.mainwindow.show_all()
-
- # text view
- self.textview = TextView()
-
- # error dialog
- self.error_dialog = gtk.MessageDialog(parent=self.mainwindow,
- buttons=gtk.BUTTONS_CLOSE, type=gtk.MESSAGE_ERROR,
- message_format="Material is not defined in G4Nist materials")
- self.error_dialog.connect("response", self.cb_close_dialog)
-
- def create_header(self) :
- hbox = gtk.HBox()
-
- label = gtk.Label()
- label.set_markup("EM Calculator")
- hbox.pack_start(label)
-
- label = gtk.Label()
- text = """
-
-Shows
- - stopping power for e/mu/proton
- - cross sections for gamma
-"""
- label.set_markup(text)
- hbox.pack_start(label)
-
- return hbox
-
- def create_particle_frame(self) :
- frame = gtk.Frame("Particle")
-
- hbox = gtk.HBox()
- frame.add(hbox)
- hbox.set_border_width(self.__margin)
-
- button = gtk.RadioButton(None, "electron")
- button.connect("toggled", self.cb_select_particle, "e-")
- hbox.pack_start(button, True, True, 0)
- button.show()
- self.particle = "e-"
-
- button = gtk.RadioButton(button, "positron")
- button.connect("toggled", self.cb_select_particle, "e+")
- hbox.pack_start(button, True, True, 0)
- button.show()
-
- button = gtk.RadioButton(button, "mu-")
- button.connect("toggled", self.cb_select_particle, "mu-")
- hbox.pack_start(button, True, True, 0)
- button.show()
-
- button = gtk.RadioButton(button, "mu+")
- button.connect("toggled", self.cb_select_particle, "mu+")
- hbox.pack_start(button, True, True, 0)
- button.show()
-
- button = gtk.RadioButton(button, "proton")
- button.connect("toggled", self.cb_select_particle, "proton")
- hbox.pack_start(button, True, True, 0)
- button.show()
-
- button = gtk.RadioButton(button, "gamma")
- button.connect("toggled", self.cb_select_particle, "gamma")
- hbox.pack_start(button, True, True, 0)
- button.show()
-
- return frame
-
- def create_material_frame(self) :
- frame = gtk.Frame("Material (G4Nist)")
-
- hbox = gtk.HBox()
- frame.add(hbox)
- hbox.set_border_width(self.__margin)
-
- self.material_list = [ "G4_Al", "G4_Si", "G4_Ar", "G4_Cu", "G4_Fe",
- "G4_Ge", "G4_Ag", "G4_W", "G4_Au", "G4_Pb",
- "G4_AIR", "G4_Galactic", "G4_WATER", "G4_CESIUM_IODIDE",
- "G4_SODIUM_IODIDE", "G4_PLASTIC_SC_VINYLTOLUENE",
- "G4_MYLAR" ]
-
- self.material_combo = gtk.combo_box_entry_new_text()
- hbox.pack_start(self.material_combo)
- for name in self.material_list :
- self.material_combo.append_text(name)
- self.material_combo.set_active(0)
- self.material = self.material_list[0]
- self.material_combo.connect("changed", self.cb_select_material)
-
- return frame
-
- def create_action_box(self) :
- box = gtk.HButtonBox()
- box.set_layout(gtk.BUTTONBOX_END)
- box.set_spacing(self.__margin)
-
- exec_button = gtk.Button(stock = gtk.STOCK_EXECUTE)
- text_button = gtk.Button("Text View")
- quit_button = gtk.Button(stock = gtk.STOCK_QUIT)
- box.add(exec_button)
- box.add(text_button)
- box.add(quit_button)
-
- exec_button.connect("clicked", self.cb_show_plot)
- text_button.connect("clicked", self.cb_show_textview)
- quit_button.connect("clicked", lambda w: gtk.main_quit())
-
- return box
-
- # callbacks
- def cb_show_textview(self, widget, data=None) :
- window = self.textview.get_window()
- window.show_all()
-
- def cb_select_particle(self, widget, data=None) :
- self.particle = data
-
- def cb_select_material(self, widget, data=None) :
- entry = widget.get_child()
- self.material = entry.get_text()
-
- def cb_show_plot(self, widget, data=None) :
- g4mate = gNistManager.FindOrBuildMaterial(self.material)
- if (g4mate == None) :
- self.error_dialog.show_all()
- return
-
- if (self.material_list.count(self.material) == 0) :
- self.material_combo.append_text(self.material)
-
- if (self.particle == "gamma" ) :
- plot_gamma(self.material)
- else :
- plot_charged(self.material, self.particle)
- self.textview.textbuffer.set_text(mycout.getvalue())
-
- def cb_close_dialog(self, widget, data=None) :
- widget.hide_all()
-
-
-# -------------------------------------------------------------------
-# text view
-# -------------------------------------------------------------------
-class TextView :
- def __init__(self) :
- self.__margin = 8
- self.text_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- self.text_window.set_title('Value with Text')
- self.text_window.set_position(gtk.WIN_POS_MOUSE)
- self.text_window.set_default_size(500, 300)
-
- vbox = gtk.VBox()
- self.text_window.add(vbox)
-
- sw = gtk.ScrolledWindow()
- sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
- sw.set_border_width(self.__margin)
- vbox.pack_start(sw)
-
- textview = gtk.TextView()
- self.textbuffer = textview.get_buffer()
- sw.add(textview)
-
- hbox = gtk.HButtonBox()
- hbox.set_layout(gtk.BUTTONBOX_END)
- hbox.set_border_width(self.__margin)
- vbox.pack_start(hbox, expand=False)
-
- close_button = gtk.Button(stock = gtk.STOCK_CLOSE)
- close_button.connect("clicked", self.cb_hide_window)
- hbox.add(close_button)
-
- def get_window(self) :
- return self.text_window
-
- def cb_hide_window(self, widget, data=None) :
- self.text_window.hide_all()
- return False
-
-
-# ==================================================================
-# main
-# ==================================================================
-def main() :
- SetG4PyCoutDestination()
-
- default_stdout = sys.stdout
- global mycout
- sys.stdout = mycout = StringIO()
-
- # G4 setup
- g4_configure()
-
- # start GUI
- application = MainWindow()
- gtk.main()
-
- gTerminate()
- sys.stdout = default_stdout
-
-
-if __name__ == "__main__":
- try :
- main()
- except KeyboardInterrupt :
- pass
diff --git a/environments/g4py/examples/emplot/eplot.py b/environments/g4py/examples/emplot/eplot.py
deleted file mode 100755
index 14fda70c4c..0000000000
--- a/environments/g4py/examples/emplot/eplot.py
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# An example of ploting by EmCalculator
-#
-# Plotting photon cross sections and stopping power
-# ==================================================================
-from Geant4 import *
-import g4py.ExN03pl
-import g4py.emcalculator
-import EmPlot
-
-# initialize
-EmPlot.Configure()
-
-# user physics list
-g4py.ExN03pl.Construct()
-
-# target material
-material= "G4_Cu"
-EmPlot.SetMaterial(material)
-
-# initialize G4 kernel
-gRunManager.Initialize()
-gRunManagerKernel.RunInitialization()
-
-# energy
-elist= []
-for n in range(-3, 3):
- for i in range(10,99):
- elist.append(i/10.*10.**n *MeV)
-
-# calculate stopping power
-pname= "e-"
-dedx_list= g4py.emcalculator.CalculateDEDX(pname, material, elist, 1)
-xlist_tot=[]
-xlist_ioni=[]
-xlist_brems=[]
-
-for x in dedx_list:
- xlist_tot.append((x[0], x[1]["tot"]/(MeV*cm2/g)))
- xlist_ioni.append((x[0], x[1]["ioni"]/(MeV*cm2/g)))
- xlist_brems.append((x[0], x[1]["brems"]/(MeV*cm2/g)))
-
-# make plot
-myCanvas= EmPlot.init_root()
-aplot= EmPlot.make_plot(xlist_tot, pname+" Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)")
-bplot= EmPlot.make_plot(xlist_ioni, "Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)", 1)
-cplot= EmPlot.make_plot(xlist_brems, "Stopping Power ("+material+")",
- "dE/dX (MeV cm^{2}/g)", 3)
-
diff --git a/environments/g4py/examples/emplot/pplot.py b/environments/g4py/examples/emplot/pplot.py
deleted file mode 100755
index 7a458348ad..0000000000
--- a/environments/g4py/examples/emplot/pplot.py
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# An example of ploting by EmCalculator
-#
-# Plotting photon cross sections and stopping power
-# ==================================================================
-from Geant4 import *
-import g4py.ExN03pl
-import g4py.emcalculator
-import EmPlot
-
-# initialize
-EmPlot.Configure()
-
-# user physics list
-g4py.ExN03pl.Construct()
-
-# target material
-material= "G4_Pb"
-EmPlot.SetMaterial(material)
-
-# initialize G4 kernel
-gRunManager.Initialize()
-gRunManagerKernel.RunInitialization()
-
-# energy
-elist= []
-for n in range(-3, 4):
- for i in range(10,99):
- elist.append(i/10.*10.**n *MeV)
-
-
-# calculate cross sections
-xsection_list= g4py.emcalculator.CalculatePhotonCrossSection(material, elist, 1)
-xlist_tot=[]
-xlist_comp=[]
-xlist_pe=[]
-xlist_conv=[]
-for x in xsection_list:
- xlist_tot.append((x[0]/MeV, x[1]["tot"]/(cm2/g)))
- xlist_comp.append((x[0]/MeV, x[1]["compt"]/(cm2/g)))
- xlist_pe.append((x[0]/MeV, x[1]["phot"]/(cm2/g)))
- xlist_conv.append((x[0]/MeV, x[1]["conv"]/(cm2/g)))
-
-# make a plot
-myCanvas= EmPlot.init_root()
-aplot= EmPlot.make_plot(xlist_tot, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)")
-bplot= EmPlot.make_plot(xlist_comp, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 1)
-cplot= EmPlot.make_plot(xlist_pe, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 7)
-dplot= EmPlot.make_plot(xlist_conv, "Photon Cross Section ("+material+")",
- "Cross Section (cm^{2}/g)", 3)
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd
deleted file mode 100644
index 07b4b1a8c6..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml.xsd
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Represents a single unique copy a of an associated logical volume
- in geometrical hierarchy
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Represents a division of the associated logical volume
- in geometrical hierarchy
-
-
-
-
-
-
-
-
-
-
-
-
-
- Represents a top of a geometrical sub-hierarchy not placed in space
- None of its children can coincide with its boundary defined by an associated solid
- Two different placements of the same logical volume represent two different geometrical
- hierarchies in space
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Allows to create a group of volumes bound together without a boundary
- All the volumes exits inside the same virtual reference system of the assmebly volume
- they belong to
- When assembly volume is placed all its children follow the global transformation applied
- to their assembly volume
- After the assembly volume is placed its children exist as standalone placements in space
- independent of each other
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base type for logical surfaces (for the moment only optical)
-
-
-
-
-
-
-
-
- Abstract element for all solids substitution group
-
-
-
-
-
- Surface between two physical volumes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Surface between two physical volumes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Definitions of a geometrical hierarchy of a set of volumes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Geometry setup representing the particular geometry hierarchy by refferring to
- a given volume which becomes the top level volume
-
-
-
-
-
- A reference to the previously defined volume
- in the structure block chosen by this setup
- World volumme can't be an assembly volume
-
-
-
-
-
-
-
-
-
-
- The GDML Schema version consists of 3 digits X.Y.Z
- where these mean:
- X - major number, increased when major new
- features or backward incompatible bug fixes
- are added and means the GDML Processor is
- allowed to refuse processing of such a
- document if this is using the more recent
- version of the GDML Schema then GDML Processor
- understands
- Y - minor number, increased when incremental and
- backward compatible changes or improvements
- are made into the GDML Schema. GDML Processor
- should be able to process such a document
- using higher minor version number then that of
- the GDML Processor
- Z - bugfix revision number, increased when fully
- backward compatible changes which resolve a
- problem in GDML Schema are applied
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd
deleted file mode 100644
index 811e4d78f7..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_core.xsd
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- An anonymous, local scope, value
-
-
-
-
-
-
- An anonymous, local scope, value
-
-
-
-
-
-
- Named (referenced), global scope, constant value
-
-
-
-
-
-
-
-
-
-
- Named (referenced), local scope, variable value
-
-
-
-
-
-
-
-
-
-
- An anonymous quantity, local scope, with a unit,
- (possibly of a given type) quantity
-
-
-
-
-
-
-
-
-
-
-
-
- Named (referenced), global scope,(possibly of a given type) quantity
-
-
-
-
-
-
-
-
-
-
- An anonymous, 3 dimensional, local scope, vector of doubles
-
-
-
-
-
-
-
-
- A bi-dimensional matrix of doubles
-
-
-
-
-
-
-
-
- Named (referenced), 3 dimensional, global scope, vector of doubles
-
-
-
-
-
-
-
-
-
-
- An anonymous, 3 dimensional, local scope, with a unit,
- (possibly of a given type) quantity vector
-
-
-
-
-
-
-
-
-
-
-
-
- Named (referenced), 3 dimensional, global scope, with a unit,
- (possibly of a given type) quantity vector
-
-
-
-
-
-
-
-
-
-
- Local reference to an element of a named type
-
-
-
-
-
-
- Reference to an external file containing sub-volume information
-
-
-
-
-
-
-
- List of local references to a set of element of a named type
-
-
-
-
-
-
- Auxiliary information like sensitive detector declaration, etc.
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd
deleted file mode 100644
index 9a72fe6715..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_define.xsd
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
- Definition block of global named constants, quantitties, expressions,
- positions and rotations which may be used by name or
- by a reference in scope of the current document
-
-
-
-
-
-
- The global complex type is defined in order to reuse this defintion
- in derived schemas
-
-
-
-
-
-
-
-
-
-
-
- Named constant
-
-
-
-
-
-
- Named variable
-
-
-
-
-
-
- Named matrix
-
-
-
-
-
-
- Named quantity
-
-
-
-
-
-
- Named expression, may contain other named constants,
- quantities and expressions
-
-
-
-
-
-
- Named cartesian position, default unit mm
-
-
-
-
-
-
- Named cartesian rotation, default unit radian
-
-
-
-
-
-
- Named cartesian rotation, default unit radian
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd
deleted file mode 100644
index 4c537de559..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_extensions.xsd
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd
deleted file mode 100644
index bb43e6cb3f..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_materials.xsd
+++ /dev/null
@@ -1,390 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- Atomic mass, quantity type A, default unit g/mole
-
-
-
-
-
-
-
-
-
-
-
- Density
-
-
-
-
-
-
-
-
-
-
-
- General material properties
-
-
-
-
-
- General material property (const or vector)
-
-
-
-
-
-
-
-
-
-
-
-
-
- Radiation length
-
-
-
-
-
-
-
-
-
-
-
-
- A reference to a previsouly defined named radiation length quantity value
-
-
-
-
-
-
- Absorption length
-
-
-
-
-
-
-
-
-
-
-
-
- A reference to a previsouly defined named absorption length quantity value
-
-
-
-
-
-
- Temperature
-
-
-
-
-
-
-
-
-
-
-
-
- A reference to previously defined named temperature quantity value
-
-
-
-
-
-
- Pressure
-
-
-
-
-
-
-
-
-
-
-
-
- A reference to previously defined named pressure quantity value
-
-
-
-
-
-
-
-
- General material attributes
-
-
-
- Material name
-
-
-
-
- Material chemical formula
-
-
-
-
- Material physical state
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base type for materials
-
-
-
-
-
-
-
-
-
-
-
-
- Materials description
-
-
-
-
-
-
- Material related definitons of constants and quantities
- In this version of schema these become visible in global scope
-
-
-
-
- An isotope
-
-
-
-
- A simple element or an element composed of isotopes
-
-
-
-
- A composite or a mixture complex material
-
-
-
-
-
-
-
-
- Exported isotope type
-
-
-
-
-
-
-
- Density quantity value
-
-
-
-
- A reference to a previsouly defined named density quantity value
-
-
-
-
-
-
-
- Number of nucleons
-
-
-
-
- Atomic number
-
-
-
-
-
-
-
-
- Exported material element type
-
-
-
-
-
-
-
- Density quantity value
-
-
-
-
- A reference to a previsouly defined named density quantity value
-
-
-
-
-
- An element can be defined either as a simple element or by a set
- of isotopes fractions
-
-
-
-
- An isotope fraction of an element where n is the actual amount
- of the isotope in the element
-
-
-
-
-
-
-
-
-
-
-
-
-
- Number of nucleons
-
-
-
-
- Atomic number
-
-
-
-
-
-
-
-
- Exported material composite or mixture type
-
-
-
-
-
-
-
-
- Density quantity value
-
-
-
-
- A reference to a previsouly defined named density quantity value
-
-
-
-
-
- A complex material can be defined as a simple mixture when
- its material properties are known or as a composite material
- or a mixture. A composite material is defined by a set of elements
- by specifying the number of atoms.
- The second way is by a set of material fractions where the fractions
- can be either simple elements or other complex materials.
- The restriction is that one can't mix composition by atoms and fractions
- at the same time.
-
-
-
-
- Elements of this composite material specified as a set of local references
- to already defined simple elements where value of n in each means the number of atoms
-
-
-
-
-
-
-
-
-
-
-
- Fractions of this mixture specified as a set of local references to already defined
- elements or other mixtures where value of n in each means the fraction of the whole
- material in the range 0.0 < n < 1.0
-
-
-
-
-
-
-
-
-
-
-
-
-
- Atomic number
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd
deleted file mode 100644
index 3ba4bb009a..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_parameterised.xsd
+++ /dev/null
@@ -1,263 +0,0 @@
-
-
-
-
-
-
-
- Abstract base for parametrised dimensions
-
-
-
-
-
- Abstract element for substitution group
-
-
-
-
-
- Dimensions for parametrised Boxes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Trd.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Trap.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Tubes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Cones.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Spheres.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Orbs.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Torus.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Paras.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Dimensions for parametrised Hypes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Abstract base for parameterised placement strategies
-
-
-
-
-
- Abstract element for substitution group
-
-
-
-
-
- Parameterised volumes get created using
- the tabularized position and sizes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base type for parameterised volumes
-
-
-
-
-
-
-
-
-
-
-
-
-
- Holds parameteres for parameterised volumes.
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd
deleted file mode 100644
index 5e45b8b11e..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_replicas.xsd
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
- Abstract base for replication placement strategies
-
-
-
-
-
- Abstract element for substitution group
-
-
-
-
-
-
-
- Replica volumes get created along the specified direction
- starting with the first replica placed at the given position and rotated
- according to the given rotation and others placed using the given distance;
- If position and/or rotation is omitted the defaults will be applied, e.g.
- position at the mother volume center and identity rotation;
- NOTE: THE ROTATION IS APPLIED TO ALL REPLICATED VOLUMES!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base type for replicated volumes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd b/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd
deleted file mode 100644
index 410744a7cd..0000000000
--- a/environments/g4py/examples/gdml/GDMLSchema/gdml_solids.xsd
+++ /dev/null
@@ -1,855 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- Base solid type
-
-
-
- Length unit of all dimensions used for this instance of solid
-
-
-
-
- Angle unit of angles used in definition of this solid
-
-
-
-
-
-
-
-
- Base type for boolean solids
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Reflected solid:
- sx, sy, sz are scale components (containing reflection),
- rx, ry, rz are rotation angles around given axes and
- dx, dy, dz is the translation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base surface type
-
-
-
-
-
-
-
-
- Abstract element for all solids substitution group
-
-
-
-
-
-
- Abstract element for surfaces substitution
-
-
-
-
-
-
- Solids definitions block
-
-
-
-
-
- Definitions of constants and expressions to be used for solids'
- dimensions and transformations
- In this version these become part of the global scope.
-
-
-
-
-
-
-
-
-
-
-
-
- Exported boolean union of two solids
-
-
-
-
-
-
- Exported boolean subtraction of two solids
-
-
-
-
-
-
- Exported boolean intersectioin of two solids
-
-
-
-
-
-
- CSG box solid described by 3 dimensions of x, y, and z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG twisted box solid described by 4 dimensions of
- x length along x axis
- y length along y axis
- z length along z axis
- PhiTwist twist angle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- general twisted trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
- not necessarily on a line paralell to the z axis.
- PhiTwist Twist Angle
- z length along the z-axis
- Theta Polar angle of the line joining the centres of the faces at -/+z
- Phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
- y1 length along y of the face at -z
- x1 length along x of the side at y=-y1 of the face at -z
- x2 length along x of the side at y=+y1 of the face at -z
- y2 length along y of the face at +z
- x3 length along x of the side at y=-y2 of the face at +z
- x4 length along x of the side at y=+y2 of the face at +z
- Alph Angle with respect to the y axis from the centre of the side
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- different length axis twistable trapezoid. faces perpendicular to the z planes are trapezia, and their centres are
- not necessarily on a line paralell to the z axis.
- PhiTwist Twist Angle
- z length along the z-axis
- y1 length along y of the face at -z
- x1 length along x of the side at y=-y1 of the face at -z
- x2 length along x of the side at y=+y1 of the face at -z
- y2 length along y of the face at +z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG paraboloid defined by
- rlo radius at -dz
- rhi radius at +dz
- dz half z length
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG sphere or spherical shell segment solid described by
- rmin inner radius
- rmax outer radius
- startphi starting angle of the segment in radians(0 <= phi <= 2*PI)
- deltaphi delta angle of the segment in radians
- starttheta starting angle of the segment in radians(0 <= theta <= PI)
- deltatheta delta angle of the segment in radians
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG ellispoid or ellipsoidal shell segment solid described by
- ax x semiaxis
- by y semiaxis
- cz z semiaxis
- zcut1 bottom plane cutting ellipsoid
- zcut2 top plane cutting ellispoid
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG tube or tube segement solid described by
- rmin Inner radius
- rmax Outer radius
- z length in z
- startphi The starting phi angle in radians, adjusted such that
- (startphi+deltaphi <= 2PI, startphi > -2PI)
- deltaphi Delta angle of the segment in radians
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG twisted tube segement solid described by
- twistedangle twist angle
- endinnerrad inside radius at end of segment
- endouterrad outside radius at end of segment
- zlen z length of segment
- phi phi angle of a segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG cut tube or cut tube segment solid described by
- rmin Inner radius
- rmax Outer radius
- z length in z
- startphi The starting phi angle in radians, adjusted such that (startphi+deltaphi <= 2PI, startphi > -2PI)
- deltaphi Delta angle of the segment in radians
- lowX, lowY, lowZ Normal at lower Z plane
- highX, highY, highZ Normal at higher Z plane
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG cone or cone segment described by
- rmin1 inside radius at z/2
- rmin2 inside radius at z/2
- rmax1 outside radius at z/2
- rmax2 outside radius at z/2
- z length in z
- startphi starting angle of the segment in radians
- deltaphi delta angle of the segment in radians
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG cone with elliptical cross section
- dx semiaxis in X
- dy semiaxis in Y
- zmax height of elliptical cone
- zcut upper cut plane level
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG polycone or polycone segment described by
- startphi starting angle of the segment in radians
- deltaphi delta angle of the segment in radians
-
- and a set of z-planes each described by
- rmin inside radius at z/2
- rmax outside radius at z/2
- z length in z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG parallelepiped solid is described by
- x, y, z length in x,y,z
- alpha Angle formed by the y axis and by the plane joining the centre of the faces
- G4Parallel to the z-x plane at -y and +y
- theta Polar angle of the line joining the centres of the faces at -z and +z in z
- phi Azimuthal angle of the line joining the centres of the faces at -z and +z in z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG trapezoid solid with varying x and y dimensions along z axis
- x1 Length along x at the surface positioned at -z
- x2 Length along x at the surface positioned at +z
- y1 Length along y at the surface positioned at -z
- y2 Length along y at the surface positioned at +z
- z Length along z axis
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG general trapezoid solid is described by
- z Length along the z-axis
- theta Polar angle of the line joining the centres of the faces at -/+z
- phi Azimuthal angle of the line joing the centre of the face at -z to the centre of the face at +z
- y1 Length along y of the face at -z
- x1 Length along x of the side at y = -y1 of the face at -z
- x2 Length along x of the side at y = +y1 of the face at -z
- alp1 Angle with respect to the y axis from the centre of the side at y =- y1 to the centre at y = +y1 of the face at -z
- y2 Length along y of the face at +z
- x3 Length along x of the side at y = -y2 of the face at +z
- x4 Length along x of the side at y = +y2 of the face at +z
- alp2 Angle with respect to the y axis from the centre of the side at y = -y2 to the centre at y = +y2 of the face at +z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG torus solid is described by
- rmin Inside radius
- rmax Outside radius
- rtor swept radius of torus
- startphi The starting phi angle in radians adjusted such that sphi+dphi lt 2PI, sphi gt -2PI
- deltaphi Delta angle of the segment in radians
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CSG orb solid (simplified sphere with only rmax) is described by
- r Outside radius
-
-
-
-
-
-
-
-
-
-
-
-
-
- Polyhedra is described by
- startphi initial phi starting angle
- totalphi total phi angle
- numsides number sides
- and a set of zplanes.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Poligonal extrusion is described by
- an unbounded (min. 3) number of vertices of the blueprint polygon
- and an unbounded number of Z sections.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tube with hyperbolic profile described by
- rmin innerRadius
- rmax outerRadius
- inst innerStereo
- outst outerStereo
- z z length
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Volume representing a tube with elliptical
- cross section.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Volume representing a tetrahedron.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Volume representing an (almost)arbitrary 8 vertices solid.
- The solid is defined by two quadrilaterals sitting on parallel planes,
- the distance between these two planes is dz*2.
- The base quadrilateral contained within the plane located at -dz is defined by
- the first 4 vertices (v1,v2,v3,v4 each one with the x and y coordinates).
- The other parallel quadrilateral contained within the plane at +dz is defined by
- the other 4 vertices (v5,v6,v7,v8 each one with the x and y coordinates).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Base facet type
-
-
-
-
-
-
- Abstract element for all facets substitution group
-
-
-
-
-
-
-
- Triangular facet.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Quadrangular facet.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Tessellated solid
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Optical surface used by Geant4 optical processes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/python3/read_gdml.py b/environments/g4py/examples/gdml/python3/read_gdml.py
deleted file mode 100755
index df13f7c24f..0000000000
--- a/environments/g4py/examples/gdml/python3/read_gdml.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python3
-# ==================================================================
-# An example for reading a GDML file
-#
-# ==================================================================
-from Geant4 import *
-import g4py.ExN01pl, g4py.ParticleGun
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-class MyDetectorConstruction(G4VUserDetectorConstruction):
- "My Detector Construction"
-
- def __init__(self):
- G4VUserDetectorConstruction.__init__(self)
- self.world= None
- self.gdml_parser= G4GDMLParser()
-
- # -----------------------------------------------------------------
- def __del__(self):
- pass
-
- # -----------------------------------------------------------------
- def Construct(self):
- self.gdml_parser.Read("qgeom.gdml")
- self.world= self.gdml_parser.GetWorldVolume()
-
- return self.world
-
-
-# ==================================================================
-# main
-# ==================================================================
-# set geometry
-myDC= MyDetectorConstruction()
-gRunManager.SetUserInitialization(myDC)
-
-# minimal physics list
-g4py.ExN01pl.Construct()
-
-# set primary generator action
-g4py.ParticleGun.Construct()
-
-# initialize
-gRunManager.Initialize()
-
-# visualization
-gApplyUICommand("/vis/open OGLIX")
-gApplyUICommand("/vis/scene/create")
-gApplyUICommand("/vis/scene/add/volume")
-gApplyUICommand("/vis/sceneHandler/attach")
-gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
-
diff --git a/environments/g4py/examples/gdml/python3/write_gdml.py b/environments/g4py/examples/gdml/python3/write_gdml.py
deleted file mode 100755
index 0e2bcb74e2..0000000000
--- a/environments/g4py/examples/gdml/python3/write_gdml.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python3
-# ==================================================================
-# An example of writing a GDML file
-#
-# ==================================================================
-from Geant4 import *
-import g4py.Qmaterials, g4py.Qgeom
-import g4py.ExN01pl, g4py.ParticleGun
-
-# ==================================================================
-# main
-# ==================================================================
-# set geometry
-g4py.Qmaterials.Construct()
-g4py.Qgeom.Construct()
-
-# minimal physics list
-g4py.ExN01pl.Construct()
-
-# set primary generator action
-g4py.ParticleGun.Construct()
-
-# initialize
-gRunManager.Initialize()
-
-# visualization
-gApplyUICommand("/vis/open OGLIX")
-gApplyUICommand("/vis/scene/create")
-gApplyUICommand("/vis/scene/add/volume")
-gApplyUICommand("/vis/sceneHandler/attach")
-gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
-
-# write to a GDML file
-print("\n*** write to a GDML file...")
-navigator= gTransportationManager.GetNavigatorForTracking()
-world_volume= navigator.GetWorldVolume()
-
-gdml_parser = G4GDMLParser()
-gdml_parser.Write("qgeom.gdml", world_volume)
-
-
diff --git a/environments/g4py/examples/gdml/qgeom.gdml b/environments/g4py/examples/gdml/qgeom.gdml
deleted file mode 100644
index a3141e8d27..0000000000
--- a/environments/g4py/examples/gdml/qgeom.gdml
+++ /dev/null
@@ -1,392 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/environments/g4py/examples/gdml/read_gdml.py b/environments/g4py/examples/gdml/read_gdml.py
deleted file mode 100755
index 37a107e48c..0000000000
--- a/environments/g4py/examples/gdml/read_gdml.py
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# An example for reading a GDML file
-#
-# ==================================================================
-from Geant4 import *
-import g4py.ExN01pl, g4py.ParticleGun
-
-# ==================================================================
-# user actions in python
-# ==================================================================
-class MyDetectorConstruction(G4VUserDetectorConstruction):
- "My Detector Construction"
-
- def __init__(self):
- G4VUserDetectorConstruction.__init__(self)
- self.world= None
- self.gdml_parser= G4GDMLParser()
-
- # -----------------------------------------------------------------
- def __del__(self):
- pass
-
- # -----------------------------------------------------------------
- def Construct(self):
- self.gdml_parser.Read("qgeom.gdml")
- self.world= self.gdml_parser.GetWorldVolume()
-
- return self.world
-
-
-# ==================================================================
-# main
-# ==================================================================
-# set geometry
-myDC= MyDetectorConstruction()
-gRunManager.SetUserInitialization(myDC)
-
-# minimal physics list
-g4py.ExN01pl.Construct()
-
-# set primary generator action
-g4py.ParticleGun.Construct()
-
-# initialize
-gRunManager.Initialize()
-
-# visualization
-gApplyUICommand("/vis/open OGLSX")
-gApplyUICommand("/vis/scene/create")
-gApplyUICommand("/vis/scene/add/volume")
-gApplyUICommand("/vis/sceneHandler/attach")
-gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
-
diff --git a/environments/g4py/examples/gdml/write_gdml.py b/environments/g4py/examples/gdml/write_gdml.py
deleted file mode 100755
index 9ff3f9aad4..0000000000
--- a/environments/g4py/examples/gdml/write_gdml.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/python
-# ==================================================================
-# An example of writing a GDML file
-#
-# ==================================================================
-from Geant4 import *
-import g4py.Qmaterials, g4py.Qgeom
-import g4py.ExN01pl, g4py.ParticleGun
-
-# ==================================================================
-# main
-# ==================================================================
-# set geometry
-g4py.Qmaterials.Construct()
-g4py.Qgeom.Construct()
-
-# minimal physics list
-g4py.ExN01pl.Construct()
-
-# set primary generator action
-g4py.ParticleGun.Construct()
-
-# initialize
-gRunManager.Initialize()
-
-# visualization
-gApplyUICommand("/vis/open OGLSX")
-gApplyUICommand("/vis/scene/create")
-gApplyUICommand("/vis/scene/add/volume")
-gApplyUICommand("/vis/sceneHandler/attach")
-gApplyUICommand("/vis/viewer/set/viewpointThetaPhi 90. -90.")
-
-# write to a GDML file
-print "\n*** write to a GDML file..."
-navigator= gTransportationManager.GetNavigatorForTracking()
-world_volume= navigator.GetWorldVolume()
-
-gdml_parser = G4GDMLParser()
-gdml_parser.Write("qgeom_out.gdml", world_volume)
-
-
diff --git a/environments/g4py/source/CMakeLists.txt b/environments/g4py/source/CMakeLists.txt
deleted file mode 100644
index 03480a5a50..0000000000
--- a/environments/g4py/source/CMakeLists.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-# - add libs components
-# Core Geant4 bindings
-add_subdirectory(global)
-add_subdirectory(interface)
-add_subdirectory(intercoms)
-add_subdirectory(run)
-add_subdirectory(event)
-add_subdirectory(tracking)
-add_subdirectory(track)
-add_subdirectory(geometry)
-add_subdirectory(materials)
-add_subdirectory(particles)
-add_subdirectory(processes)
-add_subdirectory(digits_hits)
-add_subdirectory(visualization)
-add_subdirectory(graphics_reps)
-add_subdirectory(physics_lists)
-
-# Only if GDML
-if(GEANT4_USE_GDML)
- add_subdirectory(gdml)
-endif()
-
-# Pure Python Geant4 extensions
-set(GEANT4_PYTHON_MODULES
- __init__.py
- colortable.py
- g4thread.py
- g4viscp.py
- hepunit.py)
-set(GEANT4_PYTHON_BYTECOMPILE_INPUT)
-set(GEANT4_PYTHON_BYTECOMPILE_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/__pycache__")
-
-foreach(_pymod ${GEANT4_PYTHON_MODULES})
- # Generate used to support testing and multimode so .py/pyc files are in the
- # same place as the output extensions
- file(GENERATE
- OUTPUT ${GEANT4_PYTHON_OUTPUT_DIR}/Geant4/${_pymod}
- INPUT ${CMAKE_CURRENT_SOURCE_DIR}/${_pymod})
- # Configure module for byte-compilation at install time
- # We do this locally because add_custom_command cannot use genexes in
- # its OUTPUT command
- configure_file(${_pymod} ${CMAKE_CURRENT_BINARY_DIR}/${_pymod} COPYONLY)
- list(APPEND GEANT4_PYTHON_BYTECOMPILE_INPUT ${CMAKE_CURRENT_BINARY_DIR}/${_pymod})
-endforeach()
-
-add_custom_command(
- OUTPUT "${GEANT4_PYTHON_BYTECOMPILE_OUTPUT}"
- COMMAND ${PYTHON_EXECUTABLE} -m compileall -q ${CMAKE_CURRENT_BINARY_DIR}
- DEPENDS ${GEANT4_PYTHON_BYTECOMPILE_INPUT}
- COMMENT "Byte-compiling Geant4 .py modules")
-
-add_custom_target(pyG4ByteCompile ALL DEPENDS "${GEANT4_PYTHON_BYTECOMPILE_OUTPUT}")
-
-install(FILES ${GEANT4_PYTHON_BYTECOMPILE_INPUT} DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
-install(DIRECTORY ${GEANT4_PYTHON_BYTECOMPILE_OUTPUT} DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
-
diff --git a/environments/g4py/source/__init__.py b/environments/g4py/source/__init__.py
deleted file mode 100644
index 94dbe0e40e..0000000000
--- a/environments/g4py/source/__init__.py
+++ /dev/null
@@ -1,235 +0,0 @@
-"""
-# ==================================================================
-# [Geant4] module package
-#
-# Welcome to Geant4Py.
-#
-# This package contains a set of Python interface with Geant4.
-# ==================================================================
-"""
-__version__ ='10.6'
-__date__ = 'December/2019'
-__author__ = 'K.Murakami (Koichi.Murakami@kek.jp)'
-
-# import submodules
-from .G4interfaces import *
-from .G4intercoms import *
-from .G4global import *
-from .G4run import *
-from .G4event import *
-from .G4tracking import *
-from .G4track import *
-from .G4particles import *
-from .G4processes import *
-from .G4geometry import *
-from .G4materials import *
-from .G4physicslists import *
-from .G4digits_hits import *
-from .G4visualization import *
-from .G4graphics_reps import *
-from .hepunit import *
-from .colortable import *
-
-def print_version():
- print("""=============================================================
- Welcome to Geant4Py (A Geant4-Python Bridge)
-
- Version : %s
- Date : %s
-=============================================================
-""" % ( __version__, __date__) )
-
-# ==================================================================
-# initialize
-# ==================================================================
-# set G4cout/G4cerr to Python stdout
-SetG4PyCoutDestination()
-
-# ==================================================================
-# globals, which start with "g"
-# ==================================================================
-# gRunManager
-if G4RunManager.GetRunManager() == None:
- gRunManager = G4RunManager()
-else:
- gRunManager = G4RunManager.GetRunManager()
-gRunManagerKernel = G4RunManagerKernel.GetRunManagerKernel()
-
-# gUImanager
-gUImanager = G4UImanager.GetUIpointer()
-
-# gEventManager
-gEventManager = G4EventManager.GetEventManager()
-
-# gStackManager
-gStackManager = gEventManager.GetStackManager()
-
-# gTrackingManager
-gTrackingManager = gEventManager.GetTrackingManager()
-
-# gStateManager
-gStateManager = G4StateManager.GetStateManager()
-gExceptionHandler = G4ExceptionHandler() # automatically registered
-
-# gGeometryManager
-gGeometryManager = G4GeometryManager.GetInstance()
-
-# gTransportationManager
-gTransportationManager = G4TransportationManager.GetTransportationManager()
-
-# gParticleTable
-gParticleTable = G4ParticleTable.GetParticleTable()
-gParticleIterator = PyG4ParticleList()
-
-# gProcessTable
-gProcessTable = G4ProcessTable.GetProcessTable()
-
-# gProductionCutsTable
-gProductionCutsTable = G4ProductionCutsTable.GetProductionCutsTable()
-
-# gEmCalculator
-gEmCalculator = G4EmCalculator()
-
-# gMaterial/ElementTable
-gMaterialTable = G4Material.GetMaterialTable()
-gElementTable = G4Element.GetElementTable()
-
-# gNistManager (since 7.1)
-_material_class_list = dir(G4materials)
-_qfind = _material_class_list.count("G4NistManager") > 0
-if _qfind:
- gNistManager = G4NistManager.Instance()
-
-# gVisManager
-_visdriver_list = dir(G4visualization)
-_q_opengl_ix = "G4OpenGLImmediateX" in _visdriver_list
-_q_opengl_sx = "G4OpenGLStoredX" in _visdriver_list
-_q_opengl_ixm = "G4OpenGLImmediateXm" in _visdriver_list
-_q_opengl_sxm = "G4OpenGLStoredXm" in _visdriver_list
-_q_raytracer_x = "G4RayTracerX" in _visdriver_list
-
-if G4VisManager.GetConcreteInstance() == None:
- gVisManager = G4VisManager()
- if _q_opengl_ix:
- _opengl_ix = G4OpenGLImmediateX()
- if _q_opengl_sx:
- _opengl_sx = G4OpenGLStoredX()
- if _q_opengl_ixm:
- _opengl_ixm = G4OpenGLImmediateXm()
- if _q_opengl_sxm:
- _opengl_sxm = G4OpenGLStoredXm()
- if _q_raytracer_x:
- _raytracer_x = G4RayTracerX()
-
- _vrml2 = G4VRML2File()
- _dawn = G4DAWNFILE()
- _heprep_file = G4HepRepFile()
- _atree = G4ASCIITree()
- _raytracer = G4RayTracer()
-
- if _q_opengl_ix:
- gVisManager.RegisterGraphicsSystem(_opengl_ix)
- if _q_opengl_sx:
- gVisManager.RegisterGraphicsSystem(_opengl_sx)
- if _q_opengl_ixm:
- gVisManager.RegisterGraphicsSystem(_opengl_ixm)
- if _q_opengl_sxm:
- gVisManager.RegisterGraphicsSystem(_opengl_sxm)
- if _q_raytracer_x:
- gVisManager.RegisterGraphicsSystem(_raytracer_x)
-
- gVisManager.RegisterGraphicsSystem(_vrml2)
- gVisManager.RegisterGraphicsSystem(_dawn)
- gVisManager.RegisterGraphicsSystem(_heprep_file)
- gVisManager.RegisterGraphicsSystem(_atree)
- gVisManager.RegisterGraphicsSystem(_raytracer)
-
- gVisManager.Initialize()
-
-# version information
-gG4Version = G4Version
-gG4Date = G4Date
-gG4VERSION_NUMBER = G4VERSION_NUMBER
-
-# ------------------------------------------------------------------
-# functions
-# ------------------------------------------------------------------
-gControlExecute = gUImanager.ExecuteMacroFile
-gApplyUICommand = G4intercoms.ApplyUICommand
-gGetCurrentValues = gUImanager.GetCurrentValues
-gStartUISession = G4interfaces.StartUISession
-
-
-# ==================================================================
-# extentions
-# ==================================================================
-
-# ------------------------------------------------------------------
-# generate one event
-# ------------------------------------------------------------------
-def _one_event(self):
- "generate one event."
- self.BeamOn(1)
-
-G4RunManager.OneEvent = _one_event
-
-# ------------------------------------------------------------------
-# list material information
-# ------------------------------------------------------------------
-def _list_material(self):
- "list materials."
- n_materials = len(gMaterialTable)
- print(" +------------------------------------------------------------------")
- print(" | Table of G4Material-s (%d materails defined)" % (n_materials))
- for i in range(0, n_materials) :
- material = gMaterialTable[i]
- print(" |--------------------------------------------------------"\
- "----------")
- print(" | %s: %s" % (material.GetName(),
- G4BestUnit(material.GetDensity(),"Volumic Mass")))
-
- elementVec = material.GetElementVector()
- fractionVec = material.GetFractionVector()
- abundanceVec = material.GetVecNbOfAtomsPerVolume()
- totNAtoms = material.GetTotNbOfAtomsPerVolume()
-
- n_elements = len(elementVec)
- for j in range(0, n_elements):
- print(" | + (%1d) %s(%s): A=%4.1f, N=%5.1f, " \
- "Frac.=(%4.1f%%m,%4.1f%%a)" % \
- (j+1, elementVec[j].GetName(), elementVec[j].GetSymbol(),
- elementVec[j].GetZ(),
- elementVec[j].GetN(),
- fractionVec[j]/hepunit.perCent,
- abundanceVec[j]/totNAtoms/hepunit.perCent))
-
- print(" +------------------------------------------------------------------")
-
-G4MaterialTable.ListMaterial = _list_material
-
-
-# ------------------------------------------------------------------
-# termination
-# ------------------------------------------------------------------
-def gTerminate():
- gGeometryManager.OpenGeometry()
-
-
-# ------------------------------------------------------------------
-# signal handler
-# ------------------------------------------------------------------
-import signal
-import threading
-
-def _run_abort(signum, frame):
- state = gStateManager.GetCurrentState()
-
- if(state == G4ApplicationState.G4State_GeomClosed or
- state == G4ApplicationState.G4State_EventProc):
- print("aborting Run ...")
- gRunManager.AbortRun(True)
- else:
- raise KeyboardInterrupt
-
-if (threading.activeCount() == 1):
- signal.signal(signal.SIGINT, _run_abort)
diff --git a/environments/g4py/source/colortable.py b/environments/g4py/source/colortable.py
deleted file mode 100644
index fc9b687000..0000000000
--- a/environments/g4py/source/colortable.py
+++ /dev/null
@@ -1,777 +0,0 @@
-"""
-# ==================================================================
-# Python module
-#
-# color table
-#
-# Q, 2005
-# ==================================================================
-"""
-
-
-def int_rgb(name):
- return _colortable[name]
-
-
-def float_rgb(name):
- rgb = _colortable[name]
- return (rgb[0]/255., rgb[1]/255., rgb[2]/255.)
-
-
-# ==================================================================
-# RGB color table (/usr/lib/X11/rgb.txt)
-# ==================================================================
-_colortable = { }
-_colortable["snow"] = (255, 250, 250)
-_colortable["ghost"] = (248, 248, 255)
-_colortable["GhostWhite"] = (248, 248, 255)
-_colortable["white"] = (245, 245, 245)
-_colortable["WhiteSmoke"] = (245, 245, 245)
-_colortable["gainsboro"] = (220, 220, 220)
-_colortable["floral"] = (255, 250, 240)
-_colortable["FloralWhite"] = (255, 250, 240)
-_colortable["old"] = (253, 245, 230)
-_colortable["OldLace"] = (253, 245, 230)
-_colortable["linen"] = (250, 240, 230)
-_colortable["antique"] = (250, 235, 215)
-_colortable["AntiqueWhite"] = (250, 235, 215)
-_colortable["papaya"] = (255, 239, 213)
-_colortable["PapayaWhip"] = (255, 239, 213)
-_colortable["blanched"] = (255, 235, 205)
-_colortable["BlanchedAlmond"] = (255, 235, 205)
-_colortable["bisque"] = (255, 228, 196)
-_colortable["peach"] = (255, 218, 185)
-_colortable["PeachPuff"] = (255, 218, 185)
-_colortable["navajo"] = (255, 222, 173)
-_colortable["NavajoWhite"] = (255, 222, 173)
-_colortable["moccasin"] = (255, 228, 181)
-_colortable["cornsilk"] = (255, 248, 220)
-_colortable["ivory"] = (255, 255, 240)
-_colortable["lemon"] = (255, 250, 205)
-_colortable["LemonChiffon"] = (255, 250, 205)
-_colortable["seashell"] = (255, 245, 238)
-_colortable["honeydew"] = (240, 255, 240)
-_colortable["mint"] = (245, 255, 250)
-_colortable["MintCream"] = (245, 255, 250)
-_colortable["azure"] = (240, 255, 255)
-_colortable["alice"] = (240, 248, 255)
-_colortable["AliceBlue"] = (240, 248, 255)
-_colortable["lavender"] = (230, 230, 250)
-_colortable["lavender"] = (255, 240, 245)
-_colortable["LavenderBlush"] = (255, 240, 245)
-_colortable["misty"] = (255, 228, 225)
-_colortable["MistyRose"] = (255, 228, 225)
-_colortable["white"] = (255, 255, 255)
-_colortable["black"] = (0, 0, 0)
-_colortable["dark"] = (47, 79, 79)
-_colortable["DarkSlateGray"] = (47, 79, 79)
-_colortable["dark"] = (47, 79, 79)
-_colortable["DarkSlateGrey"] = (47, 79, 79)
-_colortable["dim"] = (105, 105, 105)
-_colortable["DimGray"] = (105, 105, 105)
-_colortable["dim"] = (105, 105, 105)
-_colortable["DimGrey"] = (105, 105, 105)
-_colortable["slate"] = (112, 128, 144)
-_colortable["SlateGray"] = (112, 128, 144)
-_colortable["slate"] = (112, 128, 144)
-_colortable["SlateGrey"] = (112, 128, 144)
-_colortable["light"] = (119, 136, 153)
-_colortable["LightSlateGray"] = (119, 136, 153)
-_colortable["light"] = (119, 136, 153)
-_colortable["LightSlateGrey"] = (119, 136, 153)
-_colortable["gray"] = (190, 190, 190)
-_colortable["grey"] = (190, 190, 190)
-_colortable["light"] = (211, 211, 211)
-_colortable["LightGrey"] = (211, 211, 211)
-_colortable["light"] = (211, 211, 211)
-_colortable["LightGray"] = (211, 211, 211)
-_colortable["midnight"] = (25, 25, 112)
-_colortable["MidnightBlue"] = (25, 25, 112)
-_colortable["navy"] = (0, 0, 128)
-_colortable["navy"] = (0, 0, 128)
-_colortable["NavyBlue"] = (0, 0, 128)
-_colortable["cornflower"] = (100, 149, 237)
-_colortable["CornflowerBlue"] = (100, 149, 237)
-_colortable["dark"] = (72, 61, 139)
-_colortable["DarkSlateBlue"] = (72, 61, 139)
-_colortable["slate"] = (106, 90, 205)
-_colortable["SlateBlue"] = (106, 90, 205)
-_colortable["medium"] = (123, 104, 238)
-_colortable["MediumSlateBlue"] = (123, 104, 238)
-_colortable["light"] = (132, 112, 255)
-_colortable["LightSlateBlue"] = (132, 112, 255)
-_colortable["medium"] = (0, 0, 205)
-_colortable["MediumBlue"] = (0, 0, 205)
-_colortable["royal"] = (65, 105, 225)
-_colortable["RoyalBlue"] = (65, 105, 225)
-_colortable["blue"] = (0, 0, 255)
-_colortable["dodger"] = (30, 144, 255)
-_colortable["DodgerBlue"] = (30, 144, 255)
-_colortable["deep"] = (0, 191, 255)
-_colortable["DeepSkyBlue"] = (0, 191, 255)
-_colortable["sky"] = (135, 206, 235)
-_colortable["SkyBlue"] = (135, 206, 235)
-_colortable["light"] = (135, 206, 250)
-_colortable["LightSkyBlue"] = (135, 206, 250)
-_colortable["steel"] = (70, 130, 180)
-_colortable["SteelBlue"] = (70, 130, 180)
-_colortable["light"] = (176, 196, 222)
-_colortable["LightSteelBlue"] = (176, 196, 222)
-_colortable["light"] = (173, 216, 230)
-_colortable["LightBlue"] = (173, 216, 230)
-_colortable["powder"] = (176, 224, 230)
-_colortable["PowderBlue"] = (176, 224, 230)
-_colortable["pale"] = (175, 238, 238)
-_colortable["PaleTurquoise"] = (175, 238, 238)
-_colortable["dark"] = (0, 206, 209)
-_colortable["DarkTurquoise"] = (0, 206, 209)
-_colortable["medium"] = (72, 209, 204)
-_colortable["MediumTurquoise"] = (72, 209, 204)
-_colortable["turquoise"] = (64, 224, 208)
-_colortable["cyan"] = (0, 255, 255)
-_colortable["light"] = (224, 255, 255)
-_colortable["LightCyan"] = (224, 255, 255)
-_colortable["cadet"] = (95, 158, 160)
-_colortable["CadetBlue"] = (95, 158, 160)
-_colortable["medium"] = (102, 205, 170)
-_colortable["MediumAquamarine"] = (102, 205, 170)
-_colortable["aquamarine"] = (127, 255, 212)
-_colortable["dark"] = (0, 100, 0)
-_colortable["DarkGreen"] = (0, 100, 0)
-_colortable["dark"] = (85, 107, 47)
-_colortable["DarkOliveGreen"] = (85, 107, 47)
-_colortable["dark"] = (143, 188, 143)
-_colortable["DarkSeaGreen"] = (143, 188, 143)
-_colortable["sea"] = (46, 139, 87)
-_colortable["SeaGreen"] = (46, 139, 87)
-_colortable["medium"] = (60, 179, 113)
-_colortable["MediumSeaGreen"] = (60, 179, 113)
-_colortable["light"] = (32, 178, 170)
-_colortable["LightSeaGreen"] = (32, 178, 170)
-_colortable["pale"] = (152, 251, 152)
-_colortable["PaleGreen"] = (152, 251, 152)
-_colortable["spring"] = (0, 255, 127)
-_colortable["SpringGreen"] = (0, 255, 127)
-_colortable["lawn"] = (124, 252, 0)
-_colortable["LawnGreen"] = (124, 252, 0)
-_colortable["green"] = (0, 255, 0)
-_colortable["chartreuse"] = (127, 255, 0)
-_colortable["medium"] = (0, 250, 154)
-_colortable["MediumSpringGreen"] = (0, 250, 154)
-_colortable["green"] = (173, 255, 47)
-_colortable["GreenYellow"] = (173, 255, 47)
-_colortable["lime"] = (50, 205, 50)
-_colortable["LimeGreen"] = (50, 205, 50)
-_colortable["yellow"] = (154, 205, 50)
-_colortable["YellowGreen"] = (154, 205, 50)
-_colortable["forest"] = (34, 139, 34)
-_colortable["ForestGreen"] = (34, 139, 34)
-_colortable["olive"] = (107, 142, 35)
-_colortable["OliveDrab"] = (107, 142, 35)
-_colortable["dark"] = (189, 183, 107)
-_colortable["DarkKhaki"] = (189, 183, 107)
-_colortable["khaki"] = (240, 230, 140)
-_colortable["pale"] = (238, 232, 170)
-_colortable["PaleGoldenrod"] = (238, 232, 170)
-_colortable["light"] = (250, 250, 210)
-_colortable["LightGoldenrodYellow"] = (250, 250, 210)
-_colortable["light"] = (255, 255, 224)
-_colortable["LightYellow"] = (255, 255, 224)
-_colortable["yellow"] = (255, 255, 0)
-_colortable["gold"] = (255, 215, 0)
-_colortable["light"] = (238, 221, 130)
-_colortable["LightGoldenrod"] = (238, 221, 130)
-_colortable["goldenrod"] = (218, 165, 32)
-_colortable["dark"] = (184, 134, 11)
-_colortable["DarkGoldenrod"] = (184, 134, 11)
-_colortable["rosy"] = (188, 143, 143)
-_colortable["RosyBrown"] = (188, 143, 143)
-_colortable["indian"] = (205, 92, 92)
-_colortable["IndianRed"] = (205, 92, 92)
-_colortable["saddle"] = (139, 69, 19)
-_colortable["SaddleBrown"] = (139, 69, 19)
-_colortable["sienna"] = (160, 82, 45)
-_colortable["peru"] = (205, 133, 63)
-_colortable["burlywood"] = (222, 184, 135)
-_colortable["beige"] = (245, 245, 220)
-_colortable["wheat"] = (245, 222, 179)
-_colortable["sandy"] = (244, 164, 96)
-_colortable["SandyBrown"] = (244, 164, 96)
-_colortable["tan"] = (210, 180, 140)
-_colortable["chocolate"] = (210, 105, 30)
-_colortable["firebrick"] = (178, 34, 34)
-_colortable["brown"] = (165, 42, 42)
-_colortable["dark"] = (233, 150, 122)
-_colortable["DarkSalmon"] = (233, 150, 122)
-_colortable["salmon"] = (250, 128, 114)
-_colortable["light"] = (255, 160, 122)
-_colortable["LightSalmon"] = (255, 160, 122)
-_colortable["orange"] = (255, 165, 0)
-_colortable["dark"] = (255, 140, 0)
-_colortable["DarkOrange"] = (255, 140, 0)
-_colortable["coral"] = (255, 127, 80)
-_colortable["light"] = (240, 128, 128)
-_colortable["LightCoral"] = (240, 128, 128)
-_colortable["tomato"] = (255, 99, 71)
-_colortable["orange"] = (255, 69, 0)
-_colortable["OrangeRed"] = (255, 69, 0)
-_colortable["red"] = (255, 0, 0)
-_colortable["hot"] = (255, 105, 180)
-_colortable["HotPink"] = (255, 105, 180)
-_colortable["deep"] = (255, 20, 147)
-_colortable["DeepPink"] = (255, 20, 147)
-_colortable["pink"] = (255, 192, 203)
-_colortable["light"] = (255, 182, 193)
-_colortable["LightPink"] = (255, 182, 193)
-_colortable["pale"] = (219, 112, 147)
-_colortable["PaleVioletRed"] = (219, 112, 147)
-_colortable["maroon"] = (176, 48, 96)
-_colortable["medium"] = (199, 21, 133)
-_colortable["MediumVioletRed"] = (199, 21, 133)
-_colortable["violet"] = (208, 32, 144)
-_colortable["VioletRed"] = (208, 32, 144)
-_colortable["magenta"] = (255, 0, 255)
-_colortable["violet"] = (238, 130, 238)
-_colortable["plum"] = (221, 160, 221)
-_colortable["orchid"] = (218, 112, 214)
-_colortable["medium"] = (186, 85, 211)
-_colortable["MediumOrchid"] = (186, 85, 211)
-_colortable["dark"] = (153, 50, 204)
-_colortable["DarkOrchid"] = (153, 50, 204)
-_colortable["dark"] = (148, 0, 211)
-_colortable["DarkViolet"] = (148, 0, 211)
-_colortable["blue"] = (138, 43, 226)
-_colortable["BlueViolet"] = (138, 43, 226)
-_colortable["purple"] = (160, 32, 240)
-_colortable["medium"] = (147, 112, 219)
-_colortable["MediumPurple"] = (147, 112, 219)
-_colortable["thistle"] = (216, 191, 216)
-_colortable["snow1"] = (255, 250, 250)
-_colortable["snow2"] = (238, 233, 233)
-_colortable["snow3"] = (205, 201, 201)
-_colortable["snow4"] = (139, 137, 137)
-_colortable["seashell1"] = (255, 245, 238)
-_colortable["seashell2"] = (238, 229, 222)
-_colortable["seashell3"] = (205, 197, 191)
-_colortable["seashell4"] = (139, 134, 130)
-_colortable["AntiqueWhite1"] = (255, 239, 219)
-_colortable["AntiqueWhite2"] = (238, 223, 204)
-_colortable["AntiqueWhite3"] = (205, 192, 176)
-_colortable["AntiqueWhite4"] = (139, 131, 120)
-_colortable["bisque1"] = (255, 228, 196)
-_colortable["bisque2"] = (238, 213, 183)
-_colortable["bisque3"] = (205, 183, 158)
-_colortable["bisque4"] = (139, 125, 107)
-_colortable["PeachPuff1"] = (255, 218, 185)
-_colortable["PeachPuff2"] = (238, 203, 173)
-_colortable["PeachPuff3"] = (205, 175, 149)
-_colortable["PeachPuff4"] = (139, 119, 101)
-_colortable["NavajoWhite1"] = (255, 222, 173)
-_colortable["NavajoWhite2"] = (238, 207, 161)
-_colortable["NavajoWhite3"] = (205, 179, 139)
-_colortable["NavajoWhite4"] = (139, 121, 94)
-_colortable["LemonChiffon1"] = (255, 250, 205)
-_colortable["LemonChiffon2"] = (238, 233, 191)
-_colortable["LemonChiffon3"] = (205, 201, 165)
-_colortable["LemonChiffon4"] = (139, 137, 112)
-_colortable["cornsilk1"] = (255, 248, 220)
-_colortable["cornsilk2"] = (238, 232, 205)
-_colortable["cornsilk3"] = (205, 200, 177)
-_colortable["cornsilk4"] = (139, 136, 120)
-_colortable["ivory1"] = (255, 255, 240)
-_colortable["ivory2"] = (238, 238, 224)
-_colortable["ivory3"] = (205, 205, 193)
-_colortable["ivory4"] = (139, 139, 131)
-_colortable["honeydew1"] = (240, 255, 240)
-_colortable["honeydew2"] = (224, 238, 224)
-_colortable["honeydew3"] = (193, 205, 193)
-_colortable["honeydew4"] = (131, 139, 131)
-_colortable["LavenderBlush1"] = (255, 240, 245)
-_colortable["LavenderBlush2"] = (238, 224, 229)
-_colortable["LavenderBlush3"] = (205, 193, 197)
-_colortable["LavenderBlush4"] = (139, 131, 134)
-_colortable["MistyRose1"] = (255, 228, 225)
-_colortable["MistyRose2"] = (238, 213, 210)
-_colortable["MistyRose3"] = (205, 183, 181)
-_colortable["MistyRose4"] = (139, 125, 123)
-_colortable["azure1"] = (240, 255, 255)
-_colortable["azure2"] = (224, 238, 238)
-_colortable["azure3"] = (193, 205, 205)
-_colortable["azure4"] = (131, 139, 139)
-_colortable["SlateBlue1"] = (131, 111, 255)
-_colortable["SlateBlue2"] = (122, 103, 238)
-_colortable["SlateBlue3"] = (105, 89, 205)
-_colortable["SlateBlue4"] = (71, 60, 139)
-_colortable["RoyalBlue1"] = (72, 118, 255)
-_colortable["RoyalBlue2"] = (67, 110, 238)
-_colortable["RoyalBlue3"] = (58, 95, 205)
-_colortable["RoyalBlue4"] = (39, 64, 139)
-_colortable["blue1"] = (0, 0, 255)
-_colortable["blue2"] = (0, 0, 238)
-_colortable["blue3"] = (0, 0, 205)
-_colortable["blue4"] = (0, 0, 139)
-_colortable["DodgerBlue1"] = (30, 144, 255)
-_colortable["DodgerBlue2"] = (28, 134, 238)
-_colortable["DodgerBlue3"] = (24, 116, 205)
-_colortable["DodgerBlue4"] = (16, 78, 139)
-_colortable["SteelBlue1"] = (99, 184, 255)
-_colortable["SteelBlue2"] = (92, 172, 238)
-_colortable["SteelBlue3"] = (79, 148, 205)
-_colortable["SteelBlue4"] = (54, 100, 139)
-_colortable["DeepSkyBlue1"] = (0, 191, 255)
-_colortable["DeepSkyBlue2"] = (0, 178, 238)
-_colortable["DeepSkyBlue3"] = (0, 154, 205)
-_colortable["DeepSkyBlue4"] = (0, 104, 139)
-_colortable["SkyBlue1"] = (135, 206, 255)
-_colortable["SkyBlue2"] = (126, 192, 238)
-_colortable["SkyBlue3"] = (108, 166, 205)
-_colortable["SkyBlue4"] = (74, 112, 139)
-_colortable["LightSkyBlue1"] = (176, 226, 255)
-_colortable["LightSkyBlue2"] = (164, 211, 238)
-_colortable["LightSkyBlue3"] = (141, 182, 205)
-_colortable["LightSkyBlue4"] = (96, 123, 139)
-_colortable["SlateGray1"] = (198, 226, 255)
-_colortable["SlateGray2"] = (185, 211, 238)
-_colortable["SlateGray3"] = (159, 182, 205)
-_colortable["SlateGray4"] = (108, 123, 139)
-_colortable["LightSteelBlue1"] = (202, 225, 255)
-_colortable["LightSteelBlue2"] = (188, 210, 238)
-_colortable["LightSteelBlue3"] = (162, 181, 205)
-_colortable["LightSteelBlue4"] = (110, 123, 139)
-_colortable["LightBlue1"] = (191, 239, 255)
-_colortable["LightBlue2"] = (178, 223, 238)
-_colortable["LightBlue3"] = (154, 192, 205)
-_colortable["LightBlue4"] = (104, 131, 139)
-_colortable["LightCyan1"] = (224, 255, 255)
-_colortable["LightCyan2"] = (209, 238, 238)
-_colortable["LightCyan3"] = (180, 205, 205)
-_colortable["LightCyan4"] = (122, 139, 139)
-_colortable["PaleTurquoise1"] = (187, 255, 255)
-_colortable["PaleTurquoise2"] = (174, 238, 238)
-_colortable["PaleTurquoise3"] = (150, 205, 205)
-_colortable["PaleTurquoise4"] = (102, 139, 139)
-_colortable["CadetBlue1"] = (152, 245, 255)
-_colortable["CadetBlue2"] = (142, 229, 238)
-_colortable["CadetBlue3"] = (122, 197, 205)
-_colortable["CadetBlue4"] = (83, 134, 139)
-_colortable["turquoise1"] = (0, 245, 255)
-_colortable["turquoise2"] = (0, 229, 238)
-_colortable["turquoise3"] = (0, 197, 205)
-_colortable["turquoise4"] = (0, 134, 139)
-_colortable["cyan1"] = (0, 255, 255)
-_colortable["cyan2"] = (0, 238, 238)
-_colortable["cyan3"] = (0, 205, 205)
-_colortable["cyan4"] = (0, 139, 139)
-_colortable["DarkSlateGray1"] = (151, 255, 255)
-_colortable["DarkSlateGray2"] = (141, 238, 238)
-_colortable["DarkSlateGray3"] = (121, 205, 205)
-_colortable["DarkSlateGray4"] = (82, 139, 139)
-_colortable["aquamarine1"] = (127, 255, 212)
-_colortable["aquamarine2"] = (118, 238, 198)
-_colortable["aquamarine3"] = (102, 205, 170)
-_colortable["aquamarine4"] = (69, 139, 116)
-_colortable["DarkSeaGreen1"] = (193, 255, 193)
-_colortable["DarkSeaGreen2"] = (180, 238, 180)
-_colortable["DarkSeaGreen3"] = (155, 205, 155)
-_colortable["DarkSeaGreen4"] = (105, 139, 105)
-_colortable["SeaGreen1"] = (84, 255, 159)
-_colortable["SeaGreen2"] = (78, 238, 148)
-_colortable["SeaGreen3"] = (67, 205, 128)
-_colortable["SeaGreen4"] = (46, 139, 87)
-_colortable["PaleGreen1"] = (154, 255, 154)
-_colortable["PaleGreen2"] = (144, 238, 144)
-_colortable["PaleGreen3"] = (124, 205, 124)
-_colortable["PaleGreen4"] = (84, 139, 84)
-_colortable["SpringGreen1"] = (0, 255, 127)
-_colortable["SpringGreen2"] = (0, 238, 118)
-_colortable["SpringGreen3"] = (0, 205, 102)
-_colortable["SpringGreen4"] = (0, 139, 69)
-_colortable["green1"] = (0, 255, 0)
-_colortable["green2"] = (0, 238, 0)
-_colortable["green3"] = (0, 205, 0)
-_colortable["green4"] = (0, 139, 0)
-_colortable["chartreuse1"] = (127, 255, 0)
-_colortable["chartreuse2"] = (118, 238, 0)
-_colortable["chartreuse3"] = (102, 205, 0)
-_colortable["chartreuse4"] = (69, 139, 0)
-_colortable["OliveDrab1"] = (192, 255, 62)
-_colortable["OliveDrab2"] = (179, 238, 58)
-_colortable["OliveDrab3"] = (154, 205, 50)
-_colortable["OliveDrab4"] = (105, 139, 34)
-_colortable["DarkOliveGreen1"] = (202, 255, 112)
-_colortable["DarkOliveGreen2"] = (188, 238, 104)
-_colortable["DarkOliveGreen3"] = (162, 205, 90)
-_colortable["DarkOliveGreen4"] = (110, 139, 61)
-_colortable["khaki1"] = (255, 246, 143)
-_colortable["khaki2"] = (238, 230, 133)
-_colortable["khaki3"] = (205, 198, 115)
-_colortable["khaki4"] = (139, 134, 78)
-_colortable["LightGoldenrod1"] = (255, 236, 139)
-_colortable["LightGoldenrod2"] = (238, 220, 130)
-_colortable["LightGoldenrod3"] = (205, 190, 112)
-_colortable["LightGoldenrod4"] = (139, 129, 76)
-_colortable["LightYellow1"] = (255, 255, 224)
-_colortable["LightYellow2"] = (238, 238, 209)
-_colortable["LightYellow3"] = (205, 205, 180)
-_colortable["LightYellow4"] = (139, 139, 122)
-_colortable["yellow1"] = (255, 255, 0)
-_colortable["yellow2"] = (238, 238, 0)
-_colortable["yellow3"] = (205, 205, 0)
-_colortable["yellow4"] = (139, 139, 0)
-_colortable["gold1"] = (255, 215, 0)
-_colortable["gold2"] = (238, 201, 0)
-_colortable["gold3"] = (205, 173, 0)
-_colortable["gold4"] = (139, 117, 0)
-_colortable["goldenrod1"] = (255, 193, 37)
-_colortable["goldenrod2"] = (238, 180, 34)
-_colortable["goldenrod3"] = (205, 155, 29)
-_colortable["goldenrod4"] = (139, 105, 20)
-_colortable["DarkGoldenrod1"] = (255, 185, 15)
-_colortable["DarkGoldenrod2"] = (238, 173, 14)
-_colortable["DarkGoldenrod3"] = (205, 149, 12)
-_colortable["DarkGoldenrod4"] = (139, 101, 8)
-_colortable["RosyBrown1"] = (255, 193, 193)
-_colortable["RosyBrown2"] = (238, 180, 180)
-_colortable["RosyBrown3"] = (205, 155, 155)
-_colortable["RosyBrown4"] = (139, 105, 105)
-_colortable["IndianRed1"] = (255, 106, 106)
-_colortable["IndianRed2"] = (238, 99, 99)
-_colortable["IndianRed3"] = (205, 85, 85)
-_colortable["IndianRed4"] = (139, 58, 58)
-_colortable["sienna1"] = (255, 130, 71)
-_colortable["sienna2"] = (238, 121, 66)
-_colortable["sienna3"] = (205, 104, 57)
-_colortable["sienna4"] = (139, 71, 38)
-_colortable["burlywood1"] = (255, 211, 155)
-_colortable["burlywood2"] = (238, 197, 145)
-_colortable["burlywood3"] = (205, 170, 125)
-_colortable["burlywood4"] = (139, 115, 85)
-_colortable["wheat1"] = (255, 231, 186)
-_colortable["wheat2"] = (238, 216, 174)
-_colortable["wheat3"] = (205, 186, 150)
-_colortable["wheat4"] = (139, 126, 102)
-_colortable["tan1"] = (255, 165, 79)
-_colortable["tan2"] = (238, 154, 73)
-_colortable["tan3"] = (205, 133, 63)
-_colortable["tan4"] = (139, 90, 43)
-_colortable["chocolate1"] = (255, 127, 36)
-_colortable["chocolate2"] = (238, 118, 33)
-_colortable["chocolate3"] = (205, 102, 29)
-_colortable["chocolate4"] = (139, 69, 19)
-_colortable["firebrick1"] = (255, 48, 48)
-_colortable["firebrick2"] = (238, 44, 44)
-_colortable["firebrick3"] = (205, 38, 38)
-_colortable["firebrick4"] = (139, 26, 26)
-_colortable["brown1"] = (255, 64, 64)
-_colortable["brown2"] = (238, 59, 59)
-_colortable["brown3"] = (205, 51, 51)
-_colortable["brown4"] = (139, 35, 35)
-_colortable["salmon1"] = (255, 140, 105)
-_colortable["salmon2"] = (238, 130, 98)
-_colortable["salmon3"] = (205, 112, 84)
-_colortable["salmon4"] = (139, 76, 57)
-_colortable["LightSalmon1"] = (255, 160, 122)
-_colortable["LightSalmon2"] = (238, 149, 114)
-_colortable["LightSalmon3"] = (205, 129, 98)
-_colortable["LightSalmon4"] = (139, 87, 66)
-_colortable["orange1"] = (255, 165, 0)
-_colortable["orange2"] = (238, 154, 0)
-_colortable["orange3"] = (205, 133, 0)
-_colortable["orange4"] = (139, 90, 0)
-_colortable["DarkOrange1"] = (255, 127, 0)
-_colortable["DarkOrange2"] = (238, 118, 0)
-_colortable["DarkOrange3"] = (205, 102, 0)
-_colortable["DarkOrange4"] = (139, 69, 0)
-_colortable["coral1"] = (255, 114, 86)
-_colortable["coral2"] = (238, 106, 80)
-_colortable["coral3"] = (205, 91, 69)
-_colortable["coral4"] = (139, 62, 47)
-_colortable["tomato1"] = (255, 99, 71)
-_colortable["tomato2"] = (238, 92, 66)
-_colortable["tomato3"] = (205, 79, 57)
-_colortable["tomato4"] = (139, 54, 38)
-_colortable["OrangeRed1"] = (255, 69, 0)
-_colortable["OrangeRed2"] = (238, 64, 0)
-_colortable["OrangeRed3"] = (205, 55, 0)
-_colortable["OrangeRed4"] = (139, 37, 0)
-_colortable["red1"] = (255, 0, 0)
-_colortable["red2"] = (238, 0, 0)
-_colortable["red3"] = (205, 0, 0)
-_colortable["red4"] = (139, 0, 0)
-_colortable["DeepPink1"] = (255, 20, 147)
-_colortable["DeepPink2"] = (238, 18, 137)
-_colortable["DeepPink3"] = (205, 16, 118)
-_colortable["DeepPink4"] = (139, 10, 80)
-_colortable["HotPink1"] = (255, 110, 180)
-_colortable["HotPink2"] = (238, 106, 167)
-_colortable["HotPink3"] = (205, 96, 144)
-_colortable["HotPink4"] = (139, 58, 98)
-_colortable["pink1"] = (255, 181, 197)
-_colortable["pink2"] = (238, 169, 184)
-_colortable["pink3"] = (205, 145, 158)
-_colortable["pink4"] = (139, 99, 108)
-_colortable["LightPink1"] = (255, 174, 185)
-_colortable["LightPink2"] = (238, 162, 173)
-_colortable["LightPink3"] = (205, 140, 149)
-_colortable["LightPink4"] = (139, 95, 101)
-_colortable["PaleVioletRed1"] = (255, 130, 171)
-_colortable["PaleVioletRed2"] = (238, 121, 159)
-_colortable["PaleVioletRed3"] = (205, 104, 137)
-_colortable["PaleVioletRed4"] = (139, 71, 93)
-_colortable["maroon1"] = (255, 52, 179)
-_colortable["maroon2"] = (238, 48, 167)
-_colortable["maroon3"] = (205, 41, 144)
-_colortable["maroon4"] = (139, 28, 98)
-_colortable["VioletRed1"] = (255, 62, 150)
-_colortable["VioletRed2"] = (238, 58, 140)
-_colortable["VioletRed3"] = (205, 50, 120)
-_colortable["VioletRed4"] = (139, 34, 82)
-_colortable["magenta1"] = (255, 0, 255)
-_colortable["magenta2"] = (238, 0, 238)
-_colortable["magenta3"] = (205, 0, 205)
-_colortable["magenta4"] = (139, 0, 139)
-_colortable["orchid1"] = (255, 131, 250)
-_colortable["orchid2"] = (238, 122, 233)
-_colortable["orchid3"] = (205, 105, 201)
-_colortable["orchid4"] = (139, 71, 137)
-_colortable["plum1"] = (255, 187, 255)
-_colortable["plum2"] = (238, 174, 238)
-_colortable["plum3"] = (205, 150, 205)
-_colortable["plum4"] = (139, 102, 139)
-_colortable["MediumOrchid1"] = (224, 102, 255)
-_colortable["MediumOrchid2"] = (209, 95, 238)
-_colortable["MediumOrchid3"] = (180, 82, 205)
-_colortable["MediumOrchid4"] = (122, 55, 139)
-_colortable["DarkOrchid1"] = (191, 62, 255)
-_colortable["DarkOrchid2"] = (178, 58, 238)
-_colortable["DarkOrchid3"] = (154, 50, 205)
-_colortable["DarkOrchid4"] = (104, 34, 139)
-_colortable["purple1"] = (155, 48, 255)
-_colortable["purple2"] = (145, 44, 238)
-_colortable["purple3"] = (125, 38, 205)
-_colortable["purple4"] = (85, 26, 139)
-_colortable["MediumPurple1"] = (171, 130, 255)
-_colortable["MediumPurple2"] = (159, 121, 238)
-_colortable["MediumPurple3"] = (137, 104, 205)
-_colortable["MediumPurple4"] = (93, 71, 139)
-_colortable["thistle1"] = (255, 225, 255)
-_colortable["thistle2"] = (238, 210, 238)
-_colortable["thistle3"] = (205, 181, 205)
-_colortable["thistle4"] = (139, 123, 139)
-_colortable["gray0"] = (0, 0, 0)
-_colortable["grey0"] = (0, 0, 0)
-_colortable["gray1"] = (3, 3, 3)
-_colortable["grey1"] = (3, 3, 3)
-_colortable["gray2"] = (5, 5, 5)
-_colortable["grey2"] = (5, 5, 5)
-_colortable["gray3"] = (8, 8, 8)
-_colortable["grey3"] = (8, 8, 8)
-_colortable["gray4"] = (10, 10, 10)
-_colortable["grey4"] = (10, 10, 10)
-_colortable["gray5"] = (13, 13, 13)
-_colortable["grey5"] = (13, 13, 13)
-_colortable["gray6"] = (15, 15, 15)
-_colortable["grey6"] = (15, 15, 15)
-_colortable["gray7"] = (18, 18, 18)
-_colortable["grey7"] = (18, 18, 18)
-_colortable["gray8"] = (20, 20, 20)
-_colortable["grey8"] = (20, 20, 20)
-_colortable["gray9"] = (23, 23, 23)
-_colortable["grey9"] = (23, 23, 23)
-_colortable["gray10"] = (26, 26, 26)
-_colortable["grey10"] = (26, 26, 26)
-_colortable["gray11"] = (28, 28, 28)
-_colortable["grey11"] = (28, 28, 28)
-_colortable["gray12"] = (31, 31, 31)
-_colortable["grey12"] = (31, 31, 31)
-_colortable["gray13"] = (33, 33, 33)
-_colortable["grey13"] = (33, 33, 33)
-_colortable["gray14"] = (36, 36, 36)
-_colortable["grey14"] = (36, 36, 36)
-_colortable["gray15"] = (38, 38, 38)
-_colortable["grey15"] = (38, 38, 38)
-_colortable["gray16"] = (41, 41, 41)
-_colortable["grey16"] = (41, 41, 41)
-_colortable["gray17"] = (43, 43, 43)
-_colortable["grey17"] = (43, 43, 43)
-_colortable["gray18"] = (46, 46, 46)
-_colortable["grey18"] = (46, 46, 46)
-_colortable["gray19"] = (48, 48, 48)
-_colortable["grey19"] = (48, 48, 48)
-_colortable["gray20"] = (51, 51, 51)
-_colortable["grey20"] = (51, 51, 51)
-_colortable["gray21"] = (54, 54, 54)
-_colortable["grey21"] = (54, 54, 54)
-_colortable["gray22"] = (56, 56, 56)
-_colortable["grey22"] = (56, 56, 56)
-_colortable["gray23"] = (59, 59, 59)
-_colortable["grey23"] = (59, 59, 59)
-_colortable["gray24"] = (61, 61, 61)
-_colortable["grey24"] = (61, 61, 61)
-_colortable["gray25"] = (64, 64, 64)
-_colortable["grey25"] = (64, 64, 64)
-_colortable["gray26"] = (66, 66, 66)
-_colortable["grey26"] = (66, 66, 66)
-_colortable["gray27"] = (69, 69, 69)
-_colortable["grey27"] = (69, 69, 69)
-_colortable["gray28"] = (71, 71, 71)
-_colortable["grey28"] = (71, 71, 71)
-_colortable["gray29"] = (74, 74, 74)
-_colortable["grey29"] = (74, 74, 74)
-_colortable["gray30"] = (77, 77, 77)
-_colortable["grey30"] = (77, 77, 77)
-_colortable["gray31"] = (79, 79, 79)
-_colortable["grey31"] = (79, 79, 79)
-_colortable["gray32"] = (82, 82, 82)
-_colortable["grey32"] = (82, 82, 82)
-_colortable["gray33"] = (84, 84, 84)
-_colortable["grey33"] = (84, 84, 84)
-_colortable["gray34"] = (87, 87, 87)
-_colortable["grey34"] = (87, 87, 87)
-_colortable["gray35"] = (89, 89, 89)
-_colortable["grey35"] = (89, 89, 89)
-_colortable["gray36"] = (92, 92, 92)
-_colortable["grey36"] = (92, 92, 92)
-_colortable["gray37"] = (94, 94, 94)
-_colortable["grey37"] = (94, 94, 94)
-_colortable["gray38"] = (97, 97, 97)
-_colortable["grey38"] = (97, 97, 97)
-_colortable["gray39"] = (99, 99, 99)
-_colortable["grey39"] = (99, 99, 99)
-_colortable["gray40"] = (102, 102, 102)
-_colortable["grey40"] = (102, 102, 102)
-_colortable["gray41"] = (105, 105, 105)
-_colortable["grey41"] = (105, 105, 105)
-_colortable["gray42"] = (107, 107, 107)
-_colortable["grey42"] = (107, 107, 107)
-_colortable["gray43"] = (110, 110, 110)
-_colortable["grey43"] = (110, 110, 110)
-_colortable["gray44"] = (112, 112, 112)
-_colortable["grey44"] = (112, 112, 112)
-_colortable["gray45"] = (115, 115, 115)
-_colortable["grey45"] = (115, 115, 115)
-_colortable["gray46"] = (117, 117, 117)
-_colortable["grey46"] = (117, 117, 117)
-_colortable["gray47"] = (120, 120, 120)
-_colortable["grey47"] = (120, 120, 120)
-_colortable["gray48"] = (122, 122, 122)
-_colortable["grey48"] = (122, 122, 122)
-_colortable["gray49"] = (125, 125, 125)
-_colortable["grey49"] = (125, 125, 125)
-_colortable["gray50"] = (127, 127, 127)
-_colortable["grey50"] = (127, 127, 127)
-_colortable["gray51"] = (130, 130, 130)
-_colortable["grey51"] = (130, 130, 130)
-_colortable["gray52"] = (133, 133, 133)
-_colortable["grey52"] = (133, 133, 133)
-_colortable["gray53"] = (135, 135, 135)
-_colortable["grey53"] = (135, 135, 135)
-_colortable["gray54"] = (138, 138, 138)
-_colortable["grey54"] = (138, 138, 138)
-_colortable["gray55"] = (140, 140, 140)
-_colortable["grey55"] = (140, 140, 140)
-_colortable["gray56"] = (143, 143, 143)
-_colortable["grey56"] = (143, 143, 143)
-_colortable["gray57"] = (145, 145, 145)
-_colortable["grey57"] = (145, 145, 145)
-_colortable["gray58"] = (148, 148, 148)
-_colortable["grey58"] = (148, 148, 148)
-_colortable["gray59"] = (150, 150, 150)
-_colortable["grey59"] = (150, 150, 150)
-_colortable["gray60"] = (153, 153, 153)
-_colortable["grey60"] = (153, 153, 153)
-_colortable["gray61"] = (156, 156, 156)
-_colortable["grey61"] = (156, 156, 156)
-_colortable["gray62"] = (158, 158, 158)
-_colortable["grey62"] = (158, 158, 158)
-_colortable["gray63"] = (161, 161, 161)
-_colortable["grey63"] = (161, 161, 161)
-_colortable["gray64"] = (163, 163, 163)
-_colortable["grey64"] = (163, 163, 163)
-_colortable["gray65"] = (166, 166, 166)
-_colortable["grey65"] = (166, 166, 166)
-_colortable["gray66"] = (168, 168, 168)
-_colortable["grey66"] = (168, 168, 168)
-_colortable["gray67"] = (171, 171, 171)
-_colortable["grey67"] = (171, 171, 171)
-_colortable["gray68"] = (173, 173, 173)
-_colortable["grey68"] = (173, 173, 173)
-_colortable["gray69"] = (176, 176, 176)
-_colortable["grey69"] = (176, 176, 176)
-_colortable["gray70"] = (179, 179, 179)
-_colortable["grey70"] = (179, 179, 179)
-_colortable["gray71"] = (181, 181, 181)
-_colortable["grey71"] = (181, 181, 181)
-_colortable["gray72"] = (184, 184, 184)
-_colortable["grey72"] = (184, 184, 184)
-_colortable["gray73"] = (186, 186, 186)
-_colortable["grey73"] = (186, 186, 186)
-_colortable["gray74"] = (189, 189, 189)
-_colortable["grey74"] = (189, 189, 189)
-_colortable["gray75"] = (191, 191, 191)
-_colortable["grey75"] = (191, 191, 191)
-_colortable["gray76"] = (194, 194, 194)
-_colortable["grey76"] = (194, 194, 194)
-_colortable["gray77"] = (196, 196, 196)
-_colortable["grey77"] = (196, 196, 196)
-_colortable["gray78"] = (199, 199, 199)
-_colortable["grey78"] = (199, 199, 199)
-_colortable["gray79"] = (201, 201, 201)
-_colortable["grey79"] = (201, 201, 201)
-_colortable["gray80"] = (204, 204, 204)
-_colortable["grey80"] = (204, 204, 204)
-_colortable["gray81"] = (207, 207, 207)
-_colortable["grey81"] = (207, 207, 207)
-_colortable["gray82"] = (209, 209, 209)
-_colortable["grey82"] = (209, 209, 209)
-_colortable["gray83"] = (212, 212, 212)
-_colortable["grey83"] = (212, 212, 212)
-_colortable["gray84"] = (214, 214, 214)
-_colortable["grey84"] = (214, 214, 214)
-_colortable["gray85"] = (217, 217, 217)
-_colortable["grey85"] = (217, 217, 217)
-_colortable["gray86"] = (219, 219, 219)
-_colortable["grey86"] = (219, 219, 219)
-_colortable["gray87"] = (222, 222, 222)
-_colortable["grey87"] = (222, 222, 222)
-_colortable["gray88"] = (224, 224, 224)
-_colortable["grey88"] = (224, 224, 224)
-_colortable["gray89"] = (227, 227, 227)
-_colortable["grey89"] = (227, 227, 227)
-_colortable["gray90"] = (229, 229, 229)
-_colortable["grey90"] = (229, 229, 229)
-_colortable["gray91"] = (232, 232, 232)
-_colortable["grey91"] = (232, 232, 232)
-_colortable["gray92"] = (235, 235, 235)
-_colortable["grey92"] = (235, 235, 235)
-_colortable["gray93"] = (237, 237, 237)
-_colortable["grey93"] = (237, 237, 237)
-_colortable["gray94"] = (240, 240, 240)
-_colortable["grey94"] = (240, 240, 240)
-_colortable["gray95"] = (242, 242, 242)
-_colortable["grey95"] = (242, 242, 242)
-_colortable["gray96"] = (245, 245, 245)
-_colortable["grey96"] = (245, 245, 245)
-_colortable["gray97"] = (247, 247, 247)
-_colortable["grey97"] = (247, 247, 247)
-_colortable["gray98"] = (250, 250, 250)
-_colortable["grey98"] = (250, 250, 250)
-_colortable["gray99"] = (252, 252, 252)
-_colortable["grey99"] = (252, 252, 252)
-_colortable["gray100"] = (255, 255, 255)
-_colortable["grey100"] = (255, 255, 255)
-_colortable["dark"] = (169, 169, 169)
-_colortable["DarkGrey"] = (169, 169, 169)
-_colortable["dark"] = (169, 169, 169)
-_colortable["DarkGray"] = (169, 169, 169)
-_colortable["dark"] = (0, 0, 139)
-_colortable["DarkBlue"] = (0, 0, 139)
-_colortable["dark"] = (0, 139, 139)
-_colortable["DarkCyan"] = (0, 139, 139)
-_colortable["dark"] = (139, 0, 139)
-_colortable["DarkMagenta"] = (139, 0, 139)
-_colortable["dark"] = (139, 0, 0)
-_colortable["DarkRed"] = (139, 0, 0)
-_colortable["light"] = (144, 238, 144)
-_colortable["LightGreen"] = (144, 238, 144)
-
diff --git a/environments/g4py/source/digits_hits/CMakeLists.txt b/environments/g4py/source/digits_hits/CMakeLists.txt
deleted file mode 100644
index 71a7ea2625..0000000000
--- a/environments/g4py/source/digits_hits/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# - build library
-
-# library
-geant4_add_pymodule(pyG4digits_hits
- pyG4VSensitiveDetector.cc
- pymodG4digits_hits.cc
-)
-
-target_link_libraries(pyG4digits_hits PRIVATE G4digits_hits)
-install(TARGETS pyG4digits_hits DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
diff --git a/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc b/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc
deleted file mode 100644
index 78f9301617..0000000000
--- a/environments/g4py/source/digits_hits/pyG4VSensitiveDetector.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4VSensitiveDetector.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4VSensitiveDetector.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4VSensitiveDetector {
-
-class CB_G4VSensitiveDetector :
- public G4VSensitiveDetector,
- public wrapper {
-
-public:
- CB_G4VSensitiveDetector() : G4VSensitiveDetector("") { }
- CB_G4VSensitiveDetector(const G4String& name)
- : G4VSensitiveDetector(name) { }
- ~CB_G4VSensitiveDetector() { }
-
- G4bool ProcessHits(G4Step* aStep, G4TouchableHistory* ROhist) {
- return get_override("ProcessHits")(&aStep, &ROhist);
- }
-};
-
-}
-
-using namespace pyG4VSensitiveDetector;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4VSensitiveDetector()
-{
- class_
- ("G4VSensitiveDetector", "base class of senstive detector")
- // ---
- .def(init())
- // ---
- .def("Initialize", &G4VSensitiveDetector::Initialize)
- .def("EndOfEvent", &G4VSensitiveDetector::EndOfEvent)
- .def("clear", &G4VSensitiveDetector::clear)
- .def("DrawAll", &G4VSensitiveDetector::DrawAll)
- .def("PrintAll", &G4VSensitiveDetector::PrintAll)
- .def("Hit", &G4VSensitiveDetector::Hit)
- .def("ProcessHits", pure_virtual(&CB_G4VSensitiveDetector::ProcessHits))
- // ---
- .def("SetROgeometry", &G4VSensitiveDetector::SetROgeometry)
- .def("GetNumberOfCollections",
- &G4VSensitiveDetector::GetNumberOfCollections)
- .def("GetCollectionName", &G4VSensitiveDetector::GetCollectionName)
- .def("SetVerboseLevel", &G4VSensitiveDetector::SetVerboseLevel)
- .def("Activate", &G4VSensitiveDetector::Activate)
- .def("isActive", &G4VSensitiveDetector::isActive)
- .def("GetName", &G4VSensitiveDetector::GetName)
- .def("GetPathName", &G4VSensitiveDetector::GetPathName)
- .def("GetFullPathName", &G4VSensitiveDetector::GetFullPathName)
- .def("GetROgeometry", &G4VSensitiveDetector::GetROgeometry,
- return_internal_reference<>())
- ;
-}
diff --git a/environments/g4py/source/digits_hits/pymodG4digits_hits.cc b/environments/g4py/source/digits_hits/pymodG4digits_hits.cc
deleted file mode 100644
index 1ebf0a0ae0..0000000000
--- a/environments/g4py/source/digits_hits/pymodG4digits_hits.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pymodG4digits_hits.cc [Geant4Py module]
-//
-// 2005 Q
-// ====================================================================
-#include
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-
-void export_G4VSensitiveDetector();
-
-BOOST_PYTHON_MODULE(G4digits_hits)
-{
- export_G4VSensitiveDetector();
-}
-
diff --git a/environments/g4py/source/event/CMakeLists.txt b/environments/g4py/source/event/CMakeLists.txt
deleted file mode 100644
index 3608faf5d6..0000000000
--- a/environments/g4py/source/event/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-# - build library
-
-# library
-geant4_add_pymodule(pyG4event
- pyG4ClassificationOfNewTrack.cc
- pyG4Event.cc
- pyG4EventManager.cc
- pyG4ParticleGun.cc
- pyG4StackManager.cc
- pyG4UserEventAction.cc
- pyG4UserStackingAction.cc
- pymodG4event.cc
-)
-
-target_link_libraries(pyG4event PRIVATE G4event)
-install(TARGETS pyG4event DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
diff --git a/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc b/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc
deleted file mode 100644
index 39166dab7c..0000000000
--- a/environments/g4py/source/event/pyG4ClassificationOfNewTrack.cc
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4ClassificationOfNewTrack.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4ClassificationOfNewTrack.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4ClassificationOfNewTrack()
-{
- enum_("G4ClassificationOfNewTrack")
- .value("fUrgent", fUrgent)
- .value("fWaiting", fWaiting)
- .value("fPostpone", fPostpone)
- .value("fKill", fKill)
- .value("fWaiting_1", fWaiting_1)
- .value("fWaiting_2", fWaiting_2)
- .value("fWaiting_3", fWaiting_3)
- .value("fWaiting_4", fWaiting_4)
- .value("fWaiting_5", fWaiting_5)
- .value("fWaiting_6", fWaiting_6)
- .value("fWaiting_7", fWaiting_7)
- .value("fWaiting_8", fWaiting_8)
- .value("fWaiting_9", fWaiting_9)
- .value("fWaiting_19", fWaiting_10)
- ;
-}
-
diff --git a/environments/g4py/source/event/pyG4Event.cc b/environments/g4py/source/event/pyG4Event.cc
deleted file mode 100644
index 5b9ae3d054..0000000000
--- a/environments/g4py/source/event/pyG4Event.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Event.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Event.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4Event {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_GetPrimaryVertex,
- GetPrimaryVertex, 0, 1)
-}
-
-using namespace pyG4Event;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Event()
-{
- class_("G4Event", "event class")
- .def(init())
- // ---
- .def("Print", &G4Event::Print)
- .def("Draw", &G4Event::Draw)
- .def("SetEventID", &G4Event::SetEventID)
- .def("GetEventID", &G4Event::GetEventID)
- .def("SetEventAborted", &G4Event::SetEventAborted)
- .def("IsAborted", &G4Event::IsAborted)
- // ---
- .def("AddPrimaryVertex", &G4Event::AddPrimaryVertex)
- .def("GetNumberOfPrimaryVertex", &G4Event::GetNumberOfPrimaryVertex)
- .def("GetPrimaryVertex", &G4Event::GetPrimaryVertex,
- f_GetPrimaryVertex()[return_internal_reference<>()])
- // ---
- .def("GetTrajectoryContainer", &G4Event::GetTrajectoryContainer,
- return_internal_reference<>())
- .def("SetUserInformation", &G4Event::SetUserInformation)
- .def("GetUserInformation", &G4Event::GetUserInformation,
- return_internal_reference<>())
- ;
-
- // reduced functionality...
- //.def("SetHCofThisEvent", &G4Event::SetHCofThisEvent)
- //.def("GetHCofThisEvent", &G4Event::SetHCofThisEvent,
- // return_internal_reference<>())
- //.def("SetDCofThisEvent", &G4Event::SetHCofThisEvent)
- //.def("GetDCofThisEvent", &G4Event::SetHCofThisEvent,
- // return_internal_reference<>())
-
-}
diff --git a/environments/g4py/source/event/pyG4EventManager.cc b/environments/g4py/source/event/pyG4EventManager.cc
deleted file mode 100644
index ce24144dfc..0000000000
--- a/environments/g4py/source/event/pyG4EventManager.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4EventManager.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4EventManager.hh"
-#include "G4Event.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4EventManager()
-{
- class_
- ("G4EventManager", "event manager class")
- .def("GetEventManager", &G4EventManager::GetEventManager,
- return_value_policy())
- .staticmethod("GetEventManager")
- // ---
- .def("GetConstCurrentEvent", &G4EventManager::GetConstCurrentEvent,
- return_internal_reference<>())
- .def("GetNonconstCurrentEvent",
- &G4EventManager::GetNonconstCurrentEvent,
- return_internal_reference<>())
- .def("AbortCurrentEvent", &G4EventManager::AbortCurrentEvent)
- .def("SetNumberOfAdditionalWaitingStacks",
- &G4EventManager::SetNumberOfAdditionalWaitingStacks)
- .def("GetStackManager", &G4EventManager::GetStackManager,
- return_value_policy())
- .def("GetTrackingManager", &G4EventManager::GetTrackingManager,
- return_value_policy())
- .def("GetVerboseLevel", &G4EventManager::GetVerboseLevel)
- .def("SetVerboseLevel", &G4EventManager::SetVerboseLevel)
- .def("SetUserInformation", &G4EventManager::SetUserInformation)
- .def("GetUserInformation", &G4EventManager::GetUserInformation,
- return_value_policy())
- ;
-
- // Note that exposed items are limited,
- // because this class object is mainly for internal uses.
- // ProcessOneEvent
- // SetUserAction
- // GetUserXXXAction
- // GetPrimaryTransformer
- // SetPrimaryTransformer
-
-}
diff --git a/environments/g4py/source/event/pyG4ParticleGun.cc b/environments/g4py/source/event/pyG4ParticleGun.cc
deleted file mode 100644
index 58c27891d5..0000000000
--- a/environments/g4py/source/event/pyG4ParticleGun.cc
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4ParticleGun.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Version.hh"
-#include "G4ParticleGun.hh"
-#include "G4ParticleTable.hh"
-#include "G4Event.hh"
-
-using namespace boost::python;
-
-#if G4VERSION_NUMBER < 910
-// ====================================================================
-// miscs
-// ====================================================================
-// What a hell!
-
-////////////////////////////////////////////////////////
-G4ParticleGun::G4ParticleGun(const G4ParticleGun &right)
-////////////////////////////////////////////////////////
-{
- *this= right;
-}
-
-/////////////////////////////////////////////////////////////////////////
-const G4ParticleGun& G4ParticleGun::operator=(const G4ParticleGun &right)
-/////////////////////////////////////////////////////////////////////////
-{
- NumberOfParticlesToBeGenerated= right.NumberOfParticlesToBeGenerated;
- particle_definition= right.particle_definition;
- particle_momentum_direction= right.particle_momentum_direction;
- particle_energy= right.particle_energy;
- particle_charge= right.particle_charge;
- particle_polarization= right.particle_polarization;
-
- return *this;
-}
-
-/////////////////////////////////////////////////////////////////
-G4bool G4ParticleGun::operator==(const G4ParticleGun &right) const
-/////////////////////////////////////////////////////////////////
-{
- return false;
-}
-
-/////////////////////////////////////////////////////////////////
-G4bool G4ParticleGun::operator!=(const G4ParticleGun &right) const
-/////////////////////////////////////////////////////////////////
-{
- return false;
-}
-
-#endif
-
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4ParticleGun {
-
-#if G4VERSION_NUMBER >= 910
-// SetParticleMomentum
-void (G4ParticleGun::*f1_SetParticleMomentum)(G4double)
- = &G4ParticleGun::SetParticleMomentum;
-void (G4ParticleGun::*f2_SetParticleMomentum)(G4ParticleMomentum)
- = &G4ParticleGun::SetParticleMomentum;
-#endif
-
-
-////////////////////////////////////////////////////////////////////
-void SetParticleByName(G4ParticleGun* gun, const std::string& pname)
-////////////////////////////////////////////////////////////////////
-{
- G4ParticleTable* particleTable= G4ParticleTable::GetParticleTable();
- G4ParticleDefinition* pd= particleTable-> FindParticle(pname);
- if (pd != 0) {
- gun-> SetParticleDefinition(pd);
- } else {
- G4cout << "*** \"" << pname << "\" is not registered "
- << "in available particle list" << G4endl;
- }
-}
-
-/////////////////////////////////////////////////
-std::string GetParticleByName(G4ParticleGun* gun)
-/////////////////////////////////////////////////
-{
- const G4ParticleDefinition* pd= gun-> GetParticleDefinition();
- return (pd-> GetParticleName()).c_str();
-}
-
-}
-
-using namespace pyG4ParticleGun;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4ParticleGun()
-{
-#if G4VERSION_NUMBER < 910
- class_
-#else
- class_
-#endif
- ("G4ParticleGun", "particle gun")
- // constructor
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GeneratePrimaryVertex", &G4ParticleGun::GeneratePrimaryVertex)
- .def("SetParticleDefinition", &G4ParticleGun::SetParticleDefinition)
- .def("GetParticleDefinition", &G4ParticleGun::GetParticleDefinition,
- return_value_policy())
-#if G4VERSION_NUMBER >= 910
- .def("SetParticleMomentum", f1_SetParticleMomentum)
- .def("SetParticleMomentum", f2_SetParticleMomentum)
-#else
- .def("SetParticleMomentum", &G4ParticleGun::SetParticleMomentum)
-#endif
- .def("SetParticleMomentumDirection",
- &G4ParticleGun::SetParticleMomentumDirection)
- .def("GetParticleMomentumDirection",
- &G4ParticleGun::GetParticleMomentumDirection)
- .def("SetParticleEnergy", &G4ParticleGun::SetParticleEnergy)
- .def("GetParticleEnergy", &G4ParticleGun::GetParticleEnergy)
- .def("SetParticleCharge", &G4ParticleGun::SetParticleCharge)
- .def("GetParticleCharge", &G4ParticleGun::GetParticleCharge)
- .def("SetParticlePolarization", &G4ParticleGun::SetParticlePolarization)
- .def("GetParticlePolarization", &G4ParticleGun::GetParticlePolarization)
- .def("SetNumberOfParticles", &G4ParticleGun::SetNumberOfParticles)
- .def("GetNumberOfParticles", &G4ParticleGun::GetNumberOfParticles)
- .def("SetParticlePosition", &G4ParticleGun::SetParticlePosition)
- .def("GetParticlePosition", &G4ParticleGun::GetParticlePosition)
- .def("SetParticleTime", &G4ParticleGun::SetParticleTime)
- .def("GetParticleTime", &G4ParticleGun::GetParticleTime)
- .def("SetParticleByName", SetParticleByName)
- .def("GetParticleByName", GetParticleByName)
- ;
-}
diff --git a/environments/g4py/source/event/pyG4StackManager.cc b/environments/g4py/source/event/pyG4StackManager.cc
deleted file mode 100644
index 918a58cd66..0000000000
--- a/environments/g4py/source/event/pyG4StackManager.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-
-// ====================================================================
-// pyG4StackManager.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4StackManager.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4StackManager {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ClearWaitingStack,
- ClearWaitingStack, 0, 1)
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_GetNWaitingTrack,
- GetNWaitingTrack, 0, 1)
-}
-
-using namespace pyG4StackManager;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4StackManager()
-{
- class_
- ("G4StackManager", "stack management class")
- // ---
- // Note that exposed items are limited, because this class object
- // is mainly for internal uses.
- .def("ReClassify", &G4StackManager::ReClassify)
- .def("clear", &G4StackManager::clear)
- .def("ClearUrgentStack", &G4StackManager::ClearUrgentStack)
- .def("ClearWaitingStack", &G4StackManager::ClearWaitingStack,
- f_ClearWaitingStack())
- .def("ClearPostponeStack", &G4StackManager::ClearPostponeStack)
- .def("GetNTotalTrack", &G4StackManager::GetNTotalTrack)
- .def("GetNUrgentTrack", &G4StackManager::GetNUrgentTrack)
- .def("GetNWaitingTrack", &G4StackManager::GetNWaitingTrack,
- f_GetNWaitingTrack())
- .def("SetVerboseLevel", &G4StackManager::SetVerboseLevel)
- ;
-}
diff --git a/environments/g4py/source/event/pyG4UserEventAction.cc b/environments/g4py/source/event/pyG4UserEventAction.cc
deleted file mode 100644
index c29b91272d..0000000000
--- a/environments/g4py/source/event/pyG4UserEventAction.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4UserEventAction.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4UserEventAction.hh"
-#include "G4Event.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-struct CB_G4UserEventAction : G4UserEventAction,
- wrapper {
- // BeginOfEventAction
- void BeginOfEventAction(const G4Event* anEvent) {
- if(const override& f= get_override("BeginOfEventAction")) {
- f(boost::ref(anEvent));
- } else
- G4UserEventAction::BeginOfEventAction(anEvent);
- }
-
- // EndOfEventAction
- void EndOfEventAction(const G4Event* anEvent) {
- if(const override& f= get_override("EndOfEventAction")) {
- f(boost::ref(anEvent));
- } else {
- G4UserEventAction::EndOfEventAction(anEvent);
- }
- }
-};
-
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4UserEventAction()
-{
- class_
- ( "G4UserEventAction", "event action class")
-
- .def("BeginOfEventAction", &G4UserEventAction::BeginOfEventAction,
- &CB_G4UserEventAction::BeginOfEventAction)
- .def("EndOfEventAction", &G4UserEventAction::EndOfEventAction,
- &CB_G4UserEventAction::EndOfEventAction)
- ;
-}
-
diff --git a/environments/g4py/source/event/pyG4UserStackingAction.cc b/environments/g4py/source/event/pyG4UserStackingAction.cc
deleted file mode 100644
index f80c37501f..0000000000
--- a/environments/g4py/source/event/pyG4UserStackingAction.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4UserStackingAction.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4UserStackingAction.hh"
-#include "G4Track.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4UserStackingAction {
-
-struct CB_G4UserStackingAction : G4UserStackingAction,
- wrapper {
-
- // ClassifyNewTrack
- G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack) {
- if(const override& f= get_override("ClassifyNewTrack")) {
- return f(boost::ref(aTrack));
- } else
- return G4UserStackingAction::ClassifyNewTrack(aTrack);
- }
-
- // NewState
- void NewStage() {
- if(const override& f= get_override("NewStage")) {
- f();
- } else
- G4UserStackingAction::NewStage();
- }
-
- // PrepareNewEvent
- void PrepareNewEvent() {
- if(const override& f= get_override("PrepareNewEvent")) {
- f();
- } else
- G4UserStackingAction::PrepareNewEvent();
- }
-
-};
-
-}
-
-using namespace pyG4UserStackingAction;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4UserStackingAction()
-{
- class_
- ("G4UserStackingAction", "stacking action class")
- // ---
- .def("ClassifyNewTrack", &G4UserStackingAction::ClassifyNewTrack,
- &CB_G4UserStackingAction::ClassifyNewTrack)
- .def("NewStage", &G4UserStackingAction::NewStage,
- &CB_G4UserStackingAction::NewStage)
- .def("PrepareNewEvent", &G4UserStackingAction::PrepareNewEvent,
- &CB_G4UserStackingAction::PrepareNewEvent)
- ;
-}
-
diff --git a/environments/g4py/source/event/pymodG4event.cc b/environments/g4py/source/event/pymodG4event.cc
deleted file mode 100644
index e5cc73327b..0000000000
--- a/environments/g4py/source/event/pymodG4event.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pymodG4event.cc [Geant4Py module]
-//
-// 2005 Q
-// ====================================================================
-#include
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4EventManager();
-void export_G4StackManager();
-void export_G4Event();
-void export_G4UserEventAction();
-void export_G4UserStackingAction();
-void export_G4ClassificationOfNewTrack();
-void export_G4ParticleGun();
-
-BOOST_PYTHON_MODULE(G4event)
-{
- export_G4EventManager();
- export_G4StackManager();
- export_G4Event();
- export_G4UserEventAction();
- export_G4UserStackingAction();
- export_G4ClassificationOfNewTrack();
- export_G4ParticleGun();
-}
-
diff --git a/environments/g4py/source/g4thread.py b/environments/g4py/source/g4thread.py
deleted file mode 100644
index 5568be1a8c..0000000000
--- a/environments/g4py/source/g4thread.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""
-# ==================================================================
-# Python module
-#
-# Geant4 threading module
-#
-# Q, 2005
-# ==================================================================
-"""
-
-import thread
-from G4run import *
-
-# ------------------------------------------------------------------
-# BeamOn in a new thread
-# ------------------------------------------------------------------
-def _TBeamOn(self, nevent):
- "generate events in a thread"
- args = (nevent,)
- thread.start_new_thread(self.BeamOn, args)
-
-G4RunManager.TBeamOn= _TBeamOn
-
diff --git a/environments/g4py/source/g4viscp.py b/environments/g4py/source/g4viscp.py
deleted file mode 100644
index ad632b8e37..0000000000
--- a/environments/g4py/source/g4viscp.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
-# ==================================================================
-# Python module
-#
-# Visualization Control Panel
-#
-# Q, 2005
-# ==================================================================
-"""
-from G4interface import *
-
-# ------------------------------------------------------------------
-# Scene
-# ------------------------------------------------------------------
-class G4Scene :
- "Scene"
- def __init__(self, aname, vol= "world", acopyno=0,
- amode=0, bmode=1):
- self.name= aname
- self.volume= vol
- self.copyno= acopyno
- self.mode_eventaction= amode # 0: accumulate / 1: refresh
- self.mode_runaction= bmode # 0: accumulate / 1: refresh
- self.mode= ("accumulate", "refresh")
-
- def create_scene(self):
- ApplyUICommand("/vis/scene/create " + self.name)
- ApplyUICommand("/vis/scene/add/volume %s %d" %
- (self.volume, self.copyno))
- ApplyUICommand("/vis/scene/add/trajectories")
- self.update_scene()
-
- def update_scene(self):
- ApplyUICommand("/vis/scene/select " + self.name)
- ApplyUICommand("/vis/sceneHandler/attach")
- ApplyUICommand("/vis/scene/endOfEventAction %s" %
- (self.mode[self.mode_eventaction]) )
- ApplyUICommand("/vis/scene/endOfRunAction %s" %
- (self.mode[self.mode_runaction]) )
-
-# ------------------------------------------------------------------
-# Visualization Control Panel
-# ------------------------------------------------------------------
-class G4VisCP :
- "G4 Visualization Control Panel"
-
- def __init__(self, gsys="OGLIX"):
- self.gsystem= gsys
- self.scenelist= [G4Scene("default")]
- self.viewpoint= [270., 90.]
-
- rc= ApplyUICommand("/vis/open " + gsys)
- if (rc != 0):
- return
-
- self.scenelist[0].create_scene()
- ApplyUICommand("/vis/viewer/set/viewpointThetaPhi %f %f"
- % (self.viewpoint[0], self.viewpoint[1]) )
- ApplyUICommand("/tracking/storeTrajectory 1")
-
- def add_scene(self, ascene):
- self.scenelist.append(ascene)
-
- def select_scene(self, iscene):
- self.scenelist[iscene].update_scene()
- ApplyUICommand("/vis/viewer/set/viewpointThetaPhi %f %f"
- % (self.viewpoint[0], self.viewpoint[1]) )
-
diff --git a/environments/g4py/source/gdml/CMakeLists.txt b/environments/g4py/source/gdml/CMakeLists.txt
deleted file mode 100644
index 47747110a3..0000000000
--- a/environments/g4py/source/gdml/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-# library
-geant4_add_pymodule(pyG4gdml
- pyG4GDMLParser.cc
- pymodG4g4gdml.cc
-)
-
-target_link_libraries(pyG4gdml PRIVATE G4persistency)
-install(TARGETS pyG4gdml DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
diff --git a/environments/g4py/source/gdml/pyG4GDMLParser.cc b/environments/g4py/source/gdml/pyG4GDMLParser.cc
deleted file mode 100644
index 3cd3cd1814..0000000000
--- a/environments/g4py/source/gdml/pyG4GDMLParser.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4GDMLParser.cc
-//
-// 2007 Q
-// ====================================================================
-
-#include
-#include "G4GDMLParser.hh"
-#include "G4LogicalVolume.hh"
-#include "G4Material.hh"
-#include "G4Version.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4GDMLParser {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_GetWorldVolume,
- GetWorldVolume, 0, 1)
-
-void (G4GDMLParser::*f1_Write)
- (const G4String&, const G4VPhysicalVolume*, G4bool,
- const G4String&) = &G4GDMLParser::Write;
-
-void (G4GDMLParser::*f2_Write)
- (const G4String&, const G4LogicalVolume*, G4bool,
- const G4String&) = &G4GDMLParser::Write;
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(g_Write, Write, 2, 4)
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_Read, Read, 1, 2)
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_ReadModule, ReadModule, 1, 2)
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_Write, Write, 1, 4)
-
-}
-
-using namespace pyG4GDMLParser;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4GDMLParser()
-{
- class_
- ("G4GDMLParser", "GDML parser")
- // ---
- .def("Read", &G4GDMLParser::Read, f_Read())
- .def("ReadModule", &G4GDMLParser::ReadModule, f_ReadModule())
- .def("ParseST", &G4GDMLParser::ParseST,
- return_value_policy())
- .def("Write", f1_Write, f_Write())
- .def("Write", f2_Write, g_Write())
- .def("GetWorldVolume", &G4GDMLParser::GetWorldVolume,
- f_GetWorldVolume()
- [return_value_policy()])
- ;
-}
-
diff --git a/environments/g4py/source/geometry/CMakeLists.txt b/environments/g4py/source/geometry/CMakeLists.txt
deleted file mode 100644
index e3afd57df5..0000000000
--- a/environments/g4py/source/geometry/CMakeLists.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-# - build library
-
-# library
-geant4_add_pymodule(pyG4geometry
- pyG4BooleanSolid.cc
- pyG4Box.cc
- pyG4ChordFinder.cc
- pyG4Cons.cc
- pyG4Ellipsoid.cc
- pyG4EllipticalCone.cc
- pyG4EllipticalTube.cc
- pyG4Field.cc
- pyG4FieldManager.cc
- pyG4GeometryManager.cc
- pyG4Hype.cc
- pyG4IntersctionSolid.cc
- pyG4LogicalVolume.cc
- pyG4MagneticField.cc
- pyG4Navigator.cc
- pyG4Orb.cc
- pyG4PVPlacement.cc
- pyG4PVReplica.cc
- pyG4Para.cc
- pyG4Polycone.cc
- pyG4Polyhedra.cc
- pyG4Region.cc
- pyG4Sphere.cc
- pyG4SubtractionSolid.cc
- pyG4Tet.cc
- pyG4Torus.cc
- pyG4TouchableHistory.cc
- pyG4TransportationManager.cc
- pyG4Trap.cc
- pyG4Trd.cc
- pyG4Tubs.cc
- pyG4TwistedBox.cc
- pyG4TwistedTrap.cc
- pyG4TwistedTrd.cc
- pyG4TwistedTubs.cc
- pyG4UniformMagField.cc
- pyG4UnionSolid.cc
- pyG4VPhysicalVolume.cc
- pyG4VSolid.cc
- pyG4VTouchable.cc
- pymodG4geometry.cc
-)
-
-target_link_libraries(pyG4geometry PRIVATE G4geometry G4track G4processes)
-install(TARGETS pyG4geometry DESTINATION "${CMAKE_INSTALL_PYTHONDIR}/Geant4")
diff --git a/environments/g4py/source/geometry/pyG4BooleanSolid.cc b/environments/g4py/source/geometry/pyG4BooleanSolid.cc
deleted file mode 100644
index 537d9eeff2..0000000000
--- a/environments/g4py/source/geometry/pyG4BooleanSolid.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4BooleanSolid.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4BooleanSolid.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4BooleanSolid()
-{
- class_, boost::noncopyable>
- ("G4BooleanSolid", "boolean solid class", no_init)
- // ---
- .def("GetCubVolStatistics", &G4BooleanSolid::GetCubVolStatistics)
- .def("GetCubVolEpsilon", &G4BooleanSolid::GetCubVolEpsilon)
- .def("SetCubVolStatistics", &G4BooleanSolid::SetCubVolStatistics)
- .def("SetCubVolEpsilon", &G4BooleanSolid::SetCubVolEpsilon)
- .def("GetAreaStatistics", &G4BooleanSolid::GetAreaStatistics)
- .def("GetAreaAccuracy", &G4BooleanSolid::GetAreaAccuracy)
- .def("SetAreaStatistics", &G4BooleanSolid::SetAreaStatistics)
- .def("SetAreaAccuracy", &G4BooleanSolid::SetAreaAccuracy)
- .def("GetPointOnSurface", &G4BooleanSolid::GetPointOnSurface)
- ;
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Box.cc b/environments/g4py/source/geometry/pyG4Box.cc
deleted file mode 100644
index a72f4716a5..0000000000
--- a/environments/g4py/source/geometry/pyG4Box.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Box.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Box.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Box {
-
-G4Box* CreateBox(const G4String& name, G4double pX, G4double pY,
- G4double pZ)
-{
- return new G4Box(name, pX, pY, pZ);
-}
-
-}
-
-using namespace pyG4Box;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Box()
-{
- class_ >
- ("G4Box", "box solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetXHalfLength", &G4Box::GetXHalfLength)
- .def("GetYHalfLength", &G4Box::GetYHalfLength)
- .def("GetZHalfLength", &G4Box::GetZHalfLength)
- .def("SetXHalfLength", &G4Box::SetXHalfLength)
- .def("SetYHalfLength", &G4Box::SetYHalfLength)
- .def("SetZHalfLength", &G4Box::SetZHalfLength)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateBox", CreateBox, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4ChordFinder.cc b/environments/g4py/source/geometry/pyG4ChordFinder.cc
deleted file mode 100644
index 1c64091df2..0000000000
--- a/environments/g4py/source/geometry/pyG4ChordFinder.cc
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4ChordFinder.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4ChordFinder.hh"
-#include "G4MagneticField.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4ChordFinder {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_SetVerbose, SetVerbose, 0, 1)
-
-}
-
-using namespace pyG4ChordFinder;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4ChordFinder()
-{
- class_
- ("G4ChordFinder", "chord finder class", no_init)
- // constructor
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GetDeltaChord", &G4ChordFinder::GetDeltaChord)
- .def("SetDeltaChord", &G4ChordFinder::SetDeltaChord)
- // ---
- .def("SetVerbose", &G4ChordFinder::SetVerbose, f_SetVerbose())
- ;
-}
diff --git a/environments/g4py/source/geometry/pyG4Cons.cc b/environments/g4py/source/geometry/pyG4Cons.cc
deleted file mode 100644
index f3c370e4d9..0000000000
--- a/environments/g4py/source/geometry/pyG4Cons.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Cons.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Cons.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Cons {
-
-G4Cons* CreateCons(const G4String& name, G4double pRmin1, G4double pRmax1,
- G4double pRmin2, G4double pRmax2, G4double pDz,
- G4double pSPhi, G4double pDPhi)
-{
- return new G4Cons(name, pRmin1, pRmax1, pRmin2, pRmax2, pDz, pSPhi, pDPhi);
-}
-
-}
-
-using namespace pyG4Cons;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Cons()
-{
- class_ >
- ("G4Cons", "Cone solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetInnerRadiusMinusZ", &G4Cons::GetInnerRadiusMinusZ)
- .def("GetOuterRadiusMinusZ", &G4Cons::GetOuterRadiusMinusZ)
- .def("GetInnerRadiusPlusZ", &G4Cons::GetInnerRadiusPlusZ)
- .def("GetOuterRadiusPlusZ", &G4Cons::GetOuterRadiusPlusZ)
- .def("GetZHalfLength", &G4Cons::GetZHalfLength)
- .def("GetStartPhiAngle", &G4Cons::GetStartPhiAngle)
- .def("GetDeltaPhiAngle", &G4Cons::GetDeltaPhiAngle)
- .def("SetInnerRadiusMinusZ", &G4Cons::SetInnerRadiusMinusZ)
- .def("SetOuterRadiusMinusZ", &G4Cons::SetOuterRadiusMinusZ)
- .def("SetInnerRadiusPlusZ", &G4Cons::SetInnerRadiusPlusZ)
- .def("SetOuterRadiusPlusZ", &G4Cons::SetOuterRadiusPlusZ)
- .def("SetZHalfLength", &G4Cons::SetZHalfLength)
- .def("SetStartPhiAngle", &G4Cons::SetStartPhiAngle)
- .def("SetDeltaPhiAngle", &G4Cons::SetDeltaPhiAngle)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateCons", CreateCons, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Ellipsoid.cc b/environments/g4py/source/geometry/pyG4Ellipsoid.cc
deleted file mode 100644
index abdd3e30ad..0000000000
--- a/environments/g4py/source/geometry/pyG4Ellipsoid.cc
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Ellipsoid.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4Ellipsoid.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4Ellipsoid {
-
-G4Ellipsoid* CreateEllipsoid(const G4String& name,
- G4double pxSemiAxis,
- G4double pySemiAxis,
- G4double pzSemiAxis,
- G4double pzBottomCut=0,
- G4double pzTopCut=0)
-{
- return new G4Ellipsoid(name, pxSemiAxis, pySemiAxis, pzSemiAxis,
- pzBottomCut, pzTopCut);
-}
-
-BOOST_PYTHON_FUNCTION_OVERLOADS(f_CreateEllipsoid, CreateEllipsoid, 4,6)
-
-}
-
-using namespace pyG4Ellipsoid;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Ellipsoid()
-{
- class_ >
- ("G4Ellipsoid", "ellipsoid class", no_init)
- // constructors
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GetSemiAxisMax", &G4Ellipsoid::GetSemiAxisMax)
- .def("GetZBottomCut", &G4Ellipsoid::GetZBottomCut)
- .def("GetZTopCut", &G4Ellipsoid::GetZTopCut)
- .def("SetSemiAxis", &G4Ellipsoid::SetSemiAxis)
- .def("SetZCuts", &G4Ellipsoid::SetZCuts)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateEllipsoid", CreateEllipsoid,
- f_CreateEllipsoid()[return_value_policy()]);
-}
-
diff --git a/environments/g4py/source/geometry/pyG4EllipticalCone.cc b/environments/g4py/source/geometry/pyG4EllipticalCone.cc
deleted file mode 100644
index 8df8b8d463..0000000000
--- a/environments/g4py/source/geometry/pyG4EllipticalCone.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4EllipticalCone.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4EllipticalCone.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4EllipticalCone {
-
-G4EllipticalCone* CreateEllipticalCone(const G4String& name,
- G4double pxSemiAxis,
- G4double pySemiAxis,
- G4double zMax,
- G4double pzTopCut)
-{
- return new G4EllipticalCone(name, pxSemiAxis,pySemiAxis, zMax, pzTopCut);
-}
-
-}
-
-using namespace pyG4EllipticalCone;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4EllipticalCone()
-{
- class_ >
- ("G4EllipticalCone", "elliptical cone solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetSimiAxisMax", &G4EllipticalCone::GetSemiAxisMax)
- .def("GetZTopCut", &G4EllipticalCone::GetZTopCut)
- .def("SetSemiAxis", &G4EllipticalCone::SetSemiAxis)
- .def("SetZCut", &G4EllipticalCone::SetZCut)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateEllipticalCone", CreateEllipticalCone,
- return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4EllipticalTube.cc b/environments/g4py/source/geometry/pyG4EllipticalTube.cc
deleted file mode 100644
index ba79d3f5e1..0000000000
--- a/environments/g4py/source/geometry/pyG4EllipticalTube.cc
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4EllipticalTube.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4EllipticalTube.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4EllipticalTube {
-
-G4EllipticalTube* CreateEllipticalTube(const G4String& name,
- G4double theDx,
- G4double theDy,
- G4double theDz)
-{
- return new G4EllipticalTube(name, theDx, theDy, theDz);
-}
-
-}
-
-using namespace pyG4EllipticalTube;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4EllipticalTube()
-{
- class_ >
- ("G4EllipticalTube", "elliptical tube solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetDx", &G4EllipticalTube::GetDx)
- .def("GetDy", &G4EllipticalTube::GetDy)
- .def("GetDz", &G4EllipticalTube::GetDz)
- .def("SetDx", &G4EllipticalTube::SetDx)
- .def("SetDy", &G4EllipticalTube::SetDy)
- .def("SetDz", &G4EllipticalTube::SetDz)
-
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateEllipticalTube", CreateEllipticalTube,
- return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Field.cc b/environments/g4py/source/geometry/pyG4Field.cc
deleted file mode 100644
index 581da0ebff..0000000000
--- a/environments/g4py/source/geometry/pyG4Field.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Field.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Field.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Field()
-{
- class_
- ("G4Field", "base class of field", no_init)
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4FieldManager.cc b/environments/g4py/source/geometry/pyG4FieldManager.cc
deleted file mode 100644
index 3b77588533..0000000000
--- a/environments/g4py/source/geometry/pyG4FieldManager.cc
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4FieldManager.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Version.hh"
-#include "G4FieldManager.hh"
-#include "G4Field.hh"
-#include "G4ChordFinder.hh"
-#include "G4MagneticField.hh"
-#include "G4Track.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4FieldManager {
-
-G4ChordFinder*(G4FieldManager::*f1_GetChordFinder)()
- = &G4FieldManager::GetChordFinder;
-
-const G4ChordFinder*(G4FieldManager::*f2_GetChordFinder)() const
- = &G4FieldManager::GetChordFinder;
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_SetDetectorField,
- SetDetectorField, 1, 2)
-
-}
-
-using namespace pyG4FieldManager;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4FieldManager()
-{
- class_
- ("G4FieldManager", "field manager class")
- // constructors
- .def(init<>())
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("SetDetectorField", &G4FieldManager::SetDetectorField,
- f_SetDetectorField())
- .def("GetDetectorField", &G4FieldManager::GetDetectorField,
- return_internal_reference<>())
- .def("DoesFieldExist", &G4FieldManager::DoesFieldExist)
- .def("CreateChordFinder", &G4FieldManager::CreateChordFinder)
- .def("SetChordFinder", &G4FieldManager::SetChordFinder)
- .def("GetChordFinder", f1_GetChordFinder,
- return_internal_reference<>())
- .def("GetChordFinder", f2_GetChordFinder,
- return_internal_reference<>())
- .def("ConfigureForTrack", &G4FieldManager::ConfigureForTrack)
- .def("GetDeltaIntersection", &G4FieldManager::GetDeltaIntersection)
- .def("GetDeltaOneStep", &G4FieldManager::GetDeltaOneStep)
- .def("SetAccuraciesWithDeltaOneStep",
- &G4FieldManager::SetAccuraciesWithDeltaOneStep)
- .def("SetDeltaOneStep", &G4FieldManager::SetDeltaOneStep)
- .def("SetDeltaIntersection", &G4FieldManager::SetDeltaIntersection)
- .def("GetMinimumEpsilonStep", &G4FieldManager::GetMinimumEpsilonStep)
- .def("SetMinimumEpsilonStep", &G4FieldManager::SetMinimumEpsilonStep)
- .def("GetMaximumEpsilonStep", &G4FieldManager::GetMaximumEpsilonStep)
- .def("SetMaximumEpsilonStep", &G4FieldManager::SetMaximumEpsilonStep)
- .def("DoesFieldChangeEnergy", &G4FieldManager::DoesFieldChangeEnergy)
- .def("SetFieldChangesEnergy", &G4FieldManager::SetFieldChangesEnergy)
- ;
-}
diff --git a/environments/g4py/source/geometry/pyG4GeometryManager.cc b/environments/g4py/source/geometry/pyG4GeometryManager.cc
deleted file mode 100644
index 92037cafc8..0000000000
--- a/environments/g4py/source/geometry/pyG4GeometryManager.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4GeometryManager.cc
-//
-// 2008 Q
-// ====================================================================
-#include
-#include "G4GeometryManager.hh"
-#include "G4VPhysicalVolume.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4GeometryManager {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_CloseGeometry, CloseGeometry, 0, 3)
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_OpenGeometry, OpenGeometry, 0, 1)
-
-}
-
-using namespace pyG4GeometryManager;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4GeometryManager()
-{
- class_
- ("G4GeometryManager", "geometry manager", no_init)
- .def("GetInstance", &G4GeometryManager::GetInstance,
- return_value_policy())
- .staticmethod("GetInstance")
- // ---
- .def("CloseGeometry", &G4GeometryManager::CloseGeometry,
- f_CloseGeometry())
- .def("OpenGeometry", &G4GeometryManager::OpenGeometry,
- f_OpenGeometry())
- .def("IsGeometryClosed", &G4GeometryManager::IsGeometryClosed)
- .def("SetWorldMaximumExtent", &G4GeometryManager::SetWorldMaximumExtent)
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Hype.cc b/environments/g4py/source/geometry/pyG4Hype.cc
deleted file mode 100644
index 86c4a5c1e1..0000000000
--- a/environments/g4py/source/geometry/pyG4Hype.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Hype.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4Hype.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Hype {
-
-G4Hype* CreateHype(const G4String& name,
- G4double newInnerRadius,
- G4double newOuterRadius,
- G4double newInnerStereo,
- G4double newOuterStereo,
- G4double newHalfLenZ)
-{
-
- return new G4Hype(name, newInnerRadius, newOuterRadius,
- newInnerStereo, newOuterStereo,
- newHalfLenZ);
-}
-
-}
-
-using namespace pyG4Hype;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Hype()
-{
- class_ >
- ("G4Hype", "hyperbolic solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetInnerRadius", &G4Hype::GetInnerRadius)
- .def("GetOuterRadius", &G4Hype::GetOuterRadius)
- .def("GetZHalfLength", &G4Hype::GetZHalfLength)
- .def("GetInnerStereo", &G4Hype::GetInnerStereo)
- .def("GetOuterStereo", &G4Hype::GetOuterStereo)
- .def("SetInnerRadius", &G4Hype::SetInnerRadius)
- .def("SetOuterRadius", &G4Hype::SetOuterRadius)
- .def("SetZHalfLength", &G4Hype::SetZHalfLength)
- .def("SetInnerStereo", &G4Hype::SetInnerStereo)
- .def("SetOuterStereo", &G4Hype::SetOuterStereo)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateHype", CreateHype, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4IntersctionSolid.cc b/environments/g4py/source/geometry/pyG4IntersctionSolid.cc
deleted file mode 100644
index f58539215d..0000000000
--- a/environments/g4py/source/geometry/pyG4IntersctionSolid.cc
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4IntersectionSolid.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4IntersectionSolid.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4IntersectionSolid()
-{
- class_,boost::noncopyable>
- ("G4IntersectionSolid", "intersection solid class", no_init)
- // ---
- .def(init())
- .def(init())
- .def(init())
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4LogicalVolume.cc b/environments/g4py/source/geometry/pyG4LogicalVolume.cc
deleted file mode 100644
index 2810d3a029..0000000000
--- a/environments/g4py/source/geometry/pyG4LogicalVolume.cc
+++ /dev/null
@@ -1,152 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4LogicalVolume.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Version.hh"
-#include "G4LogicalVolume.hh"
-#include "G4Material.hh"
-#include "G4VSolid.hh"
-#include "G4FieldManager.hh"
-#include "G4VSensitiveDetector.hh"
-#include "G4UserLimits.hh"
-#include "G4SmartVoxelHeader.hh"
-#include "G4MaterialCutsCouple.hh"
-#include "G4FastSimulationManager.hh"
-#include "G4VisAttributes.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4LogicalVolume {
-
-void(G4LogicalVolume::*f1_SetVisAttributes)(const G4VisAttributes*)
- = &G4LogicalVolume::SetVisAttributes;
-
-void(G4LogicalVolume::*f2_SetVisAttributes)(const G4VisAttributes&)
- = &G4LogicalVolume::SetVisAttributes;
-
-G4VSolid*(G4LogicalVolume::*f1_GetSolid)() const = &G4LogicalVolume::GetSolid;
-
-void(G4LogicalVolume::*f1_SetSolid)(G4VSolid*)
- = &G4LogicalVolume::SetSolid;
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_GetMass, GetMass, 0, 3)
-
-}
-
-using namespace pyG4LogicalVolume;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4LogicalVolume()
-{
- class_
- ("G4LogicalVolume", "logical volume class", no_init)
- // constructors
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GetName", &G4LogicalVolume::GetName,
- return_value_policy())
- .def("SetName", &G4LogicalVolume::SetName)
- // ---
- .def("GetNoDaughters", &G4LogicalVolume::GetNoDaughters)
- .def("GetDaughter", &G4LogicalVolume::GetDaughter,
- return_internal_reference<>())
- .def("AddDaughter", &G4LogicalVolume::AddDaughter)
- .def("IsDaughter", &G4LogicalVolume::IsDaughter)
- .def("IsAncestor", &G4LogicalVolume::IsAncestor)
- .def("RemoveDaughter", &G4LogicalVolume::RemoveDaughter)
- .def("ClearDaughters", &G4LogicalVolume::ClearDaughters)
- .def("TotalVolumeEntities", &G4LogicalVolume::TotalVolumeEntities)
- // ----
- .def("GetSolid", f1_GetSolid,
- return_internal_reference<>())
- .def("SetSolid", f1_SetSolid)
- .def("GetMaterial", &G4LogicalVolume::GetMaterial,
- return_internal_reference<>())
- .def("SetMaterial", &G4LogicalVolume::SetMaterial)
- .def("UpdateMaterial", &G4LogicalVolume::UpdateMaterial)
- // ---
- .def("GetMass", &G4LogicalVolume::GetMass, f_GetMass())
- .def("GetFieldManager", &G4LogicalVolume::GetFieldManager,
- return_internal_reference<>())
- .def("SetFieldManager", &G4LogicalVolume::SetFieldManager)
- .def("GetSensitiveDetector", &G4LogicalVolume::GetSensitiveDetector,
- return_internal_reference<>())
- .def("SetSensitiveDetector", &G4LogicalVolume::SetSensitiveDetector)
- .def("GetUserLimits", &G4LogicalVolume::GetUserLimits,
- return_internal_reference<>())
- .def("SetUserLimits", &G4LogicalVolume::SetUserLimits)
- // ---
- .def("GetVoxelHeader", &G4LogicalVolume::GetVoxelHeader,
- return_internal_reference<>())
- .def("SetVoxelHeader", &G4LogicalVolume::SetVoxelHeader)
- .def("GetSmartless", &G4LogicalVolume::GetSmartless)
- .def("SetSmartless", &G4LogicalVolume::SetSmartless)
- .def("IsToOptimise", &G4LogicalVolume::IsToOptimise)
- .def("SetOptimisation", &G4LogicalVolume::SetOptimisation)
- // ---
- .def("IsRootRegion", &G4LogicalVolume::IsRootRegion)
- .def("SetRegionRootFlag", &G4LogicalVolume::SetRegionRootFlag)
- .def("IsRegion", &G4LogicalVolume::IsRegion)
- .def("SetRegion", &G4LogicalVolume::SetRegion)
- .def("GetRegion", &G4LogicalVolume::GetRegion,
- return_internal_reference<>())
- .def("PropagateRegion", &G4LogicalVolume::PropagateRegion)
- .def("GetMaterialCutsCouple", &G4LogicalVolume::GetMaterialCutsCouple,
- return_internal_reference<>())
- .def("SetMaterialCutsCouple", &G4LogicalVolume::SetMaterialCutsCouple)
- // ---
- .def("GetVisAttributes", &G4LogicalVolume::GetVisAttributes,
- return_internal_reference<>())
- .def("SetVisAttributes", f1_SetVisAttributes)
- .def("SetVisAttributes", f2_SetVisAttributes)
- // ---
- .def("GetFastSimulationManager",
- &G4LogicalVolume::GetFastSimulationManager,
- return_internal_reference<>())
- // ---
- .def("SetBiasWeight", &G4LogicalVolume::SetBiasWeight)
- .def("GetBiasWeight", &G4LogicalVolume::GetBiasWeight)
- ;
-}
diff --git a/environments/g4py/source/geometry/pyG4MagneticField.cc b/environments/g4py/source/geometry/pyG4MagneticField.cc
deleted file mode 100644
index 9c75b1104e..0000000000
--- a/environments/g4py/source/geometry/pyG4MagneticField.cc
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4MagneticField.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4MagneticField.hh"
-#include "G4ThreeVector.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-
-class PyG4MagneticField : public G4MagneticField {
-public:
- PyG4MagneticField() { }
- ~PyG4MagneticField() { }
-
- virtual G4ThreeVector GetFieldValue(const G4ThreeVector& pos,
- const G4double time) const = 0;
-
- virtual void GetFieldValue(const G4double Point[4],
- G4double* Bfield) const {
-
- const G4ThreeVector& bfield=
- GetFieldValue(G4ThreeVector(Point[0], Point[1], Point[2]), Point[3]);
-
- Bfield[0]= bfield.x();
- Bfield[1]= bfield.y();
- Bfield[2]= bfield.z();
- }
-
-};
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4MagneticField {
-
-struct CB_PyG4MagneticField :
- PyG4MagneticField, wrapper {
-
- using PyG4MagneticField::GetFieldValue;
-
- G4ThreeVector GetFieldValue(const G4ThreeVector& pos,
- const G4double time) const {
- return get_override("GetFieldValue")(pos, time);
- }
-
-};
-
-G4ThreeVector(PyG4MagneticField::*f1_GetFieldValue)
- (const G4ThreeVector&, const G4double) const
- = &PyG4MagneticField::GetFieldValue;
-
-}
-
-using namespace pyG4MagneticField;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4MagneticField()
-{
- class_
- ("__G4MagneticField", "dummy class of magnetic field", no_init)
- ;
-
- class_ >
- ("G4MagneticField", "base class of magnetic field")
- // ---
- .def("DoesFieldChangeEnergy", &G4MagneticField::DoesFieldChangeEnergy)
- .def("GetFieldValue", pure_virtual(f1_GetFieldValue))
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Navigator.cc b/environments/g4py/source/geometry/pyG4Navigator.cc
deleted file mode 100644
index 1558341fee..0000000000
--- a/environments/g4py/source/geometry/pyG4Navigator.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Navigator.cc
-//
-// Only limitted functionalities are exposed.
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4Navigator.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Navigator()
-{
- class_
- ("G4Navigator", "navigator")
- // ---
- .def("GetWorldVolume", &G4Navigator::GetWorldVolume,
- return_value_policy())
- .def("GetVerboseLevel", &G4Navigator::GetVerboseLevel)
- .def("SetVerboseLevel", &G4Navigator::SetVerboseLevel)
- .def("IsActive", &G4Navigator::IsActive)
- .def("PrintState", &G4Navigator::PrintState)
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Orb.cc b/environments/g4py/source/geometry/pyG4Orb.cc
deleted file mode 100644
index b95247edae..0000000000
--- a/environments/g4py/source/geometry/pyG4Orb.cc
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Orb.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Orb.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Orb {
-
-G4Orb* CreateOrb(const G4String& name, G4double pRmax)
-{
- return new G4Orb(name, pRmax);
-}
-
-}
-
-using namespace pyG4Orb;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Orb()
-{
- class_ >
- ("G4Orb", "Orb solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetRadius", &G4Orb::GetRadius)
- .def("SetRadius", &G4Orb::SetRadius)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateOrb", CreateOrb, return_value_policy());
-
-}
diff --git a/environments/g4py/source/geometry/pyG4PVPlacement.cc b/environments/g4py/source/geometry/pyG4PVPlacement.cc
deleted file mode 100644
index 9c837cc113..0000000000
--- a/environments/g4py/source/geometry/pyG4PVPlacement.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4PVPlacement.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Version.hh"
-#include "G4PVPlacement.hh"
-#include "G4LogicalVolume.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4PVPlacement {
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_CheckOverlaps,
- CheckOverlaps, 0, 3)
-
-}
-
-using namespace pyG4PVPlacement;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4PVPlacement()
-{
- class_,
- boost::noncopyable >
- ("G4PVPlacement", "physical volume placement", no_init)
- // ---
- .def(init())
- .def(init())
- .def(init())
- .def(init())
-#if G4VERSION_NUMBER >=800
- .def(init())
- .def(init())
- .def(init())
- .def(init())
-#endif
- // ---
-#if G4VERSION_NUMBER >=800
- .def("CheckOverlaps", &G4PVPlacement::CheckOverlaps, f_CheckOverlaps())
-#endif
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4PVReplica.cc b/environments/g4py/source/geometry/pyG4PVReplica.cc
deleted file mode 100644
index 04228608ad..0000000000
--- a/environments/g4py/source/geometry/pyG4PVReplica.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4PVReplica.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4PVReplica.hh"
-#include "G4LogicalVolume.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4PVReplica()
-{
- class_,
- boost::noncopyable >
- ("G4PVReplica", "physical volume placement with replication", no_init)
- // constructors
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GetMultiplicity", &G4PVReplica::GetMultiplicity)
- ;
-}
diff --git a/environments/g4py/source/geometry/pyG4Para.cc b/environments/g4py/source/geometry/pyG4Para.cc
deleted file mode 100644
index d3e4a3dde7..0000000000
--- a/environments/g4py/source/geometry/pyG4Para.cc
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Para.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Para.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Para {
-
-G4Para* CreatePara(const G4String& name,
- G4double pDx, G4double pDy, G4double pDz,
- G4double pAlpha, G4double pTheta, G4double pPhi)
-{
- return new G4Para(name, pDx, pDy, pDz, pAlpha, pTheta, pPhi);
-}
-
-}
-
-using namespace pyG4Para;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Para()
-{
- class_ >
- ("G4Para", "Skewed box sold class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetZHalfLength", &G4Para::GetZHalfLength)
- .def("GetSymAxis", &G4Para::GetSymAxis)
- .def("GetYHalfLength", &G4Para::GetYHalfLength)
- .def("GetXHalfLength", &G4Para::GetXHalfLength)
- .def("GetTanAlpha", &G4Para::GetTanAlpha)
- .def("SetXHalfLength", &G4Para::SetXHalfLength)
- .def("SetYHalfLength", &G4Para::SetYHalfLength)
- .def("SetZHalfLength", &G4Para::SetZHalfLength)
- .def("SetAlpha", &G4Para::SetAlpha)
- .def("SetTanAlpha", &G4Para::SetTanAlpha)
- .def("SetThetaAndPhi", &G4Para::SetThetaAndPhi)
- .def("SetAllParameters", &G4Para::SetAllParameters)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreatePara", CreatePara, return_value_policy());
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Polycone.cc b/environments/g4py/source/geometry/pyG4Polycone.cc
deleted file mode 100644
index 94aafadf6b..0000000000
--- a/environments/g4py/source/geometry/pyG4Polycone.cc
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Polycone.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include
-#include "G4Polycone.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4Polycone {
-
-// create solid methods
-
-G4Polycone* f1_CreatePolycone(const G4String& name, G4double phiStart,
- G4double phiTotal, G4int numZPlanes,
- const std::vector& zPlane,
- const std::vector& rInner,
- const std::vector& rOuter)
-{
- std::unique_ptr zlist(new G4double[numZPlanes]);
- std::unique_ptr r0list(new G4double[numZPlanes]);
- std::unique_ptr r1list(new G4double[numZPlanes]);
-
- for (G4int i=0; i< numZPlanes; i++) {
- zlist[i]= zPlane[i];
- r0list[i]= rInner[i];
- r1list[i]= rOuter[i];
- }
-
- return new G4Polycone(name, phiStart, phiTotal, numZPlanes,
- zlist.get(), r0list.get(), r1list.get());
-}
-
-
-G4Polycone* f2_CreatePolycone(const G4String& name, G4double phiStart,
- G4double phiTotal, G4int numRZ,
- const std::vector& r,
- const std::vector& z)
-{
- std::unique_ptr zlist(new G4double[numRZ]);
- std::unique_ptr rlist(new G4double[numRZ]);
-
- for (G4int i=0; i< numRZ; i++) {
- rlist[i]= r[i];
- zlist[i]= z[i];
- }
-
- return new G4Polycone(name, phiStart, phiTotal, numRZ,
- rlist.get(), zlist.get());
-
-}
-
-}
-
-using namespace pyG4Polycone;
-
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Polycone()
-{
- class_ >
- ("G4Polycone", "Polycone solid class", no_init)
- // ---
- .def("GetStartPhi", &G4Polycone::GetStartPhi)
- .def("GetEndPhi", &G4Polycone::GetEndPhi)
- .def("IsOpen", &G4Polycone::IsOpen)
- .def("GetNumRZCorner", &G4Polycone::GetNumRZCorner)
-
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreatePolycone", f1_CreatePolycone,
- return_value_policy());
- def("CreatePolycone", f2_CreatePolycone,
- return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Polyhedra.cc b/environments/g4py/source/geometry/pyG4Polyhedra.cc
deleted file mode 100644
index 5c51484b8d..0000000000
--- a/environments/g4py/source/geometry/pyG4Polyhedra.cc
+++ /dev/null
@@ -1,114 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Polyhedra.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include
-#include "G4Polyhedra.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// thin wrappers
-// ====================================================================
-namespace pyG4Polyhedra {
-
-// create solid methods
-
-G4Polyhedra* f1_CreatePolyhedra(const G4String& name,
- G4double phiStart, G4double phiTotal,
- G4int numSide, G4int numZPlanes,
- const std::vector& zPlane,
- const std::vector& rInner,
- const std::vector& rOuter)
-{
- std::unique_ptr zlist(new G4double[numZPlanes]);
- std::unique_ptr r0list(new G4double[numZPlanes]);
- std::unique_ptr r1list(new G4double[numZPlanes]);
-
- for (G4int i=0; i< numZPlanes; i++) {
- zlist[i]= zPlane[i];
- r0list[i]= rInner[i];
- r1list[i]= rOuter[i];
- }
-
- return new G4Polyhedra(name, phiStart, phiTotal, numSide, numZPlanes,
- zlist.get(), r0list.get(), r1list.get());
-}
-
-
-G4Polyhedra* f2_CreatePolyhedra(const G4String& name,
- G4double phiStart, G4double phiTotal,
- G4int numSide, G4int numRZ,
- const std::vector& r,
- const std::vector& z)
-{
- std::unique_ptr zlist(new G4double[numRZ]);
- std::unique_ptr rlist(new G4double[numRZ]);
-
- for (G4int i=0; i< numRZ; i++) {
- zlist[i]= z[i];
- rlist[i]= r[i];
- }
-
- return new G4Polyhedra(name, phiStart, phiTotal, numSide, numRZ,
- rlist.get(), zlist.get());
-
-}
-
-}
-
-using namespace pyG4Polyhedra;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Polyhedra()
-{
- class_ >
- ("G4Polyhedra", "Polyhedra solid class", no_init)
- // ---
- .def("GetStartPhi", &G4Polyhedra::GetStartPhi)
- .def("GetEndPhi", &G4Polyhedra::GetEndPhi)
- .def("GetNumSide", &G4Polyhedra::GetNumSide)
- .def("GetNumRZCorner", &G4Polyhedra::GetNumRZCorner)
- .def("IsOpen", &G4Polyhedra::IsOpen)
- .def("IsGeneric", &G4Polyhedra::IsGeneric)
-
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreatePolyhedra", f1_CreatePolyhedra,
- return_value_policy());
- def("CreatePolyhedra", f2_CreatePolyhedra,
- return_value_policy());
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Region.cc b/environments/g4py/source/geometry/pyG4Region.cc
deleted file mode 100644
index bc7cf8c225..0000000000
--- a/environments/g4py/source/geometry/pyG4Region.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Region.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Version.hh"
-#include "G4Region.hh"
-#include "G4LogicalVolume.hh"
-#include "G4ProductionCuts.hh"
-#include "G4VUserRegionInformation.hh"
-#include "G4UserLimits.hh"
-#include "G4MaterialCutsCouple.hh"
-#include "G4FastSimulationManager.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Region()
-{
- class_
- ("G4Region", "region class", no_init)
- // constructors
- .def(init())
- // ---
- .def("AddRootLogicalVolume", &G4Region::AddRootLogicalVolume)
- .def("RemoveRootLogicalVolume", &G4Region::RemoveRootLogicalVolume)
- .def("SetName", &G4Region::SetName)
- .def("GetName", &G4Region::GetName,
- return_value_policy())
- .def("RegionModified", &G4Region::RegionModified)
- .def("IsModified", &G4Region::IsModified)
- .def("SetProductionCuts", &G4Region::SetProductionCuts)
- .def("GetProductionCuts", &G4Region::GetProductionCuts,
- return_internal_reference<>())
- .def("GetNumberOfMaterials", &G4Region::GetNumberOfMaterials)
- .def("GetNumberOfRootVolumes", &G4Region::GetNumberOfRootVolumes)
- .def("UpdateMaterialList", &G4Region::UpdateMaterialList)
- .def("ClearMaterialList", &G4Region::ClearMaterialList)
- .def("ScanVolumeTree", &G4Region::ScanVolumeTree)
- .def("SetUserInformation", &G4Region::SetUserInformation)
- .def("GetUserInformation", &G4Region::GetUserInformation,
- return_internal_reference<>())
-#if G4VERSION_NUMBER >= 710
- .def("SetUserLimits", &G4Region::SetUserLimits)
- .def("GetUserLimits", &G4Region::GetUserLimits,
- return_internal_reference<>())
-#endif
- .def("ClearMap", &G4Region::ClearMap)
- .def("RegisterMaterialCouplePair", &G4Region::RegisterMaterialCouplePair)
- .def("FindCouple", &G4Region::FindCouple,
- return_value_policy())
-#if G4VERSION_NUMBER >= 800
- .def("SetFastSimulationManager", &G4Region::SetFastSimulationManager)
- .def("GetFastSimulationManager", &G4Region::GetFastSimulationManager,
- return_internal_reference<>())
- .def("ClearFastSimulationManager", &G4Region::ClearFastSimulationManager)
- .def("GetWorldPhysical", &G4Region::GetWorldPhysical,
- return_internal_reference<>())
- .def("SetWorld", &G4Region::SetWorld)
- .def("BelongsTo", &G4Region::BelongsTo)
- .def("GetParentRegion", &G4Region::GetParentRegion,
- return_value_policy())
-#endif
- ;
- }
diff --git a/environments/g4py/source/geometry/pyG4Sphere.cc b/environments/g4py/source/geometry/pyG4Sphere.cc
deleted file mode 100644
index 6537590fd7..0000000000
--- a/environments/g4py/source/geometry/pyG4Sphere.cc
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Sphere.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Sphere.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Sphere {
-
-G4Sphere* CreateSphere(const G4String& name,
- G4double pRmin, G4double pRmax,
- G4double pSPhi, G4double pDPhi,
- G4double pSTheta, G4double pDTheta)
-{
- return new G4Sphere(name, pRmin, pRmax, pSPhi, pDPhi, pSTheta, pDTheta);
-}
-
-}
-
-using namespace pyG4Sphere;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Sphere()
-{
- class_ >
- ("G4Sphere", "Sphere solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetOuterRadius", &G4Sphere::GetOuterRadius)
- .def("GetStartPhiAngle", &G4Sphere::GetStartPhiAngle)
- .def("GetDeltaPhiAngle", &G4Sphere::GetDeltaPhiAngle)
- .def("GetStartThetaAngle", &G4Sphere::GetStartThetaAngle)
- .def("GetDeltaThetaAngle", &G4Sphere::GetDeltaThetaAngle)
- .def("SetOuterRadius", &G4Sphere::SetOuterRadius)
- .def("SetStartPhiAngle", &G4Sphere::SetStartPhiAngle)
- .def("SetDeltaPhiAngle", &G4Sphere::SetDeltaPhiAngle)
- .def("SetStartThetaAngle", &G4Sphere::SetStartThetaAngle)
- .def("SetDeltaThetaAngle", &G4Sphere::SetDeltaThetaAngle)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateSphere", CreateSphere, return_value_policy());
-
-}
diff --git a/environments/g4py/source/geometry/pyG4SubtractionSolid.cc b/environments/g4py/source/geometry/pyG4SubtractionSolid.cc
deleted file mode 100644
index a4d5aeb563..0000000000
--- a/environments/g4py/source/geometry/pyG4SubtractionSolid.cc
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4SubtractionSolid.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4SubtractionSolid.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4SubtractionSolid()
-{
- class_,boost::noncopyable>
- ("G4SubtractionSolid", "subtraction solid class", no_init)
- // ---
- .def(init())
- .def(init())
- .def(init())
- ;
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Tet.cc b/environments/g4py/source/geometry/pyG4Tet.cc
deleted file mode 100644
index 90935b1553..0000000000
--- a/environments/g4py/source/geometry/pyG4Tet.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Tet.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4Tet.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Tet {
-
-G4Tet* CreateTet(const G4String& name, G4ThreeVector anchor, G4ThreeVector p2,
- G4ThreeVector p3, G4ThreeVector p4)
-{
- return new G4Tet(name, anchor, p2, p3, p4);
-}
-
-}
-
-using namespace pyG4Tet;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Tet()
-{
- class_ >
- ("G4Tet", "tetrahedra solid class", no_init)
- // constructors
- .def(init())
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTet", CreateTet, return_value_policy());
-
-}
diff --git a/environments/g4py/source/geometry/pyG4Torus.cc b/environments/g4py/source/geometry/pyG4Torus.cc
deleted file mode 100644
index 20bacf62f8..0000000000
--- a/environments/g4py/source/geometry/pyG4Torus.cc
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Torus.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Torus.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Torus {
-
-G4Torus* CreateTorus(const G4String& name, G4double pRmin, G4double pRmax,
- G4double pRtor, G4double pSPhi, G4double pDPhi)
-{
- return new G4Torus(name, pRmin, pRmax, pRtor, pSPhi, pDPhi);
-}
-
-}
-
-using namespace pyG4Torus;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Torus()
-{
- class_ >
- ("G4Torus", "Torus solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetRmin", &G4Torus::GetRmin)
- .def("GetRmax", &G4Torus::GetRmax)
- .def("GetRtor", &G4Torus::GetRtor)
- .def("GetSPhi", &G4Torus::GetSPhi)
- .def("GetDPhi", &G4Torus::GetDPhi)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTorus", CreateTorus, return_value_policy());
-}
diff --git a/environments/g4py/source/geometry/pyG4TouchableHistory.cc b/environments/g4py/source/geometry/pyG4TouchableHistory.cc
deleted file mode 100644
index eecc8e6514..0000000000
--- a/environments/g4py/source/geometry/pyG4TouchableHistory.cc
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4VTouchable.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4TouchableHistory.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4TouchableHistory()
-{
- class_ >
- ("G4TouchableHistory", "touchable history class")
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4TransportationManager.cc b/environments/g4py/source/geometry/pyG4TransportationManager.cc
deleted file mode 100644
index cb4f3bb015..0000000000
--- a/environments/g4py/source/geometry/pyG4TransportationManager.cc
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4TransportationManager.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4TransportationManager.hh"
-#include "G4PropagatorInField.hh"
-#include "G4FieldManager.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4TransportationManager()
-{
- class_
- ("G4TransportationManager", "manager class for transportation", no_init)
- // ---
- .def("GetTransportationManager",
- &G4TransportationManager::GetTransportationManager,
- return_value_policy())
- .staticmethod("GetTransportationManager")
- .def("GetNavigatorForTracking",
- &G4TransportationManager::GetNavigatorForTracking,
- return_internal_reference<>())
- .def("GetPropagatorInField",
- &G4TransportationManager::GetPropagatorInField,
- return_internal_reference<>())
- .def("GetFieldManager",
- &G4TransportationManager::GetFieldManager,
- return_internal_reference<>())
- .def("SetNavigatorForTracking",
- &G4TransportationManager::SetNavigatorForTracking)
- .def("SetPropagatorInField",
- &G4TransportationManager::SetPropagatorInField)
- .def("SetFieldManager",
- &G4TransportationManager::SetFieldManager)
- ;
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Trap.cc b/environments/g4py/source/geometry/pyG4Trap.cc
deleted file mode 100644
index 8c9c7eded2..0000000000
--- a/environments/g4py/source/geometry/pyG4Trap.cc
+++ /dev/null
@@ -1,141 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Trap.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Trap.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Trap {
-
-G4Trap* f1_CreateTrap(const G4String& name)
-{
- return new G4Trap(name);
-}
-
-
-G4Trap* f2_CreateTrap(const G4String& name, G4double pDz,
- G4double pTheta, G4double pPhi,
- G4double pDy1, G4double pDx1, G4double pDx2,
- G4double pAlp1,
- G4double pDy2, G4double pDx3, G4double pDx4,
- G4double pAlp2)
-{
- return new G4Trap(name, pDz, pTheta, pPhi,
- pDy1, pDx1, pDx2, pAlp1,
- pDy2, pDx3, pDx4, pAlp2);
-
-}
-
-
-G4Trap* f3_CreateTrap(const G4String& name,
- const std::vector& pt)
-{
- G4ThreeVector ptlist[8];
- for (G4int i=0; i<8; i++) {
- ptlist[i]= pt[i];
- }
-
- return new G4Trap(name, ptlist);
-}
-
-
-G4Trap* f4_CreateTrap(const G4String& name, G4double pZ,
- G4double pY, G4double pX, G4double pLTX)
-{
- return new G4Trap(name, pZ, pY, pX, pLTX);
-}
-
-
-G4Trap* f5_CreateTrap(const G4String& name, G4double pDx1, G4double pDx2,
- G4double pDy1, G4double pDy2, G4double pDz)
-{
- return new G4Trap(name, pDx1, pDx2, pDy1, pDy2, pDz);
-}
-
-
-G4Trap* f6_CreateTrap(const G4String& name, G4double pDx, G4double pDy,
- G4double pDz,
- G4double pAlpha, G4double pTheta, G4double pPhi )
-{
- return new G4Trap(name, pDx, pDy, pDz, pAlpha, pTheta, pPhi);
-}
-
-}
-
-using namespace pyG4Trap;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Trap()
-{
- class_ >
- ("G4Trap", "Generic trapezoild soild class", no_init)
- // constructors
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- .def(init())
- // ---
- .def("GetZHalfLength", &G4Trap::GetZHalfLength)
- .def("GetYHalfLength1", &G4Trap::GetYHalfLength1)
- .def("GetXHalfLength1", &G4Trap::GetXHalfLength1)
- .def("GetXHalfLength2", &G4Trap::GetXHalfLength2)
- .def("GetTanAlpha1", &G4Trap::GetTanAlpha1)
- .def("GetYHalfLength2", &G4Trap::GetYHalfLength2)
- .def("GetXHalfLength3", &G4Trap::GetXHalfLength3)
- .def("GetXHalfLength4", &G4Trap::GetXHalfLength4)
- .def("GetTanAlpha2", &G4Trap::GetTanAlpha2)
- .def("GetSidePlane", &G4Trap::GetSidePlane)
- .def("GetSymAxis", &G4Trap::GetSymAxis)
- .def("SetAllParameters", &G4Trap::SetAllParameters)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTrap", f1_CreateTrap, return_value_policy());
- def("CreateTrap", f2_CreateTrap, return_value_policy());
- def("CreateTrap", f3_CreateTrap, return_value_policy());
- def("CreateTrap", f4_CreateTrap, return_value_policy());
- def("CreateTrap", f5_CreateTrap, return_value_policy());
- def("CreateTrap", f6_CreateTrap, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Trd.cc b/environments/g4py/source/geometry/pyG4Trd.cc
deleted file mode 100644
index bc3c4a42d3..0000000000
--- a/environments/g4py/source/geometry/pyG4Trd.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Trd.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Trd.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Trd {
-
-G4Trd* CreateTrd(const G4String& name, G4double pdx1, G4double pdx2,
- G4double pdy1, G4double pdy2, G4double pdz )
-{
- return new G4Trd(name, pdx1, pdx2, pdy1, pdy2, pdz);
-}
-
-}
-
-using namespace pyG4Trd;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Trd()
-{
- class_ >
- ("G4Trd", "Trapezoild solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetXHalfLength1", &G4Trd::GetXHalfLength1)
- .def("GetXHalfLength2", &G4Trd::GetXHalfLength2)
- .def("GetYHalfLength1", &G4Trd::GetYHalfLength1)
- .def("GetYHalfLength2", &G4Trd::GetYHalfLength2)
- .def("GetZHalfLength", &G4Trd::GetZHalfLength)
- .def("SetXHalfLength1", &G4Trd::SetXHalfLength1)
- .def("SetXHalfLength2", &G4Trd::SetXHalfLength2)
- .def("SetYHalfLength1", &G4Trd::SetYHalfLength1)
- .def("SetYHalfLength2", &G4Trd::SetYHalfLength2)
- .def("SetZHalfLength", &G4Trd::SetZHalfLength)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTrd", CreateTrd, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4Tubs.cc b/environments/g4py/source/geometry/pyG4Tubs.cc
deleted file mode 100644
index c4edc7c2e1..0000000000
--- a/environments/g4py/source/geometry/pyG4Tubs.cc
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4Tubs.cc
-//
-// 2005 Q
-// ====================================================================
-#include
-#include "G4Tubs.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4Tubs {
-
-G4Tubs* CreateTubs(const G4String& name, G4double pRMin, G4double pRMax,
- G4double pDz, G4double pSPhi, G4double pDPhi )
-{
- return new G4Tubs(name, pRMin, pRMax, pDz, pSPhi, pDPhi);
-}
-
-}
-
-using namespace pyG4Tubs;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4Tubs()
-{
- class_ >
- ("G4Tubs", "Tube solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetInnerRadius", &G4Tubs::GetInnerRadius)
- .def("GetOuterRadius", &G4Tubs::GetOuterRadius)
- .def("GetZHalfLength", &G4Tubs::GetZHalfLength)
- .def("GetStartPhiAngle", &G4Tubs::GetStartPhiAngle)
- .def("GetDeltaPhiAngle", &G4Tubs::GetDeltaPhiAngle)
- .def("SetInnerRadius", &G4Tubs::SetInnerRadius)
- .def("SetOuterRadius", &G4Tubs::SetOuterRadius)
- .def("SetZHalfLength", &G4Tubs::SetZHalfLength)
- .def("SetStartPhiAngle", &G4Tubs::SetStartPhiAngle)
- .def("SetDeltaPhiAngle", &G4Tubs::SetDeltaPhiAngle)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTubs", CreateTubs, return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4TwistedBox.cc b/environments/g4py/source/geometry/pyG4TwistedBox.cc
deleted file mode 100644
index 8bdf25121e..0000000000
--- a/environments/g4py/source/geometry/pyG4TwistedBox.cc
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4TwistedBox.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4TwistedBox.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4TwistedBox {
-
-G4TwistedBox* CreateTwistedBox(const G4String& name,
- G4double pPhiTwist,
- G4double pDx, G4double pDy, G4double pDz)
-{
-
- return new G4TwistedBox(name, pPhiTwist, pDx, pDy, pDz );
-
-}
-
-}
-
-using namespace pyG4TwistedBox;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4TwistedBox()
-{
- class_ >
- ("G4TwistedBox", "twisted box solid class", no_init)
- // constructors
- .def(init())
- // ---
- .def("GetXHalfLength", &G4TwistedBox::GetXHalfLength)
- .def("GetYHalfLength", &G4TwistedBox::GetYHalfLength)
- .def("GetZHalfLength", &G4TwistedBox::GetZHalfLength)
- .def("GetPhiTwist", &G4TwistedBox::GetPhiTwist)
- // operators
- .def(self_ns::str(self))
- ;
-
- // Create solid
- def("CreateTwistedBox", CreateTwistedBox,
- return_value_policy());
-
-}
-
diff --git a/environments/g4py/source/geometry/pyG4TwistedTrap.cc b/environments/g4py/source/geometry/pyG4TwistedTrap.cc
deleted file mode 100644
index 9694a3d345..0000000000
--- a/environments/g4py/source/geometry/pyG4TwistedTrap.cc
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// ********************************************************************
-// * 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. *
-// ********************************************************************
-//
-// ====================================================================
-// pyG4TwistedTrap.cc
-//
-// 2007 Q
-// ====================================================================
-#include
-#include "G4TwistedTrap.hh"
-
-using namespace boost::python;
-
-// ====================================================================
-// wrappers
-// ====================================================================
-namespace pyG4TwistedTrap {
-
-G4TwistedTrap* f1_CreateTwistedTrap(const G4String& name,
- G4double pPhiTwist,
- G4double pDx1, G4double pDx2,
- G4double pDy, G4double pDz)
-{
- return new G4TwistedTrap(name, pPhiTwist, pDx1, pDx2, pDy, pDz);
-}
-
-
-G4TwistedTrap* f2_CreateTwistedTrap(const G4String& name,
- G4double pPhiTwist,
- G4double pDz, G4double pTheta,
- G4double pPhi, G4double pDy1,
- G4double pDx1, G4double pDx2,
- G4double pDy2, G4double pDx3,
- G4double pDx4, G4double pAlph)
-{
- return new G4TwistedTrap(name, pPhiTwist, pDz, pTheta, pPhi,
- pDy1, pDx1, pDx2, pDy2, pDx3, pDx4, pAlph);
-}
-
-}
-
-using namespace pyG4TwistedTrap;
-
-// ====================================================================
-// module definition
-// ====================================================================
-void export_G4TwistedTrap()
-{
- class_