Import Geant4 11.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2025-12-05 08:54:02 +01:00
parent a499fb82e9
commit b4a16de652
6484 changed files with 232674 additions and 221097 deletions
@@ -1,99 +0,0 @@
=================================================================
Phonon propagation in Geant4
=================================================================
Daniel Brandt - SLAC
dbrandt@slac.stanford.edu
This example demonstrates how phonon propagation in cryogenic crystals
can be simulated in Geant4.
1.INTRODUCTION
Phonon propagation is different from most other Geant4 propagation
simulations in a number of respects:
-Phonons are massless particles moving slower than the speed of light
-Phonon propagation and momentum vectors are not parallel
-Events isotropic in phonon-momentum space are not isotropic in real
space.
This example will simulate the propagation of acoustic phonons through
a Germanium crystal, providing processes to simulate phonon scattering
off isotopic impurities, mode mixing between polarization states and
anharmonic downconversion (phonon splitting). As such it provides all
the physics required to realistically simulate phonon propagation in
cryogenically cold semiconductor crystals.
2. GEOMETRY
In this example the geometry is a cylindrical Germanium crystal
centered at (0,0,0) with Almuninium end caps. Phonons absorbed in the
Al end caps are counted by the sensitive detector.
3. PRIMARY EVENT
The primary event is a single phonon of energy 7.5 meV at the center of
the Ge crystal. The polarization type (fast transvere, slow transverse or
longitudinal) is determined randomly according to the density of states
in Germanium. The direction of propagation is than determined by by the
User Stacking Action class XPhononStackingAction.
4. 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. Alternatively
the search path for the crystal maps can be set in the setting the
G4LATTICEDATA environment variable. If this variable does not exist, it
defaults to ./CrystalMaps.
Data files for each crystal material are stored in a named subdirectory
under $G4LATTICEDATA/, along with a config.txt file which specifies the
numerical constants for the lattice. This example includes germanium [111]
in CrystalMaps/Ge/.
Upon execution, the vis.mac visualization macro will automatically be
executed. For the visualization to work, OpenGL support must be installed.
The macro will automatically generate a single Primary Event (7.5 meV phonon)
at the center of the crystal.
The trajectory colour will indicate the polarization state of the phonon:
Longitudinal: blue
Fast Transverse: green
Slow Transverse: red
A small circle will be drawn wherever a phonon is absorbed into the
Aluminium. All events within the Aluminium are written into plain-text
space-sparated-value (ssv) files.
timing.ssv
------------
COLUMN 1: Time phonon was absorbed in ns since start of run
COLUMN 2: Energy of phonon absorbed
caustic.ssv
------------
COLUMN 1: x-position of absobrtion in mm
COLUMN 2: y-position of absobrtion in mm
COLUMN 3: z-position of absobrtion in mm
Every time a phonon is simulated, the information is appended to timing.ssv
and caustic.ssv. If the files do not exist they will be created.
5. TESTING
In order to test the example, it can be run as
./XGeBox run.in > test.out
This will create a single primary event and then cause the example to
terminate automatically, with all screen output redirected to test.out.
If all went well, test.out should be identical to run.out provided with
this example. Also, the files caustic.ssv and timing.ssv should have been
created and be identical to caustic.out and timing.out respectively.
After the first time the example runs, it will append to caustic.ssv and
timing.ssv. If the testing should be re-run, then caustic.ssv and timing.ssv
will have to be deleted.
@@ -1,8 +1,4 @@
///\file "exoticphysics/phonon/.README.txt"
///\brief Example phonon README page
/*! \page Examplephonon Example phonon
\page Examplephonon Example phonon
\author Daniel Brandt - SLAC \n
dbrandt@slac.stanford.edu
@@ -10,7 +6,7 @@
This example demonstrates how phonon propagation in cryogenic crystals
can be simulated in Geant4.
\section phonon_s1 INTRODUCTION
## INTRODUCTION
Phonon propagation is different from most other Geant4 propagation
simulations in a number of respects:
@@ -29,13 +25,13 @@ anharmonic downconversion (phonon splitting). As such it provides all
the physics required to realistically simulate phonon propagation in
cryogenically cold semiconductor crystals.
\section phonon_s2 GEOMETRY
## GEOMETRY
In this example the geometry is a cylindrical Germanium crystal
centered at (0,0,0) with Almuninium end caps. Phonons absorbed in the
Al end caps are counted by the sensitive detector.
\section phonon_s3 PRIMARY EVENT
## PRIMARY EVENT
The primary event is a single phonon of energy 7.5 meV at the center of
the Ge crystal. The polarization type (fast transvere, slow transverse or
@@ -43,7 +39,7 @@ longitudinal) is determined randomly according to the density of states
in Germanium. The direction of propagation is than determined by by the
User Stacking Action class XPhononStackingAction.
\section phonon_s4 EXECUTION & OUTPUT
## 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.
@@ -70,12 +66,12 @@ A small circle will be drawn wherever a phonon is absorbed into the
Aluminium. All events within the Aluminium are written into plain-text
space-sparated-value (ssv) files:
\subsection phonon_s4_sub1 timing.ssv
### timing.ssv
- COLUMN 1: Time phonon was absorbed in ns since start of run
- COLUMN 2: Energy of phonon absorbed
\subsection phonon_s4_sub2 tcaustic.ssv
### tcaustic.ssv
- COLUMN 1: x-position of absobrtion in mm
- COLUMN 2: y-position of absobrtion in mm
@@ -84,12 +80,12 @@ space-sparated-value (ssv) files:
Every time a phonon is simulated, the information is appended to timing.ssv
and caustic.ssv. If the files do not exist they will be created.
\section phonon_s5 TESTING
## TESTING
In order to test the example, it can be run as
\verbatim
```
./XGeBox run.in > test.out
\endverbatim
```
This will create a single primary event and then cause the example to
terminate automatically, with all screen output redirected to test.out.
@@ -101,5 +97,3 @@ created and be identical to caustic.out and timing.out respectively.
After the first time the example runs, it will append to caustic.ssv and
timing.ssv. If the testing should be re-run, then caustic.ssv and timing.ssv
will have to be deleted.
*/
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/XGeBox.cc
/// \file XGeBox.cc
/// \brief Main program of the exoticphysics/phonon example
//
//
#include "XActionInitialization.hh"
#include "XDetectorConstruction.hh"
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XActionInitialization.hh
/// \file XActionInitialization.hh
/// \brief Definition of the XActionInitialization class
//
//
#ifndef XActionInitialization_h
#define XActionInitialization_h 1
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XAluminumElectrodeHit.hh
/// \file XAluminumElectrodeHit.hh
/// \brief Definition of the XAluminumElectrodeHit class
//
//
// 20141008 Allocators must be thread-local, and must be pointers
// 20150818 Make hit a simple container, with public data members
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XAluminumElectrodeSensitivity.hh
/// \file XAluminumElectrodeSensitivity.hh
/// \brief Definition of the XAluminumElectrodeSensitivity class
//
//
// 20150818 Improve MT compatibility; hits collection should not be static
#ifndef XAluminumElectrodeSensitivity_h
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XDetectorConstruction.hh
/// \file XDetectorConstruction.hh
/// \brief Definition of the XDetectorConstruction class
//
//
#ifndef XDetectorConstruction_h
#define XDetectorConstruction_h 1
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XPhononStackingAction.hh
/// \file XPhononStackingAction.hh
/// \brief Definition of the XPhononStackingAction class
//
//
#ifndef XPhononStackingAction_h
#define XPhononStackingAction_h 1
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XPhysicsList.hh
/// \file XPhysicsList.hh
/// \brief Definition of the XPhysicsList class
//
//
// 20131117 Add verbosity argument, to set verbosity from main program
#ifndef XPhysicsList_h
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/include/XPrimaryGeneratorAction.hh
/// \file XPrimaryGeneratorAction.hh
/// \brief Definition of the XPrimaryGeneratorAction class
//
//
#ifndef XPrimaryGeneratorAction_h
#define XPrimaryGeneratorAction_h 1
@@ -23,9 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XActionInitialization.cc
/// \file XActionInitialization.cc
/// \brief Implementation of the XActionInitialization class
//
#include "XActionInitialization.hh"
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XAluminumElectrodeHit.cc
/// \file XAluminumElectrodeHit.cc
/// \brief Implementation of the XAluminumElectrodeHit class
//
//
// 20141008 Allocators must be thread-local, and must be pointers
#include "XAluminumElectrodeHit.hh"
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XAluminumElectrodeSensitivity.cc
/// \file XAluminumElectrodeSensitivity.cc
/// \brief Implementation of the XAluminumElectrodeSensitivity class
//
//
#include "XAluminumElectrodeSensitivity.hh"
#include "XAluminumElectrodeHit.hh"
@@ -23,10 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XDetectorConstruction.cc
/// \file XDetectorConstruction.cc
/// \brief Implementation of the XDetectorConstruction class
//
//
// 20141006 For MT compatibility, move SD handling to ConstructSDandField()
#include "XDetectorConstruction.hh"
@@ -23,8 +23,9 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XPhononStackingAction.cc
/// \file XPhononStackingAction.cc
/// \brief Implementation of the XPhononStackingAction class
/// This stacking action is necessary to ensure that velocity and
/// propagation direction are set properly for phonons created with
/// G4ParticleGun
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XPhysicsList.cc
/// \file XPhysicsList.cc
/// \brief Implementation of the XPhysicsList class
//
//
#include "XPhysicsList.hh"
@@ -23,10 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file exoticphysics/phonon/src/XPrimaryGeneratorAction.cc
/// \file XPrimaryGeneratorAction.cc
/// \brief Implementation of the XPrimaryGeneratorAction class
//
//
#include "XPrimaryGeneratorAction.hh"