Import Geant4 10.3.0.beta source tree

This commit is contained in:
Gabriele Cosmo
2016-06-30 14:12:05 +02:00
parent a654a7ab1f
commit 4ec577e5c4
2021 changed files with 100995 additions and 78277 deletions
@@ -62,6 +62,7 @@ endif()
set(EXAMPLEhadrontherapy_SCRIPTS
clean.sh
batch.mac
ModoulWeight.txt
macro/GUIPersonalisation.mac
macro/carbon_beamline.mac
macro/detectorGeometry.mac
+2
View File
@@ -7,6 +7,8 @@ http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
====================================================
History file of the Hadrontherapy application
====================================================
19.05.2016 F. Romano, B. Jia Tag: hadrontherapy-V10-02-00
- new modulator class implemented
31.10.2015 F. Romano, J. Pipek Tag: hadrontherapy-V10-01-03
- general revisiion and commetns fixed
21.01.2015 J. Apostolakis Tag: hadrontherapy-V10-01-02
@@ -0,0 +1,24 @@
NumberOfStep 22
# Thickness Relative_Weight
Step1 0 .14445
Stept2 .8 .05665
Step3 1.6 .05049
Step4 2.4 .04239
Step5 3.2 .04313
Step6 4.0 .03879
Step7 4.8 .04182
Step8 5.6 .03422
Step9 6.4 .03469
Step10 7.2 .03589
Step11 8.0 .03633
Step12 8.8 .03842
Step13 9.6 .03688
Step14 10.4 .03705
Step15 11.2 .03773
Step16 12.0 .03968
Step17 12.8 .04058
Step18 13.6 .03903
Step19 14.4 .04370
Step20 15.2 .03981
Step21 16.0 .05226
Step22 16.8 .03603
@@ -1,603 +0,0 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
*************************************************************
Geant4 version Name: geant4-10-02-ref-00 (4-December-2015)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
*************************************************************
Activating geometry default
Going to register Parallel world...... done
Using HadrontherapyPhysicsList()
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)
OpenGLImmediateQt (OGLIQt, OGLI)
OpenGLStoredQt (OGLSQt, OGL, OGLS)
OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
RayTracerX (RayTracerX)
Registering model factories...
You have successfully registered the following model factories.
Registered model factories:
generic
drawByCharge
drawByParticleID
drawByOriginVolume
drawByAttribute
Registered filter factories:
chargeFilter
particleFilter
originVolumeFilter
attributeFilter
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.
Available colours:
black, blue, brown, cyan, gray, green, grey, magenta, red, white, yellow
/tracking/verbose 0
/run/verbose 1
/event/verbose 0
/Physics/addPhysics standard_opt4
THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmStandardPhysics_option4
/run/initialize
HadrontherapyMatrix: Memory space to store physical dose into 200 voxels has been allocated
/run/geometryModified
The (X,Y,Z) dimensions of the phantom are : (40 cm ,40 cm ,40 cm )
The (X,Y,Z) dimensions of the detector are : (4 cm ,4 cm ,4 cm )
Displacement between Phantom and World is: DX= 20 cm DY= 0 fm DZ= 0 fm
The (X,Y,Z) sizes of the Voxels are: (200 um ,4 cm ,4 cm )
The number of Voxels along (X,Y,Z) is: (200,1,1)
G4PhysicsListHelper::AddTransportation()--- G4CoupledTransportation is used
### G4EmConfigurator::AddModels n= 0
PhysicsList::SetCuts:CutLength : 1 mm
/gps/pos/shape Circle
/gps/pos/centre -310. 0. 0. cm
/gps/pos/radius 0. mm
/gps/pos/sigma_r 2. mm
/gps/particle proton
/gps/pos/type Beam
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
/gps/ang/rot1 0 0 1
/gps/ang/rot2 0 1 0
/gps/ang/type beam1d
/gps/ang/sigma_r 0. deg
/gps/ene/type Gauss
/gps/ene/mono 62 MeV
/gps/ene/sigma 0.3 MeV
/Step/waterPhantomStepMax 1 mm
/changePhantom/size 40 40 40 cm
/changePhantom/position 20 0 0 cm
/changeDetector/size 4 4 4 cm
/changeDetector/voxelSize 1 40 40 mm
/changeDetector/displacement 0 18 18 cm
/changePhantom/update
HadrontherapyMatrix: Memory space to store physical dose into 40 voxels has been allocated
/run/geometryModified
The (X,Y,Z) dimensions of the phantom are : (40 cm ,40 cm ,40 cm )
The (X,Y,Z) dimensions of the detector are : (4 cm ,4 cm ,4 cm )
Displacement between Phantom and World is: DX= 20 cm DY= 0 fm DZ= 0 fm
The (X,Y,Z) sizes of the Voxels are: (1 mm ,4 cm ,4 cm )
The number of Voxels along (X,Y,Z) is: (40,1,1)
/event/printEventNumber 100
/run/beamOn 500
### === Deexcitation model UAtomDeexcitation is activated for 2 regions:
DefaultRegionForTheWorld
DetectorLog
phot: for gamma SubType= 12 BuildTable= 0
LambdaPrime table from 200 keV to 10 TeV in 154 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila FluoActive
compt: for gamma SubType= 13 BuildTable= 1
Lambda table from 100 eV to 1 MeV, 20 bins per decade, spline: 1
LambdaPrime table from 1 MeV to 10 TeV in 140 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEPComptonModel : Emin= 0 eV Emax= 20 MeV FluoActive
KleinNishina : Emin= 20 MeV Emax= 10 TeV FluoActive
conv: for gamma SubType= 14 BuildTable= 1
Lambda table from 1.022 MeV to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
PenConversion : Emin= 0 eV Emax= 80 GeV
BetheHeitlerLPM : Emin= 80 GeV Emax= 10 TeV
Rayl: for gamma SubType= 11 BuildTable= 1
Lambda table from 100 eV to 100 keV, 20 bins per decade, spline: 0
LambdaPrime table from 100 keV to 10 TeV in 160 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 10 TeV CullenGenerator
msc: for e- SubType= 10
RangeFactor= 0.02, stepLimitType: 3, latDisplacement: 1, skin= 1, geomFactor= 2.5
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 100 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
PenIoni : Emin= 0 eV Emax= 1 MeV
MollerBhabha : Emin= 1 MeV Emax= 10 TeV deltaVI
eBrem: for e- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
LPM flag: 1 for E > 1 GeV, HighEnergyThreshold(GeV)= 10000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
CoulombScat: for e-, integral: 1 SubType= 1 BuildTable= 1
Lambda table from 100 MeV to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 10 TeV
msc: for e+ SubType= 10
RangeFactor= 0.02, stepLimitType: 3, latDisplacement: 1, skin= 1, geomFactor= 2.5
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Table with 120 bins Emin= 100 eV Emax= 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 10 TeV Table with 100 bins Emin= 100 MeV Emax= 10 TeV
eIoni: for e+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
PenIoni : Emin= 0 eV Emax= 1 MeV
MollerBhabha : Emin= 1 MeV Emax= 10 TeV deltaVI
eBrem: for e+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
LPM flag: 1 for E > 1 GeV, HighEnergyThreshold(GeV)= 10000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 10 TeV
CoulombScat: for e+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from 100 MeV to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 10 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for proton SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 10 TeV deltaVI
hBrems: for proton SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for proton, integral: 1 SubType= 1 BuildTable= 1
Used Lambda table of anti_proton
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
nuclearStopping: for proton SubType= 8 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for GenericIon SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV
ionIoni: for GenericIon SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.001, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
ParamICRU73 : Emin= 0 eV Emax= 10 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, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
ionIoni: for alpha SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax= 7.9452 MeV deltaVI
BetheBloch : Emin= 7.9452 MeV Emax= 10 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, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for anti_proton SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.02, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 10 TeV deltaVI
hBrems: for anti_proton SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for anti_proton SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 13x1001 from 7.50618 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for anti_proton, integral: 1 SubType= 1 BuildTable= 1
Lambda table from threshold to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
nuclearStopping: for anti_proton SubType= 8 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for kaon+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 1.05231 MeV deltaVI
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV deltaVI
hBrems: for kaon+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for kaon+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for kaon+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from threshold to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for kaon- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV deltaVI
BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV deltaVI
hBrems: for kaon- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for kaon- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 14x1001 from 3.94942 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for kaon-, integral: 1 SubType= 1 BuildTable= 1
Used Lambda table of kaon+
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
muIoni: for mu+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
muPairProd: for mu+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for mu+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from threshold to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
muIoni: for mu- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
muPairProd: for mu- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 17x1001 from 1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
Used Lambda table of mu+
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for pi+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for pi+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 297.505 keV deltaVI
BetheBloch : Emin= 297.505 keV Emax= 10 TeV deltaVI
hBrems: for pi+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for pi+ SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for pi+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from threshold to 10 TeV, 20 bins per decade, spline: 1
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
hIoni: for pi- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 297.505 keV deltaVI
BetheBloch : Emin= 297.505 keV Emax= 10 TeV deltaVI
hBrems: for pi- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hPairProd: for pi- SubType= 4
dE/dx and range tables from 100 eV to 10 TeV in 220 bins
Lambda tables from threshold to 10 TeV, 20 bins per decade, spline: 1
Sampling table 16x1001 from 1.11656 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 10 TeV
CoulombScat: for pi-, integral: 1 SubType= 1 BuildTable= 1
Used Lambda table of pi+
180 < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes
Material : G4_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
Index : 1 used in the geometry : Yes
Material : G4_Al
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 6.90363 keV e- 598.345 keV e+ 570.85 keV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 2 used in the geometry : Yes
Material : G4_Galactic
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
Index : 3 used in the geometry : Yes
Material : G4_Ta
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 101.501 keV e- 2.01928 MeV e+ 1.88805 MeV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 4 used in the geometry : Yes
Material : G4_KAPTON
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 2.98035 keV e- 419.056 keV e+ 405.209 keV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 5 used in the geometry : Yes
Material : Brass
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 24.2568 keV e- 1.32231 MeV e+ 1.24471 MeV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 6 used in the geometry : Yes
Material : G4_PLEXIGLASS
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 2.78665 keV e- 389.196 keV e+ 376.336 keV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 7 used in the geometry : Yes
Material : G4_Cu
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 24.7508 keV e- 1.39534 MeV e+ 1.31345 MeV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 8 used in the geometry : Yes
Material : G4_MYLAR
Range cuts : gamma 1 mm e- 1 mm e+ 1 mm proton 1 mm
Energy thresholds : gamma 3.02067 keV e- 419.056 keV e+ 405.209 keV proton 100 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 9 used in the geometry : Yes
Material : G4_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
Index : 10 used in the geometry : Yes
Material : G4_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 :
DetectorLog
====================================================================
### Run 0 starts.
Run 0 starts ...
---> Begin of Event: 0
---> Begin of Event: 100
---> Begin of Event: 200
---> Begin of Event: 300
---> Begin of Event: 400
Run terminated.
Run Summary
Number of events processed : 500
User=5.49s Real=5.55s Sys=0.04s
Dose is being written to Dose.out
Graphics systems deleted.
Visualization Manager deleting...
G4 kernel has come to Quit state.
================== Deleting memory pools ===================
Number of memory pools allocated: 12 of which, static: 0
Dynamic pools deleted: 12 / Total memory freed: 0.6 MB
============================================================
RunManagerKernel is deleted. Good bye :)
@@ -23,12 +23,26 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Hadrontherapy advanced example for Geant4
// See more at: https://twiki.cern.ch/twiki/bin/view/Geant4/AdvancedExamplesHadrontherapy
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
#ifndef HadrontherapyModulator_H
#define HadrontherapyModulator_H 1
#include "globals.hh"
#include <fstream>
#include "G4Material.hh"
#include "G4ThreeVector.hh"
#include "G4RotationMatrix.hh"
#include "HadrontherapyModulatorMessenger.hh"
// using namespace std;
class G4Tubs;
class G4LogicalVolume;
class G4VPhysicalVolume;
@@ -43,19 +57,27 @@ public:
void BuildModulator(G4VPhysicalVolume*);
void SetModulatorAngle(G4double);
void SetModulatorMaterial(G4String);
void SetModulatorPosition(G4ThreeVector);
void SetModulatorInnerRadius(G4double);
void SetModulatorOuterRadius(G4double);
void ModulatorDefaultProperties();
void ModulatorPropertiesFromFile(G4String);
void GetDataFromFile(G4String value);
void GetStepInformation();
void BuildSteps();
private:
std::ifstream File;
G4LogicalVolume * logicMotherMod ;
G4VPhysicalVolume* physiMotherMod;
G4Material* Mod0Mater;
G4Material* ModMater;
G4RotationMatrix* rm;
G4VPhysicalVolume* physiMotherMod;
G4Tubs* solidMod0;
G4LogicalVolume* logicMod0;
G4VPhysicalVolume* physiMod0;
G4Tubs* solidMod1;
G4LogicalVolume* logicMod1;
G4Tubs* solidMod1;
G4LogicalVolume* logicMod1;
G4VPhysicalVolume* physiMod1;
G4Tubs* solidMod2;
@@ -69,291 +91,26 @@ private:
G4Tubs* solidMod4;
G4LogicalVolume* logicMod4;
G4VPhysicalVolume* physiMod4;
G4double pi;
G4int StepNumbers;
G4double* Weight;
G4double* StepThickness;
G4double* StartingAngle;
G4double* SpanningAngle;
G4ThreeVector* PositionMod;
G4Tubs** solidMod;
G4LogicalVolume** logicMod;
G4VPhysicalVolume** physiMod;
G4Tubs* solidMod5;
G4LogicalVolume* logicMod5;
G4VPhysicalVolume* physiMod5;
G4RotationMatrix* rm;
G4Tubs* solidMod6;
G4LogicalVolume* logicMod6;
G4VPhysicalVolume* physiMod6;
G4Tubs* solidMod7;
G4LogicalVolume* logicMod7;
G4VPhysicalVolume* physiMod7;
G4Tubs* solidMod8;
G4LogicalVolume* logicMod8;
G4VPhysicalVolume* physiMod8;
G4Tubs* solidMod9;
G4LogicalVolume* logicMod9;
G4VPhysicalVolume* physiMod9;
G4Tubs* solidMod10;
G4LogicalVolume* logicMod10;
G4VPhysicalVolume* physiMod10;
G4Tubs* solidMod11;
G4LogicalVolume* logicMod11;
G4VPhysicalVolume* physiMod11;
G4Tubs* solidMod12;
G4LogicalVolume* logicMod12;
G4VPhysicalVolume* physiMod12;
G4Tubs* solidMod13;
G4LogicalVolume* logicMod13;
G4VPhysicalVolume* physiMod13;
G4Tubs* solidMod14;
G4LogicalVolume* logicMod14;
G4VPhysicalVolume* physiMod14;
G4Tubs* solidMod15;
G4LogicalVolume* logicMod15;
G4VPhysicalVolume* physiMod15;
G4Tubs* solidMod16;
G4LogicalVolume* logicMod16;
G4VPhysicalVolume* physiMod16;
G4Tubs* solidMod17;
G4LogicalVolume* logicMod17;
G4VPhysicalVolume* physiMod17;
G4Tubs* solidMod18;
G4LogicalVolume* logicMod18;
G4VPhysicalVolume* physiMod18;
G4Tubs* solidMod20;
G4LogicalVolume* logicMod20;
G4VPhysicalVolume* physiMod20;
G4String FileName;
HadrontherapyModulatorMessenger* ModulatorMessenger;
G4double innerRadiusOfTheTube ;
G4double outerRadiusOfTheTube ;
G4Tubs* solidMod21;
G4LogicalVolume* logicMod21;
G4VPhysicalVolume* physiMod21;
G4Tubs* solidMod22;
G4LogicalVolume* logicMod22;
G4VPhysicalVolume* physiMod22;
G4Tubs* solidMod23;
G4LogicalVolume* logicMod23;
G4VPhysicalVolume* physiMod23;
G4Tubs* solidMod24;
G4LogicalVolume* logicMod24;
G4VPhysicalVolume* physiMod24;
G4Tubs* solidMod25;
G4LogicalVolume* logicMod25;
G4VPhysicalVolume* physiMod25;
G4Tubs* solidMod26;
G4LogicalVolume* logicMod26;
G4VPhysicalVolume* physiMod26;
G4Tubs* solidMod27;
G4LogicalVolume* logicMod27;
G4VPhysicalVolume* physiMod27;
G4Tubs* solidMod28;
G4LogicalVolume* logicMod28;
G4VPhysicalVolume* physiMod28;
G4Tubs* solidMod29;
G4LogicalVolume* logicMod29;
G4VPhysicalVolume* physiMod29;
G4Tubs* solidMod30;
G4LogicalVolume* logicMod30;
G4VPhysicalVolume* physiMod30;
G4Tubs* solidMod31;
G4LogicalVolume* logicMod31;
G4VPhysicalVolume* physiMod31;
G4Tubs* solidMod32;
G4LogicalVolume* logicMod32;
G4VPhysicalVolume* physiMod32;
G4Tubs* solidMod33;
G4LogicalVolume* logicMod33;
G4VPhysicalVolume* physiMod33;
G4Tubs* solidMod34;
G4LogicalVolume* logicMod34;
G4VPhysicalVolume* physiMod34;
G4Tubs* solidMod35;
G4LogicalVolume* logicMod35;
G4VPhysicalVolume* physiMod35;
G4Tubs* solidMod36;
G4LogicalVolume* logicMod36;
G4VPhysicalVolume* physiMod36;
G4Tubs* solidMod37;
G4LogicalVolume* logicMod37;
G4VPhysicalVolume* physiMod37;
G4Tubs* solidMod38;
G4LogicalVolume* logicMod38;
G4VPhysicalVolume* physiMod38;
G4Tubs* solidMod40; // pointer to the
G4LogicalVolume* logicMod40;
G4VPhysicalVolume* physiMod40;
G4Tubs* solidMod41;
G4LogicalVolume* logicMod41;
G4VPhysicalVolume* physiMod41;
G4Tubs* solidMod42;
G4LogicalVolume* logicMod42;
G4VPhysicalVolume* physiMod42;
G4Tubs* solidMod43;
G4LogicalVolume* logicMod43;
G4VPhysicalVolume* physiMod43;
G4Tubs* solidMod44;
G4LogicalVolume* logicMod44;
G4VPhysicalVolume* physiMod44;
G4Tubs* solidMod45;
G4LogicalVolume* logicMod45;
G4VPhysicalVolume* physiMod45;
G4Tubs* solidMod46;
G4LogicalVolume* logicMod46;
G4VPhysicalVolume* physiMod46;
G4Tubs* solidMod47;
G4LogicalVolume* logicMod47;
G4VPhysicalVolume* physiMod47;
G4Tubs* solidMod48;
G4LogicalVolume* logicMod48;
G4VPhysicalVolume* physiMod48;
G4Tubs* solidMod49;
G4LogicalVolume* logicMod49;
G4VPhysicalVolume* physiMod49;
G4Tubs* solidMod50;
G4LogicalVolume* logicMod50;
G4VPhysicalVolume* physiMod50;
G4Tubs* solidMod51;
G4LogicalVolume* logicMod51;
G4VPhysicalVolume* physiMod51;
G4Tubs* solidMod52;
G4LogicalVolume* logicMod52;
G4VPhysicalVolume* physiMod52;
G4Tubs* solidMod53;
G4LogicalVolume* logicMod53;
G4VPhysicalVolume* physiMod53;
G4Tubs* solidMod54;
G4LogicalVolume* logicMod54;
G4VPhysicalVolume* physiMod54;
G4Tubs* solidMod55;
G4LogicalVolume* logicMod55;
G4VPhysicalVolume* physiMod55;
G4Tubs* solidMod56;
G4LogicalVolume* logicMod56;
G4VPhysicalVolume* physiMod56;
G4Tubs* solidMod57;
G4LogicalVolume* logicMod57;
G4VPhysicalVolume* physiMod57;
G4Tubs* solidMod58;
G4LogicalVolume* logicMod58;
G4VPhysicalVolume* physiMod58;
G4Tubs* solidMod60;
G4LogicalVolume* logicMod60;
G4VPhysicalVolume* physiMod60;
G4Tubs* solidMod61;
G4LogicalVolume* logicMod61;
G4VPhysicalVolume* physiMod61;
G4Tubs* solidMod62;
G4LogicalVolume* logicMod62;
G4VPhysicalVolume* physiMod62;
G4Tubs* solidMod63;
G4LogicalVolume* logicMod63;
G4VPhysicalVolume* physiMod63;
G4Tubs* solidMod64;
G4LogicalVolume* logicMod64;
G4VPhysicalVolume* physiMod64;
G4Tubs* solidMod65;
G4LogicalVolume* logicMod65;
G4VPhysicalVolume* physiMod65;
G4Tubs* solidMod66;
G4LogicalVolume* logicMod66;
G4VPhysicalVolume* physiMod66;
G4Tubs* solidMod67;
G4LogicalVolume* logicMod67;
G4VPhysicalVolume* physiMod67;
G4Tubs* solidMod68;
G4LogicalVolume* logicMod68;
G4VPhysicalVolume* physiMod68;
G4Tubs* solidMod69;
G4LogicalVolume* logicMod69;
G4VPhysicalVolume* physiMod69;
G4Tubs* solidMod70;
G4LogicalVolume* logicMod70;
G4VPhysicalVolume* physiMod70;
G4Tubs* solidMod71;
G4LogicalVolume* logicMod71;
G4VPhysicalVolume* physiMod71;
G4Tubs* solidMod72;
G4LogicalVolume* logicMod72;
G4VPhysicalVolume* physiMod72;
G4Tubs* solidMod73;
G4LogicalVolume* logicMod73;
G4VPhysicalVolume* physiMod73;
G4Tubs* solidMod74;
G4LogicalVolume* logicMod74;
G4VPhysicalVolume* physiMod74;
G4Tubs* solidMod75;
G4LogicalVolume* logicMod75;
G4VPhysicalVolume* physiMod75;
G4Tubs* solidMod76;
G4LogicalVolume* logicMod76;
G4VPhysicalVolume* physiMod76;
G4Tubs* solidMod77;
G4LogicalVolume* logicMod77;
G4VPhysicalVolume* physiMod77;
G4Tubs* solidMod78;
G4LogicalVolume* logicMod78;
G4VPhysicalVolume* physiMod78;
};
#endif
@@ -0,0 +1,82 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
#ifndef HadrontherapyModulatorMessenger_h
#define HadrontherapyModulatorMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
class HadrontherapyModulator;
class G4UIdirectory;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWithAString;
class G4UIcmdWith3VectorAndUnit;
class HadrontherapyModulatorMessenger: public G4UImessenger
{
public:
HadrontherapyModulatorMessenger(HadrontherapyModulator*);
~HadrontherapyModulatorMessenger();
void SetNewValue(G4UIcommand*, G4String);
private:
// Pointer to the modulator wheel
HadrontherapyModulator* Modulator;
G4UIdirectory* modulatorDir; // Control of the modulator
G4UIcmdWithADoubleAndUnit* modulatorAngleCmd;
// UI command to rotate the modulator wheel
G4UIcmdWithAString* modulatorMatCmd;
// UI command to set the material of the modulator wheel
G4UIcmdWithAString* modulatorExternalFile;
// UI command to set an external file for inputing modulator properties
G4UIcmdWith3VectorAndUnit* modulatorPositionCmd;
// UI command to change the position of the modulator in the the beam line
G4UIcmdWithADoubleAndUnit* modulatorOuterRadiusCmd;
// UI command to set the outer radius of the modulator wheel
G4UIcmdWithADoubleAndUnit* modulatorInnerRadiusCmd;
// UI command to set the inner radius of the modulator wheel
};
#endif
@@ -1,3 +1,3 @@
# macro to be run in loop
/modulator/angle 1 deg
/run/beamOn 100
/run/beamOn 10
@@ -42,15 +42,16 @@
# Visualisation
#
/vis/scene/create
/vis/open OGL
/vis/open OGLI
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 50 130 deg
/vis/viewer/zoom 3.5
/vis/viewer/pan -60 40 cm
/vis/scene/add/axes 0 0 0 0.1 m
/vis/viewer/zoom 1
/vis/viewer/panTo -80 40 cm
/vis/scene/add/trajectories
/vis/viewer/update
/vis/scene/add/trajectories
/vis/scene/endOfEventAction accumulate
/vis/viewer/set/hiddenMarker 1
#########################
# Set the primary particle type,
# energy and position along the X direction
@@ -58,40 +59,72 @@
#---------------------------gps-----------------
/gps/pos/shape Circle
/gps/pos/centre -310. 0. 0. cm ##-270
/gps/pos/centre -310. 0. 0. cm
/gps/pos/radius 0. mm
/gps/pos/sigma_r 2. mm ##3
/gps/pos/sigma_r 2.5 mm
/gps/particle proton
/gps/pos/type Beam
# the incident surface is in the y-z plane
/gps/pos/rot1 0 1 0
/gps/pos/rot2 0 0 1
# the beam is travelling along the x-axis without any angular dispersion (angular despersion set to 0.0)
#
/gps/ang/rot1 0 0 1
/gps/ang/rot2 0 1 0
/gps/ang/type beam1d
/gps/ang/sigma_r 0. deg
# the beam energy is in gaussian profile
#
/gps/ene/type Gauss
/gps/energy 62 MeV
/gps/ene/sigma 300 keV
/gps/direction 1 0 0
/gps/ene/mono 62 MeV
/gps/ene/sigma 0.3 MeV
##########################
# Set here the cut and the step max for the tracking.
# Suggested values of cut and step:
/run/setCut 0.1 mm
/Step/waterPhantomStepMax 0.01 mm
#
#/Physics/setDetectorCuts 0.001 mm
#/Physics/setCuts 1 mm
/Step/waterPhantomStepMax 0.005 mm
/changePhantom/size 40 40 40 cm
/changePhantom/position 20 0 0 cm
/changeDetector/size 4 4 4 cm
/changeDetector/voxelSize .1 40 40 mm
/changeDetector/displacement 0 18. 18. cm
/changePhantom/update
# IF YOU WANT A RANGE SHIFTER PLEASE CHANGE
# THE FOLLOWIG PARAMETERS
# SETTING FOR THE RANGE SHIFTER
/beamLine/RangeShifter/RSMat G4_AIR
/beamLine/RangeShifter/thickness 1 cm
# /beamLine/RangeShifter/G4_PLEXIGLASS
# /beamLine/RangeShifter/thickness 1 cm
##########################################################
### Set the modulator properties
/modulator/ReadData
# You can set as a parameter your data file in a right format instead if you left blank or input default, ..
# .. data will be read from the default file "ModulWeight.txt"
/modulator/RMWMat G4_PLEXIGLASS
/modulator/position -2160.5 30 50 mm
/modulator/innerRadius 2.5 cm
/modulator/outRadius 9.5 cm
############################################################
/event/printEventNumber 1000
# START OF THE MODULATOR ROTATION
# IT CONSISTS IN A COMPLETE ROTATION
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,131 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// This is the *BASIC* version of Hadrontherapy, a Geant4-based application
// See more at: http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
//
// Visit the Hadrontherapy web site (http://www.lns.infn.it/link/Hadrontherapy) to request
// the *COMPLETE* version of this program, together with its documentation;
// Hadrontherapy (both basic and full version) are supported by the Italian INFN
// Institute in the framework of the MC-INFN Group
//
#include "HadrontherapyModulatorMessenger.hh"
#include "HadrontherapyModulator.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
HadrontherapyModulatorMessenger::HadrontherapyModulatorMessenger(HadrontherapyModulator* Mod)
:Modulator(Mod)
{
modulatorDir = new G4UIdirectory("/modulator/");
modulatorDir -> SetGuidance("Command to change the modulator wheel proprties");
modulatorMatCmd = new G4UIcmdWithAString("/modulator/RMWMat",this);
modulatorMatCmd -> SetGuidance("Set material of modulatorWheel");
modulatorMatCmd -> SetParameterName("Material",false);
modulatorMatCmd -> AvailableForStates(G4State_Idle);
modulatorExternalFile=new G4UIcmdWithAString("/modulator/ReadData",this);
modulatorExternalFile -> SetGuidance("set properties of modulator steps via a external file");
modulatorExternalFile -> SetParameterName("FileName",true,false);
modulatorExternalFile -> SetDefaultValue ("default");
modulatorExternalFile -> AvailableForStates(G4State_Idle);
modulatorPositionCmd = new G4UIcmdWith3VectorAndUnit("/modulator/position",this);
modulatorPositionCmd -> SetGuidance("Set position of modulato");
modulatorPositionCmd -> SetParameterName("PositionAlongX",
"PositionAlongY",
"PositionAlongZ",false);
modulatorPositionCmd -> SetDefaultUnit("mm");
modulatorPositionCmd -> SetUnitCandidates("mm cm m");
modulatorPositionCmd -> AvailableForStates(G4State_Idle);
modulatorOuterRadiusCmd = new G4UIcmdWithADoubleAndUnit("/modulator/outRadius",this);
modulatorOuterRadiusCmd -> SetGuidance("Set size of outer radius");
modulatorOuterRadiusCmd-> SetParameterName("Size",false);
modulatorOuterRadiusCmd -> SetDefaultUnit("mm");
modulatorOuterRadiusCmd-> SetUnitCandidates("mm cm m");
modulatorOuterRadiusCmd-> AvailableForStates(G4State_Idle);
modulatorInnerRadiusCmd = new G4UIcmdWithADoubleAndUnit("/modulator/innerRadius",this);
modulatorInnerRadiusCmd -> SetGuidance("Set size of inner radius");
modulatorInnerRadiusCmd-> SetParameterName("Size",false);
modulatorInnerRadiusCmd -> SetDefaultUnit("mm");
modulatorInnerRadiusCmd-> SetUnitCandidates("mm cm m");
modulatorInnerRadiusCmd-> AvailableForStates(G4State_Idle);
modulatorAngleCmd = new G4UIcmdWithADoubleAndUnit("/modulator/angle",this);
modulatorAngleCmd -> SetGuidance("Set Modulator Angle");
modulatorAngleCmd -> SetParameterName("Size",false);
modulatorAngleCmd -> SetRange("Size>=0.");
modulatorAngleCmd -> SetUnitCategory("Angle");
modulatorAngleCmd -> AvailableForStates(G4State_Idle);
}
HadrontherapyModulatorMessenger::~ HadrontherapyModulatorMessenger()
{
delete modulatorAngleCmd;
delete modulatorMatCmd;
delete modulatorPositionCmd;
delete modulatorInnerRadiusCmd;
delete modulatorOuterRadiusCmd;
delete modulatorDir;
}
void HadrontherapyModulatorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
{
if( command == modulatorAngleCmd )
{Modulator -> SetModulatorAngle
(modulatorAngleCmd -> GetNewDoubleValue(newValue));}
else if( command == modulatorMatCmd )
{Modulator -> SetModulatorMaterial(newValue);}
else if (command== modulatorExternalFile)
{Modulator->GetDataFromFile(newValue);}
else if( command == modulatorPositionCmd )
{ G4ThreeVector size = modulatorPositionCmd-> GetNew3VectorValue(newValue);
Modulator -> SetModulatorPosition(size);}
else if( command == modulatorOuterRadiusCmd )
{ Modulator -> SetModulatorOuterRadius(
modulatorOuterRadiusCmd -> GetNewDoubleValue(newValue));}
else if( command == modulatorInnerRadiusCmd )
{ Modulator -> SetModulatorInnerRadius(
modulatorInnerRadiusCmd -> GetNewDoubleValue(newValue));}
}