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 // 27 // 28 // Author: Alfonso Mantero (Alfonso.Mantero@ge 29 // 30 // History: 31 // ----------- 32 // 20 Aug 2001 Alfonso Mantero Created 33 // 34 // ------------------------------------------- 35 36 #include "XrayFluoNistMaterials.hh" 37 #include "G4PhysicalConstants.hh" 38 #include "G4SystemOfUnits.hh" 39 40 XrayFluoNistMaterials::XrayFluoNistMaterials() 41 { CreateMaterials();} 42 43 XrayFluoNistMaterials::~XrayFluoNistMaterials( 44 { 45 delete dolorite; 46 delete HPGe; 47 delete SiLi; 48 delete mars1; 49 delete anorthosite; 50 delete basalt; 51 delete gabbro; 52 delete gabbroWD; 53 delete gabbroRF; 54 delete Air; 55 delete Sci; 56 delete Vacuum; 57 delete madaBasalt; 58 delete icelandicBasalt; 59 delete icelandicWD; 60 delete icelandicRF; 61 delete GaAs; 62 delete galactic; 63 delete copper; 64 // delete nickel; 65 delete hawaiianRF; 66 delete hawaiianWD; 67 68 69 70 } 71 XrayFluoNistMaterials* XrayFluoNistMaterials:: 72 73 XrayFluoNistMaterials* XrayFluoNistMaterials:: 74 { 75 if (instance == 0) 76 { 77 instance = new XrayFluoNistMaterials; 78 79 } 80 return instance; 81 } 82 83 G4Material* XrayFluoNistMaterials::GetMaterial 84 { 85 86 //instancing G4NistManager 87 nistMan = G4NistManager::Instance(); 88 nistMan->SetVerbose(0); 89 90 //If not available at NIST, look for the loc 91 G4Material* mat = nistMan->FindOrBuildMater 92 if (!mat) { 93 mat = G4Material::GetMaterial(material); 94 } 95 if (!mat) {G4cout << material << "Not Found, 96 return mat; 97 } 98 99 100 void XrayFluoNistMaterials::CreateMaterials() 101 { 102 103 G4double density; 104 std::vector<G4int> natoms; 105 std::vector<G4double> fractionMass; 106 std::vector<G4String> elements; 107 108 109 //instancing G4NistManager 110 nistMan = G4NistManager::Instance(); 111 nistMan->SetVerbose(1); 112 113 // Materials Definitions 114 115 116 /////////////////////// 117 // Madagascar Basalt // 118 /////////////////////// 119 120 121 // Define Madagascar Basalt main components 122 density = 3*g/cm3; 123 elements.push_back("Si"); fractionMass.push 124 elements.push_back("Ti"); fractionMass.push 125 elements.push_back("Al"); fractionMass.push 126 elements.push_back("Fe"); fractionMass.push 127 elements.push_back("Mn"); fractionMass.push 128 elements.push_back("Mg"); fractionMass.push 129 elements.push_back("Ca"); fractionMass.push 130 elements.push_back("Na"); fractionMass.push 131 elements.push_back("K"); fractionMass.push 132 elements.push_back("P"); fractionMass.push 133 elements.push_back("O"); fractionMass.push 134 135 // sum is 0.04434383 total number of moles 136 // 2.248766e8 g per 10.000.000 moles. 137 138 G4Material* madaBasaltMain= nistMan->Constru 139 elements.clear(); 140 fractionMass.clear(); 141 142 // Define Madagascar Basalt traces components 143 density = 3*g/cm3; 144 145 146 elements.push_back("Ti"); natoms.push_back( 147 elements.push_back("Ba"); natoms.push_back( 148 elements.push_back("Ce"); natoms.push_back( 149 elements.push_back("Co"); natoms.push_back( 150 elements.push_back("Cr"); natoms.push_back( 151 elements.push_back("La"); natoms.push_back( 152 elements.push_back("Nb"); natoms.push_back( 153 elements.push_back("Nd"); natoms.push_back( 154 elements.push_back("Ni"); natoms.push_back( 155 elements.push_back("Rb"); natoms.push_back( 156 elements.push_back("Sc"); natoms.push_back( 157 elements.push_back("Sr"); natoms.push_back( 158 elements.push_back("V"); natoms.push_back( 159 elements.push_back("Y"); natoms.push_back( 160 elements.push_back("Zn"); natoms.push_back( 161 elements.push_back("Th"); natoms.push_back( 162 elements.push_back("Sm"); natoms.push_back( 163 elements.push_back("Eu"); natoms.push_back( 164 elements.push_back("Gd"); natoms.push_back( 165 elements.push_back("Tb"); natoms.push_back( 166 elements.push_back("Yb"); natoms.push_back( 167 elements.push_back("Lu"); natoms.push_back( 168 elements.push_back("Ta"); natoms.push_back( 169 elements.push_back("Hf"); natoms.push_back( 170 171 //tot 28114/10e7 weight: 2335253.28 g per 1 172 173 G4Material* madaBasaltTraces= nistMan->Const 174 elements.clear(); 175 natoms.clear(); 176 177 // Define Madacagascar Basalt complete mater 178 density = 3*g/cm3; 179 180 madaBasalt= new G4Material("MadaBasalt", den 181 madaBasalt->AddMaterial(madaBasaltMain, 0 182 madaBasalt->AddMaterial(madaBasaltTraces, 0 183 184 185 186 /////////////////////////////////////////// 187 // Iceland Basalt 0029.PP.0035 sample // 188 /////////////////////////////////////////// 189 190 elements.push_back("Si"); fractionMass.push 191 elements.push_back("Ti"); fractionMass.push 192 elements.push_back("Al"); fractionMass.push 193 elements.push_back("Fe"); fractionMass.push 194 elements.push_back("Mn"); fractionMass.push 195 elements.push_back("Mg"); fractionMass.push 196 elements.push_back("Ca"); fractionMass.push 197 elements.push_back("Na"); fractionMass.push 198 elements.push_back("K"); fractionMass.push 199 elements.push_back("P"); fractionMass.push 200 elements.push_back("S"); fractionMass.push 201 elements.push_back("O"); fractionMass.push 202 203 // Define Icelandic Basalt main components 204 density = 3*g/cm3; 205 G4Material* icelandicBasaltMain= nistMan->Co 206 elements.clear(); 207 fractionMass.clear(); 208 209 // Define Icelandic Basalt traces components 210 density = 3*g/cm3; 211 212 elements.push_back("Ba"); natoms.push_back( 213 elements.push_back("Ce"); natoms.push_back( 214 elements.push_back("Co"); natoms.push_back( 215 elements.push_back("Cr"); natoms.push_back( 216 elements.push_back("Cu"); natoms.push_back( 217 elements.push_back("Ga"); natoms.push_back( 218 elements.push_back("La"); natoms.push_back( 219 elements.push_back("Mo"); natoms.push_back( 220 elements.push_back("Nb"); natoms.push_back( 221 elements.push_back("Nd"); natoms.push_back( 222 elements.push_back("Ni"); natoms.push_back( 223 elements.push_back("Rb"); natoms.push_back( 224 elements.push_back("S"); natoms.push_back( 225 elements.push_back("Sc"); natoms.push_back( 226 elements.push_back("Sr"); natoms.push_back( 227 elements.push_back("U"); natoms.push_back( 228 elements.push_back("V"); natoms.push_back( 229 elements.push_back("Y"); natoms.push_back( 230 elements.push_back("Zn"); natoms.push_back( 231 elements.push_back("Zr"); natoms.push_back( 232 233 G4Material* icelandicBasaltTraces= nistMan-> 234 235 elements.clear(); 236 natoms.clear(); 237 238 // Define Icelandic Basalt complete material 239 density = 3*g/cm3; 240 icelandicBasalt= new G4Material("IceBasalt", 241 icelandicBasalt->AddMaterial(icelandicBasalt 242 icelandicBasalt->AddMaterial(icelandicBasalt 243 244 245 /////////////////////// 246 // Dolorite // 247 /////////////////////// 248 249 // Define dolorite main components 0055.PP.0 250 251 density = 3*g/cm3; 252 253 elements.push_back("Fe"); fractionMass.pu 254 elements.push_back("Ti"); fractionMass.pu 255 elements.push_back("Ca"); fractionMass.pu 256 elements.push_back("Si"); fractionMass.pu 257 elements.push_back("Al"); fractionMass.pu 258 elements.push_back("Mg"); fractionMass.pu 259 elements.push_back("O"); fractionMass.pu 260 elements.push_back("Mn"); fractionMass.pu 261 elements.push_back("Na"); fractionMass.pu 262 elements.push_back("K"); fractionMass.pu 263 elements.push_back("P"); fractionMass.pu 264 265 266 G4Material* doloriteMain = nistMan->Construc 267 268 elements.clear(); 269 fractionMass.clear(); 270 271 // define traces in dolorite 0055.PP.0038 sa 272 273 density = 3*g/cm3; 274 275 elements.push_back("Nb"); natoms.push_bac 276 elements.push_back("Zr"); natoms.push_bac 277 elements.push_back("Y"); natoms.push_bac 278 elements.push_back("Sr"); natoms.push_bac 279 elements.push_back("Rb"); natoms.push_bac 280 elements.push_back("Ga"); natoms.push_bac 281 elements.push_back("Zn"); natoms.push_bac 282 elements.push_back("Ni"); natoms.push_bac 283 elements.push_back("Sc"); natoms.push_bac 284 elements.push_back("V"); natoms.push_bac 285 elements.push_back("Cr"); natoms.push_bac 286 elements.push_back("Co"); natoms.push_bac 287 elements.push_back("Cu"); natoms.push_bac 288 elements.push_back("Ba"); natoms.push_bac 289 elements.push_back("Ce"); natoms.push_bac 290 elements.push_back("Nd"); natoms.push_bac 291 292 G4Material* tracesOfDolorite= nistMan->Const 293 294 elements.clear(); 295 natoms.clear(); 296 297 // define dolorite (full) -- 0055.PP.0038 s 298 299 density = 3*g/cm3; 300 dolorite = new G4Material("Dolorite", densit 301 dolorite->AddMaterial(tracesOfDolorite, 0.00 302 dolorite->AddMaterial(doloriteMain, 0.997215 303 304 /////////////////////// 305 // Mars1 // 306 /////////////////////// 307 308 309 // define mars1 -- 01.PP.0030 sample 310 311 density = 3*g/cm3; 312 313 elements.push_back("Fe"); fractionMass.pu 314 elements.push_back("Ti"); fractionMass.pu 315 elements.push_back("Ca"); fractionMass.pu 316 elements.push_back("Si"); fractionMass.pu 317 elements.push_back("Al"); fractionMass.pu 318 elements.push_back("Mg"); fractionMass.pu 319 elements.push_back("Mn"); fractionMass.pu 320 elements.push_back("Na"); fractionMass.pu 321 elements.push_back("K"); fractionMass.pu 322 elements.push_back("P"); fractionMass.pu 323 elements.push_back("O"); fractionMass.pu 324 325 326 G4Material* mars1Main = nistMan->ConstructNe 327 328 elements.clear(); 329 fractionMass.clear(); 330 331 elements.push_back("Nb"); natoms.push_bac 332 elements.push_back("Zr"); natoms.push_bac 333 elements.push_back("Y"); natoms.push_bac 334 elements.push_back("Sr"); natoms.push_bac 335 elements.push_back("Rb"); natoms.push_bac 336 elements.push_back("Ga"); natoms.push_bac 337 elements.push_back("Zn"); natoms.push_bac 338 elements.push_back("Ni"); natoms.push_bac 339 elements.push_back("Sc"); natoms.push_bac 340 elements.push_back("V"); natoms.push_bac 341 elements.push_back("Cr"); natoms.push_bac 342 elements.push_back("Co"); natoms.push_bac 343 elements.push_back("Cu"); natoms.push_bac 344 elements.push_back("Ba"); natoms.push_bac 345 elements.push_back("Pb"); natoms.push_bac 346 elements.push_back("S"); natoms.push_bac 347 elements.push_back("U"); natoms.push_bac 348 349 density = 3*g/cm3; 350 G4Material* tracesOfMars1 = nistMan->Constru 351 352 elements.clear(); 353 natoms.clear(); 354 355 density = 3*g/cm3; 356 mars1 = new G4Material("Mars1", density, 2); 357 mars1->AddMaterial(tracesOfMars1, 0.00449631 358 mars1->AddMaterial(mars1Main, 0.9955036837); 359 360 ///////////////////////////////// 361 // Hawaiian -- WD coposition // 362 ///////////////////////////////// 363 364 density = 3*g/cm3; 365 366 elements.push_back("Fe"); fractionMass.pu 367 elements.push_back("Ti"); fractionMass.pu 368 elements.push_back("Ca"); fractionMass.pu 369 elements.push_back("Si"); fractionMass.pu 370 elements.push_back("Al"); fractionMass.pu 371 elements.push_back("Mg"); fractionMass.pu 372 elements.push_back("Na"); fractionMass.pu 373 elements.push_back("K"); fractionMass.pu 374 elements.push_back("O"); fractionMass.pu 375 376 hawaiianWD = nistMan->ConstructNewMaterial(" 377 378 elements.clear(); 379 fractionMass.clear(); 380 381 ////////////////////////////////// 382 // Hawaiian -- RF composition // 383 ////////////////////////////////// 384 385 density = 3*g/cm3; 386 387 388 elements.push_back("Fe"); fractionMass.pu 389 elements.push_back("Ti"); fractionMass.pu 390 elements.push_back("Ca"); fractionMass.pu 391 elements.push_back("Si"); fractionMass.pu 392 elements.push_back("Al"); fractionMass.pu 393 elements.push_back("Mg"); fractionMass.pu 394 elements.push_back("Na"); fractionMass.pu 395 elements.push_back("K"); fractionMass.pu 396 elements.push_back("P"); fractionMass.pu 397 elements.push_back("Mn"); fractionMass.pu 398 elements.push_back("O"); fractionMass.pu 399 400 hawaiianRF = nistMan->ConstructNewMaterial(" 401 402 elements.clear(); 403 fractionMass.clear(); 404 405 ////////////////////////////////// 406 // Icelandic -- WD composition // 407 ////////////////////////////////// 408 409 density = 3*g/cm3; 410 411 412 elements.push_back("Si"); fractionMass.pu 413 elements.push_back("Ti"); fractionMass.pu 414 elements.push_back("Al"); fractionMass.pu 415 elements.push_back("Fe"); fractionMass.pu 416 elements.push_back("Mg"); fractionMass.pu 417 elements.push_back("Ca"); fractionMass.pu 418 elements.push_back("Na"); fractionMass.pu 419 elements.push_back("K"); fractionMass.pu 420 elements.push_back("O"); fractionMass.pu 421 422 icelandicWD = nistMan->ConstructNewMaterial( 423 424 elements.clear(); 425 fractionMass.clear(); 426 427 428 ////////////////////////////////// 429 // Icelandic -- RF composition // 430 ////////////////////////////////// 431 432 density = 3*g/cm3; 433 434 435 elements.push_back("Si"); fractionMass.pu 436 elements.push_back("Ti"); fractionMass.pu 437 elements.push_back("Al"); fractionMass.pu 438 elements.push_back("Fe"); fractionMass.pu 439 elements.push_back("Mn"); fractionMass.pu 440 elements.push_back("Mg"); fractionMass.pu 441 elements.push_back("Ca"); fractionMass.pu 442 elements.push_back("K"); fractionMass.pu 443 elements.push_back("P"); fractionMass.pu 444 elements.push_back("O"); fractionMass.pu 445 446 icelandicRF = nistMan->ConstructNewMaterial( 447 448 elements.clear(); 449 fractionMass.clear(); 450 451 ////////////////////////////////// 452 // Gabbro -- WD composition // 453 ////////////////////////////////// 454 455 density = 3*g/cm3; 456 457 elements.push_back("Si"); fractionMass.pu 458 elements.push_back("Ti"); fractionMass.pu 459 elements.push_back("Al"); fractionMass.pu 460 elements.push_back("Fe"); fractionMass.pu 461 elements.push_back("Mg"); fractionMass.pu 462 elements.push_back("Ca"); fractionMass.pu 463 elements.push_back("Na"); fractionMass.pu 464 elements.push_back("K"); fractionMass.pu 465 elements.push_back("O"); fractionMass.pu 466 467 gabbroWD = nistMan->ConstructNewMaterial("Ga 468 469 elements.clear(); 470 fractionMass.clear(); 471 472 ////////////////////////////////// 473 // Gabbro -- RF composition // 474 ////////////////////////////////// 475 476 density = 3*g/cm3; 477 478 479 elements.push_back("Si"); fractionMass.pu 480 elements.push_back("Ti"); fractionMass.pu 481 elements.push_back("Al"); fractionMass.pu 482 elements.push_back("Fe"); fractionMass.pu 483 elements.push_back("Mn"); fractionMass.pu 484 elements.push_back("Mg"); fractionMass.pu 485 elements.push_back("Ca"); fractionMass.pu 486 elements.push_back("Na"); fractionMass.pu 487 elements.push_back("K"); fractionMass.pu 488 elements.push_back("P"); fractionMass.pu 489 elements.push_back("O"); fractionMass.pu 490 491 gabbroRF = nistMan->ConstructNewMaterial("Ga 492 493 elements.clear(); 494 fractionMass.clear(); 495 496 497 /////////////////////// 498 // Anorthosite // 499 /////////////////////// 500 501 502 density = 2.8*g/cm3; 503 504 elements.push_back("Fe"); fractionMass.pu 505 elements.push_back("Mn"); fractionMass.pu 506 elements.push_back("Ni"); fractionMass.pu 507 elements.push_back("Cu"); fractionMass.pu 508 elements.push_back("Na"); fractionMass.pu 509 elements.push_back("Mg"); fractionMass.pu 510 elements.push_back("Al"); fractionMass.pu 511 elements.push_back("Si"); fractionMass.pu 512 elements.push_back("Ca"); fractionMass.pu 513 elements.push_back("K"); fractionMass.pu 514 elements.push_back("C"); fractionMass.pu 515 elements.push_back("P"); fractionMass.pu 516 elements.push_back("Ti"); fractionMass.pu 517 elements.push_back("Cl"); fractionMass.pu 518 elements.push_back("Pd"); fractionMass.pu 519 elements.push_back("Cd"); fractionMass.pu 520 elements.push_back("Ag"); fractionMass.pu 521 elements.push_back("S"); fractionMass.pu 522 elements.push_back("V"); fractionMass.pu 523 elements.push_back("Ba"); fractionMass.pu 524 elements.push_back("O"); fractionMass.pu 525 526 anorthosite = nistMan->ConstructNewMaterial( 527 528 elements.clear(); 529 fractionMass.clear(); 530 531 //////////////////////////////////////// 532 // Gabbro 0059.PP.0048 // 533 //////////////////////////////////////// 534 535 536 density = 3.0*g/cm3; 537 538 elements.push_back("Si"); fractionMass.pu 539 elements.push_back("Ti"); fractionMass.pu 540 elements.push_back("Al"); fractionMass.pu 541 elements.push_back("Fe"); fractionMass.pu 542 elements.push_back("Mn"); fractionMass.pu 543 elements.push_back("Mg"); fractionMass.pu 544 elements.push_back("Ca"); fractionMass.pu 545 elements.push_back("Na"); fractionMass.pu 546 elements.push_back("K"); fractionMass.pu 547 elements.push_back("P"); fractionMass.pu 548 elements.push_back("O"); fractionMass.pu 549 550 gabbro = nistMan->ConstructNewMaterial("Gabb 551 552 elements.clear(); 553 fractionMass.clear(); 554 555 //define gallium arsenide 556 557 elements.push_back("Ga"); natoms.push_ba 558 elements.push_back("As"); natoms.push_ba 559 560 density = 5.32 * g/cm3; 561 GaAs = nistMan->ConstructNewMaterial("galliu 562 563 elements.clear(); 564 natoms.clear(); 565 566 /* 567 // define germanium 568 569 density = 5.32 * g/cm3; 570 571 elements.push_back("Ge"); natoms.push_ba 572 573 G4cout << elements[1] <<", "<<natoms[1] <<", 574 575 576 HPGe = nistMan->ConstructNewMaterial("High P 577 578 elements.clear(); 579 natoms.clear(); 580 */ 581 //define scintillator 582 583 elements.push_back("C"); natoms.push_bac 584 elements.push_back("H"); natoms.push_bac 585 586 density = 1.032*g/cm3; 587 Sci = nistMan->ConstructNewMaterial("Scintil 588 589 elements.clear(); 590 natoms.clear(); 591 592 //define vacuum 593 594 density = universe_mean_density; //fr 595 G4double pressure = 3.e-18*pascal; 596 G4double temperature = 2.73*kelvin; 597 Vacuum = new G4Material("Galactic", 1., 1.01 598 kStateGas,temperature,pressure) 599 600 elements.clear(); 601 natoms.clear(); 602 603 //define basalt 604 density = 3.*g/cm3; 605 606 elements.push_back("Fe"); fractionMass.p 607 elements.push_back("Ti"); fractionMass.p 608 elements.push_back("Ca"); fractionMass.p 609 elements.push_back("Si"); fractionMass.p 610 elements.push_back("Al"); fractionMass.p 611 elements.push_back("Mg"); fractionMass.p 612 elements.push_back("O"); fractionMass.p 613 614 basalt = nistMan->ConstructNewMaterial("Basa 615 616 elements.clear(); 617 fractionMass.clear(); 618 619 620 // define silicon 621 622 density = 2330*kg/m3; 623 624 // workaround for a problem in nistMan: it d 625 626 elements.push_back("Si"); natoms.push_ 627 elements.push_back("Si"); natoms.push_ 628 629 SiLi = nistMan->ConstructNewMaterial("SiLi", 630 631 elements.clear(); 632 natoms.clear(); 633 634 635 // define copper 636 637 density = 8920*kg/m3; 638 639 // workaround for a problem in nistMan: it d 640 elements.push_back("Cu"); natoms.push_ 641 elements.push_back("Cu"); natoms.push_ 642 643 copper = nistMan->ConstructNewMaterial("Cu", 644 645 elements.clear(); 646 natoms.clear(); 647 /* 648 // define nikel 649 650 density = 8908*kg/m3; 651 652 // workaround for a problem in nistMan: it d 653 elements.push_back("Ni"); natoms.push_ 654 elements.push_back("Ni"); natoms.push_ 655 656 nickel = nistMan->ConstructNewMaterial("Nick 657 */ 658 elements.clear(); 659 natoms.clear(); 660 661 662 663 G4cout << *(G4Material::GetMaterialTable()) 664 } 665 666