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 // G4tgbElement 27 // 28 // Author: P.Arce, CIEMAT (November 2007) 29 // ------------------------------------------- 30 31 #include "G4tgbElement.hh" 32 #include "G4tgbMaterialMgr.hh" 33 #include "G4tgrElementSimple.hh" 34 #include "G4tgrElementFromIsotopes.hh" 35 #include "G4tgrMessenger.hh" 36 37 // ------------------------------------------- 38 G4tgbElement::G4tgbElement(G4tgrElement* hg) 39 { 40 theTgrElem = hg; 41 } 42 43 // ------------------------------------------- 44 G4Element* G4tgbElement::BuildG4ElementSimple( 45 { 46 G4Element* elem = nullptr; 47 48 //-------- if G4Element not found, construct 49 if(theG4Elem == nullptr) 50 { 51 //----- construct new G4Element 52 G4tgrElementSimple* tgrElem = static_cast< 53 54 elem = new G4Element(tgrElem->GetName(), t 55 tgrElem->GetZ(), tgrE 56 #ifdef G4VERBOSE 57 if(G4tgrMessenger::GetVerboseLevel() >= 1) 58 { 59 G4cout << " Constructing new G4Element: 60 } 61 #endif 62 theG4Elem = elem; 63 } 64 else 65 { 66 elem = theG4Elem; 67 } 68 69 return elem; 70 } 71 72 // ------------------------------------------- 73 G4Element* G4tgbElement::BuildG4ElementFromIso 74 { 75 G4Element* elem = nullptr; 76 77 //-------- if G4Element not found, construct 78 if(theG4Elem == nullptr) 79 { 80 //----- construct new G4Element 81 G4tgrElementFromIsotopes* tgrElem = 82 static_cast<G4tgrElementFromIsotopes*>(t 83 84 elem = new G4Element(tgrElem->GetName(), t 85 tgrElem->GetNumberOfI 86 87 //----- add isotopes 88 G4Isotope* compIsot; 89 G4tgbMaterialMgr* mf = G4tgbMaterialMgr::G 90 for(G4int ii = 0; ii < tgrElem->GetNumberO 91 { 92 // Look if this component is a material 93 94 compIsot = mf->FindOrBuildG4Isotope(tgrE 95 if(compIsot != nullptr) 96 { 97 elem->AddIsotope(compIsot, tgrElem->Ge 98 } 99 else 100 { 101 G4String ErrMessage = "Component " + t 102 " of element " + 103 " is not an isot 104 G4Exception("G4tgbElement::BuildG4Elem 105 "InvalidSetup", FatalExcep 106 } 107 } 108 theG4Elem = elem; 109 } 110 else 111 { 112 elem = theG4Elem; 113 } 114 115 #ifdef G4VERBOSE 116 if(G4tgrMessenger::GetVerboseLevel() >= 1) 117 { 118 G4cout << " Constructing new G4Element fr 119 } 120 #endif 121 122 return elem; 123 } 124