#include <G4tgbMaterialMixtureByNoAtoms.hh>
Inheritance diagram for G4tgbMaterialMixtureByNoAtoms:
Public Member Functions | |
G4tgbMaterialMixtureByNoAtoms (G4tgrMaterial *tgr) | |
G4tgbMaterialMixtureByNoAtoms () | |
~G4tgbMaterialMixtureByNoAtoms () | |
G4Material * | BuildG4Material () |
void | TransformToFractionsByWeight () |
Definition at line 50 of file G4tgbMaterialMixtureByNoAtoms.hh.
G4tgbMaterialMixtureByNoAtoms::G4tgbMaterialMixtureByNoAtoms | ( | G4tgrMaterial * | tgr | ) |
Definition at line 58 of file G4tgbMaterialMixtureByNoAtoms.cc.
References G4tgbMaterial::theTgrMate.
00059 { 00060 theTgrMate = hg; 00061 }
G4tgbMaterialMixtureByNoAtoms::G4tgbMaterialMixtureByNoAtoms | ( | ) |
G4tgbMaterialMixtureByNoAtoms::~G4tgbMaterialMixtureByNoAtoms | ( | ) |
G4Material * G4tgbMaterialMixtureByNoAtoms::BuildG4Material | ( | ) | [virtual] |
Implements G4tgbMaterial.
Definition at line 65 of file G4tgbMaterialMixtureByNoAtoms.cc.
References G4Material::AddElement(), FatalException, G4tgbMaterialMgr::FindOrBuildG4Element(), G4cout, G4endl, G4Exception(), G4tgbMaterialMixture::GetComponent(), G4tgrMaterial::GetDensity(), G4tgbMaterialMixture::GetFraction(), G4tgbMaterialMgr::GetInstance(), G4Element::GetName(), G4tgrMaterial::GetName(), G4tgrMaterial::GetNumberOfComponents(), G4tgrMaterial::GetPressure(), G4tgrMaterial::GetState(), G4tgrMaterial::GetTemperature(), G4tgrMessenger::GetVerboseLevel(), and G4tgbMaterial::theTgrMate.
00066 { 00067 //----- construct new G4Material with components materials (a mixture) 00068 00069 G4Material* mate = new G4Material( theTgrMate->GetName(), 00070 theTgrMate->GetDensity(), 00071 theTgrMate->GetNumberOfComponents(), 00072 theTgrMate->GetState(), 00073 theTgrMate->GetTemperature(), 00074 theTgrMate->GetPressure() ); 00075 #ifdef G4VERBOSE 00076 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00077 { 00078 G4cout << " G4tgbMaterialMixtureByNoAtoms::BuildG4Material() -" 00079 << " Constructing new G4Material:" 00080 << " " << theTgrMate->GetName() 00081 << " " << theTgrMate->GetDensity()/g*cm3 00082 << " " << theTgrMate->GetNumberOfComponents() 00083 << " " << theTgrMate->GetState() 00084 << " " << theTgrMate->GetTemperature() 00085 << " " << theTgrMate->GetPressure() << G4endl; 00086 } 00087 #endif 00088 00089 //--- add components 00090 00091 G4Element* compElem; 00092 G4tgbMaterialMgr* mf = G4tgbMaterialMgr::GetInstance(); 00093 for( G4int ii = 0; ii < theTgrMate->GetNumberOfComponents(); ii++) 00094 { 00095 // look if this component is an element 00096 compElem = mf->FindOrBuildG4Element( GetComponent(ii), false ); 00097 if( compElem != 0 ) 00098 { 00099 #ifdef G4VERBOSE 00100 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00101 { 00102 G4cout << " G4tgbMaterialMixtureByNoAtoms::BuildG4Material() -" 00103 << " Adding component element ..." << G4endl; 00104 } 00105 #endif 00106 // add it by number of atoms 00107 G4cout << compElem->GetName() << " BY NATOMS ele " 00108 << ii << " " << G4int(GetFraction(ii)) << G4endl; 00109 mate->AddElement( compElem, G4int(GetFraction(ii)) ); 00110 // if it is not an element look if it is a material 00111 } 00112 else 00113 { 00114 G4String ErrMessage = "Component " + GetComponent(ii) 00115 + " of material " + theTgrMate->GetName() 00116 + "\n" + "is not an element !"; 00117 G4Exception("G4tgbMaterialMixtureByWeight::buildG4Material()", 00118 "InvalidSetup", FatalException, ErrMessage); 00119 } 00120 } 00121 00122 #ifdef G4VERBOSE 00123 if( G4tgrMessenger::GetVerboseLevel() >= 1 ) 00124 { 00125 G4cout << " Constructing new G4Material by number of atoms: " 00126 << *mate << G4endl; 00127 } 00128 #endif 00129 00130 return mate; 00131 }
void G4tgbMaterialMixtureByNoAtoms::TransformToFractionsByWeight | ( | ) | [virtual] |
Reimplemented from G4tgbMaterialMixture.
Definition at line 135 of file G4tgbMaterialMixtureByNoAtoms.cc.