[807] | 1 | $Id: README,v 1.2 2006/11/18 01:37:22 asaim Exp $ |
---|
| 2 | ------------------------------------------------------------------- |
---|
| 3 | |
---|
| 4 | ========================================================= |
---|
| 5 | Geant4 - an Object-Oriented Toolkit for Simulation in HEP |
---|
| 6 | ========================================================= |
---|
| 7 | |
---|
| 8 | ExampleRE02 |
---|
| 9 | ----------- |
---|
| 10 | |
---|
| 11 | |
---|
| 12 | This example simulates a simplified water phantom measurement |
---|
| 13 | in medical application with demonstration of primitive scorers. |
---|
| 14 | This example also demonstrates nested parameterised volume which |
---|
| 15 | realizes segmented boxes using a combination of replicated volumes |
---|
| 16 | and a parameterised volume. |
---|
| 17 | |
---|
| 18 | (Tips) |
---|
| 19 | This example creates 100 x 100 x 200 boxes using Nested Parameterised |
---|
| 20 | Volume for realistic situation of medical application. |
---|
| 21 | This is very memory consumption if normal Parameterised Volume is used, |
---|
| 22 | and needs roughly more than 1 GB memory for execution. However, |
---|
| 23 | NestedParameterised volume effectively works to reduce the memory consumption, |
---|
| 24 | and it only needs less than 100 MB memory for execution. |
---|
| 25 | |
---|
| 26 | 1- GEOMETRY DEFINITION |
---|
| 27 | |
---|
| 28 | The setup contains a water phantom as target by default. The world volume |
---|
| 29 | is 200 cm x 200 cm x 200 cm box filled with air. The water phantom is box shape |
---|
| 30 | and the size of 200 mm x 200 mm x 400 mm. The volume of water phantom is divided |
---|
| 31 | into 100 x 100 x 1 towers using replicated volume,(RE02DetectorConstruction), |
---|
| 32 | and then those towers are segmented into 200 boxes with respect to z axis |
---|
| 33 | using nested parameterized volume,(RE02NestedPhantomParameterisation). |
---|
| 34 | e.g. The volume of water phantom is divided into 100 x 100 x 200 boxes, |
---|
| 35 | and a voxel size is 2.0 mm x 2.0 mm x 2.0 mm. |
---|
| 36 | |
---|
| 37 | For demonstration purpose of the nested parameterised volume, |
---|
| 38 | (RE02NestedPhantomParameterisation), materials are assigned as water (lead) |
---|
| 39 | in even (odd) order segments, alternately. |
---|
| 40 | The simulation for homogeneous water phantom is also possible using an option. |
---|
| 41 | |
---|
| 42 | ---- Tips(1) |
---|
| 43 | *If you want to reduce number of segments of water phantom, |
---|
| 44 | please change following numbers which represent number of segments |
---|
| 45 | in x, y, z axis, respectively.The following code can be found in |
---|
| 46 | exampleRE02.cc. |
---|
| 47 | |
---|
| 48 | RE02DetectorConstruction* detector = new RE02DetectorConstruction; |
---|
| 49 | detector->SetNumberOfSegmentsInPhantom(100,100,200); |
---|
| 50 | Nx, Ny, Nz |
---|
| 51 | ---- Tips(2) |
---|
| 52 | *If you want to set all materials to water, |
---|
| 53 | please use the following method. The following code can be found in |
---|
| 54 | exampleRE02.cc. |
---|
| 55 | |
---|
| 56 | detector->SetLeadSegment(FALSE); // Homogeneous water phantom |
---|
| 57 | ---- |
---|
| 58 | |
---|
| 59 | The geometry and sensitive detector are constructed in |
---|
| 60 | RE02DetectorConstruction class. |
---|
| 61 | (See "4- SCORER " for detail descriptions about sensitive detector.) |
---|
| 62 | |
---|
| 63 | 2- PHYSICS LIST |
---|
| 64 | |
---|
| 65 | The particle's type and the physic processes which is available |
---|
| 66 | in this example are set in PhysicsList class. |
---|
| 67 | |
---|
| 68 | The PhysicsList is originally copied from extended example, |
---|
| 69 | (example/extended/analysis/A01). |
---|
| 70 | Full set of particles (baryons, bosons and mesons) are created, and |
---|
| 71 | Standard EM Physics and Low/High Energy parameterized models |
---|
| 72 | for hadrons are applied. The detail description will be found in |
---|
| 73 | example/extended/analysis/A01/README. |
---|
| 74 | Specially, the PhysicsList was modified in this example, |
---|
| 75 | to use Binary cascade model for hadron physics at low energy (<4GeV) |
---|
| 76 | and inelastic process for generic ions with BinaryLightIonReaction. |
---|
| 77 | The data files for physics processes have to be assigned using |
---|
| 78 | environment variables. |
---|
| 79 | |
---|
| 80 | RE02PhysicsList is optimized for robustness and is not optimized for |
---|
| 81 | any particular cases. If you will do precise calculation for your |
---|
| 82 | use-case, please consider utilizing hadronic_lists, and defines the |
---|
| 83 | production cut properly. |
---|
| 84 | The default CutValue defines the production threshold of secondary |
---|
| 85 | particles (mainly Ionisation and Bremsstrahlung processes are |
---|
| 86 | concerned by this CutValue). |
---|
| 87 | |
---|
| 88 | 3- RUNS and EVENTS |
---|
| 89 | |
---|
| 90 | - Primary particles. |
---|
| 91 | The primary kinematics consists of a single particle which hits the |
---|
| 92 | target perpendicular to the input face. The default type of the particle |
---|
| 93 | and its energy are set in the RE02PrimaryGeneratorAction class. |
---|
| 94 | However it can be changed via the G4 build-in commands of ParticleGun |
---|
| 95 | class. |
---|
| 96 | The RE02PrimaryGeneratorAction class introduces a beam spot size |
---|
| 97 | that makes initial particle position of x,y randomized using a Gaussian |
---|
| 98 | random function, where the center position is fixed to (0,0). |
---|
| 99 | The standard deviation of the beam spot size is given in |
---|
| 100 | RE02PrimaryGeneratorAction as 10 mm. |
---|
| 101 | |
---|
| 102 | An EVENT represents a simulation of one primary particle. |
---|
| 103 | A RUN is a set of events. |
---|
| 104 | |
---|
| 105 | The user has control: |
---|
| 106 | -at Begin and End of each run (class RunAction) |
---|
| 107 | -at Begin and End of each event (class EventAction) |
---|
| 108 | -at Begin and End of each track (class TrackingAction, not used here) |
---|
| 109 | -at End of each step (class SteppingAction, not used here) |
---|
| 110 | |
---|
| 111 | 4- SCORER |
---|
| 112 | |
---|
| 113 | - Concrete Scorer |
---|
| 114 | This example introduces concrete primitive scorer (PS) and filter |
---|
| 115 | classes for easy scoring. Those primitive scorers are registered to |
---|
| 116 | MultiFunctionalDetector which is a concrete class of sensitive |
---|
| 117 | detector(SD). Then the MultiFunctionalDetector is attached to |
---|
| 118 | the logical volume of sensitive geometry. |
---|
| 119 | A MultiFunctionalDetector, PrimitiveScorers, and SDFilters are |
---|
| 120 | created and assigned to the logical volume of water phantom in |
---|
| 121 | DetectorConstruction. |
---|
| 122 | |
---|
| 123 | A primitive scorer can score one kind of physical quantity, and |
---|
| 124 | creates one hits collection per event. The quantity is collected in |
---|
| 125 | G4THitsMap with the copy number of geometry. Here collection name is |
---|
| 126 | given as <MultiFunctionalDetector Name>/<PrimitiveScorer Name>. |
---|
| 127 | A primitive scorer can have one filter (SDFilter) for selecting hits |
---|
| 128 | to be used for the quantity. |
---|
| 129 | |
---|
| 130 | Since the geometry is constructed using nested parameterisation, |
---|
| 131 | the copy number of geometry is defined as follows, |
---|
| 132 | |
---|
| 133 | copy number of geometry = iy*Nx*Ny+ix*Nz+iz, |
---|
| 134 | |
---|
| 135 | where Nx,Ny,Nz is total number of segmentation in x, y, and z axis,respectively, |
---|
| 136 | and ix,iy,iz is a copy number of the mother volume, the grand mother volume, |
---|
| 137 | and this volume, respectively. |
---|
| 138 | This conversion is described in GetIndex() method in PrimitiveScorer. |
---|
| 139 | |
---|
| 140 | The physical quantities scored in this example are: |
---|
| 141 | ---------------------------------------------------- |
---|
| 142 | - Total energy deposit |
---|
| 143 | unit: Energy, collName: totalEDep |
---|
| 144 | - Energy deposit by protons |
---|
| 145 | unit: Energy, collName: protonEDep |
---|
| 146 | - Number of steps of protons |
---|
| 147 | unit: - , collName: protonNStep |
---|
| 148 | - Cell Flux of charged tracks which pass through the geometry |
---|
| 149 | unit: Length/Volume, collName: chargedPassCellFlux |
---|
| 150 | - Cell Flux of all charged tracks |
---|
| 151 | unit: Length/Volume, collName: chargedCellFlux |
---|
| 152 | - Flux of charged particle at -Z surface of the BOX geometry, |
---|
| 153 | where incident angle at the surface is taken into account. |
---|
| 154 | unit: Surface^(-1), collName: chargedSurfFlux |
---|
| 155 | - Surface current of gamma at -Z surface of the BOX geometry. |
---|
| 156 | The energy of gammas are from 1. keV to 10. keV. |
---|
| 157 | The incident angle is not taken into account. |
---|
| 158 | unit: Surface^(-1), collName: gammaSurfCurr000 |
---|
| 159 | - Same as previous one, but different energy bin. |
---|
| 160 | The energy of gammas are from 10. keV to 100. keV. |
---|
| 161 | unit: Surface^(-1), collName: gammaSurfCurr001 |
---|
| 162 | - Same as previous one, but different energy bin. |
---|
| 163 | The energy of gammas are from 100. keV to 1. MeV. |
---|
| 164 | unit: Surface^(-1), collName: gammaSurfCurr002 |
---|
| 165 | - Same as previous one, except for energy bin. |
---|
| 166 | The energy of gammas are from 1. MeV to 10. MeV. |
---|
| 167 | unit: Surface^(-1), collName: gammaSurfCurr003 |
---|
| 168 | ------------------------------------------------- |
---|
| 169 | |
---|
| 170 | - Accumulating quantities during a RUN |
---|
| 171 | A PrimitiveScorer creates one hits collection per event. |
---|
| 172 | The physical quantity in the hits collection need to be accumulated |
---|
| 173 | into another G4THitsMap object during a RUN, in order to obtain |
---|
| 174 | integrated flux or dose in a RUN. The accumulation of quantities |
---|
| 175 | are done at RE02Run class. |
---|
| 176 | |
---|
| 177 | RE02Run class can automatically generate G4THitsMap objects for a RUN, |
---|
| 178 | and accumulate physical quantities of an event into it. The accumulation |
---|
| 179 | is done at RE02Run::RecordEvent(G4Event* aEvent). |
---|
| 180 | |
---|
| 181 | - Generate a Run object, and print results |
---|
| 182 | The RE02Run object is generated at RE02RunAction::GenerateRun(). |
---|
| 183 | The accumulated physical quantities are printed at the end of RUN |
---|
| 184 | ( RE02RunAction::EndOfEvent() ). This example prints only selected |
---|
| 185 | physical quantities. |
---|
| 186 | |
---|
| 187 | |
---|
| 188 | 5- VISUALIZATION |
---|
| 189 | |
---|
| 190 | The Visualization Manager is set in the main(). |
---|
| 191 | The initialization of the drawing is done via a set of /vis/ commands |
---|
| 192 | in the macro vis.mac. This macro is automatically read from |
---|
| 193 | the main when running in interactive mode. |
---|
| 194 | |
---|
| 195 | The tracks are automatically drawn at the end of event and erased at |
---|
| 196 | the beginning of the next run. |
---|
| 197 | |
---|
| 198 | The visualization (with OpenGL driver) assumes two things: |
---|
| 199 | 1- the visualization & interfaces categories have been compiled |
---|
| 200 | with the environment variable G4VIS_BUILD_OPENGLX_DRIVER. |
---|
| 201 | 2- exampleRE02.cc has been compiled with G4VIS_USE_OPENGLX. |
---|
| 202 | |
---|
| 203 | (The same with DAWNFILE instead of OPENGLX) |
---|
| 204 | |
---|
| 205 | |
---|
| 206 | 6- USER INTERFACES |
---|
| 207 | |
---|
| 208 | The default command interface, called G4UIterminal, is done via |
---|
| 209 | standard G4cin/G4cout. |
---|
| 210 | On Linux and Sun-cc on can use a smarter command interface G4UItcsh. |
---|
| 211 | It is enough to set the environment variable G4UI_USE_TCSH before |
---|
| 212 | compiling exampleRE02.cc |
---|
| 213 | |
---|
| 214 | |
---|
| 215 | 7- HOW TO START ? |
---|
| 216 | |
---|
| 217 | - compile and link to generate an executable |
---|
| 218 | % cd RE02 |
---|
| 219 | % gmake |
---|
| 220 | |
---|
| 221 | - execute RE02 in 'batch' mode from macro files (without visualization) |
---|
| 222 | % exampleRE02 run1.mac |
---|
| 223 | |
---|
| 224 | - execute RE02 in 'interactive mode' with visualization |
---|
| 225 | % exampleRE02 |
---|
| 226 | .... |
---|
| 227 | Idle> type your commands. For instance: |
---|
| 228 | Idle> /run/beamOn 10 |
---|
| 229 | .... |
---|
| 230 | Idle> /control/execute run2.mac |
---|
| 231 | .... |
---|
| 232 | Idle> exit |
---|
| 233 | |
---|
| 234 | - macros are for different primary particles. |
---|
| 235 | vis.mac : 200 MeV proton with visualization |
---|
| 236 | run1.mac : 150 MeV proton |
---|
| 237 | run2.mac : 195 MeV/u Carbon ion |
---|
| 238 | run3.mac : 30 MeV electron |
---|
| 239 | run4.mac : 60 keV gamma |
---|
| 240 | |
---|
| 241 | |
---|
| 242 | |
---|
| 243 | |
---|