Geant4 Cross Reference |
1 1 2 ======================================= 2 ========================================================= 3 Text version of the iort_ 3 Text version of the iort_therapy README file 4 ================================= 4 ========================================================= 5 5 >> 6 Last revision: C.Casarino, October 2014; >> 7 Released with the Geant4 10.0 version (December 2013) >> 8 >> 9 >> 10 >> 11 >> 12 ========================================================= >> 13 iort_therapy >> 14 ========================================================= >> 15 6 Main Authors: 16 Main Authors: 7 G.Russo(a,b), C.Casarino*(c), G.C. Candiano(c 17 G.Russo(a,b), C.Casarino*(c), G.C. Candiano(c), G.A.P. Cirrone(d), F.Romano(d) 8 18 9 Contributor Authors: 19 Contributor Authors: 10 S.Guatelli(e) 20 S.Guatelli(e) 11 21 12 Past Authors: 22 Past Authors: 13 G.Arnetta(c), S.E.Mazzaglia(d) 23 G.Arnetta(c), S.E.Mazzaglia(d) 14 24 15 (a) Fondazione Istituto San Raffaele G.Giglio << 25 (a) Fondazione Istituto San Raffaele G.Giglio, Cefalù, Italy 16 26 17 (b) IBFM-CNR , Segrate (Milano), Italy 27 (b) IBFM-CNR , Segrate (Milano), Italy 18 28 19 (c) LATO (Laboratorio di Tecnologie Oncologic << 29 (c) LATO (Laboratorio di Tecnologie Oncologiche), Cefalù, Italy 20 30 21 (d) Laboratori Nazionali del Sud of the INFN, 31 (d) Laboratori Nazionali del Sud of the INFN, Catania, Italy 22 32 23 (e) University of Wollongong, Australia << 33 (e) University of Wallongong, Australia 24 34 25 35 26 *Corresponding author, email to carlo.casari 36 *Corresponding author, email to carlo.casarino@polooncologicocefalu.it 27 ---------------------------------------------- 37 ------------------------------------------------------------------------------------------------- 28 38 29 iort_therapy: 39 iort_therapy: 30 40 31 WHAT IT IS, WHAT IT DOES AND WHAT IT WILL PROV 41 WHAT IT IS, WHAT IT DOES AND WHAT IT WILL PROVIDE 32 42 33 iort_therapy is a Geant4-based application spe 43 iort_therapy is a Geant4-based application specifically developed to address typical needs related to the Intra-Operative Radio-Therapy (IORT) technique. 34 44 35 iort_therapy is capable to simulate a well spe << 45 iort_therapy is capable to simulate a well specified intra-operative electron radio-therapy facility: the collimator beam line system of a typical medical mobile linac and the relative target (water-phantom). iort_therapy application is currently used by the G.Russo team in clinical and research activities carried out in Fondazione Istituto San Raffaele G.Giglio Hospital (Cefalù, Italy) where a NOVAC7 linac is installed. 36 46 37 iort_therapy, is flexible and show many capabi 47 iort_therapy, is flexible and show many capabilities. Its geometrical set-up, for example, is completely interchangeable permitting a simple switch between different geometrical collimator system configurations; the possibility to simulate a composite metallic shielding disc inside the water-phantom was also implemented. 38 48 39 49 40 Folder structure of iort_therapy 50 Folder structure of iort_therapy 41 51 42 iort_therapy distribution contain these sub-fo 52 iort_therapy distribution contain these sub-folders: 43 53 44 \src: where source .cc files are stored 54 \src: where source .cc files are stored 45 \include: where header .hh files are stored 55 \include: where header .hh files are stored >> 56 \macro: where a set of ready-to-use macro files are provided >> 57 46 58 47 Currently this folders structure is in develop 59 Currently this folders structure is in development and in the meanwhile new features and capabilities will be added. 48 60 49 61 50 DOWNLOAD AND INSTALLATION 62 DOWNLOAD AND INSTALLATION 51 63 52 iort_therapy source code is released inside th 64 iort_therapy source code is released inside the official distribution of the Geant4 toolkit in the $G4INSTALL/examples/AdvancedExamples folder. 53 65 54 To run iort_therapy you must first install the 66 To run iort_therapy you must first install the Geant4 package. Once Geant4 is installed the example must be first compiled (with the command gmake inside the 55 ../iort_therapy folder). When compilation is c 67 ../iort_therapy folder). When compilation is completed the program can be executed. 56 68 57 A CMakeLists.txt file is provided together wit 69 A CMakeLists.txt file is provided together with a standard GNUmakefile for compilation. 58 70 59 A complete guide for the Geant4 installation i 71 A complete guide for the Geant4 installation in different operating systems can be found inside the official installation Geant4 pages. 60 72 >> 73 If you have troubles with the Geant4 installation please send an e-mail to us. >> 74 >> 75 61 76 62 GEOMETRICAL SET-UP 77 GEOMETRICAL SET-UP 63 78 64 The idea of iort_therapy is to provide a tool 79 The idea of iort_therapy is to provide a tool useful for Users interested in the field of electron intra-operative radio-therapy. These can include the simple calculation of dose distribution curves in water or other materials, the possibility to study and plan dose distribution in the tumor treatment region with different clinical set-up, and to optimize radio-protection of normal patient tissues simulating a composite metallic shielding disc. 65 80 66 The main component of the simulation is the co 81 The main component of the simulation is the collimator beam line system, the phantom, the detector and the composite metallic shielding disc. 67 82 68 83 69 COLLIMATOR BEAM LINE SYSTEM 84 COLLIMATOR BEAM LINE SYSTEM 70 85 71 At moment iort_therapy include the simulation 86 At moment iort_therapy include the simulation of a collimator beam line system, based on a typical medical mobile linac structure us the NOVAC7. This collimator beam line is elaborated in the files CollimatorXXBeamLine.cc , where XX may be 40, 50, 60, 70 ,80 or 100 (mm) depending on the diameter collimator set-up chosen. 72 In fact, there is also a facility in iort_ther 87 In fact, there is also a facility in iort_therapy that allows the user to make a choice, via macro, between alternative collimator beam line set-up. This can be done by using command: 73 88 74 /geometrySetup/selectGeometry <name> 89 /geometrySetup/selectGeometry <name> 75 90 76 where <name> is coll40, coll50, coll60, coll70 91 where <name> is coll40, coll50, coll60, coll70, coll80 or coll100 depending on the diameter collimator set-up chosen (40mm, 50mm, 60mm, 70mm, 80mm or 100mm). The standard "default" geometry is coll60. 77 92 78 The Collimator beam line system class file 93 The Collimator beam line system class file 79 94 80 The following is the description of the elemen 95 The following is the description of the elements of the collimator beam line system from the accelerator head to the final collimator. This line is completely simulated inside this class. 81 96 82 The main elements are the accelerator head and 97 The main elements are the accelerator head and the applicator. 83 The accelerator head performs as a primary col 98 The accelerator head performs as a primary collimator system. It consists of titanium exit window and a cylindrical PMMA structure where two monitor chambers are installed. 84 The applicator consists of a cylindrical PMMA 99 The applicator consists of a cylindrical PMMA tube (the final collimator). In the order we have implemented the following functions: 85 100 86 IortBeamLineVacuumSource(); 101 IortBeamLineVacuumSource(); 87 IortBeamLineTitaniumWindows(); 102 IortBeamLineTitaniumWindows(); 88 IortBeamLineMonitorChambers(); 103 IortBeamLineMonitorChambers(); 89 IortBeamLineBlocks() ; 104 IortBeamLineBlocks() ; 90 IortBeamLineJunctions(); 105 IortBeamLineJunctions(); 91 IortBeamLineFinalCollimator(); 106 IortBeamLineFinalCollimator(); 92 107 >> 108 >> 109 93 The user has now the possibility to vary, via 110 The user has now the possibility to vary, via messenger, the inner and outer radius of the final collimator. 94 111 95 112 96 THE PHANTOM 113 THE PHANTOM 97 114 98 At the end of the beam line a phantom (a box o 115 At the end of the beam line a phantom (a box of 20cmx20cmx20cm default dimensions) is reproduced. 99 Inside it, a user-defined region (the detector 116 Inside it, a user-defined region (the detector) is divided (via the ROGeomtry classes of Geant4) in cubic and identical voxels. The voxels size can be varied as well as the voxelized region. 100 At the end of a simulation run the dose deposi 117 At the end of a simulation run the dose deposited by primaries and secondaries in each voxel is collected. This information is available as an .out file. 101 118 102 THE DETECTOR 119 THE DETECTOR 103 120 104 A scoring mesh is set to score the dose in the << 121 The default sizes of the sensible voxelized region (detector) are 7cmx15cmx15cm and actually the default voxel configuration is 0.5mm x 0.5mm x 0.5mm, which means a matrix of 140x300x300 cubic voxels each with a lateral dimension of 0.5 mm. Of course this default can be modified. 105 122 106 As concern the cut and stepMax values, the def 123 As concern the cut and stepMax values, the default configuration implies a cut value of 0.01 mm in the whole world (use the command /physic/setCuts <length> in order to set the cut for all, and the command /physic/setDetectorCuts <length> to set the cut for the detector only) and a stepMax of 0.01 mm just in the phantom (use the command /Step/waterPhantomStepMax 0.01 mm). 107 In any case it is strongly recommended to use 124 In any case it is strongly recommended to use a stepMax value not bigger than 5% of the dose slice thickness. 108 125 109 126 110 SHIELDING DISC 127 SHIELDING DISC 111 128 112 Inside the detector is positioned a double lay 129 Inside the detector is positioned a double layered shielding disc. For both layers it is possible via macro to change the outer and inner radius, the thickness, the position along the beam axis and the material. 113 NOTE 1: to delete the disc out the entire geom << 130 ADVERTISEMENT: to delete the disc out the entire geometry the relative macro command must be used!! 114 NOTE 2: to re-insert the disc in the entire ge << 131 ADVERTISEMENT: to re-insert the disc in the entire geometry the relative macro command must be used!! 115 132 >> 133 116 134 117 PHYSICS PROCESSES AND PHYSICS MODELS IMPLEMENT 135 PHYSICS PROCESSES AND PHYSICS MODELS IMPLEMENTATION 118 136 119 EM Standard option 4 is activated. The user ca << 137 Physics models in iort_therapy, following the Geant4 organization, can be defined using two different approaches: >> 138 >> 139 >> 140 Activating one of the 'Reference Physics Lists' that are already prepared by the Geant4 Collaboration and are contained in the $G4INSTALL/source/physics_lists/lists folderlist. >> 141 The 'Reference Physics Lists' can be activated setting a specific environment variable to the name of the physics. For example if the QGSP_BIC Reference Physics Lists must be activated the User must set export PHYSLIST=QGSP_BIC (or setenv PHYSLIST QGSP_BIC). A 'Reference Physics Lists' contains all the physics process necessary to a particle transport. >> 142 If the User set the PHYSLIST variable, iort_therapy will start with the defaultMacroWithReferencePhysicsList.mac macro. See this macro file for more details. >> 143 Activating the 'Builders' already prepared by the Geant4 Collaboration and contained in the $G4INSTALL/source/physics_lists/builder folder. >> 144 Each builder is specific of a given model. There are builders for the electromagnetic processes, for the hadronic one, etc. >> 145 If the PHYSLIST variable is not defined iort_therapy starts with the defaultMacro.mac where the single builders are activated for the various processes of interest. >> 146 Each builder is activated with the /Physics/addPhysics <nome builder> command. >> 147 >> 148 >> 149 ****** SUGGESTED PHYSICS ********* >> 150 >> 151 AT MOMENT, IF ACCURATE RESULTS ARE NEDED, WE STRONGLY RECOMMEND: >> 152 1. The use of the emstandard_opt3, or >> 153 2. the QGSP_BIC_EMY Reference Physics Lists (define the PHYSLIST evironment variable): >> 154 export PHYSLIST=QGSP_BIC_EMY >> 155 A particular care is addressed to the simulation of the physic processes. 120 156 121 157 122 INTERACTIVE COMMANDS 158 INTERACTIVE COMMANDS 123 159 >> 160 >> 161 124 How to change Phantom, Detector and Shielding 162 How to change Phantom, Detector and Shielding Disc geometries 125 163 126 In order to let the end user to change phantom 164 In order to let the end user to change phantom and detector geometries and voxelization, some interactive commands have been provided. All parameters are mandatory, except those inside square brackets. 127 165 128 166 129 Phantom geometry 167 Phantom geometry 130 168 131 (1) The phantom size. As usually, zero or nega 169 (1) The phantom size. As usually, zero or negatives values mean: <<don't change it>>. 132 (2) The phantom position respect to the world. 170 (2) The phantom position respect to the world. In this case specified values refer to the three components of the position of the phantom's center respect to the world's. 133 171 134 Command synopsis: 172 Command synopsis: 135 173 136 /changePhantom/size <dimX> <dimY> <dimZ> <[uni 174 /changePhantom/size <dimX> <dimY> <dimZ> <[unit]> # 20 20 20 cm 137 /changePhantom/position <posX> <posY> <posZ> < 175 /changePhantom/position <posX> <posY> <posZ> <[unit]> # 4.5 0 0 cm 138 176 139 177 140 Detector geometry 178 Detector geometry 141 179 142 The user can change: 180 The user can change: 143 181 144 (1) The detector (box) size. 182 (1) The detector (box) size. 145 183 146 (2) The displacement between the phantom and t << 184 (2) The voxels sizes. Changing this parameters, and/or the detector sizes, user should choose values in order to be divisors of the detector correspondent sizes. >> 185 For both above commands, zero or negative values mean << don't change it >> >> 186 >> 187 (3) The displacement between the phantom and the detector. Displacement parameters refer to the lower left corner of the detector respect to that of the phantom, by the point of view of the beam. In this case zero or positive values are allowed, while the negatives ones mean: << don't change it>>. >> 188 147 189 148 Command synopsis: 190 Command synopsis: >> 191 >> 192 149 /changeDetector/size <dimX> <dimY> <dimZ> <[un 193 /changeDetector/size <dimX> <dimY> <dimZ> <[unit]> >> 194 /changeDetector/voxelSize <dimX> <dimY> <dimZ> <[unit]> 150 /changeDetector/displacement <dispX> <dispY> < 195 /changeDetector/displacement <dispX> <dispY> <dispZ> <[unit]> 151 196 152 The user has to change the scoring mesh accord << 197 Default size values are 7x15x15 cm for the detector, 0.5x0.5x0.5 mm for any voxel. The default detector position is chosen so that the 15x15 detector face is aligned and centered respect the detector beam exposed face. >> 198 153 199 154 200 155 Shielding Disc geometry 201 Shielding Disc geometry 156 202 157 Command synopsis: 203 Command synopsis: 158 204 159 /ProtectionDisc1/OuterRadiusDisc1 <dim> 205 /ProtectionDisc1/OuterRadiusDisc1 <dim> # default -> 40*mm ; 160 /ProtectionDisc1/InnerRadiusDisc1 <dim> 206 /ProtectionDisc1/InnerRadiusDisc1 <dim> # default -> 0*mm 161 /ProtectionDisc1/HeightDisc1 <dim> 207 /ProtectionDisc1/HeightDisc1 <dim> # default -> 2*mm 162 /ProtectionDisc1/XPositionDisc1 <dimX> 208 /ProtectionDisc1/XPositionDisc1 <dimX> # default -> -11*mm 163 /ProtectionDisc1/material <G4_Material> 209 /ProtectionDisc1/material <G4_Material> # default -> G4_WATER ; 164 210 165 /ProtectionDisc2/OuterRadiusDisc2 <dim> 211 /ProtectionDisc2/OuterRadiusDisc2 <dim> # default -> 40*mm ; 166 /ProtectionDisc2/InnerRadiusDisc2 <dim> 212 /ProtectionDisc2/InnerRadiusDisc2 <dim> # default -> 0*mm 167 /ProtectionDisc2/HeightDisc2 <dim> 213 /ProtectionDisc2/HeightDisc2 <dim> # default -> 1*mm 168 /ProtectionDisc2/XPositionDisc2 <dimX> 214 /ProtectionDisc2/XPositionDisc2 <dimX> # default -> -8*mm 169 /ProtectionDisc2/material <G4_Material> 215 /ProtectionDisc2/material <G4_Material> # default -> G4_WATER ; 170 216 171 217 172 All these commands must be followed 218 All these commands must be followed by the command /changePhantom/update 173 in order to check and eventually apply changes 219 in order to check and eventually apply changes to the real geometry. 174 Moreover they must be issued between 220 Moreover they must be issued between runs (so where you want but after the /run/initialize initialization command, or the G4State_Idle Geant4 state machine). 175 Obviously all the previous sizes must be set i 221 Obviously all the previous sizes must be set in order to maintain the detector fully inside the phantom, otherwise system complains. 176 222 177 223 178 To Delete Disc geometry 224 To Delete Disc geometry 179 225 180 Command synopsis: 226 Command synopsis: 181 227 182 /DeleteProtectionDisc/delete 228 /DeleteProtectionDisc/delete 183 229 184 To Re-insert Disc geometry 230 To Re-insert Disc geometry 185 231 186 Command synopsis: 232 Command synopsis: 187 233 188 /InsertProtectionDisc/insert 234 /InsertProtectionDisc/insert 189 235 190 **** To set initial beam features << 236 >> 237 Stopping powers calculation >> 238 >> 239 It is possible for the end-user to calculate, via macro command, stopping powers only for those materials inserted into G4NistMaterialBuilder class (about 300). >> 240 To get stopping powers user must provide this command line on the idle interactive terminal (or into a macro file) : >> 241 >> 242 /parameter/getstopping <G4_material> <Emin> <Emax> <nPoints> <[particle]> <[output_filename]> >> 243 >> 244 All parameters are mandatory except those inside square brackets []. >> 245 Default values for parameters inside square brackets are respectively proton and standard output (usually the user console terminal). >> 246 >> 247 Parameters are respectively: >> 248 >> 249 The material (NIST) name (something like G4_..., the complete list of elements and materials is available into the G4NistMaterialBuilder class and can be printed to the terminal screen via the macro command: /parameter/nist ) >> 250 Kinetic energy range in MeV and the number of data points to be retrieved (in a logarithmically uniform space) >> 251 The particle name (proton, e+, e-, He3, neutron,... a full list can be gotten via the macro command: /particle/list). >> 252 Only for ions, user must firstly give them to the particle gun, for example issuing the macro commands: >> 253 /gun/particle ion >> 254 /gun/ion <Z> <A> <[charge]> >> 255 The output filename: if users leave this blank then the standard output is used. >> 256 >> 257 Below is an example in order to calculate the stopping power for alphas into Hydrogen between 1 keV to 150 MeV for 15 points: >> 258 >> 259 /parameter/getstopping G4_H 0.001 150 15 alpha >> 260 >> 261 # and for C12 ion: >> 262 >> 263 /gun/particle ion >> 264 /gun/ion 6 12 6 >> 265 /parameter/getstopping G4_H 0.001 150 15 C12[0.0] >> 266 >> 267 # Value inside square brackets is the excitation energy of the ion (ground state in this case). >> 268 >> 269 >> 270 To set initial beam features 191 271 192 By default, the beam propagates along the posi 272 By default, the beam propagates along the positive X direction with Gaussian momentum and Y-Z distributions. 193 It is possible to select: particle type, mean 273 It is possible to select: particle type, mean energy and relative standard deviation, X,Y and Z coordinates, Y and Z standard deviations and, finally, the beam spread along X direction (Theta). 194 274 195 Command synopsis: 275 Command synopsis: 196 276 197 /gun/particle 277 /gun/particle 198 /beam/energy/meanEnergy 278 /beam/energy/meanEnergy 199 /beam/energy/sigmaEnergy 279 /beam/energy/sigmaEnergy 200 /beam/position/Xposition 280 /beam/position/Xposition 201 /beam/position/Yposition 281 /beam/position/Yposition 202 /beam/position/Yposition/sigmaY 282 /beam/position/Yposition/sigmaY 203 /beam/position/Zposition 283 /beam/position/Zposition 204 /beam/position/Zposition/sigmaZ 284 /beam/position/Zposition/sigmaZ 205 /beam/momentum/Theta 285 /beam/momentum/Theta 206 286 >> 287 >> 288 207 HOW RUN iort_therapy 289 HOW RUN iort_therapy 208 290 209 Run the example in interactive mode 291 Run the example in interactive mode 210 292 211 > $G4WORDIR/bin/Linux-g++/iort_therapy 293 > $G4WORDIR/bin/Linux-g++/iort_therapy 212 294 213 In this case the main file (iort_therapy.cc) p 295 In this case the main file (iort_therapy.cc) performs different operations depending on which environment variable is activated; 214 For example, if the environment variable G4UI_ 296 For example, if the environment variable G4UI_USE_TCSH is activated, iort_therapy will start with the TCSH User Interface that has many useful functionalities. On the other hand, if this first variables is not defined, the program will continue searching for the G4UI_USE_QT variable and, finally, will open the standard G4UITerminal. 215 297 216 Run the example using macro files 298 Run the example using macro files 217 299 218 iort_therapy can be launched using a macro fil 300 iort_therapy can be launched using a macro file: 219 301 220 > $G4WORDIR/bin/Linux-g++/iort_therapy macroFi 302 > $G4WORDIR/bin/Linux-g++/iort_therapy macroFile.mac 221 303 222 The defaultMacro.mac file is contained in the 304 The defaultMacro.mac file is contained in the main directory of iort_therapy and is automatically read in case the user launch the executable without a parameter. 223 305 224 306 225 SIMULATION OUTPUT 307 SIMULATION OUTPUT 226 308 227 Store results in an ASCII file 309 Store results in an ASCII file 228 310 229 A .out ASCII file is generated at the end of e << 311 A .out ASCII file is generated at the end of each run, Dose.out is its default name that can be changed in the IORTMatrix.cc file. 230 The file contains four columns; the first thre << 312 The file contains four columns; the first three columns represent the voxel indexes (that univocally identify the voxel volume), while the last column represents the dose deposited in that given voxel. >> 313 >> 314 >> 315 FUTURE CHALLENGES >> 316 >> 317 This is a list of future components that will be added in iort_therapy. >> 318 >> 319 In the next future iort_therapy will be improved making it possible to simulate roto-translations of the collimator beam line respect the target thus reproducing the mobility characteristics of the linac. >> 320 >> 321 >> 322 Dicom Interface >> 323 >> 324 A first work in progress version iort_therapy-DICOM is underdeveloped. This application imports in iort_therapy the main parts and facilities of the Dicom extended-medical example, so it permits to replace the water phantom with a voxellized phantom version of the dicom images. >> 325 >> 326 Human-Phantom Interface >> 327 >> 328 Also a second work in progress version iort_therapy-Human-Phantom is underdeveloped. It is based on the Human-Phantom advanced example. Thus there will be the possibility to replace the water phantom with the human phantom. >> 329 >> 330 All these configuration will be set by macro commands. >> 331 231 332 >> 333 Please contact carlo.casarino@polooncologicocefalu.it for more details or suggestions and feedbacks on this document. 232 334 233 335