Import Geant4 11.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2021-12-10 14:46:44 +01:00
committed by Ben Morgan
parent 6399a014b6
commit 80e2389dd8
3932 changed files with 202519 additions and 246221 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
#----------------------------------------------------------------------------
# Setup the project
#
cmake_minimum_required(VERSION 3.12...3.20)
cmake_minimum_required(VERSION 3.16...3.21)
project(B3a)
#----------------------------------------------------------------------------
+7 -7
View File
@@ -34,14 +34,14 @@
#include "G4UImanager.hh"
#include "G4VisExecutive.hh"
#include "G4UIExecutive.hh"
#include "G4AnalysisManager.hh"
#include "G4TScoreNtupleWriter.hh"
#include "Randomize.hh"
#include "B3DetectorConstruction.hh"
#include "B3PhysicsList.hh"
#include "B3aActionInitialization.hh"
#include "B3Analysis.hh"
#include "DetectorConstruction.hh"
#include "PhysicsList.hh"
#include "ActionInitialization.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -66,13 +66,13 @@ int main(int argc,char** argv)
// Set mandatory initialization classes
//
runManager->SetUserInitialization(new B3DetectorConstruction);
runManager->SetUserInitialization(new B3::DetectorConstruction);
//
runManager->SetUserInitialization(new B3PhysicsList);
runManager->SetUserInitialization(new B3::PhysicsList);
// Set user action initialization
//
runManager->SetUserInitialization(new B3aActionInitialization());
runManager->SetUserInitialization(new B3a::ActionInitialization());
// Initialize visualization
//
+205 -127
View File
@@ -11,7 +11,7 @@ Environment variable "G4FORCE_RUN_MANAGER_TYPE" enabled with value == Serial. Fo
**************************************************************
Geant4 version Name: geant4-10-07-ref-06 (25-June-2021)
Geant4 version Name: geant4-11-00-ref-00 (10-December-2021)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -27,10 +27,8 @@ You have successfully registered the following graphics systems.
Registered graphics systems are:
ASCIITree (ATree)
DAWNFILE (DAWNFILE)
G4HepRep (HepRepXML)
G4HepRepFile (HepRepFile)
RayTracer (RayTracer)
VRML1FILE (VRML1FILE)
VRML2FILE (VRML2FILE)
gMocrenFile (gMocrenFile)
OpenGLImmediateQt (OGLIQt, OGLI)
@@ -72,49 +70,49 @@ End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume crystal (G4Box) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume ring (G4Tubs) ... OK!
Checking overlaps for volume Detector (G4Tubs) ... OK!
Checking overlaps for volume Patient (G4Tubs) ... OK!
Checking overlaps for volume crystal:0 (G4Box) ... OK!
Checking overlaps for volume crystal:1 (G4Box) ... OK!
Checking overlaps for volume crystal:2 (G4Box) ... OK!
Checking overlaps for volume crystal:3 (G4Box) ... OK!
Checking overlaps for volume crystal:4 (G4Box) ... OK!
Checking overlaps for volume crystal:5 (G4Box) ... OK!
Checking overlaps for volume crystal:6 (G4Box) ... OK!
Checking overlaps for volume crystal:7 (G4Box) ... OK!
Checking overlaps for volume crystal:8 (G4Box) ... OK!
Checking overlaps for volume crystal:9 (G4Box) ... OK!
Checking overlaps for volume crystal:10 (G4Box) ... OK!
Checking overlaps for volume crystal:11 (G4Box) ... OK!
Checking overlaps for volume crystal:12 (G4Box) ... OK!
Checking overlaps for volume crystal:13 (G4Box) ... OK!
Checking overlaps for volume crystal:14 (G4Box) ... OK!
Checking overlaps for volume crystal:15 (G4Box) ... OK!
Checking overlaps for volume crystal:16 (G4Box) ... OK!
Checking overlaps for volume crystal:17 (G4Box) ... OK!
Checking overlaps for volume crystal:18 (G4Box) ... OK!
Checking overlaps for volume crystal:19 (G4Box) ... OK!
Checking overlaps for volume crystal:20 (G4Box) ... OK!
Checking overlaps for volume crystal:21 (G4Box) ... OK!
Checking overlaps for volume crystal:22 (G4Box) ... OK!
Checking overlaps for volume crystal:23 (G4Box) ... OK!
Checking overlaps for volume crystal:24 (G4Box) ... OK!
Checking overlaps for volume crystal:25 (G4Box) ... OK!
Checking overlaps for volume crystal:26 (G4Box) ... OK!
Checking overlaps for volume crystal:27 (G4Box) ... OK!
Checking overlaps for volume crystal:28 (G4Box) ... OK!
Checking overlaps for volume crystal:29 (G4Box) ... OK!
Checking overlaps for volume crystal:30 (G4Box) ... OK!
Checking overlaps for volume crystal:31 (G4Box) ... OK!
Checking overlaps for volume ring:0 (G4Tubs) ... OK!
Checking overlaps for volume ring:1 (G4Tubs) ... OK!
Checking overlaps for volume ring:2 (G4Tubs) ... OK!
Checking overlaps for volume ring:3 (G4Tubs) ... OK!
Checking overlaps for volume ring:4 (G4Tubs) ... OK!
Checking overlaps for volume ring:5 (G4Tubs) ... OK!
Checking overlaps for volume ring:6 (G4Tubs) ... OK!
Checking overlaps for volume ring:7 (G4Tubs) ... OK!
Checking overlaps for volume ring:8 (G4Tubs) ... OK!
Checking overlaps for volume Detector:0 (G4Tubs) ... OK!
Checking overlaps for volume Patient:0 (G4Tubs) ... OK!
***** Table : Nb of materials = 3 *****
@@ -222,6 +220,84 @@ G4SDManager::AddNewCollection : the collection <patient/dose> is registered at 2
#
/run/printProgress 1000
/run/beamOn 10000
=======================================================================
====== Electromagnetic Physics Parameters ========
=======================================================================
LPM effect enabled 1
Enable creation and use of sampling tables 0
Apply cuts on all EM processes 0
Use general process 0
Enable linear polarisation for gamma 0
Enable sampling of quantum entanglement 0
X-section factor for integral approach 0.8
Min kinetic energy for tables 100 eV
Max kinetic energy for tables 100 TeV
Number of bins per decade of a table 7
Verbose level 1
Verbose level for worker thread 0
Bremsstrahlung energy threshold above which
primary e+- is added to the list of secondary 100 TeV
Bremsstrahlung energy threshold above which primary
muon/hadron is added to the list of secondary 100 TeV
Lowest triplet kinetic energy 1 MeV
Enable sampling of gamma linear polarisation 0
5D gamma conversion model type 0
5D gamma conversion model on isolated ion 0
Livermore data directory livermore
=======================================================================
====== Ionisation Parameters ========
=======================================================================
Step function for e+- (0.2, 1 mm)
Step function for muons/hadrons (0.2, 0.1 mm)
Step function for light ions (0.2, 0.1 mm)
Step function for general ions (0.2, 0.1 mm)
Lowest e+e- kinetic energy 1 keV
Lowest muon/hadron kinetic energy 1 keV
Fluctuations of dE/dx are enabled 1
Use ICRU90 data 0
Use built-in Birks satuaration 0
Build CSDA range enabled 0
Use cut as a final range enabled 0
Enable angular generator interface 0
Max kinetic energy for CSDA tables 1 GeV
Max kinetic energy for NIEL computation 0 eV
Linear loss limit 0.01
Read data from file for e+e- pair production by mu 0
=======================================================================
====== Multiple Scattering Parameters ========
=======================================================================
Type of msc step limit algorithm for e+- 1
Type of msc step limit algorithm for muons/hadrons 0
Msc lateral displacement for e+- enabled 1
Msc lateral displacement for muons and hadrons 0
Urban msc model lateral displacement alg96 1
Range factor for msc step limit for e+- 0.04
Range factor for msc step limit for muons/hadrons 0.2
Geometry factor for msc step limitation of e+- 2.5
Safety factor for msc step limit for e+- 0.6
Skin parameter for msc step limitation of e+- 1
Lambda limit for msc step limit for e+- 1 mm
Use Mott correction for e- scattering 0
Factor used for dynamic computation of angular
limit between single and multiple scattering 1
Fixed angular limit between single
and multiple scattering 3.1416 rad
Upper energy limit for e+- multiple scattering 100 MeV
Type of electron single scattering model 0
Type of nuclear form-factor 1
Screening factor 1
=======================================================================
====== Atomic Deexcitation Parameters ========
=======================================================================
Fluorescence enabled 1
Fluorescence Bearden data files enabled 0
Fluorescence ANSTO data files enabled 0
Auger electron cascade enabled 1
PIXE atomic de-excitation enabled 0
De-excitation module ignores cuts 1
Type of PIXE cross section for hadrons Empirical
Type of PIXE cross section for e+- Livermore
=======================================================================
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 1 0
@@ -231,28 +307,28 @@ G4SDManager::AddNewCollection : the collection <patient/dose> is registered at 2
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 meV Emax= 100 TeV SauterGavrila Fluo
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 meV Emax= 100 TeV
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitlerLPM : Emin= 0 meV Emax= 100 TeV ModifiedTsai
BetheHeitlerLPM : 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
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 meV Emax= 100 TeV CullenGenerator
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
@@ -262,25 +338,25 @@ eIoni: for e- XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 meV Emax= 100 TeV
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e- XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 meV Emax= 1 GeV ModifiedTsai
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
CoulombScat: for e- XStype:3 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, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
StepLim=UseSafety Rfact=0.04 Gfact=2.5 Sfact=0.6 DispFlag:1 Skin=1 Llim=1 mm
@@ -290,29 +366,29 @@ eIoni: for e+ XStype:1 SubType=2
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 meV Emax= 100 TeV
MollerBhabha : Emin= 0 eV Emax= 100 TeV
eBrem: for e+ XStype:4 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 meV Emax= 1 GeV ModifiedTsai
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
annihil: for e+ XStype:2 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 meV Emax= 100 TeV
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+ XStype:3 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, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for proton XStype:1 SubType=2
@@ -320,31 +396,31 @@ hIoni: for proton XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax= 2 MeV
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for GenericIon SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 TeV
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for GenericIon XStype:1 SubType=2
@@ -353,7 +429,7 @@ ionIoni: for GenericIon XStype:1 SubType=2
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.02
Stopping Power data for 17 ion/material pairs
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 meV Emax= 2 MeV
BraggIon : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
======================================================================
====== Radioactive Decay Physics Parameters =======
@@ -365,15 +441,15 @@ 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
Use ANSTO fluorescence model 0
Threshold for very long decay time at rest 1e+27 ns
======================================================================
msc: for alpha SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 meV Emax= 100 TeV
UrbanMsc : Emin= 0 eV Emax= 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
ionIoni: for alpha XStype:1 SubType=2
@@ -381,12 +457,12 @@ ionIoni: for alpha XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 meV Emax=7.9452 MeV
BraggIon : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
msc: for anti_proton SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for anti_proton XStype:1 SubType=2
@@ -394,31 +470,31 @@ hIoni: for anti_proton XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax= 2 MeV
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
hBrems: for anti_proton XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for anti_proton XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for anti_proton XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon+ XStype:1 SubType=2
@@ -426,31 +502,31 @@ hIoni: for kaon+ XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax=1.05231 MeV
Bragg : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for kaon- XStype:1 SubType=2
@@ -458,31 +534,31 @@ hIoni: for kaon- XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax=1.05231 MeV
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
hBrems: for kaon- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for kaon- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for kaon- XStype:3 SubType=1 BuildTable=1
Used Lambda table of kaon+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu+ XStype:1 SubType=2
@@ -490,32 +566,32 @@ muIoni: for mu+ XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax= 200 keV
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
muIoni: for mu- XStype:1 SubType=2
@@ -523,32 +599,32 @@ muIoni: for mu- XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax= 200 keV
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
MuBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
muPairProd: for mu- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
muPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for mu- XStype:3 SubType=1 BuildTable=1
Used Lambda table of mu+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi+ SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi+ XStype:1 SubType=2
@@ -556,31 +632,31 @@ hIoni: for pi+ XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 meV Emax=297.505 keV
Bragg : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi+ XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi+ XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi+ XStype:3 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 0
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 meV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
StepLim=Minimal Rfact=0.2 Gfact=2.5 Sfact=0.6 DispFlag:0 Skin=1 Llim=1 mm
hIoni: for pi- XStype:1 SubType=2
@@ -588,33 +664,35 @@ hIoni: for pi- XStype:1 SubType=2
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
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 meV Emax=297.505 keV
ICRU73QO : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
hBrems: for pi- XStype:1 SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hBrem : Emin= 0 eV Emax= 100 TeV ModifiedMephi
hPairProd: for pi- XStype:1 SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 0
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 meV Emax= 100 TeV ModifiedMephi
hPairProd : Emin= 0 eV Emax= 100 TeV ModifiedMephi
CoulombScat: for pi- XStype:3 SubType=1 BuildTable=1
Used Lambda table of pi+
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 meV Emax= 100 TeV
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 starts.
### Run 0 start.
... set ntuple merging row mode : row-wise - done
... create file : scoring.root - done
... open analysis file : scoring.root - done
... open analysis file : scoring.root - done
--> Event 0 starts.
--> Event 1000 starts.
--> Event 2000 starts.
@@ -627,8 +705,8 @@ See commands in /vis/modeling/trajectories/ for other options.
--> Event 9000 starts.
--------------------End of Global Run-----------------------
The run was 10000 events Nb of 'good' e+ annihilations: 1317
Total dose in patient : 308.988 picoGy
The run was 10000 events Nb of 'good' e+ annihilations: 1264
Total dose in patient : 307.747 picoGy
------------------------------------------------------------
... write file : scoring.root - done
@@ -24,32 +24,34 @@
// ********************************************************************
//
//
/// \file B3aActionInitialization.hh
/// \brief Definition of the B3aActionInitialization class
/// \file ActionInitialization.hh
/// \brief Definition of the B3a::ActionInitialization class
#ifndef B3aActionInitialization_h
#define B3aActionInitialization_h 1
#include "G4VUserActionInitialization.hh"
/// Action initialization class.
///
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class B3aActionInitialization : public G4VUserActionInitialization
namespace B3a
{
/// Action initialization class.
class ActionInitialization : public G4VUserActionInitialization
{
public:
B3aActionInitialization();
virtual ~B3aActionInitialization();
ActionInitialization();
~ActionInitialization() override;
virtual void BuildForMaster() const;
virtual void Build() const;
void BuildForMaster() const override;
void Build() const override;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -1,37 +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 B3Analysis.hh
/// \brief Selection of the analysis technology
#ifndef B3Analysis_h
#define B3Analysis_h 1
#include "g4root.hh"
//#include "g4csv.hh"
//#include "g4xml.hh"
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
/// \file B3DetectorConstruction.hh
/// \brief Definition of the B3DetectorConstruction class
/// \file DetectorConstruction.hh
/// \brief Definition of the B3::DetectorConstruction class
#ifndef B3DetectorConstruction_h
#define B3DetectorConstruction_h 1
@@ -36,27 +36,32 @@
class G4VPhysicalVolume;
class G4LogicalVolume;
namespace B3
{
/// Detector construction class to define materials and geometry.
///
/// Crystals are positioned in Ring, with an appropriate rotation matrix.
/// Several copies of Ring are placed in the full detector.
class B3DetectorConstruction : public G4VUserDetectorConstruction
class DetectorConstruction : public G4VUserDetectorConstruction
{
public:
B3DetectorConstruction();
virtual ~B3DetectorConstruction();
DetectorConstruction();
~DetectorConstruction() override;
public:
virtual G4VPhysicalVolume* Construct();
virtual void ConstructSDandField();
G4VPhysicalVolume* Construct() override;
void ConstructSDandField() override;
private:
void DefineMaterials();
G4bool fCheckOverlaps;
G4bool fCheckOverlaps = true;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
/// \file B3aEventAction.hh
/// \brief Definition of the B3aEventAction class
/// \file EventAction.hh
/// \brief Definition of the B3a::EventAction class
#ifndef B3aEventAction_h
#define B3aEventAction_h 1
@@ -33,29 +33,34 @@
#include "G4UserEventAction.hh"
#include "globals.hh"
class B3aRunAction;
namespace B3a
{
class RunAction;
/// Event action class
///
/// In EndOfEventAction() there is collected information event per event
/// from Hits Collections, and accumulated statistic for
/// B3RunAction::EndOfRunAction().
/// RunAction::EndOfRunAction().
class B3aEventAction : public G4UserEventAction
class EventAction : public G4UserEventAction
{
public:
B3aEventAction(B3aRunAction* runAction);
virtual ~B3aEventAction();
EventAction(RunAction* runAction);
~EventAction() override;
virtual void BeginOfEventAction(const G4Event*);
virtual void EndOfEventAction(const G4Event*);
void BeginOfEventAction(const G4Event*) override;
void EndOfEventAction(const G4Event*) override;
private:
B3aRunAction* fRunAction;
G4int fCollID_cryst;
G4int fCollID_patient;
RunAction* fRunAction = nullptr;
G4int fCollID_cryst = -1;
G4int fCollID_patient = -1;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,14 +24,17 @@
// ********************************************************************
//
//
/// \file B3PhysicsList.hh
/// \brief Definition of the B3PhysicsList class
/// \file PhysicsList.hh
/// \brief Definition of the B3::PhysicsList class
#ifndef B3PhysicsList_h
#define B3PhysicsList_h 1
#include "G4VModularPhysicsList.hh"
namespace B3
{
/// Modular physics list
///
/// It includes the folowing physics builders
@@ -39,15 +42,17 @@
/// - G4RadioactiveDecayPhysics
/// - G4EmStandardPhysics
class B3PhysicsList: public G4VModularPhysicsList
class PhysicsList: public G4VModularPhysicsList
{
public:
B3PhysicsList();
virtual ~B3PhysicsList();
PhysicsList();
~PhysicsList() override;
virtual void SetCuts();
void SetCuts() override;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
/// \file B3PrimaryGeneratorAction.hh
/// \brief Definition of the B3PrimaryGeneratorAction class
/// \file PrimaryGeneratorAction.hh
/// \brief Definition of the B3::PrimaryGeneratorAction class
#ifndef B3PrimaryGeneratorAction_h
#define B3PrimaryGeneratorAction_h 1
@@ -37,26 +37,31 @@
class G4ParticleGun;
class G4Event;
namespace B3
{
/// The primary generator action class with particle gum.
///
/// It defines an ion (F18), at rest, randomly distribued within a zone
/// in a patient defined in GeneratePrimaries(). Ion F18 can be changed
/// with the G4ParticleGun commands (see run2.mac).
class B3PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
{
public:
B3PrimaryGeneratorAction();
virtual ~B3PrimaryGeneratorAction();
PrimaryGeneratorAction();
~PrimaryGeneratorAction() override;
virtual void GeneratePrimaries(G4Event*);
void GeneratePrimaries(G4Event*) override;
const G4ParticleGun* GetParticleGun() const { return fParticleGun; }
private:
G4ParticleGun* fParticleGun;
G4ParticleGun* fParticleGun = nullptr;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
/// \file B3aRunAction.hh
/// \brief Definition of the B3aRunAction class
/// \file RunAction.hh
/// \brief Definition of the B3a::RunAction class
#ifndef B3aRunAction_h
#define B3aRunAction_h 1
@@ -34,25 +34,30 @@
#include "G4Accumulable.hh"
#include "globals.hh"
namespace B3a
{
/// Run action class
class B3aRunAction : public G4UserRunAction
class RunAction : public G4UserRunAction
{
public:
B3aRunAction();
virtual ~B3aRunAction();
RunAction();
~RunAction() override;
virtual void BeginOfRunAction(const G4Run*);
virtual void EndOfRunAction(const G4Run*);
void BeginOfRunAction(const G4Run*) override;
void EndOfRunAction(const G4Run*) override;
void CountEvent() { fGoodEvents += 1; };
void SumDose(G4double dose) { fSumDose += dose; };
private:
G4Accumulable<G4int> fGoodEvents;
G4Accumulable<G4double> fSumDose;
G4Accumulable<G4int> fGoodEvents = 0;
G4Accumulable<G4double> fSumDose = 0.;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,8 +24,8 @@
// ********************************************************************
//
//
/// \file B3StackingAction.hh
/// \brief Definition of the B3StackingAction class
/// \file StackingAction.hh
/// \brief Definition of the B3::StackingAction class
#ifndef B3StackingAction_h
#define B3StackingAction_h 1
@@ -33,20 +33,25 @@
#include "G4UserStackingAction.hh"
#include "globals.hh"
namespace B3
{
/// Stacking action class : manage the newly generated particles
///
/// One wishes do not track secondary neutrino.Therefore one kills it
/// immediately, before created particles will put in a stack.
class B3StackingAction : public G4UserStackingAction
class StackingAction : public G4UserStackingAction
{
public:
B3StackingAction();
virtual ~B3StackingAction();
StackingAction();
~StackingAction() override;
virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*);
G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*) override;
};
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -24,43 +24,50 @@
// ********************************************************************
//
//
/// \file B3aActionInitialization.cc
/// \brief Implementation of the B3aActionInitialization class
/// \file ActionInitialization.cc
/// \brief Implementation of the B3a::ActionInitialization class
#include "B3aActionInitialization.hh"
#include "B3aRunAction.hh"
#include "B3aEventAction.hh"
#include "B3PrimaryGeneratorAction.hh"
#include "B3StackingAction.hh"
#include "ActionInitialization.hh"
#include "RunAction.hh"
#include "EventAction.hh"
#include "PrimaryGeneratorAction.hh"
#include "StackingAction.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
using namespace B3;
B3aActionInitialization::B3aActionInitialization()
: G4VUserActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3aActionInitialization::~B3aActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aActionInitialization::BuildForMaster() const
namespace B3a
{
SetUserAction(new B3aRunAction);
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::ActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
ActionInitialization::~ActionInitialization()
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void ActionInitialization::BuildForMaster() const
{
SetUserAction(new RunAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aActionInitialization::Build() const
void ActionInitialization::Build() const
{
B3aRunAction* runAction = new B3aRunAction();
RunAction* runAction = new RunAction();
SetUserAction(runAction);
SetUserAction(new B3aEventAction(runAction));
SetUserAction(new B3PrimaryGeneratorAction);
SetUserAction(new B3StackingAction);
SetUserAction(new EventAction(runAction));
SetUserAction(new PrimaryGeneratorAction);
SetUserAction(new StackingAction);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,10 +24,10 @@
// ********************************************************************
//
//
/// \file B3DetectorConstruction.cc
/// \brief Implementation of the B3DetectorConstruction class
/// \file DetectorConstruction.cc
/// \brief Implementation of the B3::DetectorConstruction class
#include "B3DetectorConstruction.hh"
#include "DetectorConstruction.hh"
#include "G4NistManager.hh"
#include "G4Box.hh"
@@ -45,23 +45,24 @@
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
namespace B3
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3DetectorConstruction::B3DetectorConstruction()
: G4VUserDetectorConstruction(),
fCheckOverlaps(true)
DetectorConstruction::DetectorConstruction()
{
DefineMaterials();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3DetectorConstruction::~B3DetectorConstruction()
DetectorConstruction::~DetectorConstruction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3DetectorConstruction::DefineMaterials()
void DetectorConstruction::DefineMaterials()
{
G4NistManager* man = G4NistManager::Instance();
@@ -79,7 +80,7 @@ void B3DetectorConstruction::DefineMaterials()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VPhysicalVolume* B3DetectorConstruction::Construct()
G4VPhysicalVolume* DetectorConstruction::Construct()
{
// Gamma detector Parameters
//
@@ -249,7 +250,7 @@ G4VPhysicalVolume* B3DetectorConstruction::Construct()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3DetectorConstruction::ConstructSDandField()
void DetectorConstruction::ConstructSDandField()
{
G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
@@ -271,3 +272,6 @@ void B3DetectorConstruction::ConstructSDandField()
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,11 +24,11 @@
// ********************************************************************
//
//
/// \file B3aEventAction.cc
/// \brief Implementation of the B3aEventAction class
/// \file EventAction.cc
/// \brief Implementation of the B3a::EventAction class
#include "B3aEventAction.hh"
#include "B3aRunAction.hh"
#include "EventAction.hh"
#include "RunAction.hh"
#include "G4RunManager.hh"
#include "G4Event.hh"
@@ -39,28 +39,28 @@
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
namespace B3a
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3aEventAction::B3aEventAction(B3aRunAction* runAction)
: G4UserEventAction(),
fRunAction(runAction),
fCollID_cryst(-1),
fCollID_patient(-1)
EventAction::EventAction(RunAction* runAction)
: fRunAction(runAction)
{}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3aEventAction::~B3aEventAction()
EventAction::~EventAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aEventAction::BeginOfEventAction(const G4Event* /*evt*/)
void EventAction::BeginOfEventAction(const G4Event* /*evt*/)
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aEventAction::EndOfEventAction(const G4Event* evt )
void EventAction::EndOfEventAction(const G4Event* evt )
{
//Hits collections
//
@@ -105,3 +105,6 @@ void B3aEventAction::EndOfEventAction(const G4Event* evt )
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,19 +24,22 @@
// ********************************************************************
//
//
/// \file B3PhysicsList.cc
/// \brief Implementation of the B3PhysicsList class
/// \file PhysicsList.cc
/// \brief Implementation of the B3::PhysicsList class
#include "B3PhysicsList.hh"
#include "PhysicsList.hh"
#include "G4DecayPhysics.hh"
#include "G4EmStandardPhysics.hh"
#include "G4RadioactiveDecayPhysics.hh"
namespace B3
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3PhysicsList::B3PhysicsList()
: G4VModularPhysicsList(){
PhysicsList::PhysicsList()
{
SetVerboseLevel(1);
// Default physics
@@ -51,13 +54,17 @@ B3PhysicsList::B3PhysicsList()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3PhysicsList::~B3PhysicsList()
PhysicsList::~PhysicsList()
{
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3PhysicsList::SetCuts()
void PhysicsList::SetCuts()
{
G4VUserPhysicsList::SetCuts();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,10 +24,10 @@
// ********************************************************************
//
//
/// \file B3PrimaryGeneratorAction.cc
/// \brief Implementation of the B3PrimaryGeneratorAction class
/// \file PrimaryGeneratorAction.cc
/// \brief Implementation of the B3::PrimaryGeneratorAction class
#include "B3PrimaryGeneratorAction.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4RunManager.hh"
#include "G4Event.hh"
@@ -39,11 +39,12 @@
#include "G4SystemOfUnits.hh"
#include "Randomize.hh"
namespace B3
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3PrimaryGeneratorAction::B3PrimaryGeneratorAction()
: G4VUserPrimaryGeneratorAction(),
fParticleGun(nullptr)
PrimaryGeneratorAction::PrimaryGeneratorAction()
{
G4int n_particle = 1;
fParticleGun = new G4ParticleGun(n_particle);
@@ -61,14 +62,14 @@ B3PrimaryGeneratorAction::B3PrimaryGeneratorAction()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3PrimaryGeneratorAction::~B3PrimaryGeneratorAction()
PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fParticleGun;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
{
G4ParticleDefinition* particle = fParticleGun->GetParticleDefinition();
if (particle == G4ChargedGeantino::ChargedGeantino()) {
@@ -101,3 +102,6 @@ void B3PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,11 +24,11 @@
// ********************************************************************
//
//
/// \file B3aRunAction.cc
/// \brief Implementation of the B3aRunAction class
/// \file RunAction.cc
/// \brief Implementation of the B3a::RunAction class
#include "B3aRunAction.hh"
#include "B3PrimaryGeneratorAction.hh"
#include "RunAction.hh"
#include "PrimaryGeneratorAction.hh"
#include "G4RunManager.hh"
#include "G4Run.hh"
@@ -36,12 +36,14 @@
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
using namespace B3;
namespace B3a
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3aRunAction::B3aRunAction()
: G4UserRunAction(),
fGoodEvents(0),
fSumDose(0.)
RunAction::RunAction()
{
//add new units for dose
//
@@ -63,12 +65,12 @@ B3aRunAction::B3aRunAction()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3aRunAction::~B3aRunAction()
RunAction::~RunAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aRunAction::BeginOfRunAction(const G4Run* run)
void RunAction::BeginOfRunAction(const G4Run* run)
{
G4cout << "### Run " << run->GetRunID() << " start." << G4endl;
@@ -82,7 +84,7 @@ void B3aRunAction::BeginOfRunAction(const G4Run* run)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void B3aRunAction::EndOfRunAction(const G4Run* run)
void RunAction::EndOfRunAction(const G4Run* run)
{
G4int nofEvents = run->GetNumberOfEvent();
if (nofEvents == 0) return;
@@ -94,8 +96,8 @@ void B3aRunAction::EndOfRunAction(const G4Run* run)
// Run conditions
// note: There is no primary generator action object for "master"
// run manager for multi-threaded mode.
const B3PrimaryGeneratorAction* generatorAction
= static_cast<const B3PrimaryGeneratorAction*>(
const PrimaryGeneratorAction* generatorAction
= static_cast<const PrimaryGeneratorAction*>(
G4RunManager::GetRunManager()->GetUserPrimaryGeneratorAction());
G4String partName;
if (generatorAction)
@@ -132,3 +134,6 @@ void B3aRunAction::EndOfRunAction(const G4Run* run)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}
@@ -24,28 +24,31 @@
// ********************************************************************
//
//
/// \file B3StackingAction.cc
/// \brief Implementation of the B3StackingAction class
/// \file StackingAction.cc
/// \brief Implementation of the B3::StackingAction class
#include "B3StackingAction.hh"
#include "StackingAction.hh"
#include "G4Track.hh"
#include "G4NeutrinoE.hh"
namespace B3
{
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3StackingAction::B3StackingAction()
StackingAction::StackingAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
B3StackingAction::~B3StackingAction()
StackingAction::~StackingAction()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4ClassificationOfNewTrack
B3StackingAction::ClassifyNewTrack(const G4Track* track)
StackingAction::ClassifyNewTrack(const G4Track* track)
{
//keep primary particle
if (track->GetParentID() == 0) return fUrgent;
@@ -56,3 +59,6 @@ B3StackingAction::ClassifyNewTrack(const G4Track* track)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
}