Import Geant4 10.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-12-09 12:35:28 +01:00
parent 4ec577e5c4
commit a3452e42ac
3514 changed files with 210500 additions and 89628 deletions
@@ -7,6 +7,9 @@ cirrone@lns.infn.it
History file of the ChargeExchangeMC application
====================================================
02.11.2016 - L. Garnier, Tag ChargeExchangeMC-V10-02-00
Remove icons.mac. Automatically include since interfaces-V10-02-07
09.12.2014 - A. Radkov, Tag ChargeExchangeMC-V10-01-00
CERN ROOT histograming binding. Bug fix for online histogram
redrawing and easy online histogram showing from a dedicated
@@ -25,6 +25,3 @@
/cexmc/histo/addHistoMenu histo Histo
/cexmc/histo/drawOptions2D contz
/cexmc/histo/drawOptions3D iso
# Add an icon toolbar
/control/execute mac/icons.mac
+1 -6
View File
@@ -23,7 +23,7 @@ include(${Geant4_USE_FILE})
#----------------------------------------------------------------------------
# Add options
#
option(ULTRA_MIRROR_USE "Use of mirrors" OFF)
option(ULTRA_MIRROR_USE "Use of mirrors" ON)
if(ULTRA_MIRROR_USE)
add_definitions(-DULTRA_MIRROR_USE)
endif()
@@ -38,11 +38,6 @@ if(ULTRA_GROUND_USE)
add_definitions(-DULTRA_GROUND_USE)
endif()
option(ULTRA_REFLECTION_USE "Use of reflection" OFF)
if(ULTRA_REFLECTION_USE)
add_definitions(-DULTRA_REFLECTION_USE)
endif()
#----------------------------------------------------------------------------
# Locate sources and headers for this project
#
+1 -1
View File
@@ -13,7 +13,7 @@ endif
include $(G4INSTALL)/config/architecture.gmk
ifdef SPACE_VERBOSE
CPPFLAGS += -DSPACE_VERBOSE_USE
CPPFLAGS += -DULTRA_VERBOSE_USE
endif
ifdef ULTRA_MIRROR_USE
CPPFLAGS += -DULTRA_MIRROR_USE
+16
View File
@@ -7,6 +7,22 @@
History file
------------
21.11.2016 - G. Cosmo (air_shower-V10-02-03)
Fixed compilation warning for unused variable in
UltraDetectorConstruction.
19.11.2016 - A. Dotti (air_shower-V10-02-02)
Explicit set of SD to manager
16.11.2016 - B. Tome
Use modular physics lists.
Remove drawing of step points from Visualisation.mac
Update History, README, CMakeLists.txt and GNUmakefile.
28.11.2016 - G. Folger (air_shower-V10-02-01)
Replace direct use of theParticleIterator by GetParticleIterator().
fix required by clang39 on Windows and MAC
03.03.2016 - L. Pandola (air_shower-V10-02-00)
Replace std::log with G4Log
+16 -10
View File
@@ -53,10 +53,16 @@ provided, for building with cmake |
The following environment variables can be set: |
setenv ULTRA_VERBOSE
1) GNUmakefile
setenv ULTRA_VERBOSE
setenv ULTRA_MIRROR_USE 1 : A specular reflecting surface is used.
setenv ULTRA_GROUND_USE 1 : A diffusive reflecting surface is used.
2) CMakeLists.txt
set ON/OFF the appropriate option (ULTRA_MIRROR_USE, ULTRA_GROUND_USE)
setenv ULTRA_MIRROR_USE 1 : A specular reflecting surface is used.
setenv ULTRA_GROUND_USE 1 : A diffusive reflecting surface is used.
------------------------------------------------------------------------
@@ -80,16 +86,16 @@ the Geant4 application developer manual (Analysis Manager Classes)
-----------------------------------------------------------------------
----> How to run the example. |
- batch mode:
$G4WORDIR/bin/Linux-g++/Ultra UltraMacro.mac |
|
- Interative mode:
3) $G4WORDIR/bin/Linux-g++/Ultra |
From the directory where the Ultra binary resides :
./Ultra UltraMacro.mac for running in batch mode |
|
./Ultra for running in interative mode. |
------------------------------------------------------------------------
----> Simulation output |
the output is ultra.xml (or ultra.root) |
the output is ultra.xml (or ultra.root) |
It contains:
1)1Dhistogram with the detected photons energy (eV) |
2)1Dhistogram with the number of detected photons per event |
@@ -104,5 +110,5 @@ to run it : $G4WORKDIR/bin/Linux-g++/Ultra Visualisation.mac
for comments and questions: bernardo@lip.pt
for more info http://www.ge.infn.it/geant4/examples/
last modified: L. Pandola 28/05/2013
last modified: B. Tome 26/11/2016
created by : B. Tome and M.C. Espirito Santo 20/05/2004
@@ -40,9 +40,9 @@
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
#/vis/modeling/trajectories/create/drawByCharge
#/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
#/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
+16 -183
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-10-03-beta-01 (30-June-2016)
Geant4 version Name: geant4-10-03 (9-December-2016)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -41,14 +41,14 @@ Registered model factories:
drawByCharge
drawByOriginVolume
drawByParticleID
drawByTouchedVolume
drawByEncounteredVolume
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
touchedVolumeFilter
encounteredVolumeFilter
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
@@ -159,8 +159,8 @@ Available colours:
# #
# #
######################################################
No reflecting surface used
>>>>>>>>>>>>>> AddDiscreteProcess to OpticalPhoton
Using mirror reflecting surface
### Birks coeffitients used in run time
/run/verbose 2
/event/verbose 0
/tracking/verbose 0
@@ -174,173 +174,6 @@ No reflecting surface used
/gps/energy 300.0 MeV
/run/beamOn 100
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 ======
BetheHeitler : Emin= 0 eV Emax= 80 GeV
BetheHeitlerLPM : Emin= 80 GeV Emax= 10 TeV
compt: for gamma SubType= 13 BuildTable= 1
Lambda table from 100 eV to 1 MeV, 7 bins per decade, spline: 1
LambdaPrime table from 1 MeV to 10 TeV in 49 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 10 TeV
phot: for gamma SubType= 12 BuildTable= 0
LambdaPrime table from 200 keV to 10 TeV in 54 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
PhotoElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
eIoni: for e- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 10 TeV
eBrem: for e- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 DipBustGen
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
eIoni: for e+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 bins per decade, spline: 1
finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 10 TeV
eBrem: for e+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 DipBustGen
eBremLPM : Emin= 1 GeV Emax= 10 TeV DipBustGen
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 10 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
hIoni: for proton SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 10 TeV
msc: for anti_proton SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 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 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV 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 ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
muIoni: for mu+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu+ SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 77 bins
Lambda tables from threshold to 10 TeV, 7 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
msc: for mu- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
muIoni: for mu- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
MuBetheBloch : Emin= 1 GeV Emax= 10 TeV
muBrems: for mu- SubType= 3
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 77 bins
Lambda tables from threshold to 10 TeV, 7 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
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
hIoni: for pi+ SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
Bragg : Emin= 0 eV Emax= 297.505 keV
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 77 bins Emin= 100 eV Emax= 10 TeV
hIoni: for pi- SubType= 2
dE/dx and range tables from 100 eV to 10 TeV in 77 bins
Lambda tables from threshold to 10 TeV, 7 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 ======
ICRU73QO : Emin= 0 eV Emax= 297.505 keV
BetheBloch : Emin= 297.505 keV Emax= 10 TeV
Region <DefaultRegionForTheWorld> -- -- appears in <World> world volume
This region is in the mass world.
Root logical volume(s) : World
@@ -401,14 +234,14 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
Voxelisation: top memory users:
Percent Memory Heads Nodes Pointers Total CPU Volume
------- -------- ------ ------ -------- ---------- ----------
52.31 0k 1 13 26 0.00 LensMotherLV
47.69 0k 3 9 22 0.00 World
50.87 0k 3 11 24 0.00 World
49.13 0k 1 13 26 0.00 LensMotherLV
### Run 0 starts.
ooo Run 0 starts (global).
--------- Ranlux engine status ---------
Initial seed = 1467116815
float_seed_table[] = 0.46025 0.614568 0.472781 0.0483307 0.905676 0.729853 0.365072 0.0451633 0.362083 0.523468 0.110341 0.283642 0.72332 0.140984 0.441664 0.88339 0.985072 0.727101 0.377638 0.98976 0.381081 0.685145 0.559393 0.655737
Initial seed = 1481193742
float_seed_table[] = 0.217621 0.886555 0.608987 0.127666 0.459881 0.802864 0.986453 0.0878205 0.216322 0.911389 0.368897 0.0815611 0.709863 0.526734 0.795146 0.0742022 0.244144 0.298011 0.661845 0.121785 0.28113 0.243757 0.79545 0.316194
i_lag = 23, j_lag = 9
carry = 0, count24 = 0
luxury = 3 nskip = 199
@@ -419,7 +252,7 @@ mu- Mono Plane
Run terminated.
Run Summary
Number of events processed : 100
User=2.86s Real=2.89s Sys=0s
User=4.97s Real=5.02s Sys=0s
### Run 0 (global) ended.
Graphics systems deleted.
Visualization Manager deleting...
@@ -433,22 +266,22 @@ RunManager is deleting RunManagerKernel.
G4SDManager deleted.
EventManager deleted.
Units table cleared.
Total navigation history collections cleaned: 9
Total navigation history collections cleaned: 8
================== Deleting memory pools ===================
Pool ID '20G4NavigationLevelRep', size : 0.0115 MB
Pool ID '20G4NavigationLevelRep', size : 0.00961 MB
Pool ID '24G4ReferenceCountedHandleIvE', size : 0.000961 MB
Pool ID '7G4Event', size : 0.000961 MB
Pool ID '15G4PrimaryVertex', size : 0.000961 MB
Pool ID '17G4PrimaryParticle', size : 0.000961 MB
Pool ID '15G4HCofThisEvent', size : 0.000961 MB
Pool ID '16G4HitsCollection', size : 0.000961 MB
Pool ID '17G4DynamicParticle', size : 0.246 MB
Pool ID '7G4Track', size : 0.491 MB
Pool ID '17G4DynamicParticle', size : 0.0413 MB
Pool ID '7G4Track', size : 0.0827 MB
Pool ID '18G4TouchableHistory', size : 0.000961 MB
Pool ID '15G4CountedObjectIvE', size : 0.000961 MB
Pool ID '15UltraOpticalHit', size : 0.000961 MB
Pool ID '15UltraOpticalHit', size : 0.0115 MB
Number of memory pools allocated: 12 of which, static: 0
Dynamic pools deleted: 12 / Total memory freed: 0.76 MB
Dynamic pools deleted: 12 / Total memory freed: 0.15 MB
============================================================
G4Allocator objects are deleted.
UImanager deleted.
@@ -42,9 +42,9 @@
#define UltraPhysicsList_H 1
#include "globals.hh"
#include "G4VUserPhysicsList.hh"
#include "G4VModularPhysicsList.hh"
class UltraPhysicsList : public G4VUserPhysicsList
class UltraPhysicsList : public G4VModularPhysicsList
{
public:
UltraPhysicsList();
@@ -54,23 +54,28 @@ class UltraPhysicsList : public G4VUserPhysicsList
// Construct particles and processes
void ConstructParticle();
void ConstructProcess();
//
void SetCuts();
protected:
// these methods Construct particles
void ConstructBosons();
void ConstructLeptons();
void ConstructMesons();
void ConstructBaryons();
private:
protected:
// these methods Construct physics processes and register them
void ConstructGeneral();
void ConstructEM();
void ConstructOp();
// hide assignment operator
UltraPhysicsList & operator=(const UltraPhysicsList &right);
UltraPhysicsList(const UltraPhysicsList&);
G4VPhysicsConstructor* fEmPhysicsList;
G4VPhysicsConstructor* fOpPhysicsList;
G4VPhysicsConstructor* fDecayPhysicsList;
std::vector<G4VPhysicsConstructor*> fHadronPhys;
G4String fEmName;
G4int fVerboseLebel;
G4int fMaxNumPhotonStep;
G4bool fHelIsRegisted;
G4bool fBicIsRegisted;
G4bool fGnucIsRegisted;
G4bool fStopIsRegisted;
};
#endif
@@ -68,6 +68,7 @@
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4Log.hh"
#include "G4SDManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -114,7 +115,7 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
UniverseVisAtt->SetVisibility(true);
UniverseVisAtt->SetForceWireframe(true);
World_log->SetVisAttributes(UniverseVisAtt);
World_log->SetVisAttributes (G4VisAttributes::Invisible);
World_log->SetVisAttributes (G4VisAttributes::GetInvisible());
@@ -139,15 +140,15 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
G4cout << "Using mirror reflecting surface " << G4endl ;
G4VPhysicalVolume* Mirror ;
Mirror = ConstructMirror(World_phys);
// G4VPhysicalVolume* Mirror =
ConstructMirror(World_phys);
#elif ULTRA_GROUND_USE
G4cout << "Using ground reflecting surface " << G4endl ;
G4VPhysicalVolume* Ground ;
Ground = ConstructGround(World_phys);
// G4VPhysicalVolume* Ground =
ConstructGround(World_phys);
#else
@@ -163,6 +164,7 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
void UltraDetectorConstruction::ConstructSDandField()
{
UltraPMTSD* PMTSD = new UltraPMTSD("PMTSD");
G4SDManager::GetSDMpointer()->AddNewDetector(PMTSD);
SetSensitiveDetector(logicalPMT,PMTSD);
}
@@ -102,7 +102,7 @@ G4LogicalVolume *LensMotherLV
G4VPhysicalVolume *LensMotherPV
= new G4PVPlacement(0,LensPosition,"LensMotherPV",LensMotherLV,MotherPV,false,0);
LensMotherLV->SetVisAttributes (G4VisAttributes::Invisible);
LensMotherLV->SetVisAttributes (G4VisAttributes::GetInvisible());
G4Cons *solidGroove
@@ -53,235 +53,83 @@
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4EmStandardPhysics.hh"
#include "G4EmLivermorePhysics.hh"
#include "G4EmPenelopePhysics.hh"
#include "G4EmLowEPPhysics.hh"
#include "G4DecayPhysics.hh"
#include "G4HadronElasticPhysics.hh"
#include "G4HadronInelasticQBBC.hh"
#include "G4IonPhysics.hh"
#include "G4EmExtraPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4OpticalPhysics.hh"
UltraPhysicsList::UltraPhysicsList() : G4VUserPhysicsList() {;}
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4LossTableManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
UltraPhysicsList::UltraPhysicsList() : G4VModularPhysicsList(),
fEmPhysicsList(0),
fOpPhysicsList(0),
fDecayPhysicsList(0),
fVerboseLebel(1),
fMaxNumPhotonStep(20)
{
G4LossTableManager::Instance();
SetDefaultCutValue(1*mm);
UltraPhysicsList::~UltraPhysicsList() {;}
// fMessenger = new UltraPhysicsListMessenger(this);
// fStepMaxProcess = new StepMax();
// Initilise flags
SetVerboseLevel(1);
// EM physics
fEmName = G4String("emstandard");
fEmPhysicsList = new G4EmStandardPhysics();
fOpPhysicsList = new G4OpticalPhysics();
// Decay Physics is always defined
fDecayPhysicsList = new G4DecayPhysics();
}
UltraPhysicsList::~UltraPhysicsList()
{
delete fDecayPhysicsList;
delete fEmPhysicsList;
delete fOpPhysicsList;
// delete fStepMaxProcess;
for(size_t i=0; i<fHadronPhys.size(); i++)
delete fHadronPhys[i];
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
ConstructBosons();
ConstructLeptons();
ConstructMesons();
ConstructBaryons();
fDecayPhysicsList->ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
// optical photon
G4OpticalPhoton::OpticalPhotonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructLeptons()
{
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructMesons()
{
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructProcess()
{
AddTransportation();
ConstructGeneral();
ConstructEM();
ConstructOp();
if (fEmPhysicsList)
fEmPhysicsList->ConstructProcess();
}
if (fOpPhysicsList)
fOpPhysicsList->ConstructProcess();
if (fDecayPhysicsList)
fDecayPhysicsList->ConstructProcess();
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4Decay.hh"
void UltraPhysicsList::ConstructGeneral()
{
G4Decay* theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager->AddDiscreteProcess(theDecayProcess);
}
for(size_t i=0; i<fHadronPhys.size(); ++i) {
fHadronPhys[i]->ConstructProcess();
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4eMultipleScattering.hh"
#include "G4MuMultipleScattering.hh"
#include "G4hMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructEM()
{
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
// Construct processes for gamma
pmanager->AddDiscreteProcess(new G4GammaConversion());
pmanager->AddDiscreteProcess(new G4ComptonScattering());
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
} else if (particleName == "e-") {
//electron
// Construct processes for electron
pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
} else if (particleName == "e+") {
//positron
// Construct processes for positron
pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
// Construct processes for muon
pmanager->AddProcess(new G4MuMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4MuIonisation(),-1,2,2);
pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
} else {
if ((particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
// all others charged particles except geantino
pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4hIonisation(),-1,2,2);
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4Cerenkov.hh"
#include "G4Scintillation.hh"
#include "G4OpAbsorption.hh"
#include "G4OpRayleigh.hh"
#include "G4OpBoundaryProcess.hh"
void UltraPhysicsList::ConstructOp()
{
// this Cerenkov Process
G4Cerenkov* theCerenkovProcess = new G4Cerenkov("Cerenkov");
// this absorption process inside optical media
G4OpAbsorption* theAbsorptionProcess = new G4OpAbsorption();
// Rayleigh scattering for optical photons (aerogel radiators)
G4OpRayleigh* theRayleighScatteringProcess = new G4OpRayleigh();
// Boundary process definition Class
G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess();
// Chose level 0 (no verbose)
theCerenkovProcess -> SetVerboseLevel(0);
theAbsorptionProcess -> SetVerboseLevel(0);
theRayleighScatteringProcess -> SetVerboseLevel(0);
theBoundaryProcess -> SetVerboseLevel(0);
// Chose MaxNumPhotons that can be generated. Lets ignore this for now
// G4int MaxNumPhotons = 300;
// theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumPhotons);
theCerenkovProcess->SetTrackSecondariesFirst(true);
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (theCerenkovProcess->IsApplicable(*particle)) {
pmanager->AddProcess(theCerenkovProcess);
pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
}
if (particleName == "opticalphoton") {
G4cout << ">>>>>>>>>>>>>> AddDiscreteProcess to OpticalPhoton " << G4endl;
pmanager->AddDiscreteProcess(theAbsorptionProcess);
pmanager->AddDiscreteProcess(theRayleighScatteringProcess);
pmanager->AddDiscreteProcess(theBoundaryProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::SetCuts()
{
@@ -292,5 +140,3 @@ void UltraPhysicsList::SetCuts()
// the default cut value for all particle types
SetCutsWithDefault();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+6 -2
View File
@@ -1,4 +1,4 @@
$Id: History 96602 2016-04-25 13:28:48Z gcosmo $
$Id: History 100660 2016-10-31 10:19:31Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -14,7 +14,11 @@ track of all tags.
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
28-11-16 Gunter Folger (amsEcal-V10-02-01)
- remove direct use of {a,the}ParticleIterator, use GetParticleTableIterator().
fix required by clang39 on Linux and MAC
24-04-16 mma (amsEcal-V10-02-00)
- PhysListEmStandard: use G4EmParameters
+2 -2
View File
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-10-03-beta-01 (30-June-2016)
Geant4 version Name: geant4-10-03 (9-December-2016)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -177,7 +177,7 @@ G4GeometryManager::ReportVoxelStats -- Voxel Statistics
Run terminated.
Run Summary
Number of events processed : 10000
User=11.92s Real=11.99s Sys=0s
User=16.81s Real=16.83s Sys=0s
-------------------------------------------------------------
---> The calorimeter is 9 Modules
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: DetectorConstruction.cc 83418 2014-08-21 15:30:47Z gcosmo $
// $Id: DetectorConstruction.cc 101905 2016-12-07 11:34:39Z gunter $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -302,9 +302,9 @@ G4VPhysicalVolume* DetectorConstruction::ConstructCalorimeter()
// Visualization attributes
//
lvol_fiber->SetVisAttributes (G4VisAttributes::Invisible);
lvol_layer->SetVisAttributes (G4VisAttributes::Invisible);
lvol_world->SetVisAttributes (G4VisAttributes::Invisible);
lvol_fiber->SetVisAttributes (G4VisAttributes::GetInvisible());
lvol_layer->SetVisAttributes (G4VisAttributes::GetInvisible());
lvol_world->SetVisAttributes (G4VisAttributes::GetInvisible());
//always return the physical World
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysListEmStandard.cc 96602 2016-04-25 13:28:48Z gcosmo $
// $Id: PhysListEmStandard.cc 100660 2016-10-31 10:19:31Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -90,9 +90,10 @@ void PhysListEmStandard::ConstructProcess()
// Add standard EM Processes
//
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
+5 -4
View File
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: PhysicsList.cc 83010 2014-07-24 14:53:07Z gcosmo $
// $Id: PhysicsList.cc 100660 2016-10-31 10:19:31Z gcosmo $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -113,9 +113,10 @@ void PhysicsList::ConstructProcess()
G4Decay* fDecayProcess = new G4Decay();
G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
if (fDecayProcess->IsApplicable(*particle))
ph ->RegisterProcess(fDecayProcess, particle);
}
+11 -5
View File
@@ -27,8 +27,8 @@
// GEANT 4 - Brachytherapy example
// --------------------------------------------------------------
//
// Code developed by:
// S. Agostinelli, F. Foppiano, S. Garelli , M. Tropeano, S.Guatelli
// Code developed currently by:
// S.Guatelli & D. Cutajar
//
// *******************************
@@ -46,7 +46,7 @@
#include "G4UImanager.hh"
#include "G4UIExecutive.hh"
#include "BrachyFactoryIr.hh"
#include "BrachyActionInitialization.hh"
#ifdef ANALYSIS_USE
@@ -79,18 +79,24 @@
int main(int argc ,char ** argv)
{
#ifdef G4MULTITHREADED
G4MTRunManager* pRunManager = new G4MTRunManager;
pRunManager->SetNumberOfThreads(4); // Is equal to 2 by default
#else
G4RunManager* pRunManager = new G4RunManager;
#endif
G4int seed = 0;
G4Random::setTheSeed(seed);
G4cout << "***********************" << G4endl;
G4cout << "*** " << seed << " ***" << G4endl;
G4cout << "***********************" << G4endl;
// Access to the Scoring Manager pointer
G4ScoringManager* scoringManager = G4ScoringManager::GetScoringManager();
// Overwrite the default output file with user-defined one
scoringManager->SetScoreWriter(new BrachyUserScoreWriter());
@@ -59,9 +59,10 @@ target_link_libraries(Brachy ${Geant4_LIBRARIES})
#
set(brachy_SCRIPTS
IridiumSourceMacro.mac IodiumSourceMacro.mac LeipzigSourceMacro.mac VisualisationMacro.mac
IodineSourceMacro.mac LeipzigSourceMacro.mac VisualisationMacro.mac
macro.C iridium_source_primary.mac iodine_source_primary.mac iridium_source_leipzig_primary.mac
plot_primary.C iridium_decay.mac iodine_decay.mac
plot_primary.C iodine_decay.mac FlexiSourceMacro.mac
TG43_relative_dose.C TG186SourceMacro.mac TG186_iridium_decay.mac
)
foreach(_script ${brachy_SCRIPTS})
@@ -0,0 +1,27 @@
/control/verbose 1
/tracking/verbose 0
/run/verbose 0
/event/verbose 0
#### Define the geometry of the Flexi source
/source/switch Flexi
###### Generation of primary field
#### Generate gamma deriving from radioactive decay
/control/execute iridium_source_primary.mac
# Scoring mesh is used to calculate
# the energy deposition in the phantom
/score/create/boxMesh boxMesh_4
#
# the voxels are 0.25 mm wide.
/score/mesh/boxSize 10.0125 10.0125 0.0125 cm
/score/mesh/nBin 801 801 1
/score/quantity/energyDeposit eDep
#
/score/close
#
/score/list
/run/beamOn 5000
#
# Dump scores to a file
#
/score/dumpQuantityToFile boxMesh_4 eDep EnergyDeposition_Flexi.out
#
+10 -1
View File
@@ -1,5 +1,5 @@
-------------------------------------------------------------------
$Id: History 88769 2015-03-09 12:35:11Z gcosmo $
$Id: History 100821 2016-11-02 15:21:34Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -8,6 +8,15 @@ $Id: History 88769 2015-03-09 12:35:11Z gcosmo $
Category History file
---------------------
1.11.2016 - S. Guatelli; brachy-V10-02-02
Added comparison to reference data for the Flexisource
Added Flexisurce and TG186 reference source; added method to calculate relative dose rate to compare to reference data
06.09.2016 - M. Asai; brachy-V10-02-01
04.09.2016 - M. Asai; brachy-V10-02-00
Modify std::map<G4int, G4double*> to
std::map<G4int, G4StatDouble*>
06.03.2015 - A. Dotti; brachy-V10-01-00
Removing unnecessary instantiation of GPS in master
@@ -0,0 +1,34 @@
/control/verbose 1
/tracking/verbose 0
/run/verbose 0
/event/verbose 0
#### Define the geometry of the I-125 source
/source/switch Iodine
###### Generation of primary field
#### Generate gamma deriving from radioactive decay
/control/execute iodine_source_primary.mac
#### ... or generate radioactive decay of iodine
#/control/execute iodine_decay.mac
#
#
# Scoring mesh is used to calculate
# the energy deposition in the phantom
/score/create/boxMesh boxMesh_2
#
#
# the voxels are 0.25 mm wide.
/score/mesh/boxSize 10.0125 10.0125 0.0125 cm
/score/mesh/nBin 801 801 1
#
#
/score/quantity/energyDeposit eDep
#
/score/close
#
/score/list
/run/beamOn 1000
#
# Dump scores to a file
#
/score/dumpQuantityToFile boxMesh_2 eDep EnergyDeposition_iodine.out
#
@@ -8,15 +8,17 @@
# the energy deposition in the phantom
/score/create/boxMesh boxMesh_3
#
/score/mesh/boxSize 15. 15. 15. cm
/score/mesh/nBin 300 300 300
# the voxels are 0.25 mm wide.
/score/mesh/boxSize 10.0125 10.0125 0.0125 cm
/score/mesh/nBin 801 801 1
#
#
/score/quantity/energyDeposit eDep
#
/score/close
#
/score/list
/run/beamOn 100
/run/beamOn 1000
#
# Dump scores to a file
#
+92 -37
View File
@@ -7,48 +7,59 @@
---------------------
The brachytherapy example is currently maintained and upgraded by Susanna Guatelli (1), with the support of
Pablo Cirrone(2), Luciano Pandola (3), Dean Cutajar (1) and Stuart P. George (1)
The brachytherapy example is currently maintained and upgraded by Susanna Guatelli (1) and Dean Cutajar (1), with the support of
Luciano Pandola (2)
1. Centre For Medical Radiation Physics (CMRP), University of Wollongong, NSW, Australia.
2. LNS, INFN, Catania, Italy.
3. LNGS, INFN, Gran Sasso, Italy
------------------------------------------------------------------------
Contact: susanna@uow.edu.au
deanc@uow.edu.au
geant4-advanced-examples@cern.ch
------------------------------------------------------------------------
List of authors:
S. Agostinelli, F. Foppiano, S. Garelli, S. Guatelli, M. G. Pia, M. Tropeano
List of past co-authors:
S. George, S. Agostinelli, F. Foppiano, S. Garelli, M. G. Pia, M. Tropeano
-----------------------------------------------------------------
----> Introduction.
Brachytherapy example simulates the energy deposit in a water phantom, produced by:
1) Iridium source (endocavitary brachytherapy).
2) Iodium source (interstitial brachytherapy).
3) Leipzig Applicator (superficial brachytherapy).
1) Iridium sources (Flexisource and TG186).
2) Iodine source (Bebig Isoseed I-125).
3) Leipzig Applicator with an iridium source (model from the Istituto Tumori, Genova, Italy).
The Flexisource, an Ir-192 source manufactured by Nucletron, an Elekta company, is a source commonly used for high dose rate brachytherapy treatments.
The geometry of the Flexisource was adapted from D. Granero, J. Pérez-Calatayud, E. Casal, et al,
"A dosimetric study on the Ir-192 high dose rate Flexisource", Med. Phys. 33 (12), 2006, 4578-82.
The TG186 source is a generic Ir-192 source created to provide developers of model based dose engines with a method of validating new dose calculation techniques.
Details of the TG186 source may be obtained from Facundo Ballester, Åsa Carlsson Tedgren, Domingo Granero, et al,
"A generic high-dose rate 192Ir brachytherapy source for evaluation of model-based dose calculations beyond the TG-43 formalism", Med. Phys. 42, 2015, 3048-62
In particular in this example it is shown how to:
- model a radioactive source in terms of radiation field and geometry
- model the radiation field with the General Particle Source
- model the radiation field with the General Particle Source with two alternative methods:
1) Define the energy spectrum of photons exiting the radioactive core
2) Modelling the Radioactive decay
- calculate the energy deposition in a phantom by means of the G4 scoring mesh
- define the physics by means of a Geant4 Modular Physics List
- switch different physics approaches to model electromagnetic physics
- save results in an analysis ROOT file using the Geant4 analysis component.
- save results in an analysis ROOT file
- calculate the dose rate distribution along the main axis of the source
- compare the calculated dose rate distribution to reference data. In the case of the example, the dose rate
distribution of a Flexisource is compared to D. Granero, J. Pérez-Calatayud, E. Casal, et al,
"A dosimetric study on the Ir-192 high dose rate Flexisource", Med. Phys. 33 (12), 2006, 4578-82.
The example can be executed in multithreading mode
The example can be executed in multithreading mode.
------------------------------------------------------------------------
----> 1.Experimental set-up.
The default source is an Ir-131 source set in the center of the phantom.
The phantom is a box with size 30 cm. The phantom is set in the World volume filled
with air.
The default source is a Ir-192 Flexisource set in the center of a water phantom with size 30 cm.
The phantom is set in the World volume filled with air.
The primary radiation field is defined by means of the GeneralParticleSource
-------------------------------------------------------------------------
@@ -64,13 +75,11 @@ cmake -DWITH_ANALYSIS_USE=ON -DGeant4_DIR=/path/to/Geant4_installation /path/to/
The installation of ROOT is required (http://root.cern.ch/drupal/).
macro.C and plot_primary.C are provided to plot the results of the simulation, contained
in the brachytherapy.root file.
------------------------------------------------------------------------
----> 3.How to run the example.
- Batch mode:
$G4WORKDIR/bin/Linux-g++/Brachy FlexiSourceMacro.mac
$G4WORKDIR/bin/Linux-g++/Brachy IridiumSourceMacro.mac
$G4WORKDIR/bin/Linux-g++/Brachy IodiumSourceMacro.mac
$G4WORKDIR/bin/Linux-g++/Brachy LeipzigSourceMacro.mac
@@ -93,37 +102,83 @@ This radiation field is defined in:
iodine_source_primary.mac and iridium_source_primary.mac
2) Model the radioactive Decay. The primary particle is the radionuclide.
This option is modelled in iodine_decay.mac and iridium_decay.mac
This option is modelled in iodine_decay.mac and TG186_iridium_decay.mac
The GPS macros are executed in IridiumSourceMacro.mac, IodiumSourceMacro.mac, LeipzigSourceMacro.mac
------------------------------------------------------------------------
----> 5. Scoring mesh
The GPS macros are executed in VisualisationMacro.mac 9default, FlexiSourceMacro.mac, IodineSourceMacro.mac, LeipzigSourceMacro.mac
- The Flexisource is the default source of the example.
- In VisualisationMacro.mac the source is the default one. iridium_source_primary.mac is executed to define the radiation field emerging from the iridium core.
- In FlexiSourceMacro.mac the Flexi ir source geometry is selected via interactive command. The radiation field is defined in the iridium_source_primary.mac.
- In IodineSourceMacro.mac, the Bebig Isoseed I-125 brachytherapy source is modelled. The radiation field is modelled in terms of emitted photons in iodine_source_primary.mac.
Alternatively the radioactive decay of I can be modelled using teh macro iodine_decay.mac.
- In LeipzigSourceMacro.mac, A Leipzig applicator (design provided by Istituto Tumori, Genova) is modelled. The iridium_source_leipzig_primary.mac defines the radiation field of the Ir core.
- The TG186SourceMacro.mac models the reference bIr brachytherapy source. The radiation field can be either defined with the iridium_source_primary.mac (spectrum of the emitted photons) or with TG186_iridium_decay.mac (model of the Ir decay).
--------------------------------------------------------------------------------
----> 5. Physics List
The electromagnetic Livermore Low Energy physics is active as well as the radioactive decay.
The cut is 0.05 mm.
The scoring mesh is used to calculate the energy deposition in the voxels of the phantom,
integrated over the whole run. The scoring mesh is defined in the input macro file (see IridiumSourceMacro.mac for example).
The user can change the default output format of the scoring in the class BrachyUserScoreWriter.
------------------------------------------------------------------------
----> 6. Simulation output
----> 6. Scoring mesh
The scoring mesh is used to calculate the energy deposition in the plane containing the source (z=0 plane)
integrated over the whole run. The scoring mesh is defined in the input macro files.
T
he default output format of the scoring is changed in the class BrachyUserScoreWriter.
The scoring mesh is fixed with a size of 20.025 cm along x and y. The bin size is 0.25 mm along x, y and z.
When running in interactive mode there is no scoring mesh.The user has to add it with appropriate UI
------------------------------------------------------------------------
----> 7. Simulation output
The output is:
- ASCII file EnergyDeposition.out, with xx (mm), yy(mm), zz(mm), and energy deposition (keV), in the phantom.
To limit the use of memory, the energy deposition is scored only in the plane containing the source, however this can be changed by the user.
By default:
EnergyDeposition_iodine.out contains the Edep when Iodine source is selected
EnergyDeposition_iridium.out contains the Edep when Iridium source is selected
EnergyDeposition_Leipzig.out contains the Edep when the Iridium source with Leipzig applicator is selected
EnergyDeposition_Flexi.out contains the Edep when the Flexi source is selected.
EnergyDeposition_iodine.out contains the Edep when Iodine source is selected.
EnergyDeposition_TG186.out contains the Edep when the TG186 source is selected.
EnergyDeposition_Leipzig.out contains the Edep when the Iridium source with Leipzig applicator is selected.
- brachytherapy.root, containing
- an ntuple with the 3D energy deposition in the phantom. The macro macro.C is provided as example
- a 2D histogram with the energy deposition in the phantom. The macro macro.C is provided as example
to open brachytherapy.root in ROOT interactive session and to plot the results of the simulation.
The ROOT file will be created if the example is built with the WITH_ANALYSIS_USE=ON option (see section 2).
- 1D histogram withe the plot of energy spectrum of gamma emitted by the radioactive decay when the Ir or I decay is modelled
(see section 4). plot_primary.C is provided as example to open brachytherapy.root and to plot the energy spectra
- 1D histogram withe the plot of energy spectrum of gamma emitted by the radioactive decay when gamma are generated directly as
primary particles or whenthey derive from Radioactive Decay(see section 4).
plot_primary.C is provided as example to open brachytherapy.root and to plot the energy spectra
-------------------------------------------------------------------------------
----> 7.Visualisation
----> 8.Visualisation
a macro is provided ad example of visualisation: VisualisationMacro.mac
A macro is provided ad example of visualisation: VisualisationMacro.mac.
-------------------------------------------------------------------------------
-----> 9. Comparison to reference data
The ROOT macros macro.C and plot_primary.C are provided to plot the results of the simulation, contained
in the brachytherapy.root file.
The ROOT macro TG43_relative_dose.C has brachytherapy.root as input file. It calculates the dose rate distribution along the main axis of
the brachytherapy source. The dose rate is normalised to 1 at 1 cm distance from the centre.
The output file is geant4_dose.txt with two columns:
distance from the centre (cm) dose rate distribution
The user can then compare the dose rate distribution calculated with the example to reference data.
Directory "comparison":
As an example, the dose rate distribution calculated with the Flexisource is compared to reference data from D. Granero, J. Pérez-Calatayud, E. Casal, et al,
"A dosimetric study on the Ir-192 high dose rate Flexisource", Med. Phys. 33 (12), 2006, 4578-82.
The compare.C is a ROOT macro which reads the dose rate distribution calculated with the Flexisource (geant4.txt generated with the advanced example and 280 M histories ) against the reference.
The directory "comparison" contains:
- the reference data, granero.txt
- the data obtained in Geant4.10.3: geant4.txt, 280 M events. geant4.txt is obtained when executing the macro TG43_relative_dose.C
- comparison.C - macro to read geant4.txt and granero.txt and compare them in the same plot
@@ -0,0 +1,38 @@
# The iridium source is the default option
/control/verbose 1
/tracking/verbose 0
/run/verbose 0
/event/verbose 0
#
# Scoring mesh is used to calculate
# the energy deposition in the phantom
/score/create/boxMesh boxMesh_1
#
# the voxels are 0.25 mm wide.
/score/mesh/boxSize 10.0125 10.0125 0.0125 cm
/score/mesh/nBin 801 801 1
/score/quantity/energyDeposit eDep
#
/score/close
#
/score/list
##### Primary radiation Field
/control/execute iridium_source_primary.mac
# Alternatively model the radioactive decay ...
#/control/execute TG186_iridium_decay.mac
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/radius 0.30 mm
/gps/pos/halfz 1.75 mm
/gps/pos/centre 0. 0. 0. mm
/gps/ang/type iso
################################################
/run/beamOn 100
#
# Dump scores to a file
#
/score/dumpQuantityToFile boxMesh_1 eDep EnergyDeposition_TG186.out
#
@@ -0,0 +1,12 @@
# Definition of the radiation field
# by means of the General Particle Source
# http://reat.space.qinetiq.com/gps/
/gps/particle ion
/gps/ion 77 192 77 0.
/gps/energy 0. keV
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/radius 0.30 mm
/gps/pos/halfz 1.75 mm
/gps/pos/centre 0. 0. 0. mm
@@ -0,0 +1,83 @@
{
// Create output file geant4_dose.txt with the dose rate distribution, calculated
// with the simulation results containted in brachytherapy.root
gROOT -> Reset();
TFile f("brachytherapy.root");
Double_t Seed_length = 0.35; //seed length in cm
Double_t EnergyMap[401]; //2D map of total energy in "radial distance (mm)" and "angle (5 degrees)"
Int_t Voxels[401]; //the number of voxels used to provide dose to each element of the energy map
Double_t normDose[401]; //Energy map divided by voxels used to make cell, normalised to energy deposition at 1cm, 90 degrees
Double_t GeomFunction[401]; //Geometry Function, normalised to the geometry function at the reference point
Double_t GeometryFunctionZero; //Geometry function at reference point, 1cm and 90 degrees
Double_t beta; //beta angle for Geometry Function calculation
Double_t R; //radial distance in cm
Double_t K; //polar angle in radians
Double_t Radial[401]; //radial dose function
Double_t radius; //radius (mm)
Int_t radInt; //nearest integer of radius (mm)
Int_t numberOfBins=801;
for (int i=0; i <401; i++)
{
EnergyMap[i]=0.;
Voxels[i]=0.;
}
//Build Energy Deposition Map
for (int k=0; k< numberOfBins; k++)
{
for (int m=0; m< numberOfBins; m++)
{
Double_t xx_histo = h20.GetXaxis()->GetBinCenter(k);
Double_t yy_histo = h20.GetYaxis()->GetBinCenter(m);
Double_t edep_histo=h20.GetBinContent(k, m);
radius = sqrt(xx_histo*xx_histo+yy_histo*yy_histo);
// if ((edep_histo!=0) && radius < 12. && radius > 9) std::cout << "histo: " << xx_histo << ", " << yy_histo
// << ", radius: " << radius <<", edep: "<< edep_histo << std::endl;
if (radius != 0){
radInt = TMath::Nint(4*radius);
if ((radInt>0)&&(radInt<=400))
{
EnergyMap[radInt]+= edep_histo;
Voxels[radInt]+= 1;
// if (radius < 12. && radius > 9 && edep_histo!=0)std::cout<< "Radius: " << radius << ", radInt:"<<radInt << ", EnergyMap: "<< EnergyMap[radInt]<< ", voxels: " << Voxels[radInt]<< std::endl;
}
}
}}
std::cout << "Energy Map Complete" << std::endl;
//Create Normalised Dose Map
std::cout << "The energy deposition at the reference point is " << EnergyMap[40] << std::endl;
Double_t tempNormValue = EnergyMap[40]/Voxels[40];
//value at 1cm, 90 degrees, the normalisation point
std::cout << "Dose rate ditribution (distances in cm)" << std::endl;
ofstream myfile;
myfile.open ("geant4_dose.txt");
for (int i=0; i<=400; i++)
{
R = double(i)/40; //distance in CM!!!
if (Voxels[i]>0) normDose[i] = EnergyMap[i]/Voxels[i]/tempNormValue;
else normDose[i] = 0;
if (R> 0.05)
{
cout << R << " " << normDose[i] << endl;
myfile << R << " " << normDose[i] << "\n";
}
}
myfile.close();
}
@@ -1,5 +1,5 @@
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
/vis/open OGLIX 600x600-0+0
#
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
@@ -66,6 +66,6 @@
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
/control/execute IridiumSourceMacro.mac
#/control/execute IodiumSourceMacro.mac
#/control/execute LeipzigSourceMacro.mac
# Flexi Ir source is the default
/control/execute iridium_source_primary.mac
+316 -239
View File
@@ -4,15 +4,21 @@
############################################
*************************************************************
Geant4 version Name: geant4-10-03-beta-01 (30-June-2016)
Geant4 version Name: geant4-10-03 (9-December-2016)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
*************************************************************
Checking overlaps for volume IridiumCapsulePhys ... OK!
Checking overlaps for volume CapsuleTipIridiumPhys ... OK!
Checking overlaps for volume IridiumCorePhys ... OK!
***********************
*** 0 ***
***********************
Checking overlaps for volume phys_steel_shell ... OK!
Checking overlaps for volume phys_air_gap ... OK!
Checking overlaps for volume phys_End1_steel_shell ... OK!
Checking overlaps for volume phys_End2_steel_shell ... OK!
Checking overlaps for volume phys_cable ... OK!
Checking overlaps for volume phys_iridium_core ... OK!
G4PhysicsListHelper::AddTransportation()--- G4CoupledTransportation is used
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
@@ -45,14 +51,14 @@ Registered model factories:
drawByCharge
drawByOriginVolume
drawByParticleID
drawByTouchedVolume
drawByEncounteredVolume
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
touchedVolumeFilter
encounteredVolumeFilter
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
@@ -66,167 +72,277 @@ Available colours:
/tracking/verbose 0
/run/verbose 0
/event/verbose 0
/score/create/boxMesh boxMesh_1
/score/mesh/boxSize 15. 15. 15. cm
/score/mesh/nBin 300 300 300
/source/switch Flexi
Now the source is Flexi
/run/geometryModified
Old Source is deleted ...
Checking overlaps for volume phys_steel_shell ... OK!
Checking overlaps for volume phys_air_gap ... OK!
Checking overlaps for volume phys_End1_steel_shell ... OK!
Checking overlaps for volume phys_End2_steel_shell ... OK!
Checking overlaps for volume phys_cable ... OK!
Checking overlaps for volume phys_iridium_core ... OK!
... New source is created ...
/run/geometryModified
... Geometry is notified .... THAT'S IT!!!!!
/control/execute iridium_source_primary.mac
/gps/ene/type Arb
/gps/hist/type arb
/gps/hist/point 0.0614 1e-8
/gps/hist/point 0.0615 0.412
/gps/hist/point 0.0616 1e-8
/gps/hist/point 0.0629 1e-8
/gps/hist/point 0.063 0.7039
/gps/hist/point 0.0631 1e-8
/gps/hist/point 0.0650 1e-8
/gps/hist/point 0.0651 1.1309
/gps/hist/point 0.0652 1e-8
/gps/hist/point 0.0667 1e-8
/gps/hist/point 0.0668 1.9178
/gps/hist/point 0.0669 1e-8
/gps/hist/point 0.0710 1e-8
/gps/hist/point 0.0711 0.0827
/gps/hist/point 0.0712 1e-8
/gps/hist/point 0.0713 1e-8
/gps/hist/point 0.0714 0.1600
/gps/hist/point 0.0715 1e-8
/gps/hist/point 0.0733 1e-8
/gps/hist/point 0.0734 0.0560
/gps/hist/point 0.0735 1e-8
/gps/hist/point 0.0753 1e-8
/gps/hist/point 0.0754 0.2292
/gps/hist/point 0.0755 1e-8
/gps/hist/point 0.0756 1e-8
/gps/hist/point 0.0757 0.4408
/gps/hist/point 0.0758 1e-8
/gps/hist/point 0.0777 1e-8
/gps/hist/point 0.0778 0.1570
/gps/hist/point 0.0779 1e-8
/gps/hist/point 0.1103 1e-8
/gps/hist/point 0.1104 0.0042
/gps/hist/point 0.1105 1e-8
/gps/hist/point 0.1362 1e-8
/gps/hist/point 0.1363 0.0860
/gps/hist/point 0.1364 1e-8
/gps/hist/point 0.1769 1e-8
/gps/hist/point 0.1770 0.0018
/gps/hist/point 0.1771 1e-8
/gps/hist/point 0.2012 1e-8
/gps/hist/point 0.2013 0.1624
/gps/hist/point 0.2014 1e-8
/gps/hist/point 0.2057 1e-8
/gps/hist/point 0.2058 1.1468
/gps/hist/point 0.2059 1e-8
/gps/hist/point 0.2802 1e-8
/gps/hist/point 0.2803 0.0039
/gps/hist/point 0.2804 1e-8
/gps/hist/point 0.2832 1e-8
/gps/hist/point 0.2833 0.0913
/gps/hist/point 0.2834 1e-8
/gps/hist/point 0.2959 1e-8
/gps/hist/point 0.2960 12.3498
/gps/hist/point 0.2961 1e-8
/gps/hist/point 0.3084 1e-8
/gps/hist/point 0.3085 12.7626
/gps/hist/point 0.3086 1e-8
/gps/hist/point 0.3164 1e-8
/gps/hist/point 0.3165 35.5660
/gps/hist/point 0.3166 1e-8
/gps/hist/point 0.3291 1e-8
/gps/hist/point 0.3292 0.0060
/gps/hist/point 0.3293 1e-8
/gps/hist/point 0.3744 1e-8
/gps/hist/point 0.3745 0.2493
/gps/hist/point 0.3746 1e-8
/gps/hist/point 0.4164 1e-8
/gps/hist/point 0.4165 0.2877
/gps/hist/point 0.4166 1e-8
/gps/hist/point 0.4204 1e-8
/gps/hist/point 0.4205 0.0237
/gps/hist/point 0.4206 1e-8
/gps/hist/point 0.4680 1e-8
/gps/hist/point 0.4681 20.5587
/gps/hist/point 0.4682 1e-8
/gps/hist/point 0.4845 1e-8
/gps/hist/point 0.4846 1.0942
/gps/hist/point 0.4847 1e-8
/gps/hist/point 0.4852 1e-8
/gps/hist/point 0.4853 0.0010
/gps/hist/point 0.4854 1e-8
/gps/hist/point 0.4890 1e-8
/gps/hist/point 0.4891 0.1504
/gps/hist/point 0.4892 1e-8
/gps/hist/point 0.5885 1e-8
/gps/hist/point 0.5886 1.9423
/gps/hist/point 0.5887 1e-8
/gps/hist/point 0.5934 1e-8
/gps/hist/point 0.5935 0.0181
/gps/hist/point 0.5936 1e-8
/gps/hist/point 0.5993 1e-8
/gps/hist/point 0.5994 0.0017
/gps/hist/point 0.5995 1e-8
/gps/hist/point 0.6043 1e-8
/gps/hist/point 0.6044 3.5361
/gps/hist/point 0.6045 1e-8
/gps/hist/point 0.6124 1e-8
/gps/hist/point 0.6125 2.2962
/gps/hist/point 0.6126 1e-8
/gps/hist/point 0.7038 1e-8
/gps/hist/point 0.7039 0.0018
/gps/hist/point 0.7040 1e-8
/gps/hist/point 0.7657 1e-8
/gps/hist/point 0.7658 0.0006
/gps/hist/point 0.7659 1e-8
/gps/hist/point 0.8844 1e-8
/gps/hist/point 0.8845 0.1251
/gps/hist/point 0.8846 1e-8
/gps/hist/point 1.0614 1e-8
/gps/hist/point 1.0615 0.0228
/gps/hist/point 1.0616 1e-8
/gps/hist/point 1.0898 1e-8
/gps/hist/point 1.0899 0.0005
/gps/hist/point 1.0890 1e-8
/gps/hist/point 1.3781 1e-8
/gps/hist/point 1.3782 0.0005
/gps/hist/point 1.3783 1e-8
/gps/hist/inter Lin
/gps/particle gamma
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/radius 0.30 mm
/gps/pos/halfz 1.75 mm
/gps/pos/centre 0. 0. 0. mm
/gps/ang/type iso
/score/create/boxMesh boxMesh_4
/score/mesh/boxSize 10.0125 10.0125 0.0125 cm
/score/mesh/nBin 801 801 1
.... G4ScoringMessenger::MeshBinCommand - G4ScoringBox
/score/quantity/energyDeposit eDep
/score/close
/score/list
G4ScoringManager has 1 scoring meshes.
G4ScoringBox : boxMesh_1 --- Shape: Box mesh
Size (x, y, z): (15, 15, 15) [cm]
# of segments: (300, 300, 300)
G4ScoringBox : boxMesh_4 --- Shape: Box mesh
Size (x, y, z): (10.0125, 10.0125, 0.0125) [cm]
# of segments: (801, 801, 1)
displacement: (0, 0, 0) [cm]
registered primitve scorers :
0 eDep
/control/execute iridium_source_primary.mac
/gps/particle gamma
/gps/energy 356.0 keV
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/radius 0.30 mm
/gps/pos/halfz 1.75 mm
/gps/pos/centre 0. 0. -1.975 mm
/gps/ang/type iso
/run/beamOn 1000
/run/beamOn 5000
/run/geometryModified
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 1 0
### === Auger cascade flag: 0
### === Ignore cuts flag: 0
### === Auger cascade flag: 1
### === Ignore cuts flag: 1
phot: for gamma SubType= 12 BuildTable= 0
LambdaPrime table from 200 keV to 10 TeV in 154 bins
LambdaPrime table from 200 keV to 1 TeV in 134 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 10 TeV AngularGenSauterGavrila FluoActive
LivermorePhElectric : Emin= 0 eV Emax= 1 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
LambdaPrime table from 1 MeV to 1 TeV in 120 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LowEPComptonModel : Emin= 0 eV Emax= 20 MeV FluoActive
KleinNishina : Emin= 20 MeV Emax= 10 TeV FluoActive
LivermoreCompton : Emin= 0 eV Emax= 1 TeV FluoActive
conv: for gamma SubType= 14 BuildTable= 1
Lambda table from 1.022 MeV to 10 TeV, 20 bins per decade, spline: 1
Lambda table from 1.022 MeV to 1 TeV, 22 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
LivermoreConversion : Emin= 0 eV Emax= 80 GeV
BetheHeitlerLPM : Emin= 80 GeV Emax= 1 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
LambdaPrime table from 100 keV to 1 TeV in 140 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 10 TeV CullenGenerator
LivermoreRayleigh : Emin= 0 eV Emax= 1 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
WentzelVIUni : Emin= 100 MeV Emax= 1 TeV Table with 80 bins Emin= 100 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
ePairProd: for e- 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 21x1001 from 0.1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
LowEnBrem : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 1 TeV DipBustGen
CoulombScat: for e-, integral: 1 SubType= 1 BuildTable= 1
Lambda table from 100 MeV to 10 TeV, 20 bins per decade, spline: 1
Lambda table from 100 MeV to 1 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
eCoulombScattering : Emin= 100 MeV Emax= 1 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
WentzelVIUni : Emin= 100 MeV Emax= 1 TeV Table with 80 bins Emin= 100 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
MollerBhabha : Emin= 0 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
ePairProd: for e+ 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 21x1001 from 0.1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
eBremSB : Emin= 0 eV Emax= 1 GeV DipBustGen
eBremLPM : Emin= 1 GeV Emax= 1 TeV DipBustGen
annihil: for e+, integral: 1 SubType= 5 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 10 TeV
eplus2gg : Emin= 0 eV Emax= 1 TeV
CoulombScat: for e+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from 100 MeV to 10 TeV, 20 bins per decade, spline: 1
Lambda table from 100 MeV to 1 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
eCoulombScattering : Emin= 100 MeV Emax= 1 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 10 TeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 9x1001 from 7.50618 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 TeV
nuclearStopping: for proton SubType= 8 BuildTable= 0
===== EM models for the G4Region DefaultRegionForTheWorld ======
@@ -235,314 +351,275 @@ nuclearStopping: for proton SubType= 8 BuildTable= 0
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
UrbanMsc : Emin= 0 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
ParamICRU73 : Emin= 0 eV Emax= 1 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
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
BetheBloch : Emin= 7.9452 MeV Emax= 1 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
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 10 TeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 9x1001 from 7.50618 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 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
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
BetheBloch : Emin= 1.05231 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 10x1001 from 3.94942 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
BetheBloch : Emin= 1.05231 MeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 10x1001 from 3.94942 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
WentzelVIUni : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
MuBetheBloch : Emin= 1 GeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
MuBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 13x1001 from 1 GeV to 1 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
muPairProd : Emin= 0 eV Emax= 1 TeV
CoulombScat: for mu+, integral: 1 SubType= 1 BuildTable= 1
Lambda table from threshold to 10 TeV, 20 bins per decade, spline: 1
Lambda table from threshold to 1 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
eCoulombScattering : Emin= 0 eV Emax= 1 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
WentzelVIUni : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
MuBetheBloch : Emin= 1 GeV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 10 TeV
MuBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 13x1001 from 1 GeV to 1 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
muPairProd : Emin= 0 eV Emax= 1 TeV
CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
Used Lambda table of mu+
Lambda table from threshold to 1 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
eCoulombScattering : Emin= 0 eV Emax= 1 TeV
msc: for pi+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
BetheBloch : Emin= 297.505 keV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 12x1001 from 1.11656 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
UrbanMsc : Emin= 0 eV Emax= 1 TeV Table with 200 bins Emin= 100 eV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 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
BetheBloch : Emin= 297.505 keV Emax= 1 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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 10 TeV
hBrem : Emin= 0 eV Emax= 1 TeV
===== Limit on energy threshold has been applied
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
dE/dx and range tables from 100 eV to 1 TeV in 200 bins
Lambda tables from threshold to 1 TeV, 20 bins per decade, spline: 1
Sampling table 12x1001 from 1.11656 GeV to 1 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
hPairProd : Emin= 0 eV Emax= 1 TeV
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes
Material : Air
Range cuts : gamma 100 um e- 100 um e+ 100 um proton 100 um
Energy thresholds : gamma 250 eV e- 250 eV e+ 250 eV proton 10 keV
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
Energy thresholds : gamma 250 eV e- 250 eV e+ 250 eV proton 5 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : Yes
Material : Water
Range cuts : gamma 100 um e- 100 um e+ 100 um proton 100 um
Energy thresholds : gamma 1.10692 keV e- 84.8775 keV e+ 84.2607 keV proton 10 keV
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
Energy thresholds : gamma 250 eV e- 57.2461 keV e+ 56.4171 keV proton 5 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 2 used in the geometry : Yes
Material : Stainless steel
Range cuts : gamma 100 um e- 100 um e+ 100 um proton 100 um
Energy thresholds : gamma 6.28038 keV e- 237.363 keV e+ 232.226 keV proton 10 keV
Material : Stainless steel 304
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
Energy thresholds : gamma 4.39316 keV e- 154.358 keV e+ 151.017 keV proton 5 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 3 used in the geometry : Yes
Material : Iridium
Range cuts : gamma 100 um e- 100 um e+ 100 um proton 100 um
Energy thresholds : gamma 42.7607 keV e- 386.935 keV e+ 373.078 keV proton 10 keV
Range cuts : gamma 50 um e- 50 um e+ 50 um proton 50 um
Energy thresholds : gamma 26.8116 keV e- 240.851 keV e+ 233.926 keV proton 5 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
====================================================================
-------- WWWW ------- G4Exception-START -------- WWWW -------
*** G4Exception : de0001
issued by : G4AtomicTransitionManager::Shell()
No de-excitation for Z= 77 shellIndex= 21>= numberOfShells= 21 AtomicShell not found
*** This is just a warning message. ***
-------- WWWW -------- G4Exception-END --------- WWWW -------
/score/dumpQuantityToFile boxMesh_1 eDep EnergyDeposition_iridium.out
/score/dumpQuantityToFile boxMesh_4 eDep EnergyDeposition_Flexi.out
Graphics systems deleted.
Visualization Manager deleting...
@@ -0,0 +1,74 @@
{
// Read reference data in granero.txt
FILE *fg1=fopen("granero.txt", "r");
Int_t n_points_granero =13;
Float_t x1[n_points_granero], y1[n_points_granero];
Float_t x, y;
Int_t ncols_granero;
Int_t nlines1 =0;
while(1)
{
ncols_granero = fscanf(fg1,"%f %f",&x, &y);
if (ncols_granero<0) break;
// std::cout << "x " << x << std::endl;
x1[nlines1]=x;
y1[nlines1]=y;
nlines1++;
}
fclose(fg1);
// Read the results of the brachytherapy advanced example
// FlexiSorceMacro.mac with 280 M events
FILE *fg2=fopen("geant4.txt", "r");
Int_t n_points_geant4 =398;
Float_t x2[n_points_geant4], y2[n_points_geant4];
Int_t ncols_geant4;
Int_t nlines2 =0;
while(1)
{
ncols_geant4 = fscanf(fg2,"%f %f",&x, &y);
if (ncols_geant4<0) break;
// std::cout << "x " << x << std::endl;
x2[nlines2]=x;
y2[nlines2]=y;
nlines2++;
}
fclose(fg2);
TGraph *gr1 = new TGraph (nlines1, x1, y1);
TGraph *gr2 = new TGraph (nlines2, x2, y2);
TCanvas *c1 = new TCanvas("c1","Graph Draw Options",
200,10,600,400);
gPad->SetLogy();
// draw the graph with axis, continuous line, and put
// a * at each point
gr1->SetTitle("Dose rate distribution");
gr1-> GetXaxis()->SetTitle("Distance from the centre (cm)");
gr1->GetYaxis()->SetTitle("Normalised dose rate distribution");
gr1->SetLineWidth(1);
gr1->SetMarkerColor(1);
gr1->SetMarkerStyle(20);
gr1->Draw("AP");
gr2->SetLineWidth(1);
gr2->SetMarkerColor(2);
gr2->SetMarkerStyle(21);
gr2->SetMarkerSize(0.5);
gr2->SetLineColor(2);
gr2->Draw("CP");
TLegend *leg = new TLegend(0.3, 0.5, 0.6, 0.8);
leg->SetFillColor(0);
leg->AddEntry(gr1, "Reference data", "lp");
leg->AddEntry(gr2, "Geant4 - 280 M events", "lp");
leg->Draw();
}
@@ -0,0 +1,399 @@
0.075 92.5482
0.1 61.081
0.125 42.2201
0.15 32.382
0.175 25.6088
0.2 20.5267
0.225 16.6291
0.25 13.7179
0.275 11.7002
0.3 10.1013
0.325 8.73055
0.35 7.58775
0.375 6.71141
0.4 5.89945
0.425 5.1757
0.45 4.60221
0.475 4.19173
0.5 3.84259
0.525 3.52283
0.55 3.20597
0.575 2.93226
0.6 2.70921
0.625 2.47644
0.65 2.31611
0.675 2.19369
0.7 2.00825
0.725 1.86949
0.75 1.75933
0.775 1.633
0.8 1.54987
0.825 1.48124
0.85 1.38395
0.875 1.31205
0.9 1.226
0.925 1.13944
0.95 1.09959
0.975 1.04101
1 1
1.025 0.934527
1.05 0.899698
1.075 0.863664
1.1 0.810286
1.125 0.780294
1.15 0.761658
1.175 0.733473
1.2 0.68684
1.225 0.66871
1.25 0.637654
1.275 0.615485
1.3 0.597355
1.325 0.581979
1.35 0.553809
1.375 0.540777
1.4 0.50306
1.425 0.497341
1.45 0.470977
1.475 0.455565
1.5 0.44728
1.525 0.424859
1.55 0.416075
1.575 0.404703
1.6 0.400799
1.625 0.388543
1.65 0.369173
1.675 0.354002
1.7 0.350087
1.725 0.335543
1.75 0.323122
1.775 0.310902
1.8 0.311182
1.825 0.298186
1.85 0.29138
1.875 0.285955
1.9 0.275596
1.925 0.268234
1.95 0.265886
1.975 0.262682
2 0.250182
2.025 0.240716
2.05 0.237506
2.075 0.232205
2.1 0.220832
2.125 0.219701
2.15 0.212265
2.175 0.212666
2.2 0.21221
2.225 0.207341
2.25 0.200297
2.275 0.192517
2.3 0.189886
2.325 0.192858
2.35 0.182024
2.375 0.176782
2.4 0.177839
2.425 0.172011
2.45 0.171562
2.475 0.161152
2.5 0.1637
2.525 0.161618
2.55 0.152274
2.575 0.155768
2.6 0.151609
2.625 0.147213
2.65 0.142626
2.675 0.141163
2.7 0.135075
2.725 0.137097
2.75 0.132081
2.775 0.129722
2.8 0.129826
2.825 0.12782
2.85 0.125443
2.875 0.123756
2.9 0.119346
2.925 0.120319
2.95 0.115285
2.975 0.114092
3 0.109567
3.025 0.110225
3.05 0.109222
3.075 0.105549
3.1 0.101985
3.125 0.102391
3.15 0.101265
3.175 0.0969858
3.2 0.102007
3.225 0.0955804
3.25 0.0950316
3.275 0.0948826
3.3 0.0938242
3.325 0.0912915
3.35 0.0903772
3.375 0.0905475
3.4 0.0902642
3.425 0.0858565
3.45 0.0849508
3.475 0.0836775
3.5 0.0822695
3.525 0.0803858
3.55 0.0784546
3.575 0.0795886
3.6 0.0769547
3.625 0.0795712
3.65 0.0766047
3.675 0.076652
3.7 0.0741164
3.725 0.0734218
3.75 0.0724564
3.775 0.0712286
3.8 0.0701183
3.825 0.0707867
3.85 0.069253
3.875 0.0693129
3.9 0.0663738
3.925 0.0660028
3.95 0.0630596
3.975 0.0647959
4 0.0613724
4.025 0.0626113
4.05 0.0600383
4.075 0.0583234
4.1 0.0589922
4.125 0.0578909
4.15 0.0579463
4.175 0.0581601
4.2 0.0584712
4.225 0.0569214
4.25 0.0543628
4.275 0.0550252
4.3 0.0541416
4.325 0.0539681
4.35 0.0534594
4.375 0.0535902
4.4 0.0510096
4.425 0.0505026
4.45 0.05093
4.475 0.0509179
4.5 0.0498966
4.525 0.0493014
4.55 0.0495339
4.575 0.047684
4.6 0.0484427
4.625 0.0474193
4.65 0.0469908
4.675 0.0434269
4.7 0.0467573
4.725 0.0459587
4.75 0.0443236
4.775 0.0430312
4.8 0.0418097
4.825 0.0435871
4.85 0.0427116
4.875 0.0434484
4.9 0.0412426
4.925 0.0399403
4.95 0.0402377
4.975 0.0389141
5 0.0403137
5.025 0.0395411
5.05 0.0394111
5.075 0.0389278
5.1 0.038083
5.125 0.037606
5.15 0.0373077
5.175 0.0373318
5.2 0.0364357
5.225 0.0360548
5.25 0.0362449
5.275 0.0359516
5.3 0.0344785
5.325 0.0357682
5.35 0.0335589
5.375 0.0347111
5.4 0.0342224
5.425 0.0332132
5.45 0.0320652
5.475 0.0325691
5.5 0.0321428
5.525 0.0326143
5.55 0.0312461
5.575 0.0316446
5.6 0.0326207
5.625 0.0309292
5.65 0.031781
5.675 0.03111
5.7 0.031085
5.725 0.0298376
5.75 0.0300253
5.775 0.0291072
5.8 0.029434
5.825 0.0293647
5.85 0.0286518
5.875 0.0294225
5.9 0.0288101
5.925 0.0277371
5.95 0.0281405
5.975 0.0272806
6 0.0285658
6.025 0.0270799
6.05 0.0267617
6.075 0.0270039
6.1 0.0259037
6.125 0.0267149
6.15 0.0268916
6.175 0.0260552
6.2 0.0264474
6.225 0.0261997
6.25 0.0250775
6.275 0.0251349
6.3 0.0248374
6.325 0.0248917
6.35 0.0253588
6.375 0.0239189
6.4 0.0235247
6.425 0.0243316
6.45 0.0237805
6.475 0.024539
6.5 0.0229951
6.525 0.0234679
6.55 0.0222213
6.575 0.0226512
6.6 0.0231117
6.625 0.0226865
6.65 0.0226309
6.675 0.0221741
6.7 0.021886
6.725 0.0225204
6.75 0.0215891
6.775 0.0215803
6.8 0.0211783
6.825 0.0211231
6.85 0.0202702
6.875 0.021167
6.9 0.0200604
6.925 0.0194932
6.95 0.0202454
6.975 0.0203641
7 0.0195786
7.025 0.0199124
7.05 0.0204308
7.075 0.0201506
7.1 0.0187051
7.125 0.0194116
7.15 0.0188402
7.175 0.0186343
7.2 0.0181915
7.225 0.0182014
7.25 0.0181212
7.275 0.0187745
7.3 0.0185264
7.325 0.0179612
7.35 0.0182145
7.375 0.0173885
7.4 0.0175296
7.425 0.0173015
7.45 0.0178655
7.475 0.0171251
7.5 0.0172817
7.525 0.0169988
7.55 0.0174812
7.575 0.0163579
7.6 0.0169149
7.625 0.0158714
7.65 0.0167692
7.675 0.0159291
7.7 0.0164796
7.725 0.0162668
7.75 0.0160943
7.775 0.0154321
7.8 0.0154565
7.825 0.0152527
7.85 0.015076
7.875 0.015373
7.9 0.0159891
7.925 0.0151343
7.95 0.0152519
7.975 0.0149324
8 0.0143593
8.025 0.0146017
8.05 0.0153433
8.075 0.0148959
8.1 0.0153935
8.125 0.014794
8.15 0.0148756
8.175 0.0142601
8.2 0.0135775
8.225 0.0139981
8.25 0.0135948
8.275 0.0134384
8.3 0.0135721
8.325 0.0135676
8.35 0.013381
8.375 0.0138911
8.4 0.0137102
8.425 0.0134236
8.45 0.0132839
8.475 0.0137468
8.5 0.0126954
8.525 0.0131381
8.55 0.012917
8.575 0.0125523
8.6 0.0133552
8.625 0.0129323
8.65 0.0124276
8.675 0.0127568
8.7 0.0123417
8.725 0.0123311
8.75 0.012783
8.775 0.0125416
8.8 0.0122996
8.825 0.0119504
8.85 0.0114672
8.875 0.0118241
8.9 0.0118658
8.925 0.0113748
8.95 0.0124416
8.975 0.0120009
9 0.011586
9.025 0.0116351
9.05 0.012039
9.075 0.0114209
9.1 0.0112775
9.125 0.0114966
9.15 0.0108383
9.175 0.0115186
9.2 0.0108263
9.225 0.0106703
9.25 0.010646
9.275 0.0113658
9.3 0.0109566
9.325 0.0106675
9.35 0.0103524
9.375 0.0107476
9.4 0.00997691
9.425 0.010812
9.45 0.0102024
9.475 0.010362
9.5 0.0101172
9.525 0.0105576
9.55 0.010192
9.575 0.00999399
9.6 0.0101592
9.625 0.0103616
9.65 0.00995615
9.675 0.00976115
9.7 0.00936209
9.725 0.00957029
9.75 0.0094812
9.775 0.00989171
9.8 0.00951605
9.825 0.00946831
9.85 0.00973281
9.875 0.00911279
9.9 0.00926576
9.925 0.00939933
9.95 0.00938689
9.975 0.00915537
10 0.00882561
@@ -0,0 +1,14 @@
0.25 13.835
0.5 3.8342
0.75 1.7436
1 0.9899
1.5 0.4432
2 0.2503
3 0.1115
4 0.0626
5 0.0399
6 0.0275
7 0.02001
8 0.015123
10 0.009348
@@ -37,8 +37,8 @@ The class BrachyAnalysisManager creates and manages histograms and ntuples
#ifdef ANALYSIS_USE
#include "TROOT.h"
#include "TFile.h"
#include "TNtuple.h"
#include "TH1F.h"
#include "TH2F.h"
#endif
@@ -56,11 +56,12 @@ public:
// Create the ntuple and histograms
#ifdef ANALYSIS_USE
void FillNtupleWithEnergyDeposition(G4double,G4double,G4double,G4double);
// Method to fill the ntuple with the energy deposition, integrated over a run, in each voxel
// of the scoring mesh
void FillPrimaryParticleHistogram(G4double);
void FillH2WithEnergyDeposition(G4double xx,G4double yy, G4double energyDep);
// Method to fill the 2D histogram with the energy deposition, integrated over a run, in each voxel
// of the scoring mesh. The scoring mesh is in the plane containing the source.
void FillPrimaryParticleHistogram(G4double);
// Energy spectrum of primary particles
#endif
@@ -74,7 +75,7 @@ private:
#ifdef ANALYSIS_USE
TFile* theTFile;
TH1F* histo;
TNtuple* ntuple;
TH2F* histo2;
#endif
};
#endif
@@ -0,0 +1,103 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Code developed by: S. Guatelli, D. Cutajar, J. Poder,
//Centre For Medical Radiation Physics, University of Wollongong
//
//
// ******************************************
// * *
// * BrachyDetectorConstructionFlexi.hh *
// * *
// ******************************************
//
//
//
#ifndef BrachyDetectorConstructionFlexi_H
#define BrachyDetectorConstructionFlexi_H 1
#include "globals.hh"
#include "G4VUserDetectorConstruction.hh"
class G4LogicalVolume;
class G4Tubs;
class G4Cons;
class G4VPhysicalVolume;
class BrachyMaterial;
class G4VisAttributes;
class BrachyDetectorConstructionFlexi
{
public:
BrachyDetectorConstructionFlexi();
~BrachyDetectorConstructionFlexi();
void ConstructFlexi(G4VPhysicalVolume*);
// Model the Flexi iridium source
void CleanFlexi();
// Destroy the Iridium source in the experimental set-up
private:
G4Tubs* steel_shell;
G4LogicalVolume* logical_steel_shell;
G4VPhysicalVolume* physical_steel_shell;
G4Tubs* air_gap;
G4LogicalVolume* logical_air_gap;
G4VPhysicalVolume* physical_air_gap;
G4Tubs* End1_steel_shell;
G4LogicalVolume* logical_End1_steel_shell;
G4VPhysicalVolume* physical_End1_steel_shell;
G4Cons* End2_steel_shell;
G4LogicalVolume* logical_End2_steel_shell;
G4VPhysicalVolume* physical_End2_steel_shell;
G4Tubs* cable;
G4LogicalVolume* logical_cable;
G4VPhysicalVolume* physical_cable;
G4Tubs* iridium_core;
G4LogicalVolume* logical_iridium_core;
G4VPhysicalVolume* physical_iridium_core;
G4VisAttributes* steelAttributes;
G4VisAttributes* endAttributes;
G4VisAttributes* simpleIridiumVisAtt;
BrachyMaterial* pMat;
};
#endif
@@ -0,0 +1,93 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// $Id: BrachyDetectorConstructionIr.hh 69765 2013-05-14 10:11:22Z gcosmo $
//
// ****************************************
// * *
// * BrachyDetectorConstructionIr.hh *
// * *
// ****************************************
//
// Management of the Iridium source
//
#ifndef BrachyDetectorConstructionIr_H
#define BrachyDetectorConstructionIr_H 1
#include "globals.hh"
#include "G4VUserDetectorConstruction.hh"
class G4LogicalVolume;
class G4Tubs;
class G4Box;
class G4Sphere;
class G4VPhysicalVolume;
class BrachyMaterial;
class G4VisAttributes;
class BrachyDetectorConstructionTG186
{
public:
BrachyDetectorConstructionTG186();
~BrachyDetectorConstructionTG186();
void ConstructTG186(G4VPhysicalVolume*);
// Model the TG186 reference source
void CleanTG186();
// Destroy the TG186 reference source in the experimental set-up
private:
G4Tubs* TG186capsule ;
G4LogicalVolume* TG186capsuleLog;
G4VPhysicalVolume* TG186capsulePhys;
G4Sphere* TG186capsuleTip;
G4LogicalVolume* TG186capsuleTipLog;
G4VPhysicalVolume* TG186capsuleTipPhys;
G4Tubs* TG186iridiumCore;
G4LogicalVolume* TG186iridiumCoreLog;
G4VPhysicalVolume* TG186iridiumCorePhys;
G4Tubs* TG186cable;
G4LogicalVolume* TG186cableLog;
G4VPhysicalVolume* TG186cablePhys;
BrachyMaterial* pMat;
G4VisAttributes* TG186simpleCapsuleVisAtt;
G4VisAttributes* TG186simpleCapsuleTipVisAtt;
G4VisAttributes* TG186simpleIridiumVisAtt;
G4VisAttributes* TG186simpleCableVisAtt;
};
#endif
@@ -0,0 +1,63 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
//
// **********************************
// * *
// * BrachyFactoryFlexi.hh *
// * *
// **********************************
//
//Code developed by: S. Guatelli, D. Cutajar, J. Poder,
//Centre For Medical Radiation Physics, University of Wollongong
//
#ifndef BrachyFactoryFlexi_h
#define BrachyFactoryFlexi_h 1
#include "BrachyFactory.hh"
#include "G4RunManager.hh"
class G4ParticleGun;
class G4Run;
class G4Event;
class BrachyFactory;
class BrachyDetectorConstructionFlexi;
// This class manages the creation of the Nucletron Flexi Source
class BrachyFactoryFlexi : public BrachyFactory
{
public:
BrachyFactoryFlexi();
~BrachyFactoryFlexi();
void CreateSource(G4VPhysicalVolume*);
void CleanSource();
private:
BrachyDetectorConstructionFlexi* flexiSource;
};
#endif
@@ -0,0 +1,62 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// $Id: BrachyFactoryIr.hh 69765 2013-05-14 10:11:22Z gcosmo $
//
// **********************************
// * *
// * BrachyFactoryIr.hh *
// * *
// **********************************
//
// Author: D. Cutajar
//
#ifndef BrachyFactoryTG186_h
#define BrachyFactoryTG186_h 1
#include "BrachyFactory.hh"
#include "G4RunManager.hh"
class G4ParticleGun;
class G4Run;
class G4Event;
class BrachyFactory;
class BrachyDetectorConstructionTG186;
// This class manages the creation of iridum source used in endocavitary
// brachytherapy ...
class BrachyFactoryTG186 : public BrachyFactory
{
public:
BrachyFactoryTG186();
~BrachyFactoryTG186();
void CreateSource(G4VPhysicalVolume*);
void CleanSource();
private:
BrachyDetectorConstructionTG186* TG186iridiumSource;
};
#endif
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: BrachyMaterial.hh 69765 2013-05-14 10:11:22Z gcosmo $
// $Id: BrachyMaterial.hh 100821 2016-11-02 15:21:34Z gcosmo $
//
// **********************************
// * *
@@ -62,6 +62,7 @@ private:
G4Material* matH2O;
G4Material* soft;
G4Material* matsteel;
G4Material* mat304steel;
G4Material* gold;
G4Material* matI;
G4Material* ceramic;
@@ -1,11 +1,129 @@
# Definition of the radiation field
# by means of the General Particle Source
# http://reat.space.qinetiq.com/gps/
/gps/ene/type Arb
/gps/hist/type arb
/gps/hist/point 0.0614 1e-8
/gps/hist/point 0.0615 0.412
/gps/hist/point 0.0616 1e-8
/gps/hist/point 0.0629 1e-8
/gps/hist/point 0.063 0.7039
/gps/hist/point 0.0631 1e-8
/gps/hist/point 0.0650 1e-8
/gps/hist/point 0.0651 1.1309
/gps/hist/point 0.0652 1e-8
/gps/hist/point 0.0667 1e-8
/gps/hist/point 0.0668 1.9178
/gps/hist/point 0.0669 1e-8
/gps/hist/point 0.0710 1e-8
/gps/hist/point 0.0711 0.0827
/gps/hist/point 0.0712 1e-8
/gps/hist/point 0.0713 1e-8
/gps/hist/point 0.0714 0.1600
/gps/hist/point 0.0715 1e-8
/gps/hist/point 0.0733 1e-8
/gps/hist/point 0.0734 0.0560
/gps/hist/point 0.0735 1e-8
/gps/hist/point 0.0753 1e-8
/gps/hist/point 0.0754 0.2292
/gps/hist/point 0.0755 1e-8
/gps/hist/point 0.0756 1e-8
/gps/hist/point 0.0757 0.4408
/gps/hist/point 0.0758 1e-8
/gps/hist/point 0.0777 1e-8
/gps/hist/point 0.0778 0.1570
/gps/hist/point 0.0779 1e-8
/gps/hist/point 0.1103 1e-8
/gps/hist/point 0.1104 0.0042
/gps/hist/point 0.1105 1e-8
/gps/hist/point 0.1362 1e-8
/gps/hist/point 0.1363 0.0860
/gps/hist/point 0.1364 1e-8
/gps/hist/point 0.1769 1e-8
/gps/hist/point 0.1770 0.0018
/gps/hist/point 0.1771 1e-8
/gps/hist/point 0.2012 1e-8
/gps/hist/point 0.2013 0.1624
/gps/hist/point 0.2014 1e-8
/gps/hist/point 0.2057 1e-8
/gps/hist/point 0.2058 1.1468
/gps/hist/point 0.2059 1e-8
/gps/hist/point 0.2802 1e-8
/gps/hist/point 0.2803 0.0039
/gps/hist/point 0.2804 1e-8
/gps/hist/point 0.2832 1e-8
/gps/hist/point 0.2833 0.0913
/gps/hist/point 0.2834 1e-8
/gps/hist/point 0.2959 1e-8
/gps/hist/point 0.2960 12.3498
/gps/hist/point 0.2961 1e-8
/gps/hist/point 0.3084 1e-8
/gps/hist/point 0.3085 12.7626
/gps/hist/point 0.3086 1e-8
/gps/hist/point 0.3164 1e-8
/gps/hist/point 0.3165 35.5660
/gps/hist/point 0.3166 1e-8
/gps/hist/point 0.3291 1e-8
/gps/hist/point 0.3292 0.0060
/gps/hist/point 0.3293 1e-8
/gps/hist/point 0.3744 1e-8
/gps/hist/point 0.3745 0.2493
/gps/hist/point 0.3746 1e-8
/gps/hist/point 0.4164 1e-8
/gps/hist/point 0.4165 0.2877
/gps/hist/point 0.4166 1e-8
/gps/hist/point 0.4204 1e-8
/gps/hist/point 0.4205 0.0237
/gps/hist/point 0.4206 1e-8
/gps/hist/point 0.4680 1e-8
/gps/hist/point 0.4681 20.5587
/gps/hist/point 0.4682 1e-8
/gps/hist/point 0.4845 1e-8
/gps/hist/point 0.4846 1.0942
/gps/hist/point 0.4847 1e-8
/gps/hist/point 0.4852 1e-8
/gps/hist/point 0.4853 0.0010
/gps/hist/point 0.4854 1e-8
/gps/hist/point 0.4890 1e-8
/gps/hist/point 0.4891 0.1504
/gps/hist/point 0.4892 1e-8
/gps/hist/point 0.5885 1e-8
/gps/hist/point 0.5886 1.9423
/gps/hist/point 0.5887 1e-8
/gps/hist/point 0.5934 1e-8
/gps/hist/point 0.5935 0.0181
/gps/hist/point 0.5936 1e-8
/gps/hist/point 0.5993 1e-8
/gps/hist/point 0.5994 0.0017
/gps/hist/point 0.5995 1e-8
/gps/hist/point 0.6043 1e-8
/gps/hist/point 0.6044 3.5361
/gps/hist/point 0.6045 1e-8
/gps/hist/point 0.6124 1e-8
/gps/hist/point 0.6125 2.2962
/gps/hist/point 0.6126 1e-8
/gps/hist/point 0.7038 1e-8
/gps/hist/point 0.7039 0.0018
/gps/hist/point 0.7040 1e-8
/gps/hist/point 0.7657 1e-8
/gps/hist/point 0.7658 0.0006
/gps/hist/point 0.7659 1e-8
/gps/hist/point 0.8844 1e-8
/gps/hist/point 0.8845 0.1251
/gps/hist/point 0.8846 1e-8
/gps/hist/point 1.0614 1e-8
/gps/hist/point 1.0615 0.0228
/gps/hist/point 1.0616 1e-8
/gps/hist/point 1.0898 1e-8
/gps/hist/point 1.0899 0.0005
/gps/hist/point 1.0890 1e-8
/gps/hist/point 1.3781 1e-8
/gps/hist/point 1.3782 0.0005
/gps/hist/point 1.3783 1e-8
/gps/hist/inter Lin
/gps/particle gamma
/gps/energy 356.0 keV
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/radius 0.30 mm
/gps/pos/halfz 1.75 mm
/gps/pos/centre 0. 0. -1.975 mm
/gps/pos/centre 0. 0. 0. mm
/gps/ang/type iso
+1 -36
View File
@@ -1,41 +1,6 @@
{
gROOT -> Reset();
TFile f("brachytherapy.root");
ntuple -> Print();
Int_t index;
Double_t xx;
Double_t yy;
Double_t zz;
Double_t edep;
ntuple->GetBranch("xx")->SetAddress(&xx);
ntuple->GetBranch("yy")->SetAddress(&yy);
ntuple->GetBranch("zz")->SetAddress(&zz);
ntuple->GetBranch("edep")->SetAddress(&edep);
// Print the content of the ntuple
/*Int_t nevent = Int_t(ntuple->GetEntries());
for ( Int_t i=0; i<nevent; i++ ) {
ntuple->GetEvent(i);
cout << "xx, yy, zz, edep: "
<< xx << ", " << yy << ", " << zz << ", " << edep << endl;
}
*/
// The phantom is 30 cm wide along x, y, z
// the voxel size is 1 mm. The number of voxels is 300 along x, y, z
// Plot the energy deposition in the phantom in 3D
TCanvas* c1 = new TCanvas("c1", " ");
TH3F* edepDDistribution3D = new TH3F("h30", "3Dedepxyz",
300, -150, 150, // binning, xmin, xmax, along x direction
300, -150, 150, // binning, xmin, xmax, along y direction
300, -150, 150);// binning, xmin, xmax, along z direction
gStyle->SetPalette(1);
ntuple.Draw("xx:yy:zz:edep>>h30", "", "colz");
h20.Draw("");
}
@@ -31,9 +31,9 @@ Author: Susanna Guatelli
// example analysis/AnaEx01
#include <stdlib.h>
#include "G4SystemOfUnits.hh"
#include "BrachyAnalysisManager.hh"
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
BrachyAnalysisManager* BrachyAnalysisManager::instance = 0;
@@ -41,8 +41,8 @@ BrachyAnalysisManager::BrachyAnalysisManager()
{
#ifdef ANALYSIS_USE
theTFile = 0;
histo2 =0;
histo = 0;
ntuple = 0;
#endif
}
@@ -50,16 +50,15 @@ BrachyAnalysisManager::~BrachyAnalysisManager()
{
#ifdef G4ANALYSIS_USE
delete theTFile; theTFile = 0;
delete histo2; histo2 = 0;
delete histo; histo = 0;
delete ntuple; ntuple = 0;
#endif
}
BrachyAnalysisManager* BrachyAnalysisManager::GetInstance()
{
if (instance == 0) instance = new BrachyAnalysisManager;
return instance;
if (instance == 0) instance = new BrachyAnalysisManager;
return instance;
}
void BrachyAnalysisManager::book()
@@ -69,17 +68,17 @@ void BrachyAnalysisManager::book()
theTFile = new TFile("brachytherapy.root", "RECREATE");
histo = new TH1F("h10","energy spectrum", 800, 0., 800);
ntuple = new TNtuple("ntuple","edep3D","xx:yy:zz:edep");
histo2 = new TH2F("h20","edep2Dxy", 801, -100.125, 100.125, // binning, xmin, xmax, along x direction in mm
801, -100.125, 100.125);// binning, ymin, ymax, along y direction in mm
#endif
}
#ifdef ANALYSIS_USE
void BrachyAnalysisManager::FillNtupleWithEnergyDeposition(G4double xx,
void BrachyAnalysisManager::FillH2WithEnergyDeposition(G4double xx,
G4double yy,
G4double zz,
G4double energyDep)
{
ntuple -> Fill(xx, yy, zz, energyDep);
histo2 -> Fill(xx, yy,energyDep);
}
void BrachyAnalysisManager::FillPrimaryParticleHistogram(G4double primaryParticleEnergy)
@@ -27,8 +27,8 @@
// GEANT 4 - Brachytherapy example
// --------------------------------------------------------------
//
// Code developed by:
// S. Agostinelli, F. Foppiano, S. Garelli , M. Tropeano, S.Guatelli
// Code developed by:S. Guatelli, D. Cutajar
// Past developers: S. Agostinelli, F. Foppiano, S. Garelli , M. Tropeano
//
//
// ****************************************
@@ -54,8 +54,9 @@
#include "G4VisAttributes.hh"
#include "BrachyMaterial.hh"
#include "BrachyFactoryLeipzig.hh"
#include "BrachyFactoryIr.hh"
#include "BrachyFactoryTG186.hh"
#include "BrachyFactoryI.hh"
#include "BrachyFactoryFlexi.hh"
#include "BrachyDetectorMessenger.hh"
#include "BrachyDetectorConstruction.hh"
@@ -79,8 +80,8 @@ BrachyDetectorConstruction::BrachyDetectorConstruction():
// It is possible to modify geometrical parameters through UI
detectorMessenger = new BrachyDetectorMessenger(this);
// Define the Iridium source as default source modelled in the geometry
factory = new BrachyFactoryIr();
// Define the Flexi source as default source modelled in the geometry
factory = new BrachyFactoryFlexi();
// BrachyMaterial defined the all the materials necessary
// for the experimental set-up
@@ -123,10 +124,13 @@ void BrachyDetectorConstruction::SwitchBrachytherapicSeed()
factory = new BrachyFactoryLeipzig();
break;
case 3:
factory = new BrachyFactoryIr();
factory = new BrachyFactoryTG186();
break;
case 4:
factory = new BrachyFactoryFlexi();
break;
default:
factory = new BrachyFactoryIr();
factory = new BrachyFactoryFlexi();
break;
}
@@ -140,14 +144,17 @@ void BrachyDetectorConstruction::SwitchBrachytherapicSeed()
void BrachyDetectorConstruction::SelectBrachytherapicSeed(G4String val)
{
if (val == "Iodium") detectorChoice = 1;
if (val == "Iodine") detectorChoice = 1;
else{
if(val=="Leipzig") detectorChoice = 2;
else{
if(val=="Iridium") detectorChoice = 3;
else G4cout << val << "is not available!!!!" <<G4endl;
if(val=="TG186") detectorChoice = 3;
else{
if(val=="Flexi") detectorChoice = 4;
else G4cout << val << "is not available!!!!" <<G4endl;
}
}
}
G4cout << "Now the source is " << val << G4endl;
}
@@ -178,7 +185,7 @@ void BrachyDetectorConstruction::ConstructPhantom()
PhantomLog, // Associated logical volume
WorldPhys, // Mother volume
false,0);
WorldLog -> SetVisAttributes (G4VisAttributes::Invisible);
WorldLog -> SetVisAttributes (G4VisAttributes::GetInvisible());
// Visualization attributes of the phantom
G4VisAttributes* simpleBoxVisAtt = new G4VisAttributes(lblue);
@@ -0,0 +1,229 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Brachytherapy example
// --------------------------------------------------------------
//
// Code developed by:
// S. Guatelli, D. Cutajar, J. Poder
// Centre For Medical Radiation Physics, University of Wollongong
//
// ****************************************
// * *
// * BrachyDetectorConstructionFlexi.cc*
// * *
// ****************************************
//
//
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "BrachyDetectorConstructionFlexi.hh"
#include "G4RunManager.hh"
#include "G4Tubs.hh"
#include "G4Cons.hh"
#include "G4LogicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4PVPlacement.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
#include "G4TransportationManager.hh"
#include "BrachyMaterial.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
BrachyDetectorConstructionFlexi::BrachyDetectorConstructionFlexi()
: steel_shell(0),logical_steel_shell(0),air_gap(0), logical_air_gap(0), physical_air_gap(0),
End1_steel_shell(0),logical_End1_steel_shell(0), physical_End1_steel_shell(0),
End2_steel_shell(0),logical_End2_steel_shell(0), physical_End2_steel_shell(0),
cable(0),logical_cable(0),physical_cable(0),
iridium_core(0),logical_iridium_core(0),physical_iridium_core(0),
steelAttributes(0), endAttributes(0), simpleIridiumVisAtt(0)
{
pMat = new BrachyMaterial();
}
BrachyDetectorConstructionFlexi::~BrachyDetectorConstructionFlexi()
{
delete pMat;
}
void BrachyDetectorConstructionFlexi::ConstructFlexi(G4VPhysicalVolume* mother)
{
G4Material* steelMat = pMat -> GetMat("Stainless steel 304");
G4Material* iridiumMat = pMat -> GetMat("Iridium");
G4Material* airMat = pMat -> GetMat("Air");
//Define dimensions of the outer Steel shell around the solid source - not including the ends
G4double shellr_min = 0.00 * mm;
G4double shellr_max = 0.85 * mm;
G4double shell_length = 3.6 * mm;
steel_shell = new G4Tubs("steel_shell",shellr_min, shellr_max/2, shell_length/2.,0.*deg,360.*deg);
logical_steel_shell = new G4LogicalVolume(steel_shell, steelMat, "steel_shell_log", 0, 0, 0);
physical_steel_shell = new G4PVPlacement(0,G4ThreeVector(0,0,0),"phys_steel_shell", logical_steel_shell, mother, false, 0, true);
//Define dimensions of the air gap between Steel shell and Iridium core
G4double airr_min = 0.00 * mm;
G4double airr_max = 0.67 * mm;
G4double air_length = 3.6 * mm;
air_gap = new G4Tubs("air_gap", airr_min, airr_max/2, air_length/2, 0.*deg, 360.*deg);
logical_air_gap = new G4LogicalVolume(air_gap, airMat, "air_gap_log", 0, 0, 0);
physical_air_gap = new G4PVPlacement(0, G4ThreeVector(0,0,0), "phys_air_gap",logical_air_gap, physical_steel_shell, false, 0, true);
//Define the non-cable weld end of the Steel shell
G4double End1r_min = 0.0 * mm;
G4double End1r_max = 0.85 * mm;
G4double End1length = 0.65 * mm;
End1_steel_shell = new G4Tubs("End_1_steel_shell",End1r_min, End1r_max/2, End1length/2.,0.*deg,360.*deg);
logical_End1_steel_shell = new G4LogicalVolume(End1_steel_shell, steelMat, "End1_steel_shell_log", 0, 0, 0);
G4double end1offset_x = 0.0 * mm;
G4double end1offset_y = 0.0 * mm;
G4double end1offset_z = 2.125 * mm;
physical_End1_steel_shell = new G4PVPlacement(0,G4ThreeVector(end1offset_x,end1offset_y,end1offset_z),"phys_End1_steel_shell", logical_End1_steel_shell,mother, false, 0, true);
//Define the cable weld end of the Steel shell
G4double End2r_min1 = 0.0 * mm;
G4double End2r_max1 = 0.85 * mm;
G4double End2r_min2 = 0.0 * mm;
G4double End2r_max2 = 0.5 * mm;
G4double End2length = 0.4 * mm;
End2_steel_shell = new G4Cons("End_2_steel_shell",End2r_min2, End2r_max2/2, End2r_min1, End2r_max1/2, End2length/2.0, 0.0, 360.0*deg);
logical_End2_steel_shell = new G4LogicalVolume(End2_steel_shell, steelMat, "End2_steel_shell_log", 0, 0, 0);
G4double end2offset_x = 0.0 * mm;
G4double end2offset_y = 0.0 * mm;
G4double end2offset_z = -2.0 * mm;
physical_End2_steel_shell = new G4PVPlacement(0,G4ThreeVector(end2offset_x,end2offset_y,end2offset_z), "phys_End2_steel_shell", logical_End2_steel_shell,mother, false, 0, true);
//Define the cable
G4double cable_min = 0.0 * mm;
G4double cable_max = 0.5 * mm;
G4double cablelength = 5.0 * mm;
cable = new G4Tubs("cable",cable_min, cable_max/2, cablelength/2.,0.*deg,360.*deg);
logical_cable = new G4LogicalVolume(cable, steelMat, "cable_log", 0, 0, 0);
G4double cableoffset_x = 0.0 * mm;
G4double cableoffset_y = 0.0 * mm;
G4double cableoffset_z = -4.7 * mm;
physical_cable = new G4PVPlacement(0,G4ThreeVector(cableoffset_x,cableoffset_y,cableoffset_z),"phys_cable", logical_cable, mother, false, 0, true);
// Define the Iridium core
G4double corer_min = 0.0 * mm;
G4double corer_max = 0.6 * mm;
G4double core_length = 3.5 * mm;
iridium_core = new G4Tubs("iridium_core",corer_min, corer_max/2,core_length/2.,0.*deg,360.*deg);
logical_iridium_core = new G4LogicalVolume(iridium_core, iridiumMat, "iridium_core_log", 0, 0, 0);
physical_iridium_core = new G4PVPlacement(0,G4ThreeVector(0,0,0), "phys_iridium_core", logical_iridium_core, physical_air_gap, false, 0, true);
// Visualisations
//Shell/cable attributes
steelAttributes = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0)); // red
steelAttributes -> SetVisibility(true);
steelAttributes -> SetForceAuxEdgeVisible(true);
endAttributes = new G4VisAttributes(G4Colour(1.0, 0.0, 0.0)); // red
endAttributes -> SetVisibility(true);
endAttributes -> SetForceAuxEdgeVisible(true);
logical_steel_shell -> SetVisAttributes(steelAttributes);
logical_End1_steel_shell -> SetVisAttributes(endAttributes);
logical_End2_steel_shell -> SetVisAttributes(endAttributes);
logical_cable -> SetVisAttributes(steelAttributes);
G4Colour magenta (1.0, 0.0, 1.0) ;
simpleIridiumVisAtt = new G4VisAttributes(magenta);
simpleIridiumVisAtt -> SetVisibility(true);
simpleIridiumVisAtt -> SetForceWireframe(true);
logical_iridium_core -> SetVisAttributes(simpleIridiumVisAtt);
}
void BrachyDetectorConstructionFlexi::CleanFlexi()
{
delete simpleIridiumVisAtt;
simpleIridiumVisAtt = 0;
delete endAttributes;
endAttributes = 0;
delete steelAttributes;
steelAttributes = 0;
delete physical_iridium_core;
physical_iridium_core = 0 ;
delete logical_iridium_core;
logical_iridium_core = 0;
delete iridium_core;
iridium_core = 0;
delete physical_cable;
physical_cable = 0;
delete logical_cable;
logical_cable = 0;
delete cable;
cable = 0;
delete physical_End2_steel_shell;
physical_End2_steel_shell = 0;
delete logical_End2_steel_shell;
logical_End2_steel_shell = 0;
delete End2_steel_shell;
End2_steel_shell = 0;
delete physical_End1_steel_shell;
physical_End1_steel_shell = 0;
delete logical_End1_steel_shell;
logical_End1_steel_shell = 0;
delete End1_steel_shell;
End1_steel_shell = 0;
delete physical_air_gap;
physical_air_gap = 0;
delete logical_air_gap;
logical_air_gap = 0;
delete air_gap;
air_gap = 0;
delete physical_steel_shell;
physical_steel_shell = 0;
delete logical_steel_shell;
logical_steel_shell = 0;
delete steel_shell;
steel_shell = 0;
G4RunManager::GetRunManager() -> GeometryHasBeenModified();
}
@@ -36,7 +36,7 @@
// * *
// ****************************************
//
// $Id: BrachyDetectorConstructionI.cc 69765 2013-05-14 10:11:22Z gcosmo $
// $Id: BrachyDetectorConstructionI.cc 100821 2016-11-02 15:21:34Z gcosmo $
//
#include "globals.hh"
#include "G4SystemOfUnits.hh"
@@ -78,7 +78,7 @@ void BrachyDetectorConstructionI::ConstructIodium(G4VPhysicalVolume* mother)
//Get materials for source construction ...
G4Material* titanium = pMaterial -> GetMat("titanium");
G4Material* air = pMaterial -> GetMat("Air");
G4Material* iodium = pMaterial -> GetMat("Iodium");
G4Material* iodium = pMaterial -> GetMat("Iodine");
G4Colour red (1.0, 0.0, 0.0) ;
G4Colour magenta (1.0, 0.0, 1.0) ;
@@ -0,0 +1,223 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
//
// --------------------------------------------------------------
// GEANT 4 - Brachytherapy example
// --------------------------------------------------------------
//
// Code developed by:
// D. Cutajar
//
// ****************************************
// * *
// * BrachyDetectorConstructionTG186.cc *
// * *
// ****************************************
//
// $Id: BrachyDetectorConstructionTG186.cc 69765 2013-05-14 10:11:22Z gcosmo $
//
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "BrachyDetectorConstructionTG186.hh"
#include "G4Sphere.hh"
#include "G4RunManager.hh"
#include "G4Box.hh"
#include "G4Tubs.hh"
#include "G4LogicalVolume.hh"
#include "G4ThreeVector.hh"
#include "G4PVPlacement.hh"
#include "G4Transform3D.hh"
#include "G4RotationMatrix.hh"
#include "G4TransportationManager.hh"
#include "BrachyMaterial.hh"
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
BrachyDetectorConstructionTG186::BrachyDetectorConstructionTG186()
:
TG186capsule(0),TG186capsuleLog(0),
TG186capsulePhys(0),
TG186capsuleTip(0),TG186capsuleTipLog(0),
TG186capsuleTipPhys(0),
TG186iridiumCore(0),TG186iridiumCoreLog(0),
TG186iridiumCorePhys(0),
TG186cable(0),TG186cableLog(0),
TG186cablePhys(0),
TG186simpleCapsuleVisAtt(0),TG186simpleCapsuleTipVisAtt(0),TG186simpleIridiumVisAtt(0),
TG186simpleCableVisAtt(0)
{
pMat = new BrachyMaterial();
}
BrachyDetectorConstructionTG186::~BrachyDetectorConstructionTG186()
{
delete pMat;
}
void BrachyDetectorConstructionTG186::ConstructTG186(G4VPhysicalVolume* mother)
{
G4Colour red (1.0, 0.0, 0.0) ;
G4Colour magenta (1.0, 0.0, 1.0) ;
G4Material* capsuleMat = pMat -> GetMat("Stainless steel");
G4Material* iridiumMat = pMat -> GetMat("Iridium");
// Capsule main body
TG186capsule = new G4Tubs("TG186-Capsule",0,0.5*mm,2.25*mm,0.*deg,360.*deg);
TG186capsuleLog = new G4LogicalVolume(TG186capsule,capsuleMat,"TG186-CapsuleLog");
TG186capsulePhys = new G4PVPlacement(0,
G4ThreeVector(0,0,-0.4*mm),
"TG186-IridiumCapsulePhys",
TG186capsuleLog,
mother,
false,
0, true);
// Capsule tip
TG186capsuleTip = new G4Sphere("Tg186-CapsuleTipIridium",
0.*mm,
0.5*mm,
0.*deg,
360.*deg,
0.*deg,
90.*deg);
TG186capsuleTipLog = new G4LogicalVolume(TG186capsuleTip,
capsuleMat,
"CapsuleTipIridumLog");
TG186capsuleTipPhys = new G4PVPlacement(0,
G4ThreeVector(0.,0.,1.85*mm),
"TG186-CapsuleTipIridiumPhys",
TG186capsuleTipLog,
mother,
false,
0, true);
TG186cable = new G4Tubs("TG186-cable",
0.*mm,
0.5*mm,
1.0*mm,
0.*deg,
360.*deg);
TG186cableLog = new G4LogicalVolume(TG186cable,
capsuleMat,
"TG186-cableLog");
TG186cablePhys = new G4PVPlacement(0,
G4ThreeVector(0.,0.,-3.65*mm),
"TG186-CablePhys",
TG186cableLog,
mother,
false,
0, true);
// Iridium core
TG186iridiumCore = new G4Tubs("TG186-IrCore",0,0.30*mm,1.75*mm,0.*deg,360.*deg);
TG186iridiumCoreLog = new G4LogicalVolume(TG186iridiumCore,
iridiumMat,
"TG186-IridiumCoreLog");
TG186iridiumCorePhys = new G4PVPlacement(0,
G4ThreeVector(0,0,0.4*mm),
"TG186-IridiumCorePhys",
TG186iridiumCoreLog,
TG186capsulePhys,
false,
0, true);
TG186simpleCapsuleVisAtt = new G4VisAttributes(red);
TG186simpleCapsuleVisAtt -> SetVisibility(true);
TG186simpleCapsuleVisAtt -> SetForceWireframe(true);
TG186capsuleLog -> SetVisAttributes(TG186simpleCapsuleVisAtt);
TG186simpleCapsuleTipVisAtt = new G4VisAttributes(red);
TG186simpleCapsuleTipVisAtt -> SetVisibility(true);
TG186simpleCapsuleTipVisAtt -> SetForceSolid(true);
TG186capsuleTipLog -> SetVisAttributes(TG186simpleCapsuleTipVisAtt);
TG186simpleIridiumVisAtt = new G4VisAttributes(magenta);
TG186simpleIridiumVisAtt -> SetVisibility(true);
TG186simpleIridiumVisAtt -> SetForceWireframe(true);
TG186iridiumCoreLog -> SetVisAttributes(TG186simpleIridiumVisAtt);
TG186simpleCableVisAtt = new G4VisAttributes(red);
TG186simpleCableVisAtt -> SetVisibility(true);
TG186simpleCableVisAtt -> SetForceSolid(true);
TG186cableLog -> SetVisAttributes(TG186simpleCableVisAtt);
}
void BrachyDetectorConstructionTG186::CleanTG186()
{
delete TG186simpleIridiumVisAtt;
TG186simpleIridiumVisAtt = 0;
delete TG186iridiumCorePhys;
TG186iridiumCorePhys = 0;
delete TG186iridiumCore;
TG186iridiumCore = 0;
delete TG186iridiumCoreLog;
TG186iridiumCoreLog = 0 ;
delete TG186simpleCapsuleTipVisAtt;
TG186simpleCapsuleTipVisAtt = 0;
delete TG186capsuleTipPhys;
TG186capsuleTipPhys = 0;
delete TG186capsuleTip;
TG186capsuleTip = 0;
delete TG186capsuleTipLog;
TG186capsuleTipLog = 0;
delete TG186simpleCapsuleVisAtt;
TG186simpleCapsuleVisAtt = 0;
delete TG186capsulePhys;
TG186capsulePhys = 0;
delete TG186capsule;
TG186capsule = 0;
delete TG186capsuleLog;
TG186capsuleLog = 0;
delete TG186cable;
TG186cable = 0;
delete TG186cableLog;
TG186cableLog = 0;
delete TG186cablePhys;
TG186cablePhys = 0;
delete TG186simpleCableVisAtt;
TG186simpleCableVisAtt = 0;
G4RunManager::GetRunManager() -> GeometryHasBeenModified();
}
@@ -34,7 +34,7 @@
// *********************************
//
//
// $Id: BrachyDetectorMessenger.cc 69765 2013-05-14 10:11:22Z gcosmo $
// $Id: BrachyDetectorMessenger.cc 100821 2016-11-02 15:21:34Z gcosmo $
//
//
@@ -58,7 +58,7 @@ BrachyDetectorMessenger::BrachyDetectorMessenger( BrachyDetectorConstruction* De
sourceCmd -> SetGuidance("Assign the selected geometry to G4RunManager.");
sourceCmd -> SetParameterName("choice",true);
sourceCmd -> SetDefaultValue(" ");
sourceCmd -> SetCandidates("Iridium Iodium Leipzig ");
sourceCmd -> SetCandidates("TG186 Flexi Iodine Leipzig");
sourceCmd -> AvailableForStates(G4State_PreInit,G4State_Idle);
}
@@ -78,7 +78,7 @@ void BrachyDetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue
// Switch the source in the phantom
if( command == sourceCmd )
{
if(newValue=="Iodium" || newValue=="Iridium"|| newValue=="Leipzig")
if(newValue=="Iodine" || newValue=="TG186"|| newValue=="Leipzig" || newValue== "Flexi")
{
detector -> SelectBrachytherapicSeed(newValue);
detector -> SwitchBrachytherapicSeed();
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Code developed by:
// S. Guatelli, D. Cutajar, J. Poder,
//Centre For Medical Radiation Physics, University of Wollongong
//
// *******************************
// * *
// * BrachyFactoryFlexi *
// * *
// *******************************
//
//
#include "globals.hh"
#include "BrachyFactoryFlexi.hh"
#include "G4ParticleTable.hh"
#include "Randomize.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4IonTable.hh"
#include "G4UImanager.hh"
#include "G4RunManager.hh"
#include "BrachyDetectorMessenger.hh"
#include "BrachyDetectorConstructionFlexi.hh"
BrachyFactoryFlexi:: BrachyFactoryFlexi()
{
flexiSource = new BrachyDetectorConstructionFlexi();
}
BrachyFactoryFlexi:: ~BrachyFactoryFlexi()
{
delete flexiSource;
}
void BrachyFactoryFlexi::CreateSource(G4VPhysicalVolume* mother)
{
flexiSource -> ConstructFlexi(mother);
}
void BrachyFactoryFlexi::CleanSource()
{
flexiSource -> CleanFlexi();
flexiSource = 0;
}
@@ -0,0 +1,68 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// Code developed by:
// S.Guatelli & D. Cutajar
//
// *******************************
// * *
// * BrachyFactoryIr *
// * *
// *******************************
//
// $Id: BrachyFactoryIr.cc 69765 2013-05-14 10:11:22Z gcosmo $
//
#include "globals.hh"
#include "BrachyFactoryTG186.hh"
#include "G4ParticleTable.hh"
#include "Randomize.hh"
#include "G4Event.hh"
#include "G4ParticleGun.hh"
#include "G4IonTable.hh"
#include "G4UImanager.hh"
#include "G4RunManager.hh"
#include "BrachyDetectorMessenger.hh"
#include "BrachyDetectorConstructionTG186.hh"
BrachyFactoryTG186:: BrachyFactoryTG186()
{
TG186iridiumSource = new BrachyDetectorConstructionTG186();
}
BrachyFactoryTG186:: ~BrachyFactoryTG186()
{
delete TG186iridiumSource;
}
void BrachyFactoryTG186::CreateSource(G4VPhysicalVolume* mother)
{
TG186iridiumSource -> ConstructTG186(mother);
}
void BrachyFactoryTG186::CleanSource()
{
TG186iridiumSource -> CleanTG186();
TG186iridiumSource = 0;
}
@@ -32,7 +32,7 @@
// * *
// *******************************
//
// $Id: BrachyMaterial.cc 69765 2013-05-14 10:11:22Z gcosmo $
// $Id: BrachyMaterial.cc 100821 2016-11-02 15:21:34Z gcosmo $
//
#include "globals.hh"
#include "Randomize.hh"
@@ -183,16 +183,26 @@ void BrachyMaterial::DefineMaterials()
matsteel->AddElement(elCr, 0.19);
matsteel->AddElement(elNi, 0.10);
matsteel->AddElement(elFe, 0.68);
//Define Stainless-steel-304 - Flexi source
d = 7.999*g/cm3 ;
mat304steel = new G4Material("Stainless steel 304",d,6);
mat304steel->AddElement(elMn, 0.02);
mat304steel->AddElement(elSi, 0.01);
mat304steel->AddElement(elCr, 0.19);
mat304steel->AddElement(elNi, 0.10);
mat304steel->AddElement(elFe, 0.6792);
mat304steel->AddElement(elC, 0.0008);
//gold(chimica degli elementi N.N Greenwood,A.Earnshaw)
//gold
A = 196.97*g/mole;
d = 19.32*g/cm3;
gold = new G4Material("gold",Z = 79.,A,d);
//IodiumCore(chimica degli elementi N.N Greenwood,A.Earnshaw)
//Iodine Core
A = 124.9*g/mole;
d = 4.862*g/cm3;
matI = new G4Material("Iodium",Z = 53.,A,d);
matI = new G4Material("Iodine",Z = 53.,A,d);
//ceramic(Medical Physics, May 2000)
d = 2.88*g/cm3;
@@ -55,16 +55,13 @@ BrachyPhysicsList::BrachyPhysicsList(): G4VModularPhysicsList()
SetVerboseLevel(1);
// EM physics: 3 alternatives
emPhysicsList = new G4EmLivermorePhysics();
emPhysicsList = new G4EmStandardPhysics_option4(1);
// or
//emPhysicsList = new G4EmStandardPhysics_option4(1);
// Alternatively you can substitute this physics list
// with the LowEnergy Livermore or LowEnergy Penelope:
// emPhysicsList = new G4EmLivermorePhysics();
// Low Energy based on Livermore Evaluated Data Libraries
//
// Penelope physics
//emPhysicsList = new G4EmPenelopePhysics();
// or
// emPhysicsList = new G4EmPenelopePhysics();
// Add Decay
decPhysicsList = new G4DecayPhysics();
@@ -99,7 +96,7 @@ void BrachyPhysicsList::SetCuts()
// Definition of threshold of production
// of secondary particles
// This is defined in range.
defaultCutValue = 0.1 * mm;
defaultCutValue = 0.05 * mm;
SetCutValue(defaultCutValue, "gamma");
SetCutValue(defaultCutValue, "e-");
SetCutValue(defaultCutValue, "e+");
@@ -29,7 +29,7 @@
// --------------------------------------------------------------
//
// Code developed by:
// S.Guatelli
// S.Guatelli and D. Cutajar
//
//
// *******************************
@@ -38,7 +38,7 @@
// * *
// *******************************
//
// $Id: BrachyRunAction.cc 69765 2013-05-14 10:11:22Z gcosmo $
// $Id: BrachyRunAction.cc 100821 2016-11-02 15:21:34Z gcosmo $
//
#include "BrachyRunAction.hh"
@@ -97,7 +97,7 @@ if(msMapItr == fSMap.end())
return;
}
std::map<G4int, G4double*> * score = msMapItr -> second-> GetMap();
std::map<G4int, G4StatDouble*> * score = msMapItr -> second-> GetMap();
ofile << "# primitive scorer name: " << msMapItr -> first << G4endl;
//
@@ -108,27 +108,31 @@ ofile << std::setprecision(16); // for double value with 8 bytes
for(int x = 0; x < fNMeshSegments[0]; x++) {
for(int y = 0; y < fNMeshSegments[1]; y++) {
for(int z = 0; z < fNMeshSegments[2]; z++){
G4int numberOfVoxel = fNMeshSegments[0];
G4int numberOfVoxel_x = fNMeshSegments[0];
G4int numberOfVoxel_y = fNMeshSegments[1];
G4int numberOfVoxel_z =fNMeshSegments[2];
// If the voxel width is changed in the macro file,
// the voxel width variable must be updated
G4double voxelWidth = 1. *mm;
G4double voxelWidth = 0.25 *mm;
//
G4double xx = ( - numberOfVoxel + 1+ 2*x )* voxelWidth/2;
G4double yy = ( - numberOfVoxel + 1+ 2*y )* voxelWidth/2;
G4double zz = ( - numberOfVoxel + 1+ 2*z )* voxelWidth/2;
G4double xx = ( - numberOfVoxel_x + 1+ 2*x )* voxelWidth/2;
G4double yy = ( - numberOfVoxel_y + 1+ 2*y )* voxelWidth/2;
G4double zz = ( - numberOfVoxel_z + 1+ 2*z )* voxelWidth/2;
G4int idx = GetIndex(x, y, z);
std::map<G4int, G4double*>::iterator value = score -> find(idx);
std::map<G4int, G4StatDouble*>::iterator value = score -> find(idx);
if (value != score -> end())
{
// Print in the ASCII output file the information
ofile << xx << " " << yy << " " << zz <<" "
<<*(value->second)/keV << G4endl;
<<(value->second->sum_wx())/keV << G4endl;
#ifdef ANALYSIS_USE
// Save the same information in the output analysis file
BrachyAnalysisManager* analysis = BrachyAnalysisManager::GetInstance();
analysis -> FillNtupleWithEnergyDeposition(xx, yy, zz, *(value->second)/keV);
if(zz> -0.125 *mm && zz < 0.125*mm) analysis -> FillH2WithEnergyDeposition(xx,yy, (value->second->sum_wx())/keV);
#endif
}}}}
@@ -46,7 +46,6 @@ set(EXAMPLECOMPOSITECALORIMETER_SCRIPTS
gui.mac
test.g4mac
vis.mac
icons.mac
dataconf/g4testbeamhcal96.conf
dataconf/testbeamhcal96.conf
datageom/tbhcal96.geom
@@ -1,5 +1,5 @@
-------------------------------------------------------------------
$Id: History 95947 2016-03-03 10:39:24Z gcosmo $
$Id: History 101381 2016-11-16 10:58:00Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -9,6 +9,12 @@ $Id: History 95947 2016-03-03 10:39:24Z gcosmo $
Example History file
---------------------
01.08.2016 - A. Dotti (ccal-V10-02-02)
- Fix issues with a char* length
02.11.2016 - L. Garnier (ccal-V10-02-01)
- Remove icons.mac. Automatically include since interfaces-V10-02-07
03.03.2016 - L. Pandola (ccal-V10-02-00)
- Replace std::exp with G4Exp()
@@ -31,7 +31,4 @@
/gui/addButton numEvents 10 "/run/beamOn 10"
/gui/addButton numEvents 50 "/run/beamOn 50"
/gui/addButton numEvents 100 "/run/beamOn 100"
#
#Add an icon toolbar
/control/execute icons.mac
#
@@ -66,7 +66,7 @@ CCalAnalysis::CCalAnalysis() :
// Create a tuple :
// Create ntuple
analysisManager->CreateNtuple("ntuple1", "Event info");
char tupleid[6];
char tupleid[7];
for (int i=0;i<28;i++)
{
sprintf(tupleid,"hcal%d",i);
+9
View File
@@ -7,6 +7,15 @@ francesco.romano@lns.infn.it
History file of the GammaKnife application
====================================================
04.11.2016 F.Romano Tag: gammaknife-V10-02-02
- macro files modifeid for correct scorer rotation
06.09.2016 M.Asai Tag: gammaknife-V10-02-01
- Modify sdt::map<G4int, G4double*> to sdt::map<G4int, G4StatDouble*>
04.09.2016 M.Asai Tag: gammaknife-V10-02-00
- Modify sdt::map<G4int, G4double*> to sdt::map<G4int, G4StatDouble*>
06.03.2015 A.Dotti Tag: gammaknife-V10-01-00
- Moving of GPS defaults to master
+1
View File
@@ -19,6 +19,7 @@
/score/create/boxMesh boxMesh_1
/score/mesh/boxSize 22.5 22.5 22.5 mm
/score/mesh/rotate/rotateX 360 deg # Note: Hack to enable rotation (as of 10.3)
/score/mesh/nBin 45 45 45
/score/quantity/energyDeposit eDep
/score/close
@@ -18,6 +18,7 @@
/score/create/boxMesh boxMesh_1
/score/mesh/boxSize 22.5 22.5 22.5 mm
/score/mesh/rotate/rotateX 360 deg # Note: Hack to enable rotation (as of 10.3)
/score/mesh/nBin 45 45 45
/score/quantity/energyDeposit eDep
/score/close
File diff suppressed because it is too large Load Diff
@@ -23,6 +23,7 @@
/score/create/boxMesh boxMesh_1
/score/mesh/boxSize 22.5 22.5 22.5 mm
/score/mesh/rotate/rotateX 360 deg # Note: Hack to enable rotation (as of 10.3)
/score/mesh/nBin 45 45 45
/score/quantity/energyDeposit eDep
/score/close
@@ -107,7 +107,8 @@ void GammaKnifeController::PrepareHitsAccumulation()
for( ; it != scoreMap.end(); it++)
{
std::string hitMapName = it->first;
G4THitsMap<G4double>* hitMapToStore = new G4THitsMap<G4double>("GammaKnifeController", hitMapName);
G4THitsMap<G4StatDouble>* hitMapToStore
= new G4THitsMap<G4StatDouble>("GammaKnifeController", hitMapName);
storedScoreMap[ hitMapName ] = hitMapToStore;
}
}
@@ -130,8 +131,18 @@ void GammaKnifeController::StoreHits()
MeshScoreMap::iterator it = scoreMap.begin();
for( ; it != scoreMap.end(); it++)
{
std::string hitMapName = it->first;
*storedScoreMap[hitMapName] += *(it->second);
std::string hitMapName = it->first;
//*storedScoreMap[hitMapName] += *(it->second);
auto storedMap = storedScoreMap[hitMapName]->GetMap();
auto mapItr = it->second->GetMap()->begin();
for(;mapItr!=it->second->GetMap()->end();mapItr++)
{
auto key = mapItr->first;
auto val = mapItr->second;
if(storedMap->find(key)==storedMap->end())
{ (*storedMap)[key] = new G4StatDouble(); }
(*storedMap)[key]->add(val);
}
}
}
}
@@ -113,7 +113,7 @@ void GammaKnifeDetectorConstruction::ConstructBeamLine()
// The treatment room is invisible in the Visualisation
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::Invisible);
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
// Visualisation attributes of all elements colours
@@ -49,7 +49,7 @@ target_link_libraries(GammaRayTel ${Geant4_LIBRARIES})
# relies on these scripts being in the current working directory.
#
set(gammaray_telescope_SCRIPTS
emlowe.mac emstd.mac gammaraytel.in gammaraytel.out macro1.mac macro2.mac macro3.mac macro4.mac macro5.mac prerunGammaRayTel.mac)
emlowe.mac emstd.mac gammaraytel.in gammaraytel.out macro1.mac macro2.mac macro3.mac macro4.mac macro5.mac macro6.mac physics.mac physics_polarized.mac prerunGammaRayTel.mac)
foreach(_script ${gammaray_telescope_SCRIPTS})
configure_file(
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: GammaRayTel.cc 82630 2014-07-01 09:43:00Z gcosmo $
// $Id: GammaRayTel.cc 100697 2016-10-31 11:32:35Z gcosmo $
//
//
// ------------------------------------------------------------
@@ -83,10 +83,10 @@ int main(int argc, char** argv)
// POSSIBILITY TO SELECT ANOTHER PHYSICS LIST
// do not use GammaRayTelPhysicsList, this is old style and crashes at
// program exit
//runManager->SetUserInitialization(new GammaRayTelPhysicsList);
runManager->SetUserInitialization(new GammaRayTelPhysicsList);
// runManager->SetUserInitialization(new QGSP_BIC);
runManager->SetUserInitialization(new FTFP_BERT);
//runManager->SetUserInitialization(new FTFP_BERT);
//Initialize actions
runManager->SetUserInitialization(new GammaRayTelActionInitializer());
+12 -1
View File
@@ -1,5 +1,5 @@
-------------------------------------------------------------------
$Id: History 93678 2015-10-28 10:03:43Z gcosmo $
$Id: History 101656 2016-11-21 08:57:32Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -9,6 +9,17 @@ $Id: History 93678 2015-10-28 10:03:43Z gcosmo $
History file
------------
19.11.2016 - A. Dotti gammaraytel-V10-02-02
explicit set of SDs to manager
31.10.2016 - F. Longo and L. Pandola, Tag gammaraytel-V10-02-01
Extended physics list to give the possibility to handle
polarized gamma-rays.
28.10.2016 - G. Folger, Tag gammaraytel-V10-02-00
Remove direct use of aParticleIterator, use GetParticleTableIterator().
fix required by clang39 on Linux and MAC
27.10.2015 - A. Ribon, Tag gammaraytel-V10-01-00
GammaRayTelIonPhysics: replaced old G4GGNuclNuclCrossSection
class with the new, recommended one, G4ComponentGGNuclNuclXsc .
@@ -6,7 +6,7 @@
/control/verbose 1
/control/saveHistory
/run/verbose 1
#/control/execute emstd.mac
/control/execute physics.mac
/run/initialize
File diff suppressed because it is too large Load Diff
@@ -23,38 +23,60 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Code based on the hadrontherapy advanced example && radioprotection example
#ifndef GammaRayTelPhysicsList_h
#define GammaRayTelPhysicsList_h 1
#define GammarayTelPhysicsList_h 1
#include "G4VModularPhysicsList.hh"
#include "G4EmConfigurator.hh"
#include "globals.hh"
class G4VPhysicsConstructor;
class GammaRayTelPhysicsListMessenger;
class GammaRayTelPhysicsList: public G4VModularPhysicsList
{
public:
GammaRayTelPhysicsList();
virtual ~GammaRayTelPhysicsList();
public:
// SetCuts()
virtual void SetCuts();
void SetRegionCut(G4double);
void AddPhysicsList(const G4String& name);
// void ConstructProcess();
void ConstructParticle();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void AddPhysicsList(const G4String& name);
void ConstructProcess();
void AddPackage(const G4String& name);
private:
G4EmConfigurator em_config;
G4double cutForGamma;
G4double cutForElectron;
G4double cutForPositron;
G4bool helIsRegisted;
G4bool bicIsRegisted;
G4bool biciIsRegisted;
G4bool locIonIonInelasticIsRegistered;
G4bool radioactiveDecayIsRegisted;
G4String emName;
G4VPhysicsConstructor* emPhysicsList;
GammaRayTelPhysicsListMessenger* pMessenger;
G4VPhysicsConstructor* decPhysicsList;
std::vector<G4VPhysicsConstructor*> hadronPhys;
GammaRayTelPhysicsListMessenger* pMessenger;
};
#endif
@@ -23,8 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Code based on the hadrontherapy && radioprotection advanced example
#ifndef GammaRayTelPhysicsListMessenger_h
#define GammaRayTelPhysicsListMessenger_h 1
@@ -53,9 +56,12 @@ class GammaRayTelPhysicsListMessenger: public G4UImessenger
GammaRayTelPhysicsList* pPhysicsList;
G4UIdirectory* physDir;
G4UIcmdWithADoubleAndUnit* gammaCutCmd;
G4UIcmdWithADoubleAndUnit* electCutCmd;
G4UIcmdWithADoubleAndUnit* protoCutCmd;
G4UIcmdWithADoubleAndUnit* allCutCmd;
G4UIcmdWithAString* pListCmd;
G4UIcmdWithAString* packageListCmd;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -12,12 +12,11 @@
/control/verbose 1
/control/saveHistory
/run/verbose 1
/gun/sourceGen true
/control/execute emstd.mac
/control/execute physics.mac
/run/initialize
/particle/select gamma
/gun/sourceGen true
/gun/particle gamma
/gun/vertexRadius 25. cm
/gun/sourceType 2
@@ -12,12 +12,8 @@
/control/verbose 2
/control/saveHistory
/run/verbose 2
/gun/sourceGen true
/control/execute emlowe.mac
/run/initialize
/gun/sourceGen true
/gun/particle mu-
/gun/energy 100 MeV
@@ -12,9 +12,9 @@
/control/verbose 1
/control/saveHistory
/run/verbose 1
/gun/sourceGen true
/control/execute emstd.mac
/run/initialize
/gun/sourceGen true
#/control/execute emstd.mac
/gun/particle gamma
/gun/energy 1 GeV
/gun/vertexRadius 25. cm
@@ -1,8 +1,7 @@
/run/verbose 1
/tracking/storeTrajectory 1
/gun/sourceGen false
/control/execute emlowe.mac
/run/initialize
/gun/sourceGen false
/gps/particle e-
/gps/direction 0 0 -1
/gps/pos/type Plane
@@ -13,11 +13,9 @@
/control/verbose 1
/control/saveHistory
/run/verbose 1
/gun/sourceGen true
/run/initialize
/particle/select gamma
/gun/sourceGen true
/gun/particle gamma
/gun/vertexRadius 25. cm
/gun/sourceType 2
@@ -0,0 +1,108 @@
# ----------------------------------------------
# Example macro file for the GammaRayTel
# Visualization with OpenGL
# ----------------------------------------------
# Authors: R.Giannitrapani, F.Longo and G.Santin
# ----------------------------------------------
#
# Sets some default verbose
# and initializes the graphic.
#
/control/verbose 1
/control/saveHistory
/run/verbose 1
/control/execute physics_polarized.mac
/run/initialize
/gun/sourceGen true
#/particle/select geantino
/gun/particle gamma
/gun/vertexRadius 25. cm
/gun/polarization 1 0 0
/gun/energy 10 MeV
/gun/sourceType 2
# You can modify the geometry of the telescope via a messenger
/payload/setConvMat Silicon
/payload/setConvThick 1 micrometer
/payload/setNbOfTKRLayers 25
/payload/setNbOfCALLayers 2
/payload/update
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
#
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
#/vis/open DAWNFILE
#
# Use this open statement to create a .heprep file suitable for
# viewing in HepRApp:
#/vis/open HepRepFile
#
# Use this open statement to create a .wrl file suitable for
# viewing in a VRML viewer:
#/vis/open VRML2FILE
#
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
#
# Draw geometry:
/vis/drawVolume
#
# Specify view angle:
/vis/viewer/set/viewpointThetaPhi 90. 0.
#
# Specify zoom value:
#/vis/viewer/zoom 2.
#
# Specify style (surface or wireframe):
#/vis/viewer/set/style wireframe
#
# Draw coordinate axes:
#/vis/scene/add/axes 0 0 0 1 m
#
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
#/vis/scene/add/hits
#
# To draw only gammas:
#/vis/filtering/trajectories/create/particleFilter
#/vis/filtering/trajectories/particleFilter-0/add gamma
#
# To invert the above, drawing all particles except gammas,
# keep the above two lines but also add:
#/vis/filtering/trajectories/particleFilter-0/invert true
#
# Many other options are available with /vis/modeling and /vis/filtering.
# For example, to select colour by particle ID:
#/vis/modeling/trajectories/create/drawByParticleID
#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
#
# To superimpose all of the events from a given run:
#/vis/scene/endOfEventAction accumulate
#
# Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
#
# For file-based drivers, use this to create an empty detector view:
#/vis/viewer/flush
# run 10 events
/run/beamOn 100
@@ -0,0 +1,8 @@
# Definition of the physics processes and models
# Define the physics models
/physics/addPhysics LowE_Livermore # Electromagnetic model
/physics/addPhysics HPElastic # Hadronic elastic model with HP
/physics/addPhysics binary # Hadronic inelastic model
/physics/addPhysics binary_ion # Hadronic inelastic model for ions
/physics/addPhysics radioactive_decay # Radioactive decay
@@ -0,0 +1,8 @@
# Definition of the physics processes and models
# Define the physics models
/physics/addPhysics LowE_Polarized # Electromagnetic model
/physics/addPhysics HPElastic # Hadronic elastic model with HP
/physics/addPhysics binary # Hadronic inelastic model
/physics/addPhysics binary_ion # Hadronic inelastic model for ions
/physics/addPhysics radioactive_decay # Radioactive decay
@@ -8,7 +8,7 @@
/control/saveHistory
/run/verbose 1
#/control/execute emstd.mac
#/control/execute physics.mac
#/gun/particle gamma
#/gun/energy 1 GeV
#/gun/vertexRadius 25. cm
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: GammaRayTelDetectorConstruction.cc 82630 2014-07-01 09:43:00Z gcosmo $
// $Id: GammaRayTelDetectorConstruction.cc 101905 2016-12-07 11:34:39Z gunter $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -776,18 +776,18 @@ G4VPhysicalVolume* GammaRayTelDetectorConstruction::ConstructPayload()
//
// Invisible Volume
logicWorld->SetVisAttributes (G4VisAttributes::Invisible);
logicPayload->SetVisAttributes (G4VisAttributes::Invisible);
logicTKR->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileX->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRActiveTileY->SetVisAttributes(G4VisAttributes::Invisible);
logicPlane->SetVisAttributes(G4VisAttributes::Invisible);
logicConverter->SetVisAttributes(G4VisAttributes::Invisible);
logicCAL->SetVisAttributes(G4VisAttributes::Invisible);
logicCALLayerX->SetVisAttributes(G4VisAttributes::Invisible);
logicCALLayerY->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRStripX->SetVisAttributes(G4VisAttributes::Invisible);
logicTKRStripY->SetVisAttributes(G4VisAttributes::Invisible);
logicWorld->SetVisAttributes (G4VisAttributes::GetInvisible());
logicPayload->SetVisAttributes (G4VisAttributes::GetInvisible());
logicTKR->SetVisAttributes(G4VisAttributes::GetInvisible());
logicTKRActiveTileX->SetVisAttributes(G4VisAttributes::GetInvisible());
logicTKRActiveTileY->SetVisAttributes(G4VisAttributes::GetInvisible());
logicPlane->SetVisAttributes(G4VisAttributes::GetInvisible());
logicConverter->SetVisAttributes(G4VisAttributes::GetInvisible());
logicCAL->SetVisAttributes(G4VisAttributes::GetInvisible());
logicCALLayerX->SetVisAttributes(G4VisAttributes::GetInvisible());
logicCALLayerY->SetVisAttributes(G4VisAttributes::GetInvisible());
logicTKRStripX->SetVisAttributes(G4VisAttributes::GetInvisible());
logicTKRStripY->SetVisAttributes(G4VisAttributes::GetInvisible());
// Some visualization styles
@@ -835,8 +835,8 @@ void GammaRayTelDetectorConstruction::ConstructSDandField()
trackerSD.Put(SD);
}
G4SDManager::GetSDMpointer()->AddNewDetector(trackerSD.Get());
//Flags the strips as sensitive .
if (logicTKRStripX)
SetSensitiveDetector(logicTKRStripX,trackerSD.Get()); // ActiveStripX
if (logicTKRStripY)
@@ -851,6 +851,7 @@ void GammaRayTelDetectorConstruction::ConstructSDandField()
GammaRayTelCalorimeterSD* SD = new GammaRayTelCalorimeterSD("CalorimeterSD");
calorimeterSD.Put(SD);
}
G4SDManager::GetSDMpointer()->AddNewDetector(calorimeterSD.Get());
if (logicCALDetectorX)
SetSensitiveDetector(logicCALDetectorX,calorimeterSD.Get()); // BarX
if (logicCALDetectorY)
@@ -866,7 +867,7 @@ void GammaRayTelDetectorConstruction::ConstructSDandField()
("AnticoincidenceSD");
anticoincidenceSD.Put(SD);
}
G4SDManager::GetSDMpointer()->AddNewDetector(anticoincidenceSD.Get());
if (logicACT)
SetSensitiveDetector(logicACT,anticoincidenceSD.Get()); // ACD top
if (logicACL1)
@@ -51,9 +51,10 @@ void GammaRayTelGeneralPhysics::ConstructParticle()
void GammaRayTelGeneralPhysics::ConstructProcess()
{
// Add Decay Process
aParticleIterator->reset();
while( (*aParticleIterator)() ){
G4ParticleDefinition* particle = aParticleIterator->value();
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (fDecayProcess.IsApplicable(*particle) && !particle->IsShortLived()) {
pmanager ->AddProcess(&fDecayProcess);
@@ -23,179 +23,233 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// $Id: GammaRayTelPhysicsList.cc 66508 2012-12-19 10:16:45Z gcosmo $
//
//
#include <iomanip>
// Code based on the hadrontherapy && radioprotection advanced example
#include "GammaRayTelPhysicsList.hh"
#include "globals.hh"
#include "G4SystemOfUnits.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
#include "G4Material.hh"
#include "G4MaterialTable.hh"
#include "G4ios.hh"
#include "GammaRayTelParticles.hh"
#include "GammaRayTelGeneralPhysics.hh"
#include "GammaRayTelEMstdPhysics.hh"
#include "GammaRayTelEMlowePhysics.hh"
#include "GammaRayTelMuonPhysics.hh"
#include "GammaRayTelHadronPhysics.hh"
#include "GammaRayTelIonPhysics.hh"
#include "GammaRayTelPhysicsListMessenger.hh"
#include "G4PhysListFactory.hh"
#include "G4VPhysicsConstructor.hh"
// Physic lists (contained inside the Geant4 distribution)
#include "G4EmStandardPhysics_option3.hh"
#include "G4EmLivermorePhysics.hh"
#include "G4EmPenelopePhysics.hh"
#include "G4EmLivermorePolarizedPhysics.hh" // TBC
#include "G4DecayPhysics.hh"
#include "G4HadronElasticPhysics.hh"
#include "G4HadronDElasticPhysics.hh"
#include "G4HadronElasticPhysicsHP.hh"
#include "G4IonBinaryCascadePhysics.hh"
#include "G4Decay.hh"
#include "G4StepLimiter.hh"
#include "G4LossTableManager.hh"
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4ProcessManager.hh"
#include "G4IonFluctuations.hh"
#include "G4IonParametrisedLossModel.hh"
#include "G4EmProcessOptions.hh"
#include "G4HadronPhysicsQGSP_BIC_HP.hh"
#include "G4RadioactiveDecayPhysics.hh"
#include "GammaRayTelPhysicsListMessenger.hh"
GammaRayTelPhysicsList::GammaRayTelPhysicsList(): G4VModularPhysicsList()
/////////////////////////////////////////////////////////////////////////////
GammaRayTelPhysicsList::GammaRayTelPhysicsList() : G4VModularPhysicsList()
{
// default cut value (1.0mm)
defaultCutValue = 1.0*mm;
SetVerboseLevel(1);
G4LossTableManager::Instance();
defaultCutValue = 100*micrometer;
cutForGamma = defaultCutValue;
cutForElectron = defaultCutValue;
cutForPositron = defaultCutValue;
helIsRegisted = false;
bicIsRegisted = false;
biciIsRegisted = false;
locIonIonInelasticIsRegistered = false;
radioactiveDecayIsRegisted = false;
pMessenger = new GammaRayTelPhysicsListMessenger(this);
// Particles
RegisterPhysics( new GammaRayTelParticles("particles") );
G4cout << "PARTICLES DONE" << G4endl;
SetVerboseLevel(1);
// EM physics
emPhysicsList = new G4EmStandardPhysics_option3(1);
emName = G4String("emstandard_opt3");
emPhysicsList = new GammaRayTelEMstdPhysics;
emName = G4String("Standard EM");
// General Physics
RegisterPhysics( new GammaRayTelGeneralPhysics("general") );
G4cout << "GENERAL DONE" << G4endl;
// Muon Physics
RegisterPhysics( new GammaRayTelMuonPhysics("muon"));
G4cout << "MUON DONE" << G4endl;
// Hadron Physics
RegisterPhysics( new GammaRayTelHadronPhysics("hadron"));
G4cout << "HADRONS DONE" << G4endl;
// Ion Physics
RegisterPhysics( new GammaRayTelIonPhysics("ion"));
G4cout << "IONS DONE" << G4endl;
// Decay physics and all particles
decPhysicsList = new G4DecayPhysics();
}
/////////////////////////////////////////////////////////////////////////////
GammaRayTelPhysicsList::~GammaRayTelPhysicsList()
{
delete pMessenger;
// delete emPhysicsList;
delete emPhysicsList;
delete decPhysicsList;
for(size_t i=0; i<hadronPhys.size(); i++) {delete hadronPhys[i];}
}
#include "G4Region.hh"
#include "G4RegionStore.hh"
#include "G4ProductionCuts.hh"
void GammaRayTelPhysicsList::SetCuts()
{
if (verboseLevel >0){
G4cout << "GammaRayTelPhysicsList::SetCuts: default cut length : "
<< G4BestUnit(defaultCutValue,"Length") << G4endl;
}
// These values are used as the default production thresholds
// for the world volume.
G4cout << "CUT STD" << G4endl;
SetCutsWithDefault();
}
void GammaRayTelPhysicsList::SetRegionCut(G4double cutvalue)
{
SetCutsWithDefault();
if (verboseLevel >0){
G4cout << "GammaRayTelPhysicsList::SetCuts: default cut length : "
<< G4BestUnit(defaultCutValue,"Length") << G4endl;
}
G4cout << "CUTS NEW" << G4endl;
// Production thresholds for detector regions
G4String regName[] = {"Calorimeter","Tracker"};
// G4double cutValue[] = {1*mm, 0.1*mm};
G4double cutValue[] = {cutvalue, cutvalue/10.};
for(G4int i=0;i<2;i++)
{
G4Region* reg = G4RegionStore::GetInstance()->GetRegion(regName[i]);
G4ProductionCuts* cuts = new G4ProductionCuts;
cuts->SetProductionCut(cutValue[i]);
reg->SetProductionCuts(cuts);
}
}
/////////////////////////////////////////////////////////////////////////////
void GammaRayTelPhysicsList::AddPackage(const G4String& name)
{
G4PhysListFactory factory;
G4VModularPhysicsList* phys =factory.GetReferencePhysList(name);
G4int i=0;
const G4VPhysicsConstructor* elem= phys->GetPhysics(i);
G4VPhysicsConstructor* tmp = const_cast<G4VPhysicsConstructor*> (elem);
while (elem !=0)
{
RegisterPhysics(tmp);
elem= phys->GetPhysics(++i) ;
tmp = const_cast<G4VPhysicsConstructor*> (elem);
}
}
/////////////////////////////////////////////////////////////////////////////
void GammaRayTelPhysicsList::ConstructParticle()
{
decPhysicsList->ConstructParticle();
}
/////////////////////////////////////////////////////////////////////////////
void GammaRayTelPhysicsList::ConstructProcess()
{
// transportation
//
AddTransportation();
// electromagnetic physics list
//
emPhysicsList->ConstructProcess();
em_config.AddModels();
// decay physics list
//
decPhysicsList->ConstructProcess();
// hadronic physics lists
for(size_t i=0; i<hadronPhys.size(); i++) {
hadronPhys[i]->ConstructProcess();
}
// step limitation (as a full process)
//
// AddStepMax();
}
/////////////////////////////////////////////////////////////////////////////
void GammaRayTelPhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>1) {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
}
if (name == emName) return;
if (name == "Standard EM") {
/////////////////////////////////////////////////////////////////////////////
// ELECTROMAGNETIC MODELS
/////////////////////////////////////////////////////////////////////////////
if (name == "standard_opt3") {
emName = name;
delete emPhysicsList;
emPhysicsList = new GammaRayTelEMstdPhysics();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: EM Standard" << G4endl;
} else if (name == "LowE EM") {
emPhysicsList = new G4EmStandardPhysics_option3();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmStandardPhysics_option3" << G4endl;
} else if (name == "LowE_Livermore") {
emName = name;
delete emPhysicsList;
emPhysicsList = new GammaRayTelEMlowePhysics();;
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: EM LowE" << G4endl;
}
else {
emPhysicsList = new G4EmLivermorePhysics();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
} else if (name == "LowE_Penelope") {
emName = name;
delete emPhysicsList;
emPhysicsList = new G4EmPenelopePhysics();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
} else if (name == "LowE_Polarized") {
emName = name;
delete emPhysicsList;
emPhysicsList = new G4EmLivermorePolarizedPhysics();
G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
/////////////////////////////////////////////////////////////////////////////
// HADRONIC MODELS
/////////////////////////////////////////////////////////////////////////////
} else if (name == "elastic" && !helIsRegisted) {
G4cout << "THE FOLLOWING HADRONIC ELASTIC PHYSICS LIST HAS BEEN ACTIVATED: G4HadronElasticPhysics()" << G4endl;
hadronPhys.push_back( new G4HadronElasticPhysics());
helIsRegisted = true;
} else if (name == "DElastic" && !helIsRegisted) {
hadronPhys.push_back( new G4HadronDElasticPhysics());
helIsRegisted = true;
} else if (name == "HPElastic" && !helIsRegisted) {
hadronPhys.push_back( new G4HadronElasticPhysicsHP());
helIsRegisted = true;
} else if (name == "binary" && !bicIsRegisted) {
hadronPhys.push_back(new G4HadronPhysicsQGSP_BIC_HP());
bicIsRegisted = true;
G4cout << "THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: HadronPhysicsQGSP_BIC_HP()" << G4endl;
} else if (name == "binary_ion" && !biciIsRegisted) {
hadronPhys.push_back(new G4IonBinaryCascadePhysics());
biciIsRegisted = true;
G4cout << "THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: G4IonBinaryCascadePhysics()" << G4endl;
} else if (name == "radioactive_decay" && !radioactiveDecayIsRegisted ) {
hadronPhys.push_back(new G4RadioactiveDecayPhysics());
radioactiveDecayIsRegisted = true;
G4cout << "THE FOLLOWING HADRONIC INELASTIC PHYSICS LIST HAS BEEN ACTIVATED: G4RadioactiveDecayPhysics()" << G4endl;
} else {
G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
<< " is not defined"
<< G4endl;
}
G4cout << "REGISTRATION DONE " << G4endl;
RegisterPhysics(emPhysicsList);
}
/////////////////////////////////////////////////////////////////////////////
void GammaRayTelPhysicsList::SetCuts()
{
if (verboseLevel >0){
G4cout << "PhysicsList::SetCuts:";
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
}
G4double lowLimit = 250. * eV;
G4double highLimit = 100. * GeV;
G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(lowLimit, highLimit);
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
if (verboseLevel>0) DumpCutValuesTable();
}
void GammaRayTelPhysicsList::SetCutForGamma(G4double cut)
{
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
void GammaRayTelPhysicsList::SetCutForElectron(G4double cut)
{
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
}
void GammaRayTelPhysicsList::SetCutForPositron(G4double cut)
{
cutForPositron = cut;
SetParticleCuts(cutForPositron, G4Positron::Positron());
}
@@ -23,6 +23,11 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// Authors: Susanna Guatelli, susanna@uow.edu.au,
// Authors: Jeremy Davis, jad028@uowmail.edu.au
//
// Code based on the hadrontherapy && radioprotection advanced example
#include "GammaRayTelPhysicsListMessenger.hh"
#include "GammaRayTelPhysicsList.hh"
@@ -37,41 +42,80 @@ GammaRayTelPhysicsListMessenger::GammaRayTelPhysicsListMessenger(GammaRayTelPhys
physDir = new G4UIdirectory("/physics/");
physDir->SetGuidance("Commands to activate physics models and set cuts");
gammaCutCmd = new G4UIcmdWithADoubleAndUnit("/physics/setGCut",this);
gammaCutCmd->SetGuidance("Set gamma cut.");
gammaCutCmd->SetParameterName("Gcut",false);
gammaCutCmd->SetUnitCategory("Length");
gammaCutCmd->SetRange("Gcut>0.0");
gammaCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
electCutCmd = new G4UIcmdWithADoubleAndUnit("/physics/setECut",this);
electCutCmd->SetGuidance("Set electron cut.");
electCutCmd->SetParameterName("Ecut",false);
electCutCmd->SetUnitCategory("Length");
electCutCmd->SetRange("Ecut>0.0");
electCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
protoCutCmd = new G4UIcmdWithADoubleAndUnit("/physics/setPCut",this);
protoCutCmd->SetGuidance("Set positron cut.");
protoCutCmd->SetParameterName("Pcut",false);
protoCutCmd->SetUnitCategory("Length");
protoCutCmd->SetRange("Pcut>0.0");
protoCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
allCutCmd = new G4UIcmdWithADoubleAndUnit("/physics/setCuts",this);
allCutCmd->SetGuidance("Set cut for all.");
allCutCmd->SetParameterName("cut",false);
allCutCmd->SetUnitCategory("Length");
allCutCmd->SetRange("cut>0.0");
allCutCmd->AvailableForStates(G4State_Idle);
allCutCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
pListCmd = new G4UIcmdWithAString("/physics/addPhysics",this);
pListCmd->SetGuidance("Add physics list.");
pListCmd->SetParameterName("PList",false);
pListCmd->AvailableForStates(G4State_PreInit);
packageListCmd = new G4UIcmdWithAString("/physics/addPackage",this);
packageListCmd->SetGuidance("Add physics package.");
packageListCmd->SetParameterName("package",false);
packageListCmd->AvailableForStates(G4State_PreInit);
}
/////////////////////////////////////////////////////////////////////////////
GammaRayTelPhysicsListMessenger::~GammaRayTelPhysicsListMessenger()
{
delete gammaCutCmd;
delete electCutCmd;
delete protoCutCmd;
delete allCutCmd;
delete pListCmd;
delete physDir;
delete packageListCmd;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void GammaRayTelPhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == gammaCutCmd )
{ pPhysicsList->SetCutForGamma(gammaCutCmd->GetNewDoubleValue(newValue));}
if( command == electCutCmd )
{ pPhysicsList->SetCutForElectron(electCutCmd->GetNewDoubleValue(newValue));}
if( command == protoCutCmd )
{ pPhysicsList->SetCutForPositron(protoCutCmd->GetNewDoubleValue(newValue));}
if( command == allCutCmd )
{
G4double cut = allCutCmd->GetNewDoubleValue(newValue);
pPhysicsList->SetRegionCut(cut);
pPhysicsList->SetCutForGamma(cut);
pPhysicsList->SetCutForElectron(cut);
pPhysicsList->SetCutForPositron(cut);
}
if( command == pListCmd )
{ pPhysicsList->AddPhysicsList(newValue);}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
if( command == packageListCmd )
{ pPhysicsList->AddPackage(newValue);}
}
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: GammaRayTelPrimaryGeneratorAction.cc 82630 2014-07-01 09:43:00Z gcosmo $
// $Id: GammaRayTelPrimaryGeneratorAction.cc 100697 2016-10-31 11:32:35Z gcosmo $
// ------------------------------------------------------------
// GEANT 4 class implementation file
// CERN Geneva Switzerland
@@ -224,7 +224,7 @@ void GammaRayTelPrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
case 3:
break;
}
G4cout << particleGun->GetParticleDefinition()->GetParticleName() << G4endl;
particleGun->GeneratePrimaryVertex(anEvent);
}
else
+12
View File
@@ -7,6 +7,18 @@ http://g4advancedexamples.lngs.infn.it/Examples/hadrontherapy
====================================================
History file of the Hadrontherapy application
====================================================
19.11.2016 A.Dotti Tag: hadrontherapy-V10-02-05
- explicit set of SD to manager
07.11.2016 G.Folger Tag: hadrontherapy-V10-02-04
- Remove direct use of theParticleIterator, and use GetParticleIterator() method.
03.11.2016 L. Pandola and J. Pipek. Tag: hadrontherapy-V10-02-03
- Fixed Bugzilla #1879
22.09.2016 GAP Cirrone Tag: hadrontherapy-V10-02-02
- Updated and improved the main file
- Coorected an overlap in the geometry of the passive beamline
- Code cleaning
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
@@ -0,0 +1,247 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// ----------------------------------------------------------------------------
// GEANT 4 - Hadrontherapy example
// ----------------------------------------------------------------------------
//
// MAIN AUTHORS
// ====================
// G.A.P. Cirrone(a)*, F.Romano(a)
//
// *Corresponding author, email to pablo.cirrone@lns.infn.it
//
// WEB
// ===========
// http://www.lns.infn.it/link/Hadrontherapy
//
//
// ==========> PAST CONTRIBUTORS <==========
//
// R. Calcagno(a), G.Danielsen (b), F.Di Rosa(a),
// S.Guatelli(c), A.Heikkinen(b), P.Kaitaniemi(b),
// A.Lechner(d), S.E.Mazzaglia(a), M.G.Pia(e),
// G.Russo(a), M.Russo(a), A. Tramontana (a),
// A.Varisano(a)
//
// (a) Laboratori Nazionali del Sud of INFN, Catania, Italy
// (b) Helsinki Institute of Physics, Helsinki, Finland
// (c) University of Wallongong, Australia
// (d) CERN, Geneve, Switzwerland
// (e) INFN Section of Genova, Genova, Italy
// (f) Physics and Astronomy Department, Univ. of Catania, Catania, Italy
//
//
// ----------------------------------------------------------------------------
#include "G4RunManager.hh"
#include "G4UImanager.hh"
#include "G4PhysListFactory.hh"
#include "G4VModularPhysicsList.hh"
#include "HadrontherapyEventAction.hh"
#include "HadrontherapyPhysicsList.hh"
#include "HadrontherapyDetectorSD.hh"
#include "HadrontherapyPrimaryGeneratorAction.hh"
#include "HadrontherapyRunAction.hh"
#include "HadrontherapyMatrix.hh"
#include "Randomize.hh"
#include "G4UImessenger.hh"
#include "globals.hh"
#include "HadrontherapySteppingAction.hh"
#include "HadrontherapyAnalysisManager.hh"
#include "HadrontherapyGeometryController.hh"
#include "HadrontherapyGeometryMessenger.hh"
#include "HadrontherapyInteractionParameters.hh"
#include "HadrontherapyLet.hh"
#include "G4ScoringManager.hh"
#include "G4ParallelWorldPhysics.hh"
#include <time.h>
//************************MT*********************
#ifdef G4MULTITHREADED
#include "G4MTRunManager.hh"
#else
#include "G4RunManager.hh"
#endif
#include "HadrontherapyActionInitialization.hh"
#ifdef G4VIS_USE
#include "G4VisExecutive.hh"
#endif
#ifdef G4UI_USE
#include "G4UIExecutive.hh"
#endif
//////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc ,char ** argv)
{
// Set the Random engine
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine());
// Only if an initial random seed is needed
//G4int seed =1414159599;// time(0);
//CLHEP::HepRandom::setTheSeed(seed);
// G4cout << "******************************************************************"<< seed << G4endl;
//************************MT*********************
#ifdef G4MULTITHREADED
G4MTRunManager* runManager = new G4MTRunManager;
//runManager->SetNumberOfThreads(2); // Is equal to 2 by default, it can be setted also with the macro command: /run/numberOfThread 2
#else
G4RunManager* runManager = new G4RunManager;
#endif
// Geometry controller is responsible for instantiating the
// geometries. All geometry specific setup tasks are now in class
// HadrontherapyGeometryController.
HadrontherapyGeometryController *geometryController = new HadrontherapyGeometryController();
// Connect the geometry controller to the G4 user interface
HadrontherapyGeometryMessenger *geometryMessenger = new HadrontherapyGeometryMessenger(geometryController);
G4ScoringManager *scoringManager = G4ScoringManager::GetScoringManager();
scoringManager->SetVerboseLevel(1);
// Initialize the default Hadrontherapy geometry
geometryController->SetGeometry("default");
// Initialize command based scoring
G4ScoringManager::GetScoringManager();
// Initialize the physics
G4PhysListFactory factory;
G4VModularPhysicsList* phys = 0;
G4String physName = "";
// Physics List name defined via environment variable
char* path = getenv("PHYSLIST");
if (path) { physName = G4String(path); }
if(physName != "" && factory.IsReferencePhysList(physName))
{
phys = factory.GetReferencePhysList(physName);
}
if (phys)
{
G4cout << "Going to register G4ParallelWorldPhysics" << G4endl;
phys->RegisterPhysics(new G4ParallelWorldPhysics("DetectorROGeometry"));
}
else
{
G4cout << "Using HadrontherapyPhysicsList()" << G4endl;
phys = new HadrontherapyPhysicsList();
}
runManager->SetUserInitialization(phys);
//************************MT
runManager->SetUserInitialization(new HadrontherapyActionInitialization);
// Interaction data: stopping powers
HadrontherapyInteractionParameters* pInteraction = new HadrontherapyInteractionParameters(true);
// Initialize analysis
HadrontherapyAnalysisManager* analysis = HadrontherapyAnalysisManager::GetInstance();
#ifdef G4ANALYSIS_USE_ROOT
analysis -> book();
#endif
// Get the pointer to the visualization manager
#ifdef G4VIS_USE
G4VisManager* visManager = new G4VisExecutive;
visManager -> Initialize();
#endif
// Get the pointer to the User Interface manager
G4UImanager* UImanager = G4UImanager::GetUIpointer();
if (argc == 1) // Define UI session for interactive mode.
{
#ifdef G4UI_USE
G4UIExecutive* ui = new G4UIExecutive(argc, argv);
G4cout << " UI session starts ..." << G4endl;
UImanager -> ApplyCommand("/control/execute macro/defaultMacro.mac");
ui -> SessionStart();
delete ui;
#endif
}
else // Batch mode
{
G4String command = "/control/execute ";
G4String fileName = argv[1];
UImanager -> ApplyCommand(command+fileName);
}
// Job termination
// Store dose & fluence data to ASCII & ROOT files
if ( HadrontherapyMatrix * pMatrix = HadrontherapyMatrix::GetInstance() )
{
pMatrix -> TotalEnergyDeposit();
pMatrix -> StoreDoseFluenceAscii();
#ifdef G4ANALYSIS_USE_ROOT
pMatrix -> StoreDoseFluenceRoot();
#endif
}
if (HadrontherapyLet *let = HadrontherapyLet::GetInstance())
if(let -> doCalculation)
{
let -> LetOutput(); // Calculate let
let -> StoreLetAscii(); // Store it
#ifdef G4ANALYSIS_USE_ROOT
let -> StoreLetRoot();
#endif
}
#ifdef G4ANALYSIS_USE_ROOT
if (analysis -> IsTheTFile()) analysis -> flush(); // Finalize & write the root file
#endif
#ifdef G4VIS_USE
delete visManager;
#endif
delete geometryMessenger;
delete geometryController;
delete pInteraction;
delete runManager;
delete analysis;
return 0;
}
@@ -0,0 +1,623 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
*************************************************************
Geant4 version Name: geant4-10-03 (9-December-2016)
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
drawByAttribute
drawByCharge
drawByOriginVolume
drawByParticleID
drawByEncounteredVolume
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
encounteredVolumeFilter
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
End of Event User Vis Actions: none
End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
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
Checking overlaps for volume BrassTube2 ... OK!
/run/geometryModified
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 1 1 0
DetectorLog 1 1 0
### === Auger cascade flag: 1
### === Ignore cuts flag: 1
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, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
ePairProd: for e- 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 21x1001 from 0.1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : 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 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, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
ePairProd: for e+ 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 21x1001 from 0.1 GeV to 10 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 10 TeV
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: 1, 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: 1
===== 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: 1, 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: 1, 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: 1, 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: 1, 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: 1, 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: 1, 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: 1, 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=7.9s Real=7.96s 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.38 MB
============================================================
RunManagerKernel is deleted. Good bye :)
@@ -18,7 +18,7 @@
##########################
# Set of the physic models
#
/Physics/addPhysics QGSP_BIC_EMY
/Physics/addPhysics HADRONTHERAPY_1
##########################
@@ -39,7 +39,7 @@
# Visualisation
#
/vis/scene/create
/vis/open OGL
/vis/open OGLI
#/vis/viewer/set/background white
/vis/viewer/flush
/vis/viewer/set/viewpointThetaPhi 30 140 deg
@@ -72,7 +72,7 @@
#---------------------------gps-----------------
/gps/pos/shape Circle
/gps/pos/centre -187. 0. 0. cm
/gps/pos/centre -10. 0. 0. cm
/gps/pos/radius 0. mm
/gps/pos/sigma_r 2. mm
/gps/particle ion
@@ -97,7 +97,7 @@
# the beam energy is in gaussian profile
#
/gps/ene/type Gauss
/gps/ene/mono 744 MeV
/gps/ene/mono 3240 MeV
/gps/ene/sigma 0.744 MeV
@@ -106,12 +106,12 @@
/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/size 20 20 20 cm
/changeDetector/voxelSize .2 20 20 cm
# Put the detector in the lower left corner of the phantom
/changeDetector/displacement 0 18 18 cm
/changeDetector/displacement 0 8 8 cm
/changePhantom/update
#########################
@@ -129,6 +129,6 @@
#
#########################
/run/beamOn 4
/run/beamOn 2000
@@ -26,16 +26,25 @@
##########################
# Visualisation
#
/vis/open OGL 600x600-0+0
/vis/scene/create
/vis/open OGLI
/vis/viewer/flush
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
/vis/viewer/set/autoRefresh false
/vis/verbose errors
/vis/drawVolume
/vis/viewer/set/viewpointThetaPhi 30 140 deg
/vis/viewer/zoom 1
/vis/viewer/pan -10 0 cm
/vis/scene/add/trajectories
/vis/scene/add/trajectories smooth
/vis/scene/endOfEventAction accumulate
/vis/viewer/set/autoRefresh true
/vis/verbose warnings
####################################################
# Set here the CUT and the STEP MAX for the tracking.
# Suggested values of cut and step
@@ -55,7 +64,6 @@
# energy and position along the X direction
#
#---------------------------gps-----------------
/gps/pos/shape Circle
/gps/pos/centre -310. 0. 0. cm
@@ -80,7 +88,7 @@
# the beam energy is in gaussian profile
#
/gps/ene/type Gauss
/gps/ene/mono 62 MeV
/gps/ene/mono 63.5 MeV
/gps/ene/sigma 0.3 MeV
@@ -101,7 +109,7 @@
###################################################
#
/changeDetector/size 4 4 4 cm
/changeDetector/voxelSize .4 40 40 mm
/changeDetector/voxelSize .1 40 40 mm
# Put the detector in the lower left corner of the phantom
#
@@ -124,7 +132,9 @@
# Default material is water liquid
#/changePhantom/material G4_PLEXIGLASS
/run/beamOn 10
/run/printProgress 10
/run/beamOn 1
/control/shell mkdir -p SimulationOutputs/proton/BraggPeak
/control/shell mv DoseDistribution.root SimulationOutputs/proton/BraggPeak/protonBraggPeak.root
@@ -324,7 +324,7 @@ void HadrontherapyDetectorROGeometry::ConstructSD()
G4String sensitiveDetectorName = "RODetector";
HadrontherapyDetectorSD* detectorSD = new HadrontherapyDetectorSD(sensitiveDetectorName);
G4SDManager::GetSDMpointer()->AddNewDetector(detectorSD);
SetSensitiveDetector(sensitiveLogicalVolume,detectorSD);
@@ -40,8 +40,8 @@ HadrontherapyElectricTabulatedField3D::HadrontherapyElectricTabulatedField3D( co
G4double ElenUnit= cm;
G4double EfieldUnit= volt/m;
G4cout << "\n-----------------------------------------------------------"
<< "\n Electric field"
<< "\n-----------------------------------------------------------";
<< "\n Electric field"
<< "\n-----------------------------------------------------------";
G4cout << "\n ---> " "Reading the field grid from " << filename << " ... " << endl;
G4AutoLock lock(&MyHadrontherapyLockEField);
@@ -143,9 +143,9 @@ void HadrontherapyElectricTabulatedField3D::GetFieldValue(const G4double Epoint[
G4double z1 = Epoint[2] + feZoffset;
// Check that the point is within the defined region
if ( x1>=Eminx && x1<Emaxx &&
y1>=Eminy && y1<Emaxy &&
z1>=Eminz && z1<Emaxz ) {
if ( x1>Eminx && x1<Emaxx &&
y1>Eminy && y1<Emaxy &&
z1>Eminz && z1<Emaxz ) {
// Position of given point within region, normalized to the range
// [0,1]
@@ -169,9 +169,9 @@ void HadrontherapyElectricTabulatedField3D::GetFieldValue(const G4double Epoint[
// The indices of the nearest tabulated point whose coordinates
// are all less than those of the given point
G4int exindex = static_cast<G4int>(exdindex);
G4int eyindex = static_cast<G4int>(eydindex);
G4int ezindex = static_cast<G4int>(ezdindex);
G4int exindex = static_cast<G4int>(std::floor(exdindex));
G4int eyindex = static_cast<G4int>(std::floor(eydindex));
G4int ezindex = static_cast<G4int>(std::floor(ezdindex));
/*
#ifdef DEBUG_G4intERPOLATING_FIELD
@@ -43,7 +43,7 @@
/////////////////////////////////////////////////////////////////////////////
HadrontherapyEventAction::HadrontherapyEventAction() :
drawFlag("all" ),printModulo(1000), pointerEventMessenger(0)
drawFlag("all" ),printModulo(10), pointerEventMessenger(0)
{
hitsCollectionID = -1;
pointerEventMessenger = new HadrontherapyEventActionMessenger(this);
@@ -53,13 +53,12 @@ HadrontherapyEventAction::HadrontherapyEventAction() :
HadrontherapyEventAction::~HadrontherapyEventAction()
{
delete pointerEventMessenger;
}
}
/////////////////////////////////////////////////////////////////////////////
void HadrontherapyEventAction::BeginOfEventAction(const G4Event* evt)
{
G4int evtNb = evt->GetEventID();
//printing survey
if (evtNb%printModulo == 0)
G4cout << "\n---> Begin of Event: " << evtNb << G4endl;
@@ -142,9 +142,9 @@ void HadrontherapyMagneticField3D::GetFieldValue(const double point[4],
double z = point[2];
// Check that the point is within the defined region
if ( x>=minx && x<maxx &&
y>=miny && y<maxy &&
z>=minz && z<maxz ) {
if ( x>minx && x<maxx &&
y>miny && y<maxy &&
z>minz && z<maxz ) {
// Position of given point within region, normalized to the range
// [0,1]
double xfraction = (x - minx) / dx;
@@ -167,9 +167,9 @@ void HadrontherapyMagneticField3D::GetFieldValue(const double point[4],
// The indices of the nearest tabulated point whose coordinates
// are all less than those of the given point
int xindex = static_cast<int>(xdindex);
int yindex = static_cast<int>(ydindex);
int zindex = static_cast<int>(zdindex);
int xindex = static_cast<int>(std::floor(xdindex));
int yindex = static_cast<int>(std::floor(ydindex));
int zindex = static_cast<int>(std::floor(zdindex));
#ifdef DEBUG_INTERPOLATING_FIELD
@@ -469,12 +469,12 @@ for (G4int i=1;i<StepNumbers;i++)
G4VisAttributes * red = new G4VisAttributes( G4Colour(1. ,0. ,0.));
red-> SetVisibility(true);
red-> SetForceSolid(true);
logicMotherMod -> SetVisAttributes(G4VisAttributes::Invisible);
logicMotherMod -> SetVisAttributes(G4VisAttributes::GetInvisible());
logicMod1 ->SetVisAttributes(G4VisAttributes::Invisible);
logicMod2 ->SetVisAttributes(G4VisAttributes::Invisible);
logicMod3 ->SetVisAttributes(G4VisAttributes::Invisible);
logicMod4 ->SetVisAttributes(G4VisAttributes::Invisible);
logicMod1 ->SetVisAttributes(G4VisAttributes::GetInvisible());
logicMod2 ->SetVisAttributes(G4VisAttributes::GetInvisible());
logicMod3 ->SetVisAttributes(G4VisAttributes::GetInvisible());
logicMod4 ->SetVisAttributes(G4VisAttributes::GetInvisible());
for (G4int i=1;i<StepNumbers;i++)
{
@@ -280,9 +280,10 @@ void HadrontherapyPhysicsList::AddStepMax()
HadrontherapyStepMax* stepMaxProcess = new HadrontherapyStepMax();
G4AutoDelete::Register( stepMaxProcess );
theParticleIterator->reset();
while ((*theParticleIterator)()){
G4ParticleDefinition* particle = theParticleIterator->value();
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ((*particleIterator)()){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (stepMaxProcess->IsApplicable(*particle) && pmanager)
@@ -727,7 +727,7 @@ void LaserDrivenBeamLine::ConstructLaserDrivenBeamLine()
// The treatment room is invisible in the Visualisation
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::Invisible);
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
// The various components of the energyselector are constructed calling
// the following methods
@@ -1049,7 +1049,7 @@ G4double VirtualLateralPosX=GuardRingPosX+GuardRingThickness/2+1*cm+(FaradayCupB
logicVirtualWindow,
physicVirtualMag,
true,0);
logicVirtualWindow->SetVisAttributes (G4VisAttributes::Invisible);
logicVirtualWindow->SetVisAttributes (G4VisAttributes::GetInvisible());
///// GuardRing /////
@@ -1094,7 +1094,7 @@ G4double VirtualLateralPosX=GuardRingPosX+GuardRingThickness/2+1*cm+(FaradayCupB
physicVirtualMag,
true,0);
logicVirtualMiddle->SetVisAttributes (G4VisAttributes::Invisible);
logicVirtualMiddle->SetVisAttributes (G4VisAttributes::GetInvisible());
///// FaradayCupBottom /////
@@ -1135,7 +1135,7 @@ G4double VirtualLateralPosX=GuardRingPosX+GuardRingThickness/2+1*cm+(FaradayCupB
physicVirtualMag,
true,0);
logicVirtualBottom->SetVisAttributes (G4VisAttributes::Invisible);
logicVirtualBottom->SetVisAttributes (G4VisAttributes::GetInvisible());
///// Cup /////
@@ -1177,7 +1177,7 @@ G4double VirtualLateralPosX=GuardRingPosX+GuardRingThickness/2+1*cm+(FaradayCupB
physicVirtualMag,
true,0);
logicVirtualOverBottom->SetVisAttributes (G4VisAttributes::Invisible);
logicVirtualOverBottom->SetVisAttributes (G4VisAttributes::GetInvisible());
///// Virtual Lateral /////
@@ -1202,7 +1202,7 @@ logicVirtualLateral=new G4LogicalVolume( VirtualLateral,
logicVirtualLateral->SetVisAttributes (G4VisAttributes::Invisible);
logicVirtualLateral->SetVisAttributes (G4VisAttributes::GetInvisible());
}
/////////////////////////////////////////////////////////////////////////////
@@ -349,7 +349,7 @@ void PassiveCarbonBeamLine::ConstructPassiveCarbonBeamLine()
// The treatment room is invisible in the Visualisation
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::Invisible);
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
// Components of the Passive Carbon Beam Line
HadrontherapyBeamLineSupport();
@@ -571,7 +571,7 @@ void PassiveProtonBeamLine::ConstructPassiveProtonBeamLine()
// The treatment room is invisible in the Visualisation
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::Invisible);
logicTreatmentRoom -> SetVisAttributes (G4VisAttributes::GetInvisible());
// Components of the Passive Proton Beam Line
HadrontherapyBeamLineSupport();
@@ -1370,6 +1370,7 @@ void PassiveProtonBeamLine::HadrontherapyBeamNozzle()
logicHoleNozzleSupport -> SetVisAttributes(darkOrange3);
// ---------------------------------//
// BRASS TUBE 1 (phantom side) //
// ---------------------------------//
@@ -1404,6 +1405,7 @@ void PassiveProtonBeamLine::HadrontherapyBeamNozzle()
0);
logicBrassTube -> SetVisAttributes(darkOrange3);
// ----------------------------------------------//
// BRASS TUBE 2 (inside the PMMA support) //
@@ -1427,20 +1429,21 @@ void PassiveProtonBeamLine::HadrontherapyBeamNozzle()
brassTube2Material,
"BrassTube2",
0, 0, 0);
physiBrassTube2 = new G4PVPlacement(G4Transform3D(rm,
G4ThreeVector(0,
0.,
0.)),
"BrassTube2",
logicBrassTube2,
physiNozzleSupport,
false,
0);
G4bool checkOverlaps = true;
new G4PVPlacement(0,
G4ThreeVector(),
logicBrassTube2,
"BrassTube2",
logicHoleNozzleSupport,
false,
0,
checkOverlaps);
logicBrassTube2 -> SetVisAttributes(darkOrange3);
// --------------------------------------//
// BRASS TUBE 3 (beam line side) //
// -------------------------------------//
+4 -1
View File
@@ -1,4 +1,4 @@
$Id: History 97053 2016-05-23 12:03:28Z gcosmo $
$Id: History 101654 2016-11-21 08:52:03Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -18,6 +18,9 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
Nov 19, 2016, A. Dotti tag human_phantom-V10-02-02
- explicit set of SD to manager
May 23, 2016, G. Cosmo tag human_phantom-V10-02-01
- More compilation warnings in gcc-6.1 fixed...
@@ -4,7 +4,7 @@
############################################
*************************************************************
Geant4 version Name: geant4-10-03-beta-01 (30-June-2016)
Geant4 version Name: geant4-10-03 (9-December-2016)
Copyright : Geant4 Collaboration
Reference : NIM A 506 (2003), 250-303
WWW : http://cern.ch/geant4
@@ -41,14 +41,14 @@ Registered model factories:
drawByCharge
drawByOriginVolume
drawByParticleID
drawByTouchedVolume
drawByEncounteredVolume
Registered filter factories:
attributeFilter
chargeFilter
originVolumeFilter
particleFilter
touchedVolumeFilter
encounteredVolumeFilter
You have successfully registered the following user vis actions.
Run Duration User Vis Actions: none
@@ -82,10 +82,10 @@ MotherVolume: physicalWorld
sensitivity : 0
Construct Head with mother physicalWorld
Checking overlaps for volume physicalHead ... OK!
Volume of Head = 4657.41 cm^3
Volume of Head = 4657.81 cm^3
Material of Head = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of Head = 4596.39 g
Mass of Head = 4596.79 g
MotherVolume: physicalHead
sensitivity : 0
Construct Skull with mother volume physicalHead
@@ -106,10 +106,10 @@ sensitivity : 0
Construct Trunk with mother volume physicalWorld
Checking overlaps for volume physicalTrunk ... OK!
Trunk created !!!!!!
Volume of Trunk = 43976.3 cm^3
Volume of Trunk = 43978.7 cm^3
Material of Trunk = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of Trunk = 43400.2 g
Mass of Trunk = 43402.6 g
MotherVolume: physicalWorld
sensitivity : 0
Construct LeftLeg with mother volume physicalWorld
@@ -133,19 +133,19 @@ sensitivity : 0
Construct LeftArmBone with mother physicalTrunk
Checking overlaps for volume physicalLeftArmBone ... OK!
LeftArmBone created !!!!!!
Volume of LeftArmBone = 819.272 cm^3
Volume of LeftArmBone = 819.252 cm^3
Material of LeftArmBone = skeleton
Density of Material = 1.4862 g/cm^3
Mass of LeftArmBone = 1217.6 g
Mass of LeftArmBone = 1217.57 g
MotherVolume: physicalTrunk
sensitivity : 0
Construct RightArmBone with mother volume physicalTrunk
Checking overlaps for volume physicalRightArmBone ... OK!
RightArmBone created !!!!!!
Volume of RightArmBone = 819.635 cm^3
Volume of RightArmBone = 819.744 cm^3
Material of RightArmBone = skeleton
Density of Material = 1.4862 g/cm^3
Mass of RightArmBone = 1218.14 g
Mass of RightArmBone = 1218.3 g
MotherVolume: physicalLeftLeg
sensitivity : 0
Construct LeftLegBone with mother volume physicalLeftLeg
@@ -169,28 +169,28 @@ sensitivity : 0
Construct UpperSpine with mother volume physicalHead
Checking overlaps for volume physicalUpperSpine ... OK!
UpperSpine created !!!!!!
Volume of UpperSpine = 126.458 cm^3
Volume of UpperSpine = 126.468 cm^3
Material of UpperSpine = skeleton
Density of Material = 1.4862 g/cm^3
Mass of UpperSpine = 187.942 g
Mass of UpperSpine = 187.957 g
MotherVolume: physicalTrunk
sensitivity : 0
Construct LeftScapula with mother volume physicalTrunk
Checking overlaps for volume physicalLeftScapula ... OK!
LeftScapula created !!!!!!
Volume of LeftScapula = 100.812 cm^3
Volume of LeftScapula = 100.858 cm^3
Material of LeftScapula = skeleton
Density of Material = 1.4862 g/cm^3
Mass of LeftScapula = 149.826 g
Mass of LeftScapula = 149.896 g
MotherVolume: physicalTrunk
sensitivity : 0
Construct RightScapula with mother volume physicalTrunk
Checking overlaps for volume physicalRightScapula ... OK!
RightScapula created !!!!!!
Volume of RightScapula = 103.388 cm^3
Volume of RightScapula = 103.399 cm^3
Material of RightScapula = skeleton
Density of Material = 1.4862 g/cm^3
Mass of RightScapula = 153.656 g
Mass of RightScapula = 153.672 g
Construct LeftAdrenal with mother physicalTrunk
Checking overlaps for volume physicalLeftAdrenal ... OK!
Left LeftAdrenal created !!!!!!
@@ -233,10 +233,10 @@ Mass of RightClavicle = 20.3099 g
Construct SmallIntestine with mother volume physicalTrunk
Checking overlaps for volume physicalSmallIntestine ... OK!
SmallIntestine created !!!!!!
Volume of SmallIntestine = 1019.35 cm^3
Volume of SmallIntestine = 1020.24 cm^3
Material of SmallIntestine = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of SmallIntestine = 1006 g
Mass of SmallIntestine = 1006.87 g
Construct RibCage with mother volume physicalTrunk
Checking overlaps for volume physicalRibCage ... OK!
Checking overlaps for volume physicalRib ... OK!
@@ -252,26 +252,26 @@ Checking overlaps for volume physicalRib ... OK!
Checking overlaps for volume physicalRib ... OK!
Checking overlaps for volume physicalRib ... OK!
RibCage created !!!!!!
Volume of RibCage = 693.348 cm^3
Volume of RibCage = 693.461 cm^3
Material of RibCage = skeleton
Density of Material = 1.4862 g/cm^3
Mass of RibCage = 1030.45 g
Mass of RibCage = 1030.62 g
MotherVolume: physicalTrunk
sensitivity : 0
Construct MiddleLowerSpine with mother volume physicalTrunk
Checking overlaps for volume physicalMiddleLowerSpine ... OK!
MiddleLowerSpine created !!!!!!
Volume of MiddleLowerSpine = 753.626 cm^3
Volume of MiddleLowerSpine = 753.971 cm^3
Material of MiddleLowerSpine = skeleton
Density of Material = 1.4862 g/cm^3
Mass of MiddleLowerSpine = 1120.04 g
Mass of MiddleLowerSpine = 1120.55 g
Construct Pelvis with mother volume physicalTrunk
Checking overlaps for volume physicalPelvis ... OK!
Pelvis created !!!!!!
Volume of Pelvis = 608.584 cm^3
Volume of Pelvis = 608.745 cm^3
Material of Pelvis = skeleton
Density of Material = 1.4862 g/cm^3
Mass of Pelvis = 904.478 g
Mass of Pelvis = 904.717 g
Construct Stomach with mother volume physicalTrunk
Checking overlaps for volume physicalStomach ... OK!
Stomach created !!!!!!
@@ -282,17 +282,17 @@ Mass of Stomach = 396.856 g
Construct UpperLargeIntestine with mother volume physicalTrunk
Checking overlaps for volume physicalUpperLargeIntestine ... OK!
UpperLargeIntestine created !!!!!!
Volume of UpperLargeIntestine = 433.802 cm^3
Volume of UpperLargeIntestine = 433.819 cm^3
Material of UpperLargeIntestine = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of UpperLargeIntestine = 428.119 g
Mass of UpperLargeIntestine = 428.136 g
Construct LowerLargeIntestine with mother volume physicalTrunk
Checking overlaps for volume physicalLowerLargeIntestine ... OK!
LowerLargeIntestine created !!!!!!
Volume of LowerLargeIntestine = 344.258 cm^3
Volume of LowerLargeIntestine = 344.493 cm^3
Material of LowerLargeIntestine = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of LowerLargeIntestine = 339.748 g
Mass of LowerLargeIntestine = 339.98 g
Construct Spleen with mother volume physicalTrunk
Checking overlaps for volume physicalSpleen ... OK!
Spleen created !!!!!!
@@ -303,40 +303,40 @@ Mass of Spleen = 173.625 g
Construct Pancreas with mother volume physicalTrunk
Checking overlaps for volume physicalPancreas ... OK!
Pancreas created !!!!!!
Volume of Pancreas = 60.9478 cm^3
Volume of Pancreas = 60.9318 cm^3
Material of Pancreas = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of Pancreas = 60.1494 g
Mass of Pancreas = 60.1336 g
Construct LeftKidney with mother volume physicalTrunk
Checking overlaps for volume physicalLeftKidney ... OK!
Left LeftKidney created !!!!!!
Volume of LeftKidney = 143.922 cm^3
Volume of LeftKidney = 143.977 cm^3
Material of LeftKidney = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of LeftKidney = 142.037 g
Mass of LeftKidney = 142.091 g
Construct RightKidney with mother volume physicalTrunk
Checking overlaps for volume physicalRightKidney ... OK!
RightKidney created !!!!!!
Volume of RightKidney = 144.181 cm^3
Volume of RightKidney = 144.185 cm^3
Material of RightKidney = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of RightKidney = 142.293 g
Mass of RightKidney = 142.297 g
Construct UrinaryBladder with mother volume physicalTrunk
Checking overlaps for volume physicalUrinaryBladder ... OK!
UrinaryBladder created !!!!!!
Volume of UrinaryBladder = 45.7506 cm^3
Volume of UrinaryBladder = 45.7701 cm^3
Material of UrinaryBladder = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of UrinaryBladder = 45.1513 g
Mass of UrinaryBladder = 45.1705 g
MotherVolume: physicalWorld
sensitivity : 0
Construct MaleGenitalia with mother volume physicalWorld
Checking overlaps for volume physicalMaleGenitalia ... OK!
MaleGenitalia created !!!!!!
Volume of MaleGenitalia = 229.499 cm^3
Volume of MaleGenitalia = 229.503 cm^3
Material of MaleGenitalia = soft_tissue
Density of Material = 0.9869 g/cm^3
Mass of MaleGenitalia = 226.493 g
Mass of MaleGenitalia = 226.496 g
MotherVolume: physicalWorld
sensitivity : 0
Construct LeftTeste with mother volume physicalMaleGenitalia
@@ -427,7 +427,7 @@ eIoni: for e- SubType= 2
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
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
@@ -462,7 +462,7 @@ eIoni: for e+ SubType= 2
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
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 10 TeV AngularGen2BS
@@ -485,7 +485,7 @@ CoulombScat: for e+, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 100 MeV Emax= 10 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -538,7 +538,7 @@ nuclearStopping: for GenericIon SubType= 8 BuildTable= 0
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 10 TeV Table with 220 bins Emin= 100 eV Emax= 10 TeV
@@ -555,7 +555,7 @@ nuclearStopping: for alpha SubType= 8 BuildTable= 0
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
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -592,7 +592,7 @@ nuclearStopping: for anti_proton SubType= 8 BuildTable= 0
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -625,7 +625,7 @@ CoulombScat: for kaon+, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -658,7 +658,7 @@ CoulombScat: for kaon-, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -692,7 +692,7 @@ CoulombScat: for mu+, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -726,7 +726,7 @@ CoulombScat: for mu-, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for pi+ SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -759,7 +759,7 @@ CoulombScat: for pi+, integral: 1 SubType= 1 BuildTable= 1
eCoulombScattering : Emin= 0 eV Emax= 10 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, 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
@@ -819,47 +819,47 @@ Index : 2 used in the geometry : Yes
### Run 0 start.
Number of events = 100
Energy Total in Run:logicalBrain, ID: 0, Energy Deposition (MeV): 0
Energy Total in Run:logicalHead, ID: 1, Energy Deposition (MeV): 2.16829
Energy Total in Run:logicalHead, ID: 1, Energy Deposition (MeV): 2.4465
Energy Total in Run:logicalHeart, ID: 2, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftAdrenal, ID: 3, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftArmBone, ID: 4, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftBreast, ID: 5, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftClavicle, ID: 6, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftKidney, ID: 7, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftLeg, ID: 8, Energy Deposition (MeV): 11.3888
Energy Total in Run:logicalLeftLeg, ID: 8, Energy Deposition (MeV): 10.3807
Energy Total in Run:logicalLeftLegBone, ID: 9, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftLung, ID: 10, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftOvary, ID: 11, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftScapula, ID: 12, Energy Deposition (MeV): 0
Energy Total in Run:logicalLeftTeste, ID: 13, Energy Deposition (MeV): 0
Energy Total in Run:logicalLowerLargeIntestine, ID: 14, Energy Deposition (MeV): 0
Energy Total in Run:logicalMaleGenitalia, ID: 15, Energy Deposition (MeV): 0
Energy Total in Run:logicalMaleGenitalia, ID: 15, Energy Deposition (MeV): 3.06759
Energy Total in Run:logicalMiddleLowerSpine, ID: 16, Energy Deposition (MeV): 0
Energy Total in Run:logicalPancreas, ID: 17, Energy Deposition (MeV): 0
Energy Total in Run:logicalPelvis, ID: 18, Energy Deposition (MeV): 0
Energy Total in Run:logicalRibCage, ID: 19, Energy Deposition (MeV): 0.286366
Energy Total in Run:logicalRibCage, ID: 19, Energy Deposition (MeV): 1.11094
Energy Total in Run:logicalRightAdrenal, ID: 20, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightArmBone, ID: 21, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightBreast, ID: 22, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightClavicle, ID: 23, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightKidney, ID: 24, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightLeg, ID: 25, Energy Deposition (MeV): 10.3309
Energy Total in Run:logicalRightLeg, ID: 25, Energy Deposition (MeV): 12.7482
Energy Total in Run:logicalRightLegBone, ID: 26, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightLung, ID: 27, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightOvary, ID: 28, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightScapula, ID: 29, Energy Deposition (MeV): 0
Energy Total in Run:logicalRightTeste, ID: 30, Energy Deposition (MeV): 0
Energy Total in Run:logicalSkull, ID: 31, Energy Deposition (MeV): 0
Energy Total in Run:logicalSkull, ID: 31, Energy Deposition (MeV): 0.408342
Energy Total in Run:logicalSmallIntestine, ID: 32, Energy Deposition (MeV): 0
Energy Total in Run:logicalSpleen, ID: 33, Energy Deposition (MeV): 0
Energy Total in Run:logicalStomach, ID: 34, Energy Deposition (MeV): 0
Energy Total in Run:logicalThymus, ID: 35, Energy Deposition (MeV): 0
Energy Total in Run:logicalThyroid, ID: 36, Energy Deposition (MeV): 0
Energy Total in Run:logicalTrunk, ID: 37, Energy Deposition (MeV): 27.8108
Energy Total in Run:logicalTrunk, ID: 37, Energy Deposition (MeV): 22.5338
Energy Total in Run:logicalUpperLargeIntestine, ID: 38, Energy Deposition (MeV): 0
Energy Total in Run:logicalUpperSpine, ID: 39, Energy Deposition (MeV): 0
Energy Total in Run:logicalUrinaryBladder, ID: 40, Energy Deposition (MeV): 0
Energy Total in Run:logicalUterus, ID: 41, Energy Deposition (MeV): 0
Total Energy deposit in the body is: 51.9853 MeV
Total Energy deposit in the body is: 52.6961 MeV
Graphics systems deleted.
Visualization Manager deleting...

Some files were not shown because too many files have changed in this diff Show More