Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Based on the work of M. Terrissol and M. C. 27 // 28 // Users are requested to cite the following p 29 // - M. Terrissol, A. Baudre, Radiat. Prot. Do 30 // - M.C. Bordage, J. Bordes, S. Edel, M. Terr 31 // M. Bardies, N. Lampe, S. Incerti, Phys. M 32 // 33 // Authors of this class: 34 // M.C. Bordage, M. Terrissol, S. Edel, J. Bor 35 // 36 // 15.01.2014: creation 37 // 38 // 39 // Modified for Adenine material by S. Zein on 40 // Based on the study by S. Zein et. al. Nucl. 41 42 #include "G4DNACPA100IonisationStructure.hh" 43 44 #include "G4Material.hh" 45 #include "G4SystemOfUnits.hh" 46 47 G4DNACPA100IonisationStructure::G4DNACPA100Ion 48 { 49 fpGuanine = G4Material::GetMaterial("G4_GUAN 50 fpG4_WATER = G4Material::GetMaterial("G4_WAT 51 fpDeoxyribose = G4Material::GetMaterial("G4_ 52 fpCytosine = G4Material::GetMaterial("G4_CYT 53 fpThymine = G4Material::GetMaterial("G4_THYM 54 fpAdenine = G4Material::GetMaterial("G4_ADEN 55 fpPhosphate = G4Material::GetMaterial("G4_PH 56 57 if (fpGuanine != nullptr) { 58 InitialiseGuanine(); 59 } 60 61 if (fpG4_WATER != nullptr) { 62 InitialiseWater(); 63 } 64 65 if (fpDeoxyribose != nullptr) { 66 InitialiseDeoxyribose(); 67 } 68 69 if (fpCytosine != nullptr) { 70 InitialiseCytosine(); 71 } 72 73 if (fpThymine != nullptr) { 74 InitialiseThymine(); 75 } 76 77 if (fpAdenine != nullptr) { 78 InitialiseAdenine(); 79 } 80 81 if (fpPhosphate != nullptr) { 82 InitialisePhosphate(); 83 } 84 } 85 86 void G4DNACPA100IonisationStructure::Initialis 87 { 88 auto index = fpGuanine->GetIndex(); 89 /// Guanine has 39 ionization levels 90 91 fEnergyConstant[index].push_back(8.2315 * eV 92 fEnergyConstant[index].push_back(11.0928 * e 93 fEnergyConstant[index].push_back(11.5984 * e 94 fEnergyConstant[index].push_back(11.7906 * e 95 fEnergyConstant[index].push_back(11.9382 * e 96 fEnergyConstant[index].push_back(12.4424 * e 97 fEnergyConstant[index].push_back(13.3581 * e 98 fEnergyConstant[index].push_back(15.1381 * e 99 fEnergyConstant[index].push_back(16.4059 * e 100 fEnergyConstant[index].push_back(16.496 * eV 101 fEnergyConstant[index].push_back(16.8457 * e 102 fEnergyConstant[index].push_back(17.297 * eV 103 fEnergyConstant[index].push_back(18.0608 * e 104 fEnergyConstant[index].push_back(18.441 * eV 105 fEnergyConstant[index].push_back(19.2414 * e 106 fEnergyConstant[index].push_back(20.0877 * e 107 fEnergyConstant[index].push_back(20.3321 * e 108 fEnergyConstant[index].push_back(22.0153 * e 109 fEnergyConstant[index].push_back(22.9048 * e 110 fEnergyConstant[index].push_back(24.2447 * e 111 fEnergyConstant[index].push_back(24.692 * eV 112 fEnergyConstant[index].push_back(28.2049 * e 113 fEnergyConstant[index].push_back(32.1299 * e 114 fEnergyConstant[index].push_back(33.2774 * e 115 fEnergyConstant[index].push_back(33.3958 * e 116 fEnergyConstant[index].push_back(36.6377 * e 117 fEnergyConstant[index].push_back(37.3483 * e 118 fEnergyConstant[index].push_back(38.3743 * e 119 fEnergyConstant[index].push_back(305.7284 * 120 fEnergyConstant[index].push_back(307.4187 * 121 fEnergyConstant[index].push_back(307.8468 * 122 fEnergyConstant[index].push_back(308.9415 * 123 fEnergyConstant[index].push_back(309.8057 * 124 fEnergyConstant[index].push_back(423.1456 * 125 fEnergyConstant[index].push_back(423.2615 * 126 fEnergyConstant[index].push_back(424.5211 * 127 fEnergyConstant[index].push_back(425.006 * e 128 fEnergyConstant[index].push_back(425.0315 * 129 fEnergyConstant[index].push_back(558.2487 * 130 fnLevels[index] = fEnergyConstant[index].siz 131 } 132 133 void G4DNACPA100IonisationStructure::Initialis 134 { 135 auto index = fpG4_WATER->GetIndex(); 136 // The following values are extracted from t 137 // Paul Sabatier University, Toulouse, Franc 138 // Page 36 139 fEnergyConstant[index].push_back(10.79 * eV) 140 fEnergyConstant[index].push_back(13.39 * eV) 141 fEnergyConstant[index].push_back(16.05 * eV) 142 fEnergyConstant[index].push_back(32.30 * eV) 143 fEnergyConstant[index].push_back(539.0 * eV) 144 145 fUConstant[index].push_back(61.91 * eV); 146 fUConstant[index].push_back(59.52 * eV); 147 fUConstant[index].push_back(48.36 * eV); 148 fUConstant[index].push_back(70.71 * eV); 149 fUConstant[index].push_back(796.2 * eV); 150 fnLevels[index] = fEnergyConstant[index].siz 151 } 152 153 void G4DNACPA100IonisationStructure::Initialis 154 { 155 auto index = fpDeoxyribose->GetIndex(); 156 fEnergyConstant[index].push_back(11.241 * eV 157 fEnergyConstant[index].push_back(11.7927 * e 158 fEnergyConstant[index].push_back(12.6579 * e 159 fEnergyConstant[index].push_back(12.8163 * e 160 fEnergyConstant[index].push_back(13.3238 * e 161 fEnergyConstant[index].push_back(13.9487 * e 162 fEnergyConstant[index].push_back(14.4374 * e 163 fEnergyConstant[index].push_back(14.7433 * e 164 fEnergyConstant[index].push_back(15.0818 * e 165 fEnergyConstant[index].push_back(15.6112 * e 166 fEnergyConstant[index].push_back(16.0547 * e 167 fEnergyConstant[index].push_back(16.8319 * e 168 fEnergyConstant[index].push_back(17.4294 * e 169 fEnergyConstant[index].push_back(18.0 * eV); 170 fEnergyConstant[index].push_back(18.2696 * e 171 fEnergyConstant[index].push_back(18.6049 * e 172 fEnergyConstant[index].push_back(19.8378 * e 173 fEnergyConstant[index].push_back(20.5787 * e 174 fEnergyConstant[index].push_back(22.0146 * e 175 fEnergyConstant[index].push_back(22.9176 * e 176 fEnergyConstant[index].push_back(24.9005 * e 177 fEnergyConstant[index].push_back(28.0268 * e 178 fEnergyConstant[index].push_back(28.7417 * e 179 fEnergyConstant[index].push_back(36.9571 * e 180 fEnergyConstant[index].push_back(37.1881 * e 181 fEnergyConstant[index].push_back(37.5798 * e 182 fEnergyConstant[index].push_back(39.2622 * e 183 fEnergyConstant[index].push_back(305.446 * e 184 fEnergyConstant[index].push_back(306.6421 * 185 fEnergyConstant[index].push_back(306.8925 * 186 fEnergyConstant[index].push_back(307.0377 * 187 fEnergyConstant[index].push_back(308.5849 * 188 fEnergyConstant[index].push_back(559.0236 * 189 fEnergyConstant[index].push_back(559.3832 * 190 fEnergyConstant[index].push_back(559.6416 * 191 fEnergyConstant[index].push_back(559.7734 * 192 193 fnLevels[index] = fEnergyConstant[index].siz 194 } 195 196 void G4DNACPA100IonisationStructure::Initialis 197 { 198 auto index = fpCytosine->GetIndex(); 199 /// Cytosine has 29 ionization levels 200 fEnergyConstant[index].push_back(9.3222 * eV 201 fEnergyConstant[index].push_back(10.4601 * e 202 fEnergyConstant[index].push_back(11.3044 * e 203 fEnergyConstant[index].push_back(11.9986 * e 204 fEnergyConstant[index].push_back(13.4528 * e 205 fEnergyConstant[index].push_back(14.7371 * e 206 fEnergyConstant[index].push_back(16.2286 * e 207 fEnergyConstant[index].push_back(16.5877 * e 208 fEnergyConstant[index].push_back(17.0741 * e 209 fEnergyConstant[index].push_back(17.1875 * e 210 fEnergyConstant[index].push_back(18.638 * eV 211 fEnergyConstant[index].push_back(19.6884 * e 212 fEnergyConstant[index].push_back(20.8713 * e 213 fEnergyConstant[index].push_back(20.9056 * e 214 fEnergyConstant[index].push_back(24.0179 * e 215 fEnergyConstant[index].push_back(24.5543 * e 216 fEnergyConstant[index].push_back(29.0576 * e 217 fEnergyConstant[index].push_back(32.0504 * e 218 fEnergyConstant[index].push_back(34.5499 * e 219 fEnergyConstant[index].push_back(35.5664 * e 220 fEnergyConstant[index].push_back(38.0707 * e 221 fEnergyConstant[index].push_back(305.7622 * 222 fEnergyConstant[index].push_back(307.9891 * 223 fEnergyConstant[index].push_back(308.674 * e 224 fEnergyConstant[index].push_back(309.0146 * 225 fEnergyConstant[index].push_back(422.5331 * 226 fEnergyConstant[index].push_back(424.1245 * 227 fEnergyConstant[index].push_back(424.7781 * 228 fEnergyConstant[index].push_back(557.6346 * 229 fnLevels[index] = fEnergyConstant[index].siz 230 } 231 232 void G4DNACPA100IonisationStructure::Initialis 233 { 234 // The following values are extracted from t 235 auto index = fpThymine->GetIndex(); 236 237 /// THYMINE has 33 ionization levels 238 239 fEnergyConstant[index].push_back(9.639 * eV) 240 fEnergyConstant[index].push_back(11.8278 * e 241 fEnergyConstant[index].push_back(12.0876 * e 242 fEnergyConstant[index].push_back(12.9656 * e 243 fEnergyConstant[index].push_back(13.9555 * e 244 fEnergyConstant[index].push_back(15.0774 * e 245 fEnergyConstant[index].push_back(15.4078 * e 246 fEnergyConstant[index].push_back(15.4689 * e 247 fEnergyConstant[index].push_back(16.1964 * e 248 fEnergyConstant[index].push_back(16.8955 * e 249 fEnergyConstant[index].push_back(17.5018 * e 250 fEnergyConstant[index].push_back(18.2979 * e 251 fEnergyConstant[index].push_back(18.4495 * e 252 fEnergyConstant[index].push_back(19.3186 * e 253 fEnergyConstant[index].push_back(20.9944 * e 254 fEnergyConstant[index].push_back(21.0797 * e 255 fEnergyConstant[index].push_back(24.3676 * e 256 fEnergyConstant[index].push_back(24.9072 * e 257 fEnergyConstant[index].push_back(26.3981 * e 258 fEnergyConstant[index].push_back(30.1684 * e 259 fEnergyConstant[index].push_back(33.9007 * e 260 fEnergyConstant[index].push_back(35.6553 * e 261 fEnergyConstant[index].push_back(38.4935 * e 262 fEnergyConstant[index].push_back(39.3191 * e 263 fEnergyConstant[index].push_back(305.6808 * 264 fEnergyConstant[index].push_back(306.1885 * 265 fEnergyConstant[index].push_back(307.9374 * 266 fEnergyConstant[index].push_back(309.3127 * 267 fEnergyConstant[index].push_back(310.2121 * 268 fEnergyConstant[index].push_back(424.8945 * 269 fEnergyConstant[index].push_back(425.2178 * 270 fEnergyConstant[index].push_back(558.7154 * 271 fEnergyConstant[index].push_back(558.8106 * 272 fnLevels[index] = fEnergyConstant[index].siz 273 } 274 275 void G4DNACPA100IonisationStructure::Initialis 276 { 277 auto index = fpAdenine->GetIndex(); 278 /// Adenine has 35 ionization levels 279 280 fEnergyConstant[index].push_back(8.5114 * eV 281 fEnergyConstant[index].push_back(10.1294 * e 282 fEnergyConstant[index].push_back(11.0606 * e 283 fEnergyConstant[index].push_back(11.5849 * e 284 fEnergyConstant[index].push_back(12.1533 * e 285 fEnergyConstant[index].push_back(13.356 * eV 286 fEnergyConstant[index].push_back(13.6554 * e 287 fEnergyConstant[index].push_back(15.3296 * e 288 fEnergyConstant[index].push_back(16.179 * eV 289 fEnergyConstant[index].push_back(16.7676 * e 290 fEnergyConstant[index].push_back(17.3489 * e 291 fEnergyConstant[index].push_back(17.5568 * e 292 fEnergyConstant[index].push_back(18.554 * eV 293 fEnergyConstant[index].push_back(19.0866 * e 294 fEnergyConstant[index].push_back(20.2559 * e 295 fEnergyConstant[index].push_back(21.4027 * e 296 fEnergyConstant[index].push_back(23.0384 * e 297 fEnergyConstant[index].push_back(23.9742 * e 298 fEnergyConstant[index].push_back(24.479 * eV 299 fEnergyConstant[index].push_back(28.3224 * e 300 fEnergyConstant[index].push_back(31.4796 * e 301 fEnergyConstant[index].push_back(32.4597 * e 302 fEnergyConstant[index].push_back(34.1263 * e 303 fEnergyConstant[index].push_back(35.6423 * e 304 fEnergyConstant[index].push_back(37.5026 * e 305 fEnergyConstant[index].push_back(305.9305 * 306 fEnergyConstant[index].push_back(307.4532 * 307 fEnergyConstant[index].push_back(307.6866 * 308 fEnergyConstant[index].push_back(307.8303 * 309 fEnergyConstant[index].push_back(308.2887 * 310 fEnergyConstant[index].push_back(422.8443 * 311 fEnergyConstant[index].push_back(423.0296 * 312 fEnergyConstant[index].push_back(423.3954 * 313 fEnergyConstant[index].push_back(423.8101 * 314 fEnergyConstant[index].push_back(425.0749 * 315 fnLevels[index] = fEnergyConstant[index].siz 316 } 317 318 void G4DNACPA100IonisationStructure::Initialis 319 { 320 auto index = fpPhosphate->GetIndex(); 321 /// Phosphate has 25 ionization levels 322 323 fEnergyConstant[index].push_back(12.9963 * e 324 fEnergyConstant[index].push_back(12.9972 * e 325 fEnergyConstant[index].push_back(14.3109 * e 326 fEnergyConstant[index].push_back(15.2221 * e 327 fEnergyConstant[index].push_back(16.0591 * e 328 fEnergyConstant[index].push_back(16.0622 * e 329 fEnergyConstant[index].push_back(17.6365 * e 330 fEnergyConstant[index].push_back(17.6401 * e 331 fEnergyConstant[index].push_back(18.8803 * e 332 fEnergyConstant[index].push_back(20.6975 * e 333 fEnergyConstant[index].push_back(20.7054 * e 334 fEnergyConstant[index].push_back(24.2764 * e 335 fEnergyConstant[index].push_back(35.6676 * e 336 fEnergyConstant[index].push_back(38.1681 * e 337 fEnergyConstant[index].push_back(38.1685 * e 338 fEnergyConstant[index].push_back(40.1946 * e 339 fEnergyConstant[index].push_back(150.138 * e 340 fEnergyConstant[index].push_back(150.1381 * 341 fEnergyConstant[index].push_back(150.1414 * 342 fEnergyConstant[index].push_back(207.3392 * 343 fEnergyConstant[index].push_back(558.1119 * 344 fEnergyConstant[index].push_back(560.5803 * 345 fEnergyConstant[index].push_back(560.5808 * 346 fEnergyConstant[index].push_back(560.5817 * 347 fEnergyConstant[index].push_back(2179.592 * 348 fnLevels[index] = fEnergyConstant[index].siz 349 } 350 351 //....oooOO0OOooo........oooOO0OOooo........oo 352 353 G4double G4DNACPA100IonisationStructure::Ionis 354 355 { 356 G4double ionisation = 0.; 357 358 if (level < fnLevels[MatID]) { 359 ionisation = fEnergyConstant[MatID][level] 360 } 361 else { 362 std::ostringstream oss; 363 oss << " material was not found. "; 364 G4Exception("G4DNACPA100IonisationStructur 365 oss.str().c_str()); 366 } 367 368 return ionisation; 369 } 370 371 //....oooOO0OOooo........oooOO0OOooo........oo 372 373 G4double G4DNACPA100IonisationStructure::UEner 374 { 375 G4double UEnergy = 0.; 376 if (level < fnLevels[MatID]) { 377 UEnergy = fUConstant[MatID][level]; 378 } 379 else { 380 std::ostringstream oss; 381 oss << " material was not found. "; 382 G4Exception("G4DNACPA100IonisationStructur 383 oss.str().c_str()); 384 } 385 386 return UEnergy; 387 } 388