Import Geant4 11.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2021-12-10 16:15:15 +00:00
committed by Ben Morgan
parent 6399a014b6
commit 80e2389dd8
3932 changed files with 202519 additions and 246221 deletions
-103
View File
@@ -1,103 +0,0 @@
///\file "optical/wls/.README.txt"
///\brief Example wls README page
/*! \page Examplewls Example wls
This application simulates the propagation of photons inside a Wave Length
Shifting (WLS) fiber.
\section Examplewls_s1 Geometry Definition
The default geometry is as follow:
- A perfect, bare, PMMA fiber: 0.5mm radius, 2m length at center(0,0,0)
of the World.
- A circular MPPC with 0.5mm radius at the +z end of the fiber
- World and coupling materials are G4_AIR
- Photons will always refracted out to coupling material before
reaching MPPC
- There are many flexible parameters that the user could specify.
They are under the /WLS directory of help.
\section Examplewls_s2 Material Choices
There are several materials that the user can use for the fiber core,
world and coupling.
They are:
- Vacuum (G4_Galactic)
- Air (G4_AIR)
- PMMA, n = 1.60
- Pethylene, n = 1.49
- FPethylene, n = 1.42
- Polystyrene, n = 1.60
- Silicone, n = 1.46
\section Examplewls_s3 Photon Source
This program uses the General Particle Source (G4GeneralParticleSource)
provided by GEANT4 for
generating photons. The energy of the photon must be within 2.00 eV
to 3.47 eV. For detail instruction on how to use the General Particle
Source, please visit their home page at:
http://reat.space.qinetiq.com/gps/
\section Examplewls_s4 Hit
A hit is registered when the photon is absorbed on the MPPC surface.
Information stored in hit includes the local coordinate of the location
the photon is absorbed on the MPPC, the global coordinate where the
photon left the fiber and the transit time of the photon.
\section Examplewls_s5 Stepping Action
The stepping action keeps track of the number of bounces a photon has
gone through. In order to prevent infinite loop and extremely skewed
rays taking up computing time, there is a limit of the number of
bounces that a photon can go through before it is artificially killed.
The default limit is 100,000. The user can set his/her own limit using
the /stepping/setBounceLimit command. A value of 0 will turn off the
limit. All photons artificially killed will have murderee flag turned
on in their UserTrackInformation.
\section Examplewls_s6 Visualization
To visualize a photon's trajectory, simply use vis.mac macro in
interactive mode or in your own macro.
\section Examplewls_s7 main ()
- Execute wls in 'batch' mode from macro files; \n
you can enter an optional integer seed for batch mode
\verbatim
% wls wls.in (optional: enter an integer seed here)
\endverbatim
- wls in 'interactive mode' with visualization
\verbatim
% wls
....
Idle> /control/execute vis.mac
Idle> /run/beamOn 1
....
Idle> exit
\endverbatim
\section Examplewls_s8 Macros provided
- wls.in: sets up the default geometry and provides the commands to change it.
Primary particle is an optical photon with energy 2.1 eV.
- Sr90.mac: Default geometry is used. Primary particle is a strontium ion.
- vis.mac: macro for visualization; called automatically when no macro is
given on command line.
*/
+2 -4
View File
@@ -1,6 +1,6 @@
#----------------------------------------------------------------------------
# Setup the project
cmake_minimum_required(VERSION 3.12...3.20)
cmake_minimum_required(VERSION 3.16...3.21)
project(wls)
#----------------------------------------------------------------------------
@@ -40,11 +40,9 @@ target_link_libraries(wls ${Geant4_LIBRARIES} )
# relies on these scripts being in the current working directory.
#
set(wls_SCRIPTS
wls.out
wls.in
gui.mac
Sr90.mac
vis.mac
electron.mac
)
foreach(_script ${wls_SCRIPTS})
+18
View File
@@ -15,6 +15,24 @@ track of all tags.
----------------------------------------------------------
Oct 25, 2021 B. Morgan (WLS-V10-07-04)
- Use G4StrUtil functions replacing deprecated G4String member functions
Oct 6, 2021 I. Hrivnacova (WLS-V10-07-03)
- Migration to new G4AnalysisManager.hh header;
define the default output file type (root),
removed WLSAnalysis.hh
Sept 7, 2021 D. Sawkey (WLS-V10-07-02)
- add visualisation attributes
- fix bug preventing cladding being built
- fix counting detector hits
- add histograms
- use G4OpBoundaryProcess::invokeSD rather than ProcessHits_boundary call
in SteppingAction
- remove StringToRotation
- remove Sr90.mac; add electron.mac
May 21, 2021 D. Sawkey (WLS-V10-07-01)
- WLSMaterials: use correct material property names
-99
View File
@@ -1,99 +0,0 @@
=========================================================
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
=========================================================
WLS
----------
This application simulates the propagation of photons inside a Wave Length
Shifting (WLS) fiber.
1- Geometry Definition
The default geometry is as follow:
- A perfect, bare, PMMA fiber: 0.5mm radius, 2m length at center(0,0,0)
of the World.
- A circular MPPC with 0.5mm radius at the +z end of the fiber
- World and coupling materials are G4_AIR
- Photons will always refracted out to coupling material before
reaching MPPC
- There are many flexible parameters that the user could specify.
They are under the /WLS directory of help.
2- Material Choices
There are several materials that the user can use for the fiber core,
world and coupling.
They are:
- Vacuum (G4_Galactic)
- Air (G4_AIR)
- PMMA, n = 1.60
- Pethylene, n = 1.49
- FPethylene, n = 1.42
- Polystyrene, n = 1.60
- Silicone, n = 1.46
3- Photon Source
This program uses the General Particle Source (G4GeneralParticleSource)
provided by GEANT4 for
generating photons. The energy of the photon must be within 2.00 eV
to 3.47 eV. For detail instruction on how to use the General Particle
Source, please visit their home page at:
http://reat.space.qinetiq.com/gps/
4- Hit
A hit is registered when the photon is absorbed on the MPPC surface.
Information stored in hit includes the local coordinate of the location
the photon is absorbed on the MPPC, the global coordinate where the
photon left the fiber and the transit time of the photon.
5- Stepping Action
The stepping action keeps track of the number of bounces a photon has
gone through. In order to prevent infinite loop and extremely skewed
rays taking up computing time, there is a limit of the number of
bounces that a photon can go through before it is artificially killed.
The default limit is 100,000. The user can set his/her own limit using
the /stepping/setBounceLimit command. A value of 0 will turn off the
limit. All photons artificially killed will have murderee flag turned
on in their UserTrackInformation.
6- Visualization
To visualize a photon's trajectory, simply use vis.mac macro in
interactive mode or in your own macro.
7- main()
- execute wls in 'batch' mode from macro files
- you can enter an optional integer seed for batch mode
% wls wls.in (optional: enter an integer seed here)
- wls in 'interactive mode' with visualization
% wls
....
Idle> /control/execute
Idle> /run/beamOn 1
....
Idle> exit
8- Macros provided
- wls.in: sets up the default geometry and provides the commands to change it.
Primary particle is an optical photon with energy 2.1 eV.
- Sr90.mac: Default geometry is used. Primary particle is a strontium ion.
- vis.mac: macro for visualization; called automatically when no macro is
given on command line.
-27
View File
@@ -1,27 +0,0 @@
/control/verbose 1
/run/verbose 1
/event/verbose 1
/tracking/verbose 0
/process/optical/verbose 1
/run/initialize
/gps/particle ion
/gps/ion 38 90 0 0
/gps/energy 0 keV
/gps/pos/type Plane
/gps/pos/shape Circle
/gps/pos/radius 0.5 mm
/gps/pos/centre 1.0 0.0 0.0 cm
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
/gps/ang/type iso
/gps/ang/mintheta 0.0 deg
/gps/ang/maxtheta 90.0 deg
/run/beamOn 10
@@ -0,0 +1,50 @@
/control/verbose 1
/run/verbose 1
/tracking/verbose 0
/event/verbose 0
/WLS/setPhotonDetGeometry Circle
/WLS/setNumOfLayers 2
/WLS/setSurfaceRoughness 0.999
/WLS/setXYRatio 0.8
/WLS/setWLSLength 1. m
/WLS/setWLSRadius 0.5 mm
/WLS/setClad1Radius 0.3 mm
/WLS/setClad2Radius 0.1 mm
#
/WLS/setPhotonDetHalfLength 0.6 mm
/WLS/setGap 0.15 mm
/WLS/setAlignment 0.1 deg
/WLS/setMirror true
/WLS/setBarLength 1.1 m
/WLS/setBarBase 9.5 mm
/WLS/setHoleRadius 0.9 mm
/WLS/setCoatingThickness 0.3 mm
/WLS/setCoatingRadius 1.775 mm
/run/initialize
/hits/verbose 2
/process/optical/verbose 1
/gps/particle e-
/gps/energy 10 MeV
/gps/pos/type Plane
/gps/pos/shape Circle
/gps/pos/radius 0.5 mm
/gps/pos/centre 0.0 0.0 0.0 cm
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
/gps/ang/type iso
/gps/ang/mintheta 0.0 deg
/gps/ang/maxtheta 90.0 deg
/run/printProgress 1
/run/beamOn 10
+10 -14
View File
@@ -19,21 +19,17 @@
#
# Gun menu :
/gui/addMenu gun Gun
/gui/addButton gun "50 MeV" "/gun/energy 50 MeV"
/gui/addButton gun "1 GeV" "/gun/energy 1 GeV"
/gui/addButton gun "10 GeV" "/gun/energy 10 GeV"
/gui/addButton gun "e-" "/gun/particle e-"
/gui/addButton gun "pi0" "/gun/particle pi0"
/gui/addButton gun "pi+" "/gun/particle pi+"
/gui/addButton gun "neutron" "/gun/particle neutron"
/gui/addButton gun "proton" "/gun/particle proton"
#
# Field menu :
#/gui/addMenu field Field
#/gui/addButton field "off" "/B2/det/setField 0.2 tesla"
#/gui/addButton field "0.2 tesla" "/B2/det/setField 0.2 tesla"
#/gui/addButton field "2.0 tesla" "/B2/det/setField 2.0 tesla"
/gui/addButton gun "500 keV" "/gps/energy 500 keV"
/gui/addButton gun "1 MeV" "/gps/energy 1 MeV"
/gui/addButton gun "10 MeV" "/gps/energy 10 MeV"
/gui/addButton gun "100 MeV" "/gps/energy 100 MeV"
/gui/addButton gun "e-" "/gps/particle e-"
/gui/addButton gun "pi0" "/gps/particle pi0"
/gui/addButton gun "pi+" "/gps/particle pi+"
/gui/addButton gun "neutron" "/gps/particle neutron"
/gui/addButton gun "proton" "/gps/particle proton"
#
# Viewer menu :
/gui/addMenu viewer Viewer
/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
@@ -48,6 +48,7 @@ class G4EllipticalTube;
class G4LogicalVolume;
class G4Material;
class G4Tubs;
class G4VisAttributes;
class G4VPhysicalVolume;
class WLSDetectorConstruction : public G4VUserDetectorConstruction
@@ -112,20 +113,11 @@ class WLSDetectorConstruction : public G4VUserDetectorConstruction
G4double GetCoatingThickness();
G4double GetCoatingRadius();
// StringToRotationMatrix() converts a string "X90,Y45" into a
// G4RotationMatrix.
// This is an active rotation, in that the object is first rotated
// around the parent's X axis by 90 degrees, then the object is
// further rotated around the parent's Y axis by 45 degrees.
// The return value points to a G4RotationMatrix on the heap, so
// it is persistent. Angles are in degrees, can have decimals,
// and can be negative. Axes are X, Y, Z.
static G4RotationMatrix StringToRotationMatrix(G4String rotation);
G4Material* FindMaterial(G4String);
private:
std::vector<G4VisAttributes*> fVisAttributes;
WLSMaterials* fMaterials;
G4LogicalVolume* fLogicHole;
@@ -191,8 +183,6 @@ class WLSDetectorConstruction : public G4VUserDetectorConstruction
G4double fCoatingThickness;
G4double fCoatingRadius;
void ConstructFiber();
void UpdateGeometryParameters();
WLSDetectorMessenger* fDetectorMessenger;
@@ -60,7 +60,6 @@ class WLSEventAction : public G4UserEventAction
void AddClad1Bounce() { fClad1Bounce += 1; };
void AddClad2Bounce() { fClad2Bounce += 1; };
void AddReflected() { fReflected += 1; };
void AddDetected() { fDetected += 1; };
void AddEscaped() { fEscaped += 1; };
void AddMirror() { fMirror += 1; };
@@ -80,7 +79,6 @@ class WLSEventAction : public G4UserEventAction
G4int fClad1Bounce;
G4int fClad2Bounce;
G4int fReflected;
G4int fDetected;
G4int fEscaped;
G4int fMirror;
};
@@ -45,7 +45,7 @@ class WLSPhotonDetHit : public G4VHit
{
public:
WLSPhotonDetHit();
WLSPhotonDetHit(G4ThreeVector pExit, G4ThreeVector pArrive, G4double pTime);
WLSPhotonDetHit(G4ThreeVector pExit, G4ThreeVector pArrive, G4double pTime, G4double pEnergy);
~WLSPhotonDetHit();
WLSPhotonDetHit(const WLSPhotonDetHit& right);
@@ -65,6 +65,11 @@ class WLSPhotonDetHit : public G4VHit
inline void SetArrivalTime(G4double t) { fArrivalTime = t; }
inline G4double GetArrivalTime() { return fArrivalTime; }
inline void SetEnergy(G4double en) { fEnergy = en; }
inline G4double GetEnergy() { return fEnergy; }
void Print();
private:
// the arrival time of the photon
G4double fArrivalTime;
@@ -72,6 +77,8 @@ class WLSPhotonDetHit : public G4VHit
G4ThreeVector fPosArrive;
// where the photon exited the fiber (world's coordinate)
G4ThreeVector fPosExit;
// energy of photon
G4double fEnergy;
};
//--------------------------------------------------
@@ -50,8 +50,8 @@ class WLSPhotonDetSD : public G4VSensitiveDetector
void Initialize(G4HCofThisEvent*) override;
G4bool ProcessHits(G4Step*, G4TouchableHistory*) override;
// A version of processHits, not called automatically by sensitive detector
G4bool ProcessHits_boundary(const G4Step*, G4TouchableHistory*);
void EndOfEvent(G4HCofThisEvent*) override;
private:
WLSPhotonDetHitsCollection* fPhotonDetHitCollection;
@@ -96,12 +96,6 @@ class WLSRun : public G4Run
fReflected += nd;
fReflected2 += nd * nd;
};
void AddDetected(G4int n)
{
G4double nd(n);
fDetected += nd;
fDetected2 += nd * nd;
};
void AddEscaped(G4int n)
{
G4double nd(n);
@@ -143,8 +137,6 @@ class WLSRun : public G4Run
G4double fClad2Bounce2;
G4double fReflected;
G4double fReflected2;
G4double fDetected;
G4double fDetected2;
G4double fEscaped;
G4double fEscaped2;
G4double fMirror;
@@ -57,10 +57,14 @@
#include "G4Tubs.hh"
#include "G4UserLimits.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSDetectorConstruction::WLSDetectorConstruction()
: fMaterials(nullptr)
: fVisAttributes()
, fMaterials(nullptr)
, fLogicHole(nullptr)
, fLogicWorld(nullptr)
, fPhysiWorld(nullptr)
@@ -113,6 +117,10 @@ WLSDetectorConstruction::~WLSDetectorConstruction()
delete fDetectorMessenger;
if(fMaterials)
delete fMaterials;
for (auto visAttributes: fVisAttributes)
{
delete visAttributes;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -139,6 +147,11 @@ G4VPhysicalVolume* WLSDetectorConstruction::Construct()
G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
{
auto air = FindMaterial("G4_AIR");
//G4cout << "\nMaterial Properties Table for G4_AIR:" << G4endl;
//air->GetMaterialPropertiesTable()->DumpTable();
//--------------------------------------------------
// World
//--------------------------------------------------
@@ -147,7 +160,7 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
new G4Box("World", fWorldSizeX, fWorldSizeY, fWorldSizeZ);
fLogicWorld =
new G4LogicalVolume(solidWorld, FindMaterial("G4_AIR"), "World");
new G4LogicalVolume(solidWorld, air, "World");
fPhysiWorld =
new G4PVPlacement(0, G4ThreeVector(), fLogicWorld, "World", 0, false, 0);
@@ -156,11 +169,13 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
// Extrusion
//--------------------------------------------------
auto coating = FindMaterial("Coating");
G4VSolid* solidExtrusion = new G4Box("Extrusion", GetBarBase() / 2.,
GetBarBase() / 2., GetBarLength() / 2.);
G4LogicalVolume* logicExtrusion =
new G4LogicalVolume(solidExtrusion, FindMaterial("Coating"), "Extrusion");
new G4LogicalVolume(solidExtrusion, coating, "Extrusion");
G4OpticalSurface* TiO2Surface = new G4OpticalSurface(
"TiO2Surface", glisur, ground, dielectric_metal, fExtrusionPolish);
@@ -188,6 +203,10 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
// Scintillator
//--------------------------------------------------
auto polystyrene = FindMaterial("Polystyrene");
//G4cout << "\nMaterial Properties Table for Polystyrene:" << G4endl;
//polystyrene->GetMaterialPropertiesTable()->DumpTable();
G4VSolid* solidScintillator =
new G4Box("Scintillator",
GetBarBase() / 2. - GetCoatingThickness() - GetCoatingRadius(),
@@ -195,11 +214,13 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
GetBarLength() / 2.);
G4LogicalVolume* logicScintillator = new G4LogicalVolume(
solidScintillator, FindMaterial("Polystyrene"), "Scintillator");
solidScintillator, polystyrene, "Scintillator");
new G4PVPlacement(0, G4ThreeVector(), logicScintillator, "Scintillator",
logicExtrusion, false, 0);
G4LogicalVolume* logicScintSide = nullptr;
G4LogicalVolume* logicScintCrnr = nullptr;
if(GetCoatingRadius() > 0.)
{
G4VSolid* solidScintside =
@@ -211,11 +232,11 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
new G4Tubs("CrnrOfBar", 0.0 * cm, GetCoatingRadius(), GetBarLength() / 2.,
0. * deg, 90. * deg);
G4LogicalVolume* logicScintSide = new G4LogicalVolume(
solidScintside, FindMaterial("Polystyrene"), "SideOfBar");
logicScintSide = new G4LogicalVolume(
solidScintside, polystyrene, "SideOfBar");
G4LogicalVolume* logicScintCrnr = new G4LogicalVolume(
solidScintcrnr, FindMaterial("Polystyrene"), "CrnrOfBar");
logicScintCrnr = new G4LogicalVolume(
solidScintcrnr, polystyrene, "CrnrOfBar");
G4double pos =
GetBarBase() / 2. - GetCoatingThickness() - GetCoatingRadius() / 2.;
@@ -227,12 +248,7 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
"SideOfBar", logicExtrusion, false, 1);
G4RotationMatrix* rot1 = new G4RotationMatrix();
*rot1 = StringToRotationMatrix("Z90");
*rot1 = rot1->inverse();
if(*rot1 == G4RotationMatrix())
{
rot1 = nullptr;
}
rot1->rotateZ(-90.*deg);
new G4PVPlacement(rot1, G4ThreeVector(pos, 0., 0.), logicScintSide,
"SideOfBar", logicExtrusion, false, 2);
@@ -249,23 +265,13 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
"CrnrOfBar", logicExtrusion, false, 1);
G4RotationMatrix* rot2 = new G4RotationMatrix();
*rot2 = StringToRotationMatrix("Z180");
*rot2 = rot2->inverse();
if(*rot2 == G4RotationMatrix())
{
rot2 = nullptr;
}
rot2->rotateZ(-180.*deg);
new G4PVPlacement(rot2, G4ThreeVector(-pos, -pos, 0.), logicScintCrnr,
"CrnrOfBar", logicExtrusion, false, 2);
G4RotationMatrix* rot3 = new G4RotationMatrix();
*rot3 = StringToRotationMatrix("Z270");
*rot3 = rot3->inverse();
if(*rot3 == G4RotationMatrix())
{
rot3 = nullptr;
}
rot3->rotateZ(-270.*deg);
new G4PVPlacement(rot3, G4ThreeVector(pos, -pos, 0.), logicScintCrnr,
"CrnrOfBar", logicExtrusion, false, 3);
@@ -276,7 +282,7 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
G4VSolid* solidHole = new G4Tubs(
"Hole", 0., GetHoleRadius(), GetHoleLength() / 2., 0. * deg, 360. * deg);
fLogicHole = new G4LogicalVolume(solidHole, FindMaterial("G4_AIR"), "Hole");
fLogicHole = new G4LogicalVolume(solidHole, air, "Hole");
fPhysiHole = new G4PVPlacement(0, G4ThreeVector(), fLogicHole, "Hole",
logicScintillator, false, 0);
@@ -286,21 +292,11 @@ G4VPhysicalVolume* WLSDetectorConstruction::ConstructDetector()
// Fiber
//--------------------------------------------------
ConstructFiber();
return fPhysiWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSDetectorConstruction::ConstructFiber()
{
if(!(fLogicHole) || !(fPhysiHole))
{
G4ExceptionDescription ed;
ed << "The Fiber Hole has not been constructed";
G4Exception("WLSDetectorConstruction::ConstructFiber", "", FatalException,
ed);
G4Exception("WLSDetectorConstruction", "wls001", FatalException, ed);
}
// Pointers to the most recently constructed volume
@@ -317,11 +313,16 @@ void WLSDetectorConstruction::ConstructFiber()
if(fSurfaceRoughness < 1.)
opSurface = new G4OpticalSurface("RoughSurface", glisur, ground,
dielectric_dielectric, fSurfaceRoughness);
G4LogicalVolume* logicWLSfiber = nullptr;
G4LogicalVolume* logicClad1 = nullptr;
G4LogicalVolume* logicClad2 = nullptr;
G4VPhysicalVolume* physiClad1 = nullptr;
G4VPhysicalVolume* physiClad2 = nullptr;
G4LogicalVolume* logicClad1 = nullptr;
G4LogicalVolume* logicClad2 = nullptr;
G4VPhysicalVolume* physiClad1 = nullptr;
G4VPhysicalVolume* physiClad2 = nullptr;
auto fpethylene = FindMaterial("FPethylene");
auto pethylene = FindMaterial("Pethylene");
auto pmma = FindMaterial("PMMA");
// Determine the number of cladding layers to be built
switch(fNumOfCladLayers)
@@ -332,6 +333,9 @@ void WLSDetectorConstruction::ConstructFiber()
// Cladding 2
//--------------------------------------------------
//G4cout << "\nMaterial Properties Table for fPethylene:" << G4endl;
//fpethylene->GetMaterialPropertiesTable()->DumpTable();
G4VSolid* solidClad2;
if(fXYRatio == 1.)
@@ -340,7 +344,7 @@ void WLSDetectorConstruction::ConstructFiber()
solidClad2 = new G4EllipticalTube("Clad2", fClad2RX, fClad2RY, fClad2Z);
logicClad2 =
new G4LogicalVolume(solidClad2, FindMaterial("FPethylene"), "Clad2");
new G4LogicalVolume(solidClad2, fpethylene, "Clad2");
physiClad2 =
new G4PVPlacement(0, G4ThreeVector(0.0, 0.0, fWLSfiberOrigin),
@@ -357,7 +361,7 @@ void WLSDetectorConstruction::ConstructFiber()
logicPlacement = logicClad2;
physiPlacement = physiClad2;
break;
[[fallthrough]];
case 1:
@@ -365,6 +369,9 @@ void WLSDetectorConstruction::ConstructFiber()
// Cladding 1
//--------------------------------------------------
//G4cout << "\nMaterial Properties Table for Pethylene:" << G4endl;
//pethylene->GetMaterialPropertiesTable()->DumpTable();
G4VSolid* solidClad1;
if(fXYRatio == 1.)
@@ -373,7 +380,7 @@ void WLSDetectorConstruction::ConstructFiber()
solidClad1 = new G4EllipticalTube("Clad1", fClad1RX, fClad1RY, fClad1Z);
logicClad1 =
new G4LogicalVolume(solidClad1, FindMaterial("Pethylene"), "Clad1");
new G4LogicalVolume(solidClad1, pethylene, "Clad1");
physiClad1 =
new G4PVPlacement(0, G4ThreeVector(0., 0., fWLSfiberOrigin), logicClad1,
@@ -391,7 +398,7 @@ void WLSDetectorConstruction::ConstructFiber()
logicPlacement = logicClad1;
physiPlacement = physiClad1;
break;
[[fallthrough]];
default:
@@ -399,6 +406,9 @@ void WLSDetectorConstruction::ConstructFiber()
// WLS Fiber
//--------------------------------------------------
//G4cout << "\nMaterial Properties Table for PMMA:" << G4endl;
//pmma->GetMaterialPropertiesTable()->DumpTable();
G4VSolid* solidWLSfiber;
if(fXYRatio == 1.)
@@ -412,8 +422,8 @@ void WLSDetectorConstruction::ConstructFiber()
fWLSfiberRY, fWLSfiberZ);
}
G4LogicalVolume* logicWLSfiber =
new G4LogicalVolume(solidWLSfiber, FindMaterial("PMMA"), "WLSFiber");
logicWLSfiber =
new G4LogicalVolume(solidWLSfiber, pmma, "WLSFiber");
logicWLSfiber->SetUserLimits(
new G4UserLimits(DBL_MAX, DBL_MAX, 10. * ms));
@@ -438,13 +448,17 @@ void WLSDetectorConstruction::ConstructFiber()
//--------------------------------------------------
// Place the mirror only if the user wants the mirror
G4LogicalVolume* logicMirror = nullptr;
auto aluminum = FindMaterial("G4_Al");
if(fMirrorToggle)
{
G4VSolid* solidMirror =
new G4Box("Mirror", fMirrorRmax, fMirrorRmax, fMirrorZ);
G4LogicalVolume* logicMirror =
new G4LogicalVolume(solidMirror, FindMaterial("G4_Al"), "Mirror");
logicMirror =
new G4LogicalVolume(solidMirror, aluminum, "Mirror");
G4OpticalSurface* mirrorSurface = new G4OpticalSurface(
"MirrorSurface", glisur, ground, dielectric_metal, fMirrorPolish);
@@ -476,7 +490,7 @@ void WLSDetectorConstruction::ConstructFiber()
G4VSolid* solidCouple = new G4Box("Couple", fCoupleRX, fCoupleRY, fCoupleZ);
G4LogicalVolume* logicCouple =
new G4LogicalVolume(solidCouple, FindMaterial("G4_AIR"), "Couple");
new G4LogicalVolume(solidCouple, air, "Couple");
new G4PVPlacement(0, G4ThreeVector(0., 0., fCoupleOrigin), logicCouple,
"Couple", fLogicWorld, false, 0);
@@ -493,7 +507,9 @@ void WLSDetectorConstruction::ConstructFiber()
fMPPCTheta = 0.;
fMPPCOriginX = std::sin(fMPPCTheta) * (fMPPCDist + fClrfiberZ);
fMPPCOriginZ = -fCoupleZ + std::cos(fMPPCTheta) * (fMPPCDist + fClrfiberZ);
G4cerr << "Invalid alignment. Alignment Reset to 0" << G4endl;
G4ExceptionDescription ed;
ed << "Invalid alignment. Alignment reset to 0.";
G4Exception("WLSDetectorConstruction", "wls002", JustWarning, ed);
}
// Clear Fiber (Coupling Layer)
@@ -511,7 +527,7 @@ void WLSDetectorConstruction::ConstructFiber()
}
G4LogicalVolume* logicClrfiber =
new G4LogicalVolume(solidClrfiber, FindMaterial("G4_AIR"), "ClearFiber");
new G4LogicalVolume(solidClrfiber, air, "ClearFiber");
new G4PVPlacement(new G4RotationMatrix(CLHEP::HepRotationY(-fMPPCTheta)),
G4ThreeVector(fMPPCOriginX, 0.0, fMPPCOriginZ),
@@ -530,7 +546,7 @@ void WLSDetectorConstruction::ConstructFiber()
solidPhotonDet = new G4Tubs("PhotonDet", 0., fMPPCHalfL, fMPPCZ, 0., twopi);
G4LogicalVolume* logicPhotonDet =
new G4LogicalVolume(solidPhotonDet, FindMaterial("G4_Al"), "PhotonDet_LV");
new G4LogicalVolume(solidPhotonDet, aluminum, "PhotonDet_LV");
new G4PVPlacement(0, G4ThreeVector(0., 0., 0.), logicPhotonDet, "PhotonDet",
logicClrfiber, false, 0);
@@ -553,8 +569,88 @@ void WLSDetectorConstruction::ConstructFiber()
new G4LogicalSkinSurface("PhotonDetSurface", logicPhotonDet,
photonDetSurface);
// visualization attributes -------------------------------------------------
auto visAttributes = new G4VisAttributes(G4Colour(1.0,1.0,1.0));
visAttributes->SetVisibility(false);
fLogicWorld->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.2,0.2,0.2,0.5));
visAttributes->SetVisibility(true);
logicExtrusion->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.0,0.0,1.0,0.9));
visAttributes->SetVisibility(true);
logicScintillator->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.0,0.8,0.2,0.2));
visAttributes->SetVisibility(true);
logicScintSide->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.0,0.8,0.2,0.2));
visAttributes->SetVisibility(true);
logicScintCrnr->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.4,0.0,0.0,0.5));
visAttributes->SetVisibility(true);
fLogicHole->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
if(logicClad1 != nullptr)
{
visAttributes = new G4VisAttributes(G4Colour(0.0,0.8,0.5,0.5));
visAttributes->SetVisibility(true);
logicClad1->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
}
if(logicClad2 != nullptr)
{
visAttributes = new G4VisAttributes(G4Colour(0.0,0.5,0.8,0.5));
visAttributes->SetVisibility(true);
logicClad2->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
}
visAttributes = new G4VisAttributes(G4Colour(0.8,0.8,1.0));
visAttributes->SetVisibility(true);
logicWLSfiber->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
if(fMirrorToggle == true)
{
visAttributes = new G4VisAttributes(G4Colour(0.3,0.3,1.0,0.3));
visAttributes->SetVisibility(true);
logicMirror->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
}
visAttributes = new G4VisAttributes(G4Colour(0.0,0.0,0.5,0.5));
visAttributes->SetVisibility(true);
logicCouple->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(0.3,0.3,0.3,0.5));
visAttributes->SetVisibility(true);
logicClrfiber->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
visAttributes = new G4VisAttributes(G4Colour(1.0,1.0,1.0,0.8));
visAttributes->SetVisibility(true);
logicPhotonDet->SetVisAttributes(visAttributes);
fVisAttributes.push_back(visAttributes);
return fPhysiWorld;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSDetectorConstruction::ConstructSDandField()
@@ -603,72 +699,13 @@ void WLSDetectorConstruction::UpdateGeometryParameters()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4RotationMatrix WLSDetectorConstruction::StringToRotationMatrix(
G4String rotation)
{
// We apply successive rotations OF THE OBJECT around the FIXED
// axes of the parent's local coordinates; rotations are applied
// left-to-right (rotation="r1,r2,r3" => r1 then r2 then r3).
G4RotationMatrix rot;
unsigned int place = 0;
while(place < rotation.size())
{
G4double angle;
char* p;
const G4String tmpstring = rotation.substr(place + 1);
angle = strtod(tmpstring.c_str(), &p) * deg;
if(!p || (*p != (char) ',' && *p != (char) '\0'))
{
G4cerr << "Invalid rotation specification: " << rotation.c_str()
<< G4endl;
return rot;
}
G4RotationMatrix thisRotation;
switch(rotation.substr(place, 1).c_str()[0])
{
case 'X':
case 'x':
thisRotation = G4RotationMatrix(CLHEP::HepRotationX(angle));
break;
case 'Y':
case 'y':
thisRotation = G4RotationMatrix(CLHEP::HepRotationY(angle));
break;
case 'Z':
case 'z':
thisRotation = G4RotationMatrix(CLHEP::HepRotationZ(angle));
break;
default:
G4cerr << " Invalid rotation specification: " << rotation << G4endl;
return rot;
}
rot = thisRotation * rot;
place = rotation.find(',', place);
if(place > rotation.size())
break;
++place;
}
return rot;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSDetectorConstruction::SetPhotonDetGeometry(G4String shape)
// Set the Geometry of the PhotonDet detector
// Pre: shape must be either "Circle" and "Square"
{
if(shape == "Circle" || shape == "Square")
fMPPCShape = shape;
G4RunManager::GetRunManager()->ReinitializeGeometry();
G4RunManager::GetRunManager()->GeometryHasBeenModified();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -35,8 +35,8 @@
#include "WLSPhotonDetHit.hh"
#include "WLSRun.hh"
#include "WLSRunAction.hh"
#include "WLSTrajectory.hh"
#include "G4AnalysisManager.hh"
#include "G4Event.hh"
#include "G4EventManager.hh"
#include "G4RunManager.hh"
@@ -75,7 +75,6 @@ void WLSEventAction::BeginOfEventAction(const G4Event*)
fClad1Bounce = 0;
fClad2Bounce = 0;
fReflected = 0;
fDetected = 0;
fEscaped = 0;
fMirror = 0;
}
@@ -108,6 +107,14 @@ void WLSEventAction::EndOfEventAction(const G4Event* evt)
n_hit = mppcHC->entries();
}
auto analysisManager = G4AnalysisManager::Instance();
analysisManager->FillH1(2, mppcHC->entries());
for (size_t i = 0; i < mppcHC->entries(); ++i) {
auto pdHit = (*mppcHC)[i];
analysisManager->FillH1(0, pdHit->GetEnergy());
analysisManager->FillH1(1, pdHit->GetArrivalTime());
}
if(fVerboseLevel > 1)
{
G4cout << "-------------------------------------" << G4endl
@@ -121,7 +128,6 @@ void WLSEventAction::EndOfEventAction(const G4Event* evt)
<< " Clad1 Bounce: " << fClad1Bounce << G4endl
<< " Clad2 Bounce: " << fClad2Bounce << G4endl
<< " Reflected: " << fReflected << G4endl
<< " Detected: " << fDetected << G4endl
<< " Escaped: " << fEscaped << G4endl
<< " Mirror: " << fMirror << G4endl
<< " Detector hit: " << n_hit << G4endl;
@@ -30,6 +30,8 @@
//
#include "WLSPhotonDetHit.hh"
#include "G4UnitsTable.hh"
G4ThreadLocal G4Allocator<WLSPhotonDetHit>* WLSPhotonDetHitAllocator = nullptr;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -37,6 +39,7 @@ G4ThreadLocal G4Allocator<WLSPhotonDetHit>* WLSPhotonDetHitAllocator = nullptr;
WLSPhotonDetHit::WLSPhotonDetHit()
{
fArrivalTime = 0.;
fEnergy = 0.;
fPosArrive = G4ThreeVector(0., 0., 0.);
fPosExit = G4ThreeVector(0., 0., 0.);
}
@@ -44,11 +47,12 @@ WLSPhotonDetHit::WLSPhotonDetHit()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhotonDetHit::WLSPhotonDetHit(G4ThreeVector pExit, G4ThreeVector pArrive,
G4double pTime)
G4double pTime, G4double pEnergy)
{
fPosExit = pExit;
fPosArrive = pArrive;
fArrivalTime = pTime;
fEnergy = pEnergy;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -70,6 +74,7 @@ const WLSPhotonDetHit& WLSPhotonDetHit::operator=(const WLSPhotonDetHit& right)
fPosExit = right.fPosExit;
fPosArrive = right.fPosArrive;
fArrivalTime = right.fArrivalTime;
fEnergy = right.fEnergy;
return *this;
}
@@ -79,5 +84,21 @@ const WLSPhotonDetHit& WLSPhotonDetHit::operator=(const WLSPhotonDetHit& right)
G4bool WLSPhotonDetHit::operator==(const WLSPhotonDetHit& right) const
{
return fPosExit == right.fPosExit && fPosArrive == right.fPosArrive &&
fArrivalTime == right.fArrivalTime;
fArrivalTime == right.fArrivalTime && fEnergy == right.fEnergy;
}
void WLSPhotonDetHit::Print()
{
G4cout
<< "Arrival time: "
<< std::setw(7) << G4BestUnit(fArrivalTime, "Time")
<< "Arrival position: ("
<< std::setw(7) << G4BestUnit(fPosArrive.x(), "Length") << ", "
<< std::setw(7) << G4BestUnit(fPosArrive.y(), "Length") << "); "
<< "Exit position: ("
<< std::setw(7) << G4BestUnit(fPosExit.x(), "Length") << ", "
<< std::setw(7) << G4BestUnit(fPosExit.y(), "Length") << "); "
<< "Energy: "
<< std::setw(7) << G4BestUnit(fEnergy, "Energy")
<< G4endl;
}
@@ -72,17 +72,7 @@ void WLSPhotonDetSD::Initialize(G4HCofThisEvent* HCE)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool WLSPhotonDetSD::ProcessHits(G4Step*, G4TouchableHistory*)
{
return false;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool WLSPhotonDetSD::ProcessHits_boundary(const G4Step* aStep,
G4TouchableHistory*)
// Generates a hit and uses the postStepPoint; PostStepPoint because the hit
// is generated manually when the photon hits the detector
G4bool WLSPhotonDetSD::ProcessHits(G4Step* aStep, G4TouchableHistory*)
{
if(!aStep)
return false;
@@ -106,6 +96,7 @@ G4bool WLSPhotonDetSD::ProcessHits_boundary(const G4Step* aStep,
G4ThreeVector photonExit = trackInformation->GetExitPosition();
G4ThreeVector photonArrive = thePostPoint->GetPosition();
G4double arrivalTime = theTrack->GetGlobalTime();
G4double energy = theTrack->GetTotalEnergy();
// Convert the global coordinate for arriving photons into
// the local coordinate of the detector
@@ -114,7 +105,19 @@ G4bool WLSPhotonDetSD::ProcessHits_boundary(const G4Step* aStep,
// Creating the hit and add it to the collection
fPhotonDetHitCollection->insert(
new WLSPhotonDetHit(photonExit, photonArrive, arrivalTime));
new WLSPhotonDetHit(photonExit, photonArrive, arrivalTime, energy));
return true;
}
void WLSPhotonDetSD::EndOfEvent(G4HCofThisEvent*)
{
if ( verboseLevel>1 ) {
G4int nofHits = fPhotonDetHitCollection->entries();
G4cout << G4endl
<< "-------->Hits Collection: in this event there are " << nofHits
<< " hits in the photon detector: " << G4endl;
for ( G4int i=0; i<nofHits; i++ ) (*fPhotonDetHitCollection)[i]->Print();
}
}
@@ -181,7 +181,7 @@ void WLSPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
}
// this does not work.
G4String cmd = "/gun/energy " + G4String(sampledEnergy / eV) + " eV";
G4String cmd = "/gun/energy " + G4UIcommand::ConvertToString(sampledEnergy / eV) + " eV";
G4UImanager::GetUIpointer()->ApplyCommand(cmd);
}
@@ -54,8 +54,6 @@ WLSRun::WLSRun()
fClad2Bounce2 = 0.;
fReflected = 0.;
fReflected2 = 0.;
fDetected = 0.;
fDetected2 = 0.;
fEscaped = 0.;
fEscaped2 = 0.;
fMirror = 0.;
@@ -92,8 +90,6 @@ void WLSRun::Merge(const G4Run* run)
fClad2Bounce2 += localRun->fClad2Bounce2;
fReflected += localRun->fReflected;
fReflected2 += localRun->fReflected2;
fDetected += localRun->fDetected;
fDetected2 += localRun->fDetected2;
fEscaped += localRun->fEscaped;
fEscaped2 += localRun->fEscaped2;
fMirror += localRun->fMirror;
@@ -184,14 +180,6 @@ void WLSRun::EndOfRun()
else
rmsReflected = 0.;
fDetected = fDetected / TotNbofEvents;
fDetected2 = fDetected2 / TotNbofEvents;
G4double rmsDetected = fDetected2 - fDetected * fDetected;
if(rmsDetected > 0.)
rmsDetected = std::sqrt(rmsDetected);
else
rmsDetected = 0.;
fEscaped = fEscaped / TotNbofEvents;
fEscaped2 = fEscaped2 / TotNbofEvents;
G4double rmsEscaped = fEscaped2 - fEscaped * fEscaped;
@@ -229,7 +217,6 @@ void WLSRun::EndOfRun()
<< " +- " << rmsClad1Bounce << G4endl
<< " Clad2 Bounce: " << fClad2Bounce << " +- " << rmsClad2Bounce
<< G4endl << " Reflected: " << fReflected << " +- " << rmsReflected
<< G4endl << " Detected: " << fDetected << " +- " << rmsDetected
<< G4endl << " Escaped: " << fEscaped << " +- " << rmsEscaped
<< G4endl << " Mirror: " << fMirror << " +- " << rmsMirror
<< G4endl << " Detector hit: " << fDetectorHits << " +- "
@@ -35,6 +35,7 @@
#include "WLSRun.hh"
#include "WLSSteppingAction.hh"
#include "G4AnalysisManager.hh"
#include "G4Run.hh"
#include "G4RunManager.hh"
#include "Randomize.hh"
@@ -43,7 +44,20 @@
WLSRunAction::WLSRunAction()
: fRun(nullptr)
{}
{
auto analysisManager = G4AnalysisManager::Instance();
analysisManager->SetDefaultFileType("root");
analysisManager->SetVerboseLevel(1);
G4cout << "Using " << analysisManager->GetType() << G4endl;
analysisManager->CreateH1("Energy", "Energy of optical photon", 100,
2.*CLHEP::eV, 3.2*CLHEP::eV);
analysisManager->CreateH1("Time", "Arrival time", 100, 0., 100.*CLHEP::ns);
analysisManager->CreateH1("Number of photons", "Number of photons", 100, 0., 100.);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -57,12 +71,37 @@ G4Run* WLSRunAction::GenerateRun()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSRunAction::BeginOfRunAction(const G4Run*) {}
void WLSRunAction::BeginOfRunAction(const G4Run*)
{
G4AnalysisManager::Instance()->OpenFile("wls");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSRunAction::EndOfRunAction(const G4Run*)
{
auto analysisManager = G4AnalysisManager::Instance();
if (analysisManager->GetH1(0)) {
G4cout << G4endl << " ----> print histograms statistics ";
if(isMaster)
{
G4cout << "for the entire run " << G4endl << G4endl;
}
else {
G4cout << "for the local thread " << G4endl << G4endl;
}
G4cout << " Mean number of photons detected/event: "
<< analysisManager->GetH1(2)->mean()
<< " rms = "
<< analysisManager->GetH1(2)->rms() << G4endl;
}
analysisManager->Write();
analysisManager->CloseFile();
if(isMaster)
fRun->EndOfRun();
}
@@ -199,7 +199,7 @@ void WLSSteppingAction::UserSteppingAction(const G4Step* theStep)
// Record Photons that missed the photon detector but escaped from readout
if(!thePostPV && trackInformation->IsStatus(EscapedFromReadOut))
{
G4cout << "SteppingAction: status = EscapedFromReadOut" << G4endl;
//G4cout << "SteppingAction: status = EscapedFromReadOut" << G4endl;
fEventAction->AddEscaped();
// UpdateHistogramSuccess(thePostPoint,theTrack);
ResetCounters();
@@ -308,7 +308,7 @@ void WLSSteppingAction::UserSteppingAction(const G4Step* theStep)
}
return;
// Reflection of the mirror
// Reflection off the mirror
case LambertianReflection:
case LobeReflection:
case SpikeReflection:
@@ -324,30 +324,12 @@ void WLSSteppingAction::UserSteppingAction(const G4Step* theStep)
// Detected by a detector
case Detection:
// Detected automatically with G4OpBoundaryProcess->InvokeSD set true
// Check if the photon hits the detector and process the hit if it does
if(thePostPVname == "PhotonDet")
{
// G4cout << "Detection" << G4endl;
fEventAction->AddDetected();
G4SDManager* SDman = G4SDManager::GetSDMpointer();
G4String SDname = "WLS/PhotonDet";
WLSPhotonDetSD* mppcSD =
(WLSPhotonDetSD*) SDman->FindSensitiveDetector(SDname);
if(mppcSD)
mppcSD->ProcessHits_boundary(theStep, nullptr);
// Record Photons that escaped at the end
// if (trackInformation->IsStatus(EscapedFromReadOut))
// UpdateHistogramSuccess(thePostPoint,theTrack);
// Stop Tracking when it hits the detector's surface
ResetCounters();
theTrack->SetTrackStatus(fStopAndKill);
return;
}
break;
// Stop Tracking when it hits the detector's surface
ResetCounters();
theTrack->SetTrackStatus(fStopAndKill);
return;
default:
break;
@@ -36,6 +36,7 @@
#include "G4Step.hh"
#include "G4StepStatus.hh"
#include "G4Track.hh"
#include "G4UIcommand.hh"
#include "G4UnitsTable.hh"
#include "G4VProcess.hh"
@@ -136,7 +137,7 @@ std::vector<G4AttValue>* WLSTrajectoryPoint::CreateAttValues() const
values->push_back(G4AttValue("Time", G4BestUnit(fTime, "Time"), ""));
values->push_back(
G4AttValue("Momentum", G4BestUnit(fMomentum, "Momentum"), ""));
values->push_back(G4AttValue("StepStatus", fStepStatus, ""));
values->push_back(G4AttValue("StepStatus", G4UIcommand::ConvertToString(fStepStatus), ""));
values->push_back(G4AttValue("VolumeName", fVolumeName, ""));
return values;
+40 -2
View File
@@ -5,6 +5,28 @@
#
/control/verbose 2
/run/verbose 2
/WLS/setPhotonDetGeometry Circle
/WLS/setNumOfLayers 2
/WLS/setSurfaceRoughness 0.999
/WLS/setXYRatio 0.8
/WLS/setWLSLength 1. m
/WLS/setWLSRadius 0.5 mm
/WLS/setClad1Radius 0.3 mm
/WLS/setClad2Radius 0.1 mm
#
/WLS/setPhotonDetHalfLength 0.6 mm
/WLS/setGap 0.15 mm
/WLS/setAlignment 0.1 deg
/WLS/setMirror true
/WLS/setBarLength 1.1 m
/WLS/setBarBase 9.5 mm
/WLS/setHoleRadius 0.9 mm
/WLS/setCoatingThickness 0.3 mm
/WLS/setCoatingRadius 1.775 mm
/run/initialize
#
# Use this open statement to create an OpenGL view:
@@ -34,10 +56,10 @@
#/vis/viewer/set/viewpointThetaPhi 90. 0.
#
# Specify zoom value:
/vis/viewer/zoom 1.4
/vis/viewer/zoom 20
#
# Specify style (surface or wireframe):
#/vis/viewer/set/style wireframe
/vis/viewer/set/style surface
#
# Draw coordinate axes:
#/vis/scene/add/axes 0 0 0 1 m
@@ -75,3 +97,19 @@
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
/gps/particle e-
/gps/energy 10 MeV
/gps/pos/type Plane
/gps/pos/shape Circle
/gps/pos/radius 0.5 mm
/gps/pos/centre 0.0 0.0 0.0 cm
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
/gps/ang/type iso
/gps/ang/mintheta 0.0 deg
/gps/ang/maxtheta 90.0 deg
+4
View File
@@ -69,6 +69,10 @@ int main(int argc, char** argv)
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
auto opticalParams = G4OpticalParameters::Instance();
opticalParams->SetBoundaryInvokeSD(true);
physicsList->RegisterPhysics(opticalPhysics);
runManager->SetUserInitialization(physicsList);
+162 -164
View File
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
**************************************************************
Geant4 version Name: geant4-10-07-ref-06 (25-June-2021)
Geant4 version Name: geant4-10-07-ref-07 (31-August-2021)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -33,7 +33,6 @@ Registered graphics systems are:
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateQt (OGLIQt, OGLI)
@@ -202,29 +201,29 @@ has been modified since last Run.
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 174 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 meV Emax= 100 TeV SauterGavrila Fluo
LivermorePhElectric : Emin= 0 Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 20 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 160 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEPComptonModel : Emin= 0 meV Emax= 20 MeV Fluo
LowEPComptonModel : Emin= 0 Emax= 20 MeV Fluo
KleinNishina : Emin= 20 MeV Emax= 100 TeV Fluo
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler5D : Emin= 0 meV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 180 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 meV Emax= 100 TeV CullenGenerator
LivermoreRayleigh : Emin= 0 Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
GoudsmitSaunderson : Emin= 0 Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
@@ -234,7 +233,7 @@ eIoni: for e- XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEnergyIoni : Emin= 0 meV Emax= 100 keV deltaVI
LowEnergyIoni : Emin= 0 Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- XStype:4 SubType=3
@@ -242,7 +241,7 @@ eBrem: for e- XStype:4 SubType=3
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- XStype:1 SubType=4
@@ -250,7 +249,7 @@ ePairProd: for e- XStype:1 SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for e- XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
@@ -260,7 +259,7 @@ CoulombScat: for e- XStype:3 SubType=1 BuildTable=1
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
GoudsmitSaunderson : Emin= 0 meV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
GoudsmitSaunderson : Emin= 0 Emax= 100 MeV Nbins=120 100 eV - 100 MeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
StepLim=SafetyPlus Rfact=0.08 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
@@ -270,7 +269,7 @@ eIoni: for e+ XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
PenIoni : Emin= 0 meV Emax= 100 keV
PenIoni : Emin= 0 Emax= 100 keV
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e+ XStype:4 SubType=3
@@ -278,7 +277,7 @@ eBrem: for e+ XStype:4 SubType=3
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 meV Emax= 1 GeV AngularGen2BS
eBremSB : Emin= 0 Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ XStype:1 SubType=4
@@ -286,11 +285,11 @@ ePairProd: for e+ XStype:1 SubType=4
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
ePairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
annihil: for e+ XStype:2 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 meV Emax= 100 TeV
eplus2gg : Emin= 0 Emax= 100 TeV
CoulombScat: for e+ XStype:3 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
@@ -300,7 +299,7 @@ CoulombScat: for e+ XStype:3 SubType=1 BuildTable=1
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for proton XStype:1 SubType=2
@@ -308,35 +307,35 @@ hIoni: for proton XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax= 2 MeV deltaVI
Bragg : Emin= 0 Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
nuclearStopping: for proton SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 Emax= 1 MeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 TeV
UrbanMsc : Emin= 0 Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for GenericIon XStype:1 SubType=2
@@ -344,15 +343,15 @@ ionIoni: for GenericIon XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
ParamICRU73 : Emin= 0 meV Emax= 100 TeV deltaVI
ParamICRU73 : Emin= 0 Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 Emax= 1 MeV
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 TeV
UrbanMsc : Emin= 0 Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
ionIoni: for alpha XStype:1 SubType=2
@@ -360,16 +359,16 @@ ionIoni: for alpha XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 meV Emax=7.9452 MeV deltaVI
BraggIon : Emin= 0 Emax=7.9452 MeV deltaVI
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV deltaVI
nuclearStopping: for alpha SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 meV Emax= 1 MeV
ICRU49NucStopping : Emin= 0 Emax= 1 MeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for anti_proton XStype:1 SubType=2
@@ -377,31 +376,31 @@ hIoni: for anti_proton XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax= 2 MeV deltaVI
ICRU73QO : Emin= 0 Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon+ XStype:1 SubType=2
@@ -409,31 +408,31 @@ hIoni: for kaon+ XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax=1.05231 MeV deltaVI
Bragg : Emin= 0 Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for kaon- XStype:1 SubType=2
@@ -441,31 +440,31 @@ hIoni: for kaon- XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax=1.05231 MeV deltaVI
ICRU73QO : Emin= 0 Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon- XStype:3 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 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu+ XStype:1 SubType=2
@@ -473,7 +472,7 @@ muIoni: for mu+ XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax= 200 keV deltaVI
Bragg : Emin= 0 Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
@@ -481,24 +480,24 @@ muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
muIoni: for mu- XStype:1 SubType=2
@@ -506,7 +505,7 @@ muIoni: for mu- XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax= 200 keV deltaVI
ICRU73QO : Emin= 0 Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
@@ -514,24 +513,24 @@ muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for mu- XStype:3 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 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi+ XStype:1 SubType=2
@@ -539,31 +538,31 @@ hIoni: for pi+ XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax=297.505 keV deltaVI
Bragg : Emin= 0 Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
WentzelVIUni : Emin= 0 Emax= 100 TeV Nbins=240 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=3 Llim=1 mm
hIoni: for pi- XStype:1 SubType=2
@@ -571,27 +570,27 @@ hIoni: for pi- XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.05 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax=297.505 keV deltaVI
ICRU73QO : Emin= 0 Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 Emax= 100 TeV ModifiedMephi
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 Emax= 100 TeV ModifiedMephi
CoulombScat: for pi- XStype:3 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 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 Emax= 100 TeV
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
@@ -600,17 +599,17 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 meV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 meV ---> 100 TeV
Model: hElasticCHIPS: 0 ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 meV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 meV ---> 100 TeV
Model: nRadCapture: 0 ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 ---> 100 TeV
Process: nKiller
@@ -618,67 +617,67 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for B-
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: B-Inelastic
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: FTFP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for D-
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: D-Inelastic
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: FTFP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Model: hElasticLHEP: 0 /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Model: hElasticLHEP: 0 /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for anti_He3
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_He3Inelastic
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -686,13 +685,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_alpha
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_alphaInelastic
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -700,13 +699,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_deuteron
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_deuteronInelastic
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -714,12 +713,12 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_lambda
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: anti_lambdaInelastic
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: FTFP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: hFritiofCaptureAtRest
@@ -727,13 +726,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100.1 MeV
Model: hElasticLHEP: 0 ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_neutronInelastic
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -741,13 +740,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_proton
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100.1 MeV
Model: hElasticLHEP: 0 ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_protonInelastic
Model: FTFP: 0 meV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -755,13 +754,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for anti_triton
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100.1 MeV/n
Model: hElasticLHEP: 0 /n ---> 100.1 MeV/n
Model: AntiAElastic: 100 MeV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: anti_tritonInelastic
Model: FTFP: 0 meV/n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 meV ---> 25.6 PeV
Model: FTFP: 0 /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 ---> 25.6 PeV
Process: hFritiofCaptureAtRest
@@ -769,60 +768,60 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Model: hElasticLHEP: 0 /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
---------------------------------------------------
Hadronic Processes for e+
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 meV ---> 100 TeV
Process: positronNuclear
Model: G4ElectroVDNuclearModel: 0 ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e-
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 meV ---> 100 TeV
Model: G4ElectroVDNuclearModel: 0 ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for gamma
Process: photonNuclear
Model: GammaNPreco: 0 meV ---> 200 MeV
Model: GammaNPreco: 0 ---> 200 MeV
Model: BertiniCascade: 199 MeV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 meV ---> 100 TeV
Cr_sctns: GammaNuclearXS: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon+
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -830,27 +829,27 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for lambda
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: lambdaInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 meV ---> 100 TeV
Model: G4MuonVDNuclearModel: 0 ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu-
Process: muonNuclear
Model: G4MuonVDNuclearModel: 0 meV ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 meV ---> 100 TeV
Model: G4MuonVDNuclearModel: 0 ---> 1 PeV
Cr_sctns: KokoulinMuonNuclearXS: 0 ---> 100 TeV
Process: muMinusCaptureAtRest
@@ -858,25 +857,25 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticGlauber: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: hElasticGlauber: 0 ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticGlauber: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: hElasticGlauber: 0 ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -884,25 +883,25 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for proton
Process: hadElastic
Model: hElasticCHIPS: 0 meV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: hElasticCHIPS: 0 ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for sigma-
Process: hadElastic
Model: hElasticLHEP: 0 meV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: hElasticLHEP: 0 ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: sigma-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 meV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 meV ---> 100 TeV
Model: BertiniCascade: 0 ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -910,13 +909,13 @@ CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Hadronic Processes for triton
Process: hadElastic
Model: hElasticLHEP: 0 meV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Model: hElasticLHEP: 0 /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 meV/n ---> 6 GeV/n
Model: Binary Light Ion Cascade: 0 /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 meV ---> 25.6 PeV
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 ---> 25.6 PeV
================================================================
=======================================================================
@@ -939,7 +938,6 @@ Time limit for long lived isomeres (ns) 1
Isomer production flag 1
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 3
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
=======================================================================
@@ -1149,7 +1147,7 @@ See commands in /vis/modeling/trajectories/ for other options.
Run terminated.
Run Summary
Number of events processed : 10
User=0.020000s Real=0.013587s Sys=0.000000s
User=0.020000s Real=0.013951s Sys=0.000000s
======================== run summary =====================
Average number per event:
@@ -1231,7 +1229,7 @@ SteppingAction: status = EscapedFromReadOut
Run terminated.
Run Summary
Number of events processed : 10000
User=16.500000s Real=17.202119s Sys=0.030000s
User=17.800000s Real=18.160260s Sys=0.050000s
======================== run summary =====================
Average number per event: