Monoenergetic proton pencil beam

From UCL HEP PBT Wiki

Jump to: navigation, search
m
 
Line 1: Line 1:
== <span style="color:#000080"> Introduction </span> ==
== <span style="color:#000080"> Introduction </span> ==
-
This example shows the dose distribution in water along the incident proton beam. The beam hits the water cube surface and deposits a dose under the surface of the water. The volume of the water cube is divided into slices perpendicular to the incident beam. The dose and energy deposited from the pencil beams at each slice is computed.  
+
This example shows the dose distribution in water along the incident proton beam. The beam hits the water cube surface and deposits a dose under the surface of the water. The volume of the water cube is divided into slices perpendicular to the incident beam. At each slice the deposited dose and energy is computed.  
 +
The slices are created using class '''G4PVReplica'''. The energy and the dose are scored using classes '''G4UserSteppingAction''' and '''G4UserRunAction'''. Alternatively, the energy and the dose are scored using class '''G4ScoringManager''' by defining two scoring meshes in longitudinal and lateral direction of the beam. More information about the scoring meshes can be found [https://geant4.web.cern.ch/geant4/UserDocumentation/UsersGuides/ForApplicationDeveloper/html/ch04s08.html here]. The protons are generated using '''G4ParticleGun''' class. There is an option to chose among several '''EM''' and the '''QGSP_BIC_EMY''' physics lists.
-
== <span style="color:#000080"> Setting up the environment </span> ==
+
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_00_6000e.png
-
; Connect to HEP cluster and create folder ProtonPBFolder in your area
+
The image shows the water box divided into slices using class '''G4PVReplica'''. Protons are in blue, photons are in green.
-
<pre style="color: #800000; background-color: #dcdcdc">
+
== <span style="color:#000080"> How to run the tutorial </span> ==
-
ssh username@plus1.hep.ucl.ac.uk
+
-
password: type your password here
+
; Connect to the HEP cluster and create folder ProtonPBFolder in your area
-
cd /home/username/
+
<pre style="color: #800000; background-color: #dcdcdc">
 +
ssh -X username@plus1.hep.ucl.ac.uk
-
mkdir ProtonPBFolder  
+
username@plus1.hep.ucl.ac.uk's password: type your password here
 +
 +
[username@plus1 ~]$ mkdir ProtonPBFolder  
-
cd ProtonPBFolder   
+
[username@plus1 ~]$ cd ProtonPBFolder   
</pre>
</pre>
-
 
; Setup your environment
; Setup your environment
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
source /unix/pbt/software/dev/bin/pbt-dev.sh   
+
[username@plus1 ProtonPBFolder]$ source /unix/pbt/software/dev/bin/pbt-dev.sh   
</pre>
</pre>
-
 
-
== <span style="color:#000080"> How to get the code </span> ==
 
; Copy the code to your working directory and rename it
; Copy the code to your working directory and rename it
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
cp -r /unix/pbt/tutorials/basic/ProtonPB .
+
[username@plus1 ProtonPBFolder]$ cp -r /unix/pbt/tutorials/basic/ProtonPB .
    
    
-
mv ProtonPB ProtonPB_source
+
[username@plus1 ProtonPBFolder]$ mv ProtonPB ProtonPB_source
</pre>
</pre>
-
 
-
== <span style="color:#000080"> How to run the code </span> ==
 
; Inside /home/username/ProtonPBFolder/ create a directory
; Inside /home/username/ProtonPBFolder/ create a directory
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
mkdir ProtonPB_build   
+
[username@plus1 ProtonPBFolder]$ mkdir ProtonPB_build   
</pre>
</pre>
Line 48: Line 46:
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
cd ProtonPB_build  
+
[username@plus1 ProtonPBFolder]$ cd ProtonPB_build  
-
cmake -DGeant4_DIR=/unix/pbt/software/dev /home/username/ProtonPBFolder/ProtonPB_source  
+
[username@plus1 ProtonPB_build]$ cmake -DGeant4_DIR=/unix/pbt/software/dev /home/username/ProtonPBFolder/ProtonPB_source  
-
make   
+
[username@plus1 ProtonPB_build]$ make   
</pre>
</pre>
-
; Run macro proton.mac. The macro generates 6000 events.
+
; Run macro proton.mac
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
./protonPB proton.mac
+
[username@plus1 ProtonPB_build]$ ./protonPB proton.mac
</pre>
</pre>
-
 
== <span style="color:#000080"> How to analyze data </span> ==
== <span style="color:#000080"> How to analyze data </span> ==
-
The macro produces a root file '''Proton.root''' with a 1D histogram showing the energy deposition in  
+
The macro produces a root file '''Proton.root''' with two histograms. The first histogram shows the energy deposition in water box along the beam line, the second histogram shows zoomed energy deposition around the peak. The macro also produces several text files.
-
water box along the beam line and another histogram showing zoomed Bragg Peak. It also produces a text file '''DoseFile.txt''' with energy and dose deposited at each slice of the water box. This is an example output  
+
 
-
with the default settings: physics process '''QGSP_BIC_EMY''' and incident proton energy of 62 MeV.  
+
* The data in files '''DoseFile.txt''' and '''PlotDose.txt''' was created using classes '''G4UserSteppingAction''' and '''G4UserRunAction'''. The file '''DoseFile.txt''' contains energy and dose deposition for every layer. The file '''PlotDose.txt''' contains only depth vs dose for each layer. These text files can be analyzed with MATLAB or ROOT.
 +
 
 +
* The files '''DoseLongitudinalMesh.txt''', '''EnergyLongitudinalMesh.txt''', '''DoseLateralMesh.txt''' and '''EnergyLateralMesh.txt''' contain information about the dose and energy deposition in voxels in longitudinal and lateral direction of the beam. The data was created using class '''G4ScoringManager''' and commands '''/score/''' in proton.mac. These text files can be analyzed with MATLAB or ROOT.
 +
 
 +
* The two ways to record data should give similar result. 
 +
 
 +
=== <span style="color:#000080"> Text files </span> ===
 +
 
 +
This is output from '''DoseFile.txt''' with physics process '''QGSP_BIC_EMY''' and incident proton energy of '''62 MeV'''. Use your favorite editor '''pico''', '''vi''', '''emacs''' etc to open text files. For example, open this text file with editor '''pico''':
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
Cumulated Doses : X[mm]   Edep       Edep/ Ebeam    Dose
+
[username@plus1 ProtonPB_build]$ pico DoseFile.txt
-
layer 1: 3.33333 23.1611 GeV 6.22611 % 2.78311e-06 Gy
+
-
layer 2: 6.66667 24.3512 GeV 6.54602 % 2.92612e-06 Gy
+
-
layer 3: 10 25.9655 GeV 6.97998 % 3.1201e-06 Gy
+
-
layer 4: 13.3333 27.6521 GeV 7.43336 % 3.32277e-06 Gy
+
-
layer 5: 16.6667 30.1527 GeV 8.10556 % 3.62325e-06 Gy
+
-
layer 6: 20 33.6152 GeV 9.03635 % 4.03931e-06 Gy
+
-
layer 7: 23.3333 39.396 GeV 10.5903 % 4.73395e-06 Gy
+
-
layer 8: 26.6667 50.3177 GeV 13.5263 % 6.04634e-06 Gy
+
-
layer 9: 30 88.6343 GeV 23.8264 % 1.06506e-05 Gy
+
-
layer 10: 33.3333 2.09587 GeV 0.563405 % 2.51846e-07 Gy
+
-
layer 11: 36.6667 4.59086 MeV 0.0012341 % 5.51653e-10 Gy
+
-
layer 12: 40 0 eV 0 % 0 Gy
+
</pre>
</pre>
 +
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
Layers : x[mm]  Edep     Edep/Ebeam[%]  Dose        Dose/MaxDose[%]
 +
layer 1: 0.8 5.17382 GeV 1.39081 6.47608e-07 Gy 17.3315
 +
layer 2: 1.6 5.24175 GeV 1.40907 6.5611e-07 Gy 17.5591
 +
layer 3: 2.4 5.29862 GeV 1.42436 6.63229e-07 Gy 17.7496
 +
layer 4: 3.2 5.41481 GeV 1.45559 6.77772e-07 Gy 18.1388
 +
layer 5: 4 5.43787 GeV 1.46179 6.80658e-07 Gy 18.216
 +
layer 6: 4.8 5.52101 GeV 1.48414 6.91065e-07 Gy 18.4946
 +
layer 7: 5.6 5.64633 GeV 1.51783 7.06751e-07 Gy 18.9144
 +
layer 8: 6.4 5.63969 GeV 1.51605 7.0592e-07 Gy 18.8921
 +
layer 9: 7.2 5.71744 GeV 1.53695 7.15652e-07 Gy 19.1526
 +
layer 10: 8 5.78086 GeV 1.55399 7.2359e-07 Gy 19.365
 +
layer 11: 8.8 5.94371 GeV 1.59777 7.43975e-07 Gy 19.9106
 +
layer 12: 9.6 6.02518 GeV 1.61967 7.54172e-07 Gy 20.1835
 +
layer 13: 10.4 6.10292 GeV 1.64057 7.63903e-07 Gy 20.4439
 +
layer 14: 11.2 6.18071 GeV 1.66148 7.7364e-07 Gy 20.7045
 +
layer 15: 12 6.2621 GeV 1.68336 7.83827e-07 Gy 20.9771
 +
layer 16: 12.8 6.37762 GeV 1.71441 7.98286e-07 Gy 21.3641
 +
layer 17: 13.6 6.52458 GeV 1.75392 8.16682e-07 Gy 21.8564
 +
layer 18: 14.4 6.67805 GeV 1.79517 8.35892e-07 Gy 22.3705
 +
layer 19: 15.2 6.86252 GeV 1.84476 8.58982e-07 Gy 22.9884
 +
layer 20: 16 6.95226 GeV 1.86889 8.70215e-07 Gy 23.289
 +
layer 21: 16.8 7.11679 GeV 1.91312 8.90809e-07 Gy 23.8402
 +
layer 22: 17.6 7.15125 GeV 1.92238 8.95122e-07 Gy 23.9556
 +
layer 23: 18.4 7.43274 GeV 1.99805 9.30356e-07 Gy 24.8986
 +
layer 24: 19.2 7.58811 GeV 2.03981 9.49804e-07 Gy 25.419
 +
layer 25: 20 7.8156 GeV 2.10097 9.78279e-07 Gy 26.1811
 +
layer 26: 20.8 7.94754 GeV 2.13643 9.94794e-07 Gy 26.6231
 +
layer 27: 21.6 8.35363 GeV 2.2456 1.04562e-06 Gy 27.9834
 +
layer 28: 22.4 8.44564 GeV 2.27033 1.05714e-06 Gy 28.2917
 +
layer 29: 23.2 8.74817 GeV 2.35166 1.09501e-06 Gy 29.3051
 +
layer 30: 24 9.08194 GeV 2.44138 1.13679e-06 Gy 30.4232
 +
layer 31: 24.8 9.50886 GeV 2.55615 1.19022e-06 Gy 31.8533
 +
layer 32: 25.6 9.93302 GeV 2.67017 1.24332e-06 Gy 33.2741
 +
layer 33: 26.4 10.5627 GeV 2.83943 1.32213e-06 Gy 35.3834
 +
layer 34: 27.2 11.1563 GeV 2.99902 1.39644e-06 Gy 37.3721
 +
layer 35: 28 12.0025 GeV 3.22647 1.50235e-06 Gy 40.2065
 +
layer 36: 28.8 13.1124 GeV 3.52485 1.64128e-06 Gy 43.9247
 +
layer 37: 29.6 14.5158 GeV 3.90209 1.81694e-06 Gy 48.6257
 +
layer 38: 30.4 16.8932 GeV 4.54119 2.11452e-06 Gy 56.5898
 +
layer 39: 31.2 20.9827 GeV 5.64051 2.62641e-06 Gy 70.289
 +
layer 40: 32 29.8521 GeV 8.02475 3.73658e-06 Gy 100
 +
layer 41: 32.8 14.922 GeV 4.0113 1.86779e-06 Gy 49.9866
 +
layer 42: 33.6 330.005 MeV 0.088711    4.13067e-08 Gy  1.10547
 +
layer 43: 34.4 2.92265 MeV 0.000785658  3.65828e-10 Gy  0.00979044
 +
layer 44: 35.2 864.413 keV 0.000232369  1.08199e-10 Gy  0.00289566
 +
layer 45: 36 673.958 keV 0.000181172  8.43594e-11 Gy  0.00225766
 +
layer 46: 36.8 1.18851 MeV 0.000319491  1.48765e-10 Gy  0.00398132
 +
layer 47: 37.6 3.81319 MeV 0.00102505  4.77297e-10 Gy  0.0127736
 +
layer 48: 38.4 4.58219 MeV 0.00123177  5.73552e-10 Gy  0.0153496
 +
layer 49: 39.2 7.29449 MeV 0.00196088  9.13052e-10 Gy  0.0244355
 +
layer 50: 40 0 eV 0 0 Gy 0
-
You can open Proton.root file in the following way:
+
 
 +
The run consists of 6000 proton of 62 MeV through 4 cm  of Water (density: 1 g/cm3 )
 +
divided into 50 slices.
 +
 
 +
Edep is the deposited energy in every slice.
 +
Total incident energy(Ebeam)= 372 GeV
 +
Total energy deposit= 367.368 GeV
 +
Dose is the deposited dose in every slice.
 +
MaxDose is the highest dose value from all slices.
 +
</pre>
 +
 
 +
The corresponding '''PlotDose.txt''' is:
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
root -l Proton.root
+
0.8 17.3315
 +
1.6 17.5591
 +
2.4 17.7496
 +
3.2 18.1388
 +
4 18.216
 +
4.8 18.4946
 +
5.6 18.9144
 +
6.4 18.8921
 +
7.2 19.1526
 +
8 19.365
 +
8.8 19.9106
 +
9.6 20.1835
 +
10.4 20.4439
 +
11.2 20.7045
 +
12 20.9771
 +
12.8 21.3641
 +
13.6 21.8564
 +
14.4 22.3705
 +
15.2 22.9884
 +
16 23.289
 +
16.8 23.8402
 +
17.6 23.9556
 +
18.4 24.8986
 +
19.2 25.419
 +
20 26.1811
 +
20.8 26.6231
 +
21.6 27.9834
 +
22.4 28.2917
 +
23.2 29.3051
 +
24 30.4232
 +
24.8 31.8533
 +
25.6 33.2741
 +
26.4 35.3834
 +
27.2 37.3721
 +
28 40.2065
 +
28.8 43.9247
 +
29.6 48.6257
 +
30.4 56.5898
 +
31.2 70.289
 +
32 100
 +
32.8 49.9866
 +
33.6 1.10547
 +
34.4 0.00979044
 +
35.2 0.00289566
 +
36 0.00225766
 +
36.8 0.00398132
 +
37.6 0.0127736
 +
38.4 0.0153496
 +
39.2 0.0244355
 +
40 0
 +
</pre>
-
new TBrowser
+
[http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/DoseLongitudinalMesh.txt '''DoseLongitudinalMesh.txt'''] and [http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/EnergyLongitudinalMesh.txt '''EnergyLongitudinalMesh.txt'''] contain information about the dose and energy deposition in 50 voxels along the beam. 
 +
 
 +
[http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/DoseLateralMesh.txt '''DoseLateralMesh.txt'''] and [http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/EnergyLateralMesh.txt '''EnergyLateralMesh.txt'''] contain information about the dose and energy deposition in 50 voxels in direction perpendicular to the beam at its peak location along the beam.
 +
 
 +
=== <span style="color:#000080"> Root file </span> ===
 +
 
 +
Open '''Proton.root''' file in the following way:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ root -l Proton.root
 +
 
 +
root [1] new TBrowser
Select ROOT Files and Proton.root
Select ROOT Files and Proton.root
</pre>
</pre>
-
Inside is 1D histogram showing the energy deposition in water box:
+
<span style="color:#000080"> '''This is the energy deposition along the beam in the absorber:''' </span>
   
   
-
[[File:/pbt/RadiotherapyWorkbook/skins/common/images/PhotonPB/Edep.png|Energy deposit per event along the beam]]
+
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/BraggPeak_PB1.png  
 +
 +
<span style="color:#000080"> '''This is the energy deposition along the beam in the absorber, zoomed around the peak:''' </span>
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/BraggPeak_PBzoom1.png 
 +
 
 +
You can close your ROOT session by typing
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
.q
 +
</pre>
 +
 
 +
Folder '''RootScripts''' contains several ROOT scripts which plot dose deposition in data and simulation.
 +
You can use script '''PlotSimulation.C''' to plot the dose deposition along the absorber. This script uses '''PlotDose.txt'''. Copy the script to your current ProtonPB_build directory:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/PlotSimulation.C .
 +
</pre>
 +
 
 +
Then run the script in the following way:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ root -l
 +
 
 +
root [1] .x PlotSimulation.C
 +
</pre>
 +
 
 +
This will create '''Simulation.root''' file with the following plot:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/Simulation1.png 
 +
 
 +
You can also plot the file '''PlotDose.txt''' using MATLAB. Similarly to the previous example first copy the text file to your computer. In the terminal at your computer write:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
scp username@plus1.hep.ucl.ac.uk:/home/username/ProtonPBFolder/ProtonPB_build/PlotDose.txt .
 +
</pre>
 +
 
 +
Then, open MATLAB and follow the procedure:
 +
 
 +
* Import the file: Chose 'HOME' tab and 'Import Data'.
 +
* In the 'Import Data' window select the 'PlotDose.txt' file choosing the right path.
 +
* In the opened window select the data points in the 'IMPORT' tab. If you like, you can change the name of the variables. For example, 'x' instead of 'VarName1' and 'Dose' instead of 'VarName2'. Then, press 'Import Selection'/'Import Data'. 
 +
* Close the Import Window and in the Command Window type plot(x,Dose). Press Enter.
 +
 
 +
This plot will be created with added axis labels and a legend:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/matlab1proton.png
 +
 
 +
You can also plot the data in '''DoseLongitudinalMesh.txt''' and '''DoseLateralMesh.txt''' which were created using commands '''/score/''' in the macro '''proton.mac'''. The file '''DoseLongitudinalMesh.txt''' will be used later to compare with data from the Clatterbridge Cancer Center. Now, use script '''PlotLateralDoseMesh.C''' to plot the lateral dose distribution.
 +
Before running the script substitude the commas in '''DoseLateralMesh.txt''' with spaces. Remove also the header in the text file. Then, save the text file as '''DoseLateralMesh_Mod.txt'''.
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/PlotLateralDoseMesh.C .
 +
 
 +
[username@plus1 ProtonPB_build]$ root -l
 +
 
 +
root [1] .x PlotLateralDoseMesh.C
 +
</pre> 
 +
 
 +
This will create '''LateralDose_Mesh.root''' file with the following plot:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/SimulationLateralMesh.png
 +
 
 +
=== <span style="color:#000080"> Run with different settings </span> ===
You can change the physics process, incident proton energy and number of slices etc. by
You can change the physics process, incident proton energy and number of slices etc. by
-
modifying the macro proton.mac. Use your favorite editor '''pico''', '''vi''', '''emacs''' etc. For example open the macro with editor '''pico''':
+
modifying the macro proton.mac. Open the macro with editor '''pico''':
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
pico proton.mac
+
[username@plus1 ProtonPB_build]$ pico proton.mac
</pre>   
</pre>   
-
This is what you will see:
+
This is the content of the macro:
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
Line 119: Line 300:
/protonPB/det/setSizeX  4 cm
/protonPB/det/setSizeX  4 cm
/protonPB/det/setSizeYZ 4 cm
/protonPB/det/setSizeYZ 4 cm
-
/protonPB/det/setSliceSizeYZ 2 cm
+
/protonPB/det/setSliceSizeYZ 4 cm
-
/protonPB/det/sliceNumber 12
+
/protonPB/det/sliceNumber 50
 +
#
 +
# define longitudinal scoring mesh
 +
# along the beam
 +
/score/create/boxMesh waterMeshlongitudinal
 +
/score/mesh/boxSize 2. 2. 2. cm
 +
/score/mesh/nBin 50 1 1
 +
/score/mesh/translate/xyz 0. 0. 0. cm
 +
/score/quantity/energyDeposit energyDeposit
 +
/score/quantity/doseDeposit doseDeposit
 +
/score/close
 +
#
 +
# define lateral scoring mesh
 +
# centered at the Bragg peak
 +
/score/create/boxMesh waterMeshlateral
 +
/score/mesh/boxSize 0.1 2. 2. cm
 +
/score/mesh/nBin 1 1 50
 +
/score/mesh/translate/xyz 1.2 0. 0. cm
 +
/score/quantity/energyDeposit energyDeposit
 +
/score/quantity/doseDeposit doseDeposit
 +
/score/close
#
#
# set physics process
# set physics process
Line 129: Line 330:
# production tresholds (recommended range  
# production tresholds (recommended range  
#cut off not bigger than 10% of slice thickness)
#cut off not bigger than 10% of slice thickness)
-
/protonPB/phys/setCuts 0.5 mm
+
/protonPB/phys/setCuts 0.2 mm
#/protonPB/phys/setGCut 1 um
#/protonPB/phys/setGCut 1 um
#/protonPB/phys/setECut 1 um
#/protonPB/phys/setECut 1 um
Line 136: Line 337:
# initialize
# initialize
/run/initialize
/run/initialize
 +
#
 +
# visualisation
 +
#/control/execute visualisation.mac
#
#
/gun/particle proton
/gun/particle proton
# particle energy used in Clatterbridge Centre   
# particle energy used in Clatterbridge Centre   
/gun/energy 62 MeV
/gun/energy 62 MeV
 +
#
 +
# beam size
 +
#/photonPB/gun/rndm 3 mm
#
#
# step limit (recommended not bigger than 5% of  
# step limit (recommended not bigger than 5% of  
# slice thickness)
# slice thickness)
-
/protonPB/stepMax 0.2 mm
+
/protonPB/stepMax 0.1 mm
#
#
/protonPB/event/printModulo 50
/protonPB/event/printModulo 50
Line 150: Line 357:
/analysis/setFileName Proton
/analysis/setFileName Proton
#
#
-
#  
+
# histogram
/analysis/h1/set 2 50 25 35 mm
/analysis/h1/set 2 50 25 35 mm
# number of events
# number of events
/run/beamOn 6000
/run/beamOn 6000
#
#
 +
# drawing projections
 +
#/score/drawProjection waterMeshlongitudinal doseDeposit
 +
#/score/drawProjection waterMeshlateral doseDeposit
 +
#
 +
# dump scores to a file
 +
/score/dumpQuantityToFile waterMeshlongitudinal doseDeposit DoseLongitudinalMesh.txt
 +
/score/dumpQuantityToFile waterMeshlongitudinal energyDeposit EnergyLongitudinalMesh.txt
 +
/score/dumpQuantityToFile waterMeshlateral doseDeposit DoseLateralMesh.txt
 +
/score/dumpQuantityToFile waterMeshlateral energyDeposit EnergyLateralMesh.txt
</pre>
</pre>
-
=== Change the physics process ===
+
'''Change dimensions of the water box'''
 +
 
 +
The default size is 4x4x4 cm. You can change the dimensions by modifying the lines
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
/protonPB/det/setSizeX  4 cm
 +
/protonPB/det/setSizeYZ 4 cm
 +
</pre>
 +
 
 +
'''Change the physics process'''
The default physics process is '''QGSP_BIC_EMY'''. This is a physics list recommended for proton therapy. You can check what will be the dose deposition if you change the physics list. In proton.mac change
The default physics process is '''QGSP_BIC_EMY'''. This is a physics list recommended for proton therapy. You can check what will be the dose deposition if you change the physics list. In proton.mac change
Line 171: Line 396:
</pre>
</pre>
-
Now run the code:
+
'''Change the incident proton energy'''
-
 
+
-
<pre style="color: #800000; background-color: #dcdcdc">
+
-
./protonPB proton.mac
+
-
</pre>
+
-
 
+
-
=== Change the incident particle energy ===
+
The default energy is 62 MeV. This is one of the energies used in radiotherapy. In proton.mac you can change the value of 62 MeV  
The default energy is 62 MeV. This is one of the energies used in radiotherapy. In proton.mac you can change the value of 62 MeV  
Line 191: Line 410:
</pre>
</pre>
-
and run the macro
+
'''Change the diameter of the beam'''
 +
 
 +
You can set the diameter of the beam with the command:
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
./protonPB proton.mac
+
/protonPB/gun/rndm 3 mm
</pre>
</pre>
-
=== Change the number of slices ===
+
'''Change the number of slices'''
-
You can change the number of water box slices. The default number is 12. Keep in mind that  
+
You can change the number of slices. The default number is 50. Keep in mind that  
-
if you want to have more slices you need to modify the file DetectorConstruction.hh in
+
if you want to increase the number of slices you need to modify the file DetectorConstruction.hh in
/ProtonPB_source/include/.
/ProtonPB_source/include/.
-
In DetectorConstruction.hh change the MaxLayer to a value which is bigger or equal to the
+
In DetectorConstruction.hh set MaxLayer to value bigger than the number of your slices. The default value is MaxLayer=60. For example, if you want to have 55 slices you do not need to modify MaxLayer. Then, only in proton.mac change the number of slices
-
number of your slices.
+
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
const G4int MaxLayer = 10;
+
/protonPB/det/sliceNumber 55
</pre>
</pre>
-
Then in gamma.mac you need to change the number of slices
+
'''Modify the mesh'''
 +
 
 +
You can change the size of the mesh (longitudinal and lateral) and the number of voxels by modifying their corresponding lines
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
/protonPB/det/sliceNumber 10
+
/score/mesh/boxSize 2. 2. 2. cm
 +
/score/mesh/nBin 30 1 1
</pre>
</pre>
-
You modified the code therefore you need to comppile it again. In directory PhotonPB_build do
+
'''After modifications in proton.mac'''
 +
 
 +
After modifying the macro proton.mac you can run it
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
make
+
[username@plus1 ProtonPB_build]$ ./protonPB proton.mac
</pre>
</pre>
 +
 +
If you modify files in directory ProtonPB_source (for example you change the value of MaxLayer) you need to comppile the code. In directory PhotonPB_build do
-
then run the macro
+
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ make
 +
</pre>
 +
 
 +
then run the macro proton.mac.
 +
 
 +
=== <span style="color:#000080"> Visualisation </span> ===
 +
 
 +
If you want to use visualisation, in macro '''proton.mac''' uncomment the line '''/control/execute visualisation.mac'''. This will run macro '''visualisation.mac''' with a specific visualisation setup.
 +
If you uncomment the lines '''/score/drawProjection waterMeshlongitudinal doseDeposit''' and '''/score/drawProjection waterMeshlateral doseDeposit''' you will draw the dose projections. In this example, we use '''DAWN''' event display. Before running the visualisation look at this [http://geant4.slac.stanford.edu/Presentations/vis/G4DAWNTutorial/G4DAWNTutorial.html DAWN tutorial].
 +
 
 +
To run the visualisation, first uncomment lines '''/control/execute visualisation.mac''' and '''/score/drawProjection waterMeshlongitudinal doseDeposit'''. Then, run the proton.mac
<pre style="color: #800000; background-color: #dcdcdc">
<pre style="color: #800000; background-color: #dcdcdc">
-
./protonPB proton.mac
+
[username@plus1 ProtonPB_build]$ ./protonPB proton.mac
</pre>
</pre>
-
== <span style="color:#000080"> Comparison with data from The Clatterbridge Cancer Centre </span> ==
+
In addition to the text files the code will create two .prim files, '''g4_00.prim''' and '''g4_01.prim'''. The first file contains detector geometry and particle interactions. The second file contains dose projections. While running the proton.mac you will be asked to open g4_00.prim in DAWN. In the opened window press OK. This will create your first visualisation:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_00_6000e.eps
 +
 
 +
The second file g4_01.prim will not open automatically. It will be created after the running is finished. Open the file in the following way:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ dawn g4_01.prim
 +
</pre>
 +
 
 +
In the opened window press OK and this will create the image:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_02_6000e.eps
 +
 
 +
You can modify the .prim files in DAWN. For example, in the DAWN display change the polar and azimuthal angles. 1) (polar angle, azimuthal angle) = (0,90) will create this image
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_01_6000e.eps
 +
 
 +
2) (polar angle, azimuthal angle) = (90,0) will create this image
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_04_6000e.eps
 +
 
 +
Now, in proton.mac macro uncomment '''/score/drawProjection waterMeshlateral doseDeposit''' and comment '''/score/drawProjection waterMeshlongitudinal doseDeposit'''. Run '''proton.mac''' with the new settings. The image with the lateral dose projections will look like that:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/g4_03_6000e.eps   
 +
 
 +
== <span style="color:#000080"> Data from The Clatterbridge Cancer Centre </span> ==
 +
 
 +
This is [http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/Clatterbridge/ClatterbridgeBraggPeak.txt data] from the Clatterbridge Cancer Center. The first column represents the values in mm in depth, the second column represents the normalized values of deposited dose and normalized at the peak. You can use script '''PlotData.C''' from folder'''RootScripts''' to plot the data. Copy files '''ClatterbridgeData.txt''' and '''PlotData.C''' to your current ProtonPB_build directory and run the script:
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/PlotData.C .
 +
 
 +
[username@plus1 ProtonPB_build]$ cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/ClatterbridgeData.txt .
 +
 
 +
[username@plus1 ProtonPB_build]$ root -l
 +
 
 +
root [1] .x PlotData.C
 +
</pre> 
 +
 
 +
This will create '''ClatterbridgeData.root''' file with the following plot:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/Clatterbridge/Clatterbridge.png
 +
 
 +
== <span style="color:#000080"> Comparison between data and simulation </span> ==
 +
 
 +
The scripts '''PlotDataAndSim.C''' and '''PlotDataAndSimMesh.C''' in folder '''RootScripts''' compare data with simulation.
 +
You can use script '''PlotDataAndSim.C''' to compare data (ClatterbridgeData.txt) and simulation ('''PlotDose.txt'''). Both text files must be in the folder where you run the script.
 +
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/PlotDataAndSim.C .
 +
 
 +
[username@plus1 ProtonPB_build]$ root -l
 +
 
 +
root [1] .x PlotDataAndSim.C
 +
</pre> 
 +
 
 +
This will create '''BraggPeakComparison.root''' file with the following plot:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/DataSimulation.png
 +
 
 +
You can also compare data (ClatterbridgeData.txt) with simulation done with scoring mesh ('''DoseLongitudinalMesh.txt''').
 +
This can be done with script '''PlotDataAndSimMesh.C'''. This script works only if before running it you substitude the commas
 +
in '''DoseLongitudinalMesh.txt''' with spaces. Remove also the header in the text file. Save the new text file as '''DoseLongitudinalMesh_Mod.txt'''.
 +
 
 +
<pre style="color: #800000; background-color: #dcdcdc">
 +
[username@plus1 ProtonPB_build]$ cp /home/username/ProtonPBFolder/ProtonPB_source/RootScripts/PlotDataAndSimMesh.C .
 +
 
 +
[username@plus1 ProtonPB_build]$ root -l
 +
 
 +
root [1] .x PlotDataAndSimMesh.C
 +
</pre> 
 +
 
 +
This creates '''BraggPeakComparison_Mesh.root''' file with the following plot:
 +
 
 +
http://www.hep.ucl.ac.uk/pbt/RadiotherapyWorkbook/skins/common/images/ProtonPB/DataSimulationMesh.png
== <span style="color:#000080"> Files </span> ==
== <span style="color:#000080"> Files </span> ==
 +
 +
[[List of monoenergetic proton pencil beam files with brief description]]

Latest revision as of 13:36, 10 September 2014

Personal tools