#include <G4tgbMaterialMgr.hh>
Public Member Functions | |
~G4tgbMaterialMgr () | |
void | CopyIsotopes () |
void | CopyElements () |
void | CopyMaterials () |
G4Isotope * | FindOrBuildG4Isotope (const G4String &name) |
G4Isotope * | FindBuiltG4Isotope (const G4String &name) const |
G4tgbIsotope * | FindG4tgbIsotope (const G4String &name, G4bool bMustExist=0) const |
G4Element * | FindOrBuildG4Element (const G4String &name, G4bool bMustExist=1) |
G4Element * | FindBuiltG4Element (const G4String &name) const |
G4tgbElement * | FindG4tgbElement (const G4String &name, G4bool bMustExist=0) const |
G4Material * | FindOrBuildG4Material (const G4String &name, G4bool bMustExist=1) |
G4Material * | FindBuiltG4Material (const G4String &name) const |
G4tgbMaterial * | FindG4tgbMaterial (const G4String &name, G4bool bMustExist=0) const |
const G4msg4isot | GetG4IsotopeList () const |
const G4msg4elem | GetG4ElementList () const |
const G4msg4mate | GetG4MaterialList () const |
Static Public Member Functions | |
static G4tgbMaterialMgr * | GetInstance () |
Definition at line 66 of file G4tgbMaterialMgr.hh.
G4tgbMaterialMgr::~G4tgbMaterialMgr | ( | ) |
Definition at line 74 of file G4tgbMaterialMgr.cc.
00075 { 00076 G4mstgbisot::const_iterator isotcite; 00077 for( isotcite = theG4tgbIsotopes.begin(); 00078 isotcite != theG4tgbIsotopes.end(); isotcite++) 00079 { 00080 delete (*isotcite).second; 00081 } 00082 theG4tgbIsotopes.clear(); 00083 00084 G4mstgbelem::const_iterator elemcite; 00085 for( elemcite = theG4tgbElements.begin(); 00086 elemcite != theG4tgbElements.end(); elemcite++) 00087 { 00088 delete (*elemcite).second; 00089 } 00090 theG4tgbElements.clear(); 00091 00092 G4mstgbmate::const_iterator matcite; 00093 for( matcite = theG4tgbMaterials.begin(); 00094 matcite != theG4tgbMaterials.end(); matcite++) 00095 { 00096 delete (*matcite).second; 00097 } 00098 theG4tgbMaterials.clear(); 00099 00100 delete theInstance; 00101 }
void G4tgbMaterialMgr::CopyElements | ( | ) |
Definition at line 120 of file G4tgbMaterialMgr.cc.
References G4tgrMaterialFactory::GetElementList(), and G4tgrMaterialFactory::GetInstance().
Referenced by GetInstance().
00121 { 00122 const G4mstgrelem tgrElems 00123 = G4tgrMaterialFactory::GetInstance()->GetElementList(); 00124 G4mstgrelem::const_iterator cite; 00125 for( cite = tgrElems.begin(); cite != tgrElems.end(); cite++ ) 00126 { 00127 G4tgrElement* tgr = (*cite).second; 00128 G4tgbElement* tgb = new G4tgbElement( tgr ); 00129 theG4tgbElements[tgb->GetName()] = tgb; 00130 } 00131 }
void G4tgbMaterialMgr::CopyIsotopes | ( | ) |
Definition at line 105 of file G4tgbMaterialMgr.cc.
References G4tgrMaterialFactory::GetInstance(), and G4tgrMaterialFactory::GetIsotopeList().
Referenced by GetInstance().
00106 { 00107 const G4mstgrisot tgrIsots 00108 = G4tgrMaterialFactory::GetInstance()->GetIsotopeList(); 00109 G4mstgrisot::const_iterator cite; 00110 for( cite = tgrIsots.begin(); cite != tgrIsots.end(); cite++ ) 00111 { 00112 G4tgrIsotope* tgr = (*cite).second; 00113 G4tgbIsotope* tgb = new G4tgbIsotope( tgr ); 00114 theG4tgbIsotopes[tgb->GetName()] = tgb; 00115 } 00116 }
void G4tgbMaterialMgr::CopyMaterials | ( | ) |
Definition at line 135 of file G4tgbMaterialMgr.cc.
References G4tgrMaterialFactory::GetInstance(), and G4tgrMaterialFactory::GetMaterialList().
Referenced by GetInstance().
00136 { 00137 const G4mstgrmate tgrMates 00138 = G4tgrMaterialFactory::GetInstance()->GetMaterialList(); 00139 G4mstgrmate::const_iterator cite; 00140 for( cite = tgrMates.begin(); cite != tgrMates.end(); cite++ ) 00141 { 00142 G4tgrMaterial* tgr = (*cite).second; 00143 G4tgbMaterial* tgb = 0; 00144 if( tgr->GetType() == "MaterialSimple" ) { 00145 tgb = new G4tgbMaterialSimple( tgr ); 00146 } else if( tgr->GetType() == "MaterialMixtureByWeight" ) { 00147 tgb = new G4tgbMaterialMixtureByWeight( tgr ); 00148 } else if( tgr->GetType() == "MaterialMixtureByNoAtoms" ) { 00149 tgb = new G4tgbMaterialMixtureByNoAtoms( tgr ); 00150 } else if( tgr->GetType() == "MaterialMixtureByVolume" ) { 00151 tgb = new G4tgbMaterialMixtureByVolume( tgr ); 00152 } else { 00153 return; 00154 } 00155 theG4tgbMaterials[tgb->GetName()] = tgb; 00156 } 00157 }
Definition at line 325 of file G4tgbMaterialMgr.cc.
References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Element().
00326 { 00327 G4Element* g4elem = 0; 00328 00329 G4msg4elem::const_iterator cite = theG4Elements.find( name ); 00330 if( cite != theG4Elements.end() ) 00331 { 00332 g4elem = (*cite).second; 00333 #ifdef G4VERBOSE 00334 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00335 { 00336 G4cout << " G4tgbMaterialMgr::FindBuiltG4Element() - Element: " 00337 << name << " = " << g4elem << G4endl; 00338 } 00339 #endif 00340 } 00341 00342 return g4elem; 00343 }
Definition at line 196 of file G4tgbMaterialMgr.cc.
References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Isotope().
00197 { 00198 G4Isotope* g4isot = 0; 00199 00200 G4msg4isot::const_iterator cite = theG4Isotopes.find( name ); 00201 if( cite != theG4Isotopes.end() ) 00202 { 00203 g4isot = (*cite).second; 00204 #ifdef G4VERBOSE 00205 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00206 { 00207 G4cout << " G4tgbMaterialMgr::FindBuiltG4Isotope() - Isotope: " 00208 << name << " = " << g4isot << G4endl; 00209 } 00210 #endif 00211 00212 } 00213 00214 return g4isot; 00215 }
G4Material * G4tgbMaterialMgr::FindBuiltG4Material | ( | const G4String & | name | ) | const |
Definition at line 446 of file G4tgbMaterialMgr.cc.
References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Material().
00447 { 00448 G4Material* g4mate = 0; 00449 //---------- look for an existing G4Material 00450 G4msg4mate::const_iterator cite = theG4Materials.find( name ); 00451 if( cite != theG4Materials.end() ) 00452 { 00453 g4mate = (*cite).second; 00454 #ifdef G4VERBOSE 00455 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00456 { 00457 G4cout << " G4tgbMaterialMgr::FindBuiltG4Material() - Material: " 00458 << name << " = " << g4mate << G4endl; 00459 } 00460 #endif 00461 } 00462 00463 return g4mate; 00464 }
G4tgbElement * G4tgbMaterialMgr::FindG4tgbElement | ( | const G4String & | name, | |
G4bool | bMustExist = 0 | |||
) | const |
Definition at line 347 of file G4tgbMaterialMgr.cc.
References FatalException, G4cout, G4endl, G4Exception(), and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Element().
00349 { 00350 G4tgbElement* elem = 0; 00351 00352 G4mstgbelem::const_iterator cite = theG4tgbElements.find( name ); 00353 if( cite != theG4tgbElements.end() ) 00354 { 00355 #ifdef G4VERBOSE 00356 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00357 { 00358 G4cout << " G4tgbMaterialMgr::FindG4tgbElement() -" 00359 << " G4tgbElement found: " << ( (*cite).second )->GetName() 00360 << G4endl; 00361 } 00362 #endif 00363 elem = (*cite).second; 00364 } 00365 if( (elem == 0) && bMustExist ) 00366 { 00367 G4String ErrMessage = "Element " + name + " not found !"; 00368 G4Exception("G4tgbMaterialMgr::FindG4tgbElement()", 00369 "InvalidSetup", FatalException, ErrMessage); 00370 } 00371 00372 return elem; 00373 }
G4tgbIsotope * G4tgbMaterialMgr::FindG4tgbIsotope | ( | const G4String & | name, | |
G4bool | bMustExist = 0 | |||
) | const |
Definition at line 219 of file G4tgbMaterialMgr.cc.
References FatalException, G4cout, G4endl, G4Exception(), and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Isotope().
00221 { 00222 G4tgbIsotope* isot = 0; 00223 00224 G4mstgbisot::const_iterator cite = theG4tgbIsotopes.find( name ); 00225 if( cite != theG4tgbIsotopes.end() ) 00226 { 00227 #ifdef G4VERBOSE 00228 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00229 { 00230 G4cout << " G4tgbMaterialMgr::FindG4tgbIsotope() -" 00231 << " G4tgbIsotope found: " << ( (*cite).second )->GetName() 00232 << G4endl; 00233 } 00234 #endif 00235 isot = (*cite).second; 00236 } 00237 if( (isot == 0) && bMustExist ) 00238 { 00239 G4String ErrMessage = "Isotope " + name + " not found !"; 00240 G4Exception("G4tgbMaterialMgr::FindG4tgbIsotope()", 00241 "InvalidSetup", FatalException, ErrMessage); 00242 } 00243 00244 return isot; 00245 }
G4tgbMaterial * G4tgbMaterialMgr::FindG4tgbMaterial | ( | const G4String & | name, | |
G4bool | bMustExist = 0 | |||
) | const |
Definition at line 468 of file G4tgbMaterialMgr.cc.
References FatalException, G4cout, G4endl, G4Exception(), and G4tgrMessenger::GetVerboseLevel().
Referenced by FindOrBuildG4Material().
00470 { 00471 G4tgbMaterial* mate = 0; 00472 G4mstgbmate::const_iterator cite = theG4tgbMaterials.find( name ); 00473 if( cite != theG4tgbMaterials.end() ) 00474 { 00475 mate = (*cite).second; 00476 #ifdef G4VERBOSE 00477 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00478 { 00479 G4cout << " G4tgbMaterialMgr::FindG4tgbMaterial() -" 00480 << " G4tgbMaterial found: " << ( (*cite).second )->GetName() 00481 << " type " << ( (*cite).second )->GetName() << G4endl; 00482 } 00483 #endif 00484 } 00485 00486 if( (mate == 0) && bMustExist ) 00487 { 00488 G4String ErrMessage = "Material " + name + " not found !"; 00489 G4Exception("G4tgbMaterialMgr::FindG4tgbMaterial()", 00490 "InvalidSetup", FatalException, ErrMessage); 00491 } 00492 00493 return mate; 00494 }
Definition at line 249 of file G4tgbMaterialMgr.cc.
References G4tgbElement::BuildG4ElementFromIsotopes(), G4tgbElement::BuildG4ElementSimple(), FatalException, FindBuiltG4Element(), FindG4tgbElement(), G4NistManager::FindOrBuildElement(), G4cout, G4endl, G4Exception(), G4Element::GetName(), G4tgbElement::GetType(), G4tgrMessenger::GetVerboseLevel(), and G4NistManager::Instance().
Referenced by G4tgbMaterialMixtureByWeight::BuildG4Material(), and G4tgbMaterialMixtureByNoAtoms::BuildG4Material().
00251 { 00252 G4Element* g4elem = FindBuiltG4Element( name ); 00253 if( g4elem == 0 ) 00254 { 00255 G4tgbElement* tgbelem = FindG4tgbElement( name, false ); 00256 if( tgbelem == 0) 00257 { 00258 // If FindG4tgbElement returns 0, look for a G4NISTElement 00259 G4cout << " G4NistManager::Instance()->FindOrBuildElement( " << G4endl; 00260 g4elem = G4NistManager::Instance()->FindOrBuildElement(name); 00261 } 00262 else 00263 { 00264 if( tgbelem->GetType() == "ElementSimple" ) 00265 { 00266 g4elem = tgbelem->BuildG4ElementSimple(); 00267 } 00268 else if( tgbelem->GetType() == "ElementFromIsotopes" ) 00269 { 00270 g4elem = tgbelem->BuildG4ElementFromIsotopes(); 00271 } 00272 else 00273 { 00274 G4String ErrMessage = "Element type " + tgbelem->GetType() 00275 + " does not exist !"; 00276 G4Exception("G4tgbMaterialMgr::GetG4Element()", 00277 "InvalidSetup", FatalException, ErrMessage); 00278 } 00279 } 00280 // Register it 00281 if( (g4elem != 0) ) 00282 { 00283 theG4Elements[g4elem->GetName()] = g4elem; 00284 #ifdef G4VERBOSE 00285 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00286 { 00287 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Element() - Element: " 00288 << name << G4endl; 00289 } 00290 #endif 00291 } 00292 else 00293 { 00294 if( bMustExist ) 00295 { 00296 G4String ErrMessage = "Element " + name + " not found !"; 00297 G4Exception("G4tgbMaterialMgr::FindOrBuildG4Element()", 00298 "InvalidSetup", FatalException, ErrMessage); 00299 } 00300 #ifdef G4VERBOSE 00301 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00302 { 00303 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Element() - Element: " 00304 << name << " not found " << G4endl; 00305 } 00306 #endif 00307 } 00308 } 00309 else 00310 { 00311 #ifdef G4VERBOSE 00312 if( G4tgrMessenger::GetVerboseLevel() >= 1 ) 00313 { 00314 G4cout << " G4tgbMaterialMgr::GetG4Element() -" 00315 << " G4Element already built: " << g4elem->GetName() << G4endl; 00316 } 00317 #endif 00318 } 00319 00320 return g4elem; 00321 }
Definition at line 161 of file G4tgbMaterialMgr.cc.
References G4tgbIsotope::BuildG4Isotope(), FindBuiltG4Isotope(), FindG4tgbIsotope(), G4cout, G4endl, G4Isotope::GetName(), and G4tgrMessenger::GetVerboseLevel().
Referenced by G4tgbElement::BuildG4ElementFromIsotopes().
00162 { 00163 G4Isotope* g4isot = FindBuiltG4Isotope( name ); 00164 if( g4isot == 0 ) 00165 { 00166 G4tgbIsotope* tgbisot = FindG4tgbIsotope( name ); 00167 // FindG4tgbIsotope never returns 0, otherwise if not found, crashes 00168 g4isot = tgbisot->BuildG4Isotope(); 00169 // Register it 00170 G4String isotname = g4isot->GetName(); 00171 theG4Isotopes[isotname] = g4isot; 00172 } 00173 else 00174 { 00175 #ifdef G4VERBOSE 00176 if( G4tgrMessenger::GetVerboseLevel() >= 1 ) 00177 { 00178 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Isotope() -" 00179 << " G4Isotope already built: " << g4isot->GetName() << G4endl; 00180 } 00181 #endif 00182 } 00183 00184 #ifdef G4VERBOSE 00185 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00186 { 00187 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Isotope() - Isotope: " 00188 << name << G4endl; 00189 } 00190 #endif 00191 return g4isot; 00192 }
G4Material * G4tgbMaterialMgr::FindOrBuildG4Material | ( | const G4String & | name, | |
G4bool | bMustExist = 1 | |||
) |
Definition at line 377 of file G4tgbMaterialMgr.cc.
References G4tgbMaterial::BuildG4Material(), FatalException, FindBuiltG4Material(), FindG4tgbMaterial(), G4NistManager::FindOrBuildMaterial(), G4cout, G4endl, G4Exception(), G4Material::GetIonisation(), G4tgrMaterial::GetIonisationMeanExcitationEnergy(), G4Material::GetName(), G4tgbMaterial::GetTgrMate(), G4tgrMessenger::GetVerboseLevel(), G4NistManager::Instance(), and G4IonisParamMat::SetMeanExcitationEnergy().
Referenced by G4tgbMaterialMixtureByWeight::BuildG4Material(), G4tgbMaterialMixtureByVolume::BuildG4Material(), G4tgbVolume::ConstructG4LogVol(), G4tgbVolume::ConstructG4PhysVol(), and G4tgbMaterialMixtureByVolume::TransformToFractionsByWeight().
00379 { 00380 G4Material* g4mate = FindBuiltG4Material( name ); 00381 if( g4mate == 0) 00382 { 00383 G4tgbMaterial* tgbmate = FindG4tgbMaterial( name, false ); 00384 00385 if( tgbmate == 0) 00386 { 00387 // if FindG4tgbMaterial() returns 0, look for a G4NISTMaterial 00388 g4mate = G4NistManager::Instance()->FindOrBuildMaterial(name); 00389 } 00390 else 00391 { 00392 g4mate = tgbmate->BuildG4Material(); 00393 00394 if( tgbmate->GetTgrMate()->GetIonisationMeanExcitationEnergy() != -1. ) 00395 { 00396 g4mate->GetIonisation()->SetMeanExcitationEnergy(tgbmate-> 00397 GetTgrMate()->GetIonisationMeanExcitationEnergy()); 00398 } 00399 } 00400 00401 // Register it 00402 if( g4mate != 0 ) 00403 { 00404 theG4Materials[g4mate->GetName()] = g4mate; 00405 #ifdef G4VERBOSE 00406 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00407 { 00408 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() - Material: " 00409 << name << G4endl; 00410 } 00411 #endif 00412 } 00413 else 00414 { 00415 if( bMustExist ) 00416 { 00417 G4String ErrMessage = "Material " + name + " not found !"; 00418 G4Exception("G4tgbMaterialMgr::FindOrBuildG4Material()", 00419 "InvalidSetup", FatalException, ErrMessage); 00420 } 00421 #ifdef G4VERBOSE 00422 if( G4tgrMessenger::GetVerboseLevel() >= 2 ) 00423 { 00424 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() - Element: " 00425 << name << " not found " << G4endl; 00426 } 00427 #endif 00428 } 00429 } 00430 else 00431 { 00432 #ifdef G4VERBOSE 00433 if( G4tgrMessenger::GetVerboseLevel() >= 1 ) 00434 { 00435 G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() -" 00436 << " G4Material already built: " << g4mate->GetName() << G4endl; 00437 } 00438 #endif 00439 } 00440 00441 return g4mate; 00442 }
const G4msg4elem G4tgbMaterialMgr::GetG4ElementList | ( | ) | const [inline] |
const G4msg4isot G4tgbMaterialMgr::GetG4IsotopeList | ( | ) | const [inline] |
const G4msg4mate G4tgbMaterialMgr::GetG4MaterialList | ( | ) | const [inline] |
G4tgbMaterialMgr * G4tgbMaterialMgr::GetInstance | ( | ) | [static] |
Definition at line 60 of file G4tgbMaterialMgr.cc.
References CopyElements(), CopyIsotopes(), and CopyMaterials().
Referenced by G4tgbElement::BuildG4ElementFromIsotopes(), G4tgbMaterialMixtureByWeight::BuildG4Material(), G4tgbMaterialMixtureByVolume::BuildG4Material(), G4tgbMaterialMixtureByNoAtoms::BuildG4Material(), G4tgbVolume::ConstructG4LogVol(), G4tgbVolume::ConstructG4PhysVol(), G4tgbVolumeMgr::DumpSummary(), and G4tgbMaterialMixtureByVolume::TransformToFractionsByWeight().
00061 { 00062 if( !theInstance ) 00063 { 00064 theInstance = new G4tgbMaterialMgr; 00065 theInstance->CopyIsotopes(); 00066 theInstance->CopyElements(); 00067 theInstance->CopyMaterials(); 00068 } 00069 return theInstance; 00070 }