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