Changeset 1337 for trunk/examples/advanced/microbeam
- Timestamp:
- Sep 30, 2010, 2:47:17 PM (14 years ago)
- Location:
- trunk/examples/advanced/microbeam
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/examples/advanced/microbeam/History
r1313 r1337 1 1 ------------------------------------------------------------------- 2 $Id: History,v 1.2 5 2010/06/07 03:18:01 sincertiExp $2 $Id: History,v 1.28 2010/06/10 09:54:05 vnivanch Exp $ 3 3 ------------------------------------------------------------------- 4 4 … … 9 9 Package History file 10 10 -------------------- 11 12 10 June 2010 - V.Ivanchenko - tag microbeam-V09-03-06 13 - Added option "ionGasModel" to the Physics List 14 15 09 June 2010 - J. Perl - tag microbeam-V09-03-05 16 - Have vis.mac disabled by default 17 18 09 June 2010 - S. Incerti - tag microbeam-V09-03-04 19 - Switched to physics_list library. 20 microbeam.mac adapted. 11 21 12 22 06 June 2010 - S. Incerti - tag microbeam-V09-03-03 -
trunk/examples/advanced/microbeam/Microbeam.cc
r807 r1337 25 25 // 26 26 // ------------------------------------------------------------------- 27 // $Id: Microbeam.cc,v 1. 9 2007/08/28 09:48:40 gcosmoExp $27 // $Id: Microbeam.cc,v 1.10 2010/06/09 18:13:46 sincerti Exp $ 28 28 // ------------------------------------------------------------------- 29 29 // GEANT4 - Microbeam example … … 90 90 91 91 // initialize G4 kernel 92 runManager->Initialize();92 // runManager->Initialize(); 93 93 94 94 // get the pointer to the User Interface manager -
trunk/examples/advanced/microbeam/README
r807 r1337 1 1 ------------------------------------------------------------------- 2 $Id: README,v 1.1 0 2007/02/27 12:02:09sincerti Exp $2 $Id: README,v 1.11 2010/06/09 18:13:46 sincerti Exp $ 3 3 ------------------------------------------------------------------- 4 4 … … 17 17 * e-mail:incerti@cenbg.in2p3.fr 18 18 19 Last modified by S. Incerti, 27/02/200719 Last modified by S. Incerti, 09/06/2010 20 20 21 21 ---->0. INTRODUCTION. … … 128 128 - a standard Geant4 example GNUmakefile is provided 129 129 130 setup with:131 compiler = gcc-3.2.3132 G4SYSTEM = linux-g++133 134 130 The following section gives the necessary environment variables. 135 131 … … 178 174 > $G4WORDIR/bin/Linux-g++/Microbeam 179 175 180 The macro microbeam.mac is executed by default. To get vizualisation, make 181 sure to uncomment the /vis/... lines in the microbeam.mac macro. 182 The Microbeam code reads the phantom.dat file containing all the necessary 183 information describing the cell phantom. 10 alphas particles are generated. 176 The macro microbeam.mac is executed by default. 177 All visualisation commands are in the vis.mac macro file. 184 178 185 179 186 180 ---->5. PHYSICS 187 181 188 Low energy electromagnetic processes (for alphas, electrons, photons) and 189 hadronic elastic and inelastic scattering for alphas are activated by default. 190 Low energy electromagnetic electronic and nuclear stopping power are computed 191 from ICRU tables. 192 182 Livermore, Binary and Binary_ion physics lists are used by default, 183 see microbeam.mac 193 184 194 185 ---->6. SIMULATION OUTPUT AND RESULT ANALYZIS -
trunk/examples/advanced/microbeam/include/MicrobeamPhysicsList.hh
r807 r1337 24 24 // ******************************************************************** 25 25 // 26 // ------------------------------------------------------------------- 27 // $Id: MicrobeamPhysicsList.hh,v 1.5 2006/06/29 16:05:09 gunter Exp $ 28 // ------------------------------------------------------------------- 26 // 27 // $Id: MicrobeamPhysicsList.hh,v 1.7 2010/06/10 09:54:05 vnivanch Exp $ 28 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 29 // 30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 31 // 32 // 14.10.02 (V.Ivanchenko) provide modular list on base of old PhysicsList 33 // 34 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 35 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 29 36 30 37 #ifndef MicrobeamPhysicsList_h 31 38 #define MicrobeamPhysicsList_h 1 32 39 33 #include "G4VUserPhysicsList.hh" 40 #include "G4VModularPhysicsList.hh" 41 #include "globals.hh" 34 42 35 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 43 class G4VPhysicsConstructor; 44 class G4StepLimiter; 45 class MicrobeamPhysicsListMessenger; 36 46 37 class MicrobeamPhysicsList: public G4VUserPhysicsList 47 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 48 49 class MicrobeamPhysicsList: public G4VModularPhysicsList 38 50 { 39 51 public: 52 40 53 MicrobeamPhysicsList(); 41 ~MicrobeamPhysicsList(); 54 virtual ~MicrobeamPhysicsList(); 55 56 void ConstructParticle(); 57 58 void SetCuts(); 59 void SetCutForGamma(G4double); 60 void SetCutForElectron(G4double); 61 void SetCutForPositron(G4double); 62 63 void AddPhysicsList(const G4String& name); 64 void ConstructProcess(); 65 66 void AddStepMax(); 67 G4StepLimiter* GetStepMaxProcess() {return stepMaxProcess;}; 42 68 43 69 private: 44 70 71 void AddIonGasModels(); 72 45 73 G4double cutForGamma; 46 74 G4double cutForElectron; 47 75 G4double cutForPositron; 48 49 protected:50 51 void ConstructParticle();52 void ConstructBosons();53 void ConstructLeptons();54 void ConstructBaryons();55 76 56 void ConstructProcess(); 57 void ConstructEM(); 58 void ConstructHad(); 59 void ConstructGeneral(); 60 void SetCuts(); 61 77 G4bool helIsRegisted; 78 G4bool bicIsRegisted; 79 G4bool biciIsRegisted; 80 81 G4String emName; 82 G4VPhysicsConstructor* emPhysicsList; 83 G4VPhysicsConstructor* decPhysicsList; 84 std::vector<G4VPhysicsConstructor*> hadronPhys; 85 86 G4StepLimiter* stepMaxProcess; 87 88 MicrobeamPhysicsListMessenger* pMessenger; 62 89 }; 90 91 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 92 63 93 #endif 64 94 65 66 -
trunk/examples/advanced/microbeam/microbeam.mac
r1313 r1337 1 1 /tracking/storeTrajectory 1 2 2 3 /control/execute vis.mac 3 /microbeam/phys/addPhysics emlivermore 4 /microbeam/phys/addPhysics binary 5 /microbeam/phys/addPhysics binary_ion 6 7 /run/initialize 8 9 /process/inactivate nuclearStopping 10 11 # Uncomment this line of you want visualization 12 #/control/execute vis.mac 4 13 5 14 /tracking/verbose 0 -
trunk/examples/advanced/microbeam/microbeam.out
r1313 r1337 5 5 6 6 ************************************************************* 7 Geant4 version Name: geant4-09-03-ref-0 4 (9-April-2010)7 Geant4 version Name: geant4-09-03-ref-06 (25-June-2010) 8 8 Copyright : Geant4 Collaboration 9 9 Reference : NIM A 506 (2003), 250-303 … … 11 11 ************************************************************* 12 12 13 Visualization Manager instantiating ...13 Visualization Manager instantiating with verbosity "warnings (3)"... 14 14 Visualization Manager initialising... 15 15 Registering graphics systems... … … 25 25 VRML2FILE (VRML2FILE) 26 26 gMocrenFile (gMocrenFile) 27 OpenGLStoredX (OGL) 28 OpenGLImmediateX (OGLI) 29 OpenGLStoredX (OGLS) 27 30 OpenGLImmediateX (OGLIX) 28 31 OpenGLStoredX (OGLSX) … … 132 135 ==========> The phantom contains 53480 voxels 133 136 134 MicrobeamPhysicsList::SetCuts:CutLength : 10 nm 137 ### G4GoudsmitSaundersonTable loading PDF data 138 ### G4GoudsmitSaundersonMscModel loading ELSEPA data 139 G4NeutronInelasticXS::G4NeutronInelasticXS: Initialise 140 G4NeutronCaptureXS::G4NeutronCaptureXS: Initialise 141 PhysicsList::SetCuts:CutLength : 10 nm 142 G4ProcessTable::Insert : arguments are 0 pointer 143 G4ProcessTable::Insert : arguments are 0 pointer 144 G4ProcessTable::Insert : arguments are 0 pointer 145 G4ProcessTable::Insert : arguments are 0 pointer 135 146 136 147 phot: for gamma SubType= 12 137 148 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 138 LivermorePhElectric : Emin= 0 eV Emax= 1 00GeV139 PhotoElectric : Emin= 100GeV Emax= 10 TeV149 LivermorePhElectric : Emin= 0 eV Emax= 1 GeV 150 PhotoElectric : Emin= 1 GeV Emax= 10 TeV 140 151 141 152 compt: for gamma SubType= 13 142 Lambda tables from 100 eV to 10 TeV in 77bins, spline: 1143 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 144 LivermoreCompton : Emin= 0 eV Emax= 1 00GeV145 Klein-Nishina : Emin= 100GeV Emax= 10 TeV153 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 154 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 155 LivermoreCompton : Emin= 0 eV Emax= 1 GeV 156 Klein-Nishina : Emin= 1 GeV Emax= 10 TeV 146 157 147 158 conv: for gamma SubType= 14 148 Lambda tables from 1.022 MeV to 10 TeV in 77bins, spline: 1149 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 150 LivermoreConversion : Emin= 0 eV Emax= 1 00GeV151 Bethe-Heitler : Emin= 100GeV Emax= 10 TeV159 Lambda tables from 1.022 MeV to 10 TeV in 220 bins, spline: 1 160 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 161 LivermoreConversion : Emin= 0 eV Emax= 1 GeV 162 Bethe-Heitler : Emin= 1 GeV Emax= 10 TeV 152 163 153 164 Rayl: for gamma SubType= 11 154 165 Lambda tables from 100 eV to 10 TeV in 200 bins, spline: 1 155 166 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 156 LivermoreRayleigh : Emin= 0 eV Emax= 100 GeV 167 LivermoreRayleigh : Emin= 0 eV Emax= 1 GeV 168 LivermoreRayleigh : Emin= 1 GeV Emax= 100 GeV 157 169 158 170 msc: for e- SubType= 10 159 Lambda tables from 100 eV to 10 TeV in 77bins, spline: 1171 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 160 172 RangeFactor= 0.04, stepLimitType: 2, latDisplacement: 1, skin= 1, geomFactor= 2.5 161 173 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 162 UrbanMsc92: Emin= 0 eV Emax= 10 TeV174 GoudsmitSaunderson : Emin= 0 eV Emax= 10 TeV 163 175 164 176 eIoni: for e- SubType= 2 165 dE/dx and range tables from 100 eV to 10 TeV in 77bins166 Lambda tables from threshold to 10 TeV in 77bins, spline: 1177 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 178 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 167 179 finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 168 180 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 169 LowEnergyIoni : Emin= 0 eV Emax= 1 00 GeV170 MollerBhabha : Emin= 100 GeV Emax= 10 TeV181 LowEnergyIoni : Emin= 0 eV Emax= 1 MeV 182 MollerBhabha : Emin= 1 MeV Emax= 10 TeV 171 183 172 184 eBrem: for e- SubType= 3 173 dE/dx and range tables from 100 eV to 10 TeV in 77bins174 Lambda tables from threshold to 10 TeV in 77bins, spline: 1185 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 186 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 175 187 LPM flag: 1 for E > 1 GeV 176 188 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 177 LowEnBrem : Emin= 0 eV Emax= 1 00GeV178 eBremRel : Emin= 100GeV Emax= 10 TeV189 LowEnBrem : Emin= 0 eV Emax= 1 GeV 190 eBremRel : Emin= 1 GeV Emax= 10 TeV 179 191 180 192 eIoni: for e+ SubType= 2 181 dE/dx and range tables from 100 eV to 10 TeV in 77bins182 Lambda tables from threshold to 10 TeV in 77bins, spline: 1193 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 194 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 183 195 finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 184 196 ===== EM models for the G4Region DefaultRegionForTheWorld ====== … … 186 198 187 199 eBrem: for e+ SubType= 3 188 dE/dx and range tables from 100 eV to 10 TeV in 77bins189 Lambda tables from threshold to 10 TeV in 77bins, spline: 1200 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 201 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 190 202 LPM flag: 1 for E > 1 GeV 191 203 ===== EM models for the G4Region DefaultRegionForTheWorld ====== … … 194 206 195 207 annihil: for e+ SubType= 5 196 Lambda tables from 100 eV to 10 TeV in 77bins, spline: 1208 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 197 209 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 198 210 eplus2gg : Emin= 0 eV Emax= 10 TeV 211 212 msc: for proton SubType= 10 213 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 214 RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1 215 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 216 UrbanMsc90 : Emin= 0 eV Emax= 10 TeV 217 218 hIoni: for proton SubType= 2 219 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 220 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 221 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 222 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 223 Bragg : Emin= 0 eV Emax= 2 MeV 224 BetheBloch : Emin= 2 MeV Emax= 10 TeV 225 226 hBrems: for proton SubType= 3 227 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 228 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 229 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 230 hBrem : Emin= 0 eV Emax= 10 TeV 231 232 hPairProd: for proton SubType= 4 233 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 234 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 235 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 236 hPairProd : Emin= 0 eV Emax= 10 TeV 199 237 200 238 msc: for GenericIon SubType= 10 … … 204 242 205 243 ionIoni: for GenericIon SubType= 2 206 dE/dx and range tables from 100 eV to 10 TeV in 77bins207 Lambda tables from threshold to 10 TeV in 77bins, spline: 1208 finalRange(mm)= 0.0 2, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02244 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 245 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 246 finalRange(mm)= 0.01, dRoverRange= 0.1, integral: 1, fluct: 1, linLossLimit= 0.02 209 247 Stopping Power data for 17 ion/material pairs, nuclearStopping: 1 210 248 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 211 249 ParamICRU73 : Emin= 0 eV Emax= 10 TeV 250 251 nuclearStopping: for GenericIon SubType= 1 252 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 253 ICRU49NucStopping : Emin= 0 eV Emax= 10 TeV 254 255 nuclearStopping: for alpha SubType= 1 256 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 257 ICRU49NucStopping : Emin= 0 eV Emax= 10 TeV 258 259 hIoni: for anti_proton SubType= 2 260 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 261 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 262 finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 263 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 264 ICRU73QO : Emin= 0 eV Emax= 2 MeV 265 BetheBloch : Emin= 2 MeV Emax= 10 TeV 266 267 hIoni: for kaon+ SubType= 2 268 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 269 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 270 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 271 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 272 Bragg : Emin= 0 eV Emax= 1.05231 MeV 273 BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV 274 275 hBrems: for kaon+ SubType= 3 276 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 277 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 278 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 279 hBrem : Emin= 0 eV Emax= 10 TeV 280 281 hPairProd: for kaon+ SubType= 4 282 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 283 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 284 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 285 hPairProd : Emin= 0 eV Emax= 10 TeV 286 287 hIoni: for kaon- SubType= 2 288 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 289 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 290 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 291 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 292 ICRU73QO : Emin= 0 eV Emax= 1.05231 MeV 293 BetheBloch : Emin= 1.05231 MeV Emax= 10 TeV 294 295 hBrems: for kaon- SubType= 3 296 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 297 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 298 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 299 hBrem : Emin= 0 eV Emax= 10 TeV 300 301 hPairProd: for kaon- SubType= 4 302 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 303 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 304 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 305 hPairProd : Emin= 0 eV Emax= 10 TeV 306 307 muMsc: for mu+ SubType= 10 308 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 309 RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 1, polarAngleLimit(deg)= 11.4592 310 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 311 WentzelVIUni : Emin= 0 eV Emax= 10 TeV 312 313 muIoni: for mu+ SubType= 2 314 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 315 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 316 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 317 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 318 Bragg : Emin= 0 eV Emax= 200 keV 319 BetheBloch : Emin= 200 keV Emax= 1 GeV 320 MuBetheBloch : Emin= 1 GeV Emax= 10 TeV 321 322 muBrems: for mu+ SubType= 3 323 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 324 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 325 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 326 MuBrem : Emin= 0 eV Emax= 10 TeV 327 328 muPairProd: for mu+ SubType= 4 329 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 330 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 331 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 332 muPairProd : Emin= 0 eV Emax= 10 TeV 333 334 CoulombScat: for mu+ SubType= 1 335 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 336 11.4592 < Theta(degree) < 180, Eth(MeV)= 10; pLimit(GeV^1)= 0.139531 337 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 338 eCoulombScattering : Emin= 0 eV Emax= 10 TeV 339 340 muIoni: for mu- SubType= 2 341 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 342 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 343 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 344 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 345 ICRU73QO : Emin= 0 eV Emax= 200 keV 346 BetheBloch : Emin= 200 keV Emax= 1 GeV 347 MuBetheBloch : Emin= 1 GeV Emax= 10 TeV 348 349 muBrems: for mu- SubType= 3 350 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 351 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 352 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 353 MuBrem : Emin= 0 eV Emax= 10 TeV 354 355 muPairProd: for mu- SubType= 4 356 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 357 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 358 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 359 muPairProd : Emin= 0 eV Emax= 10 TeV 360 361 CoulombScat: for mu- SubType= 1 362 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 363 11.4592 < Theta(degree) < 180, Eth(MeV)= 10; pLimit(GeV^1)= 0.139531 364 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 365 eCoulombScattering : Emin= 0 eV Emax= 10 TeV 366 G4NeutronInelasticXS::BuildPhysicsTable: 367 neutron 368 G4NEUTRONXSDATA environment variable not set 369 G4NeutronCaptureXS::BuildPhysicsTable: 370 neutron 371 G4NEUTRONXSDATA environment variable not set 372 373 hIoni: for pi+ SubType= 2 374 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 375 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 376 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 377 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 378 Bragg : Emin= 0 eV Emax= 297.504 keV 379 BetheBloch : Emin= 297.504 keV Emax= 10 TeV 380 381 hBrems: for pi+ SubType= 3 382 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 383 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 384 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 385 hBrem : Emin= 0 eV Emax= 10 TeV 386 387 hPairProd: for pi+ SubType= 4 388 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 389 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 390 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 391 hPairProd : Emin= 0 eV Emax= 10 TeV 392 393 msc: for pi- SubType= 10 394 Lambda tables from 100 eV to 10 TeV in 220 bins, spline: 1 395 RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 1 396 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 397 UrbanMsc90 : Emin= 0 eV Emax= 10 TeV 398 399 hIoni: for pi- SubType= 2 400 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 401 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 402 finalRange(mm)= 0.05, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 403 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 404 ICRU73QO : Emin= 0 eV Emax= 297.504 keV 405 BetheBloch : Emin= 297.504 keV Emax= 10 TeV 406 407 hBrems: for pi- SubType= 3 408 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 409 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 410 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 411 hBrem : Emin= 0 eV Emax= 10 TeV 412 413 hPairProd: for pi- SubType= 4 414 dE/dx and range tables from 100 eV to 10 TeV in 220 bins 415 Lambda tables from threshold to 10 TeV in 220 bins, spline: 1 416 ===== EM models for the G4Region DefaultRegionForTheWorld ====== 417 hPairProd : Emin= 0 eV Emax= 10 TeV 212 418 ============================================================================================ 213 419 HADRONIC PROCESSES SUMMARY (verbose level 1) 420 421 Hadronic Processes for <anti_neutron> 422 CHIPS_Inelastic 423 424 Hadronic Processes for <anti_proton> 425 CHIPS_Inelastic 426 427 Hadronic Processes for <kaon+> 428 hInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000 429 Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 5 430 431 Hadronic Processes for <kaon-> 432 hInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000 433 Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 5 434 435 Hadronic Processes for <lambda> 436 hInelastic Models: FTFP: Emin(GeV)= 4 Emax(GeV)= 100000 437 Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 5 438 439 Hadronic Processes for <neutron> 440 hInelastic Models: QGSP: Emin(GeV)= 12.5 Emax(GeV)= 100000 441 FTFP: Emin(GeV)= 4 Emax(GeV)= 25 442 Bertini Cascade: Emin(GeV)= 1 Emax(GeV)= 5 443 Binary Cascade: Emin(GeV)= 0 Emax(GeV)= 1.5 444 nCapture Models: nRadCapture: Emin(GeV)= 0 Emax(GeV)= 100000 445 446 Hadronic Processes for <pi+> 447 hInelastic Models: QGSP: Emin(GeV)= 12.5 Emax(GeV)= 100000 448 FTFP: Emin(GeV)= 4 Emax(GeV)= 25 449 Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 5 450 451 Hadronic Processes for <pi-> 452 hInelastic Models: QGSP: Emin(GeV)= 12.5 Emax(GeV)= 100000 453 FTFP: Emin(GeV)= 4 Emax(GeV)= 25 454 Bertini Cascade: Emin(GeV)= 0 Emax(GeV)= 5 455 456 Hadronic Processes for <proton> 457 hInelastic Models: QGSP: Emin(GeV)= 12.5 Emax(GeV)= 100000 458 FTFP: Emin(GeV)= 4 Emax(GeV)= 25 459 Bertini Cascade: Emin(GeV)= 1 Emax(GeV)= 5 460 Binary Cascade: Emin(GeV)= 0 Emax(GeV)= 1.5 214 461 ============================================================================================ 215 462 … … 312 559 ===> Sorry, the incident alpha particle has missed the targeted cell ! 313 560 314 G4VisManager: Using G4TrajectoryDrawByCharge as default trajectory model.315 See commands in /vis/modeling/trajectories/ for other options.316 Trajectory drawing configuration will be based on imode value of 50317 WARNING: G4VisManager::IsValidView(): Attempt to draw when no graphics system318 has been instantiated. Use "/vis/open" or "/vis/sceneHandler/create".319 Alternatively, to avoid this message, suppress instantiation of vis320 manager (G4VisExecutive), possibly by setting G4VIS_NONE, and ensure321 drawing code is executed only if G4VVisManager::GetConcreteInstance()322 is non-zero.323 561 -> Event # 2 generated 324 562 ===> Sorry, the incident alpha particle has missed the targeted cell ! … … 335 573 -> Event # 6 generated 336 574 ===> The incident alpha particle has reached the targeted cell : 337 -----> total absorbed dose within Nucleus is (Gy) = 0.3 6355394124985338 -----> total absorbed dose within Cytoplasm is (Gy) = 0.0 5491229519248575 -----> total absorbed dose within Nucleus is (Gy) = 0.32255533337593 576 -----> total absorbed dose within Cytoplasm is (Gy) = 0.022024262696505 339 577 340 578 -> Event # 7 generated … … 348 586 349 587 -> Event # 10 generated 350 ===> The incident alpha particle has reached the targeted cell : 351 -----> total absorbed dose within Nucleus is (Gy) = 0.33644217252731 352 -----> total absorbed dose within Cytoplasm is (Gy) = 0.084216192364693 588 ===> Sorry, the incident alpha particle has missed the targeted cell ! 353 589 354 590 ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. 355 -> Total number of particles detected by the gas detector : 2591 -> Total number of particles detected by the gas detector : 1 356 592 357 593 Idle> Graphics systems deleted. -
trunk/examples/advanced/microbeam/src/MicrobeamEventAction.cc
r807 r1337 25 25 // 26 26 // ------------------------------------------------------------------- 27 // $Id: MicrobeamEventAction.cc,v 1. 6 2006/06/29 16:05:29 gunterExp $27 // $Id: MicrobeamEventAction.cc,v 1.8 2010/06/07 03:18:01 sincerti Exp $ 28 28 // ------------------------------------------------------------------- 29 29 30 30 #include "G4Event.hh" 31 #include "G4TrajectoryContainer.hh"32 #include "G4Trajectory.hh"33 #include "G4VVisManager.hh"34 31 #include "Randomize.hh" 35 32 … … 60 57 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 61 58 62 void MicrobeamEventAction::EndOfEventAction(const G4Event* evt)59 void MicrobeamEventAction::EndOfEventAction(const G4Event* ) 63 60 { 64 61 … … 81 78 G4cout << G4endl; 82 79 } 83 84 85 if (G4VVisManager::GetConcreteInstance())86 {87 G4TrajectoryContainer * trajectoryContainer = evt->GetTrajectoryContainer();88 G4int n_trajectories = 0;89 if (trajectoryContainer) n_trajectories = trajectoryContainer->entries();90 91 for (G4int i=0; i<n_trajectories; i++)92 {93 //G4cout<< "Iteration" << i <<G4endl;94 G4Trajectory* trj = (G4Trajectory*)((*(evt->GetTrajectoryContainer()))[i]);95 if (drawFlag == "all")96 {97 trj->DrawTrajectory(50);98 }99 else if ((drawFlag == "charged")&&(trj->GetCharge() != 0.))100 {101 trj->DrawTrajectory(50);102 }103 }104 105 //save rndm status106 107 /*108 if (Run->GetRndmFreq() == 2)109 {110 HepRandom::saveEngineStatus("endOfEvent.rndm");111 G4int evtNb = evt->GetEventID();112 if (evtNb%printModulo == 0)113 {114 //G4cout << "\n---> End of Event: " << evtNb << G4endl;115 //HepRandom::showEngineStatus();116 }117 }118 */119 }120 121 80 } -
trunk/examples/advanced/microbeam/src/MicrobeamPhantomConfiguration.cc
r1230 r1337 25 25 // 26 26 // ------------------------------------------------------------------- 27 // $Id: MicrobeamPhantomConfiguration.cc,v 1. 6 2008/06/16 07:46:11 sincertiExp $27 // $Id: MicrobeamPhantomConfiguration.cc,v 1.9 2010/06/25 09:41:03 gunter Exp $ 28 28 // ------------------------------------------------------------------- 29 29 … … 55 55 56 56 G4int ncols; 57 G4float vx, vy, vz, tmp, mat, den, density; 57 G4float vx, vy, vz, tmp, density; 58 G4int den, mat; 58 59 G4float denCyto1, denCyto2, denCyto3, denNucl1, denNucl2, denNucl3; 59 60 FILE* fMap; … … 67 68 nucleusMass=0; 68 69 cytoplasmMass=0; 70 density=0; 69 71 70 72 // READ PHANTOM PARAMETERS … … 83 85 for (G4int i=0; i<phantomTotalPixels; i++) 84 86 { 85 ncols = fscanf(fMap,"%f %f %f % f %f%f",&vx, &vy, &vz, &mat, &den, &tmp);87 ncols = fscanf(fMap,"%f %f %f %i %i %f",&vx, &vy, &vz, &mat, &den, &tmp); 86 88 87 if ( mat==2) // NUCLEUS89 if (std::abs(mat-2)<1.e-30) // NUCLEUS 88 90 { 89 if ( den==1) density = denNucl1*(g/cm3);90 if ( den==2) density = denNucl2*(g/cm3);91 if ( den==3) density = denNucl3*(g/cm3);91 if (std::abs(den-1)<1.e-30) density = denNucl1*(g/cm3); 92 if (std::abs(den-2)<1.e-30) density = denNucl2*(g/cm3); 93 if (std::abs(den-3)<1.e-30) density = denNucl3*(g/cm3); 92 94 nucleusMass = nucleusMass + density * dx * dy * dz ; 93 95 } 94 96 95 if ( mat==1) // CYTOPLASM97 if (std::abs(mat-1)<1.e-30) // CYTOPLASM 96 98 { 97 if ( den==1) density = denCyto1*(g/cm3);98 if ( den==2) density = denCyto2*(g/cm3);99 if ( den==3) density = denCyto3*(g/cm3);99 if (std::abs(den-1)<1e-30) density = denCyto1*(g/cm3); 100 if (std::abs(den-2)<1e-30) density = denCyto2*(g/cm3); 101 if (std::abs(den-3)<1e-30) density = denCyto3*(g/cm3); 100 102 cytoplasmMass = cytoplasmMass + density * dx * dy * dz ; 101 103 } -
trunk/examples/advanced/microbeam/src/MicrobeamPhysicsList.cc
r1230 r1337 24 24 // ******************************************************************** 25 25 // 26 // ------------------------------------------------------------------- 27 // $Id: MicrobeamPhysicsList.cc,v 1.8 2009/04/30 10:23:57 sincerti Exp $ 28 // ------------------------------------------------------------------- 29 30 #include "G4ParticleDefinition.hh" 26 // $Id: MicrobeamPhysicsList.cc,v 1.10 2010/06/10 09:54:05 vnivanch Exp $ 27 // GEANT4 tag $Name: geant4-09-04-beta-01 $ 28 // 29 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 31 32 #include "MicrobeamPhysicsList.hh" 33 #include "MicrobeamPhysicsListMessenger.hh" 34 35 #include "G4StepLimiter.hh" 36 37 #include "G4EmStandardPhysics.hh" 38 #include "G4EmStandardPhysics_option1.hh" 39 #include "G4EmStandardPhysics_option2.hh" 40 #include "G4EmStandardPhysics_option3.hh" 41 #include "G4EmLivermorePhysics.hh" 42 #include "G4EmPenelopePhysics.hh" 43 44 #include "G4DecayPhysics.hh" 45 46 #include "G4HadronElasticPhysics.hh" 47 #include "G4HadronDElasticPhysics.hh" 48 #include "G4HadronHElasticPhysics.hh" 49 #include "G4HadronQElasticPhysics.hh" 50 #include "G4HadronInelasticQBBC.hh" 51 #include "G4IonBinaryCascadePhysics.hh" 52 53 #include "G4LossTableManager.hh" 54 #include "G4EmConfigurator.hh" 55 #include "G4UnitsTable.hh" 56 31 57 #include "G4ProcessManager.hh" 32 #include "G4ParticleTypes.hh" 33 #include "G4StepLimiter.hh" 34 #include "G4BaryonConstructor.hh" 35 #include "G4IonConstructor.hh" 36 #include "G4MesonConstructor.hh" 37 38 #include "MicrobeamPhysicsList.hh" 39 40 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 41 42 MicrobeamPhysicsList::MicrobeamPhysicsList(): G4VUserPhysicsList() 43 { 58 #include "G4Decay.hh" 59 60 #include "G4IonFluctuations.hh" 61 #include "G4IonParametrisedLossModel.hh" 62 63 #include "G4BraggIonGasModel.hh" 64 #include "G4BetheBlochIonGasModel.hh" 65 66 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 67 68 MicrobeamPhysicsList::MicrobeamPhysicsList() : G4VModularPhysicsList() 69 { 70 G4LossTableManager::Instance(); 44 71 defaultCutValue = 0.01*micrometer; 45 72 cutForGamma = defaultCutValue; 46 73 cutForElectron = defaultCutValue; 47 74 cutForPositron = defaultCutValue; 75 76 helIsRegisted = false; 77 bicIsRegisted = false; 78 biciIsRegisted = false; 79 80 pMessenger = new MicrobeamPhysicsListMessenger(this); 81 48 82 SetVerboseLevel(1); 49 } 50 51 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 83 84 // EM physics 85 emName = G4String("emstandard_opt0"); 86 87 emPhysicsList = new G4EmStandardPhysics(1); 88 89 // Deacy physics and all particles 90 decPhysicsList = new G4DecayPhysics(); 91 } 92 93 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 52 94 53 95 MicrobeamPhysicsList::~MicrobeamPhysicsList() 54 {} 55 56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 96 { 97 delete pMessenger; 98 delete emPhysicsList; 99 delete decPhysicsList; 100 for(size_t i=0; i<hadronPhys.size(); i++) {delete hadronPhys[i];} 101 } 102 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 57 104 58 105 void MicrobeamPhysicsList::ConstructParticle() 59 106 { 60 ConstructBosons(); 61 ConstructLeptons(); 62 ConstructBaryons(); 63 } 64 65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 66 67 void MicrobeamPhysicsList::ConstructBosons() 68 { 69 // gamma 70 G4Gamma::GammaDefinition(); 71 72 // optical photon 73 G4OpticalPhoton::OpticalPhotonDefinition(); 74 } 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 76 77 void MicrobeamPhysicsList::ConstructLeptons() 78 { 79 // leptons 80 G4Electron::ElectronDefinition(); 81 G4Positron::PositronDefinition(); 82 } 83 84 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 85 86 void MicrobeamPhysicsList::ConstructBaryons() 87 { 88 // baryons 89 G4BaryonConstructor bConstructor; 90 bConstructor.ConstructParticle(); 91 92 G4IonConstructor iConstructor; 93 iConstructor.ConstructParticle(); 94 95 G4MesonConstructor mConstructor; 96 mConstructor.ConstructParticle(); 97 } 98 99 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 107 decPhysicsList->ConstructParticle(); 108 } 109 110 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 100 111 101 112 void MicrobeamPhysicsList::ConstructProcess() 102 113 { 114 // transportation 115 // 103 116 AddTransportation(); 104 ConstructEM(); 105 ConstructHad(); 106 ConstructGeneral(); 107 } 108 109 // *** Processes and models 110 111 // gamma 112 113 #include "G4PhotoElectricEffect.hh" 114 #include "G4LivermorePhotoElectricModel.hh" 115 116 #include "G4ComptonScattering.hh" 117 #include "G4LivermoreComptonModel.hh" 118 119 #include "G4GammaConversion.hh" 120 #include "G4LivermoreGammaConversionModel.hh" 121 122 #include "G4RayleighScattering.hh" 123 #include "G4LivermoreRayleighModel.hh" 124 125 // e- 126 127 #include "G4eMultipleScattering.hh" 128 #include "G4UniversalFluctuation.hh" 129 130 #include "G4eIonisation.hh" 131 #include "G4LivermoreIonisationModel.hh" 132 133 #include "G4eBremsstrahlung.hh" 134 #include "G4LivermoreBremsstrahlungModel.hh" 135 136 // e+ 137 138 #include "G4eplusAnnihilation.hh" 139 140 // mu 141 142 #include "G4MuIonisation.hh" 143 #include "G4MuBremsstrahlung.hh" 144 #include "G4MuPairProduction.hh" 145 146 // hadrons 147 148 #include "G4hMultipleScattering.hh" 149 #include "G4MscStepLimitType.hh" 150 151 #include "G4hBremsstrahlung.hh" 152 #include "G4hPairProduction.hh" 153 154 #include "G4hIonisation.hh" 155 #include "G4ionIonisation.hh" 156 #include "G4IonParametrisedLossModel.hh" 157 158 // 159 160 #include "G4LossTableManager.hh" 161 #include "G4EmProcessOptions.hh" 162 163 164 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 165 166 void MicrobeamPhysicsList::ConstructEM() 167 { 117 118 // electromagnetic physics list 119 // 120 emPhysicsList->ConstructProcess(); 121 122 // decay physics list 123 // 124 decPhysicsList->ConstructProcess(); 125 126 // hadronic physics lists 127 for(size_t i=0; i<hadronPhys.size(); i++) { 128 hadronPhys[i]->ConstructProcess(); 129 } 130 131 // step limitation (as a full process) 132 // 133 AddStepMax(); 134 135 } 136 137 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 138 139 void MicrobeamPhysicsList::AddPhysicsList(const G4String& name) 140 { 141 if (verboseLevel>1) { 142 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl; 143 } 144 145 if (name == emName) return; 146 147 if (name == "emstandard_opt0") { 148 149 emName = name; 150 delete emPhysicsList; 151 emPhysicsList = new G4EmStandardPhysics(1); 152 153 } else if (name == "emstandard_opt1") { 154 155 emName = name; 156 delete emPhysicsList; 157 emPhysicsList = new G4EmStandardPhysics_option1(); 158 159 } else if (name == "emstandard_opt2") { 160 161 emName = name; 162 delete emPhysicsList; 163 emPhysicsList = new G4EmStandardPhysics_option2(); 164 165 } else if (name == "emstandard_opt3") { 166 167 emName = name; 168 delete emPhysicsList; 169 emPhysicsList = new G4EmStandardPhysics_option3(); 170 171 } else if (name == "emlivermore") { 172 emName = name; 173 delete emPhysicsList; 174 emPhysicsList = new G4EmLivermorePhysics(); 175 176 } else if (name == "empenelope") { 177 emName = name; 178 delete emPhysicsList; 179 emPhysicsList = new G4EmPenelopePhysics(); 180 181 } else if (name == "ionGasModels") { 182 183 AddPhysicsList("emstandard_opt3"); 184 emName = name; 185 AddIonGasModels(); 186 187 } else if (name == "elastic" && !helIsRegisted) { 188 hadronPhys.push_back( new G4HadronElasticPhysics()); 189 helIsRegisted = true; 190 191 } else if (name == "DElastic" && !helIsRegisted) { 192 hadronPhys.push_back( new G4HadronDElasticPhysics()); 193 helIsRegisted = true; 194 195 } else if (name == "HElastic" && !helIsRegisted) { 196 hadronPhys.push_back( new G4HadronHElasticPhysics()); 197 helIsRegisted = true; 198 199 } else if (name == "QElastic" && !helIsRegisted) { 200 hadronPhys.push_back( new G4HadronQElasticPhysics()); 201 helIsRegisted = true; 202 203 } else if (name == "binary" && !bicIsRegisted) { 204 hadronPhys.push_back(new G4HadronInelasticQBBC()); 205 bicIsRegisted = true; 206 207 } else if (name == "binary_ion" && !biciIsRegisted) { 208 hadronPhys.push_back(new G4IonBinaryCascadePhysics()); 209 biciIsRegisted = true; 210 211 } else { 212 213 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" 214 << " is not defined" 215 << G4endl; 216 } 217 } 218 219 220 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 221 222 void MicrobeamPhysicsList::AddStepMax() 223 { 224 // Step limitation seen as a process 225 stepMaxProcess = new G4StepLimiter(); 226 168 227 theParticleIterator->reset(); 169 170 while( (*theParticleIterator)() ){ 171 228 while ((*theParticleIterator)()){ 172 229 G4ParticleDefinition* particle = theParticleIterator->value(); 173 230 G4ProcessManager* pmanager = particle->GetProcessManager(); 174 G4String particleName = particle->GetParticleName(); 175 176 if (particleName == "gamma") { 177 178 179 G4PhotoElectricEffect* thePhotoElectricEffect = new G4PhotoElectricEffect(); 180 G4LivermorePhotoElectricModel* theLivermorePhotoElectricModel = new G4LivermorePhotoElectricModel(); 181 thePhotoElectricEffect->AddEmModel(0, theLivermorePhotoElectricModel); 182 pmanager->AddDiscreteProcess(thePhotoElectricEffect); 183 184 G4ComptonScattering* theComptonScattering = new G4ComptonScattering(); 185 G4LivermoreComptonModel* theLivermoreComptonModel = new G4LivermoreComptonModel(); 186 theComptonScattering->AddEmModel(0, theLivermoreComptonModel); 187 pmanager->AddDiscreteProcess(theComptonScattering); 188 189 G4GammaConversion* theGammaConversion = new G4GammaConversion(); 190 G4LivermoreGammaConversionModel* theLivermoreGammaConversionModel = new G4LivermoreGammaConversionModel(); 191 theGammaConversion->AddEmModel(0, theLivermoreGammaConversionModel); 192 pmanager->AddDiscreteProcess(theGammaConversion); 193 194 G4RayleighScattering* theRayleigh = new G4RayleighScattering(); 195 G4LivermoreRayleighModel* theRayleighModel = new G4LivermoreRayleighModel(); 196 theRayleigh->AddEmModel(0, theRayleighModel); 197 pmanager->AddDiscreteProcess(theRayleigh); 198 199 pmanager->AddProcess(new G4StepLimiter(), -1, -1, 5); 200 201 } else if (particleName == "e-") { 202 203 G4eMultipleScattering* msc = new G4eMultipleScattering(); 204 msc->SetStepLimitType(fUseDistanceToBoundary); 205 pmanager->AddProcess(msc, -1, 1, 1); 206 207 // Ionisation 208 G4eIonisation* eIoni = new G4eIonisation(); 209 eIoni->AddEmModel(0, new G4LivermoreIonisationModel(), new G4UniversalFluctuation() ); 210 eIoni->SetStepFunction(0.2, 100*um); // 211 pmanager->AddProcess(eIoni, -1, 2, 2); 212 213 // Bremsstrahlung 214 G4eBremsstrahlung* eBrem = new G4eBremsstrahlung(); 215 eBrem->AddEmModel(0, new G4LivermoreBremsstrahlungModel()); 216 pmanager->AddProcess(eBrem, -1,-3, 3); 217 218 pmanager->AddProcess(new G4StepLimiter(), -1, -1, 4); 219 220 } else if (particleName == "e+") { 221 222 // Identical to G4EmStandardPhysics_option3 223 224 G4eMultipleScattering* msc = new G4eMultipleScattering(); 225 msc->SetStepLimitType(fUseDistanceToBoundary); 226 pmanager->AddProcess(msc, -1, 1, 1); 227 228 G4eIonisation* eIoni = new G4eIonisation(); 229 eIoni->SetStepFunction(0.2, 100*um); 230 pmanager->AddProcess(eIoni, -1, 2, 2); 231 232 pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3); 233 234 pmanager->AddProcess(new G4eplusAnnihilation,0,-1, 4); 235 236 pmanager->AddProcess(new G4StepLimiter(), -1, -1, 5); 237 238 } else if (particleName == "GenericIon") { 239 240 pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1); 241 242 G4ionIonisation* ionIoni = new G4ionIonisation(); 243 ionIoni->SetEmModel(new G4IonParametrisedLossModel()); 244 ionIoni->SetStepFunction(0.1, 20*um); 245 pmanager->AddProcess(ionIoni, -1, 2, 2); 246 247 pmanager->AddProcess(new G4StepLimiter(), -1, -1, 3); 248 249 } else if (particleName == "alpha" || 250 particleName == "He3" ) { 251 252 // Identical to G4EmStandardPhysics_option3 253 254 pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1); 255 256 G4ionIonisation* ionIoni = new G4ionIonisation(); 257 ionIoni->SetStepFunction(0.1, 20*um); 258 pmanager->AddProcess(ionIoni, -1, 2, 2); 259 260 pmanager->AddProcess(new G4StepLimiter(), -1, -1, 3); 261 } 262 263 // 264 265 } 266 } 267 268 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 269 270 #include "G4HadronElasticProcess.hh" 271 #include "G4LElastic.hh" 272 273 #include "G4AlphaInelasticProcess.hh" 274 #include "G4BinaryLightIonReaction.hh" 275 #include "G4TripathiCrossSection.hh" 276 #include "G4IonsShenCrossSection.hh" 277 #include "G4LEAlphaInelastic.hh" 278 279 void MicrobeamPhysicsList::ConstructHad() 280 { 281 282 G4HadronElasticProcess * theElasticProcess = new G4HadronElasticProcess; 283 theElasticProcess->RegisterMe( new G4LElastic() ); 284 285 theParticleIterator->reset(); 286 while( (*theParticleIterator)() ) 287 { 288 G4ParticleDefinition* particle = theParticleIterator->value(); 289 G4ProcessManager* pManager = particle->GetProcessManager(); 290 291 if (particle->GetParticleName() == "alpha") 292 { 293 294 // INELASTIC SCATTERING 295 // Binary Cascade 296 G4BinaryLightIonReaction* theBC = new G4BinaryLightIonReaction(); 297 theBC -> SetMinEnergy(80.*MeV); 298 theBC -> SetMaxEnergy(40.*GeV); 299 300 // TRIPATHI CROSS SECTION 301 // Implementation of formulas in analogy to NASA technical paper 3621 by 302 // Tripathi, et al. Cross-sections for ion ion scattering 303 G4TripathiCrossSection* TripathiCrossSection = new G4TripathiCrossSection; 304 305 // IONS SHEN CROSS SECTION 306 // Implementation of formulas 307 // Shen et al. Nuc. Phys. A 491 130 (1989) 308 // Total Reaction Cross Section for Heavy-Ion Collisions 309 G4IonsShenCrossSection* aShen = new G4IonsShenCrossSection; 310 311 // Final state production model for Alpha inelastic scattering below 20 GeV 312 G4LEAlphaInelastic* theAIModel = new G4LEAlphaInelastic; 313 theAIModel -> SetMaxEnergy(100.*MeV); 314 315 G4AlphaInelasticProcess * theIPalpha = new G4AlphaInelasticProcess; 316 theIPalpha->AddDataSet(TripathiCrossSection); 317 theIPalpha->AddDataSet(aShen); 318 319 // Register the Alpha Inelastic and Binary Cascade Model 320 theIPalpha->RegisterMe(theAIModel); 321 theIPalpha->RegisterMe(theBC); 322 323 // Activate the alpha inelastic scattering using the alpha inelastic and binary cascade model 324 pManager -> AddDiscreteProcess(theIPalpha); 325 326 // Activate the Hadron Elastic Process 327 pManager -> AddDiscreteProcess(theElasticProcess); 328 329 } 330 } 331 332 } 333 334 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 335 336 void MicrobeamPhysicsList::ConstructGeneral() 337 { } 338 339 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... 231 232 if (stepMaxProcess->IsApplicable(*particle) && pmanager) 233 { 234 pmanager ->AddDiscreteProcess(stepMaxProcess); 235 } 236 } 237 } 238 239 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 340 240 341 241 void MicrobeamPhysicsList::SetCuts() 342 242 { 243 343 244 if (verboseLevel >0){ 344 G4cout << " MicrobeamPhysicsList::SetCuts:";245 G4cout << "PhysicsList::SetCuts:"; 345 246 G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl; 346 } 347 247 } 248 348 249 // set cut values for gamma at first and for e- second and next for e+, 349 // because some processes for e+/e- need cut values for gamma 250 // because some processes for e+/e- need cut values for gamma 350 251 SetCutValue(cutForGamma, "gamma"); 351 252 SetCutValue(cutForElectron, "e-"); 352 253 SetCutValue(cutForPositron, "e+"); 353 254 354 255 if (verboseLevel>0) DumpCutValuesTable(); 355 356 } 357 256 } 257 258 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 259 260 void MicrobeamPhysicsList::SetCutForGamma(G4double cut) 261 { 262 cutForGamma = cut; 263 SetParticleCuts(cutForGamma, G4Gamma::Gamma()); 264 } 265 266 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 267 268 void MicrobeamPhysicsList::SetCutForElectron(G4double cut) 269 { 270 cutForElectron = cut; 271 SetParticleCuts(cutForElectron, G4Electron::Electron()); 272 } 273 274 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 275 276 void MicrobeamPhysicsList::SetCutForPositron(G4double cut) 277 { 278 cutForPositron = cut; 279 SetParticleCuts(cutForPositron, G4Positron::Positron()); 280 } 281 282 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 283 284 void MicrobeamPhysicsList::AddIonGasModels() 285 { 286 G4EmConfigurator* em_config = G4LossTableManager::Instance()->EmConfigurator(); 287 theParticleIterator->reset(); 288 while ((*theParticleIterator)()) 289 { 290 G4ParticleDefinition* particle = theParticleIterator->value(); 291 G4String partname = particle->GetParticleName(); 292 if(partname == "alpha" || partname == "He3" || partname == "GenericIon") { 293 G4BraggIonGasModel* mod1 = new G4BraggIonGasModel(); 294 G4BetheBlochIonGasModel* mod2 = new G4BetheBlochIonGasModel(); 295 G4double eth = 2.*MeV*particle->GetPDGMass()/proton_mass_c2; 296 em_config->SetExtraEmModel(partname,"ionIoni",mod1,"",0.0,eth, 297 new G4IonFluctuations()); 298 em_config->SetExtraEmModel(partname,"ionIoni",mod2,"",eth,100*TeV, 299 new G4UniversalFluctuation()); 300 301 } 302 } 303 } 304 305 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 306
Note: See TracChangeset
for help on using the changeset viewer.