Import Geant4 11.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2024-12-06 11:11:40 +01:00
parent e58e650b32
commit 32390e802b
1984 changed files with 98713 additions and 83996 deletions
+4 -1
View File
@@ -9,7 +9,10 @@
\link Examplechanneling channeling \endlink
This example simulates channeling of 400 GeV/c protons in a bent crystal.
Channeling examples are dedicated to various coherent effects
in oriented crystals, in particular, channeling, channeling radiation,
coherent bremsstrahlung, coherent pair production etc. as well as their
various applications.
\link Exampledmparticle dmparticle \endlink
+4
View File
@@ -4,6 +4,10 @@ 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!
## 2024-10-30 A. Sytov (exExoticPhysics-V11-02-00)
-Updated README related to channeling (added information about
channeling examples instead of old channeling exampled which
was moved in channeling/ch0 folder)
## 2023-11-15 I. Hrivnacova (exExoticPhysics-V11-01-01)
- Updated vis.mac macros:
+4 -1
View File
@@ -8,7 +8,10 @@
channeling
----------
This example simulates channeling of 400 GeV/c protons in a bent crystal.
Channeling examples are dedicated to various coherent effects
in oriented crystals, in particular, channeling, channeling radiation,
coherent bremsstrahlung, coherent pair production etc. as well as their
various applications.
dmparticle
---------
@@ -1,92 +1,46 @@
///\file "exoticphysics/channeling/.README.txt"
///\brief Example channeling README page
///\brief Examples channeling README page
/*! \page Examplechanneling Example channeling
/*! \page Examples Category "channeling"
\author Enrico Bagli - INFN and University Ferrara (Italy) \n
bagli@fe.infn.it
Examples in this directory are dedicated to various coherent effects
in oriented crystals, in particular, channeling, channeling radiation,
coherent bremsstrahlung, coherent pair production etc. as well as their
various applications.
This example shows how channeling in bent crystal can be simulated
in Geant4
\link Examplech0 ch0 \endlink
\section channeling_s1 INTRODUCTION
This example shows how channeling in bent crystal can be simulated
in Geant4 using G4Channeling process. The example simulates the channeling
of 400 GeV/c protons in bent Si crystal. It has been moved into channeling/ch0
from the channeling folder.
The example simulates the channeling of 400 GeV/c protons in bent
Si crystal. Channeling occurs when particles enter a crystal aligned
with atomic planes or axes. In bent crystals, the particles are
trapped between atomic planes and follow the crystal curvature
being deflected. If the particle direction is tangent to a bent
crystal plane is reflected to the opposite direction with respect
to channeling, i.e., it suffer volume reflection. The example
provides the physical model for planar channeling and volume
reflection in bent crystals.
\link Examplech1 ch1 \endlink
\section channeling_s2 GEOMETRY
This example is an easy demonstration of the minimum requirements necessary
to integrate the G4ChannelingFastSimModel and the G4BaierKatkov model
into a project in order to simulate the physics of channeling and
channeling radiation/coherent bremsstrahlung.
The geometry is a bent Si crystal with three Si detectors placed at
-9.998 m, -0.320 m and 10.756 m with respect to bent crystal position.
The Si detectors allows to measure incoming and outgoing angle
after the interaction with the Si bent crystal. The
geometry is all under vacuum.
\link Examplech2 ch2 \endlink
\section channeling_s3 PRIMARY EVENT
This example is an enhanced version of ch1, providing the user with
the full functionality of both the G4ChannelingFastSimModel and G4BaierKatkov,
with parameters set up via a macro, in order to simulate the physics of
channeling and channeling radiation/coherent bremsstrahlung, and enhanced output.
The example can be exploited for a wide range of cases to study coherent effects in
a straight, bent or periodically bent crystal (crystalline undulator).
\link Examplech3 ch3 \endlink
The primary events are 400 GeV/c protons at -1.05 m from the
crystal with 13.36 microrad x 11.25 microrad divergence.
This example is an easy demonstration of the minimum requirements necessary
to integrate the G4CoherentPairProduction process along with G4ChannelingFastSimModel
and G4BaierKatkov into a project in order to simulate the physics of electromagnetic
shower in an oriented crystal. The simulation includes the physics of channeling,
channeling radiation/coherent bremsstrahlung and coherent pair production.
The structure of this example is based on ch1, but with the G4CoherentPairProductionPhysics
process included, as well as different output, a different crystal material, alignment and
geometry parameters, and a photon beam as the incoming source instead of charged particles.
\section channeling_s4 PHYSICS
In the example the physics of channeling and volume reflection
has been added to the standard Geant4 physics. The description
of the used model can be found in the paper A model for the
interaction of high-energy particles in straight and bent
crystals implemented in Geant4 by E. Bagli et al., available
online at http://arxiv.org/abs/1403.5819
\section channeling_s5 EXECUTION & OUTPUT
The executable must be run from within the source directory of the example
to ensure that it can find the path for crystal data files.
Data files for Si crystal interplanar potential, nuclei and electron density
are stored in a named subdirectorydata
Upon execution, the macro
\verbatim
2009_PLB680_129.mac
\endverbatim
will automatically run the
example with 1000 protons.
Use
\verbatim
/xtal/setBR XXX 0. 0. m
\endverbatim
To change crystal bending to XXX meters
Use
\verbatim
/xtal/setSize 1.0 70. XXX mm
\endverbatim
To change crystal length to XXX millimeter
Use
\verbatim
/xtal/setEC data/Si220
\endverbatim
To select the (110) Si crystal plane of channeling
GPS commands are used for the primary generator.
\subsection channeling_s5_sub1 ExExhCh.root
The output is the ExExhCh.root file with the TTree ExExChTree
has the leaves:
- angXin : incoming particle X angle at the crystal
- angYin : incoming particle Y angle at the crystal
- posXin : hitting X position of the particle at the crystal
- posYin : hitting Y position of the particle at the crystal
- angXout: outgoing particle X angle out of the the crystal
- angYout: outgoing particle Y angle out of the the crystal
*/
*/
@@ -1,81 +1,8 @@
#----------------------------------------------------------------------------
# Setup the project
#
#---Adding all channeling examples subdirectories explicitly
cmake_minimum_required(VERSION 3.16...3.27)
project(channeling)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
# Setup include directory for this project
#
include(${Geant4_USE_FILE})
include_directories(${PROJECT_SOURCE_DIR}/include)
#----------------------------------------------------------------------------
# Locate sources and headers for this project
# NB: headers are included so they will show up in IDEs
#
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Install data
#
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/data/*.txt)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR}/mac ${PROJECT_SOURCE_DIR}/mac/*.mac)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/mac/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR}/analysis ${PROJECT_SOURCE_DIR}/analysis/*.sh ${PROJECT_SOURCE_DIR}/analysis/*.C)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/analysis/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(channeling channeling.cc ${sources} ${headers})
target_link_libraries(channeling ${Geant4_LIBRARIES})
#----------------------------------------------------------------------------
# For internal Geant4 use - but has no effect if you build this
# example standalone
#
add_custom_target(channeling_custom DEPENDS channeling)
#----------------------------------------------------------------------------
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
#
install(TARGETS channeling DESTINATION bin)
add_subdirectory(ch0)
add_subdirectory(ch1)
add_subdirectory(ch2)
add_subdirectory(ch3)
@@ -4,6 +4,23 @@ 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!
## 2024-11-29 I. Hrivnacova (channelingExamples-V11-02-03)
- Fixes Doxygen pages names & links
## 2024-10-30 A. Sytov (channelingExamples-V11-02-02)
-added the ch3 example; readme of channeling folder updated
-added the CMakeLists.txt for the channeling examples
## 2024-09-25 A. Sytov (channelingExamples-V11-02-01)
-added the ch2 example; readme of channeling folder updated
-small updates in ch1 example: README updated, deletion of some comments
in DetectorConstruction, {nullptr} added in PrimaryGeneratorAction.
## 2024-09-02 A. Sytov (channelingExamples-V11-02-00)
-moved the channeling example into channeling/ch0
-added the ch1 example
-updated tests/ctests_examples/CMakeLists.txt
(added new test for ch1 and updated a test for ch0)
## 2022-11-02 Vladimir Ivanchenko (channelingExample-V11-00-01)
- Use SS EM physics instead of Opt4 and disable Coulomb scattering
@@ -145,4 +162,3 @@ May 19, 2014 E. Bagli (channelingExample-V10-00-01)
May 9, 2014, E. Bagli (channelingExample-V10-00-00)
- First import.
@@ -1,71 +1,46 @@
=================================================================
Channeling effect in Geant4
=================================================================
Enrico Bagli - INFN and University Ferrara (Italy)
bagli@fe.infn.it
This example shows how channeling in bent crystal can be simulated
in Geant4
Geant4 extended examples - channeling
----------------------------------------------
1.INTRODUCTION
The example simulates the channeling of 400 GeV/c protons in bent
Si crystal. Channeling occurs when particles enter a crystal aligned
with atomic planes or axes. In bent crystals, the particles are
trapped between atomic planes and follow the crystal curvature
being deflected. If the particle direction is tangent to a bent
crystal plane is reflected to the opposite direction with respect
to channeling, i.e., it suffer volume reflection. The example
provides the physical model for planar channeling and volume
reflection in bent crystals.
Examples in this directory are dedicated to various coherent effects
in oriented crystals, in particular, channeling, channeling radiation,
coherent bremsstrahlung, coherent pair production etc. as well as their
various applications.
2.GEOMETRY
The geometry is a bent Si crystal with three Si detectors placed at
-9.998 m, -0.320 m and 10.756 m with respect to the position of
the bent crystal itself. The Si detectors allows to measure
incoming and outgoing angle after the interaction with the Si bent crystal.
The geometry is all under vacuum.
ch0
-------
3.PRIMARY EVENT
The primary events are 400 GeV/c protons launched at -10.5 m from the
crystal with 13.36 microrad x 11.25 microrad divergence.
This example shows how channeling in bent crystal can be simulated
in Geant4 using G4Channeling process. The example simulates the channeling
of 400 GeV/c protons in bent Si crystal. It has been moved into channeling/ch0
from the channeling folder.
4.PHYSICS
In the example the physics of channeling and volume reflection
has been added to the standard Geant4 physics. The description
of the used model can be found in the paper A model for the
interaction of high-energy particles in straight and bent
crystals implemented in Geant4 by E. Bagli et al., available
online at http://arxiv.org/abs/1403.5819
ch1
-------
This example is an easy demonstration of the minimum requirements necessary
to integrate the G4ChannelingFastSimModel and the G4BaierKatkov model
into a project in order to simulate the physics of channeling and
channeling radiation/coherent bremsstrahlung.
5.EXECUTION & OUTPUT
The executable must be run from within the source directory of the example
to ensure that it can find the path for crystal data files.
ch2
-------
This example is an enhanced version of ch1, providing the user with
the full functionality of both the G4ChannelingFastSimModel and G4BaierKatkov,
with parameters set up via a macro, in order to simulate the physics of
channeling and channeling radiation/coherent bremsstrahlung, and enhanced output.
The example can be exploited for a wide range of cases to study coherent effects in
a straight, bent or periodically bent crystal (crystalline undulator).
Data files for Si crystal interplanar potential, nuclei and electron density
are stored in a subdirectory named data
ch3
-------
Upon execution, the 2009_PLB680_129.mac macro will automatically run the
example with 1000 protons.
Use
/xtal/setBR XXX 0. 0. m
To change crystal bending to XXX meters
Use
/xtal/setSize 1.0 70. XXX mm
To change crystal length to XXX millimeter
Use
/xtal/potfilename data/Si220pl
To select the (110) Si crystal plane of channeling
GPS commands are used for the primary generator.
The output is the ExExhCh.root file with the TTree ExExChTree
has the leaves:
- angXin : incoming particle X angle at the crystal
- angYin : incoming particle Y angle at the crystal
- posXin : hitting X position of the particle at the crystal
- posYin : hitting Y position of the particle at the crystal
- angXout: outgoing particle X angle out of the the crystal
- angYout: outgoing particle Y angle out of the the crystal
This example is an easy demonstration of the minimum requirements necessary
to integrate the G4CoherentPairProduction process along with G4ChannelingFastSimModel
and G4BaierKatkov into a project in order to simulate the physics of electromagnetic
shower in an oriented crystal. The simulation includes the physics of channeling,
channeling radiation/coherent bremsstrahlung and coherent pair production.
The structure of this example is based on ch1, but with the G4CoherentPairProductionPhysics
process included, as well as different output, a different crystal material, alignment and
geometry parameters, and a photon beam as the incoming source instead of charged particles.
@@ -0,0 +1,92 @@
///\file "exoticphysics/channeling/ch0/.README.txt"
///\brief Example ch0 README page
/*! \page Examplech0 Example ch0
\author Enrico Bagli - INFN and University Ferrara (Italy) \n
bagli@fe.infn.it
This example shows how channeling in bent crystal can be simulated
in Geant4
\section channeling_s1 INTRODUCTION
The example simulates the channeling of 400 GeV/c protons in bent
Si crystal. Channeling occurs when particles enter a crystal aligned
with atomic planes or axes. In bent crystals, the particles are
trapped between atomic planes and follow the crystal curvature
being deflected. If the particle direction is tangent to a bent
crystal plane is reflected to the opposite direction with respect
to channeling, i.e., it suffer volume reflection. The example
provides the physical model for planar channeling and volume
reflection in bent crystals.
\section channeling_s2 GEOMETRY
The geometry is a bent Si crystal with three Si detectors placed at
-9.998 m, -0.320 m and 10.756 m with respect to bent crystal position.
The Si detectors allows to measure incoming and outgoing angle
after the interaction with the Si bent crystal. The
geometry is all under vacuum.
\section channeling_s3 PRIMARY EVENT
The primary events are 400 GeV/c protons at -1.05 m from the
crystal with 13.36 microrad x 11.25 microrad divergence.
\section channeling_s4 PHYSICS
In the example the physics of channeling and volume reflection
has been added to the standard Geant4 physics. The description
of the used model can be found in the paper A model for the
interaction of high-energy particles in straight and bent
crystals implemented in Geant4 by E. Bagli et al., available
online at http://arxiv.org/abs/1403.5819
\section channeling_s5 EXECUTION & OUTPUT
The executable must be run from within the source directory of the example
to ensure that it can find the path for crystal data files.
Data files for Si crystal interplanar potential, nuclei and electron density
are stored in a named subdirectorydata
Upon execution, the macro
\verbatim
2009_PLB680_129.mac
\endverbatim
will automatically run the
example with 1000 protons.
Use
\verbatim
/xtal/setBR XXX 0. 0. m
\endverbatim
To change crystal bending to XXX meters
Use
\verbatim
/xtal/setSize 1.0 70. XXX mm
\endverbatim
To change crystal length to XXX millimeter
Use
\verbatim
/xtal/setEC data/Si220
\endverbatim
To select the (110) Si crystal plane of channeling
GPS commands are used for the primary generator.
\subsection channeling_s5_sub1 ExExhCh.root
The output is the ExExhCh.root file with the TTree ExExChTree
has the leaves:
- angXin : incoming particle X angle at the crystal
- angYin : incoming particle Y angle at the crystal
- posXin : hitting X position of the particle at the crystal
- posYin : hitting Y position of the particle at the crystal
- angXout: outgoing particle X angle out of the the crystal
- angYout: outgoing particle Y angle out of the the crystal
*/
@@ -0,0 +1,79 @@
#----------------------------------------------------------------------------
# Setup the project
#
cmake_minimum_required(VERSION 3.16...3.27)
project(ch0)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
# Setup include directory for this project
#
include(${Geant4_USE_FILE})
include_directories(${PROJECT_SOURCE_DIR}/include)
#----------------------------------------------------------------------------
# Locate sources and headers for this project
# NB: headers are included so they will show up in IDEs
#
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Install data
#
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/data/*.txt)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR}/mac ${PROJECT_SOURCE_DIR}/mac/*.mac)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/mac/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
file(GLOB _data RELATIVE ${PROJECT_SOURCE_DIR}/analysis ${PROJECT_SOURCE_DIR}/analysis/*.sh ${PROJECT_SOURCE_DIR}/analysis/*.C)
foreach(_dat ${_data})
configure_file(
${PROJECT_SOURCE_DIR}/analysis/${_dat}
${PROJECT_BINARY_DIR}/${_dat}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(ch0 ch0.cc ${sources} ${headers})
target_link_libraries(ch0 ${Geant4_LIBRARIES})
#----------------------------------------------------------------------------
# For internal Geant4 use - but has no effect if you build this
# example standalone
#
add_custom_target(ch0_custom DEPENDS ch0)
#----------------------------------------------------------------------------
# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
#
install(TARGETS ch0 DESTINATION bin)
@@ -0,0 +1,153 @@
# Example channeling 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!
## 2024-09-02 Alexei Sytov (ch0-V11-02-00)
- moved into the folder channeling/ch0
- renamed to ch0
- root file removed
- output file removed
## 2022-11-02 Vladimir Ivanchenko (channelingExample-V11-00-01)
- Use SS EM physics instead of Opt4 and disable Coulomb scattering
## 2021-12-10 Ben Morgan (channelingExample-V11-00-00)
- Change to new Markdown History format
---
# History entries prior to 11.0
October 06, 2021 I. Hrivnacova (channelingExample-V10-07-03)
- Migration to new G4AnalysisManager.hh header;
removed Analysis.hh,
define the output file name with an extension.
August 03, 2021 B. Morgan (channelingExample-V10-07-02)
- Move test definition to test category
July 19, 2021 I. Hrivnacova (channelingExample-V10-07-01)
- Updated for changes in the analysis category:
removed deleting of the analysis manager,
as this is now done by the Geant4 kernel.
March 19, 2021 V. Ivanchenko (channelingExample-V10-07-00)
- removed local option4 physics
November 10, 2020 B. Morgan (channelingExample-V10-06-00)
- Migration to G4RunManagerFactory.
May 08, 2018 B. Morgan (channelingExample-V10-04-00)
- Include G4Types before use of G4MULTITHREADED. For forward
compatibility with move to #defines over -D for G4 preprocessor
symbols.
August 22, 2017 E. Bagli (channelingExample-V10-03-03)
- Modified sdht_ID to fSDHT_ID
- Removed G4VIS_USE, G4UI_USE
- Removed double blank lines
May 05,2017 E. Bagli (channelingExample-V10-03-00)
- Added the support to the G4Crystal package implemented in V10-03
- Added the support to G4Channeling process implemented in V10-03-01
November 02, 2016 I. Hrivnacova (channelingExample-V10-02-04)
- Added file descriptions for Doxygen documentation
October 17, 2016 E. Bagli (channelingExample-V10-02-03)
- Removed GPS initialization
October 14, 2016 G.Folger (channelingExample-V10-02-02)
- remove direct use of {a,the}ParticleIterator, use GetParticleTableIterator().
fix required by clang39 on Linux and MAC
October 6, 2016 E. Bagli (channelingExample-V10-02-01)
- Fixed coding guideline violations
May 19, 2016 G. Cosmo (channelingExample-V10-02-00)
- Fixed compilation warning on gcc-6.1 in XLatticeManager3.
June 16, 2015 E. Bagli (channelingExample-V10-01-05)
- bug fix passing arguments
June 11, 2015 E. Bagli (channelingExample-V10-01-04)
- bug fix on analysis macro
June 11, 2015 E. Bagli (channelingExample-V10-01-03)
- further protection against zero division
June 3, 2015 E. Bagli (channelingExample-V10-01-02)
- prevent division by zero in ProcessChanneling and Wrappers classes
May 27, 2015 E. Bagli (channeling-Example-V10-01-01)
- added full integration of particle trajectory into the channeling process
- added beampipe and detector box to the detector construction
- modified the wrapper classes to correct bugs in energy loss calculation under channeling
- added to the wrapper class the InCrystal parameter in order to be completely transparent if the particle is outside a volume with a lattice
- added the InCrystal parameter to the user info to switch between single and multiple scattering
- single and multiple scattering are enabled/disabled if the volume has or not a lattice
- added data files for Si110 and Si111 planar nuclei density, planar electron density and planar electric field
- minor modification to XPhysicalLattice
- minor modification to the macro to analyze the output data
Mar 6, 2015 A. Dotti (channelingExample-V10-01-00)
- Initialization of GPS defaults moved to master
October 16, 2014 E. Bagli (channelingExample-V10-00-15)
- minor modification to condition for vr
- minor modification to computation of channeling outgoing angle
- changed nuclei density to electron and nuclei density for ss cross section computation
July 1, 2014 G.Folger (channelingExample-V10-00-14)
- revert change introduced with tag ...-12, CMakeLists.txt rev.82513
June 30, 2014 E. Bagli (channelingExample-V10-00-13)
- erf function modified to CLHEP::HepStat::erfQ
June 26, 2014 G.Folger (channelingExample-V10-00-12)
- Build example only if erf() is available on system.
erf function misses on Windows up to VC11 (studio 2012) included.
June 22, 2014 E. Bagli (channelingExample-V10-00-11)
- CLHEP/Random/Stat.h added to XCrystalPlanarMoliereTempPotential.cc
June 21, 2014 E. Bagli (channelingExample-V10-00-10)
- Changed erfc(x) to 1.-erf(x)
June 20, 2014 E. Bagli (channelingExample-V10-00-09)
- Modified channelling to channeling in CMakeLists.txt
June 10, 2014 E. Bagli (channelingExample-V10-00-08)
- Moved Channeling to channeling in CMakeLists.txt and CTestDefinitions.txt
June 4, 2014 A. Dotti (channelingExample-V10-00-07)
- New GPS MT ready migration
June 2, 2014 E. Bagli (channelingExample-v10-00-06)
- Modified M_PI to CLHEP::pi
May 30, 2014 E. Bagli (channelingExample-v10-00-05)
- Removed measurement of time elapsed into channeling.c
May 28, 2014 E. Bagli (channelingExample-v10-00-04)
- Corrected conversions between data types.
- Added root reference file (physical/ExExCh.root).
May 27, 2014 A. Dotti (channelingExample-V10-00-03)
- First version of CTest introduced, via extenral
file CTestDefinitions.txt
May 20, 2014 E. Bagli (channelingExample-V10-00-02)
- Removed src/G4Channeling*.
- Removed include/G4Channeling*.
- Removed analysis/merge.sh
- Wrote History and inserted reference to channeling model adopted
May 19, 2014 E. Bagli (channelingExample-V10-00-01)
- Class names modified.
May 9, 2014, E. Bagli (channelingExample-V10-00-00)
- First import.
@@ -0,0 +1,71 @@
=================================================================
Channeling effect in Geant4
=================================================================
Enrico Bagli - INFN and University Ferrara (Italy)
bagli@fe.infn.it
This example shows how channeling in bent crystal can be simulated
in Geant4
1.INTRODUCTION
The example simulates the channeling of 400 GeV/c protons in bent
Si crystal. Channeling occurs when particles enter a crystal aligned
with atomic planes or axes. In bent crystals, the particles are
trapped between atomic planes and follow the crystal curvature
being deflected. If the particle direction is tangent to a bent
crystal plane is reflected to the opposite direction with respect
to channeling, i.e., it suffer volume reflection. The example
provides the physical model for planar channeling and volume
reflection in bent crystals.
2.GEOMETRY
The geometry is a bent Si crystal with three Si detectors placed at
-9.998 m, -0.320 m and 10.756 m with respect to the position of
the bent crystal itself. The Si detectors allows to measure
incoming and outgoing angle after the interaction with the Si bent crystal.
The geometry is all under vacuum.
3.PRIMARY EVENT
The primary events are 400 GeV/c protons launched at -10.5 m from the
crystal with 13.36 microrad x 11.25 microrad divergence.
4.PHYSICS
In the example the physics of channeling and volume reflection
has been added to the standard Geant4 physics. The description
of the used model can be found in the paper A model for the
interaction of high-energy particles in straight and bent
crystals implemented in Geant4 by E. Bagli et al., available
online at http://arxiv.org/abs/1403.5819
5.EXECUTION & OUTPUT
The executable must be run from within the source directory of the example
to ensure that it can find the path for crystal data files.
Data files for Si crystal interplanar potential, nuclei and electron density
are stored in a subdirectory named data
Upon execution, the 2009_PLB680_129.mac macro will automatically run the
example with 1000 protons.
Use
/xtal/setBR XXX 0. 0. m
To change crystal bending to XXX meters
Use
/xtal/setSize 1.0 70. XXX mm
To change crystal length to XXX millimeter
Use
/xtal/potfilename data/Si220pl
To select the (110) Si crystal plane of channeling
GPS commands are used for the primary generator.
The output is the ExExhCh.root file with the TTree ExExChTree
has the leaves:
- angXin : incoming particle X angle at the crystal
- angYin : incoming particle Y angle at the crystal
- posXin : hitting X position of the particle at the crystal
- posYin : hitting Y position of the particle at the crystal
- angXout: outgoing particle X angle out of the the crystal
- angYout: outgoing particle Y angle out of the the crystal
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
**************************************************************
Geant4 version Name: geant4-11-02-ref-06 (28-June-2024)
Geant4 version Name: geant4-11-03-ref-00 (6-December-2024)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -34,7 +34,6 @@ Registered graphics systems are:
RayTracer (RayTracer)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN)
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
@@ -149,10 +148,13 @@ Bremsstrahlung energy threshold above which
primary e+- is added to the list of secondary 100 TeV
Bremsstrahlung energy threshold above which primary
muon/hadron is added to the list of secondary 100 TeV
Positron annihilation at rest model SimplePositronium
Enable 3 gamma annihilation on fly 0
Lowest triplet kinetic energy 1 MeV
Enable sampling of gamma linear polarisation 0
5D gamma conversion model type 0
5D gamma conversion model on isolated ion 0
Use Ricardo-Gerardo pair production model 0
Livermore data directory epics_2017
=======================================================================
====== Ionisation Parameters ========
@@ -783,7 +785,7 @@ CoulombScat: for pi- XStype:2 SubType=1 BuildTable=1
=======================================================================
====== Geant4 Native Pre-compound Model Parameters ========
=======================================================================
Type of pre-compound inverse x-section 3
Type of pre-compound inverse x-section 1
Pre-compound model active 1
Pre-compound excitation low energy 100 keV
Pre-compound excitation high energy 30 MeV
@@ -808,7 +810,7 @@ Use discrete excitation energy of the residual 0
Time limit for long lived isomeres 1 ns
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 0
Store e- internal conversion data 1
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
@@ -838,8 +840,6 @@ Index : 2 used in the geometry : Yes
==================================================================
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 starts.
... set ntuple merging row mode : row-wise - done
... create file : ExExCh.root - done
@@ -1849,12 +1849,12 @@ Using
Run terminated.
Run Summary
Number of events processed : 1000
User=85.490000s Real=101.831163s Sys=0.040000s
User=84.840000s Real=95.287506s Sys=0.010000s
... write file : ExExCh.root - done
... close file : ExExCh.root - done
Graphics systems deleted.
Visualization Manager deleting...
================== Deleting memory pools ===================
Number of memory pools allocated: 14 of which, static: 1
Dynamic pools deleted: 13 / Total memory freed: 0.061 MB
Dynamic pools deleted: 13 / Total memory freed: 0.055 MB
============================================================
@@ -0,0 +1,56 @@
///\file "exoticphysics/channeling/ch1/.README.txt"
///\brief Example ch1 README page
/*! \page Examplech1 Example ch1
\author Alexei Sytov - INFN Ferrara Division (Italy) \n
sytov@fe.infn.it
\section ch1_s1 INTRODUCTION
Example ch1 is an easy demonstration of the minimum requirements necessary
to integrate the G4ChannelingFastSimModel and the G4BaierKatkov model into a project
in order to simulate the physics of channeling and
channeling radiation/coherent bremsstrahlung.
This example serves as a guideline for users on how to add this physics
to their existing Geant4 projects. It includes the minimum necessary options
to incorporate this physics. Specifically, it requires registering
G4FastSimulationPhysics in the main routine and
adding a few lines of code in DetectorConstruction.
\section ch1_s2 DESCRIPTION
The example is based on the following experiments on channeling [1] and
channeling radiation [2] in a bent crystal, carried out at Mainz Mikrotron MAMI with
855 MeV electrons. The experimental validation of G4ChannelingFastSimModel is
described in [3].
This example includes a bent crystal and a detector positioned behind it.
The incoming beam is set up in macro run.mac.
The example does not include any input of the model or geometry parameters
from the macro to keep it as straightforward as possible. The output is recorded
into the file results.root. It consists of
the charged particle distribution at the detector in the x-plane
(the plane of crystal bending and perpendicular to the crystal planes) as well as
the spectrum of photons arriving to the detector. To build these plots, one has to
open this file in root and use
\verbatim
x_out->Draw()
\endverbatim
and
\verbatim
Spectrum->Draw()
\endverbatim
for the coordinates and the spectrum, respectively.
\section ch1_s3 REFERENCES
-# A. Mazzolari et al. <a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.112.135503">Phys. Rev. Lett. 112, 135503 (2014).</a>
-# L. Bandiera et al. <a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.115.025504">Phys. Rev. Lett. 115, 025504 (2015).</a>
-# A. Sytov et al. <a href="https://link.springer.com/article/10.1007/s40042-023-00834-6"> Journal of the Korean Physical Society 83, 132139 (2023).</a>
*/
@@ -0,0 +1,55 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 3.16...3.21)
project(ch1)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
#
include(${Geant4_USE_FILE})
#----------------------------------------------------------------------------
# Copy all scripts to the build directory, i.e. the directory in which we
# build ch1. This is so that we can run the executable directly because it
# relies on these scripts being in the current working directory.
#
set(TESTch1_SCRIPTS
init_vis.mac
vis.mac
run.mac
)
foreach(_script ${TESTch1_SCRIPTS})
configure_file(
${PROJECT_SOURCE_DIR}/${_script}
${PROJECT_BINARY_DIR}/${_script}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
# Locate sources and headers for this project
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(ch1 ch1.cc ${sources} ${headers})
target_include_directories(ch1 PRIVATE include)
target_link_libraries(ch1 PRIVATE ${Geant4_LIBRARIES})
@@ -0,0 +1,15 @@
# Category ch1 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!
## 2024-09-25 Alexei Sytov (ch1-V11-02-01)
- Some comments deleted in DetectorConstruction
- Added {nullptr} in PrimaryGeneratorAction.hh and DetectorConstruction.hh
- redundant modules deleted
- CLHEP units added
- README updated
## 2024-09-02 Alexei Sytov (ch1-V11-02-00)
- First implementation
@@ -0,0 +1,46 @@
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example ch1
-----------
A. Sytov
INFN Ferrara Division, sytov@fe.infn.it
INTRODUCTION
Example ch1 is an easy demonstration of the minimum requirements necessary
to integrate the G4ChannelingFastSimModel and the G4BaierKatkov model into a project
in order to simulate the physics of channeling and
channeling radiation/coherent bremsstrahlung.
This example serves as a guideline for users on how to add this physics
to their existing Geant4 projects. It includes the minimum necessary options
to incorporate this physics. Specifically, it requires registering
G4FastSimulationPhysics in the main routine and
adding a few lines of code in DetectorConstruction.
DESCRIPTION
The example is based on the following experiments on channeling [1] and
channeling radiation [2] in a bent crystal, carried out at Mainz Mikrotron MAMI with
855 MeV electrons. The experimental validation of G4ChannelingFastSimModel is
described in [3].
This example includes a bent crystal and a detector positioned behind it.
The incoming beam is set up in macro run.mac.
The example does not include any input of the model or geometry parameters
from the macro to keep it as straightforward as possible. The output is recorded
into the file results.root. It consists of
the charged particle distribution at the detector in the x-plane
(the plane of crystal bending and perpendicular to the crystal planes) as well as
the spectrum of photons arriving to the detector. To build these plots, one has to
open this file in root and use x_out->Draw() and Spectrum->Draw() for the coordinates
and the spectrum, respectively.
REFERENCES
[1] A. Mazzolari et al. Phys. Rev. Lett. 112, 135503 (2014).
[2] L. Bandiera et al. Phys. Rev. Lett. 115, 025504 (2015).
[3] A. Sytov et al. Journal of the Korean Physical Society 83, 132139 (2023).
@@ -0,0 +1,146 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file ch1.cc
/// \brief Main program of the ch1 example
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "ActionInitialization.hh"
#include "G4RunManagerFactory.hh"
#include "G4SteppingVerbose.hh"
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"
#include "G4FastSimulationPhysics.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include "Randomize.hh"
#include "G4Timer.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
int main(int argc,char** argv)
{
// Get current time
G4Timer* theTimer = new G4Timer();
theTimer->Start();
// Choose the Random engine
G4Random::setTheEngine(new CLHEP::RanecuEngine);
CLHEP::HepRandom::setTheSeed(0.);
//use G4SteppingVerboseWithUnits
G4int precision = 4;
G4SteppingVerbose::UseBestUnit(precision);
// Detect interactive mode (if no arguments) and define UI session
G4UIExecutive* ui = nullptr;
if ( argc == 1 ) { ui = new G4UIExecutive(argc, argv); }
// Construct the default run manager
auto* runManager =
G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
// Set mandatory initialization classes
//
// Detector construction
runManager->SetUserInitialization(new DetectorConstruction());
// Physics list
G4VModularPhysicsList* physicsList = new FTFP_BERT;
// -- Create helper tool, used to activate the fast simulation:
G4FastSimulationPhysics* fastSimulationPhysics = new G4FastSimulationPhysics();
fastSimulationPhysics->BeVerbose();
// -- activation of fast simulation for particles having fast simulation models
// -- attached in the mass geometry:
// you may add any charged particles here
// CAUTION: for the particles other then e+- you would likely want
// to switch off the radiation
fastSimulationPhysics->ActivateFastSimulation("e-");
fastSimulationPhysics->ActivateFastSimulation("e+");
//fastSimulationPhysics->ActivateFastSimulation("proton");
//fastSimulationPhysics->ActivateFastSimulation("anti_proton");
//fastSimulationPhysics->ActivateFastSimulation("mu+");
//fastSimulationPhysics->ActivateFastSimulation("mu-");
//fastSimulationPhysics->ActivateFastSimulation("pi+");
//fastSimulationPhysics->ActivateFastSimulation("pi-");
//fastSimulationPhysics->ActivateFastSimulation("GenericIon");
// ...
// you may activate this model for any charged particle
// a neutral particle will not enter the model
// -- Attach the fast simulation physics constructor to the physics list:
physicsList->RegisterPhysics( fastSimulationPhysics );
physicsList->SetVerboseLevel(1);
runManager->SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new ActionInitialization());
// Initialize visualization
G4VisManager* visManager = new G4VisExecutive;
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
// G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// Process macro or start UI session
if ( ! ui ) {
// batch mode
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
else {
// interactive mode
UImanager->ApplyCommand("/control/execute init_vis.mac");
ui->SessionStart();
delete ui;
}
// Job termination
// Free the store: user actions, physics_list and detector_description are
// owned and deleted by the run manager, so they should not be deleted
// in the main() program !
delete visManager;
delete runManager;
theTimer->Stop();
G4cout << "Execution terminated" << G4endl;
G4cout << (*theTimer) << G4endl;
delete theTimer;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -0,0 +1,932 @@
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
############################################
!!! WARNING - FPE detection is activated !!!
############################################
################################
!!! G4Backtrace is activated !!!
################################
**************************************************************
Geant4 version Name: geant4-11-03-ref-00 (6-December-2024)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
: NIM A 835 (2016), 186-225
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
You have successfully registered the following graphics systems.
Registered graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Qt3D (Qt3D)
TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_XT_GLES_FALLBACK)
TOOLSSG_X11_ZB (TSG_X11_ZB, TSGX11ZB)
TOOLSSG_XT_GLES (TSG_XT_GLES, TSGXt, TSG_QT_GLES_FALLBACK)
TOOLSSG_XT_ZB (TSG_XT_ZB, TSGXtZB)
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG)
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
You may choose a graphics system (driver) with a parameter of
the command "/vis/open" or "/vis/sceneHandler/create",
or you may omit the driver parameter and choose at run time:
- by argument in the construction of G4VisExecutive
- by environment variable "G4VIS_DEFAULT_DRIVER"
- by entry in "~/.g4session"
- by build flags.
- Note: This feature is not allowed in batch mode.
For further information see "examples/basic/B1/exampleB1.cc"
and "vis.mac".
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered models:
None
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
Registered filters:
None
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
End of Event User Vis Actions: none
End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
*** /run/numberOfThreads command is issued in sequential mode.
Command is ignored.
Checking overlaps for volume Crystal:0 (G4Box) ... OK!
Crystal size: 20 20 0.0305 mm3
Crystal bending angle: 0.000905 rad
Crystal angleX: 0 rad
Checking overlaps for volume Detector:0 (G4Box) ... OK!
=======================================================================
====== Crystal lattice data ========
=======================================================================
Crystal material: Si
Crystal planes: (111)
G4BaierKatkov model is activated.
Radiation model activated
hInelastic FTFP_BERT : threshold between BERT and FTFP is over the interval
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
e+ : fastSimProcess_massGeom[geom:World]
e- : fastSimProcess_massGeom[geom:World]
=======================================================================
====== Electromagnetic Physics Parameters ========
=======================================================================
LPM effect enabled 1
Enable creation and use of sampling tables 0
Apply cuts on all EM processes 0
Use combined TransportationWithMsc Disabled
Use general process 1
Enable linear polarisation for gamma 0
Enable photoeffect sampling below K-shell 1
Enable sampling of quantum entanglement 0
X-section factor for integral approach 0.8
Min kinetic energy for tables 100 eV
Max kinetic energy for tables 100 TeV
Number of bins per decade of a table 7
Verbose level 1
Verbose level for worker thread 0
Bremsstrahlung energy threshold above which
primary e+- is added to the list of secondary 100 TeV
Bremsstrahlung energy threshold above which primary
muon/hadron is added to the list of secondary 100 TeV
Positron annihilation at rest model SimplePositronium
Enable 3 gamma annihilation on fly 0
Lowest triplet kinetic energy 1 MeV
Enable sampling of gamma linear polarisation 0
5D gamma conversion model type 0
5D gamma conversion model on isolated ion 0
Use Ricardo-Gerardo pair production model 0
Livermore data directory epics_2017
=======================================================================
====== Ionisation Parameters ========
=======================================================================
Step function for e+- (0.2, 1 mm)
Step function for muons/hadrons (0.2, 0.1 mm)
Step function for light ions (0.2, 0.1 mm)
Step function for general ions (0.2, 0.1 mm)
Lowest e+e- kinetic energy 1 keV
Lowest muon/hadron kinetic energy 1 keV
Use ICRU90 data 0
Fluctuations of dE/dx are enabled 1
Type of fluctuation model for leptons and hadrons Urban
Use built-in Birks satuaration 0
Build CSDA range enabled 0
Use cut as a final range enabled 0
Enable angular generator interface 0
Max kinetic energy for CSDA tables 1 GeV
Max kinetic energy for NIEL computation 0 eV
Linear loss limit 0.01
Read data from file for e+e- pair production by mu 0
=======================================================================
====== Multiple Scattering Parameters ========
=======================================================================
Type of msc step limit algorithm for e+- 1
Type of msc step limit algorithm for muons/hadrons 0
Msc lateral displacement for e+- enabled 1
Msc lateral displacement for muons and hadrons 0
Urban msc model lateral displacement alg96 1
Range factor for msc step limit for e+- 0.04
Range factor for msc step limit for muons/hadrons 0.2
Geometry factor for msc step limitation of e+- 2.5
Safety factor for msc step limit for e+- 0.6
Skin parameter for msc step limitation of e+- 1
Lambda limit for msc step limit for e+- 1 mm
Use Mott correction for e- scattering 0
Factor used for dynamic computation of angular
limit between single and multiple scattering 1
Fixed angular limit between single
and multiple scattering 3.1416 rad
Upper energy limit for e+- multiple scattering 100 MeV
Type of electron single scattering model 0
Type of nuclear form-factor 1
Screening factor 1
=======================================================================
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 150 keV, 7 bins/decade, spline: 0
LambdaPrime table from 150 keV to 100 TeV in 62 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e- XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
CoulombScat: for e- XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e+ XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
annihil: for e+ XStype:2 SubType=5 AtRestModel:Simple BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+ XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for GenericIon XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for alpha XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for anti_proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon- XStype:1 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu- XStype:1 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
-----------------------------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nKiller
-----------------------------------------------------------------------
Hadronic Processes for B-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: B-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for D-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: D-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for anti_He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-------------------------------------------------------------------------
Hadronic Processes for anti_hypertriton
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: anti_lambdaInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_proton
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for e-
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
Model: GammaNPreco: 0 eV ---> 200 MeV
Model: BertiniCascade: 199 MeV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: GammaNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: lambdaInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu+
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu-
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
Process: muMinusCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for proton
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for sigma-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: sigma-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
=======================================================================
====== Geant4 Native Pre-compound Model Parameters ========
=======================================================================
Type of pre-compound inverse x-section 1
Pre-compound model active 1
Pre-compound excitation low energy 100 keV
Pre-compound excitation high energy 30 MeV
Angular generator for pre-compound model 1
Use NeverGoBack option for pre-compound model 0
Use SoftCutOff option for pre-compound model 0
Use CEM transitions for pre-compound model 1
Use GNASH transitions for pre-compound model 0
Use HETC submodel for pre-compound model 0
=======================================================================
====== Nuclear De-excitation Module Parameters ========
=======================================================================
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy 10 eV
Min energy per nucleon for multifragmentation 200 GeV
Limit excitation energy for Fermi BreakUp 20 MeV
Level density (1/MeV) 0.075
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres 1 ns
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 1
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
### Run 0 starts.
--> Event 0 starts.
--> Event 10 starts.
--> Event 20 starts.
--> Event 30 starts.
--> Event 40 starts.
--> Event 50 starts.
--> Event 60 starts.
--> Event 70 starts.
--> Event 80 starts.
--> Event 90 starts.
--> Event 100 starts.
--> Event 110 starts.
--> Event 120 starts.
--> Event 130 starts.
--> Event 140 starts.
--> Event 150 starts.
--> Event 160 starts.
--> Event 170 starts.
--> Event 180 starts.
--> Event 190 starts.
--> Event 200 starts.
--> Event 210 starts.
--> Event 220 starts.
--> Event 230 starts.
--> Event 240 starts.
--> Event 250 starts.
--> Event 260 starts.
--> Event 270 starts.
--> Event 280 starts.
--> Event 290 starts.
--> Event 300 starts.
--> Event 310 starts.
--> Event 320 starts.
--> Event 330 starts.
--> Event 340 starts.
--> Event 350 starts.
--> Event 360 starts.
--> Event 370 starts.
--> Event 380 starts.
--> Event 390 starts.
--> Event 400 starts.
--> Event 410 starts.
--> Event 420 starts.
--> Event 430 starts.
--> Event 440 starts.
--> Event 450 starts.
--> Event 460 starts.
--> Event 470 starts.
--> Event 480 starts.
--> Event 490 starts.
--> Event 500 starts.
--> Event 510 starts.
--> Event 520 starts.
--> Event 530 starts.
--> Event 540 starts.
--> Event 550 starts.
--> Event 560 starts.
--> Event 570 starts.
--> Event 580 starts.
--> Event 590 starts.
--> Event 600 starts.
--> Event 610 starts.
--> Event 620 starts.
--> Event 630 starts.
--> Event 640 starts.
--> Event 650 starts.
--> Event 660 starts.
--> Event 670 starts.
--> Event 680 starts.
--> Event 690 starts.
--> Event 700 starts.
--> Event 710 starts.
--> Event 720 starts.
--> Event 730 starts.
--> Event 740 starts.
--> Event 750 starts.
--> Event 760 starts.
--> Event 770 starts.
--> Event 780 starts.
--> Event 790 starts.
--> Event 800 starts.
--> Event 810 starts.
--> Event 820 starts.
--> Event 830 starts.
--> Event 840 starts.
--> Event 850 starts.
--> Event 860 starts.
--> Event 870 starts.
--> Event 880 starts.
--> Event 890 starts.
--> Event 900 starts.
--> Event 910 starts.
--> Event 920 starts.
--> Event 930 starts.
--> Event 940 starts.
--> Event 950 starts.
--> Event 960 starts.
--> Event 970 starts.
--> Event 980 starts.
--> Event 990 starts.
Graphics systems deleted.
Visualization Manager deleting...
Execution terminated
User=59.720000s Real=80.855503s Sys=0.060000s
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1ActionInitialization_h
#define B1ActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Action initialization class.
class ActionInitialization : public G4VUserActionInitialization
{
public:
ActionInitialization();
~ActionInitialization() override = default;
void BuildForMaster() const override;
void Build() const override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,70 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1DetectorConstruction_h
#define B1DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "G4ios.hh"
#include "globals.hh"
#include <vector>
#include "G4Region.hh"
#include "G4PVPlacement.hh"
#include "G4ChannelingFastSimModel.hh"
class G4VPhysicalVolume;
class G4LogicalVolume;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Detector construction class to define materials and geometry.
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
~DetectorConstruction() override = default;
G4VPhysicalVolume* Construct() override;
void ConstructSDandField() override;
private:
//variables to remember
G4Material* fCrystalMaterial{nullptr};
G4LogicalVolume* fLogicCrystal{nullptr};
G4double fBendingAngle = 0.;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.hh
/// \brief Definition of the B1::PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1PrimaryGeneratorAction_h
#define B1PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#include "G4GeneralParticleSource.hh"
class G4ParticleGun;
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// The primary generator action class with GeneralParticleSource.
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction() override;
// method from the base class
void GeneratePrimaries(G4Event*) override;
private:
G4GeneralParticleSource* fGPS{nullptr};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file RunAction.hh
/// \brief Definition of the RunAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
class G4Run;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Run action class.
class RunAction : public G4UserRunAction
{
public:
RunAction();
~RunAction() override;
void BeginOfRunAction(const G4Run*) override;
void EndOfRunAction(const G4Run*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file SteppingAction.hh
/// \brief Definition of the SteppingAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1SteppingAction_h
#define B1SteppingAction_h 1
#include "G4UserSteppingAction.hh"
#include "globals.hh"
#include <iostream>
#include <vector>
class G4LogicalVolume;
class EventAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Stepping action class.
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction();
~SteppingAction() override = default;
// method from the base class
void UserSteppingAction(const G4Step*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,32 @@
# Macro file for the initialization of example ch01
# in interactive session
#
# Set some default verbose
/control/verbose 2
/control/saveHistory
/run/verbose 2
#
# Change the default number of threads (in multi-threaded mode)
#/run/numberOfThreads 4
#
#Initialize kernel
/run/initialize
#
# Initialize kernel
/run/initialize
#
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 0.07 mm
/gps/pos/sigma_y 0.2 mm
#
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 30.E-6 rad
/gps/ang/sigma_y 30.E-6 rad
#
# Visualization setting
/control/execute vis.mac
@@ -0,0 +1,33 @@
/random/setSeeds 19577794 424238336
#setting number of cores
/run/numberOfThreads 2
/run/initialize
#settings
/control/verbose 0
/run/verbose 0
/tracking/verbose 0
#beam
/gps/particle e-
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 0.07 mm
/gps/pos/sigma_y 0.2 mm
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 30.E-6 rad
/gps/ang/sigma_y 30.E-6 rad
#energy distribution (constant)
/gps/ene/mono 0.855 GeV
#statistics
/run/printProgress 10
/run/beamOn 1000
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "ActionInitialization.hh"
#include "PrimaryGeneratorAction.hh"
#include "RunAction.hh"
#include "SteppingAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::ActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::BuildForMaster() const
{
SetUserAction(new RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::Build() const
{
SetUserAction(new PrimaryGeneratorAction);
SetUserAction(new RunAction);
SetUserAction(new SteppingAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,205 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "G4RunManager.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4RegionStore.hh"
#include "G4VisAttributes.hh"
#include "PrimaryGeneratorAction.hh"
#include <CLHEP/Units/SystemOfUnits.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::DetectorConstruction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
//Check overlap option
G4bool checkOverlaps = true;
//Materials
G4NistManager* nist = G4NistManager::Instance();
G4Material* world_mat = nist->FindOrBuildMaterial("G4_Galactic");
G4Material* silicon = nist->FindOrBuildMaterial("G4_Si");
//World
G4Box* solidWorld = new G4Box("World", 0.2*CLHEP::m, 0.2*CLHEP::m, 10.*CLHEP::m);
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, world_mat, "World");
G4VPhysicalVolume* physWorld = new G4PVPlacement
(0, // no rotation
G4ThreeVector(), // centre position
logicWorld, // its logical volume
"World", // its name
0, // its mother volume
false, // no boolean operation
0, // copy number
checkOverlaps); // overlaps checking
logicWorld->SetVisAttributes(G4VisAttributes::GetInvisible());
// --------------- Crystal ------------------------------------
/*parameters of the following experiment:
Only channeling: A. Mazzolari et al. Phys. Rev. Lett. 112, 135503 (2014)
Radition: L. Bandiera et al. Phys. Rev. Lett. 115, 025504 (2015)
Published experimental validation of G4ChannelingFastSimModel (only channeling):
A. Sytov et al. Journal of the Korean Physical Society 83, 132139 (2023)
*/
//Select crystal material
fCrystalMaterial = nist->FindOrBuildMaterial("G4_Si");
//Setting crystal rotation angle (also the angle of crystal planes vs the beam)
//Crystal rotation angle (also the angle of crystal planes vs the beam)
G4double angleX = 0.*1e-6; //rad
G4RotationMatrix* crystalRotationMatrix = new G4RotationMatrix;
crystalRotationMatrix->rotateY(-angleX);
//Crystal bending angle
fBendingAngle = 0.905*CLHEP::mrad;
//setting crystal dimensions:
G4ThreeVector crystalSize = G4ThreeVector(20.*CLHEP::mm,
20.*CLHEP::mm,
0.0305*CLHEP::mm);
//Setting crystal position
G4ThreeVector posCrystal = G4ThreeVector(0., 0., crystalSize.z()/2.);
//crystal volume
G4Box* solidCrystal = new G4Box("Crystal",
crystalSize.x()/2,
crystalSize.y()/2,
crystalSize.z()/2.);
fLogicCrystal = new G4LogicalVolume(solidCrystal,
fCrystalMaterial,
"Crystal");
new G4PVPlacement(crystalRotationMatrix,
posCrystal,
fLogicCrystal,
"Crystal",
logicWorld,
false,
0,
checkOverlaps);
//crystal region (necessary for the FastSim model)
G4Region* regionCh = new G4Region("Crystal");
regionCh->AddRootLogicalVolume(fLogicCrystal);
//visualization attributes
G4VisAttributes* crystalVisAttribute =
new G4VisAttributes(G4Colour(1., 0., 0.));
crystalVisAttribute->SetForceSolid(true);
fLogicCrystal->SetVisAttributes(crystalVisAttribute);
//print crystal info
G4cout << "Crystal size: " << crystalSize.x()/CLHEP::mm
<< " " << crystalSize.y()/CLHEP::mm
<< " " << crystalSize.z()/CLHEP::mm << " mm3" << G4endl;
G4cout << "Crystal bending angle: " << fBendingAngle << " rad" << G4endl;
G4cout << "Crystal angleX: " << angleX << " rad" << G4endl;
// --------------- Detector -----------------------------------
//Setting detector position
G4ThreeVector posDetector = G4ThreeVector(0, 0, 5973*CLHEP::mm);
//particle detector volume
G4Box* detector = new G4Box("Detector",
10*CLHEP::cm/2,
10*CLHEP::cm/2,
0.3*CLHEP::mm/2);
G4LogicalVolume* logicDetector = new G4LogicalVolume(detector,
silicon,
"Detector");
new G4PVPlacement(0,
posDetector,
logicDetector,
"Detector",
logicWorld,
false,
0,
checkOverlaps);
//visualization attributes
G4VisAttributes* detectorVisAttribute =
new G4VisAttributes(G4Colour(0., 0., 1));
detectorVisAttribute->SetForceSolid(true);
logicDetector->SetVisAttributes(detectorVisAttribute);
//always return the physical World
return physWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::ConstructSDandField()
{
// --------------- fast simulation ----------------------------
//extract the region of the crystal from the store
G4RegionStore* regionStore = G4RegionStore::GetInstance();
G4Region* regionCh = regionStore->GetRegion("Crystal");
///create the channeling model for this region
G4ChannelingFastSimModel* channelingModel =
new G4ChannelingFastSimModel("ChannelingModel", regionCh);
///Crystal planes or axes considered
///Use brackets (...) for planes and <...> for axes
G4String lattice = "(111)";
///activate the channeling model
channelingModel->Input(fCrystalMaterial, lattice);
///setting bending angle of the crystal planes (default is 0)
channelingModel->GetCrystalData()->SetBendingAngle(fBendingAngle,fLogicCrystal);
/*
activate radiation model (do it only when you want to take into account the
radiation production in an oriented crystal; it reduces simulation speed.)
*/
G4bool activateRadiationModel = true;
if (activateRadiationModel)
{
channelingModel->RadiationModelActivate();
G4cout << "Radiation model activated" << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.cc
/// \brief Implementation of the PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PrimaryGeneratorAction.hh"
#include "G4Event.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
fGPS = new G4GeneralParticleSource();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fGPS;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
fGPS->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,87 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file RunAction.cc
/// \brief Implementation of the RunAction class
#include "RunAction.hh"
#include "G4AnalysisManager.hh"
#include "G4RunManager.hh"
#include "G4Run.hh"
#include <CLHEP/Units/SystemOfUnits.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction()
: G4UserRunAction()
{
//using analysis manager for output
auto analysisManager = G4AnalysisManager::Instance();
//setting our histogram
//a true range and bin number is set up in BeginOfRunAction
analysisManager->CreateH1("x_out","Detector",100,-10,10);
analysisManager->CreateH1("Spectrum","Spectrum",20,0,100);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::~RunAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::BeginOfRunAction(const G4Run*)
{
//opening output file
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4String fileName = "results.root";
analysisManager->OpenFile(fileName);
//histogram range in X
G4double rangeX = 100*CLHEP::mm/2;
//setting histograms
G4double binNumber = 500;
analysisManager->SetH1(0,binNumber,-rangeX,rangeX,"mm");
analysisManager->SetH1XAxisTitle(0,"x [mm]");
analysisManager->SetH1YAxisTitle(0,"Count");
analysisManager->SetH1(1,20,0,100,"MeV");
analysisManager->SetH1XAxisTitle(1,"Egamma [MeV]");
analysisManager->SetH1YAxisTitle(1,"Count");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::EndOfRunAction(const G4Run*)
{
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,84 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file SteppingAction.cc
/// \brief Implementation of the SteppingAction class
#include "SteppingAction.hh"
#include "DetectorConstruction.hh"
#include "G4Step.hh"
#include "G4Event.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4AnalysisManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
SteppingAction::SteppingAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void SteppingAction::UserSteppingAction(const G4Step* step)
{
G4String volumeName = step->GetPreStepPoint()->GetTouchableHandle()
->GetVolume()->GetName();
//if a particle enters the detector volume
if (step->GetPreStepPoint()-> GetStepStatus()==G4StepStatus::fGeomBoundary&&
volumeName=="Detector")
{
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
//we are writing only charged particles
if(std::abs(step->GetTrack()->GetDefinition()->GetPDGCharge())>DBL_EPSILON)
{
//coordinate in the horizontal plane
G4double x0 = step->GetPreStepPoint()->GetPosition().getX()/CLHEP::mm;
//filling histogram
analysisManager->FillH1(0, x0);
}
//gamma spectrum
if(step->GetTrack()->GetDefinition()->GetParticleName()=="gamma")
{
//coordinate in the horizontal plane
G4double eGamma0 = step->GetPreStepPoint()->GetTotalEnergy()/CLHEP::MeV;
//filling histogram
analysisManager->FillH1(1, eGamma0);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//}
@@ -0,0 +1,69 @@
#Macro for the visualization
#Create an empty scene
/vis/scene/create
#Create a scene handler for a specific graphics system
/vis/open OGL
#/vis/open DAWNFILE
#/vis/open VRML2FILE
#Disable auto refresh and quieten vis messages whilst scene and
#trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#Draw the scene
/vis/drawVolume
/vis/viewer/flush
#Set the camera
/vis/viewer/reset
/vis/viewer/set/viewpointThetaPhi 135. 45. deg
/vis/viewer/zoom 2
#Specify style (surface, wireframe, auxiliary edges,...)
/vis/viewer/set/style wireframe
/vis/viewer/set/lineSegmentsPerCircle 100
#Geometry
#/vis/geometry/set/lineWidth all 1 3
#Decoration
#Axes
/vis/set/lineWidth 3
#/vis/scene/add/axes 0 0 0 1.0 m #Simple axes: x=red, y=green, z=blue.
#Name
#/vis/set/textColour red
#/vis/set/textLayout right
#/vis/scene/add/text2D 0.8 -0.85 24 ! ! FastSimChannelingRad
#Frame
#/vis/set/colour red
#/vis/set/lineWidth 2
#/vis/scene/add/frame #Simple frame around the view
#/vis/set/colour #Revert to default colour (white)
#/vis/set/lineWidth #Revert to default line width (1.)
#Commands for the drawing the tracks
/vis/scene/add/eventID #Drawn at end of event
/tracking/storeTrajectory 0 #(if too many tracks cause core dumped => storeTrajectory 0)
/vis/scene/endOfEventAction accumulate
/vis/scene/add/trajectories smooth rich
#/vis/modeling/trajectories/create/drawByParticleID
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
#Draw hits at end of event:
/vis/scene/add/hits
#Geometry test (it can cause a "core dumped")
/geometry/navigator/reset
/geometry/test/run
#Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
@@ -0,0 +1,68 @@
///\file "exoticphysics/channeling/ch2/.README.txt"
///\brief Example ch2 README page
/*! \page Examplech2 Example ch2
\author Alexei Sytov, Gianfranco Paternò - INFN Ferrara Division (Italy) \n
sytov@fe.infn.it, paterno@fe.infn.it
\section ch2_s1 INTRODUCTION
Example ch2 is an enhanced version of ch1, providing the user with the full functionality of
both the G4ChannelingFastSimModel and G4BaierKatkov, with parameters set up via a macro,
in order to simulate the physics of channeling and channeling radiation/coherent bremsstrahlung.
The example can be exploited for a wide range of cases to study coherent effects in
a straight, bent or periodically bent crystal (crystalline undulator). Channeling
physics in ch2 is active for protons, ions, muons, pions, electrons and their antiparticles.
Any other charged particle can also be activated.
\section ch2_s2 DESCRIPTION
The setup of the example ch2 is identical to ch1. As ch1, this example includes a bent crystal
and a detector positioned behind it. Like ch1, it is based on the experiments on
channeling [1] and channeling radiation [2] in a bent crystal, carried out at
Mainz Mikrotron MAMI with 855 MeV electrons. The experimental validation of
G4ChannelingFastSimModel is described in [3].
However, since ch2 parameters are fully set up in the macro run.mac, this example
is quite flexible and can be easily adapted for entirely different cases.
A description of all the available options is provided in run.mac.
It includes crystal and detector geometry, activation flags for
G4ChannelingFastSimModel and G4BaierKatkov and various options.
The example also provides detailed descriptions of various options for
G4ChannelingFastSimModel and G4BaierKatkov, which can adjust model parameters
depending on the specific case (see ConstructSDandField in DetectorConstruction).
The front surface of the crystal is placed at z=0 (with z as the beam direction),
while the front position of the detector can be set up via run.mac.
The output is recorded into the file results.root as a set of root ntuples.
These ntuples include:
-# crystal: particles recorded at the crystal entrance,
-# detector: all particles (except photons) recorded at the detector entrance,
-# detector_photons: photons recorded at the detector entrance.
The format of every ntuple includes the following 10 variables (columns):
"eventID", "volume", "x", "y", "angle_x", "angle_y", "Ekin", "particle", "particleID", "parentID"
The variables represent:
-# the event number within the run (column 0),
-# the volume, either the crystal or the detector (column 1),
-# the coordinate (x,y) and the angles (x'=dx/dz, y'=dy/dz) of the impinging particles (columns 2-6),
-# the kinetic energy of the particle (column 7),
-# the particle name (column 8),
-# the particle ID (column 9),
-# the parent ID of the particle (column 10).
To visualize these data, one should either open results.root using root TBrowser or use the python script analysis_ch2.py.
\section ch1_s3 REFERENCES
-# A. Mazzolari et al. <a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.112.135503">Phys. Rev. Lett. 112, 135503 (2014).</a>
-# L. Bandiera et al. <a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.115.025504">Phys. Rev. Lett. 115, 025504 (2015).</a>
-# A. Sytov et al. <a href="https://link.springer.com/article/10.1007/s40042-023-00834-6"> Journal of the Korean Physical Society 83, 132139 (2023).</a>
*/
@@ -0,0 +1,56 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 3.16...3.21)
project(ch2)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
#
include(${Geant4_USE_FILE})
#----------------------------------------------------------------------------
# Copy all scripts to the build directory, i.e. the directory in which we
# build ch2. This is so that we can run the executable directly because it
# relies on these scripts being in the current working directory.
#
set(TESTch2_SCRIPTS
init_vis.mac
vis.mac
run.mac
analysis_ch2.py
)
foreach(_script ${TESTch2_SCRIPTS})
configure_file(
${PROJECT_SOURCE_DIR}/${_script}
${PROJECT_BINARY_DIR}/${_script}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
# Locate sources and headers for this project
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(ch2 ch2.cc ${sources} ${headers})
target_include_directories(ch2 PRIVATE include)
target_link_libraries(ch2 PRIVATE ${Geant4_LIBRARIES})
@@ -0,0 +1,9 @@
# Category ch1 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!
## 2024-09-25 Alexei Sytov (ch2-V11-02-00)
- First implementation
@@ -0,0 +1,68 @@
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example ch2
-----------
A. Sytov, G. Paternò
INFN Ferrara Division, sytov@fe.infn.it, paterno@fe.infn.it
INTRODUCTION
Example ch2 is an enhanced version of ch1, providing the user with the full functionality of
both the G4ChannelingFastSimModel and G4BaierKatkov, with parameters set up via a macro,
in order to simulate the physics of channeling and channeling radiation/coherent bremsstrahlung.
The example can be exploited for a wide range of cases to study coherent effects in
a straight, bent or periodically bent crystal (crystalline undulator). Channeling
physics in ch2 is active for protons, ions, muons, pions, electrons and their antiparticles.
Any other charged particle can also be activated.
DESCRIPTION
The setup of the example ch2 is identical to ch1. As ch1, this example includes a bent crystal
and a detector positioned behind it. Like ch1, it is based on the experiments on
channeling [1] and channeling radiation [2] in a bent crystal, carried out at
Mainz Mikrotron MAMI with 855 MeV electrons. The experimental validation of
G4ChannelingFastSimModel is described in [3].
However, since ch2 parameters are fully set up in the macro run.mac, this example
is quite flexible and can be easily adapted for entirely different cases.
A description of all the available options is provided in run.mac.
It includes crystal and detector geometry, activation flags for
G4ChannelingFastSimModel and G4BaierKatkov and various options.
The example also provides detailed descriptions of various options for
G4ChannelingFastSimModel and G4BaierKatkov, which can adjust model parameters
depending on the specific case (see ConstructSDandField in DetectorConstruction).
The front surface of the crystal is placed at z=0 (with z as the beam direction),
while the front position of the detector can be set up via run.mac.
The output is recorded into the file results.root as a set of root ntuples.
These ntuples include:
- crystal: particles recorded at the crystal entrance,
- detector: all particles (except photons) recorded at the detector entrance,
- detector_photons: photons recorded at the detector entrance.
The format of every ntuple includes the following 10 variables (columns):
"eventID", "volume", "x", "y", "angle_x", "angle_y", "Ekin", "particle", "particleID", "parentID"
The variables represent:
- the event number within the run (column 0),
- the volume, either the crystal or the detector (column 1),
- the coordinate (x,y) and the angles (x'=dx/dz, y'=dy/dz) of the impinging particles (columns 2-6),
- the kinetic energy of the particle (column 7),
- the particle name (column 8),
- the particle ID (column 9),
- the parent ID of the particle (column 10).
To visualize these data, one should either open results.root using root TBrowser or use the python script analysis_ch2.py.
REFERENCES
[1] A. Mazzolari et al. Phys. Rev. Lett. 112, 135503 (2014).
[2] L. Bandiera et al. Phys. Rev. Lett. 115, 025504 (2015).
[3] A. Sytov et al. Journal of the Korean Physical Society 83, 132139 (2023).
@@ -0,0 +1,113 @@
#!/usr/bin/env python
# coding: utf-8
# Read and plot the simulation results of particle interactions in Oriented Crystals
# obatined through example ch2, which is baed on G4ChannelingFastSimModel.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import os
import uproot
################################### INPUT ############################################
# Set path and filename of the simulation file
G4_sim_path = ""
root_file = "results"
Nmax = 1e5 #max number of events to elaborate
save_fig = True
fig_path = G4_sim_path
apply_collimation = False
coll_angle = 20/8627 #rad
NbinE = 25
rangeE = [0, 10] #MeV
NbinTheta = 100
rangeTheta = [-1, 2] #mrad
######################################################################################
# Create figure directory if it does not exist
if fig_path != '' and not os.path.exists(fig_path):
os.makedirs(fig_path)
print('created fig_path:', fig_path)
# Open the simulation output root file
rf = uproot.open(G4_sim_path + root_file + '.root')
rf_content = [item.split(';')[0] for item in rf.keys()]
print('rf_content:', rf_content, '\n')
# Import the scoring ntuples and convert them into pandas dataframes
branches = ["eventID", "volume", "x", "y", "angle_x", "angle_y",
"Ekin" , "particle", "particleID", "parentID"]
df_in = rf['crystal'].arrays(branches, library='pd')
df_out = rf['detector'].arrays(branches, library='pd')
df_ph = rf['detector_photons'].arrays(branches, library='pd')
# Define in and out dataframes
df_in_all_primary = df_in[df_in.parentID == 0]
df_out_all_primary = df_out[df_out.parentID == 0]
Nmax = min([int(Nmax), len(df_out_all_primary)])
df_in_primary = df_in_all_primary[:Nmax]
df_out_primary = df_out_all_primary[:Nmax]
# Select only the columns useful for deflection
df_in_primary_sel = df_in_primary[["eventID", "angle_x", "angle_y"]]
df_out_primary_sel = df_out_primary[["eventID", "angle_x", "angle_y"]]
del df_in_primary, df_out_primary
# Array with photon energies and angles
Eph = df_ph['Ekin'].values #MeV
Nph = len(Eph)
print("number of emitted photons:", Nph)
thetaX_ph = df_ph['angle_x'].values*1e3 #rad -> mrad
thetaY_ph = df_ph['angle_y'].values*1e3 #rad -> mrad
# Take only the photons inside the collimator acceptance
theta_ph = np.sqrt(thetaX_ph**2 + thetaY_ph**2)
if apply_collimation:
thetaX_ph = thetaX_ph[theta_ph <= coll_angle]
thetaY_ph = thetaY_ph[theta_ph <= coll_angle]
Eph = Eph[theta_ph <= coll_angle]
theta_ph = theta_ph[theta_ph <= coll_angle]
# Calculate the scored photon energy spectrum
spectrum, EbinEdges = np.histogram(Eph, bins=NbinE, range=rangeE, density=True)
Ebin = EbinEdges[:-1] + (EbinEdges[1]-EbinEdges[0])*0.5
spectral_intensity = Ebin * spectrum
# Plot the photon energy spectrum
fig = plt.figure(figsize=(13, 6))
fs = 16
lw = 2
bw = 0.6
plt.subplot(1,2,1)
plt.bar(Ebin, spectrum, width=bw, linewidth=lw, alpha=1, label='')
plt.title('Emitted photon spectrum')
plt.xlabel('E [MeV]', fontsize=fs)
plt.ylabel('1/N$\\times$dN/dE', fontsize=fs)
plt.yscale('log')
plt.subplot(1,2,2)
plt.bar(Ebin, spectral_intensity, width=bw, linewidth=lw, alpha=1, label='')
plt.title('Emitted photon spectral intensity')
plt.xlabel('E [MeV]', fontsize=fs)
plt.ylabel('1/N$\\times$dW/dE', fontsize=fs)
plt.yscale('log')
if save_fig:
plt.savefig(fig_path + 'spectrum.jpg')
plt.close()
# Plot angle_x distribution at the detector
thetaXdistrib, thetaEdges = np.histogram(df_out_primary_sel["angle_x"].values*1e3, \
bins=NbinTheta, range=rangeTheta, density=True)
thetabin = thetaEdges[:-1] + (thetaEdges[1]-thetaEdges[0])*0.5
plt.figure(figsize=(9, 6))
plt.plot(thetabin, thetaXdistrib, linewidth=lw, alpha=1, label='')
plt.xlabel('$\\theta_X$ [mrad]', fontsize=fs)
plt.ylabel('1/N$\\times$dN/d$\\theta_X$', fontsize=fs)
if save_fig:
plt.savefig(fig_path + 'thetaXdistribution.jpg')
plt.close()
@@ -0,0 +1,146 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file ch2.cc
/// \brief Main program of the ch2 example
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "ActionInitialization.hh"
#include "G4RunManagerFactory.hh"
#include "G4SteppingVerbose.hh"
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"
#include "G4FastSimulationPhysics.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include "Randomize.hh"
#include "G4Timer.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
int main(int argc,char** argv)
{
// Get current time
G4Timer* theTimer = new G4Timer();
theTimer->Start();
// Choose the Random engine
G4Random::setTheEngine(new CLHEP::RanecuEngine);
CLHEP::HepRandom::setTheSeed(0.);
//use G4SteppingVerboseWithUnits
G4int precision = 4;
G4SteppingVerbose::UseBestUnit(precision);
// Detect interactive mode (if no arguments) and define UI session
G4UIExecutive* ui = nullptr;
if ( argc == 1 ) { ui = new G4UIExecutive(argc, argv); }
// Construct the default run manager
auto* runManager =
G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
// Set mandatory initialization classes
//
// Detector construction
runManager->SetUserInitialization(new DetectorConstruction());
// Physics list
G4VModularPhysicsList* physicsList = new FTFP_BERT;
// -- Create helper tool, used to activate the fast simulation:
G4FastSimulationPhysics* fastSimulationPhysics = new G4FastSimulationPhysics();
fastSimulationPhysics->BeVerbose();
// -- activation of fast simulation for particles having fast simulation models
// -- attached in the mass geometry:
// you may add any charged particles here
// CAUTION: for the particles other then e+- you would likely want
// to switch off the radiation
fastSimulationPhysics->ActivateFastSimulation("e-");
fastSimulationPhysics->ActivateFastSimulation("e+");
fastSimulationPhysics->ActivateFastSimulation("proton");
fastSimulationPhysics->ActivateFastSimulation("anti_proton");
fastSimulationPhysics->ActivateFastSimulation("mu+");
fastSimulationPhysics->ActivateFastSimulation("mu-");
fastSimulationPhysics->ActivateFastSimulation("pi+");
fastSimulationPhysics->ActivateFastSimulation("pi-");
fastSimulationPhysics->ActivateFastSimulation("GenericIon");
//fastSimulationPhysics->ActivateFastSimulation("your_particle");
// you may activate this model for any charged particle
// a neutral particle will not enter the model
// -- Attach the fast simulation physics constructor to the physics list:
physicsList->RegisterPhysics( fastSimulationPhysics );
physicsList->SetVerboseLevel(1);
runManager->SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new ActionInitialization());
// Initialize visualization
G4VisManager* visManager = new G4VisExecutive;
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
// G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// Process macro or start UI session
if ( ! ui ) {
// batch mode
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
else {
// interactive mode
UImanager->ApplyCommand("/control/execute init_vis.mac");
ui->SessionStart();
delete ui;
}
// Job termination
// Free the store: user actions, physics_list and detector_description are
// owned and deleted by the run manager, so they should not be deleted
// in the main() program !
delete visManager;
delete runManager;
theTimer->Stop();
G4cout << "Execution terminated" << G4endl;
G4cout << (*theTimer) << G4endl;
delete theTimer;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -0,0 +1,945 @@
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
############################################
!!! WARNING - FPE detection is activated !!!
############################################
################################
!!! G4Backtrace is activated !!!
################################
**************************************************************
Geant4 version Name: geant4-11-03-ref-00 (6-December-2024)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
: NIM A 835 (2016), 186-225
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
You have successfully registered the following graphics systems.
Registered graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Qt3D (Qt3D)
TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_XT_GLES_FALLBACK)
TOOLSSG_X11_ZB (TSG_X11_ZB, TSGX11ZB)
TOOLSSG_XT_GLES (TSG_XT_GLES, TSGXt, TSG_QT_GLES_FALLBACK)
TOOLSSG_XT_ZB (TSG_XT_ZB, TSGXtZB)
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG)
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
You may choose a graphics system (driver) with a parameter of
the command "/vis/open" or "/vis/sceneHandler/create",
or you may omit the driver parameter and choose at run time:
- by argument in the construction of G4VisExecutive
- by environment variable "G4VIS_DEFAULT_DRIVER"
- by entry in "~/.g4session"
- by build flags.
- Note: This feature is not allowed in batch mode.
For further information see "examples/basic/B1/exampleB1.cc"
and "vis.mac".
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered models:
None
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
Registered filters:
None
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
End of Event User Vis Actions: none
End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
*** /run/numberOfThreads command is issued in sequential mode.
Command is ignored.
Checking overlaps for volume Crystal:0 (G4Box) ... OK!
Crystal material: G4_Si
Crystal size: 20x20x0.0305 mm3
G4ChannelingFastSimModel activated
Crystal bending angle: 0.000905 rad
Crystal Lattice: (111)
Crystal angleX: 0 rad
Crystal angleY: 0 rad
ActivateRadiationModel: 1
Checking overlaps for volume Detector:0 (G4Box) ... OK!
=======================================================================
====== Crystal lattice data ========
=======================================================================
Crystal material: Si
Crystal planes: (111)
G4BaierKatkov model is activated.
Radiation model activated
hInelastic FTFP_BERT : threshold between BERT and FTFP is over the interval
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
GenericIon : fastSimProcess_massGeom[geom:World]
anti_proton : fastSimProcess_massGeom[geom:World]
e+ : fastSimProcess_massGeom[geom:World]
e- : fastSimProcess_massGeom[geom:World]
mu+ : fastSimProcess_massGeom[geom:World]
mu- : fastSimProcess_massGeom[geom:World]
pi+ : fastSimProcess_massGeom[geom:World]
pi- : fastSimProcess_massGeom[geom:World]
proton : fastSimProcess_massGeom[geom:World]
=======================================================================
====== Electromagnetic Physics Parameters ========
=======================================================================
LPM effect enabled 1
Enable creation and use of sampling tables 0
Apply cuts on all EM processes 0
Use combined TransportationWithMsc Disabled
Use general process 1
Enable linear polarisation for gamma 0
Enable photoeffect sampling below K-shell 1
Enable sampling of quantum entanglement 0
X-section factor for integral approach 0.8
Min kinetic energy for tables 100 eV
Max kinetic energy for tables 100 TeV
Number of bins per decade of a table 7
Verbose level 1
Verbose level for worker thread 0
Bremsstrahlung energy threshold above which
primary e+- is added to the list of secondary 100 TeV
Bremsstrahlung energy threshold above which primary
muon/hadron is added to the list of secondary 100 TeV
Positron annihilation at rest model SimplePositronium
Enable 3 gamma annihilation on fly 0
Lowest triplet kinetic energy 1 MeV
Enable sampling of gamma linear polarisation 0
5D gamma conversion model type 0
5D gamma conversion model on isolated ion 0
Use Ricardo-Gerardo pair production model 0
Livermore data directory epics_2017
=======================================================================
====== Ionisation Parameters ========
=======================================================================
Step function for e+- (0.2, 1 mm)
Step function for muons/hadrons (0.2, 0.1 mm)
Step function for light ions (0.2, 0.1 mm)
Step function for general ions (0.2, 0.1 mm)
Lowest e+e- kinetic energy 1 keV
Lowest muon/hadron kinetic energy 1 keV
Use ICRU90 data 0
Fluctuations of dE/dx are enabled 1
Type of fluctuation model for leptons and hadrons Urban
Use built-in Birks satuaration 0
Build CSDA range enabled 0
Use cut as a final range enabled 0
Enable angular generator interface 0
Max kinetic energy for CSDA tables 1 GeV
Max kinetic energy for NIEL computation 0 eV
Linear loss limit 0.01
Read data from file for e+e- pair production by mu 0
=======================================================================
====== Multiple Scattering Parameters ========
=======================================================================
Type of msc step limit algorithm for e+- 1
Type of msc step limit algorithm for muons/hadrons 0
Msc lateral displacement for e+- enabled 1
Msc lateral displacement for muons and hadrons 0
Urban msc model lateral displacement alg96 1
Range factor for msc step limit for e+- 0.04
Range factor for msc step limit for muons/hadrons 0.2
Geometry factor for msc step limitation of e+- 2.5
Safety factor for msc step limit for e+- 0.6
Skin parameter for msc step limitation of e+- 1
Lambda limit for msc step limit for e+- 1 mm
Use Mott correction for e- scattering 0
Factor used for dynamic computation of angular
limit between single and multiple scattering 1
Fixed angular limit between single
and multiple scattering 3.1416 rad
Upper energy limit for e+- multiple scattering 100 MeV
Type of electron single scattering model 0
Type of nuclear form-factor 1
Screening factor 1
=======================================================================
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 150 keV, 7 bins/decade, spline: 0
LambdaPrime table from 150 keV to 100 TeV in 62 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e- XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
CoulombScat: for e- XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e+ XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
annihil: for e+ XStype:2 SubType=5 AtRestModel:Simple BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+ XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for GenericIon XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for alpha XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for anti_proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon- XStype:1 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu- XStype:1 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
-----------------------------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nKiller
-----------------------------------------------------------------------
Hadronic Processes for B-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: B-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for D-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: D-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for anti_He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-------------------------------------------------------------------------
Hadronic Processes for anti_hypertriton
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: anti_lambdaInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_proton
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for e-
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
Model: GammaNPreco: 0 eV ---> 200 MeV
Model: BertiniCascade: 199 MeV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: GammaNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: lambdaInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu+
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu-
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
Process: muMinusCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for proton
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for sigma-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: sigma-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
=======================================================================
====== Geant4 Native Pre-compound Model Parameters ========
=======================================================================
Type of pre-compound inverse x-section 1
Pre-compound model active 1
Pre-compound excitation low energy 100 keV
Pre-compound excitation high energy 30 MeV
Angular generator for pre-compound model 1
Use NeverGoBack option for pre-compound model 0
Use SoftCutOff option for pre-compound model 0
Use CEM transitions for pre-compound model 1
Use GNASH transitions for pre-compound model 0
Use HETC submodel for pre-compound model 0
=======================================================================
====== Nuclear De-excitation Module Parameters ========
=======================================================================
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy 10 eV
Min energy per nucleon for multifragmentation 200 GeV
Limit excitation energy for Fermi BreakUp 20 MeV
Level density (1/MeV) 0.075
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres 1 ns
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 1
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
### Run 0 starts.
--> Event 0 starts.
--> Event 10 starts.
--> Event 20 starts.
--> Event 30 starts.
--> Event 40 starts.
--> Event 50 starts.
--> Event 60 starts.
--> Event 70 starts.
--> Event 80 starts.
--> Event 90 starts.
--> Event 100 starts.
--> Event 110 starts.
--> Event 120 starts.
--> Event 130 starts.
--> Event 140 starts.
--> Event 150 starts.
--> Event 160 starts.
--> Event 170 starts.
--> Event 180 starts.
--> Event 190 starts.
--> Event 200 starts.
--> Event 210 starts.
--> Event 220 starts.
--> Event 230 starts.
--> Event 240 starts.
--> Event 250 starts.
--> Event 260 starts.
--> Event 270 starts.
--> Event 280 starts.
--> Event 290 starts.
--> Event 300 starts.
--> Event 310 starts.
--> Event 320 starts.
--> Event 330 starts.
--> Event 340 starts.
--> Event 350 starts.
--> Event 360 starts.
--> Event 370 starts.
--> Event 380 starts.
--> Event 390 starts.
--> Event 400 starts.
--> Event 410 starts.
--> Event 420 starts.
--> Event 430 starts.
--> Event 440 starts.
--> Event 450 starts.
--> Event 460 starts.
--> Event 470 starts.
--> Event 480 starts.
--> Event 490 starts.
--> Event 500 starts.
--> Event 510 starts.
--> Event 520 starts.
--> Event 530 starts.
--> Event 540 starts.
--> Event 550 starts.
--> Event 560 starts.
--> Event 570 starts.
--> Event 580 starts.
--> Event 590 starts.
--> Event 600 starts.
--> Event 610 starts.
--> Event 620 starts.
--> Event 630 starts.
--> Event 640 starts.
--> Event 650 starts.
--> Event 660 starts.
--> Event 670 starts.
--> Event 680 starts.
--> Event 690 starts.
--> Event 700 starts.
--> Event 710 starts.
--> Event 720 starts.
--> Event 730 starts.
--> Event 740 starts.
--> Event 750 starts.
--> Event 760 starts.
--> Event 770 starts.
--> Event 780 starts.
--> Event 790 starts.
--> Event 800 starts.
--> Event 810 starts.
--> Event 820 starts.
--> Event 830 starts.
--> Event 840 starts.
--> Event 850 starts.
--> Event 860 starts.
--> Event 870 starts.
--> Event 880 starts.
--> Event 890 starts.
--> Event 900 starts.
--> Event 910 starts.
--> Event 920 starts.
--> Event 930 starts.
--> Event 940 starts.
--> Event 950 starts.
--> Event 960 starts.
--> Event 970 starts.
--> Event 980 starts.
--> Event 990 starts.
Graphics systems deleted.
Visualization Manager deleting...
Execution terminated
User=63.440000s Real=75.771604s Sys=0.230000s
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1ActionInitialization_h
#define B1ActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Action initialization class.
class ActionInitialization : public G4VUserActionInitialization
{
public:
ActionInitialization();
~ActionInitialization() override = default;
void BuildForMaster() const override;
void Build() const override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,170 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1DetectorConstruction_h
#define B1DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "G4ios.hh"
#include "globals.hh"
#include <CLHEP/Units/SystemOfUnits.h>
#include <vector>
#include "G4Region.hh"
#include "G4PVPlacement.hh"
#include "G4ChannelingFastSimModel.hh"
#include "DetectorConstructionMessenger.hh"
class G4VPhysicalVolume;
class G4LogicalVolume;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Detector construction class to define materials and geometry.
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction();
~DetectorConstruction() override = default;
G4VPhysicalVolume* Construct() override;
void ConstructSDandField() override;
//methods to set the Crystal features
void SetCrystalMaterial(const G4String& val) {fCrystalMaterialStr = val;}
void SetCrystalSize(G4ThreeVector val) {fCrystalSize = val;}
void SetCrystalBendingAngle(G4double val) {fBendingAngle = val;}
void SetCrystalLattice(const G4String& val) {fLattice = val;}
void SetCrystalAngleX(G4double val) {fAngleX = val;}
void SetCrystalAngleY(G4double val) {fAngleY = val;}
void SetRadiationModel(G4bool val) {fActivateRadiationModel = val;}
void SetChannelingModel(G4bool val) {fActivateChannelingModel = val;}
void SetCrystallineUndulatorAmplitude(G4double val)
{fCrystallineUndulatorAmplitude = val;}
void SetCrystallineUndulatorPeriod(G4double val)
{fCrystallineUndulatorPeriod = val;}
void SetCrystallineUndulatorPhase(G4double val)
{fCrystallineUndulatorPhase = val;}
void SetPotentialPath(const G4String& path){fPotentialPath = path;}
void SetMinPhotonEnergy(G4double val) {fMinPhotonEnergy = val;}
void SetSamplingPhotonsNumber(G4int val) {fSamplingPhotonsNumber = val;}
void SetNSmallTrajectorySteps(G4int val) {fNSmallTrajectorySteps = val;}
void SetRadiationAngleFactor(G4double val) {fRadiationAngleFactor = val;}
void SetMinPhotonEnergyAddStat(G4double val) {fMinPhotonEnergyAddStat = val;}
void SetMaxPhotonEnergyAddStat(G4double val) {fMaxPhotonEnergyAddStat = val;}
void SetMultiplePhotonStatistics(G4int val) {fTimesPhotonStatistics = val;}
void SetDetectorSize(G4ThreeVector val) {fDetectorSize = val;}
void SetDetectorFrontPositionZ(G4double val) {fDetectorFrontPosZ = val;}
void SetParticleMinKinEnergy(G4double val) {fParticleMinKinEnergy = val;}
void SetProtonMinKinEnergy(G4double val) {fProtonMinKinEnergy = val;}
void SetAntiprotonMinKinEnergy(G4double val) {fAntiprotonMinKinEnergy = val;}
void SetPiPlusMinKinEnergy(G4double val) {fPiPlusMinKinEnergy = val;}
void SetPiMinusMinKinEnergy(G4double val) {fPiMinusMinKinEnergy = val;}
void SetElectronMinKinEnergy(G4double val) {fElectronMinKinEnergy = val;}
void SetPositronMinKinEnergy(G4double val) {fPositronMinKinEnergy = val;}
void SetMuPlusMinKinEnergy(G4double val) {fMuPlusMinKinEnergy = val;}
void SetMuMinusMinKinEnergy(G4double val) {fMuMinusMinKinEnergy = val;}
void SetLindhardAngles(G4double val) {fLindhardAngles = val;}
void SetLindhardAnglesProton(G4double val) {fLindhardAnglesProton = val;}
void SetLindhardAnglesAntiproton(G4double val) {fLindhardAnglesAntiproton = val;}
void SetLindhardAnglesPiPlus(G4double val) {fLindhardAnglesPiPlus = val;}
void SetLindhardAnglesPiMinus(G4double val) {fLindhardAnglesPiMinus = val;}
void SetLindhardAnglesElectron(G4double val) {fLindhardAnglesElectron = val;}
void SetLindhardAnglesPositron(G4double val) {fLindhardAnglesPositron = val;}
void SetLindhardAnglesMuPlus(G4double val) {fLindhardAnglesMuPlus = val;}
void SetLindhardAnglesMuMinus(G4double val) {fLindhardAnglesMuMinus = val;}
private:
DetectorConstructionMessenger* fMessenger;
//crystal features
G4LogicalVolume* fLogicCrystal{nullptr};
G4String fCrystalMaterialStr = "G4_Si";
G4Material* fCrystalMaterial{nullptr};
G4ThreeVector fCrystalSize;
G4double fBendingAngle = 0.;
G4String fLattice;
G4double fAngleX = 0.;
G4double fAngleY = 0.;
G4bool fActivateRadiationModel = false;
G4bool fActivateChannelingModel = true;
//Crystal undulator parameters; default 0 => no undulator
G4double fCrystallineUndulatorAmplitude = 0.;
G4double fCrystallineUndulatorPeriod = 0.;
G4double fCrystallineUndulatorPhase = 0.;
G4ThreeVector fDetectorSize;
G4double fDetectorFrontPosZ = 1*CLHEP::m;
G4String fPotentialPath = "";
G4double fMinPhotonEnergy = 1*CLHEP::MeV; //G4BaierKatkov default value
G4int fSamplingPhotonsNumber = 150; //G4BaierKatkov default value
G4int fNSmallTrajectorySteps = 10000; //G4BaierKatkov default value
G4double fRadiationAngleFactor = 4; //G4BaierKatkov default value
G4double fMinPhotonEnergyAddStat = 1*CLHEP::MeV;
G4double fMaxPhotonEnergyAddStat = 20*CLHEP::MeV;
G4int fTimesPhotonStatistics = 1;
G4double fParticleMinKinEnergy = 200.*CLHEP::MeV;//G4ChannelingFastSimModel default value
G4double fProtonMinKinEnergy = 200.*CLHEP::MeV;
G4double fAntiprotonMinKinEnergy = 200.*CLHEP::MeV;
G4double fPiPlusMinKinEnergy = 200.*CLHEP::MeV;
G4double fPiMinusMinKinEnergy = 200.*CLHEP::MeV;
G4double fElectronMinKinEnergy = 200.*CLHEP::MeV;
G4double fPositronMinKinEnergy = 200.*CLHEP::MeV;
G4double fMuPlusMinKinEnergy = 200.*CLHEP::MeV;
G4double fMuMinusMinKinEnergy = 200.*CLHEP::MeV;
G4double fLindhardAngles = 100; //G4ChannelingFastSimModel default value
G4double fLindhardAnglesProton = 100;
G4double fLindhardAnglesAntiproton = 100;
G4double fLindhardAnglesPiPlus = 100;
G4double fLindhardAnglesPiMinus = 100;
G4double fLindhardAnglesElectron = 100;
G4double fLindhardAnglesPositron = 100;
G4double fLindhardAnglesMuPlus = 100;
G4double fLindhardAnglesMuMinus = 100;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,116 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstructionMessenger.hh
/// \brief Description of the DetectorConstruction messenger class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef DetectorConstructionMessenger_h
#define DetectorConstructionMessenger_h 1
#include "G4UImessenger.hh"
#include "globals.hh"
class DetectorConstruction;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAnInteger;
class G4UIcmdWithADouble;
class G4UIcmdWithABool;
class G4UIcmdWith3VectorAndUnit;
class G4UIcmdWithAString;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Detector construction messenger class to define custom commands
/// to control the geometry and other settings.
class DetectorConstructionMessenger: public G4UImessenger
{
public:
DetectorConstructionMessenger(DetectorConstruction* mpga);
~DetectorConstructionMessenger();
void SetNewValue(G4UIcommand* command, G4String newValues) override;
private:
DetectorConstruction* fDetector{nullptr};
G4UIdirectory* fCmdDir{nullptr};
G4UIcmdWithAString* fCrystalMaterialCmd{nullptr};
G4UIcmdWith3VectorAndUnit* fCrystalSizeCmd{nullptr};
G4UIcmdWithAString* fCrystalLatticeCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fCrystalAngleXCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fCrystalAngleYCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fCrystalBendingAngleCmd{nullptr};
G4UIcmdWithABool* fRadModelCmd{nullptr};
G4UIcmdWithABool* fChannelingModelCmd{nullptr};
G4UIcmdWith3VectorAndUnit* fDetectorSizeCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fDetectorFrontPosZCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fCrystallineUndulatorAmplitudeCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fCrystallineUndulatorPeriodCmd{nullptr};
G4UIcmdWithADouble* fCrystallineUndulatorPhaseCmd{nullptr};
G4UIcmdWithAString* fPotentialPathCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fMinPhotonEnergyCmd{nullptr};
G4UIcmdWithAnInteger* fSamplingPhotonsNumberCmd{nullptr};
G4UIcmdWithAnInteger* fNSmallTrajectoryStepsCmd{nullptr};
G4UIcmdWithADouble* fRadiationAngleFactorCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fMinPhotonEnergyAddStatCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fMaxPhotonEnergyAddStatCmd{nullptr};
G4UIcmdWithAnInteger* fTimesPhotonStatisticsCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fParticleMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fProtonMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fAntiprotonMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fPiPlusMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fPiMinusMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fElectronMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fPositronMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fMuPlusMinKinEnergyCmd{nullptr};
G4UIcmdWithADoubleAndUnit* fMuMinusMinKinEnergyCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesProtonCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesAntiprotonCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesPiPlusCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesPiMinusCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesElectronCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesPositronCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesMuPlusCmd{nullptr};
G4UIcmdWithADouble* fLindhardAnglesMuMinusCmd{nullptr};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.hh
/// \brief Definition of the B1::PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1PrimaryGeneratorAction_h
#define B1PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#include "G4GeneralParticleSource.hh"
class G4ParticleGun;
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// The primary generator action class with GeneralParticleSource.
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction() override;
// method from the base class
void GeneratePrimaries(G4Event*) override;
private:
G4GeneralParticleSource* fGPS{nullptr};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file RunAction.hh
/// \brief Definition of the RunAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
class G4Run;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Run action class.
class RunAction : public G4UserRunAction
{
public:
RunAction();
~RunAction() override = default;
void BeginOfRunAction(const G4Run*) override;
void EndOfRunAction(const G4Run*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file SteppingAction.hh
/// \brief Definition of the SteppingAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1SteppingAction_h
#define B1SteppingAction_h 1
#include "G4UserSteppingAction.hh"
#include "globals.hh"
#include <CLHEP/Units/SystemOfUnits.h>
#include <iostream>
#include <vector>
class G4LogicalVolume;
class EventAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Stepping action class.
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction();
~SteppingAction() override = default;
// method from the base class
void UserSteppingAction(const G4Step*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,32 @@
# Macro file for the initialization of example ch2
# in interactive session
#
# Set some default verbose
/control/verbose 2
/control/saveHistory
/run/verbose 2
#
# Change the default number of threads (in multi-threaded mode)
#/run/numberOfThreads 4
#
#Initialize kernel
/run/initialize
#
# Initialize kernel
/run/initialize
#
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 0.07 mm
/gps/pos/sigma_y 0.2 mm
#
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 30.E-6 rad
/gps/ang/sigma_y 30.E-6 rad
#
# Visualization setting
/control/execute vis.mac
@@ -0,0 +1,109 @@
/random/setSeeds 19577794 424238336
#setting number of cores
/run/numberOfThreads 2
#crystal geometry
#change it as you want
/crystal/setCrystalSize 20. 20. 0.0305 mm
/crystal/setCrystalBendingAngle 0.905 mrad #default is 0
/crystal/setCrystalAngleX 0 mrad #default is 0
/crystal/setCrystalAngleY 0 mrad #default is 0
#crystal undulator parameters
#CAUTION: incompatible with bent crystal
#CAUTION: needs small detector size (1/gamma) and high photon statistics to observe the effect
#(see also comments in ConstructSDandField in DetectorConstruction)
#use if necessary:
#/crystal/setCrystallineUndulatorAmplitude 1 nm
#/crystal/setCrystallineUndulatorPeriod 100 um
#/crystal/setCrystallineUndulatorPhase 0.
#crystal lattice parameters
#change it according to the data available in G4CHANNELINGDATA
/crystal/setCrystalMaterial G4_Si # check G4CHANNELINGDATA dataset
/crystal/setCrystalLattice (111) # check G4CHANNELINGDATA dataset
#detector parameters
#change it as you want
/crystal/setDetectorSize 10 10 0.03 cm
/crystal/setFrontPositionZ 5973 mm
#G4ChannelingFastSimModel parameters
#change it as you want
/crystal/setChannelingModel true #switch on/off G4ChannelingFastSimModel
/crystal/setRadiationModel true #switch on/off G4BaierKatkov
#(G4ChannelingFastSimModel must be switched on)
#the pass to channeling data if different from the default:
#/crystal/setChannelingDataPath your_path
#the following can be changed or commented:
#the low energy threshold for particle to enter the G4ChannelingFastSimModel:
/crystal/setParticleMinKinEnergy 200 MeV # default value for all charged particles
#the same for specific particles (has priority vs default)
/crystal/setParticleMinKinEnergy/proton 200 MeV
/crystal/setParticleMinKinEnergy/anti_proton 200 MeV
/crystal/setParticleMinKinEnergy/pi+ 200 MeV
/crystal/setParticleMinKinEnergy/pi- 200 MeV
/crystal/setParticleMinKinEnergy/e+ 200 MeV
/crystal/setParticleMinKinEnergy/e- 200 MeV
/crystal/setParticleMinKinEnergy/mu+ 200 MeV
/crystal/setParticleMinKinEnergy/mu- 200 MeV
#the following can be changed or commented:
#high angular threshold for particle to enter the G4ChannelingFastSimModel expressed in Lindhard angles:
/crystal/setLindhardAngles 100. # default value for all charged particles
#the same for specific particles (has priority vs default)
/crystal/setLindhardAngles/proton 100.
/crystal/setLindhardAngles/anti_proton 100.
/crystal/setLindhardAngles/pi+ 100.
/crystal/setLindhardAngles/pi- 100.
/crystal/setLindhardAngles/e+ 100.
/crystal/setLindhardAngles/e- 100.
/crystal/setLindhardAngles/mu+ 100.
/crystal/setLindhardAngles/mu- 100.
#the following can be changed or commented:
#G4BaierKatkov parameters
#(see also comments in ConstructSDandField in DetectorConstruction):
/crystal/setMinPhotonEnergy 1 MeV # G4BaierKatkov default
/crystal/setSamplingPhotonsNumber 150 # G4BaierKatkov default
/crystal/setNSmallTrajectorySteps 10000 # G4BaierKatkov default
/crystal/setRadiationAngleFactor 4. # G4BaierKatkov default
#add statistics of sampling photons in G4BaierKatkov in specific energy range
#use if necessary (usually in the crystalline undulator case):
#CAUTION: this energy range must not be below minimum photon energy
#(see also comments in ConstructSDandField in DetectorConstruction)
#/crystal/AddPhotonStatistics/setMinPhotonEnergy 1 MeV
#/crystal/AddPhotonStatistics/setMaxPhotonEnergy 20 MeV
#/crystal/AddPhotonStatistics/setMultiplePhotonStatistics 10
/run/initialize
#settings
/control/verbose 0
/run/verbose 0
/tracking/verbose 0
#beam
/gps/particle e-
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 0.07 mm
/gps/pos/sigma_y 0.2 mm
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 30.E-6 rad
/gps/ang/sigma_y 30.E-6 rad
#energy distribution (constant)
/gps/ene/mono 0.855 GeV
#statistics
/run/printProgress 10
/run/beamOn 1000
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "ActionInitialization.hh"
#include "PrimaryGeneratorAction.hh"
#include "RunAction.hh"
#include "SteppingAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::ActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::BuildForMaster() const
{
SetUserAction(new RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::Build() const
{
SetUserAction(new PrimaryGeneratorAction);
SetUserAction(new RunAction);
SetUserAction(new SteppingAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,357 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "G4RunManager.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4RegionStore.hh"
#include "G4VisAttributes.hh"
#include "PrimaryGeneratorAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstruction::DetectorConstruction()
{
//instantiate the messenger
fMessenger = new DetectorConstructionMessenger(this);
//Crystal size
fCrystalSize.setX(20*CLHEP::mm);
fCrystalSize.setY(20*CLHEP::mm);
fCrystalSize.setZ(0.0305*CLHEP::mm);
//Crystal planes or axes considered
fLattice = "(111)";
//Detector size
fDetectorSize.setX(10*CLHEP::cm);
fDetectorSize.setY(10*CLHEP::cm);
fDetectorSize.setZ(0.1*CLHEP::mm);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
//Check overlap option
G4bool checkOverlaps = true;
//Materials
G4NistManager* nist = G4NistManager::Instance();
G4Material* world_mat = nist->FindOrBuildMaterial("G4_Galactic");
G4Material* silicon = nist->FindOrBuildMaterial("G4_Si");
//World
G4Box* solidWorld = new G4Box("World", 0.2*CLHEP::m, 0.2*CLHEP::m, 10.*CLHEP::m);
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, world_mat, "World");
G4VPhysicalVolume* physWorld = new G4PVPlacement
(0, // no rotation
G4ThreeVector(), // centre position
logicWorld, // its logical volume
"World", // its name
0, // its mother volume
false, // no boolean operation
0, // copy number
checkOverlaps); // overlaps checking
logicWorld->SetVisAttributes(G4VisAttributes::GetInvisible());
// --------------- Crystal ------------------------------------
//Select crystal material
fCrystalMaterial = nist->FindOrBuildMaterial(fCrystalMaterialStr);
//Crystal rotation angle (also the angle of crystal planes vs the beam)
G4RotationMatrix* crystalRotationMatrix = new G4RotationMatrix;
crystalRotationMatrix->rotateY(-fAngleX);
crystalRotationMatrix->rotateX(-fAngleY);
//Setting crystal position
G4ThreeVector posCrystal = G4ThreeVector(0., 0., fCrystalSize.z()/2.);
//crystal volume
G4Box* solidCrystal = new G4Box("Crystal",
fCrystalSize.x()/2,
fCrystalSize.y()/2,
fCrystalSize.z()/2.);
fLogicCrystal = new G4LogicalVolume(solidCrystal,
fCrystalMaterial,
"Crystal");
new G4PVPlacement(crystalRotationMatrix,
posCrystal,
fLogicCrystal,
"Crystal",
logicWorld,
false,
0,
checkOverlaps);
if (fActivateChannelingModel)
{
//crystal region (necessary for the FastSim model)
G4Region* regionCh = new G4Region("Crystal");
regionCh->AddRootLogicalVolume(fLogicCrystal);
}
//visualization attributes
G4VisAttributes* crystalVisAttribute =
new G4VisAttributes(G4Colour(1., 0., 0.));
crystalVisAttribute->SetForceSolid(true);
fLogicCrystal->SetVisAttributes(crystalVisAttribute);
//print Crystal info
G4cout << "Crystal material: " << fCrystalMaterial->GetName() << G4endl;
G4cout << "Crystal size: " << fCrystalSize.x()/CLHEP::mm
<< "x" << fCrystalSize.y()/CLHEP::mm
<< "x" << fCrystalSize.z()/CLHEP::mm << " mm3" << G4endl;
if (fActivateChannelingModel)
{
G4cout << "G4ChannelingFastSimModel activated" << G4endl;
G4cout << "Crystal bending angle: " << fBendingAngle << " rad" << G4endl;
G4cout << "Crystal Lattice: " << fLattice << G4endl;
G4cout << "Crystal angleX: " << fAngleX << " rad" << G4endl;
G4cout << "Crystal angleY: " << fAngleY << " rad" << G4endl;
G4cout << "ActivateRadiationModel: " << fActivateRadiationModel << G4endl;
if (fCrystallineUndulatorAmplitude > DBL_EPSILON &&
fCrystallineUndulatorPeriod > DBL_EPSILON) {
G4cout << "Crystalline undulator activated: " << G4endl;
G4cout << "undulator amplitude: "
<< fCrystallineUndulatorAmplitude/CLHEP::nm
<< " nm" << G4endl;
G4cout << "undulator period: "
<< fCrystallineUndulatorPeriod/CLHEP::mm
<< " mm" << G4endl;
G4cout << "undulator phase: "
<< fCrystallineUndulatorPhase
<< " rad" << G4endl;
}
G4cout << G4endl;
}
else
{
G4cout << "G4ChannelingFastSimModel is not activated" << G4endl << G4endl;
}
// --------------- Detector -----------------------------------
//Setting detector position
G4ThreeVector posDetector =
G4ThreeVector(0, 0, fDetectorFrontPosZ+fDetectorSize.z()/2.);
//particle detector volume
G4Box* detector = new G4Box("Detector",
fDetectorSize.x()/2,
fDetectorSize.y()/2,
fDetectorSize.z()/2.);
G4LogicalVolume* logicDetector = new G4LogicalVolume(detector,
silicon,
"Detector");
new G4PVPlacement(0,
posDetector,
logicDetector,
"Detector",
logicWorld,
false,
0,
checkOverlaps);
//visualization attributes
G4VisAttributes* detectorVisAttribute =
new G4VisAttributes(G4Colour(1., 0., 1., 0.3));
detectorVisAttribute->SetForceSolid(true);
logicDetector->SetVisAttributes(detectorVisAttribute);
//always return the physical World
return physWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::ConstructSDandField()
{
if (fActivateChannelingModel)
{
// --------------- fast simulation ----------------------------
//extract the region of the crystal from the store
G4RegionStore* regionStore = G4RegionStore::GetInstance();
G4Region* regionCh = regionStore->GetRegion("Crystal");
//create the channeling model for this region
G4ChannelingFastSimModel* channelingModel =
new G4ChannelingFastSimModel("ChannelingModel", regionCh);
//activate the channeling model
channelingModel->Input(fCrystalMaterial, fLattice, fPotentialPath);
//setting bending angle of the crystal planes (default is 0)
channelingModel->GetCrystalData()->SetBendingAngle(fBendingAngle, fLogicCrystal);
//setting crystalline undulator parameters
//NOTE: they are incompatible with a bent crystal
if (fCrystallineUndulatorAmplitude > DBL_EPSILON &&
fCrystallineUndulatorPeriod > DBL_EPSILON)
{
channelingModel->GetCrystalData()->SetCrystallineUndulatorParameters(
fCrystallineUndulatorAmplitude,
fCrystallineUndulatorPeriod,
fCrystallineUndulatorPhase,
fLogicCrystal);
}
/*
Set the multiple of critical channeling angles (Lindhard angles) which defines
the angular cut of the model (otherwise standard Geant4 is active):
a number too low reduces the accuracy of the model;
a number too high sometimes drastically reduces the simulation speed.
The default value is 100, while for many problems 10-20 is ok.
CAUTION: If you set this value to 1 meaning the angular cut = 1*Lindhard angle,
this will cut off the physics of overbarrier motion, still important even if
the particle is not in channeling. This will provide incorrect results.
*/
channelingModel->SetDefaultLindhardAngleNumberHighLimit(fLindhardAngles);
//you may set a particular limit for a certain particle type
//(has a priority vs default):
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesProton,"proton");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesAntiproton,
"anti_proton");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesPiPlus,"pi+");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesPiMinus,"pi-");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesPositron,"e+");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesElectron,"e-");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesMuPlus,"mu+");
channelingModel->SetLindhardAngleNumberHighLimit(fLindhardAnglesMuMinus,"mu-");
//channelingModel->SetLindhardAngleNumberHighLimit(your_value,"your_particle");
/*
Set the low kinetic energy cut for the model:
too low energy may reduce the simulation speed (sometimes drastically),
too high energy can cut off a useful physics for radiation losses.
A recommended value depends a lot on the case. Usually it should be above 100 MeV,
since below quantum channeling effects may become important, though lower energies
are not forbidden. For energies considerably above 1 GeV and a crystal thick enough
for multiphoton radiation emission,a lower energy limit of 300-500 MeV is recommended.
*/
channelingModel->SetDefaultLowKineticEnergyLimit(fParticleMinKinEnergy);
//you may set a particular limit for a certain particle type
//(has a priority vs default):
channelingModel->SetLowKineticEnergyLimit(fProtonMinKinEnergy,"proton");
channelingModel->SetLowKineticEnergyLimit(fAntiprotonMinKinEnergy,"anti_proton");
channelingModel->SetLowKineticEnergyLimit(fPiPlusMinKinEnergy,"pi+");
channelingModel->SetLowKineticEnergyLimit(fPiMinusMinKinEnergy,"pi-");
channelingModel->SetLowKineticEnergyLimit(fPositronMinKinEnergy,"e+");
channelingModel->SetLowKineticEnergyLimit(fElectronMinKinEnergy,"e-");
channelingModel->SetLowKineticEnergyLimit(fMuPlusMinKinEnergy,"mu+");
channelingModel->SetLowKineticEnergyLimit(fMuMinusMinKinEnergy,"mu-");
//channelingModel->SetLowKineticEnergyLimit(your_value,"your_particle");
/*
activate the radiation model (do it only when you want to take into account the
radiation production in an oriented crystal; it reduces simulation speed.)
*/
if (fActivateRadiationModel)
{
channelingModel->RadiationModelActivate();
G4cout << "Radiation model activated" << G4endl;
/*
Set the number of the photons used in Monte Carlo integral in Baier-Katkov:
too low number reduces the accuracy of the model;
too high number reduces the calculation speed.
In most of the cases 150 is a minimal secure number.
*/
channelingModel->GetRadiationModel()->
SetSamplingPhotonsNumber(fSamplingPhotonsNumber);
/*
Increase the statistics of sampling photons in a certain energy range.
By default it is not active! In many cases it is not necessary.
It is very useful for a soft spectrum part, when it is considerably below
the charged particle energy, in order to increase the accuracy. It is possible
to apply as many ranges as you want.
NOTE: usually important for crystalline undulator
CAUTION: insert only an integer number as a multiple of a photon statistics
and ONLY > 1 .
CAUTION: this energy range must not be beyond the range of radiation energies
(i.e. below minimum photon energy (see below)) and must not intersect another
range with an increased statistics if any.
CAUTION: this is a multiple of the statistics of sampling photons randomly get in
this energy range => make sure the total number of sampling photons is high enough
to regularly get in this energy range, otherwise the statistics will not increase.
*/
if(fTimesPhotonStatistics>1)
{channelingModel->GetRadiationModel()->
AddStatisticsInPhotonEnergyRegion(fMinPhotonEnergyAddStat,
fMaxPhotonEnergyAddStat,
fTimesPhotonStatistics);}
/*
Adjust the angular distribution of the sampling photons by
changing the multiple of the opening radiation angle 1/gamma:
the model should work correctly in the range 2-5;
too small multiple reduces the accuracy;
too high value requires more sampling photons.
*/
channelingModel->GetRadiationModel()->
SetRadiationAngleFactor(fRadiationAngleFactor);
/*
Set the minimal energy of radiated photon: generally it depends on which part
of the spectrum you are interested in:
too low number vs the charged particle energy may require more sampling photons
in a total or in a particular energy range;
too high number may reduce the accuracy in radiation energy loss.
Generally 1 MeV is a recommended value.
*/
channelingModel->GetRadiationModel()->SetMinPhotonEnergy(fMinPhotonEnergy);
/*
Set the number of trajectory steps after which the radiation probability
check (whether the probability is below or above of the threshold) is performed;
at the first iteration also the sampling photons are generated by using
the angles of this first part of the trajectory as an argument:
too higher number of steps reduces the accuracy due to considerable excess
of the single radiation probability threshold;
too low number may reduce the accuracy of the angular distribution of
sampling photons.
Generally the range between 1000-10000 steps is recommended.
*/
channelingModel->GetRadiationModel()->
SetNSmallTrajectorySteps(fNSmallTrajectorySteps);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,555 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstructionMessenger.cc
/// \brief Implementation of the DetectorConstruction messenger class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstructionMessenger.hh"
#include "DetectorConstruction.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithADouble.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAString.hh"
#include "G4RunManager.hh"
#include "G4ios.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
DetectorConstructionMessenger::DetectorConstructionMessenger(DetectorConstruction* det):
fDetector(det)
{
fCmdDir = new G4UIdirectory("/crystal/");
fCmdDir->SetGuidance("crystal Control");
fCrystalMaterialCmd = new G4UIcmdWithAString("/crystal/setCrystalMaterial",this);
fCrystalMaterialCmd->SetGuidance("Set Crystal Material");
fCrystalMaterialCmd->SetParameterName("matname",false);
fCrystalMaterialCmd->SetDefaultValue("G4_Si");
fCrystalSizeCmd = new G4UIcmdWith3VectorAndUnit("/crystal/setCrystalSize",this);
fCrystalSizeCmd->SetGuidance("Set Crystal size");
fCrystalSizeCmd->SetParameterName("dimCrX","dimCrY","dimCrZ",false);
fCrystalSizeCmd->SetUnitCategory("Length");
fCrystalSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystalLatticeCmd = new G4UIcmdWithAString("/crystal/setCrystalLattice",this);
fCrystalLatticeCmd->
SetGuidance("Set Crystal Lattice, use brackets (...) for planes and <...> for axes");
fCrystalLatticeCmd->SetParameterName("lattice",false);
fCrystalLatticeCmd->SetDefaultValue("(111)");
fCrystalAngleXCmd = new G4UIcmdWithADoubleAndUnit("/crystal/setCrystalAngleX",this);
fCrystalAngleXCmd->SetGuidance("Set crystal orientation with respect to the beam");
fCrystalAngleXCmd->SetUnitCategory("Angle");
fCrystalAngleXCmd->SetParameterName("angX",false);
fCrystalAngleXCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystalAngleYCmd = new G4UIcmdWithADoubleAndUnit("/crystal/setCrystalAngleY",this);
fCrystalAngleYCmd->SetGuidance("Set crystal orientation with respect to the beam");
fCrystalAngleYCmd->SetUnitCategory("Angle");
fCrystalAngleYCmd->SetParameterName("angY",false);
fCrystalAngleYCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystalBendingAngleCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setCrystalBendingAngle",this);
fCrystalBendingAngleCmd->SetGuidance("Set crystal bending angle");
fCrystalBendingAngleCmd->SetParameterName("bendingAngle",false);
fCrystalBendingAngleCmd->SetUnitCategory("Angle");
fCrystalBendingAngleCmd->SetRange("bendingAngle >= 0");
fCrystalBendingAngleCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystallineUndulatorAmplitudeCmd =
new G4UIcmdWithADoubleAndUnit
("/crystal/setCrystallineUndulatorAmplitude",this);
fCrystallineUndulatorAmplitudeCmd->
SetGuidance("Set crystalline undulator amplitude");
fCrystallineUndulatorAmplitudeCmd->SetUnitCategory("Length");
fCrystallineUndulatorAmplitudeCmd->
SetParameterName("CrystallineUndulatorAmplitude",false);
fCrystallineUndulatorAmplitudeCmd->
SetRange("CrystallineUndulatorAmplitude > 0");
fCrystallineUndulatorAmplitudeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystallineUndulatorPeriodCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setCrystallineUndulatorPeriod",this);
fCrystallineUndulatorPeriodCmd->
SetGuidance("Set crystalline undulator Period");
fCrystallineUndulatorPeriodCmd->SetUnitCategory("Length");
fCrystallineUndulatorPeriodCmd->
SetParameterName("CrystallineUndulatorPeriod",false);
fCrystallineUndulatorPeriodCmd->
SetRange("CrystallineUndulatorPeriod > 0");
fCrystallineUndulatorPeriodCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fCrystallineUndulatorPhaseCmd =
new G4UIcmdWithADouble("/crystal/setCrystallineUndulatorPhase",this);
fCrystallineUndulatorPhaseCmd->
SetGuidance("Set crystalline undulator phase");
fCrystallineUndulatorPhaseCmd->
SetParameterName("CrystallineUndulatorPhase",false);
fCrystallineUndulatorPhaseCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fDetectorSizeCmd = new G4UIcmdWith3VectorAndUnit("/crystal/setDetectorSize",this);
fDetectorSizeCmd->SetGuidance("Set detector size");
fDetectorSizeCmd->SetParameterName("dimDetX","dimDetY","dimDetZ",false);
fDetectorSizeCmd->SetUnitCategory("Length");
fDetectorSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fDetectorFrontPosZCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setFrontPositionZ",this);
fDetectorFrontPosZCmd->SetGuidance("Set detector front position Z");
fDetectorFrontPosZCmd->SetParameterName("frontPosDetZ",false);
fDetectorFrontPosZCmd->SetUnitCategory("Length");
fDetectorFrontPosZCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fPotentialPathCmd = new G4UIcmdWithAString("/crystal/setChannelingDataPath",this);
fPotentialPathCmd->
SetGuidance("Set the path where to find the available data "
"for the G4ChannelingFastSimModel "
"if different from G4CHANNELINGDATA");
fPotentialPathCmd->SetParameterName("channelingDataPath",false);
fPotentialPathCmd->SetDefaultValue("");
fChannelingModelCmd = new G4UIcmdWithABool("/crystal/setChannelingModel", this);
fChannelingModelCmd->SetGuidance("Activate/deactivate G4ChannelingFastSimModel");
fChannelingModelCmd->SetParameterName("ChannelingModel",true);
fChannelingModelCmd->SetDefaultValue(false);
fRadModelCmd = new G4UIcmdWithABool("/crystal/setRadiationModel", this);
fRadModelCmd->SetGuidance("Activate/deactivate G4BaierKatkov");
fRadModelCmd->SetParameterName("ActivateRadiationModel",true);
fRadModelCmd->SetDefaultValue(false);
fMinPhotonEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setMinPhotonEnergy",this);
fMinPhotonEnergyCmd->
SetGuidance("Set the low energy threshold for "
"the photons emitted in G4BaierKatkov");
fMinPhotonEnergyCmd->SetParameterName("MinPhotonEnergy",false);
fMinPhotonEnergyCmd->SetUnitCategory("Energy");
fMinPhotonEnergyCmd->SetRange("MinPhotonEnergy > 0");
fMinPhotonEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fSamplingPhotonsNumberCmd =
new G4UIcmdWithAnInteger("/crystal/setSamplingPhotonsNumber",this);
fSamplingPhotonsNumberCmd->
SetGuidance("Set SamplingPhotonsNumber in G4BaierKatkov");
fSamplingPhotonsNumberCmd->SetParameterName("SamplingPhotonsNumber",false);
fSamplingPhotonsNumberCmd->SetRange("SamplingPhotonsNumber>1");
fSamplingPhotonsNumberCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fNSmallTrajectoryStepsCmd =
new G4UIcmdWithAnInteger("/crystal/setNSmallTrajectorySteps",this);
fNSmallTrajectoryStepsCmd->
SetGuidance("Set NSmallTrajectorySteps in G4BaierKatkov");
fNSmallTrajectoryStepsCmd->SetParameterName("NSmallTrajectorySteps",false);
fNSmallTrajectoryStepsCmd->SetRange("NSmallTrajectorySteps>1");
fNSmallTrajectoryStepsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fRadiationAngleFactorCmd =
new G4UIcmdWithADouble("/crystal/setRadiationAngleFactor",this);
fRadiationAngleFactorCmd->SetGuidance("Set Radiation Angle Factor");
fRadiationAngleFactorCmd->SetParameterName("RadiationAngleFactor",false);
fRadiationAngleFactorCmd->SetRange("RadiationAngleFactor > 0");
fRadiationAngleFactorCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fMinPhotonEnergyAddStatCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/AddPhotonStatistics/setMinPhotonEnergy",this);
fMinPhotonEnergyAddStatCmd->
SetGuidance("Set the min energy in the range to increase "
"the sampling photon statistics in G4BaierKatkov");
fMinPhotonEnergyAddStatCmd->SetParameterName("addStatMinPhotonEnergy",false);
fMinPhotonEnergyAddStatCmd->SetUnitCategory("Energy");
fMinPhotonEnergyAddStatCmd->SetRange("addStatMinPhotonEnergy > 0");
fMinPhotonEnergyAddStatCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fMaxPhotonEnergyAddStatCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/AddPhotonStatistics/setMaxPhotonEnergy",this);
fMaxPhotonEnergyAddStatCmd->
SetGuidance("Set the max energy in the range to increase "
"the sampling photon statistics in G4BaierKatkov");
fMaxPhotonEnergyAddStatCmd->SetParameterName("addStatMaxPhotonEnergy",false);
fMaxPhotonEnergyAddStatCmd->SetUnitCategory("Energy");
fMaxPhotonEnergyAddStatCmd->SetRange("addStatMaxPhotonEnergy > 0");
fMaxPhotonEnergyAddStatCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fTimesPhotonStatisticsCmd =
new G4UIcmdWithAnInteger("/crystal/AddPhotonStatistics/setMultiplePhotonStatistics",
this);
fTimesPhotonStatisticsCmd->
SetGuidance("Set multiple of the sampling photon statistics in G4BaierKatkov");
fTimesPhotonStatisticsCmd->SetParameterName("timesPhotonStatistics",false);
fTimesPhotonStatisticsCmd->SetRange("timesPhotonStatistics > 1");
fTimesPhotonStatisticsCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fParticleMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy",this);
fParticleMinKinEnergyCmd->
SetGuidance("Set the low energy threshold for particle "
"to enter the G4ChannelingFastSimModel");
fParticleMinKinEnergyCmd->SetParameterName("partLEth",false);
fParticleMinKinEnergyCmd->SetUnitCategory("Energy");
fParticleMinKinEnergyCmd->SetRange("partLEth > 0");
fParticleMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fProtonMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/proton",this);
fProtonMinKinEnergyCmd->
SetGuidance("Set the low energy threshold for proton "
"to enter the G4ChannelingFastSimModel");
fProtonMinKinEnergyCmd->SetParameterName("protonLEth",false);
fProtonMinKinEnergyCmd->SetUnitCategory("Energy");
fProtonMinKinEnergyCmd->SetRange("protonLEth > 0");
fProtonMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fAntiprotonMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/anti_proton",this);
fAntiprotonMinKinEnergyCmd->SetGuidance("Set the low energy threshold for anti_proton"
" to enter the G4ChannelingFastSimModel");
fAntiprotonMinKinEnergyCmd->SetParameterName("anti_protonLEth",false);
fAntiprotonMinKinEnergyCmd->SetUnitCategory("Energy");
fAntiprotonMinKinEnergyCmd->SetRange("anti_protonLEth > 0");
fAntiprotonMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fPiPlusMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/pi+",this);
fPiPlusMinKinEnergyCmd->
SetGuidance("Set the low energy threshold for pi+ "
"to enter the G4ChannelingFastSimModel");
fPiPlusMinKinEnergyCmd->SetParameterName("piPlusLEth",false);
fPiPlusMinKinEnergyCmd->SetUnitCategory("Energy");
fPiPlusMinKinEnergyCmd->SetRange("piPlusLEth > 0");
fPiPlusMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fPiMinusMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/pi-",this);
fPiMinusMinKinEnergyCmd->SetGuidance("Set the low energy threshold for pi- "
"to enter the G4ChannelingFastSimModel");
fPiMinusMinKinEnergyCmd->SetParameterName("piMinusLEth",false);
fPiMinusMinKinEnergyCmd->SetUnitCategory("Energy");
fPiMinusMinKinEnergyCmd->SetRange("piMinusLEth > 0");
fPiMinusMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fPositronMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/e+",this);
fPositronMinKinEnergyCmd->SetGuidance("Set the low energy threshold for e+ "
"to enter the G4ChannelingFastSimModel");
fPositronMinKinEnergyCmd->SetParameterName("ePlusLEth",false);
fPositronMinKinEnergyCmd->SetUnitCategory("Energy");
fPositronMinKinEnergyCmd->SetRange("ePlusLEth > 0");
fPositronMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fElectronMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/e-",this);
fElectronMinKinEnergyCmd->SetGuidance("Set the low energy threshold for e- "
"to enter the G4ChannelingFastSimModel");
fElectronMinKinEnergyCmd->SetParameterName("eMinusLEth",false);
fElectronMinKinEnergyCmd->SetUnitCategory("Energy");
fElectronMinKinEnergyCmd->SetRange("eMinusLEth > 0");
fElectronMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fMuPlusMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/mu+",this);
fMuPlusMinKinEnergyCmd->SetGuidance("Set the low energy threshold for mu+ "
"to enter the G4ChannelingFastSimModel");
fMuPlusMinKinEnergyCmd->SetParameterName("muPlusLEth",false);
fMuPlusMinKinEnergyCmd->SetUnitCategory("Energy");
fMuPlusMinKinEnergyCmd->SetRange("muPlusLEth > 0");
fMuPlusMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fMuMinusMinKinEnergyCmd =
new G4UIcmdWithADoubleAndUnit("/crystal/setParticleMinKinEnergy/mu-",this);
fMuMinusMinKinEnergyCmd->SetGuidance("Set the low energy threshold for mu- "
"to enter the G4ChannelingFastSimModel");
fMuMinusMinKinEnergyCmd->SetParameterName("muMinusLEth",false);
fMuMinusMinKinEnergyCmd->SetUnitCategory("Energy");
fMuMinusMinKinEnergyCmd->SetRange("muMinusLEth > 0");
fMuMinusMinKinEnergyCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesCmd = new G4UIcmdWithADouble("/crystal/setLindhardAngles",this);
fLindhardAnglesCmd->
SetGuidance("Set high angular threshold for particle to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesCmd->SetParameterName("LindhardAngles",false);
fLindhardAnglesCmd->SetRange("LindhardAngles >= 0");
fLindhardAnglesCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesProtonCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/proton",this);
fLindhardAnglesProtonCmd->
SetGuidance("Set high angular threshold for proton to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesProtonCmd->SetParameterName("LindhardAnglesProton",false);
fLindhardAnglesProtonCmd->SetRange("LindhardAnglesProton >= 0");
fLindhardAnglesProtonCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesAntiprotonCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/anti_proton",this);
fLindhardAnglesAntiprotonCmd->
SetGuidance("Set high angular threshold for anti_proton to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesAntiprotonCmd->SetParameterName("LindhardAnglesAnti_proton",false);
fLindhardAnglesAntiprotonCmd->SetRange("LindhardAnglesAnti_proton >= 0");
fLindhardAnglesAntiprotonCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesPiPlusCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/pi+",this);
fLindhardAnglesPiPlusCmd->
SetGuidance("Set high angular threshold for pi+ to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesPiPlusCmd->SetParameterName("LindhardAnglesPiPlus",false);
fLindhardAnglesPiPlusCmd->SetRange("LindhardAnglesPiPlus >= 0");
fLindhardAnglesPiPlusCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesPiMinusCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/pi-",this);
fLindhardAnglesPiMinusCmd->
SetGuidance("Set high angular threshold for pi- to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesPiMinusCmd->SetParameterName("LindhardAnglesPiMinus",false);
fLindhardAnglesPiMinusCmd->SetRange("LindhardAnglesPiMinus >= 0");
fLindhardAnglesPiMinusCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesPositronCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/e+",this);
fLindhardAnglesPositronCmd->
SetGuidance("Set high angular threshold for e+ to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesPositronCmd->SetParameterName("LindhardAnglesPositron",false);
fLindhardAnglesPositronCmd->SetRange("LindhardAnglesPositron >= 0");
fLindhardAnglesPositronCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesElectronCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/e-",this);
fLindhardAnglesElectronCmd->
SetGuidance("Set high angular threshold for e- to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesElectronCmd->SetParameterName("LindhardAnglesElectron",false);
fLindhardAnglesElectronCmd->SetRange("LindhardAnglesElectron >= 0");
fLindhardAnglesElectronCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesMuPlusCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/mu+",this);
fLindhardAnglesMuPlusCmd->
SetGuidance("Set high angular threshold for mu+ to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesMuPlusCmd->SetParameterName("LindhardAnglesMuPlus",false);
fLindhardAnglesMuPlusCmd->SetRange("LindhardAnglesMuPlus >= 0");
fLindhardAnglesMuPlusCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
fLindhardAnglesMuMinusCmd =
new G4UIcmdWithADouble("/crystal/setLindhardAngles/mu-",this);
fLindhardAnglesMuMinusCmd->
SetGuidance("Set high angular threshold for mu- to enter "
"the G4ChannelingFastSimModel expressed in Lindhard angles");
fLindhardAnglesMuMinusCmd->SetParameterName("LindhardAnglesMuMinus",false);
fLindhardAnglesMuMinusCmd->SetRange("LindhardAnglesMuMinus >= 0");
fLindhardAnglesMuMinusCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
DetectorConstructionMessenger::~DetectorConstructionMessenger()
{
delete fCmdDir;
delete fCrystalMaterialCmd;
delete fCrystalSizeCmd;
delete fCrystalLatticeCmd;
delete fCrystalAngleXCmd;
delete fCrystalAngleYCmd;
delete fCrystalBendingAngleCmd;
delete fRadModelCmd;
delete fChannelingModelCmd;
delete fCrystallineUndulatorAmplitudeCmd;
delete fCrystallineUndulatorPeriodCmd;
delete fCrystallineUndulatorPhaseCmd;
delete fDetectorSizeCmd;
delete fDetectorFrontPosZCmd;
delete fPotentialPathCmd;
delete fMinPhotonEnergyCmd;
delete fSamplingPhotonsNumberCmd;
delete fNSmallTrajectoryStepsCmd;
delete fRadiationAngleFactorCmd;
delete fMinPhotonEnergyAddStatCmd;
delete fMaxPhotonEnergyAddStatCmd;
delete fTimesPhotonStatisticsCmd;
delete fParticleMinKinEnergyCmd;
delete fProtonMinKinEnergyCmd;
delete fAntiprotonMinKinEnergyCmd;
delete fPiPlusMinKinEnergyCmd;
delete fPiMinusMinKinEnergyCmd;
delete fElectronMinKinEnergyCmd;
delete fPositronMinKinEnergyCmd;
delete fMuPlusMinKinEnergyCmd;
delete fMuMinusMinKinEnergyCmd;
delete fLindhardAnglesCmd;
delete fLindhardAnglesProtonCmd;
delete fLindhardAnglesAntiprotonCmd;
delete fLindhardAnglesPiPlusCmd;
delete fLindhardAnglesPiMinusCmd;
delete fLindhardAnglesElectronCmd;
delete fLindhardAnglesPositronCmd;
delete fLindhardAnglesMuPlusCmd;
delete fLindhardAnglesMuMinusCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void DetectorConstructionMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
{
if (command == fCrystalMaterialCmd)
{fDetector->SetCrystalMaterial(newValue);}
if (command == fCrystalSizeCmd)
{fDetector->SetCrystalSize(fCrystalSizeCmd->GetNew3VectorValue(newValue));}
if (command == fCrystalLatticeCmd)
{fDetector->SetCrystalLattice(newValue);}
if (command == fCrystalAngleXCmd)
{fDetector->SetCrystalAngleX(fCrystalAngleXCmd->GetNewDoubleValue(newValue));}
if (command == fCrystalAngleYCmd)
{fDetector->SetCrystalAngleY(fCrystalAngleYCmd->GetNewDoubleValue(newValue));}
if (command == fCrystalBendingAngleCmd)
{fDetector->SetCrystalBendingAngle(
fCrystalBendingAngleCmd->GetNewDoubleValue(newValue));}
if (command == fRadModelCmd)
{fDetector->SetRadiationModel(fRadModelCmd->GetNewBoolValue(newValue));}
if (command == fChannelingModelCmd)
{fDetector->SetChannelingModel(fChannelingModelCmd->GetNewBoolValue(newValue));}
if (command == fCrystallineUndulatorAmplitudeCmd)
{fDetector->SetCrystallineUndulatorAmplitude
(fCrystallineUndulatorAmplitudeCmd->GetNewDoubleValue(newValue));}
if (command == fCrystallineUndulatorPeriodCmd)
{fDetector->SetCrystallineUndulatorPeriod
(fCrystallineUndulatorPeriodCmd->GetNewDoubleValue(newValue));}
if (command == fCrystallineUndulatorPhaseCmd)
{fDetector->SetCrystallineUndulatorPhase
(fCrystallineUndulatorPhaseCmd->GetNewDoubleValue(newValue));}
if (command == fDetectorSizeCmd)
{fDetector->SetDetectorSize(fDetectorSizeCmd->GetNew3VectorValue(newValue));}
if (command == fDetectorFrontPosZCmd)
{fDetector->SetDetectorFrontPositionZ(
fDetectorFrontPosZCmd->GetNewDoubleValue(newValue));}
if (command == fPotentialPathCmd)
{fDetector->SetPotentialPath(newValue);}
if (command == fMinPhotonEnergyCmd)
{fDetector->SetMinPhotonEnergy(
fMinPhotonEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fSamplingPhotonsNumberCmd)
{fDetector->SetSamplingPhotonsNumber(
fSamplingPhotonsNumberCmd->GetNewIntValue(newValue));}
if (command == fNSmallTrajectoryStepsCmd)
{fDetector->SetNSmallTrajectorySteps(
fNSmallTrajectoryStepsCmd->GetNewIntValue(newValue));}
if (command == fRadiationAngleFactorCmd)
{fDetector->SetRadiationAngleFactor(
fRadiationAngleFactorCmd->GetNewDoubleValue(newValue));}
if (command == fMinPhotonEnergyAddStatCmd)
{fDetector->SetMinPhotonEnergyAddStat(
fMinPhotonEnergyAddStatCmd->GetNewDoubleValue(newValue));}
if (command == fMaxPhotonEnergyAddStatCmd)
{fDetector->SetMaxPhotonEnergyAddStat(
fMaxPhotonEnergyAddStatCmd->GetNewDoubleValue(newValue));}
if (command == fTimesPhotonStatisticsCmd)
{fDetector->SetMultiplePhotonStatistics(
fTimesPhotonStatisticsCmd->GetNewIntValue(newValue));}
if (command == fParticleMinKinEnergyCmd)
{fDetector->SetParticleMinKinEnergy(
fParticleMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fProtonMinKinEnergyCmd)
{fDetector->SetProtonMinKinEnergy(
fProtonMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fAntiprotonMinKinEnergyCmd)
{fDetector->SetAntiprotonMinKinEnergy(
fAntiprotonMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fPiPlusMinKinEnergyCmd)
{fDetector->SetPiPlusMinKinEnergy(
fPiPlusMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fPiMinusMinKinEnergyCmd)
{fDetector->SetPiMinusMinKinEnergy(
fPiMinusMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fElectronMinKinEnergyCmd)
{fDetector->SetElectronMinKinEnergy(
fElectronMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fPositronMinKinEnergyCmd)
{fDetector->SetPositronMinKinEnergy(
fPositronMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fMuPlusMinKinEnergyCmd)
{fDetector->SetMuPlusMinKinEnergy(
fMuPlusMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fMuMinusMinKinEnergyCmd)
{fDetector->SetMuMinusMinKinEnergy(
fMuMinusMinKinEnergyCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesCmd)
{fDetector->SetLindhardAngles(
fLindhardAnglesCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesProtonCmd)
{fDetector->SetLindhardAnglesProton(
fLindhardAnglesProtonCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesAntiprotonCmd)
{fDetector->SetLindhardAnglesAntiproton(
fLindhardAnglesAntiprotonCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesPiPlusCmd)
{fDetector->SetLindhardAnglesPiPlus(
fLindhardAnglesPiPlusCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesPiMinusCmd)
{fDetector->SetLindhardAnglesPiMinus(
fLindhardAnglesPiMinusCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesElectronCmd)
{fDetector->SetLindhardAnglesElectron(
fLindhardAnglesElectronCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesPositronCmd)
{fDetector->SetLindhardAnglesPositron(
fLindhardAnglesPositronCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesMuPlusCmd)
{fDetector->SetLindhardAnglesMuPlus(
fLindhardAnglesMuPlusCmd->GetNewDoubleValue(newValue));}
if (command == fLindhardAnglesMuMinusCmd)
{fDetector->SetLindhardAnglesMuMinus(
fLindhardAnglesMuMinusCmd->GetNewDoubleValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.cc
/// \brief Implementation of the PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PrimaryGeneratorAction.hh"
#include "G4Event.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
fGPS = new G4GeneralParticleSource();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fGPS;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
fGPS->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,92 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file RunAction.cc
/// \brief Implementation of the RunAction class
#include "RunAction.hh"
#include "G4AnalysisManager.hh"
#include "G4RunManager.hh"
#include "G4Run.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction()
: G4UserRunAction()
{
//using analysis manager for output
auto analysisManager = G4AnalysisManager::Instance();
#ifdef G4MULTITHREADED
analysisManager->SetNtupleMerging(true);
#else
analysisManager->SetNtupleMerging(false);
#endif
//Creating the ntuple to score the deflection of particles and
//the emitted radiation
G4String nTupleName[3] =
{"crystal", "detector", "detector_photons"};
for(G4int i=0; i<3; i++)
{
analysisManager->CreateNtuple(nTupleName[i],nTupleName[i]);
analysisManager->CreateNtupleIColumn("eventID");
analysisManager->CreateNtupleSColumn("volume");
analysisManager->CreateNtupleDColumn("x");
analysisManager->CreateNtupleDColumn("y");
analysisManager->CreateNtupleDColumn("angle_x");
analysisManager->CreateNtupleDColumn("angle_y");
analysisManager->CreateNtupleDColumn("Ekin");
analysisManager->CreateNtupleSColumn("particle");
analysisManager->CreateNtupleIColumn("particleID");
analysisManager->CreateNtupleIColumn("parentID");
analysisManager->FinishNtuple();
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::BeginOfRunAction(const G4Run*)
{
//opening output file
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4String fileName = "results.root";
analysisManager->OpenFile(fileName);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::EndOfRunAction(const G4Run*)
{
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,138 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file SteppingAction.cc
/// \brief Implementation of the SteppingAction class
#include "SteppingAction.hh"
#include "DetectorConstruction.hh"
#include "G4Step.hh"
#include "G4Event.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include "G4AnalysisManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
SteppingAction::SteppingAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void SteppingAction::UserSteppingAction(const G4Step* step)
{
G4String volumeName = step->GetPreStepPoint()->GetTouchableHandle()
->GetVolume()->GetName();
//if a particle enters the detector volume
if (step->GetPreStepPoint()-> GetStepStatus()==G4StepStatus::fGeomBoundary&&
(volumeName=="Crystal"||volumeName=="Detector"))
{
//coordinates
G4double x0 = step->GetPreStepPoint()->GetPosition().getX()/CLHEP::mm;
G4double y0 = step->GetPreStepPoint()->GetPosition().getY()/CLHEP::mm;
//angles
G4ThreeVector momentumDirection =
step->GetPreStepPoint()->GetMomentumDirection();
G4double angle_x =
std::atan(momentumDirection.getX()/momentumDirection.getZ());
G4double angle_y =
std::atan(momentumDirection.getY()/momentumDirection.getZ());
if (momentumDirection.getZ() < 0)
{
if (momentumDirection.getX() > 0)
{
angle_x += CLHEP::pi;
}
else
{
angle_x -= CLHEP::pi;
}
if (momentumDirection.getY() > 0)
{
angle_y += CLHEP::pi;
}
else
{
angle_y -= CLHEP::pi;
}
}
//kinetic energy
G4double ekin = step->GetPreStepPoint()->GetKineticEnergy()/CLHEP::MeV;
//particle name, ID and parentID
G4String particleName =
step->GetTrack()->GetDefinition()->GetParticleName();
G4int particleID = step->GetTrack()->GetTrackID();
G4int parentID = step->GetTrack()->GetParentID();
//event ID
G4int eventID =
G4RunManager::GetRunManager()->GetCurrentEvent()->GetEventID();
//ntuple index
G4int iTuple = 0;
if(volumeName=="Crystal")
{
iTuple = 0;
}
else if(volumeName=="Detector")
{
if(particleName=="gamma")
{
iTuple = 2;
}
else
{
iTuple = 1;
}
}
//saving result to root
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
analysisManager->FillNtupleIColumn(iTuple,0,eventID);
analysisManager->FillNtupleSColumn(iTuple,1,volumeName);
analysisManager->FillNtupleDColumn(iTuple,2,x0);
analysisManager->FillNtupleDColumn(iTuple,3,y0);
analysisManager->FillNtupleDColumn(iTuple,4,angle_x);
analysisManager->FillNtupleDColumn(iTuple,5,angle_y);
analysisManager->FillNtupleDColumn(iTuple,6,ekin);
analysisManager->FillNtupleSColumn(iTuple,7,particleName);
analysisManager->FillNtupleIColumn(iTuple,8,particleID);
analysisManager->FillNtupleIColumn(iTuple,9,parentID);
analysisManager->AddNtupleRow(iTuple);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//}
@@ -0,0 +1,69 @@
#Macro for the visualization
#Create an empty scene
/vis/scene/create
#Create a scene handler for a specific graphics system
/vis/open OGL
#/vis/open DAWNFILE
#/vis/open VRML2FILE
#Disable auto refresh and quieten vis messages whilst scene and
#trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#Draw the scene
/vis/drawVolume
/vis/viewer/flush
#Set the camera
/vis/viewer/reset
/vis/viewer/set/viewpointThetaPhi 135. 45. deg
/vis/viewer/zoom 2
#Specify style (surface, wireframe, auxiliary edges,...)
/vis/viewer/set/style wireframe
/vis/viewer/set/lineSegmentsPerCircle 100
#Geometry
#/vis/geometry/set/lineWidth all 1 3
#Decoration
#Axes
/vis/set/lineWidth 3
#/vis/scene/add/axes 0 0 0 1.0 m #Simple axes: x=red, y=green, z=blue.
#Name
#/vis/set/textColour red
#/vis/set/textLayout right
#/vis/scene/add/text2D 0.8 -0.85 24 ! ! ch2
#Frame
#/vis/set/colour red
#/vis/set/lineWidth 2
#/vis/scene/add/frame #Simple frame around the view
#/vis/set/colour #Revert to default colour (white)
#/vis/set/lineWidth #Revert to default line width (1.)
#Commands for the drawing the tracks
/vis/scene/add/eventID #Drawn at end of event
/tracking/storeTrajectory 0 #(if too many tracks cause core dumped => storeTrajectory 0)
/vis/scene/endOfEventAction accumulate
/vis/scene/add/trajectories smooth rich
#/vis/modeling/trajectories/create/drawByParticleID
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
#Draw hits at end of event:
/vis/scene/add/hits
#Geometry test (it can cause a "core dumped")
/geometry/navigator/reset
/geometry/test/run
#Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
@@ -0,0 +1,74 @@
///\file "exoticphysics/channeling/ch3/.README.txt"
///\brief Example ch3 README page
/*! \page Examplech3 Example ch3
\author Alexei Sytov - INFN Ferrara Division (Italy) \n
sytov@fe.infn.it
\section ch3_s1 INTRODUCTION
Example ch3 demonstrates the minimum requirements necessary to integrate the
G4CoherentPairProduction process into a project, along with the G4ChannelingFastSimModel
and G4BaierKatkov models, to simulate the physics of electromagnetic showers in
an oriented crystal.
The key concept is the acceleration of electromagnetic processes (both radiation and
pair production) in an oriented crystal, which can significantly reduce the effective
radiation length [1,2]. Potential applications include electron/positron sources for
accelerator experiments, as well as crystalline oriented calorimeters for collider and
space applications [1,2].
This example serves as a guideline for users on how to add this physics
to their existing Geant4 projects. It includes the minimum necessary options
to incorporate this physics. Specifically, it requires registering
G4FastSimulationPhysics and G4CoherentPairProductionPhysics in the main routine and
adding a few lines of code in DetectorConstruction.
All of this physics does not depend on the physics list. In particular, the
process G4CoherentPairProduction simulates only coherent part of pair production in
the crystal volume, while the incoherent one should be simulated with
standard Geant4 processes.
\section ch3_s2 DESCRIPTION
The example simulates high energy photon interaction (typically above 10 GeV) with
an oriented W crystal with <111> crystal axes aligned along the photon beam direction.
The structure of this example is very similar to the example ch1.
ch3 includes a straight W crystal and a detector positioned behind it.
The incoming photon beam is set up in macro run.mac.
One can also use the Geant4 GUI by launching the code without specifying a macro file.
In this case, the visualization setup is automatically loaded through the vis.mac and
init_vis.mac macro files. The initial beam distribution in this setup will be identical
to that in run.mac.
The example does not include any input of the model or geometry parameters
from the macro to keep it as straightforward as possible. The output is recorded
into the file results.root. It consists of the spectrums of e-, e+
and gamma arriving to the detector. To build these plots, one has to
open this file in root and use
\verbatim
Spectrum_electrons->Draw()
\endverbatim
\verbatim
Spectrum_positrons->Draw()
\endverbatim
and
\verbatim
Spectrum_gamma->Draw()
\endverbatim
for e-, e+ and gamma, respectively.
\section ch3_s3 REFERENCES
-# V. N. Baier, V. M. Katkov, V. M. Strakhovenko. <a href="https://www.worldscientific.com/worldscibooks/10.1142/2216?srsltid=AfmBOopiXOyx7OWz8aPSFSC5kIKSJQs6wGF512V05177LJ_xX3mDfA7s#t=aboutBook">Electromagnetic Processes
at High Energies in Oriented Single Crystals (World Scientific, Singapore, 1998).</a>
-# L. Bandiera, V.V. Tikhomirov et al. <a href="https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.121.021603">Phys. Rev. Lett. 121, 021603 (2018).</a>
*/
@@ -0,0 +1,55 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 3.16...3.21)
project(ch3)
#----------------------------------------------------------------------------
# Find Geant4 package, activating all available UI and Vis drivers by default
# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
# to build a batch mode only executable
#
option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
if(WITH_GEANT4_UIVIS)
find_package(Geant4 REQUIRED ui_all vis_all)
else()
find_package(Geant4 REQUIRED)
endif()
#----------------------------------------------------------------------------
# Setup Geant4 include directories and compile definitions
#
include(${Geant4_USE_FILE})
#----------------------------------------------------------------------------
# Copy all scripts to the build directory, i.e. the directory in which we
# build ch3. This is so that we can run the executable directly because it
# relies on these scripts being in the current working directory.
#
set(TESTch3_SCRIPTS
init_vis.mac
vis.mac
run.mac
)
foreach(_script ${TESTch3_SCRIPTS})
configure_file(
${PROJECT_SOURCE_DIR}/${_script}
${PROJECT_BINARY_DIR}/${_script}
COPYONLY
)
endforeach()
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
# Locate sources and headers for this project
file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
#----------------------------------------------------------------------------
# Add the executable, and link it to the Geant4 libraries
#
add_executable(ch3 ch3.cc ${sources} ${headers})
target_include_directories(ch3 PRIVATE include)
target_link_libraries(ch3 PRIVATE ${Geant4_LIBRARIES})
@@ -0,0 +1,8 @@
# Category ch3 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!
## 2024-10-30 Alexei Sytov (ch3-V11-02-00)
- First implementation
@@ -0,0 +1,59 @@
-------------------------------------------------------------------
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
Example ch3
-----------
A. Sytov
INFN Ferrara Division, sytov@fe.infn.it
INTRODUCTION
Example ch3 demonstrates the minimum requirements necessary to integrate the
G4CoherentPairProduction process into a project, along with the G4ChannelingFastSimModel
and G4BaierKatkov models, to simulate the physics of electromagnetic showers in
an oriented crystal.
The key concept is the acceleration of electromagnetic processes (both radiation and
pair production) in an oriented crystal, which can significantly reduce the effective
radiation length [1,2]. Potential applications include electron/positron sources for
accelerator experiments, as well as crystalline oriented calorimeters for collider and
space applications [1,2].
This example serves as a guideline for users on how to add this physics
to their existing Geant4 projects. It includes the minimum necessary options
to incorporate this physics. Specifically, it requires registering
G4FastSimulationPhysics and G4CoherentPairProductionPhysics in the main routine and
adding a few lines of code in DetectorConstruction.
All of this physics does not depend on the physics list. In particular, the
process G4CoherentPairProduction simulates only coherent part of pair production in
the crystal volume, while the incoherent one should be simulated with
standard Geant4 processes.
DESCRIPTION
The example simulates high energy photon interaction (typically above 10 GeV) with
an oriented W crystal with <111> crystal axes aligned along the photon beam direction.
The structure of this example is very similar to the example ch1.
ch3 includes a straight W crystal and a detector positioned behind it.
The incoming photon beam is set up in macro run.mac.
One can also use the Geant4 GUI by launching the code without specifying a macro file.
In this case, the visualization setup is automatically loaded through the vis.mac and
init_vis.mac macro files. The initial beam distribution in this setup will be identical
to that in run.mac.
The example does not include any input of the model or geometry parameters
from the macro to keep it as straightforward as possible. The output is recorded
into the file results.root. It consists of the spectrums of e-, e+
and gamma arriving to the detector. To build these plots, one has to
open this file in root and use Spectrum_electrons->Draw(), Spectrum_positrons->Draw()
and Spectrum_gamma->Draw() for e-, e+ and gamma, respectively.
REFERENCES
[1] V. N. Baier, V. M. Katkov, V. M. Strakhovenko, Electromagnetic Processes
at High Energies in Oriented Single Crystals (World Scientific, Singapore, 1998).
[2] L. Bandiera, V.V. Tikhomirov et al. Phys. Rev. Lett. 121, 021603 (2018).
@@ -0,0 +1,142 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file ch3.cc
/// \brief Main program of the ch3 example
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "ActionInitialization.hh"
#include "G4RunManagerFactory.hh"
#include "G4SteppingVerbose.hh"
#include "G4UImanager.hh"
#include "FTFP_BERT.hh"
#include "G4FastSimulationPhysics.hh"
#include "G4CoherentPairProductionPhysics.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include "Randomize.hh"
#include "G4Timer.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
int main(int argc,char** argv)
{
// Get current time
G4Timer* theTimer = new G4Timer();
theTimer->Start();
// Choose the Random engine
G4Random::setTheEngine(new CLHEP::RanecuEngine);
CLHEP::HepRandom::setTheSeed(0.);
//use G4SteppingVerboseWithUnits
G4int precision = 4;
G4SteppingVerbose::UseBestUnit(precision);
// Detect interactive mode (if no arguments) and define UI session
G4UIExecutive* ui = nullptr;
if ( argc == 1 ) { ui = new G4UIExecutive(argc, argv); }
// Construct the default run manager
auto* runManager =
G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
// Set mandatory initialization classes
//
// Detector construction
runManager->SetUserInitialization(new DetectorConstruction());
// Physics list
G4VModularPhysicsList* physicsList = new FTFP_BERT;
// -- Create helper tool, used to activate the fast simulation:
G4FastSimulationPhysics* fastSimulationPhysics = new G4FastSimulationPhysics();
fastSimulationPhysics->BeVerbose();
// -- activation of fast simulation for particles having fast simulation models
fastSimulationPhysics->ActivateFastSimulation("e-");
fastSimulationPhysics->ActivateFastSimulation("e+");
// -- Attach the fast simulation physics constructor to the physics list:
physicsList->RegisterPhysics( fastSimulationPhysics );
// Create coherent pair production physics
G4CoherentPairProductionPhysics* coherentPairProductionPhysics =
new G4CoherentPairProductionPhysics();
// CAUTION: using default for channeling model name "ChannelingModel" and
// the region name "Crystal" (see DetectorConstruction).
// Register coherentPairProductionPhysics to the physics list:
physicsList->RegisterPhysics(coherentPairProductionPhysics);
physicsList->SetVerboseLevel(1);
runManager->SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new ActionInitialization());
// Initialize visualization
G4VisManager* visManager = new G4VisExecutive;
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
// G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
// Process macro or start UI session
if ( ! ui ) {
// batch mode
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager->ApplyCommand(command+fileName);
}
else {
// interactive mode
UImanager->ApplyCommand("/control/execute init_vis.mac");
ui->SessionStart();
delete ui;
}
// Job termination
// Free the store: user actions, physics_list and detector_description are
// owned and deleted by the run manager, so they should not be deleted
// in the main() program !
delete visManager;
delete runManager;
theTimer->Stop();
G4cout << "Execution terminated" << G4endl;
G4cout << (*theTimer) << G4endl;
delete theTimer;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -0,0 +1,932 @@
Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Forcing G4RunManager type...
############################################
!!! WARNING - FPE detection is activated !!!
############################################
################################
!!! G4Backtrace is activated !!!
################################
**************************************************************
Geant4 version Name: geant4-11-03-ref-00 (6-December-2024)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
: NIM A 835 (2016), 186-225
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
You have successfully registered the following graphics systems.
Registered graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
TOOLSSG_OFFSCREEN (TSG_OFFSCREEN, TSG_FILE)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Qt3D (Qt3D)
TOOLSSG_X11_GLES (TSG_X11_GLES, TSGX11, TSG_XT_GLES_FALLBACK)
TOOLSSG_X11_ZB (TSG_X11_ZB, TSGX11ZB)
TOOLSSG_XT_GLES (TSG_XT_GLES, TSGXt, TSG_QT_GLES_FALLBACK)
TOOLSSG_XT_ZB (TSG_XT_ZB, TSGXtZB)
TOOLSSG_QT_GLES (TSG_QT_GLES, TSGQt, TSG)
TOOLSSG_QT_ZB (TSG_QT_ZB, TSGQtZB)
You may choose a graphics system (driver) with a parameter of
the command "/vis/open" or "/vis/sceneHandler/create",
or you may omit the driver parameter and choose at run time:
- by argument in the construction of G4VisExecutive
- by environment variable "G4VIS_DEFAULT_DRIVER"
- by entry in "~/.g4session"
- by build flags.
- Note: This feature is not allowed in batch mode.
For further information see "examples/basic/B1/exampleB1.cc"
and "vis.mac".
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered models:
None
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
Registered filters:
None
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
End of Event User Vis Actions: none
End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
*** /run/numberOfThreads command is issued in sequential mode.
Command is ignored.
Checking overlaps for volume Crystal:0 (G4Box) ... OK!
Crystal size: 10 10 0.1 mm3
Crystal angleX: 0 rad
Checking overlaps for volume Detector:0 (G4Box) ... OK!
=======================================================================
====== Crystal lattice data ========
=======================================================================
Crystal material: W
Crystal axes: <111>
G4BaierKatkov model is activated.
Radiation model activated
hInelastic FTFP_BERT : threshold between BERT and FTFP is over the interval
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
e+ : fastSimProcess_massGeom[geom:World]
e- : fastSimProcess_massGeom[geom:World]
G4CoherentPairProductionPhysics::ConstructProcess
=======================================================================
====== Electromagnetic Physics Parameters ========
=======================================================================
LPM effect enabled 1
Enable creation and use of sampling tables 0
Apply cuts on all EM processes 0
Use combined TransportationWithMsc Disabled
Use general process 1
Enable linear polarisation for gamma 0
Enable photoeffect sampling below K-shell 1
Enable sampling of quantum entanglement 0
X-section factor for integral approach 0.8
Min kinetic energy for tables 100 eV
Max kinetic energy for tables 100 TeV
Number of bins per decade of a table 7
Verbose level 1
Verbose level for worker thread 0
Bremsstrahlung energy threshold above which
primary e+- is added to the list of secondary 100 TeV
Bremsstrahlung energy threshold above which primary
muon/hadron is added to the list of secondary 100 TeV
Positron annihilation at rest model SimplePositronium
Enable 3 gamma annihilation on fly 0
Lowest triplet kinetic energy 1 MeV
Enable sampling of gamma linear polarisation 0
5D gamma conversion model type 0
5D gamma conversion model on isolated ion 0
Use Ricardo-Gerardo pair production model 0
Livermore data directory epics_2017
=======================================================================
====== Ionisation Parameters ========
=======================================================================
Step function for e+- (0.2, 1 mm)
Step function for muons/hadrons (0.2, 0.1 mm)
Step function for light ions (0.2, 0.1 mm)
Step function for general ions (0.2, 0.1 mm)
Lowest e+e- kinetic energy 1 keV
Lowest muon/hadron kinetic energy 1 keV
Use ICRU90 data 0
Fluctuations of dE/dx are enabled 1
Type of fluctuation model for leptons and hadrons Urban
Use built-in Birks satuaration 0
Build CSDA range enabled 0
Use cut as a final range enabled 0
Enable angular generator interface 0
Max kinetic energy for CSDA tables 1 GeV
Max kinetic energy for NIEL computation 0 eV
Linear loss limit 0.01
Read data from file for e+e- pair production by mu 0
=======================================================================
====== Multiple Scattering Parameters ========
=======================================================================
Type of msc step limit algorithm for e+- 1
Type of msc step limit algorithm for muons/hadrons 0
Msc lateral displacement for e+- enabled 1
Msc lateral displacement for muons and hadrons 0
Urban msc model lateral displacement alg96 1
Range factor for msc step limit for e+- 0.04
Range factor for msc step limit for muons/hadrons 0.2
Geometry factor for msc step limitation of e+- 2.5
Safety factor for msc step limit for e+- 0.6
Skin parameter for msc step limitation of e+- 1
Lambda limit for msc step limit for e+- 1 mm
Use Mott correction for e- scattering 0
Factor used for dynamic computation of angular
limit between single and multiple scattering 1
Fixed angular limit between single
and multiple scattering 3.1416 rad
Upper energy limit for e+- multiple scattering 100 MeV
Type of electron single scattering model 0
Type of nuclear form-factor 1
Screening factor 1
=======================================================================
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitlerLPM : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 150 keV, 7 bins/decade, spline: 0
LambdaPrime table from 150 keV to 100 TeV in 62 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e- XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
CoulombScat: for e- XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
eIoni: for e+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e+ XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
annihil: for e+ XStype:2 SubType=5 AtRestModel:Simple BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+ XStype:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for GenericIon XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for alpha XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for anti_proton XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon- XStype:1 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
MuBetheBloch : Emin= 200 keV Emax= 100 TeV
muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 21x1001 from 0.85 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu- XStype:1 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi+ XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+ XStype:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi- XStype:3 SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 3, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi- XStype:1 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180, pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
-----------------------------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nKiller
-----------------------------------------------------------------------
Hadronic Processes for B-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: B-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for D-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: D-Inelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for anti_He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-------------------------------------------------------------------------
Hadronic Processes for anti_hypertriton
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: anti_lambdaInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_proton
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for anti_triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 25.6 PeV
Process: hFritiofCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
-----------------------------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for e-
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
Model: GammaNPreco: 0 eV ---> 200 MeV
Model: BertiniCascade: 199 MeV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: GammaNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for kaon-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for lambda
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: lambdaInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu+
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for mu-
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 eV ---> 100 TeV
Process: muMinusCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for proton
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
-----------------------------------------------------------------------
Hadronic Processes for sigma-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: sigma-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
-----------------------------------------------------------------------
Hadronic Processes for triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 25.6 PeV
=======================================================================
====== Geant4 Native Pre-compound Model Parameters ========
=======================================================================
Type of pre-compound inverse x-section 1
Pre-compound model active 1
Pre-compound excitation low energy 100 keV
Pre-compound excitation high energy 30 MeV
Angular generator for pre-compound model 1
Use NeverGoBack option for pre-compound model 0
Use SoftCutOff option for pre-compound model 0
Use CEM transitions for pre-compound model 1
Use GNASH transitions for pre-compound model 0
Use HETC submodel for pre-compound model 0
=======================================================================
====== Nuclear De-excitation Module Parameters ========
=======================================================================
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy 10 eV
Min energy per nucleon for multifragmentation 200 GeV
Limit excitation energy for Fermi BreakUp 20 MeV
Level density (1/MeV) 0.075
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres 1 ns
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 1
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
### Run 0 starts.
--> Event 0 starts.
--> Event 10 starts.
--> Event 20 starts.
--> Event 30 starts.
--> Event 40 starts.
--> Event 50 starts.
--> Event 60 starts.
--> Event 70 starts.
--> Event 80 starts.
--> Event 90 starts.
--> Event 100 starts.
--> Event 110 starts.
--> Event 120 starts.
--> Event 130 starts.
--> Event 140 starts.
--> Event 150 starts.
--> Event 160 starts.
--> Event 170 starts.
--> Event 180 starts.
--> Event 190 starts.
--> Event 200 starts.
--> Event 210 starts.
--> Event 220 starts.
--> Event 230 starts.
--> Event 240 starts.
--> Event 250 starts.
--> Event 260 starts.
--> Event 270 starts.
--> Event 280 starts.
--> Event 290 starts.
--> Event 300 starts.
--> Event 310 starts.
--> Event 320 starts.
--> Event 330 starts.
--> Event 340 starts.
--> Event 350 starts.
--> Event 360 starts.
--> Event 370 starts.
--> Event 380 starts.
--> Event 390 starts.
--> Event 400 starts.
--> Event 410 starts.
--> Event 420 starts.
--> Event 430 starts.
--> Event 440 starts.
--> Event 450 starts.
--> Event 460 starts.
--> Event 470 starts.
--> Event 480 starts.
--> Event 490 starts.
--> Event 500 starts.
--> Event 510 starts.
--> Event 520 starts.
--> Event 530 starts.
--> Event 540 starts.
--> Event 550 starts.
--> Event 560 starts.
--> Event 570 starts.
--> Event 580 starts.
--> Event 590 starts.
--> Event 600 starts.
--> Event 610 starts.
--> Event 620 starts.
--> Event 630 starts.
--> Event 640 starts.
--> Event 650 starts.
--> Event 660 starts.
--> Event 670 starts.
--> Event 680 starts.
--> Event 690 starts.
--> Event 700 starts.
--> Event 710 starts.
--> Event 720 starts.
--> Event 730 starts.
--> Event 740 starts.
--> Event 750 starts.
--> Event 760 starts.
--> Event 770 starts.
--> Event 780 starts.
--> Event 790 starts.
--> Event 800 starts.
--> Event 810 starts.
--> Event 820 starts.
--> Event 830 starts.
--> Event 840 starts.
--> Event 850 starts.
--> Event 860 starts.
--> Event 870 starts.
--> Event 880 starts.
--> Event 890 starts.
--> Event 900 starts.
--> Event 910 starts.
--> Event 920 starts.
--> Event 930 starts.
--> Event 940 starts.
--> Event 950 starts.
--> Event 960 starts.
--> Event 970 starts.
--> Event 980 starts.
--> Event 990 starts.
Graphics systems deleted.
Visualization Manager deleting...
Execution terminated
User=122.950000s Real=140.672899s Sys=0.590000s
@@ -0,0 +1,52 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1ActionInitialization_h
#define B1ActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Action initialization class.
class ActionInitialization : public G4VUserActionInitialization
{
public:
ActionInitialization() = default;
~ActionInitialization() override = default;
void BuildForMaster() const override;
void Build() const override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,69 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1DetectorConstruction_h
#define B1DetectorConstruction_h 1
#include "G4VUserDetectorConstruction.hh"
#include "G4ios.hh"
#include "globals.hh"
#include <vector>
#include "G4Region.hh"
#include "G4PVPlacement.hh"
#include "G4ChannelingFastSimModel.hh"
class G4VPhysicalVolume;
class G4LogicalVolume;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Detector construction class to define materials and geometry.
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
DetectorConstruction() = default;
~DetectorConstruction() override = default;
G4VPhysicalVolume* Construct() override;
void ConstructSDandField() override;
private:
//variables to remember
G4Material* fCrystalMaterial{nullptr};
G4LogicalVolume* fLogicCrystal{nullptr};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,60 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.hh
/// \brief Definition of the B1::PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1PrimaryGeneratorAction_h
#define B1PrimaryGeneratorAction_h 1
#include "G4VUserPrimaryGeneratorAction.hh"
#include "globals.hh"
#include "G4GeneralParticleSource.hh"
class G4ParticleGun;
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// The primary generator action class with GeneralParticleSource.
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
PrimaryGeneratorAction();
~PrimaryGeneratorAction() override;
// method from the base class
void GeneratePrimaries(G4Event*) override;
private:
G4GeneralParticleSource* fGPS{nullptr};
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file RunAction.hh
/// \brief Definition of the RunAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef RunAction_h
#define RunAction_h 1
#include "G4UserRunAction.hh"
#include "globals.hh"
class G4Run;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Run action class.
class RunAction : public G4UserRunAction
{
public:
RunAction();
~RunAction() override;
void BeginOfRunAction(const G4Run*) override;
void EndOfRunAction(const G4Run*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,59 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file SteppingAction.hh
/// \brief Definition of the SteppingAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef B1SteppingAction_h
#define B1SteppingAction_h 1
#include "G4UserSteppingAction.hh"
#include "globals.hh"
#include <iostream>
#include <vector>
class G4LogicalVolume;
class EventAction;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
/// Stepping action class.
class SteppingAction : public G4UserSteppingAction
{
public:
SteppingAction() = default;
~SteppingAction() override = default;
// method from the base class
void UserSteppingAction(const G4Step*) override;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -0,0 +1,38 @@
# Macro file for the initialization of example ch3
# in interactive session
#
# Set some default verbose
/control/verbose 2
/control/saveHistory
/run/verbose 2
#
# Change the default number of threads (in multi-threaded mode)
#/run/numberOfThreads 4
#
#Initialize kernel
/run/initialize
#
# Initialize kernel
/run/initialize
#
#beam
/gps/particle gamma
#
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 1 mm
/gps/pos/sigma_y 1 mm
#
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 1.E-3 rad
/gps/ang/sigma_y 1.E-3 rad
#
#energy distribution (constant)
/gps/ene/mono 100 GeV
#
# Visualization setting
/control/execute vis.mac
@@ -0,0 +1,33 @@
/random/setSeeds 19577794 424238336
#setting number of cores
/run/numberOfThreads 2
/run/initialize
#settings
/control/verbose 0
/run/verbose 0
/tracking/verbose 0
#beam
/gps/particle gamma
#coordinate distribution (radial Gauss)
/gps/pos/centre 0. 0. -1. cm
/gps/pos/type Beam
/gps/pos/sigma_x 1 mm
/gps/pos/sigma_y 1 mm
#angular distribution (radial Gauss)
/gps/ang/type beam2d
/gps/ang/rot1 1 0 0
/gps/ang/rot2 0 -1 0
/gps/ang/sigma_x 1.E-3 rad
/gps/ang/sigma_y 1.E-3 rad
#energy distribution (constant)
/gps/ene/mono 100 GeV
#statistics
/run/printProgress 10
/run/beamOn 1000
@@ -0,0 +1,55 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file ActionInitialization.cc
/// \brief Implementation of the ActionInitialization class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "ActionInitialization.hh"
#include "PrimaryGeneratorAction.hh"
#include "RunAction.hh"
#include "SteppingAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::BuildForMaster() const
{
SetUserAction(new RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::Build() const
{
SetUserAction(new PrimaryGeneratorAction);
SetUserAction(new RunAction);
SetUserAction(new SteppingAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,191 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file DetectorConstruction.cc
/// \brief Implementation of the DetectorConstruction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "DetectorConstruction.hh"
#include "G4RunManager.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
#include "G4LogicalVolume.hh"
#include "G4RegionStore.hh"
#include "G4VisAttributes.hh"
#include "PrimaryGeneratorAction.hh"
#include <CLHEP/Units/SystemOfUnits.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* DetectorConstruction::Construct()
{
//Check overlap option
G4bool checkOverlaps = true;
//Materials
G4NistManager* nist = G4NistManager::Instance();
G4Material* world_mat = nist->FindOrBuildMaterial("G4_Galactic");
G4Material* silicon = nist->FindOrBuildMaterial("G4_Si");
//World
G4Box* solidWorld = new G4Box("World", 0.2*CLHEP::m, 0.2*CLHEP::m, 0.3*CLHEP::m);
G4LogicalVolume* logicWorld = new G4LogicalVolume(solidWorld, world_mat, "World");
G4VPhysicalVolume* physWorld = new G4PVPlacement
(0, // no rotation
G4ThreeVector(), // centre position
logicWorld, // its logical volume
"World", // its name
0, // its mother volume
false, // no boolean operation
0, // copy number
checkOverlaps); // overlaps checking
logicWorld->SetVisAttributes(G4VisAttributes::GetInvisible());
// --------------- Crystal ------------------------------------
//Select crystal material
fCrystalMaterial = nist->FindOrBuildMaterial("G4_W");
//Setting crystal rotation angle (also the angle of crystal planes vs the beam)
//Crystal rotation angle (also the angle of crystal planes vs the beam)
G4double angleX = 0.*1e-6; //rad
G4RotationMatrix* crystalRotationMatrix = new G4RotationMatrix;
crystalRotationMatrix->rotateY(-angleX);
//setting crystal dimensions
/*at high energies the electromagnetic shower in
oriented tungsten should behave similarly to the
e.m. shower in several times thicker amorphous tungsten
(several times reduction of the effective radiation length)*/
G4ThreeVector crystalSize = G4ThreeVector(10.*CLHEP::mm,
10.*CLHEP::mm,
0.1*CLHEP::mm);
//Setting crystal position
G4ThreeVector posCrystal = G4ThreeVector(0., 0., crystalSize.z()/2.);
//crystal volume
G4Box* solidCrystal = new G4Box("Crystal",
crystalSize.x()/2,
crystalSize.y()/2,
crystalSize.z()/2.);
fLogicCrystal = new G4LogicalVolume(solidCrystal,
fCrystalMaterial,
"Crystal");
new G4PVPlacement(crystalRotationMatrix,
posCrystal,
fLogicCrystal,
"Crystal",
logicWorld,
false,
0,
checkOverlaps);
//crystal region (necessary for the FastSim model)
G4Region* regionCh = new G4Region("Crystal");
regionCh->AddRootLogicalVolume(fLogicCrystal);
//visualization attributes
G4VisAttributes* crystalVisAttribute =
new G4VisAttributes(G4Colour(1., 0., 0.));
crystalVisAttribute->SetForceSolid(true);
fLogicCrystal->SetVisAttributes(crystalVisAttribute);
//print crystal info
G4cout << "Crystal size: " << crystalSize.x()/CLHEP::mm
<< " " << crystalSize.y()/CLHEP::mm
<< " " << crystalSize.z()/CLHEP::mm << " mm3" << G4endl;
G4cout << "Crystal angleX: " << angleX << " rad" << G4endl;
// --------------- Detector -----------------------------------
//Setting detector position
G4ThreeVector posDetector = G4ThreeVector(0, 0, 0.1*CLHEP::m);
//particle detector volume
G4Box* detector = new G4Box("Detector",
10*CLHEP::cm/2,
10*CLHEP::cm/2,
0.3*CLHEP::mm/2);
G4LogicalVolume* logicDetector = new G4LogicalVolume(detector,
silicon,
"Detector");
new G4PVPlacement(0,
posDetector,
logicDetector,
"Detector",
logicWorld,
false,
0,
checkOverlaps);
//visualization attributes
G4VisAttributes* detectorVisAttribute =
new G4VisAttributes(G4Colour(0., 0., 1));
detectorVisAttribute->SetForceSolid(true);
logicDetector->SetVisAttributes(detectorVisAttribute);
//always return the physical World
return physWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::ConstructSDandField()
{
// --------------- fast simulation ----------------------------
//extract the region of the crystal from the store
G4RegionStore* regionStore = G4RegionStore::GetInstance();
G4Region* regionCh = regionStore->GetRegion("Crystal");
//create the channeling model for this region
G4ChannelingFastSimModel* channelingModel =
new G4ChannelingFastSimModel("ChannelingModel", regionCh);
//Crystal planes or axes considered
//Use brackets (...) for planes and <...> for axes
G4String lattice = "<111>";
//activate the channeling model
channelingModel->Input(fCrystalMaterial, lattice);
/*
activate radiation model (do it only when you want to take into account the
radiation production in an oriented crystal; it reduces simulation speed.)
*/
G4bool activateRadiationModel = true;
if (activateRadiationModel)
{
channelingModel->RadiationModelActivate();
G4cout << "Radiation model activated" << G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,56 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
/// \file PrimaryGeneratorAction.cc
/// \brief Implementation of the PrimaryGeneratorAction class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "PrimaryGeneratorAction.hh"
#include "G4Event.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
fGPS = new G4GeneralParticleSource();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fGPS;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
fGPS->GeneratePrimaryVertex(anEvent);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file RunAction.cc
/// \brief Implementation of the RunAction class
#include "RunAction.hh"
#include "G4AnalysisManager.hh"
#include "G4RunManager.hh"
#include "G4Run.hh"
#include <CLHEP/Units/SystemOfUnits.h>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::RunAction()
: G4UserRunAction()
{
//using analysis manager for output
auto analysisManager = G4AnalysisManager::Instance();
//setting our histogram
//a true range and bin number is set up in BeginOfRunAction
analysisManager->CreateH1("Spectrum_electrons","Spectrum_e-",20,0,100);
analysisManager->CreateH1("Spectrum_positrons","Spectrum_e+",20,0,100);
analysisManager->CreateH1("Spectrum_gamma","Spectrum_gamma",25,0,125);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
RunAction::~RunAction()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::BeginOfRunAction(const G4Run*)
{
//opening output file
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
G4String fileName = "results.root";
analysisManager->OpenFile(fileName);
//setting histograms
analysisManager->SetH1(0,20,0,100);
analysisManager->SetH1XAxisTitle(0,"E_e- [GeV]");
analysisManager->SetH1YAxisTitle(0,"Count");
analysisManager->SetH1(1,20,0,100);
analysisManager->SetH1XAxisTitle(1,"E_e+ [GeV]");
analysisManager->SetH1YAxisTitle(1,"Count");
analysisManager->SetH1(2,25,0,125);
analysisManager->SetH1XAxisTitle(2,"E_gamma [GeV]");
analysisManager->SetH1YAxisTitle(2,"Count");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void RunAction::EndOfRunAction(const G4Run*)
{
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
analysisManager->Write();
analysisManager->CloseFile();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -0,0 +1,89 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
/// \file SteppingAction.cc
/// \brief Implementation of the SteppingAction class
#include "SteppingAction.hh"
#include "DetectorConstruction.hh"
#include "G4Step.hh"
#include "G4Event.hh"
#include "G4RunManager.hh"
#include "G4LogicalVolume.hh"
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4AnalysisManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void SteppingAction::UserSteppingAction(const G4Step* step)
{
G4String volumeName = step->GetPreStepPoint()->GetTouchableHandle()
->GetVolume()->GetName();
//if a particle enters the detector volume
if (step->GetPreStepPoint()-> GetStepStatus()==G4StepStatus::fGeomBoundary&&
volumeName=="Detector")
{
G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
//e- spectrum
if(step->GetTrack()->GetDefinition()->GetParticleName()=="e-")
{
//coordinate in the horizontal plane
G4double eElectron = step->GetPreStepPoint()->GetTotalEnergy()/CLHEP::GeV;
//filling histogram
analysisManager->FillH1(0, eElectron);
}
//e+ spectrum
if(step->GetTrack()->GetDefinition()->GetParticleName()=="e+")
{
//coordinate in the horizontal plane
G4double ePositron = step->GetPreStepPoint()->GetTotalEnergy()/CLHEP::GeV;
//filling histogram
analysisManager->FillH1(1, ePositron);
}
//gamma spectrum
if(step->GetTrack()->GetDefinition()->GetParticleName()=="gamma")
{
//coordinate in the horizontal plane
G4double eGamma = step->GetPreStepPoint()->GetTotalEnergy()/CLHEP::GeV;
//filling histogram
analysisManager->FillH1(2, eGamma);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//}
@@ -0,0 +1,69 @@
#Macro for the visualization
#Create an empty scene
/vis/scene/create
#Create a scene handler for a specific graphics system
/vis/open OGL
#/vis/open DAWNFILE
#/vis/open VRML2FILE
#Disable auto refresh and quieten vis messages whilst scene and
#trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#Draw the scene
/vis/drawVolume
/vis/viewer/flush
#Set the camera
/vis/viewer/reset
/vis/viewer/set/viewpointThetaPhi 135. 45. deg
/vis/viewer/zoom 1
#Specify style (surface, wireframe, auxiliary edges,...)
/vis/viewer/set/style wireframe
/vis/viewer/set/lineSegmentsPerCircle 100
#Geometry
#/vis/geometry/set/lineWidth all 1 3
#Decoration
#Axes
/vis/set/lineWidth 3
#/vis/scene/add/axes 0 0 0 1.0 m #Simple axes: x=red, y=green, z=blue.
#Name
#/vis/set/textColour red
#/vis/set/textLayout right
#/vis/scene/add/text2D 0.8 -0.85 24 ! ! FastSimChannelingRad
#Frame
#/vis/set/colour red
#/vis/set/lineWidth 2
#/vis/scene/add/frame #Simple frame around the view
#/vis/set/colour #Revert to default colour (white)
#/vis/set/lineWidth #Revert to default line width (1.)
#Commands for the drawing the tracks
/vis/scene/add/eventID #Drawn at end of event
/tracking/storeTrajectory 0 #(if too many tracks cause core dumped => storeTrajectory 0)
/vis/scene/endOfEventAction accumulate
/vis/scene/add/trajectories smooth rich
#/vis/modeling/trajectories/create/drawByParticleID
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
#Draw hits at end of event:
/vis/scene/add/hits
#Geometry test (it can cause a "core dumped")
/geometry/navigator/reset
/geometry/test/run
#Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush

Some files were not shown because too many files have changed in this diff Show More