Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
+9 -9
View File
@@ -42,7 +42,7 @@ wls.mac implements a scintillating slab and wavelength shifting fibers.
6 "photons absorbed at boundary per event"
7 "energy deposition in scintillator per event"
\section LXe_s5 How to start?
\section LXe_s6 How to start?
- execute LXe in 'batch' mode from macro files, e.g.
$ ./LXe cerenkov.mac
@@ -52,7 +52,7 @@ wls.mac implements a scintillating slab and wavelength shifting fibers.
Then type commands, for instance
Session: /run/beamOn 1
\section LXe_s6 Detailed Explanation of Geometry Implementation
\section LXe_s7 Detailed Explanation of Geometry Implementation
The way the geometry is constructed is an experiment for a new, more object
oriented, way to construct geometry. It separates the concept of how a volume
@@ -100,7 +100,7 @@ and defined only once.
The updated variable is to signal that the volume needs to be updated and a new
logical volume made.
\section LXe_s7 Modifying the geometry at runtime
\section LXe_s8 Modifying the geometry at runtime
This example allows the user to modify the geometry definition at runtime. This
is accomplished through LXeDetectorMessenger, a derived class of G4UImessenger.
@@ -120,7 +120,7 @@ are used when constructing the geometry.
}
\endverbatim
\section LXe_s7 PMT sensitive detector
\section LXe_s9 PMT sensitive detector
The PMT sensitive detector cannot be triggered like a normal sensitive detector
because the sensitive volume does not allow photons to pass through it. Rather,
@@ -173,7 +173,7 @@ from G4SDManager and call its ProcessHits function.
}
\endverbatim
\section LXe_s8 Selectively drawing trajectories or highlighting volumes
\section LXe_s10 Selectively drawing trajectories or highlighting volumes
In a simulation such as this one, where an average of 6000 trajectories are
generated in a small space, there is little use in drawing all of them. There
@@ -219,7 +219,7 @@ the logic used in choosing which trajectories to draw.
See /LXe/detector/volumes/sphere in "UI commands" below for info on what
trajectories are drawn in this simulation.
\section LXe_s9 Saving random engine seeds
\section LXe_s11 Saving random engine seeds
At times it may be necessary to review a particular event of interest. To do
this without redoing an entire run, which may take a long time, you must store
@@ -234,7 +234,7 @@ When set to true, this causes the run manager to write the seed for the
beginning of the current run to CurrentRun.rndm and the current event to
CurrentEvent.rndm. However, at the beginning of each event this file will be
overwritten with the new event. To keep a copy for a particular event there is
a function to copy this file to run###evt###.rndm.
a function to copy this file to "run###evt###.rndm".
\verbatim
G4RunManager::rndmSaveThisEvent()
@@ -252,7 +252,7 @@ directory to save in must exist first. GEANT4 will not create it for you.
G4RunManager::SetRandomNumberStoreDir(G4String)
\endverbatim
\section LXe_s10 UI commands
\section LXe_s12 UI commands
Directories:
\verbatim
@@ -267,7 +267,7 @@ Commands:
\endverbatim
-Specifies a threshold for saving the random seed for an event. If the number
of photons generated in an event is below this number then the random seed is
saved to ./random/run###evt###.rndm. See "Saving random engine seeds".
saved to "./random/run###evt###.rndm". See "Saving random engine seeds".
\verbatim
/LXe/eventVerbose <int, default = 1>
+16
View File
@@ -14,6 +14,22 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
November 28, 2019 I. Hrivnacova (LXe-V10-05-05)
- Fixed Doxygen warnings in .README.txt
November 26, 2019 I. Hrivnacova (LXe-V10-05-04)
- Fixed formatting in .README.txt and Doxygen warnings
October 29, 2019 D. Sawkey (LXe-V10-05-03)
- wls.mac, cerenkov.mac: unique analysis filenames
October 28, 2019 D. Sawkey (LXe-V10-05-02)
- LXePMTSD.cc, LXeDetectorConstruction.cc - update PMT positions when changing
number of PMTs
October 15, 2019 D. Sawkey (LXe-V10-05-01)
- wls.mac, cerenkov.mac - fewer particles
May 24, 2019 D. Sawkey (LXe-V10-05-00)
- LXeDetectorConstruction - remove protection against rebuilding detector
- LXeEventAction - randomSaveEvent not working so comment out
+90 -88
View File
@@ -1,6 +1,10 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
**************************************************************
Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
Geant4 version Name: geant4-10-06-ref-00 (6-December-2019)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,7 +12,7 @@
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
<<< Geant4 Physics List simulation engine: FTFP_BERT
G4VModularPhysicsList::ReplacePhysics: G4EmStandardwith type : 2 is replaces with G4EmStandard_opt4
Visualization Manager instantiating with verbosity "warnings (3)"...
@@ -60,10 +64,10 @@ Construction /LXeDet/pmtSD
Construction /LXeDet/scintSD
FTFP_BERT : new threshold between BERT and FTFP is over the interval
for pions : 3 to 12 GeV
for kaons : 3 to 12 GeV
for proton : 3 to 12 GeV
for neutron : 3 to 12 GeV
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
### Birks coefficients used in run time
@@ -89,9 +93,7 @@ compt: for gamma SubType=13 BuildTable=1
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 ======
PenConversion : Emin= 0 eV Emax= 20 MeV
BetheHeitler : Emin= 20 MeV Emax= 80 GeV ModifiedTsai
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
@@ -476,7 +478,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
@@ -489,8 +491,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -501,8 +503,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -513,8 +515,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -563,8 +565,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
@@ -608,14 +611,14 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
@@ -630,7 +633,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for gamma
Process: photonNuclear
Model: BertiniCascade: 0 eV ---> 3.5 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
@@ -643,9 +646,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
@@ -656,9 +658,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -671,8 +672,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
@@ -694,26 +695,24 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -727,7 +726,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -738,8 +737,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
================================================================
@@ -748,21 +747,24 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
Pre-compound low energy (MeV) 0.1
Pre-compound excitation low energy (MeV) 0.1
Pre-compound excitation high energy (MeV) 30
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
Min energy per nucleon for multifragmentation (MeV) 1e+05
Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
Level density (1/MeV) 0.075
Model of level density flag 1
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
========= Table of registered couples ==============================
@@ -800,9 +802,9 @@ Index : 3 used in the geometry : Yes
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 starts.
Energy weighted position of hits in LXe : (6.57173,-10.9046,-101.128)
Energy weighted position of hits in LXe : (6.57187,-10.9049,-101.128)
Total energy deposition in scintillator : 397.837 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (1.28432,-3.61922,-19.9117)
WARNING: G4VisManager::IsValidView(): Attempt to draw when no graphics system
has been instantiated. Use "/vis/open" or "/vis/sceneHandler/create".
Alternatively, to avoid this message, suppress instantiation of vis
@@ -818,7 +820,7 @@ Unaccounted for photons in this event : 0
Run terminated.
Run Summary
Number of events processed : 1
User=0.060000s Real=0.069703s Sys=0.000000s
User=0.040000s Real=0.041733s Sys=0.010000s
======================== run summary ======================
The run was 1 events.
@@ -864,9 +866,9 @@ Index : 3 used in the geometry : Yes
====================================================================
### Run 1 starts.
Energy weighted position of hits in LXe : (2.49609,2.75035,-98.0652)
Energy weighted position of hits in LXe : (2.49614,2.7504,-98.065)
Total energy deposition in scintillator : 537.024 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (1.40728,2.4522,-20.0827)
Number of photons that hit PMTs in this event : 1364
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5046
@@ -874,9 +876,9 @@ Index : 3 used in the geometry : Yes
Number of photons absorbed (OpAbsorption) in this event : 3682
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (0.0615119,-2.78626,-91.1114)
Energy weighted position of hits in LXe : (0.0615129,-2.78631,-91.111)
Total energy deposition in scintillator : 536.004 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (-1.51165,0.787524,-20.7863)
Number of photons that hit PMTs in this event : 1474
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5010
@@ -884,9 +886,9 @@ Unaccounted for photons in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3536
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-2.32775,-0.0358212,-89.5269)
Energy weighted position of hits in LXe : (-2.32778,-0.0358351,-89.5265)
Total energy deposition in scintillator : 538.496 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (2.04655,0.390137,-21.1603)
Number of photons that hit PMTs in this event : 1482
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5373
@@ -894,9 +896,9 @@ Unaccounted for photons in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3891
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-3.21847,3.82021,-71.9622)
Energy weighted position of hits in LXe : (-3.22631,3.81231,-71.956)
Total energy deposition in scintillator : 537.361 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (-3.10581,2.58855,-24.8646)
Number of photons that hit PMTs in this event : 1551
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5280
@@ -904,19 +906,19 @@ Unaccounted for photons in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3729
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (0.302159,0.56721,-102.03)
Total energy deposition in scintillator : 539.174 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Number of photons that hit PMTs in this event : 1443
Energy weighted position of hits in LXe : (0.306863,0.568819,-102.037)
Total energy deposition in scintillator : 539.139 (keV)
Reconstructed position of hits in LXe : (-2.34309,1.69399,-17.6345)
Number of photons that hit PMTs in this event : 1448
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5428
Number of photons produced by cerenkov in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3985
Number of photons absorbed (OpAbsorption) in this event : 3980
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-28.9681,5.80242,-84.4603)
Energy weighted position of hits in LXe : (-28.9686,5.80253,-84.4598)
Total energy deposition in scintillator : 536.904 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Reconstructed position of hits in LXe : (-7.13119,3.32701,-23.1916)
Number of photons that hit PMTs in this event : 1606
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5270
@@ -924,66 +926,66 @@ Unaccounted for photons in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3664
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-9.57001,0.707628,-74.8538)
Total energy deposition in scintillator : 537.977 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Number of photons that hit PMTs in this event : 1483
Energy weighted position of hits in LXe : (-9.61,0.634004,-74.8345)
Total energy deposition in scintillator : 538.456 (keV)
Reconstructed position of hits in LXe : (-1.76512,0.78514,-21.6676)
Number of photons that hit PMTs in this event : 1589
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5300
Number of photons produced by scintillation in this event : 5474
Number of photons produced by cerenkov in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3817
Number of photons absorbed (OpAbsorption) in this event : 3885
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-11.9823,-8.21268,-29.2203)
Total energy deposition in scintillator : 536.679 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Number of photons that hit PMTs in this event : 1531
Energy weighted position of hits in LXe : (0.0363846,0.105927,1.02407)
Total energy deposition in scintillator : 537.816 (keV)
Reconstructed position of hits in LXe : (0.0886957,-1.9392,-3.10788)
Number of photons that hit PMTs in this event : 1566
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5163
Number of photons produced by scintillation in this event : 5359
Number of photons produced by cerenkov in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3632
Number of photons absorbed (OpAbsorption) in this event : 3793
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (5.31057,19.3064,9.94298)
Total energy deposition in scintillator : 537.652 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Number of photons that hit PMTs in this event : 1477
Energy weighted position of hits in LXe : (-37.9051,4.79651,-58.1883)
Total energy deposition in scintillator : 534.116 (keV)
Reconstructed position of hits in LXe : (-5.24428,2.10736,-21.589)
Number of photons that hit PMTs in this event : 1351
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 5247
Number of photons produced by scintillation in this event : 4621
Number of photons produced by cerenkov in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 3770
Number of photons absorbed (OpAbsorption) in this event : 3270
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Energy weighted position of hits in LXe : (-0.0552048,-0.0042507,-107.28)
Total energy deposition in scintillator : 351.028 (keV)
Reconstructed position of hits in LXe : (0,0,0)
Number of photons that hit PMTs in this event : 973
Energy weighted position of hits in LXe : (17.9054,-5.11137,-52.179)
Total energy deposition in scintillator : 537.172 (keV)
Reconstructed position of hits in LXe : (6.4645,-2.30882,-22.6731)
Number of photons that hit PMTs in this event : 1566
Number of PMTs above threshold(2) : 32
Number of photons produced by scintillation in this event : 3638
Number of photons produced by scintillation in this event : 5268
Number of photons produced by cerenkov in this event : 0
Number of photons absorbed (OpAbsorption) in this event : 2665
Number of photons absorbed (OpAbsorption) in this event : 3702
Number of photons absorbed at boundaries (OpBoundary) in this event : 0
Unaccounted for photons in this event : 0
Run terminated.
Run Summary
Number of events processed : 10
User=0.630000s Real=0.645956s Sys=0.010000s
User=0.540000s Real=0.549259s Sys=0.000000s
======================== run summary ======================
The run was 10 events.
Number of hits per event: 1438 +- 52.74
Number of hits per event: 1500 +- 27.36
Number of hits per event above threshold: 32 +- 0
Number of scintillation photons per event : 5076 +- 156.6
Number of scintillation photons per event : 5213 +- 76.91
Number of Cerenkov photons per event: 0 +- 0
Number of absorbed photons per event : 3637 +- 109.6
Number of absorbed photons per event : 3713 +- 60.85
Number of photons absorbed at boundary per event: 0 +- 0
Total energy deposition in scintillator per event: 518.8 +- 17.69 keV.
Total energy deposition in scintillator per event: 537.2 +- 0.4297 keV.
Graphics systems deleted.
Visualization Manager deleting...
G4 kernel has come to Quit state.
================== Deleting memory pools ===================
Number of memory pools allocated: 15 of which, static: 0
Dynamic pools deleted: 15 / Total memory freed: 2 MB
Dynamic pools deleted: 15 / Total memory freed: 2.7 MB
============================================================
RunManagerKernel is deleted. Good bye :)
+6 -8
View File
@@ -6,20 +6,17 @@
##
#################
/run/initialize
/control/verbose 1
/tracking/verbose 0
/run/verbose 1
/LXe/eventVerbose 0
/process/optical/processActivation Scintillation false
/run/initialize
/LXe/eventVerbose 0
/LXe/detector/defaults
/LXe/oneStepPrimaries false
#This currently causes the program to crash due to a bug in geant4
#Uncomment it once that bug has been fixed. Until then, to use this,
#modify LXePhysicsList to disable scintillation.
#/process/inactivate Scintillation
/LXe/detector/MainScintYield 0
/LXe/detector/nx 20
@@ -41,6 +38,7 @@
#reset from a random seed that shows a good cone
#/random/resetEngineFrom random/goodCerenkov.rndm
/analysis/setFileName cerenkov
/analysis/h1/set 1 100 -1 50
/analysis/h1/set 2 100 -1 50
/analysis/h1/set 4 100 -1 200
@@ -49,4 +47,4 @@
/analysis/h1/set 7 100 0 20 MeV
/run/printProgress 1000
/run/beamOn 100000
/run/beamOn 10000
@@ -60,13 +60,13 @@ class LXePMTSD : public G4VSensitiveDetector
void PrintAll();
//Initialize the arrays to store pmt possitions
inline void InitPMTs(G4int nPMTs){
inline void InitPMTs(){
if(fPMTPositionsX)delete fPMTPositionsX;
if(fPMTPositionsY)delete fPMTPositionsY;
if(fPMTPositionsZ)delete fPMTPositionsZ;
fPMTPositionsX=new G4DataVector(nPMTs);
fPMTPositionsY=new G4DataVector(nPMTs);
fPMTPositionsZ=new G4DataVector(nPMTs);
fPMTPositionsX = new G4DataVector();
fPMTPositionsY = new G4DataVector();
fPMTPositionsZ = new G4DataVector();
}
//Store a pmt position
@@ -23,8 +23,8 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file optical/LXe/include/Run.hh
/// \brief Definition of the Run class
/// \file optical/LXe/include/LXeRun.hh
/// \brief Definition of the LXeRun class
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -307,15 +307,20 @@ void LXeDetectorConstruction::ConstructSDandField() {
// PMT SD
if (!fPmt_SD.Get()) {
LXePMTSD* pmt = fPmt_SD.Get();
if (!pmt) {
//Created here so it exists as pmts are being placed
G4cout << "Construction /LXeDet/pmtSD" << G4endl;
LXePMTSD* pmt_SD = new LXePMTSD("/LXeDet/pmtSD");
fPmt_SD.Put(pmt_SD);
pmt_SD->InitPMTs((fNx*fNy+fNx*fNz+fNy*fNz)*2); //let pmtSD know # of pmts
pmt_SD->InitPMTs();
pmt_SD->SetPmtPositions(fMainVolume->GetPmtPositions());
}
else {
pmt->InitPMTs();
pmt->SetPmtPositions(fMainVolume->GetPmtPositions());
}
G4SDManager::GetSDMpointer()->AddNewDetector(fPmt_SD.Get());
//sensitive detector is not actually on the photocathode.
//processHits gets done manually by the stepping action.
+2 -1
View File
@@ -14,9 +14,10 @@
/gun/particle e-
/gun/energy 511 keV
/analysis/setFileName wls
/analysis/h1/set 3 100 -1 10000
/analysis/h1/set 4 100 -1 100
/analysis/h1/set 5 100 -1 10000
/run/printProgress 10
/run/beamOn 1000
/run/beamOn 100
@@ -14,7 +14,7 @@ examples/extended/optical/LXe and wls
Define Random Number Engine and initial seed
\section ExampleOpNovice_s2 G4VUserPhysicsList
\section ExampleOpNovice_s2 G4OpticalPhysics
- Define particles; including - *** G4OpticalPhoton ***
- Define processes; including
@@ -24,7 +24,7 @@ examples/extended/optical/LXe and wls
- *** G4OpRayleigh ***
- *** G4OpBoundaryProcess ***
A messenger command allows to define interactivly the
A messenger command allows to define interactively the
verbose level and the maximum number of Cerenkov photons per step
(see for instance OpNovice.in)
@@ -41,7 +41,7 @@ examples/extended/optical/LXe and wls
Use G4ParticleGun to shoot a charge particle into a Cerenkov radiator
A messenger command allows to define interactivly the polarization of an
A messenger command allows to define interactively the polarization of an
primary optical photon (see for instance optPhoton.mac)
\section ExampleOpNovice_s5 G4UserRunAction
@@ -66,10 +66,6 @@ examples/extended/optical/LXe and wls
\section ExampleOpNovice_s8 How to start
- compile and link to generate an executable
\verbatim
% cd OpNovice
% gmake
\endverbatim
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
@@ -14,6 +14,10 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
October 29, 2019 D. Sawkey (OpNovice-V10-05-00)
- Use G4OpticalPhysics and G4SteppingVerbose
- remove unused surface parameters
July 31, 2018 I. Hrivnacova (OpNovice-V10-04-02)
- Macro review:
- Added test for /OpNovice/phys/cerenkovMaxPhotons command at the end
+11 -11
View File
@@ -53,9 +53,11 @@
#include "G4UImanager.hh"
#include "OpNovicePhysicsList.hh"
#include "OpNoviceDetectorConstruction.hh"
#include "FTFP_BERT.hh"
#include "G4OpticalPhysics.hh"
#include "G4EmStandardPhysics_option4.hh"
#include "OpNoviceDetectorConstruction.hh"
#include "OpNoviceActionInitialization.hh"
#include "G4VisExecutive.hh"
@@ -132,23 +134,21 @@ int main(int argc,char** argv)
// Detector construction
runManager-> SetUserInitialization(new OpNoviceDetectorConstruction());
// Physics list
runManager-> SetUserInitialization(new OpNovicePhysicsList());
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
physicsList->RegisterPhysics(opticalPhysics);
runManager-> SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new OpNoviceActionInitialization());
// Initialize G4 kernel
//
runManager->Initialize();
// Initialize visualization
//
G4VisManager* visManager = new G4VisExecutive;
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
// G4VisManager* visManager = new G4VisExecutive("Quiet");
G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Get the pointer to the User Interface manager
//
G4UImanager* UImanager = G4UImanager::GetUIpointer();
if ( macro.size() ) {
@@ -1,14 +1,15 @@
/control/verbose 2
/tracking/verbose 0
#
/process/optical/verbose 0
/run/initialize
#
/gun/particle e+
/gun/energy 500 keV
#
/OpNovice/phys/verbose 0
#
/run/beamOn 1
#
/OpNovice/phys/cerenkovMaxPhotons 15 # default: 20
/process/optical/cerenkov/setMaxPhotons 15
#
/run/beamOn 1
+608 -203
View File
@@ -1,6 +1,10 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
**************************************************************
Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
Geant4 version Name: geant4-10-06-ref-00 (6-December-2019)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,6 +12,13 @@
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT
G4VModularPhysicsList::ReplacePhysics: G4EmStandardwith type : 2 is replaces with G4EmStandard_opt4
/tracking/verbose 0
#
/process/optical/verbose 0
/run/initialize
Water G4MaterialPropertiesTable
0: RINDEX
2.034e-06 1.3435
@@ -336,22 +347,6 @@ Reflectivity LUT DAVIS - data file: /cvmfs/geant4.cern.ch/share/data/RealSurface
-----------------
1
Water Surface G4MaterialPropertiesTable
0: RINDEX
2.034e-06 1.35
4.136e-06 1.4
6: SPECULARLOBECONSTANT
2.034e-06 0.3
4.136e-06 0.3
7: SPECULARSPIKECONSTANT
2.034e-06 0.2
4.136e-06 0.2
8: BACKSCATTERCONSTANT
2.034e-06 0.2
4.136e-06 0.2
9: GROUPVEL
2.034e-06 211.055
4.136e-06 203.878
Air Surface G4MaterialPropertiesTable
1: REFLECTIVITY
2.034e-06 0.3
@@ -359,313 +354,723 @@ Air Surface G4MaterialPropertiesTable
4: EFFICIENCY
2.034e-06 0.8
4.136e-06 1
FTFP_BERT : new 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
### Birks coefficients used in run time
Water 0.126 mm/MeV 0.0126 g/cm^2/MeV massFactor= 85.0756 effCharge= 62.0606
AddDiscreteProcess to OpticalPhoton
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
You have successfully registered the following graphics systems.
Current available graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateXm (OGLIXm, OGLI)
OpenGLStoredXm (OGLSXm, OGL, OGLS)
OpenGLImmediateX (OGLIX, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
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.
/tracking/verbose 0
#
/gun/particle e+
/gun/energy 500 keV
#
/OpNovice/phys/verbose 0
#
/run/beamOn 1
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler : Emin= 0 eV Emax= 80 GeV ModifiedTsai
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
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
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 0 0
### === Ignore cuts flag: 0
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
LambdaPrime table from 200 keV to 100 TeV in 174 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
PhotoElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila
LivermorePhElectric : Emin= 0 eV 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 eV 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 eV 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 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- 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
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
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
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- 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 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV 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= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
PenIoni : Emin= 0 eV Emax= 100 keV
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e+ 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
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
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
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ 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 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
annihil: for e+, integral:1 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for proton 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton 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 eV Emax= 100 TeV
hPairProd: for proton 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 eV Emax= 100 TeV
CoulombScat: for proton, integral:1 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 eV Emax= 100 TeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV
hIoni: for GenericIon 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: 1, fluct: 1, linLossLim= 0.01
ionIoni: for GenericIon SubType=2
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
StepFunction=(0.1, 0.001 mm), integ: 1, 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
ParamICRU73 : Emin= 0 eV Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for alpha 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: 1, fluct: 1, linLossLim= 0.01
ionIoni: for alpha SubType=2
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
BraggIon : Emin= 0 eV 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 eV Emax= 1 MeV
msc: for anti_proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for anti_proton 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton 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 eV Emax= 100 TeV
hPairProd: for anti_proton 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 eV Emax= 100 TeV
CoulombScat: for anti_proton, integral:1 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 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ 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 eV Emax= 100 TeV
hPairProd: for kaon+ 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 eV Emax= 100 TeV
CoulombScat: for kaon+, integral:1 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 eV Emax= 100 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- 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 eV Emax= 100 TeV
hPairProd: for kaon- 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 eV Emax= 100 TeV
CoulombScat: for kaon-, integral: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
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ 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
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 eV Emax= 100 TeV
muPairProd: for mu+ 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
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 eV Emax= 100 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
CoulombScat: for mu+, integral:1 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 ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- 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
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 eV Emax= 100 TeV
muPairProd: for mu- 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
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 eV Emax= 100 TeV
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
CoulombScat: for mu-, integral: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 ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ 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 eV Emax= 100 TeV
hPairProd: for pi+ 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 eV Emax= 100 TeV
CoulombScat: for pi+, integral:1 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 eV Emax= 100 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
========= Table of registered couples ==============================
hBrems: for pi- 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 eV Emax= 100 TeV
Index : 0 used in the geometry : Yes
Material : Air
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
hPairProd: for pi- 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 eV Emax= 100 TeV
Index : 1 used in the geometry : Yes
Material : Water
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 2.94056 keV e- 351.877 keV e+ 342.545 keV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
CoulombScat: for pi-, integral: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)
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
---------------------------------------------------
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 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 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for He3
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
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 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for alpha
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
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 ---> 100 TeV
---------------------------------------------------
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 ---> 100 TeV
Process: anti_He3Inelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
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 ---> 100 TeV
Process: anti_alphaInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
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 ---> 100 TeV
Process: anti_deuteronInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 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 ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
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 ---> 100 TeV
Process: anti_protonInelastic
Model: FTFP: 0 eV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
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 ---> 100 TeV
Process: anti_tritonInelastic
Model: FTFP: 0 eV /n ---> 100 TeV/n
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: hFritiofCaptureAtRest
---------------------------------------------------
Hadronic Processes for deuteron
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
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 ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e+
Process: electronNuclear
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: BertiniCascade: 0 eV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 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: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 3 GeV ---> 100 TeV
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 triton
Process: hadElastic
Model: hElasticLHEP: 0 eV /n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
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 ---> 100 TeV
================================================================
=======================================================================
====== Pre-compound/De-excitation Physics Parameters ========
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
Pre-compound excitation low energy (MeV) 0.1
Pre-compound excitation high energy (MeV) 30
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
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 (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
### Run 0 start.
Number of Scintillation photons produced in this event : 76
Number of Cerenkov photons produced in this event : 16
number of event = 1 User=0.000000s Real=0.002422s Sys=0.000000s
Number of Scintillation photons produced in this event : 62
Number of Cerenkov photons produced in this event : 14
number of event = 1 User=0.000000s Real=0.002565s Sys=0.000000s
#
/OpNovice/phys/cerenkovMaxPhotons 15
/process/optical/cerenkov/setMaxPhotons 15
#
/run/beamOn 1
### Run 1 start.
Number of Scintillation photons produced in this event : 55
Number of Scintillation photons produced in this event : 67
Number of Cerenkov photons produced in this event : 13
number of event = 1 User=0.000000s Real=0.000718s Sys=0.000000s
Graphics systems deleted.
Visualization Manager deleting...
number of event = 1 User=0.000000s Real=0.001636s Sys=0.000000s
+3 -5
View File
@@ -18,8 +18,8 @@ main()
==> define Random Number Engine and initial seed
G4VUserPhysicsList
------------------
G4Optical Physics
-----------------
==> define particles; including *** G4OpticalPhoton ***
define processes; including *** G4Cerenkov ***
@@ -28,7 +28,7 @@ G4VUserPhysicsList
*** G4OpRayleigh ***
*** G4OpBoundaryProcess ***
==> A messenger command allows to define interactivly the
==> A messenger command allows to define interactively the
verbose level and the maximum number of Cerenkov photons per step
(see for instance OpNovice.in)
@@ -76,8 +76,6 @@ Visualisation
------------
- compile and link to generate an executable
% cd OpNovice
% gmake
This example handles the program arguments in a new way.
It can be run with the following optional arguments:
@@ -45,8 +45,6 @@ class OpNoviceActionInitialization : public G4VUserActionInitialization
virtual void BuildForMaster() const;
virtual void Build() const;
virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
};
#endif
@@ -1,91 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/include/OpNovicePhysicsList.hh
/// \brief Definition of the OpNovicePhysicsList class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef OpNovicePhysicsList_h
#define OpNovicePhysicsList_h 1
#include "globals.hh"
#include "G4VUserPhysicsList.hh"
class OpNovicePhysicsListMessenger;
class G4Cerenkov;
class G4Scintillation;
class G4OpAbsorption;
class G4OpRayleigh;
class G4OpMieHG;
class G4OpBoundaryProcess;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNovicePhysicsList : public G4VUserPhysicsList
{
public:
OpNovicePhysicsList();
virtual ~OpNovicePhysicsList();
public:
virtual void ConstructParticle();
virtual void ConstructProcess();
virtual void SetCuts();
//these methods Construct physics processes and register them
void ConstructDecay();
void ConstructEM();
void ConstructOp();
//for the Messenger
void SetVerbose(G4int);
void SetNbOfPhotonsCerenkov(G4int);
private:
OpNovicePhysicsListMessenger* fMessenger;
static G4ThreadLocal G4int fVerboseLevel;
static G4ThreadLocal G4int fMaxNumPhotonStep;
static G4ThreadLocal G4Cerenkov* fCerenkovProcess;
static G4ThreadLocal G4Scintillation* fScintillationProcess;
static G4ThreadLocal G4OpAbsorption* fAbsorptionProcess;
static G4ThreadLocal G4OpRayleigh* fRayleighScatteringProcess;
static G4ThreadLocal G4OpMieHG* fMieHGScatteringProcess;
static G4ThreadLocal G4OpBoundaryProcess* fBoundaryProcess;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif /* OpNovicePhysicsList_h */
@@ -1,67 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/include/OpNovicePhysicsListMessenger.hh
/// \brief Definition of the OpNovicePhysicsListMessenger class
//
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef OpNovicePhysicsListMessenger_h
#define OpNovicePhysicsListMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class OpNovicePhysicsList;
class G4UIdirectory;
class G4UIcmdWithAnInteger;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNovicePhysicsListMessenger: public G4UImessenger
{
public:
OpNovicePhysicsListMessenger(OpNovicePhysicsList* );
virtual ~OpNovicePhysicsListMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
private:
OpNovicePhysicsList* fPhysicsList;
G4UIdirectory* fOpNoviceDir;
G4UIdirectory* fPhysDir;
G4UIcmdWithAnInteger* fVerboseCmd;
G4UIcmdWithAnInteger* fCerenkovCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -1,58 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/include/OpNoviceSteppingVerbose.hh
/// \brief Definition of the OpNoviceSteppingVerbose class
//
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceSteppingVerbose;
#ifndef OpNoviceSteppingVerbose_h
#define OpNoviceSteppingVerbose_h 1
#include "G4SteppingVerbose.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class OpNoviceSteppingVerbose : public G4SteppingVerbose
{
public:
OpNoviceSteppingVerbose();
virtual ~OpNoviceSteppingVerbose();
virtual void StepInfo();
virtual void TrackingStarted();
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -1,5 +1,7 @@
/control/verbose 2
/tracking/verbose 3
/tracking/verbose 2
#
/run/initialize
#
/gun/particle opticalphoton
/gun/energy 3 eV
@@ -32,7 +32,6 @@
#include "OpNoviceRunAction.hh"
#include "OpNoviceSteppingAction.hh"
#include "OpNoviceStackingAction.hh"
#include "OpNoviceSteppingVerbose.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -61,13 +60,3 @@ void OpNoviceActionInitialization::Build() const
SetUserAction(new OpNoviceSteppingAction());
SetUserAction(new OpNoviceStackingAction());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VSteppingVerbose*
OpNoviceActionInitialization::InitializeSteppingVerbose() const
{
return new OpNoviceSteppingVerbose();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -318,20 +318,20 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct()
G4double ephoton[num] = {2.034*eV, 4.136*eV};
//OpticalWaterSurface
G4double refractiveIndex[num] = {1.35, 1.40};
G4double specularLobe[num] = {0.3, 0.3};
G4double specularSpike[num] = {0.2, 0.2};
G4double backScatter[num] = {0.2, 0.2};
G4MaterialPropertiesTable* myST1 = new G4MaterialPropertiesTable();
myST1->AddProperty("RINDEX", ephoton, refractiveIndex, num);
myST1->AddProperty("SPECULARLOBECONSTANT", ephoton, specularLobe, num);
myST1->AddProperty("SPECULARSPIKECONSTANT", ephoton, specularSpike, num);
myST1->AddProperty("BACKSCATTERCONSTANT", ephoton, backScatter, num);
G4cout << "Water Surface G4MaterialPropertiesTable" << G4endl;
myST1->DumpTable();
// if surface model is unified we can set parameters
// G4double refractiveIndex[num] = {1.35, 1.40};
// G4double specularLobe[num] = {0.3, 0.3};
// G4double specularSpike[num] = {0.2, 0.2};
// G4double backScatter[num] = {0.2, 0.2};
//
// G4MaterialPropertiesTable* myST1 = new G4MaterialPropertiesTable();
// myST1->AddProperty("RINDEX", ephoton, refractiveIndex, num);
// myST1->AddProperty("SPECULARLOBECONSTANT", ephoton, specularLobe, num);
// myST1->AddProperty("SPECULARSPIKECONSTANT", ephoton, specularSpike, num);
// myST1->AddProperty("BACKSCATTERCONSTANT", ephoton, backScatter, num);
//
// G4cout << "Water Surface G4MaterialPropertiesTable" << G4endl;
// myST1->DumpTable();
// opWaterSurface->SetMaterialPropertiesTable(myST1);
@@ -1,307 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/src/OpNovicePhysicsList.cc
/// \brief Implementation of the OpNovicePhysicsList class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "globals.hh"
#include "OpNovicePhysicsList.hh"
#include "OpNovicePhysicsListMessenger.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4BosonConstructor.hh"
#include "G4LeptonConstructor.hh"
#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
#include "G4IonConstructor.hh"
#include "G4ShortLivedConstructor.hh"
#include "G4ProcessManager.hh"
#include "G4Cerenkov.hh"
#include "G4Scintillation.hh"
#include "G4OpAbsorption.hh"
#include "G4OpRayleigh.hh"
#include "G4OpMieHG.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4LossTableManager.hh"
#include "G4EmSaturation.hh"
G4ThreadLocal G4int OpNovicePhysicsList::fVerboseLevel = 1;
G4ThreadLocal G4int OpNovicePhysicsList::fMaxNumPhotonStep = 20;
G4ThreadLocal G4Cerenkov* OpNovicePhysicsList::fCerenkovProcess = 0;
G4ThreadLocal G4Scintillation* OpNovicePhysicsList::fScintillationProcess = 0;
G4ThreadLocal G4OpAbsorption* OpNovicePhysicsList::fAbsorptionProcess = 0;
G4ThreadLocal G4OpRayleigh* OpNovicePhysicsList::fRayleighScatteringProcess = 0;
G4ThreadLocal G4OpMieHG* OpNovicePhysicsList::fMieHGScatteringProcess = 0;
G4ThreadLocal G4OpBoundaryProcess* OpNovicePhysicsList::fBoundaryProcess = 0;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePhysicsList::OpNovicePhysicsList()
: G4VUserPhysicsList()
{
fMessenger = new OpNovicePhysicsListMessenger(this);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePhysicsList::~OpNovicePhysicsList() { delete fMessenger; }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
G4BosonConstructor bConstructor;
bConstructor.ConstructParticle();
G4LeptonConstructor lConstructor;
lConstructor.ConstructParticle();
G4MesonConstructor mConstructor;
mConstructor.ConstructParticle();
G4BaryonConstructor rConstructor;
rConstructor.ConstructParticle();
G4IonConstructor iConstructor;
iConstructor.ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::ConstructProcess()
{
AddTransportation();
ConstructDecay();
ConstructEM();
ConstructOp();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Decay.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::ConstructDecay()
{
// Add Decay Process
G4Decay* theDecayProcess = new G4Decay();
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager ->AddProcess(theDecayProcess);
// set ordering for PostStepDoIt and AtRestDoIt
pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4eMultipleScattering.hh"
#include "G4MuMultipleScattering.hh"
#include "G4hMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::ConstructEM()
{
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
// Construct processes for gamma
pmanager->AddDiscreteProcess(new G4GammaConversion());
pmanager->AddDiscreteProcess(new G4ComptonScattering());
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
} else if (particleName == "e-") {
//electron
// Construct processes for electron
pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
pmanager->AddProcess(new G4eIonisation(), -1, 2, 2);
pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3);
} else if (particleName == "e+") {
//positron
// Construct processes for positron
pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
pmanager->AddProcess(new G4eIonisation(), -1, 2, 2);
pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3);
pmanager->AddProcess(new G4eplusAnnihilation(), 0,-1, 4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
// Construct processes for muon
pmanager->AddProcess(new G4MuMultipleScattering(),-1, 1, 1);
pmanager->AddProcess(new G4MuIonisation(), -1, 2, 2);
pmanager->AddProcess(new G4MuBremsstrahlung(), -1, 3, 3);
pmanager->AddProcess(new G4MuPairProduction(), -1, 4, 4);
} else {
if ((particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino") &&
!particle->IsShortLived()) {
// all others charged particles except geantino
pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4hIonisation(), -1,2,2);
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "G4Threading.hh"
void OpNovicePhysicsList::ConstructOp()
{
fCerenkovProcess = new G4Cerenkov("Cerenkov");
fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
fCerenkovProcess->SetMaxBetaChangePerStep(10.0);
fCerenkovProcess->SetTrackSecondariesFirst(true);
fScintillationProcess = new G4Scintillation("Scintillation");
fScintillationProcess->SetScintillationYieldFactor(1.);
fScintillationProcess->SetTrackSecondariesFirst(true);
fAbsorptionProcess = new G4OpAbsorption();
fRayleighScatteringProcess = new G4OpRayleigh();
fMieHGScatteringProcess = new G4OpMieHG();
fBoundaryProcess = new G4OpBoundaryProcess();
fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
fScintillationProcess->SetVerboseLevel(fVerboseLevel);
fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
// Use Birks Correction in the Scintillation process
if(G4Threading::IsMasterThread())
{
G4EmSaturation* emSaturation =
G4LossTableManager::Instance()->EmSaturation();
fScintillationProcess->AddSaturation(emSaturation);
}
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (fCerenkovProcess->IsApplicable(*particle)) {
pmanager->AddProcess(fCerenkovProcess);
pmanager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
}
if (fScintillationProcess->IsApplicable(*particle)) {
pmanager->AddProcess(fScintillationProcess);
pmanager->SetProcessOrderingToLast(fScintillationProcess, idxAtRest);
pmanager->SetProcessOrderingToLast(fScintillationProcess, idxPostStep);
}
if (particleName == "opticalphoton") {
G4cout << " AddDiscreteProcess to OpticalPhoton " << G4endl;
pmanager->AddDiscreteProcess(fAbsorptionProcess);
pmanager->AddDiscreteProcess(fRayleighScatteringProcess);
pmanager->AddDiscreteProcess(fMieHGScatteringProcess);
pmanager->AddDiscreteProcess(fBoundaryProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::SetVerbose(G4int verbose)
{
fVerboseLevel = verbose;
fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
fScintillationProcess->SetVerboseLevel(fVerboseLevel);
fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::SetNbOfPhotonsCerenkov(G4int MaxNumber)
{
fMaxNumPhotonStep = MaxNumber;
fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsList::SetCuts()
{
// " G4VUserPhysicsList::SetCutsWithDefault" method sets
// the default cut value for all particle types
//
SetCutsWithDefault();
if (verboseLevel>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,93 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/src/OpNovicePhysicsListMessenger.cc
/// \brief Implementation of the OpNovicePhysicsListMessenger class
//
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNovicePhysicsListMessenger.hh"
#include "OpNovicePhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithAnInteger.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePhysicsListMessenger::
OpNovicePhysicsListMessenger(OpNovicePhysicsList* pPhys)
: G4UImessenger(),
fPhysicsList(pPhys)
{
fOpNoviceDir = new G4UIdirectory("/OpNovice/");
fOpNoviceDir->SetGuidance("UI commands of this example");
fPhysDir = new G4UIdirectory("/OpNovice/phys/");
fPhysDir->SetGuidance("PhysicsList control");
fVerboseCmd = new G4UIcmdWithAnInteger("/OpNovice/phys/verbose",this);
fVerboseCmd->SetGuidance("set verbose for physics processes");
fVerboseCmd->SetParameterName("verbose",true);
fVerboseCmd->SetDefaultValue(1);
fVerboseCmd->SetRange("verbose>=0");
fVerboseCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fCerenkovCmd =
new G4UIcmdWithAnInteger("/OpNovice/phys/cerenkovMaxPhotons",this);
fCerenkovCmd->SetGuidance("set max nb of photons per step");
fCerenkovCmd->SetParameterName("MaxNumber",false);
fCerenkovCmd->SetRange("MaxNumber>=0");
fCerenkovCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNovicePhysicsListMessenger::~OpNovicePhysicsListMessenger()
{
delete fVerboseCmd;
delete fCerenkovCmd;
delete fPhysDir;
delete fOpNoviceDir;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNovicePhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == fVerboseCmd )
{fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));}
if( command == fCerenkovCmd )
{fPhysicsList->
SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,184 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file OpNovice/src/OpNoviceSteppingVerbose.cc
/// \brief Implementation of the OpNoviceSteppingVerbose class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "OpNoviceSteppingVerbose.hh"
#include "G4SteppingManager.hh"
#include "G4UnitsTable.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceSteppingVerbose::OpNoviceSteppingVerbose()
: G4SteppingVerbose()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
OpNoviceSteppingVerbose::~OpNoviceSteppingVerbose()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceSteppingVerbose::StepInfo()
{
CopyState();
G4int prec = G4cout.precision(3);
if( verboseLevel >= 1 ){
if( verboseLevel >= 4 ) VerboseTrack();
if( verboseLevel >= 3 ){
G4cout << G4endl;
G4cout << std::setw( 5) << "#Step#" << " "
<< std::setw( 6) << "X" << " "
<< std::setw( 6) << "Y" << " "
<< std::setw( 6) << "Z" << " "
<< std::setw( 9) << "KineE" << " "
<< std::setw( 9) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
}
G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
<< " ";
// if( fStepStatus != fWorldBoundary){
if( fTrack->GetNextVolume() != 0 ) {
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << std::setw(10) << "OutOfWorld";
}
if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){
G4cout << " "
<< std::setw(10)
<< fStep->GetPostStepPoint()->GetProcessDefinedStep()
->GetProcessName();
} else {
G4cout << " UserLimit";
}
G4cout << G4endl;
if( verboseLevel == 2 ){
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
fN2ndariesAlongStepDoIt +
fN2ndariesPostStepDoIt;
if(tN2ndariesTot>0){
G4cout << " :----- List of 2ndaries - "
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
<< std::setw(10)
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
G4cout << G4endl;
}
G4cout << " :-----------------------------"
<< "----------------------------------"
<< "-- EndOf2ndaries Info ---------------"
<< G4endl;
}
}
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void OpNoviceSteppingVerbose::TrackingStarted()
{
CopyState();
G4int prec = G4cout.precision(3);
if( verboseLevel > 0 ){
G4cout << std::setw( 5) << "Step#" << " "
<< std::setw( 6) << "X" << " "
<< std::setw( 6) << "Y" << " "
<< std::setw( 6) << "Z" << " "
<< std::setw( 9) << "KineE" << " "
<< std::setw( 9) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
<< " ";
if(fTrack->GetNextVolume()){
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << "OutOfWorld";
}
G4cout << " initStep" << G4endl;
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -1,3 +1,14 @@
#
# Macro file for the initialization phase of "OpNovice.cc"
#
# Sets some default verbose
# and initializes the graphic.
#
/control/verbose 2
/run/verbose 2
#
/run/initialize
#
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
#
+54 -150
View File
@@ -4,12 +4,9 @@
/*! \page ExampleOpNovice2 Example OpNovice2
OpNovice2
---------
Investigate optical properties and parameters. Details of optical
photon boundary interactions on a surface are recorded. Details
of optical photon generation and transport are recorded.
Investigate optical properties and parameters. Details of optical
photon boundary interactions on a surface are recorded. Details
of optical photon generation and transport are recorded.
\section OpNovice2_s1 GEOMETRY DEFINITION
@@ -20,14 +17,20 @@
in the DetectorMessenger class.
Material properties may be added using the macro commands:
# for the box:
/opnovice2/boxProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
/opnovice2/boxConstProperty NAME VALUE
# for the world:
- for the box:
\verbatim
/opnovice2/boxProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
/opnovice2/boxConstProperty NAME VALUE
\endverbatim
- for the world:
\verbatim
/opnovice2/worldProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
/opnovice2/worldConstProperty NAME VALUE
# for the surface:
\endverbatim
- for the surface:
\verbatim
/opnovice2/surfaceProperty NAME EN1 V1 EN2 V2 [ .. ENn Vn]
\endverbatim
Multiple energy and value pairs may be specified for the energy-dependent
properties.
@@ -35,7 +38,9 @@
Values are in Geant4 internal units. Energy is in MeV.
Example:
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000005 1.32 0.000008 1.34
\verbatim
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000005 1.32 0.000008 1.34
\endverbatim
sets the refractive index of the box to 1.3 at 2 eV, 1.32 at 5 eV, and
1.34 at 8 eV.
@@ -57,21 +62,29 @@
The Visualization Manager is set in the main().
The initialisation of the drawing is done via the commands
/vis/... in the macro vis.mac. To get visualisation:
> /control/execute vis.mac
\verbatim
> /control/execute vis.mac
\endverbatim
or run the program with no command line arguments:
$ ./OpNovice2
\verbatim
$ ./OpNovice2
\endverbatim
\section OpNovice2_s5 HOW TO START ?
- Execute OpNovice2 in 'batch' mode from macro files
% OpNovice2 surface.mac
\verbatim
% OpNovice2 surface.mac
\endverbatim
- Execute OpNovice2 in 'interactive mode' with visualization
% OpNovice2
....
Idle> type your commands
....
Idle> exit
\verbatim
% OpNovice2
....
Idle> type your commands
....
Idle> exit
\endverbatim
\section OpNovice2_s6 RESULTS
@@ -80,150 +93,41 @@
\section OpNovice2_s7 HISTOGRAMS
OpNovice2 has several predefined 1D histograms :
1 : Cerenkov spectrum
2 : scintillation spectrum
3 : boundary process status
4 : X momentum dir of scattered photons with px < 0
5 : Y momentum dir of scattered photons with px < 0
6 : Z momentum dir of scattered photons with px < 0
7 : X momentum dir of scattered photons with px >= 0
8 : Y momentum dir of scattered photons with px >= 0
9 : Z momentum dir of scattered photons with px >= 0
10 : X momentum dir of Fresnel-refracted photons
11 : Y momentum dir of Fresnel-refracted photons
12 : Z momentum dir of Fresnel-refracted photons
- 1 : Cerenkov spectrum
- 2 : scintillation spectrum
- 3 : boundary process status
- 4 : X momentum dir of scattered photons with px < 0
- 5 : Y momentum dir of scattered photons with px < 0
- 6 : Z momentum dir of scattered photons with px < 0
- 7 : X momentum dir of scattered photons with px >= 0
- 8 : Y momentum dir of scattered photons with px >= 0
- 9 : Z momentum dir of scattered photons with px >= 0
- 10 : X momentum dir of Fresnel-refracted photons
- 11 : Y momentum dir of Fresnel-refracted photons
- 12 : Z momentum dir of Fresnel-refracted photons
Histograms 4-12 are recorded for photons scattered from the +X
surface of the cube. Only the first interaction is recorded.
The histograms are managed by G4Analysis classes.
The histos can be individually activated with the command :
/analysis/h1/set id nbBins valMin valMax unit
\verbatim
/analysis/h1/set id nbBins valMin valMax unit
\endverbatim
where unit is the desired unit for the histo (MeV or keV, deg or mrad, etc..)
One can control the name of the histograms file with the command:
/analysis/setFileName name (default opnovice2)
\verbatim
/analysis/setFileName name (default opnovice2)
\endverbatim
It is possible to choose the format of the histogram file : root (default),
hbook, xml, csv, by using namespace in HistoManager.hh
It is also possible to print selected histograms on an ascii file:
/analysis/h1/setAscii id
\verbatim
/analysis/h1/setAscii id
\endverbatim
All selected histos will be written on a file name.ascii (default opnovice2)
///\file "analysis/AnaEx01/.README.txt"
///\brief Example AnaEx01 README page
/*! \page ExampleAnaEx01 Example AnaEx01
Examples AnaEx01, AnaEx02 and AnaEx03 show the usage of histogram and tuple
manipulations using G4Analysis, ROOT and AIDA compliant systems on the same
scenario. All analysis manipulations (histo booking, filling, saving histos
in a file, etc...) are located in one class : HistoManager, implementation of
which is different in each example. All the other classes are same in all
three examples.
This example shows the usage of histogram and tuple manipulations using
G4Analysis system.
The example is an adaptation of examples/novice/N03. It describes a simple
sampling calorimeter setup.
\section AnaEx01_s1 Detector description
The calorimeter is a box made of a given number of layers. A layer
consists of an absorber plate and of a detection gap. The layer is
replicated.
Six parameters define the calorimeter :
- the material of the absorber,
- the thickness of an absorber plate,
- the material of the detection gap,
- the thickness of a gap,
- the number of layers,
- the transverse size of the calorimeter (the input face is a square).
The default geometry is constructed in DetectorConstruction class,
but all of the above parameters can be modified interactively via
the commands defined in the DetectorMessenger class.
<pre>
|<----layer 0---------->|<----layer 1---------->|<----layer 2---------->|
| | | |
==========================================================================
|| | || | || | ||
|| | || | || | ||
beam || absorber | gap || absorber | gap || absorber | gap ||
======> || | || | || | ||
|| | || | || | ||
==========================================================================
</pre>
\section AnaEx01_s2 Physics list
The particle's type and the physic processes which will be available
in this example are set in the FTFP_BERT physics list.
\section AnaEx01_s3 Action Initialization
A newly introduced class, ActionInitialization,
instantiates and registers to Geant4 kernel all user action classes
which are defined thread-local and a run action class
which is defined both thread-local and global.
The thread-local action classes are defined in
ActionInitialization::Build()
and the global run action class is defined in
ActionInitialization::BuildForMaster().
Note that ActionInitialization::Build() is also used to
instatiate user action clasess in sequential mode.
\section AnaEx01_s4 An event : PrimaryGeneratorAction
The primary kinematic consists of a single particle which hits the
calorimeter perpendicular to the input face. The type of the particle
and its energy are set in the PrimaryGeneratorAction class, and can
be changed via the G4 build-in commands of ParticleGun class.
\section AnaEx01_s5 Histograms
AnaEx01 can produce 4 histograms :
- EAbs : total energy deposit in absorber per event
- EGap : total energy deposit in gap per event
- LAbs : total track length of charged particles in absorber per event
- LGap : total track length of charged particles in gap per event
And 2 Ntuples :
- Ntuple1:
- one row per event : EnergyAbs EnergyGap
- Ntuple2:
- one row per event : TrackLAbs TrackLGap
These histos and ntuples are booked in HistoManager and filled from
EventAction.
One can control the name of the histograms file and its format:
- default name : AnaEx01
The format of the histogram file can be : root (default),
xml, csv. Include correct g4nnn.hh in HistoManager.hh
\section AnaEx01_s7 How to build
An additional step is needed when building the example with GNUmake
due to using the extra shared directory:
\verbatim
% cd path_to_AnaEx01/AnaEx01
% gmake setup
% gmake
\endverbatim
This will copy the files from shared in the example include and src;
to remove these files:
\verbatim
% gmake clean_setup
\endverbatim
*/
@@ -43,8 +43,10 @@ set(OpNovice2_SCRIPTS
OpNovice2.out
OpNovice2.in
vis.mac
surface.mac
unified.mac
glisur.mac
electron.mac
scint_by_particle.mac
)
foreach(_script ${OpNovice2_SCRIPTS})
@@ -13,6 +13,17 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
November 26, 2019 I. Hrivnacova (OpNovice2-V10-05-02)
- Fixed formatting in .README.txt
October 29, 2019 D.Sawkey (OpNovice2-V10-05-01)
- macros: give unique analysis filenames
August 30, 2019 D.Sawkey (OpNovice2-V10-05-00)
- add surface roughness and polish commands
- record scintillation photon creation time
- updated macros
October 26, 2018 D.Sawkey (OpNovice2-V10-04-07)
- SteppingAction.cc: fix Histo in multithreaded
- HistoManager.hh: add commented g4csv include
+207 -91
View File
@@ -1,6 +1,7 @@
**************************************************************
Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
Geant4 version Name: geant4-10-05-ref-10 [MT] (31-October-2019)
<< in Multi-threaded mode >>
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,7 +9,8 @@
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: FTFP_BERT 2.0
===== OpNovice2 is started with 4 threads =====
<<< Geant4 Physics List simulation engine: FTFP_BERT
G4VModularPhysicsList::ReplacePhysics: G4EmStandardwith type : 2 is replaces with G4EmStandard_opt4
Visualization Manager instantiating with verbosity "warnings (3)"...
@@ -25,11 +27,10 @@ RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateXm (OGLIXm, OGLI)
OpenGLStoredXm (OGLSXm, OGL, OGLS)
OpenGLImmediateX (OGLIX, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK)
Registering model factories...
@@ -169,32 +170,15 @@ The MPT for the surface is now:
****** end of opticalSurface->DumpInfo
FTFP_BERT : new threshold between BERT and FTFP is over the interval
for pions : 3 to 12 GeV
for kaons : 3 to 12 GeV
for proton : 3 to 12 GeV
for neutron : 3 to 12 GeV
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
### Birks coefficients used in run time
G4_WATER 0.126 mm/MeV 0.0126 g/cm^2/MeV massFactor= 85.0756 effCharge= 62.0606
#
/gun/particle opticalphoton
/gun/energy 3 eV
/gun/position 0 0 0 cm
/gun/direction 1 0 0
/opnovice2/gun/optPhotonPolar
#
/analysis/h1/set 3 40 -1 39
/analysis/h1/set 4 100 -1.1 1.1
/analysis/h1/set 5 100 -1.1 1.1
/analysis/h1/set 6 100 -1.1 1.1
/analysis/h1/set 7 100 -1.1 1.1
/analysis/h1/set 8 100 -1.1 1.1
/analysis/h1/set 9 100 -1.1 1.1
/analysis/h1/set 10 100 -1.1 1.1
/analysis/h1/set 11 100 -1.1 1.1
/analysis/h1/set 12 100 -1.1 1.1
/run/beamOn 100000
/run/physicsModified
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 0 0
@@ -215,9 +199,7 @@ compt: for gamma SubType=13 BuildTable=1
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 ======
PenConversion : Emin= 0 eV Emax= 20 MeV
BetheHeitler : Emin= 20 MeV Emax= 80 GeV ModifiedTsai
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
@@ -250,13 +232,13 @@ eBrem: for e- SubType=3
ePairProd: for e- 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 25x1001 from 0.1 GeV to 100 TeV
Sampling table 25x1001; from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
@@ -285,7 +267,7 @@ eBrem: for e+ SubType=3
ePairProd: for e+ 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 25x1001 from 0.1 GeV to 100 TeV
Sampling table 25x1001; from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
@@ -295,7 +277,7 @@ annihil: for e+, integral:1 SubType=5 BuildTable=0
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
@@ -321,13 +303,13 @@ hBrems: for proton SubType=3
hPairProd: for proton 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
Sampling table 17x1001; from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for proton, integral:1 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
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -386,13 +368,13 @@ hBrems: for anti_proton SubType=3
hPairProd: for anti_proton 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
Sampling table 17x1001; from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for anti_proton, integral:1 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
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -418,13 +400,13 @@ hBrems: for kaon+ SubType=3
hPairProd: for kaon+ 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
Sampling table 18x1001; from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for kaon+, integral:1 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
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -450,13 +432,13 @@ hBrems: for kaon- SubType=3
hPairProd: for kaon- 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
Sampling table 18x1001; from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -483,13 +465,13 @@ muBrems: for mu+ SubType=3
muPairProd: for mu+ 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
Sampling table 21x1001; from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for mu+, integral:1 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
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -516,13 +498,13 @@ muBrems: for mu- SubType=3
muPairProd: for mu- 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
Sampling table 21x1001; from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -548,13 +530,13 @@ hBrems: for pi+ SubType=3
hPairProd: for pi+ 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
Sampling table 20x1001; from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for pi+, integral:1 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
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -580,13 +562,13 @@ hBrems: for pi- SubType=3
hPairProd: for pi- 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
Sampling table 20x1001; from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
ThetaMin(p) < Theta(degree) < 180; pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -602,7 +584,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
@@ -615,8 +597,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -627,8 +609,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -639,8 +621,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -689,8 +671,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
@@ -734,8 +717,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -769,9 +752,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
@@ -782,9 +764,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: kaon-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -797,8 +778,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
@@ -820,26 +801,24 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -853,7 +832,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: protonInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 12 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -864,37 +843,174 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
================================================================
G4WT3 > /tracking/verbose 0
G4WT3 > /run/geometryModified
G4WT3 > /run/geometryModified
G4WT3 > /run/geometryModified
G4WT3 > /run/geometryModified
G4WT3 > /run/initialize
G4WT3 > /run/physicsModified
G4WT2 > /tracking/verbose 0
G4WT1 > /tracking/verbose 0
G4WT0 > /tracking/verbose 0
G4WT2 > /run/geometryModified
G4WT1 > /run/geometryModified
G4WT2 > /run/geometryModified
G4WT0 > /run/geometryModified
G4WT1 > /run/geometryModified
G4WT0 > /run/geometryModified
G4WT2 > /run/geometryModified
G4WT1 > /run/geometryModified
G4WT0 > /run/geometryModified
G4WT2 > /run/geometryModified
G4WT1 > /run/geometryModified
G4WT0 > /run/geometryModified
G4WT2 > /run/initialize
G4WT0 > /run/initialize
G4WT2 > /run/physicsModified
G4WT1 > /run/initialize
G4WT0 > /run/physicsModified
G4WT1 > /run/physicsModified
=======================================================================
====== Pre-compound/De-excitation Physics Parameters ========
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
Pre-compound low energy (MeV) 0.1
Pre-compound excitation low energy (MeV) 0.1
Pre-compound excitation high energy (MeV) 100
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
Min energy per nucleon for multifragmentation (MeV) 1e+05
Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
Level density (1/MeV) 0.075
Model of level density flag 1
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
#
/gun/particle opticalphoton
/gun/energy 3 eV
/gun/position 0 0 0 cm
/gun/direction 1 0 0
/opnovice2/gun/optPhotonPolar
#
/analysis/h1/set 3 40 -1 39
/analysis/h1/set 4 100 -1.1 1.1
/analysis/h1/set 5 100 -1.1 1.1
/analysis/h1/set 6 100 -1.1 1.1
/analysis/h1/set 7 100 -1.1 1.1
/analysis/h1/set 8 100 -1.1 1.1
/analysis/h1/set 9 100 -1.1 1.1
/analysis/h1/set 10 100 -1.1 1.1
/analysis/h1/set 11 100 -1.1 1.1
/analysis/h1/set 12 100 -1.1 1.1
/run/beamOn 100000
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 start.
... open Root analysis file : opnovice2.root - done
number of event = 100000 User=1.160000s Real=1.174348s Sys=0.000000s
G4WT2 > /gun/particle opticalphoton
G4WT3 > /gun/particle opticalphoton
G4WT0 > /gun/particle opticalphoton
G4WT1 > /gun/particle opticalphoton
G4WT1 > /gun/energy 3 eV
G4WT0 > /gun/energy 3 eV
G4WT3 > /gun/energy 3 eV
G4WT2 > /gun/energy 3 eV
G4WT2 > /gun/position 0 0 0 cm
G4WT3 > /gun/position 0 0 0 cm
G4WT1 > /gun/position 0 0 0 cm
G4WT0 > /gun/position 0 0 0 cm
G4WT2 > /gun/direction 1 0 0
G4WT3 > /gun/direction 1 0 0
G4WT0 > /gun/direction 1 0 0
G4WT1 > /gun/direction 1 0 0
G4WT2 > /opnovice2/gun/optPhotonPolar
G4WT1 > /opnovice2/gun/optPhotonPolar
G4WT0 > /opnovice2/gun/optPhotonPolar
G4WT3 > /opnovice2/gun/optPhotonPolar
G4WT1 > /analysis/h1/set 3 40 -1 39
G4WT0 > /analysis/h1/set 3 40 -1 39
G4WT2 > /analysis/h1/set 3 40 -1 39
G4WT3 > /analysis/h1/set 3 40 -1 39
G4WT3 > /analysis/h1/set 4 100 -1.1 1.1
G4WT2 > /analysis/h1/set 4 100 -1.1 1.1
G4WT1 > /analysis/h1/set 4 100 -1.1 1.1
G4WT0 > /analysis/h1/set 4 100 -1.1 1.1
G4WT3 > /analysis/h1/set 5 100 -1.1 1.1
G4WT2 > /analysis/h1/set 5 100 -1.1 1.1
G4WT1 > /analysis/h1/set 5 100 -1.1 1.1
G4WT0 > /analysis/h1/set 5 100 -1.1 1.1
G4WT3 > /analysis/h1/set 6 100 -1.1 1.1
G4WT2 > /analysis/h1/set 6 100 -1.1 1.1
G4WT1 > /analysis/h1/set 6 100 -1.1 1.1
G4WT0 > /analysis/h1/set 6 100 -1.1 1.1
G4WT3 > /analysis/h1/set 7 100 -1.1 1.1
G4WT2 > /analysis/h1/set 7 100 -1.1 1.1
G4WT1 > /analysis/h1/set 7 100 -1.1 1.1
G4WT0 > /analysis/h1/set 7 100 -1.1 1.1
G4WT3 > /analysis/h1/set 8 100 -1.1 1.1
G4WT2 > /analysis/h1/set 8 100 -1.1 1.1
G4WT1 > /analysis/h1/set 8 100 -1.1 1.1
G4WT0 > /analysis/h1/set 8 100 -1.1 1.1
G4WT3 > /analysis/h1/set 9 100 -1.1 1.1
G4WT2 > /analysis/h1/set 9 100 -1.1 1.1
G4WT1 > /analysis/h1/set 9 100 -1.1 1.1
G4WT0 > /analysis/h1/set 9 100 -1.1 1.1
G4WT3 > /analysis/h1/set 10 100 -1.1 1.1
G4WT2 > /analysis/h1/set 10 100 -1.1 1.1
G4WT1 > /analysis/h1/set 10 100 -1.1 1.1
G4WT0 > /analysis/h1/set 10 100 -1.1 1.1
G4WT3 > /analysis/h1/set 11 100 -1.1 1.1
G4WT2 > /analysis/h1/set 11 100 -1.1 1.1
G4WT1 > /analysis/h1/set 11 100 -1.1 1.1
G4WT0 > /analysis/h1/set 11 100 -1.1 1.1
G4WT3 > /analysis/h1/set 12 100 -1.1 1.1
G4WT2 > /analysis/h1/set 12 100 -1.1 1.1
G4WT1 > /analysis/h1/set 12 100 -1.1 1.1
G4WT0 > /analysis/h1/set 12 100 -1.1 1.1
G4WT1 > ### Run 0 start.
G4WT2 > ### Run 0 start.
G4WT0 > ### Run 0 start.
G4WT3 > ### Run 0 start.
G4WT0 > ... open Root analysis file : opnovice2_t0.root - done
G4WT1 > ... open Root analysis file : opnovice2_t1.root - done
G4WT2 > ... open Root analysis file : opnovice2_t2.root - done
G4WT3 > ... open Root analysis file : opnovice2_t3.root - done
G4WT1 > number of event = 24806 User=11.450000s Real=2.877324s Sys=0.000000s [Cpu=397.9%]
G4WT1 > ... merge Root all H1 : - done
G4WT2 > number of event = 24964 User=11.480000s Real=2.886789s Sys=0.000000s [Cpu=397.7%]
G4WT2 > ... merge Root all H1 : - done
G4WT0 > number of event = 25122 User=11.480000s Real=2.886979s Sys=0.000000s [Cpu=397.6%]
G4WT0 > ... merge Root all H1 : - done
G4WT3 > number of event = 25108 User=11.480000s Real=2.886261s Sys=0.000000s [Cpu=397.7%]
G4WT3 > ... merge Root all H1 : - done
G4WT2 > ... write Root file : opnovice2_t2.root - done
G4WT1 > ... write Root file : opnovice2_t1.root - done
G4WT0 > ... write Root file : opnovice2_t0.root - done
G4WT3 > ... write Root file : opnovice2_t3.root - done
G4WT2 > ... close Root file : opnovice2_t2.root - done
G4WT0 > ... close Root file : opnovice2_t0.root - done
G4WT1 > ... close Root file : opnovice2_t1.root - done
G4WT0 > ... delete Root empty file : opnovice2_t0.root - done
G4WT2 > ... delete Root empty file : opnovice2_t2.root - done
G4WT1 > ... delete Root empty file : opnovice2_t1.root - done
G4WT3 > ... close Root file : opnovice2_t3.root - done
G4WT3 > ... delete Root empty file : opnovice2_t3.root - done
number of event = 100000 User=11.510000s Real=2.923037s Sys=0.000000s [Cpu=393.8%]
Run Summary
---------------------------------
@@ -907,18 +1023,18 @@ Average number of OpAbsorption per event: 0
Surface events (on +X surface, maximum one per photon) this run:
# of primary particles: 100000
OpAbsorption before surface: 76
Total # of surface events: 99924
OpAbsorption before surface: 74
Total # of surface events: 99926
Unaccounted for: 0
Surface events by process:
Fresnel refraction: 46129
Lambertian reflection: 49182
Lobe reflection: 195
Spike reflection: 593
Backscattering: 2873
Absorption: 952
Sum: 99924
Fresnel refraction: 45980
Lambertian reflection: 49333
Lobe reflection: 232
Spike reflection: 501
Backscattering: 2892
Absorption: 988
Sum: 99926
Unaccounted for: 0
---------------------------------
... write Root file : opnovice2.root - done
@@ -92,6 +92,7 @@
10 : X momentum dir of Fresnel-refracted photons
11 : Y momentum dir of Fresnel-refracted photons
12 : Z momentum dir of Fresnel-refracted photons
13 : creation time of scintillation photons
Histograms 4-12 are recorded for photons scattered from the +X
surface of the cube. Only the first interaction is recorded.
@@ -1,38 +1,68 @@
/control/verbose 2
/tracking/verbose 0
/control/cout/ignoreThreadsExcept 0
/opnovice2/boxMaterial G4_PLEXIGLASS
/opnovice2/worldMaterial G4_WATER
/opnovice2/boxMaterial G4_BGO
/opnovice2/worldMaterial G4_AIR
/opnovice2/boxProperty RAYLEIGH .000002 1 .000008 1
/opnovice2/boxProperty RINDEX .000002 1.3 .000008 1.4
/opnovice2/boxProperty ABSLENGTH .000002 1 .000005 2 .000008 3
/opnovice2/boxProperty FASTCOMPONENT .000002 1.0 .000008 1.0
/opnovice2/boxProperty SLOWCOMPONENT .000002 0.1 .000003 0.5 .000004 0.9 .000005 0.5 .000006 0.1 .000007 .5 .000008 .9
/opnovice2/boxConstProperty FASTTIMECONSTANT 0.000000001
/opnovice2/boxConstProperty SLOWTIMECONSTANT 0.000000001
/opnovice2/boxProperty ABSLENGTH 0.000002 1 0.000005 2 0.000008 3
/opnovice2/boxProperty RAYLEIGH 0.000002 1 0.000008 1
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
/opnovice2/boxProperty FASTCOMPONENT 0.000002 1.0 0.000008 1.3
/opnovice2/boxProperty SLOWCOMPONENT 0.000002 0.1 0.000003 0.2 0.000004 0.4 0.000005 0.6 0.000006 0.8 0.000007 0.9 .000008 1.0
/opnovice2/boxConstProperty FASTTIMECONSTANT 20 ## ns
/opnovice2/boxConstProperty SLOWTIMECONSTANT 100
/opnovice2/boxConstProperty SCINTILLATIONYIELD 5000.0
/opnovice2/boxConstProperty YIELDRATIO 0.8
/opnovice2/boxConstProperty YIELDRATIO 0.5
/opnovice2/boxConstProperty RESOLUTIONSCALE 1
/opnovice2/boxConstProperty FASTSCINTILLATIONRISETIME 3
/opnovice2/boxConstProperty SLOWSCINTILLATIONRISETIME 10
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 100 0.000005 100 0.000008 100
/opnovice2/surfaceModel unified
/opnovice2/surfaceType dielectric_dielectric
/opnovice2/surfaceFinish ground
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 .2 0.000008 .2
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
/opnovice2/surfaceSigmaAlpha 0.2
/opnovice2/surfaceProperty SPECULARLOBECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty SPECULARSPIKECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty TRANSMITTANCE 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 0.8 0.000008 0.8
/opnovice2/surfaceProperty EFFICIENCY 0.000002 0.1 0.000008 0.1
/process/optical/verbose 0
/process/optical/cerenkov/setMaxPhotons 3
/process/optical/cerenkov/setMaxBetaChange 10
/process/optical/scintillation/setExcitationRatio .5
/process/optical/scintillation/setByParticleType false
/process/optical/scintillation/setTrackInfo false
/process/optical/scintillation/setFiniteRiseTime true
/process/optical/scintillation/setStackPhotons true
/run/initialize
/analysis/h1/set 1 100 0 .000010
/analysis/h1/set 2 100 0 .000010
/analysis/setFileName electron
/analysis/h1/set 1 100 0 10
/analysis/h1/setXaxis 1 "Energy [eV]"
/analysis/h1/setYaxis 1 "Number of photons"
/analysis/h1/set 2 100 0 10
/analysis/h1/setXaxis 2 "Energy [eV]"
/analysis/h1/setYaxis 2 "Number of photons"
/analysis/h1/set 13 400 0 200
/analysis/h1/setXaxis 13 "Creation time [ns]"
/analysis/h1/setYaxis 13 "Number of photons"
#
/gun/particle e-
/gun/energy 500 keV
/gun/energy 1 MeV
/gun/position -1 0 0 m
/gun/direction 1 0 0
#
/run/printProgress 100
/run/beamOn 1000
/run/beamOn 100
@@ -0,0 +1,94 @@
/control/verbose 2
/tracking/verbose 0
/control/cout/ignoreThreadsExcept 0
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
/opnovice2/boxProperty ABSLENGTH 0.000002 10000 0.000005 20000 0.000008 30000
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 1000 0.000005 2000 0.000008 3000
/opnovice2/surfaceModel glisur
/opnovice2/surfaceType dielectric_dielectric
/opnovice2/surfaceProperty SPECULARLOBECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty SPECULARSPIKECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty TRANSMITTANCE 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 0.8 0.000008 0.8
/opnovice2/surfaceProperty EFFICIENCY 0.000002 0.05 0.000008 0.05
/run/initialize
#
/gun/particle opticalphoton
/gun/energy 3 eV
/gun/position 0 0 0 cm
/gun/direction .9 0.1 0.1
/opnovice2/gun/optPhotonPolar
#
/analysis/setFileName glisur
/analysis/h1/set 3 40 -1 39
/analysis/h1/set 4 100 -1.1 1.1
/analysis/h1/set 5 100 -1.1 1.1
/analysis/h1/set 6 100 -1.1 1.1
/analysis/h1/set 7 100 -1.1 1.1
/analysis/h1/set 8 100 -1.1 1.1
/analysis/h1/set 9 100 -1.1 1.1
/analysis/h1/set 10 100 -1.1 1.1
/analysis/h1/set 11 100 -1.1 1.1
/analysis/h1/set 12 100 -1.1 1.1
############################# polished ########################################
/opnovice2/surfaceFinish polished
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceConstProperty SURFACEROUGHNESS 0.01
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceConstProperty SURFACEROUGHNESS 0.0
############################# ground ##########################################
/opnovice2/surfaceFinish ground
/run/initialize
/opnovice2/surfacePolish 0.2
/run/beamOn 10000
/opnovice2/surfacePolish 1.0
############################# painted #########################################
/opnovice2/surfaceFinish polishedfrontpainted
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish polishedbackpainted
/opnovice2/surfaceProperty RINDEX 0.000002 1.4 0.000008 1.5
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish groundfrontpainted
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish groundbackpainted
/opnovice2/surfacePolish 0.2
/run/initialize
/run/beamOn 10000
/opnovice2/surfacePolish 1.0
############################# dielectric_metal ################################
/opnovice2/surfaceType dielectric_metal
/opnovice2/surfaceFinish polished
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish ground
/run/initialize
/opnovice2/surfacePolish 0.2
/run/beamOn 10000
@@ -67,7 +67,7 @@ class DetectorConstruction : public G4VUserDetectorConstruction
fSurface->SetType(type);
G4RunManager::GetRunManager()->GeometryHasBeenModified();
}
void SetSurfaceModel(const G4OpticalSurfaceModel model) {
fSurface->SetModel(model);
G4RunManager::GetRunManager()->GeometryHasBeenModified();
@@ -76,18 +76,20 @@ class DetectorConstruction : public G4VUserDetectorConstruction
{return fSurface->GetModel();}
void SetSurfaceSigmaAlpha(G4double v);
void SetSurfacePolish(G4double v);
void AddTankMPV(const char* c, G4MaterialPropertyVector* mpv);
void AddTankMPCV(const char* c, G4double v);
void AddTankMPC(const char* c, G4double v);
G4MaterialPropertiesTable* GetTankMaterialPropertiesTable()
{return fTankMPT;}
void AddWorldMPV(const char* c, G4MaterialPropertyVector* mpv);
void AddWorldMPCV(const char* c, G4double v);
void AddWorldMPC(const char* c, G4double v);
G4MaterialPropertiesTable* GetWorldMaterialPropertiesTable()
{return fWorldMPT;}
void AddSurfaceMPV(const char* c, G4MaterialPropertyVector* mpv);
void AddSurfaceMPC(const char* c, G4double v);
G4MaterialPropertiesTable* GetSurfaceMaterialPropertiesTable()
{return fSurfaceMPT;}
@@ -50,33 +50,35 @@ class G4UIcmdWithoutParameter;
class DetectorMessenger: public G4UImessenger
{
public:
DetectorMessenger(DetectorConstruction* );
~DetectorMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
private:
DetectorConstruction* fDetector;
G4UIdirectory* fOpticalDir;
// the surface
G4UIcmdWithAString* fSurfaceTypeCmd;
G4UIcmdWithAString* fSurfaceFinishCmd;
G4UIcmdWithAString* fSurfaceModelCmd;
G4UIcmdWithADouble* fSurfaceSigmaAlphaCmd;
G4UIcmdWithADouble* fSurfacePolishCmd;
G4UIcmdWithAString* fSurfaceMatPropVectorCmd;
G4UIcmdWithAString* fSurfaceMatPropConstCmd;
// the box
// the box
G4UIcmdWithAString* fTankMatPropVectorCmd;
G4UIcmdWithAString* fTankMatConstPropVectorCmd;
G4UIcmdWithAString* fTankMatPropConstCmd;
G4UIcmdWithAString* fTankMaterialCmd;
// the world
G4UIcmdWithAString* fWorldMatPropVectorCmd;
G4UIcmdWithAString* fWorldMatConstPropVectorCmd;
G4UIcmdWithAString* fWorldMatPropConstCmd;
G4UIcmdWithAString* fWorldMaterialCmd;
};
@@ -0,0 +1,74 @@
/control/verbose 2
/tracking/verbose 0
/control/cout/ignoreThreadsExcept 0
/opnovice2/boxMaterial G4_BGO
/opnovice2/worldMaterial G4_AIR
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
/opnovice2/boxProperty ABSLENGTH 0.000002 1 0.000005 2 0.000008 3
/opnovice2/boxProperty FASTCOMPONENT 0.000002 1.0 0.000008 1.3
/opnovice2/boxConstProperty FASTTIMECONSTANT 20 ## ns
/opnovice2/boxConstProperty RESOLUTIONSCALE 1
/opnovice2/boxProperty SCINTILLATIONYIELD 5000.
/opnovice2/boxProperty PROTONSCINTILLATIONYIELD 0 50 10 5000
/opnovice2/boxProperty DEUTERONSCINTILLATIONYIELD 0 50 10 5000
/opnovice2/boxProperty TRITONSCINTILLATIONYIELD 0 50 10 5000
/opnovice2/boxProperty ALPHASCINTILLATIONYIELD 0 50 10 50000
/opnovice2/boxProperty IONSCINTILLATIONYIELD 0 50 10 5000
/opnovice2/boxProperty ELECTRONSCINTILLATIONYIELD 0 5000 10 500000
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 100 0.000005 100 0.000008 100
/process/optical/processActivation Cerenkov false
/process/optical/processActivation OpAbsorption true
/process/optical/processActivation OpBoundary false
/process/optical/processActivation Scintillation true
/process/optical/processActivation OpRayleigh false
/process/optical/processActivation OpMieHG false
/process/optical/processActivation OpWLS false
/process/optical/verbose 0
/process/optical/scintillation/setYieldFactor 10
/process/optical/scintillation/setExcitationRatio .5
/process/optical/scintillation/setByParticleType true
/process/optical/scintillation/setTrackInfo false
/process/optical/scintillation/setFiniteRiseTime false
/process/optical/scintillation/setStackPhotons true
/process/optical/scintillation/setTrackSecondariesFirst true
/run/initialize
/process/optical/scintillation/verbose 0
/analysis/setFileName scint_by_particle
/analysis/h1/set 2 100 0 10
/analysis/h1/setXaxis 2 "Energy [eV]"
/analysis/h1/setYaxis 2 "Number of photons"
/analysis/h1/set 13 400 0 200
/analysis/h1/setXaxis 13 "Creation time [ns]"
/analysis/h1/setYaxis 13 "Number of photons"
#
/gun/particle e-
/gun/energy 1 MeV
/gun/position -1 0 0 m
/gun/direction 1 0 0
#
/run/beamOn 100
/gun/particle proton
/run/beamOn 100
/gun/particle alpha
/run/beamOn 100
/gun/particle deuteron
/run/beamOn 100
/gun/particle ion
/gun/ion 6 12 6
/run/beamOn 100
@@ -66,7 +66,7 @@ DetectorConstruction::DetectorConstruction()
fSurface->SetFinish(ground);
fSurface->SetModel(unified);
fSurface->SetMaterialPropertiesTable(fSurfaceMPT);
fTank_LV = nullptr;
fWorld_LV = nullptr;
@@ -136,10 +136,18 @@ void DetectorConstruction::SetSurfaceSigmaAlpha(G4double v) {
<< G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::SetSurfacePolish(G4double v) {
fSurface->SetPolish(v);
G4RunManager::GetRunManager()->GeometryHasBeenModified();
G4cout << "Surface polish set to: " << fSurface->GetPolish()
<< G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddTankMPV(const char* c,
G4MaterialPropertyVector* mpv) {
mpv->SetSpline(true);
fTankMPT->AddProperty(c, mpv);
G4cout << "The MPT for the box is now: " << G4endl;
fTankMPT->DumpTable();
@@ -149,7 +157,6 @@ void DetectorConstruction::AddTankMPV(const char* c,
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddWorldMPV(const char* c,
G4MaterialPropertyVector* mpv) {
mpv->SetSpline(true);
fWorldMPT->AddProperty(c, mpv);
G4cout << "The MPT for the world is now: " << G4endl;
fWorldMPT->DumpTable();
@@ -159,7 +166,6 @@ void DetectorConstruction::AddWorldMPV(const char* c,
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddSurfaceMPV(const char* c,
G4MaterialPropertyVector* mpv) {
mpv->SetSpline(true);
fSurfaceMPT->AddProperty(c, mpv);
G4cout << "The MPT for the surface is now: " << G4endl;
fSurfaceMPT->DumpTable();
@@ -167,7 +173,7 @@ void DetectorConstruction::AddSurfaceMPV(const char* c,
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddTankMPCV(const char* c, G4double v) {
void DetectorConstruction::AddTankMPC(const char* c, G4double v) {
fTankMPT->AddConstProperty(c, v);
G4cout << "The MPT for the box is now: " << G4endl;
fTankMPT->DumpTable();
@@ -175,12 +181,19 @@ void DetectorConstruction::AddTankMPCV(const char* c, G4double v) {
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddWorldMPCV(const char* c, G4double v) {
void DetectorConstruction::AddWorldMPC(const char* c, G4double v) {
fWorldMPT->AddConstProperty(c, v);
G4cout << "The MPT for the world is now: " << G4endl;
fWorldMPT->DumpTable();
G4cout << "............." << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::AddSurfaceMPC(const char* c, G4double v) {
fSurfaceMPT->AddConstProperty(c, v);
G4cout << "The MPT for the surface is now: " << G4endl;
fSurfaceMPT->DumpTable();
G4cout << "............." << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void DetectorConstruction::SetWorldMaterial(const G4String& mat) {
@@ -51,7 +51,7 @@
DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
:G4UImessenger(),fDetector(Det)
{
{
fOpticalDir = new G4UIdirectory("/opnovice2/");
fOpticalDir->SetGuidance("Parameters for optical simulation.");
@@ -59,18 +59,18 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fSurfaceTypeCmd->SetGuidance("Surface type.");
fSurfaceTypeCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceTypeCmd->SetToBeBroadcasted(false);
fSurfaceFinishCmd = new G4UIcmdWithAString("/opnovice2/surfaceFinish", this);
fSurfaceFinishCmd->SetGuidance("Surface finish.");
fSurfaceFinishCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceFinishCmd->SetToBeBroadcasted(false);
fSurfaceModelCmd =
new G4UIcmdWithAString("/opnovice2/surfaceModel", this);
fSurfaceModelCmd->SetGuidance("surface model.");
fSurfaceModelCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceModelCmd->SetToBeBroadcasted(false);
fSurfaceSigmaAlphaCmd =
new G4UIcmdWithADouble("/opnovice2/surfaceSigmaAlpha", this);
fSurfaceSigmaAlphaCmd->SetGuidance("surface sigma alpha");
@@ -78,6 +78,13 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fSurfaceSigmaAlphaCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceSigmaAlphaCmd->SetToBeBroadcasted(false);
fSurfacePolishCmd =
new G4UIcmdWithADouble("/opnovice2/surfacePolish", this);
fSurfacePolishCmd->SetGuidance("surface polish");
fSurfacePolishCmd->SetGuidance(" parameter (for Glisur model).");
fSurfacePolishCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfacePolishCmd->SetToBeBroadcasted(false);
fSurfaceMatPropVectorCmd =
new G4UIcmdWithAString("/opnovice2/surfaceProperty", this);
fSurfaceMatPropVectorCmd->SetGuidance("Set material property vector");
@@ -85,6 +92,13 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fSurfaceMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceMatPropVectorCmd->SetToBeBroadcasted(false);
fSurfaceMatPropConstCmd =
new G4UIcmdWithAString("/opnovice2/surfaceConstProperty", this);
fSurfaceMatPropConstCmd->SetGuidance("Set material constant property");
fSurfaceMatPropConstCmd->SetGuidance(" for the surface.");
fSurfaceMatPropConstCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fSurfaceMatPropConstCmd->SetToBeBroadcasted(false);
fTankMatPropVectorCmd =
new G4UIcmdWithAString("/opnovice2/boxProperty", this);
fTankMatPropVectorCmd->SetGuidance("Set material property vector for ");
@@ -92,12 +106,12 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fTankMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fTankMatPropVectorCmd->SetToBeBroadcasted(false);
fTankMatConstPropVectorCmd =
fTankMatPropConstCmd =
new G4UIcmdWithAString("/opnovice2/boxConstProperty", this);
fTankMatConstPropVectorCmd->SetGuidance("Set material constant property ");
fTankMatConstPropVectorCmd->SetGuidance("for the box.");
fTankMatConstPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fTankMatConstPropVectorCmd->SetToBeBroadcasted(false);
fTankMatPropConstCmd->SetGuidance("Set material constant property ");
fTankMatPropConstCmd->SetGuidance("for the box.");
fTankMatPropConstCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fTankMatPropConstCmd->SetToBeBroadcasted(false);
fTankMaterialCmd = new G4UIcmdWithAString("/opnovice2/boxMaterial", this);
fTankMaterialCmd->SetGuidance("Set material of box.");
@@ -111,13 +125,13 @@ DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
fWorldMatPropVectorCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
fWorldMatPropVectorCmd->SetToBeBroadcasted(false);
fWorldMatConstPropVectorCmd =
fWorldMatPropConstCmd =
new G4UIcmdWithAString("/opnovice2/worldConstProperty", this);
fWorldMatConstPropVectorCmd->SetGuidance("Set material constant property");
fWorldMatConstPropVectorCmd->SetGuidance(" for the world.");
fWorldMatConstPropVectorCmd->
fWorldMatPropConstCmd->SetGuidance("Set material constant property");
fWorldMatPropConstCmd->SetGuidance(" for the world.");
fWorldMatPropConstCmd->
AvailableForStates(G4State_PreInit, G4State_Idle);
fWorldMatConstPropVectorCmd->SetToBeBroadcasted(false);
fWorldMatPropConstCmd->SetToBeBroadcasted(false);
fWorldMaterialCmd = new G4UIcmdWithAString("/opnovice2/worldMaterial", this);
fWorldMaterialCmd->SetGuidance("Set material of world.");
@@ -134,12 +148,14 @@ DetectorMessenger::~DetectorMessenger()
delete fSurfaceTypeCmd;
delete fSurfaceModelCmd;
delete fSurfaceSigmaAlphaCmd;
delete fSurfacePolishCmd;
delete fSurfaceMatPropVectorCmd;
delete fSurfaceMatPropConstCmd;
delete fTankMatPropVectorCmd;
delete fTankMatConstPropVectorCmd;
delete fTankMatPropConstCmd;
delete fTankMaterialCmd;
delete fWorldMatPropVectorCmd;
delete fWorldMatConstPropVectorCmd;
delete fWorldMatPropConstCmd;
delete fWorldMaterialCmd;
}
@@ -323,13 +339,16 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
fDetector->SetSurfaceSigmaAlpha(
G4UIcmdWithADouble::GetNewDoubleValue(newValue));
}
else if (command == fSurfacePolishCmd) {
fDetector->SetSurfacePolish(
G4UIcmdWithADouble::GetNewDoubleValue(newValue));
}
else if (command == fTankMatPropVectorCmd) {
// got a string. need to convert it to physics vector.
// string format is property name, then pairs of energy, value
// string format is property name, then pairs of energy, value
// specify units for each value, eg 3.0*eV
// space delimited
G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
mpv->SetSpline(true);
std::istringstream instring(newValue);
G4String prop;
instring >> prop;
@@ -342,14 +361,14 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
G4double val;
val = G4UIcommand::ConvertToDouble(tmp);
mpv->InsertValues(en, val);
}
}
const char* c = prop.c_str();
fDetector->AddTankMPV(c, mpv);
}
else if (command == fWorldMatPropVectorCmd) {
// Convert string to physics vector
// string format is property name, then pairs of energy, value
// string format is property name, then pairs of energy, value
G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
std::istringstream instring(newValue);
G4String prop;
@@ -390,7 +409,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
fDetector->AddSurfaceMPV(c, mpv);
}
else if (command == fTankMatConstPropVectorCmd) {
else if (command == fTankMatPropConstCmd) {
// Convert string to physics vector
// string format is property name, then value
// space delimited
@@ -401,9 +420,9 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddTankMPCV(c, val);
fDetector->AddTankMPC(c, val);
}
else if (command == fWorldMatConstPropVectorCmd) {
else if (command == fWorldMatPropConstCmd) {
// Convert string to physics vector
// string format is property name, then value
// space delimited
@@ -414,9 +433,22 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddTankMPCV(c, val);
fDetector->AddTankMPC(c, val);
}
else if (command == fWorldMaterialCmd) {
else if (command == fSurfaceMatPropConstCmd) {
// Convert string to physics vector
// string format is property name, then value
// space delimited
std::istringstream instring(newValue);
G4String prop;
G4String tmp;
instring >> prop;
instring >> tmp;
G4double val = G4UIcommand::ConvertToDouble(tmp);
const char* c = prop.c_str();
fDetector->AddSurfaceMPC(c, val);
}
else if (command == fWorldMaterialCmd) {
fDetector->SetWorldMaterial(newValue);
}
else if (command == fTankMaterialCmd) {
@@ -62,9 +62,9 @@ void HistoManager::Book()
analysisManager->SetActivation(true); // enable inactivation of histograms
// Define histogram indices, titles
G4int maxHisto = 12;
G4int maxHisto = 13;
G4String id[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10","11","12" };
"10","11","12","13" };
G4String title[] = {
"dummy", // 0
@@ -80,6 +80,7 @@ void HistoManager::Book()
"X momentum dir of Fresnel-refracted photons", //10
"Y momentum dir of Fresnel-refracted photons", //11
"Z momentum dir of Fresnel-refracted photons", //12
"scintillation photons creation time", //13
};
// Default values (to be reset via /analysis/h1/set command)
@@ -306,14 +306,17 @@ void SteppingAction::UserSteppingAction(const G4Step* step)
G4double en = sec->GetKineticEnergy();
run->AddCerenkovEnergy(en);
run->AddCerenkov();
G4AnalysisManager::Instance()->FillH1(1, en);
G4AnalysisManager::Instance()->FillH1(1, en/eV);
}
else if (sec->GetCreatorProcess()
->GetProcessName().compare("Scintillation") == 0) {
G4double en = sec->GetKineticEnergy();
run->AddScintillationEnergy(en);
run->AddScintillation();
G4AnalysisManager::Instance()->FillH1(2, en);
G4AnalysisManager::Instance()->FillH1(2, en/eV);
G4double time = sec->GetGlobalTime();
analysisMan->FillH1(13, time/ns);
}
}
}
@@ -1,39 +0,0 @@
/control/verbose 2
/tracking/verbose 0
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
/opnovice2/boxProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
/opnovice2/surfaceModel unified
/opnovice2/surfaceType dielectric_dielectric
/opnovice2/surfaceFinish ground
/opnovice2/surfaceSigmaAlpha 1.1
/opnovice2/surfaceProperty SPECULARLOBECONSTANT 0.000002 .1 0.000008 .1
/opnovice2/surfaceProperty SPECULARSPIKECONSTANT 0.000002 .01 0.000008 .01
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 .05 0.000008 .05
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 .99 0.000008 .99
/run/initialize
#
/gun/particle opticalphoton
/gun/energy 3 eV
/gun/position 0 0 0 cm
/gun/direction 1 0 0
/opnovice2/gun/optPhotonPolar
#
/analysis/h1/set 3 40 -1 39
/analysis/h1/set 4 100 -1.1 1.1
/analysis/h1/set 5 100 -1.1 1.1
/analysis/h1/set 6 100 -1.1 1.1
/analysis/h1/set 7 100 -1.1 1.1
/analysis/h1/set 8 100 -1.1 1.1
/analysis/h1/set 9 100 -1.1 1.1
/analysis/h1/set 10 100 -1.1 1.1
/analysis/h1/set 11 100 -1.1 1.1
/analysis/h1/set 12 100 -1.1 1.1
/run/beamOn 100000
@@ -0,0 +1,86 @@
/control/verbose 2
/tracking/verbose 0
/opnovice2/boxProperty RINDEX 0.000002 1.3 0.000008 1.4
/opnovice2/boxProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
/opnovice2/worldProperty RINDEX 0.000002 1.01 0.000008 1.01
/opnovice2/worldProperty ABSLENGTH 0.000002 1000000 0.000005 2000000 0.000008 3000000
/opnovice2/surfaceModel unified
/opnovice2/surfaceType dielectric_dielectric
############################# ground ################################
/opnovice2/surfaceFinish ground
/opnovice2/surfaceSigmaAlpha 0.2
/opnovice2/surfaceProperty SPECULARLOBECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty SPECULARSPIKECONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty BACKSCATTERCONSTANT 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty TRANSMITTANCE 0.000002 0.1 0.000008 0.1
/opnovice2/surfaceProperty REFLECTIVITY 0.000002 0.8 0.000008 0.8
/opnovice2/surfaceProperty EFFICIENCY 0.000002 0.1 0.000008 0.1
/run/initialize
#
/gun/particle opticalphoton
/gun/energy 3 eV
/gun/position 0 0 0 cm
/gun/direction 1 0 0
/opnovice2/gun/optPhotonPolar
#
/analysis/setFileName unified
/analysis/h1/set 3 40 -1 39
/analysis/h1/set 4 100 -1.1 1.1
/analysis/h1/set 5 100 -1.1 1.1
/analysis/h1/set 6 100 -1.1 1.1
/analysis/h1/set 7 100 -1.1 1.1
/analysis/h1/set 8 100 -1.1 1.1
/analysis/h1/set 9 100 -1.1 1.1
/analysis/h1/set 10 100 -1.1 1.1
/analysis/h1/set 11 100 -1.1 1.1
/analysis/h1/set 12 100 -1.1 1.1
/run/beamOn 10000
############################# polished ########################################
/opnovice2/surfaceFinish polished
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceConstProperty SURFACEROUGHNESS 0.01
/run/initialize
/run/beamOn 10000
############################# painted #########################################
/opnovice2/surfaceFinish polishedfrontpainted
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish polishedbackpainted
/opnovice2/surfaceSigmaAlpha 0.0
/opnovice2/surfaceProperty RINDEX 0.000002 1.4 0.000008 1.5
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish groundfrontpainted
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish groundbackpainted
/run/initialize
/run/beamOn 10000
############################# dielectric_metal ################################
/opnovice2/surfaceType dielectric_metal
/opnovice2/surfaceFinish polished
/run/initialize
/run/beamOn 10000
/opnovice2/surfaceFinish ground
/run/initialize
/run/beamOn 10000
+7
View File
@@ -15,6 +15,13 @@ track of all tags.
----------------------------------------------------------
October 29, 2019 D. Sawkey (WLS-V10-05-01)
- Use G4OpticalPhysics
- Use G4SteppingVerbose
October 21, 2019 D.Sawkey (WLS-V10-05-00)
- Don't store random number seeds
May 17, 2018 J. Allison (WLS-V10-04-01)
- Remove G4UI_USE and G4VIS_USE.
- Move instantiation of G4UIExecutive to start of main.
@@ -49,8 +49,6 @@ class WLSActionInitialization : public G4VUserActionInitialization
virtual void BuildForMaster() const;
virtual void Build() const;
virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
private:
WLSDetectorConstruction* fDetector;
@@ -1,53 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSExtraPhysics.hh
/// \brief Definition of the WLSExtraPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSExtraPhysics_h
#define WLSExtraPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
class WLSExtraPhysics : public G4VPhysicsConstructor
{
public:
WLSExtraPhysics();
virtual ~WLSExtraPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
};
#endif
@@ -1,83 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSOpticalPhysics.hh
/// \brief Definition of the WLSOpticalPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSOpticalPhysics_h
#define WLSOpticalPhysics_h 1
#include "globals.hh"
#include "G4OpWLS.hh"
#include "G4Cerenkov.hh"
#include "G4Scintillation.hh"
#include "G4OpMieHG.hh"
#include "G4OpRayleigh.hh"
#include "G4OpAbsorption.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4VPhysicsConstructor.hh"
class WLSOpticalPhysics : public G4VPhysicsConstructor
{
public:
WLSOpticalPhysics(G4bool toggle=true);
virtual ~WLSOpticalPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
G4OpWLS* GetWLSProcess() {return fWLSProcess;}
G4Cerenkov* GetCerenkovProcess() {return fCerenkovProcess;}
G4Scintillation* GetScintillationProcess() {return fScintProcess;}
G4OpAbsorption* GetAbsorptionProcess() {return fAbsorptionProcess;}
G4OpRayleigh* GetRayleighScatteringProcess() {return fRayleighScattering;}
G4OpMieHG* GetMieHGScatteringProcess() {return fMieHGScatteringProcess;}
G4OpBoundaryProcess* GetBoundaryProcess() { return fBoundaryProcess;}
void SetNbOfPhotonsCerenkov(G4int);
private:
G4OpWLS* fWLSProcess;
G4Cerenkov* fCerenkovProcess;
G4Scintillation* fScintProcess;
G4OpAbsorption* fAbsorptionProcess;
G4OpRayleigh* fRayleighScattering;
G4OpMieHG* fMieHGScatteringProcess;
G4OpBoundaryProcess* fBoundaryProcess;
G4bool fAbsorptionOn;
};
#endif
@@ -1,96 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSPhysicsList.hh
/// \brief Definition of the WLSPhysicsList class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSPhysicsList_h
#define WLSPhysicsList_h 1
#include "globals.hh"
#include "G4VModularPhysicsList.hh"
class G4VPhysicsConstructor;
class WLSPhysicsListMessenger;
class WLSStepMax;
class WLSOpticalPhysics;
class WLSPhysicsList: public G4VModularPhysicsList
{
public:
WLSPhysicsList(G4String);
virtual ~WLSPhysicsList();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void SetStepMax(G4double);
WLSStepMax* GetStepMaxProcess();
void AddStepMax();
/// Remove specific physics from physics list.
void RemoveFromPhysicsList(const G4String&);
/// Make sure that the physics list is empty.
void ClearPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
// Turn on or off the absorption process
void SetAbsorption(G4bool);
void SetNbOfPhotonsCerenkov(G4int);
void SetVerbose(G4int);
private:
G4double fCutForGamma;
G4double fCutForElectron;
G4double fCutForPositron;
WLSStepMax* fStepMaxProcess;
WLSOpticalPhysics* fOpticalPhysics;
WLSPhysicsListMessenger* fMessenger;
G4bool fAbsorptionOn;
G4VMPLData::G4PhysConstVectorData* fPhysicsVector;
};
#endif
@@ -1,94 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSPhysicsListMessenger.hh
/// \brief Definition of the WLSPhysicsListMessenger class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSPhysicsListMessenger_h
#define WLSPhysicsListMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "G4DecayTable.hh"
#include "G4VDecayChannel.hh"
class WLSPhysicsList;
class G4UIdirectory;
class G4UIcmdWithABool;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4UIcmdWithoutParameter;
class G4UIcmdWithADoubleAndUnit;
/// Provide control of the physics list and cut parameters
class WLSPhysicsListMessenger : public G4UImessenger
{
public:
WLSPhysicsListMessenger(WLSPhysicsList* );
virtual ~WLSPhysicsListMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
private:
WLSPhysicsList* fPhysicsList;
G4UIdirectory* fDirectory;
G4UIdirectory* fDecayDirectory;
G4UIcmdWithABool* fSetAbsorptionCMD;
G4UIcmdWithAnInteger* fVerboseCmd;
G4UIcmdWithAnInteger* fCerenkovCmd;
G4UIcmdWithADoubleAndUnit* fGammaCutCMD;
G4UIcmdWithADoubleAndUnit* fElectCutCMD;
G4UIcmdWithADoubleAndUnit* fPosCutCMD;
G4UIcmdWithADoubleAndUnit* fAllCutCMD;
G4UIcmdWithADoubleAndUnit* fStepMaxCMD;
G4UIcmdWithAString* fRemovePhysicsCMD;
G4UIcmdWithoutParameter* fClearPhysicsCMD;
G4UIcmdWithoutParameter* fListCMD;
G4UIcmdWithoutParameter* fPienuCMD;
G4UIcmdWithoutParameter* fPimunuCMD;
};
#endif
@@ -1,80 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSStepMax.hh
/// \brief Definition of the WLSStepMax class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSStepMax_h
#define WLSStepMax_h 1
#include "globals.hh"
#include "G4Step.hh"
#include "G4VDiscreteProcess.hh"
#include "G4ParticleDefinition.hh"
class WLSStepMax : public G4VDiscreteProcess
{
public:
WLSStepMax(const G4String& processName = "UserStepMax");
WLSStepMax(WLSStepMax &);
virtual ~WLSStepMax();
virtual G4bool IsApplicable(const G4ParticleDefinition&);
void SetStepMax(G4double);
G4double GetStepMax() {return fMaxChargedStep;};
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
protected:
G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*);
private:
// hide assignment operator as private
WLSStepMax & operator=(const WLSStepMax &right);
WLSStepMax(const WLSStepMax&);
private:
G4double fMaxChargedStep;
};
#endif
@@ -1,50 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSSteppingVerbose.hh
/// \brief Definition of the WLSSteppingVerbose class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSSteppingVerbose_h
#define WLSSteppingVerbose_h 1
#include "G4SteppingVerbose.hh"
class WLSSteppingVerbose : public G4SteppingVerbose
{
public:
WLSSteppingVerbose();
virtual ~WLSSteppingVerbose();
virtual void StepInfo();
virtual void TrackingStarted();
};
#endif
@@ -37,8 +37,6 @@
#include "WLSTrackingAction.hh"
#include "WLSSteppingAction.hh"
#include "WLSStackingAction.hh"
#include "WLSSteppingVerbose.hh"
#include "G4GeneralParticleSource.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -78,7 +76,3 @@ void WLSActionInitialization::Build() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VSteppingVerbose* WLSActionInitialization::InitializeSteppingVerbose() const
{
return new WLSSteppingVerbose();
}
@@ -38,7 +38,7 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4OpticalSurface.hh"
#include "G4LogicalSkinSurface.hh"
#include "G4LogicalBorderSurface.hh"
@@ -1,92 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSExtraPhysics.cc
/// \brief Implementation of the WLSExtraPhysics class
//
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
#include "G4UserSpecialCuts.hh"
#include "G4StepLimiter.hh"
#include "WLSExtraPhysics.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSExtraPhysics::WLSExtraPhysics()
: G4VPhysicsConstructor("Extra") { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSExtraPhysics::~WLSExtraPhysics() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSExtraPhysics::ConstructParticle() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSExtraPhysics::ConstructProcess()
{
G4cout << "WLSExtraPhysics:: Add Extra Physics Processes"
<< G4endl;
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ((*particleIterator)()) {
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
G4double charge = particle->GetPDGCharge();
if (!pmanager) {
std::ostringstream o;
o << "Particle " << particleName << "without a Process Manager";
G4Exception("WLSExtraPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if (particleName == "opticalphoton") break;
if (charge != 0.0) {
// All charged particles should have a step limiter
// to make sure that the steps do not get too long.
pmanager->AddDiscreteProcess(new G4StepLimiter());
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
} else if (particleName == "neutron") {
// time cuts for ONLY neutrons:
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
} else {
// Energy cuts for all other neutral particles
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
}
}
}
@@ -1,146 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSOpticalPhysics.cc
/// \brief Implementation of the WLSOpticalPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4LossTableManager.hh"
#include "G4EmSaturation.hh"
#include "WLSOpticalPhysics.hh"
WLSOpticalPhysics::WLSOpticalPhysics(G4bool toggle)
: G4VPhysicsConstructor("Optical")
{
fWLSProcess = NULL;
fScintProcess = NULL;
fCerenkovProcess = NULL;
fBoundaryProcess = NULL;
fAbsorptionProcess = NULL;
fRayleighScattering = NULL;
fMieHGScatteringProcess = NULL;
fAbsorptionOn = toggle;
}
WLSOpticalPhysics::~WLSOpticalPhysics() { }
#include "G4OpticalPhoton.hh"
void WLSOpticalPhysics::ConstructParticle()
{
G4OpticalPhoton::OpticalPhotonDefinition();
}
#include "G4ProcessManager.hh"
void WLSOpticalPhysics::ConstructProcess()
{
G4cout << "WLSOpticalPhysics:: Add Optical Physics Processes"
<< G4endl;
fWLSProcess = new G4OpWLS();
fScintProcess = new G4Scintillation();
fScintProcess->SetScintillationYieldFactor(1.);
fScintProcess->SetTrackSecondariesFirst(true);
fCerenkovProcess = new G4Cerenkov();
fCerenkovProcess->SetMaxNumPhotonsPerStep(300);
fCerenkovProcess->SetTrackSecondariesFirst(true);
fAbsorptionProcess = new G4OpAbsorption();
fRayleighScattering = new G4OpRayleigh();
fMieHGScatteringProcess = new G4OpMieHG();
fBoundaryProcess = new G4OpBoundaryProcess();
G4ProcessManager* pManager =
G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
if (!pManager) {
std::ostringstream o;
o << "Optical Photon without a Process Manager";
G4Exception("WLSOpticalPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if (fAbsorptionOn) pManager->AddDiscreteProcess(fAbsorptionProcess);
//pManager->AddDiscreteProcess(fRayleighScattering);
//pManager->AddDiscreteProcess(fMieHGScatteringProcess);
pManager->AddDiscreteProcess(fBoundaryProcess);
fWLSProcess->UseTimeProfile("delta");
//fWLSProcess->UseTimeProfile("exponential");
pManager->AddDiscreteProcess(fWLSProcess);
fScintProcess->SetScintillationYieldFactor(1.);
fScintProcess->SetScintillationExcitationRatio(0.0);
fScintProcess->SetTrackSecondariesFirst(true);
// Use Birks Correction in the Scintillation process
G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
fScintProcess->AddSaturation(emSaturation);
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4String particleName = particle->GetParticleName();
pManager = particle->GetProcessManager();
if (!pManager) {
std::ostringstream o;
o << "Particle " << particleName << "without a Process Manager";
G4Exception("WLSOpticalPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if(fCerenkovProcess->IsApplicable(*particle)){
pManager->AddProcess(fCerenkovProcess);
pManager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
}
if(fScintProcess->IsApplicable(*particle)){
pManager->AddProcess(fScintProcess);
pManager->SetProcessOrderingToLast(fScintProcess,idxAtRest);
pManager->SetProcessOrderingToLast(fScintProcess,idxPostStep);
}
}
}
void WLSOpticalPhysics::SetNbOfPhotonsCerenkov(G4int maxNumber)
{
fCerenkovProcess->SetMaxNumPhotonsPerStep(maxNumber);
}
@@ -1,345 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSPhysicsList.cc
/// \brief Implementation of the WLSPhysicsList class
//
//
#include "WLSPhysicsList.hh"
#include "WLSPhysicsListMessenger.hh"
#include "WLSExtraPhysics.hh"
#include "WLSOpticalPhysics.hh"
#include "G4LossTableManager.hh"
#include "G4ProcessManager.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
//#include "G4PhysListFactory.hh"
#include "FTFP_BERT.hh"
#include "QGSP_BERT_HP.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "WLSStepMax.hh"
#include "G4ProcessTable.hh"
#include "G4PionDecayMakeSpin.hh"
#include "G4DecayWithSpin.hh"
#include "G4DecayTable.hh"
#include "G4MuonDecayChannelWithSpin.hh"
#include "G4MuonRadiativeDecayChannelWithSpin.hh"
#include "G4RadioactiveDecayPhysics.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsList::WLSPhysicsList(G4String physName) : G4VModularPhysicsList()
{
G4LossTableManager::Instance();
defaultCutValue = 1.*mm;
fCutForGamma = defaultCutValue;
fCutForElectron = defaultCutValue;
fCutForPositron = defaultCutValue;
// G4PhysListFactory factory;
G4VModularPhysicsList* phys = NULL;
if (physName == "QGSP_BERT_HP") {
phys = new QGSP_BERT_HP;
} else {
phys = new FTFP_BERT;
}
// if (factory.IsReferencePhysList(physName)) {
// phys = factory.GetReferencePhysList(physName);
// if(!phys)G4Exception("WLSPhysicsList::WLSPhysicsList","InvalidSetup",
// FatalException,"PhysicsList does not exist");
fMessenger = new WLSPhysicsListMessenger(this);
// }
for (G4int i = 0; ; ++i) {
G4VPhysicsConstructor* elem =
const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
if (elem == NULL) break;
G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
RegisterPhysics(elem);
}
fAbsorptionOn = true;
RegisterPhysics(new WLSExtraPhysics());
RegisterPhysics(fOpticalPhysics = new WLSOpticalPhysics(fAbsorptionOn));
RegisterPhysics(new G4RadioactiveDecayPhysics());
fStepMaxProcess = new WLSStepMax();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsList::~WLSPhysicsList()
{
delete fMessenger;
delete fStepMaxProcess;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ClearPhysics()
{
for (G4PhysConstVector::iterator p = fPhysicsVector->begin();
p != fPhysicsVector->end(); ++p) {
delete (*p);
}
fPhysicsVector->clear();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ConstructParticle()
{
G4VModularPhysicsList::ConstructParticle();
G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
MuonPlusDecayTable -> Insert(new
G4MuonDecayChannelWithSpin("mu+",0.986));
MuonPlusDecayTable -> Insert(new
G4MuonRadiativeDecayChannelWithSpin("mu+",0.014));
G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable);
G4DecayTable* MuonMinusDecayTable = new G4DecayTable();
MuonMinusDecayTable -> Insert(new
G4MuonDecayChannelWithSpin("mu-",0.986));
MuonMinusDecayTable -> Insert(new
G4MuonRadiativeDecayChannelWithSpin("mu-",0.014));
G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ConstructProcess()
{
G4VModularPhysicsList::ConstructProcess();
SetVerbose(0);
G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin();
G4ProcessTable* processTable = G4ProcessTable::GetProcessTable();
G4VProcess* decay;
decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus());
G4ProcessManager* pManager;
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(decayWithSpin);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
}
decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus());
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(decayWithSpin);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
}
G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin();
decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus());
pManager = G4PionPlus::PionPlus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(poldecay);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(poldecay, idxPostStep);
pManager ->SetProcessOrdering(poldecay, idxAtRest);
}
decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus());
pManager = G4PionMinus::PionMinus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(poldecay);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(poldecay, idxPostStep);
pManager ->SetProcessOrdering(poldecay, idxAtRest);
}
AddStepMax();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::RemoveFromPhysicsList(const G4String& name)
{
G4bool success = false;
for (G4PhysConstVector::iterator p = fPhysicsVector->begin();
p != fPhysicsVector->end(); ++p) {
G4VPhysicsConstructor* e = (*p);
if (e->GetPhysicsName() == name) {
fPhysicsVector->erase(p);
success = true;
break;
}
}
if (!success) {
G4ExceptionDescription message;
message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found";
G4Exception("example WLSPhysicsList::RemoveFromPhysicsList()",
"ExamWLSPhysicsList01",FatalException,message);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetAbsorption(G4bool toggle)
{
fAbsorptionOn = toggle;
RemoveFromPhysicsList("Optical");
fPhysicsVector->
push_back(fOpticalPhysics = new WLSOpticalPhysics(toggle));
fOpticalPhysics->ConstructProcess();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCuts()
{
if (verboseLevel >0) {
G4cout << "WLSPhysicsList::SetCuts:";
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
<< G4endl;
}
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(fCutForGamma, "gamma");
SetCutValue(fCutForElectron, "e-");
SetCutValue(fCutForPositron, "e+");
if (verboseLevel>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForGamma(G4double cut)
{
fCutForGamma = cut;
SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForElectron(G4double cut)
{
fCutForElectron = cut;
SetParticleCuts(fCutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForPositron(G4double cut)
{
fCutForPositron = cut;
SetParticleCuts(fCutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetStepMax(G4double step)
{
fStepMaxProcess->SetStepMax(step);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax* WLSPhysicsList::GetStepMaxProcess()
{
return fStepMaxProcess;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::AddStepMax()
{
// Step limitation seen as a process
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ((*particleIterator)()){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (fStepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
{
if (pmanager) pmanager ->AddDiscreteProcess(fStepMaxProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetNbOfPhotonsCerenkov(G4int maxNumber)
{
fOpticalPhysics->SetNbOfPhotonsCerenkov(maxNumber);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetVerbose(G4int verbose)
{
fOpticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetScintillationProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetRayleighScatteringProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetMieHGScatteringProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose);
}
@@ -1,233 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSPhysicsListMessenger.cc
/// \brief Implementation of the WLSPhysicsListMessenger class
//
//
#include "globals.hh"
#include "WLSPhysicsListMessenger.hh"
#include "WLSPhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PionRadiativeDecayChannel.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsListMessenger::WLSPhysicsListMessenger(WLSPhysicsList* pPhys)
: fPhysicsList(pPhys)
{
fDirectory = new G4UIdirectory("/WLS/phys/");
fDirectory->SetGuidance("WLSPhysicsList control");
fSetAbsorptionCMD = new G4UIcmdWithABool("/WLS/setAbsorption", this);
fSetAbsorptionCMD->SetGuidance("Turn on or off absorption process");
fSetAbsorptionCMD->AvailableForStates(G4State_Idle);
fVerboseCmd = new G4UIcmdWithAnInteger("/WLS/phys/verbose",this);
fVerboseCmd->SetGuidance("set verbose for physics processes");
fVerboseCmd->SetParameterName("verbose",true);
fVerboseCmd->SetDefaultValue(1);
fVerboseCmd->SetRange("verbose>=0");
fVerboseCmd->AvailableForStates(G4State_Idle);
fCerenkovCmd =
new G4UIcmdWithAnInteger("/WLS/phys/cerenkovMaxPhotons",this);
fCerenkovCmd->SetGuidance("set max nb of photons per step");
fCerenkovCmd->SetParameterName("MaxNumber",false);
fCerenkovCmd->SetRange("MaxNumber>=0");
fCerenkovCmd->AvailableForStates(G4State_Idle);
fGammaCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/gammaCut",this);
fGammaCutCMD->SetGuidance("Set gamma cut");
fGammaCutCMD->SetParameterName("Gcut",false);
fGammaCutCMD->SetUnitCategory("Length");
fGammaCutCMD->SetRange("Gcut>0.0");
fGammaCutCMD->SetDefaultUnit("mm");
fGammaCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fElectCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/electronCut",this);
fElectCutCMD->SetGuidance("Set electron cut");
fElectCutCMD->SetParameterName("Ecut",false);
fElectCutCMD->SetUnitCategory("Length");
fElectCutCMD->SetRange("Ecut>0.0");
fElectCutCMD->SetDefaultUnit("mm");
fElectCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fPosCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/positronCut",this);
fPosCutCMD->SetGuidance("Set positron cut");
fPosCutCMD->SetParameterName("Pcut",false);
fPosCutCMD->SetUnitCategory("Length");
fPosCutCMD->SetRange("Pcut>0.0");
fPosCutCMD->SetDefaultUnit("mm");
fPosCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fAllCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/allCuts",this);
fAllCutCMD->SetGuidance("Set cut for all");
fAllCutCMD->SetParameterName("cut",false);
fAllCutCMD->SetUnitCategory("Length");
fAllCutCMD->SetRange("cut>0.0");
fAllCutCMD->SetDefaultUnit("mm");
fAllCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/stepMax",this);
fStepMaxCMD->SetGuidance("Set max. step length in the detector");
fStepMaxCMD->SetParameterName("mxStep",false);
fStepMaxCMD->SetUnitCategory("Length");
fStepMaxCMD->SetRange("mxStep>0.0");
fStepMaxCMD->SetDefaultUnit("mm");
fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fClearPhysicsCMD =
new G4UIcmdWithoutParameter("/WLS/phys/clearPhysics",this);
fClearPhysicsCMD->SetGuidance("Clear the physics list");
fClearPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fRemovePhysicsCMD = new G4UIcmdWithAString("/WLS/phys/removePhysics",this);
fRemovePhysicsCMD->
SetGuidance("Remove a physics process from Physics List");
fRemovePhysicsCMD->SetParameterName("PList",false);
fRemovePhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fListCMD = new G4UIcmdWithoutParameter("/WLS/phys/list",this);
fListCMD->SetGuidance("Available Physics Lists");
fListCMD->AvailableForStates(G4State_Idle);
fDecayDirectory = new G4UIdirectory("/decay/");
fDecayDirectory->SetGuidance("Decay chain control commands.");
fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this);
fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu");
fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this);
fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsListMessenger::~WLSPhysicsListMessenger()
{
delete fVerboseCmd;
delete fCerenkovCmd;
delete fSetAbsorptionCMD;
delete fGammaCutCMD;
delete fElectCutCMD;
delete fPosCutCMD;
delete fAllCutCMD;
delete fClearPhysicsCMD;
delete fRemovePhysicsCMD;
delete fListCMD;
delete fPienuCMD;
delete fPimunuCMD;
delete fDirectory;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == fSetAbsorptionCMD ) {
fPhysicsList->SetAbsorption(G4UIcmdWithABool::GetNewBoolValue(newValue));
}
else if( command == fVerboseCmd ) {
fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));
}
else if( command == fCerenkovCmd ) {
fPhysicsList->
SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));
}
else if (command == fPienuCMD) {
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
G4VDecayChannel* mode =
new G4PhaseSpaceDecayChannel("pi+",1.0,2,"e+","nu_e");
G4DecayTable* table = new G4DecayTable();
table->Insert(mode);
// mode = new G4PionRadiativeDecayChannel("pi+",0.000017);
// table->Insert(mode);
particleDef->SetDecayTable(table);
}
else if (command == fPimunuCMD) {
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
G4VDecayChannel* mode =
new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu");
G4DecayTable* table = new G4DecayTable();
table->Insert(mode);
particleDef->SetDecayTable(table);
}
else if (command == fGammaCutCMD) {
fPhysicsList->SetCutForGamma(fGammaCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fElectCutCMD) {
fPhysicsList->SetCutForElectron(fElectCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fPosCutCMD) {
fPhysicsList->SetCutForPositron(fPosCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fAllCutCMD) {
G4double cut = fAllCutCMD->GetNewDoubleValue(newValue);
fPhysicsList->SetCutForGamma(cut);
fPhysicsList->SetCutForElectron(cut);
fPhysicsList->SetCutForPositron(cut);
}
else if (command == fStepMaxCMD) {
fPhysicsList->SetStepMax(fStepMaxCMD
->GetNewDoubleValue(newValue));
}
else if (command == fClearPhysicsCMD) {
fPhysicsList->ClearPhysics();
}
else if (command == fRemovePhysicsCMD) {
G4String name = newValue;
fPhysicsList->RemoveFromPhysicsList(name);
}
}
@@ -62,8 +62,7 @@ void WLSRunAction::BeginOfRunAction(const G4Run* aRun)
{
G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
G4RunManager::GetRunManager()->SetRandomNumberStore(true);
G4RunManager::GetRunManager()->SetRandomNumberStoreDir("random/");
G4RunManager::GetRunManager()->SetRandomNumberStore(false);
if (fAutoSeed) {
// automatic (time-based) random seeds for each run
@@ -1,97 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSStepMax.cc
/// \brief Implementation of the WLSStepMax class
//
//
#include "G4Track.hh"
#include "G4VParticleChange.hh"
#include "WLSStepMax.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::WLSStepMax(const G4String& aName)
: G4VDiscreteProcess(aName), fMaxChargedStep(DBL_MAX)
{
if (verboseLevel>0) {
G4cout << GetProcessName() << " is created "<< G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::~WLSStepMax() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::WLSStepMax(WLSStepMax& right) : G4VDiscreteProcess(right) { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool WLSStepMax::IsApplicable(const G4ParticleDefinition& particle)
{
return (particle.GetPDGCharge() != 0.);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSStepMax::SetStepMax(G4double step) { fMaxChargedStep = step ; }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double WLSStepMax::PostStepGetPhysicalInteractionLength(
const G4Track&,
G4double,
G4ForceCondition* condition)
{
// condition is set to "Not Forced"
*condition = NotForced;
G4double ProposedStep = DBL_MAX;
if ( fMaxChargedStep > 0.) ProposedStep = fMaxChargedStep;
return ProposedStep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VParticleChange* WLSStepMax::PostStepDoIt(const G4Track& aTrack,
const G4Step& )
{
// do nothing
aParticleChange.Initialize(aTrack);
return &aParticleChange;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double WLSStepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*)
{
return 0.;
}
@@ -1,211 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSSteppingVerbose.cc
/// \brief Implementation of the WLSSteppingVerbose class
//
//
#include "G4UnitsTable.hh"
#include "WLSSteppingVerbose.hh"
#include "WLSSteppingAction.hh"
// Print out of the steps
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSSteppingVerbose::WLSSteppingVerbose()
{
G4VSteppingVerbose::SetSilent(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSSteppingVerbose::~WLSSteppingVerbose() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSSteppingVerbose::StepInfo()
{
CopyState();
G4int prec = G4cout.precision(8);
// if (fTrack->GetDefinition()->GetParticleName() != "opticalphoton") return;
if ( verboseLevel >= 1 ) {
if ( verboseLevel >= 4 ) VerboseTrack();
if ( verboseLevel >= 3 ) {
G4cout << G4endl;
G4cout << std::setw( 5) << "#Step#" << " "
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "NextVolu"
<< std::setw(10) << "Process"
<< std::setw(10) << "Dir_x" << " "
<< std::setw(10) << "Dir_y" << " "
<< std::setw(10) << "Dir_z" << " "
<< G4endl;
}
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->
GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if ( fTrack->GetNextVolume() != 0 ) {
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << std::setw(10) << "OutOfWorld";
}
if ( fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0 ) {
G4cout << " "
<< std::setw(10) << fStep->
GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName();
} else {
G4cout << " UserLimit";
}
//G4cout << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().x(),"Length")
// << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().y(),"Length")
// << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().z(),"Length");
G4cout << G4endl;
if ( verboseLevel == 2 ) {
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
fN2ndariesAlongStepDoIt +
fN2ndariesPostStepDoIt;
if ( tN2ndariesTot>0 ) {
G4cout << " :----- List of 2ndaries - "
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
<< std::setw(10)
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
G4cout << G4endl;
}
G4cout << " :-----------------------------"
<< "----------------------------------"
<< "-- EndOf2ndaries Info ---------------"
<< G4endl;
}
}
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSSteppingVerbose::TrackingStarted()
{
CopyState();
G4int prec = G4cout.precision(3);
// if (fTrack->GetDefinition()->GetParticleName() != "opticalphoton") return;
if ( verboseLevel > 0 ) {
G4cout << G4endl;
G4cout << "*******************************************************"
<< "**************************************************"
<< G4endl;
G4cout << "* G4Track Information: "
<< " Particle = " << fTrack->GetDefinition()->GetParticleName()
<< ","
<< " Track ID = " << fTrack->GetTrackID()
<< ","
<< " Parent ID = " << fTrack->GetParentID()
<< G4endl;
G4cout << "*******************************************************"
<< "**************************************************"
<< G4endl;
G4cout << G4endl;
G4cout << std::setw( 5) << "Step#" << " "
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng" << " "
<< std::setw(10) << "TrakLeng" << " "
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->
GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if ( fTrack->GetNextVolume() ) {
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << std::setw(10) << "OutOfWorld";
}
G4cout << " initStep" << G4endl;
}
G4cout.precision(prec);
}
+10 -29
View File
@@ -43,9 +43,10 @@
#include "G4UImanager.hh"
#include "Randomize.hh"
#include "FTFP_BERT.hh"
#include "G4OpticalPhysics.hh"
#include "G4EmStandardPhysics_option4.hh"
#include "WLSPhysicsList.hh"
#include "WLSDetectorConstruction.hh"
#include "WLSActionInitialization.hh"
@@ -82,44 +83,24 @@ int main(int argc,char** argv)
G4RunManager * runManager = new G4RunManager;
#endif
G4String physName = "QGSP_BERT_HP";
#ifndef WIN32
G4int c = 0;
while ((c=getopt(argc,argv,"p")) != -1)
{
switch (c)
{
case 'p':
physName = optarg;
G4cout << "Physics List used is " << physName << G4endl;
break;
case ':': /* -p without operand */
fprintf(stderr,
"Option -%c requires an operand\n", optopt);
break;
case '?':
fprintf(stderr,
"Unrecognised option: -%c\n", optopt);
}
}
#endif
// Set mandatory initialization classes
//
// Detector construction
WLSDetectorConstruction* detector = new WLSDetectorConstruction();
runManager->SetUserInitialization(detector);
// Physics list
runManager->SetUserInitialization(new WLSPhysicsList(physName));
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
physicsList->RegisterPhysics(opticalPhysics);
runManager->SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new WLSActionInitialization(detector));
// 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
+5 -9
View File
@@ -1,15 +1,13 @@
#
# Macro file for the initialization phase of wls
# Macro file for wls example
#
#/run/verbose 1
#/control/verbose 1
#/event/verbose 1
#/tracking/verbose 1
/run/verbose 1
/control/verbose 1
/event/verbose 0
/tracking/verbose 0
#
/run/initialize
#
#/WLS/phys/verbose 1
#
/gps/particle opticalphoton
/gps/ene/type Mono
/gps/ene/mono 2.10 eV
@@ -22,7 +20,5 @@
/gps/ang/maxtheta 90.0 deg
/gps/pos/centre 0.0 0.0 0.0 cm
#
#/control/execute vis.mac
#
/run/beamOn 200
#
+299 -270
View File
@@ -1,6 +1,10 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
**************************************************************
Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
Geant4 version Name: geant4-10-06-ref-00 (6-December-2019)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,16 +12,9 @@
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: QGSP_BERT_HP
<<< Geant4 Physics List simulation engine: FTFP_BERT
RegisterPhysics: G4EmStandard
RegisterPhysics: G4GammaLeptoNuclearPhys
RegisterPhysics: Decay
RegisterPhysics: hElasticWEL_CHIPS_HP
RegisterPhysics: hInelastic QGSP_BERT_HP
RegisterPhysics: stopping
RegisterPhysics: ionInelasticFTFP_BIC
G4VModularPhysicsList::ReplacePhysics: G4EmStandardwith type : 2 is replaces with G4EmStandard_opt4
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
@@ -63,6 +60,9 @@ End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
/event/verbose 0
/tracking/verbose 0
/run/initialize
G4NistMaterialBuilder::FindOrBuildMaterial G4_Galactic
G4NistMaterialBuilder: BuildMaterial #286
New material nComponents= 1
@@ -110,137 +110,157 @@ New material TiO2 is prepeared nMaterials= 314 nComponents= 788 nCurrent= 2
G4NistMaterialBuilder: BuildMaterial #313
New material nComponents= 2
G4NistElementBuilder: Build Element <Ti> Z= 22 Aeff= 47.8667 with natural isotope composition
/cvmfs/geant4.cern.ch/share/data/G4NDL4.5
@@@ G4ParticleHPInelastic instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic
@@@ G4ParticleHPInelasticData instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
NeutronHP: /Inelastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/8_17_Oxygen
WLSExtraPhysics:: Add Extra Physics Processes
WLSOpticalPhysics:: Add Optical Physics Processes
FTFP_BERT : new 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
### Birks coefficients used in run time
Polystyrene 0.126 mm/MeV 0.01323 g/cm^2/MeV massFactor= 101.167 effCharge= 0.027027
/gps/particle opticalphoton
/gps/ene/type Mono
/gps/ene/mono 2.10 eV
/gps/pos/type Plane
/gps/pos/shape Circle
/gps/pos/radius 0.5 mm
/gps/ang/type iso
/gps/ang/mintheta 180.0 deg
/gps/ang/maxtheta 90.0 deg
/gps/pos/centre 0.0 0.0 0.0 cm
/run/beamOn 200
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 1 0
### === Auger cascade flag: 1
### === Ignore cuts flag: 1
DefaultRegionForTheWorld 1 0 0
### === Ignore cuts flag: 0
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
LambdaPrime table from 200 keV to 100 TeV in 174 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
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 ======
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
LowEPComptonModel : Emin= 0 eV 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, 18 bins/decade, spline: 1
Lambda table from 1.022 MeV to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler : Emin= 0 eV Emax= 80 GeV ModifiedTsai
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 7 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 63 bins
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 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- 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
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
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
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- 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 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 1
Lambda table from 100 MeV 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= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
PenIoni : Emin= 0 eV Emax= 100 keV
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e+ 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
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
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
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ 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 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
annihil: for e+, integral:1 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 1
Lambda table from 100 MeV 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= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for proton 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton 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
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 eV Emax= 100 TeV
hPairProd: for proton 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
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 eV Emax= 100 TeV
CoulombScat: for proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 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 eV Emax= 100 TeV
@@ -251,127 +271,119 @@ msc: for GenericIon SubType= 10
UrbanMsc : Emin= 0 eV Emax= 100 TeV
ionIoni: for GenericIon 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: 1, fluct: 1, linLossLim= 0.02
Stopping Power data for 17 ion/material pairs
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
StepFunction=(0.1, 0.001 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
=======================================================================
====== Radioactive Decay Physics Parameters ========
=======================================================================
Max life time 1.4427e+06 ps
Internal e- conversion flag 1
Stored internal conversion coefficients 1
Enable correlated gamma emission 0
Max 2J for sampling of angular correlations 10
Atomic de-excitation enabled 1
Auger electron emission enabled 1
Auger cascade enabled 1
Check EM cuts disabled for atomic de-excitation 1
Use Bearden atomic level energies 0
=======================================================================
ParamICRU73 : Emin= 0 eV Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
ionIoni: for alpha 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: 1, fluct: 1, linLossLim= 0.02
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
BraggIon : Emin= 0 eV 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 eV Emax= 1 MeV
msc: for anti_proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for anti_proton 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton 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
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 eV Emax= 100 TeV
hPairProd: for anti_proton 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
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 eV Emax= 100 TeV
CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 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 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ 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
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 eV Emax= 100 TeV
hPairProd: for kaon+ 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
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 eV Emax= 100 TeV
CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 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 eV Emax= 100 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- 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
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 eV Emax= 100 TeV
hPairProd: for kaon- 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
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 eV Emax= 100 TeV
@@ -383,61 +395,61 @@ CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ 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
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 eV Emax= 100 TeV
muPairProd: for mu+ 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
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 eV Emax= 100 TeV
CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 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 eV Emax= 100 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- 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
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 eV Emax= 100 TeV
muPairProd: for mu- 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
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 eV Emax= 100 TeV
@@ -447,77 +459,61 @@ CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
NeutronHP: /Inelastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
@@@ G4ParticleHPInelastic instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi+ 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
Bragg : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ 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
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 eV Emax= 100 TeV
hPairProd: for pi+ 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
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 eV Emax= 100 TeV
CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 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 eV Emax= 100 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi- 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: 1, fluct: 1, linLossLim= 0.01
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
StepFunction=(0.1, 0.02 mm), integ: 1, 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
ICRU73QO : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi- 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
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 eV Emax= 100 TeV
hPairProd: for pi- 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
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 eV Emax= 100 TeV
@@ -531,16 +527,32 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
====================================================================
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 GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: RadioactiveDecay
---------------------------------------------------
Hadronic Processes for He3
@@ -549,8 +561,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -561,8 +573,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -611,8 +623,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
@@ -656,14 +669,14 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
@@ -678,7 +691,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for gamma
Process: photonNuclear
Model: BertiniCascade: 0 eV ---> 3.5 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
@@ -690,11 +703,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
@@ -704,11 +715,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -721,8 +730,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
@@ -740,61 +749,28 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: muMinusCaptureAtRest
---------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 19.5 MeV ---> 100 TeV
Model: NeutronHPElastic: 0 eV ---> 20 MeV
Cr_sctns: NeutronHPElasticXS: 0 eV ---> 20 MeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 19.9 MeV ---> 9.9 GeV
Model: NeutronHPInelastic: 0 eV ---> 20 MeV
Cr_sctns: NeutronHPInelasticXS: 0 eV ---> 20 MeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: nCapture
Model: NeutronHPCapture: 0 eV ---> 20 MeV
Model: nRadCapture: 19.9 MeV ---> 100 TeV
Cr_sctns: NeutronHPCaptureXS: 0 eV ---> 20 MeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nFission
Model: NeutronHPFission: 0 eV ---> 20 MeV
Model: G4LFission: 19.9 MeV ---> 100 TeV
Cr_sctns: NeutronHPFissionXS: 0 eV ---> 20 MeV
Cr_sctns: GheishaFissionXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
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: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -807,9 +783,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: protonInelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -820,8 +795,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
================================================================
@@ -830,29 +805,83 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
Pre-compound low energy (MeV) 0.1
Pre-compound excitation low energy (MeV) 0.1
Pre-compound excitation high energy (MeV) 30
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
Min energy per nucleon for multifragmentation (MeV) 1e+05
Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
Level density (1/MeV) 0.075
Model of level density flag 1
Time limit for long lived isomeres (ns) 1442.7
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 1
Electron internal conversion ID 0
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes
Material : G4_AIR
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : Yes
Material : Coating
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.94056 keV e- 351.877 keV e+ 342.545 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 2 used in the geometry : Yes
Material : Polystyrene
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.11555 keV e- 283.792 keV e+ 276.265 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 3 used in the geometry : Yes
Material : PMMA
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.40367 keV e- 307.625 keV e+ 299.466 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 4 used in the geometry : Yes
Material : G4_Al
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 5.85564 keV e- 460.395 keV e+ 442.201 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
====================================================================
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 starts.
### Run 0 start.
--------- Ranecu engine status ---------
Initial seed (index) = 123
Current couple of seeds = 960416485, 2004255415
----------------------------------------
Run terminated.
Run Summary
Number of events processed : 200
User=0.580000s Real=0.578111s Sys=0.000000s
Graphics systems deleted.
Visualization Manager deleting...
G4 kernel has come to Quit state.
================== Deleting memory pools ===================
Number of memory pools allocated: 13 of which, static: 0
Dynamic pools deleted: 13 / Total memory freed: 0.019 MB
============================================================
RunManagerKernel is deleted. Good bye :)