Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions
G4tgbMaterialMgr Class Reference

#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 ()
 

Detailed Description

Definition at line 66 of file G4tgbMaterialMgr.hh.

Constructor & Destructor Documentation

G4tgbMaterialMgr::~G4tgbMaterialMgr ( )

Definition at line 74 of file G4tgbMaterialMgr.cc.

75 {
76  G4mstgbisot::const_iterator isotcite;
77  for( isotcite = theG4tgbIsotopes.begin();
78  isotcite != theG4tgbIsotopes.end(); isotcite++)
79  {
80  delete (*isotcite).second;
81  }
82  theG4tgbIsotopes.clear();
83 
84  G4mstgbelem::const_iterator elemcite;
85  for( elemcite = theG4tgbElements.begin();
86  elemcite != theG4tgbElements.end(); elemcite++)
87  {
88  delete (*elemcite).second;
89  }
90  theG4tgbElements.clear();
91 
92  G4mstgbmate::const_iterator matcite;
93  for( matcite = theG4tgbMaterials.begin();
94  matcite != theG4tgbMaterials.end(); matcite++)
95  {
96  delete (*matcite).second;
97  }
98  theG4tgbMaterials.clear();
99 
100  delete theInstance;
101 }

Member Function Documentation

void G4tgbMaterialMgr::CopyElements ( )

Definition at line 120 of file G4tgbMaterialMgr.cc.

References G4tgrMaterialFactory::GetElementList(), G4tgrMaterialFactory::GetInstance(), and G4tgbElement::GetName().

Referenced by GetInstance().

121 {
122  const G4mstgrelem tgrElems
124  G4mstgrelem::const_iterator cite;
125  for( cite = tgrElems.begin(); cite != tgrElems.end(); cite++ )
126  {
127  G4tgrElement* tgr = (*cite).second;
128  G4tgbElement* tgb = new G4tgbElement( tgr );
129  theG4tgbElements[tgb->GetName()] = tgb;
130  }
131 }
const G4String & GetName() const
Definition: G4tgbElement.hh:68
const G4mstgrelem & GetElementList() const
static G4tgrMaterialFactory * GetInstance()
std::map< G4String, G4tgrElement * > G4mstgrelem
void G4tgbMaterialMgr::CopyIsotopes ( )

Definition at line 105 of file G4tgbMaterialMgr.cc.

References G4tgrMaterialFactory::GetInstance(), G4tgrMaterialFactory::GetIsotopeList(), and G4tgbIsotope::GetName().

Referenced by GetInstance().

106 {
107  const G4mstgrisot tgrIsots
109  G4mstgrisot::const_iterator cite;
110  for( cite = tgrIsots.begin(); cite != tgrIsots.end(); cite++ )
111  {
112  G4tgrIsotope* tgr = (*cite).second;
113  G4tgbIsotope* tgb = new G4tgbIsotope( tgr );
114  theG4tgbIsotopes[tgb->GetName()] = tgb;
115  }
116 }
const G4mstgrisot & GetIsotopeList() const
static G4tgrMaterialFactory * GetInstance()
const G4String & GetName() const
Definition: G4tgbIsotope.hh:67
std::map< G4String, G4tgrIsotope * > G4mstgrisot
void G4tgbMaterialMgr::CopyMaterials ( )

Definition at line 135 of file G4tgbMaterialMgr.cc.

References G4tgrMaterialFactory::GetInstance(), G4tgrMaterialFactory::GetMaterialList(), G4tgbMaterial::GetName(), and G4tgrMaterial::GetType().

Referenced by GetInstance().

136 {
137  const G4mstgrmate tgrMates
139  G4mstgrmate::const_iterator cite;
140  for( cite = tgrMates.begin(); cite != tgrMates.end(); cite++ )
141  {
142  G4tgrMaterial* tgr = (*cite).second;
143  G4tgbMaterial* tgb = 0;
144  if( tgr->GetType() == "MaterialSimple" ) {
145  tgb = new G4tgbMaterialSimple( tgr );
146  } else if( tgr->GetType() == "MaterialMixtureByWeight" ) {
147  tgb = new G4tgbMaterialMixtureByWeight( tgr );
148  } else if( tgr->GetType() == "MaterialMixtureByNoAtoms" ) {
149  tgb = new G4tgbMaterialMixtureByNoAtoms( tgr );
150  } else if( tgr->GetType() == "MaterialMixtureByVolume" ) {
151  tgb = new G4tgbMaterialMixtureByVolume( tgr );
152  } else {
153  return;
154  }
155  theG4tgbMaterials[tgb->GetName()] = tgb;
156  }
157 }
const G4mstgrmate & GetMaterialList() const
std::map< G4String, G4tgrMaterial * > G4mstgrmate
const G4String & GetType() const
static G4tgrMaterialFactory * GetInstance()
const G4String & GetName() const
G4Element * G4tgbMaterialMgr::FindBuiltG4Element ( const G4String &  name) const

Definition at line 325 of file G4tgbMaterialMgr.cc.

References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().

Referenced by FindOrBuildG4Element().

326 {
327  G4Element* g4elem = 0;
328 
329  G4msg4elem::const_iterator cite = theG4Elements.find( name );
330  if( cite != theG4Elements.end() )
331  {
332  g4elem = (*cite).second;
333 #ifdef G4VERBOSE
335  {
336  G4cout << " G4tgbMaterialMgr::FindBuiltG4Element() - Element: "
337  << name << " = " << g4elem << G4endl;
338  }
339 #endif
340  }
341 
342  return g4elem;
343 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
#define G4endl
Definition: G4ios.hh:61
G4Isotope * G4tgbMaterialMgr::FindBuiltG4Isotope ( const G4String &  name) const

Definition at line 196 of file G4tgbMaterialMgr.cc.

References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().

Referenced by FindOrBuildG4Isotope().

197 {
198  G4Isotope* g4isot = 0;
199 
200  G4msg4isot::const_iterator cite = theG4Isotopes.find( name );
201  if( cite != theG4Isotopes.end() )
202  {
203  g4isot = (*cite).second;
204 #ifdef G4VERBOSE
206  {
207  G4cout << " G4tgbMaterialMgr::FindBuiltG4Isotope() - Isotope: "
208  << name << " = " << g4isot << G4endl;
209  }
210 #endif
211 
212  }
213 
214  return g4isot;
215 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
#define G4endl
Definition: G4ios.hh:61
G4Material * G4tgbMaterialMgr::FindBuiltG4Material ( const G4String &  name) const

Definition at line 446 of file G4tgbMaterialMgr.cc.

References G4cout, G4endl, and G4tgrMessenger::GetVerboseLevel().

Referenced by FindOrBuildG4Material().

447 {
448  G4Material* g4mate = 0;
449  //---------- look for an existing G4Material
450  G4msg4mate::const_iterator cite = theG4Materials.find( name );
451  if( cite != theG4Materials.end() )
452  {
453  g4mate = (*cite).second;
454 #ifdef G4VERBOSE
456  {
457  G4cout << " G4tgbMaterialMgr::FindBuiltG4Material() - Material: "
458  << name << " = " << g4mate << G4endl;
459  }
460 #endif
461  }
462 
463  return g4mate;
464 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
#define G4endl
Definition: G4ios.hh:61
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().

349 {
350  G4tgbElement* elem = 0;
351 
352  G4mstgbelem::const_iterator cite = theG4tgbElements.find( name );
353  if( cite != theG4tgbElements.end() )
354  {
355 #ifdef G4VERBOSE
357  {
358  G4cout << " G4tgbMaterialMgr::FindG4tgbElement() -"
359  << " G4tgbElement found: " << ( (*cite).second )->GetName()
360  << G4endl;
361  }
362 #endif
363  elem = (*cite).second;
364  }
365  if( (elem == 0) && bMustExist )
366  {
367  G4String ErrMessage = "Element " + name + " not found !";
368  G4Exception("G4tgbMaterialMgr::FindG4tgbElement()",
369  "InvalidSetup", FatalException, ErrMessage);
370  }
371 
372  return elem;
373 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
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().

221 {
222  G4tgbIsotope* isot = 0;
223 
224  G4mstgbisot::const_iterator cite = theG4tgbIsotopes.find( name );
225  if( cite != theG4tgbIsotopes.end() )
226  {
227 #ifdef G4VERBOSE
229  {
230  G4cout << " G4tgbMaterialMgr::FindG4tgbIsotope() -"
231  << " G4tgbIsotope found: " << ( (*cite).second )->GetName()
232  << G4endl;
233  }
234 #endif
235  isot = (*cite).second;
236  }
237  if( (isot == 0) && bMustExist )
238  {
239  G4String ErrMessage = "Isotope " + name + " not found !";
240  G4Exception("G4tgbMaterialMgr::FindG4tgbIsotope()",
241  "InvalidSetup", FatalException, ErrMessage);
242  }
243 
244  return isot;
245 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
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().

470 {
471  G4tgbMaterial* mate = 0;
472  G4mstgbmate::const_iterator cite = theG4tgbMaterials.find( name );
473  if( cite != theG4tgbMaterials.end() )
474  {
475  mate = (*cite).second;
476 #ifdef G4VERBOSE
478  {
479  G4cout << " G4tgbMaterialMgr::FindG4tgbMaterial() -"
480  << " G4tgbMaterial found: " << ( (*cite).second )->GetName()
481  << " type " << ( (*cite).second )->GetName() << G4endl;
482  }
483 #endif
484  }
485 
486  if( (mate == 0) && bMustExist )
487  {
488  G4String ErrMessage = "Material " + name + " not found !";
489  G4Exception("G4tgbMaterialMgr::FindG4tgbMaterial()",
490  "InvalidSetup", FatalException, ErrMessage);
491  }
492 
493  return mate;
494 }
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
#define G4endl
Definition: G4ios.hh:61
G4Element * G4tgbMaterialMgr::FindOrBuildG4Element ( const G4String &  name,
G4bool  bMustExist = 1 
)

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().

251 {
252  G4Element* g4elem = FindBuiltG4Element( name );
253  if( g4elem == 0 )
254  {
255  G4tgbElement* tgbelem = FindG4tgbElement( name, false );
256  if( tgbelem == 0)
257  {
258  // If FindG4tgbElement returns 0, look for a G4NISTElement
259  G4cout << " G4NistManager::Instance()->FindOrBuildElement( " << G4endl;
261  }
262  else
263  {
264  if( tgbelem->GetType() == "ElementSimple" )
265  {
266  g4elem = tgbelem->BuildG4ElementSimple();
267  }
268  else if( tgbelem->GetType() == "ElementFromIsotopes" )
269  {
270  g4elem = tgbelem->BuildG4ElementFromIsotopes();
271  }
272  else
273  {
274  G4String ErrMessage = "Element type " + tgbelem->GetType()
275  + " does not exist !";
276  G4Exception("G4tgbMaterialMgr::GetG4Element()",
277  "InvalidSetup", FatalException, ErrMessage);
278  }
279  }
280  // Register it
281  if( (g4elem != 0) )
282  {
283  theG4Elements[g4elem->GetName()] = g4elem;
284 #ifdef G4VERBOSE
286  {
287  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Element() - Element: "
288  << name << G4endl;
289  }
290 #endif
291  }
292  else
293  {
294  if( bMustExist )
295  {
296  G4String ErrMessage = "Element " + name + " not found !";
297  G4Exception("G4tgbMaterialMgr::FindOrBuildG4Element()",
298  "InvalidSetup", FatalException, ErrMessage);
299  }
300 #ifdef G4VERBOSE
302  {
303  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Element() - Element: "
304  << name << " not found " << G4endl;
305  }
306 #endif
307  }
308  }
309  else
310  {
311 #ifdef G4VERBOSE
313  {
314  G4cout << " G4tgbMaterialMgr::GetG4Element() -"
315  << " G4Element already built: " << g4elem->GetName() << G4endl;
316  }
317 #endif
318  }
319 
320  return g4elem;
321 }
G4tgbElement * FindG4tgbElement(const G4String &name, G4bool bMustExist=0) const
G4Element * BuildG4ElementSimple()
Definition: G4tgbElement.cc:52
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
const G4String & GetType() const
Definition: G4tgbElement.hh:72
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4Element * FindBuiltG4Element(const G4String &name) const
#define G4endl
Definition: G4ios.hh:61
G4Element * BuildG4ElementFromIsotopes()
Definition: G4tgbElement.cc:83
const G4String & GetName() const
Definition: G4Element.hh:127
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
G4Isotope * G4tgbMaterialMgr::FindOrBuildG4Isotope ( const G4String &  name)

Definition at line 161 of file G4tgbMaterialMgr.cc.

References G4tgbIsotope::BuildG4Isotope(), FindBuiltG4Isotope(), FindG4tgbIsotope(), G4cout, G4endl, G4Isotope::GetName(), and G4tgrMessenger::GetVerboseLevel().

Referenced by G4tgbElement::BuildG4ElementFromIsotopes().

162 {
163  G4Isotope* g4isot = FindBuiltG4Isotope( name );
164  if( g4isot == 0 )
165  {
166  G4tgbIsotope* tgbisot = FindG4tgbIsotope( name );
167  // FindG4tgbIsotope never returns 0, otherwise if not found, crashes
168  g4isot = tgbisot->BuildG4Isotope();
169  // Register it
170  G4String isotname = g4isot->GetName();
171  theG4Isotopes[isotname] = g4isot;
172  }
173  else
174  {
175 #ifdef G4VERBOSE
177  {
178  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Isotope() -"
179  << " G4Isotope already built: " << g4isot->GetName() << G4endl;
180  }
181 #endif
182  }
183 
184 #ifdef G4VERBOSE
186  {
187  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Isotope() - Isotope: "
188  << name << G4endl;
189  }
190 #endif
191  return g4isot;
192 }
const G4String & GetName() const
Definition: G4Isotope.hh:88
G4GLOB_DLL std::ostream G4cout
static G4int GetVerboseLevel()
G4tgbIsotope * FindG4tgbIsotope(const G4String &name, G4bool bMustExist=0) const
#define G4endl
Definition: G4ios.hh:61
G4Isotope * BuildG4Isotope()
Definition: G4tgbIsotope.cc:58
G4Isotope * FindBuiltG4Isotope(const G4String &name) const
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 G4tgbMaterialMixtureByVolume::BuildG4Material(), G4tgbMaterialMixtureByWeight::BuildG4Material(), G4tgbVolume::ConstructG4LogVol(), G4tgbVolume::ConstructG4PhysVol(), and G4tgbMaterialMixtureByVolume::TransformToFractionsByWeight().

379 {
380  G4Material* g4mate = FindBuiltG4Material( name );
381  if( g4mate == 0)
382  {
383  G4tgbMaterial* tgbmate = FindG4tgbMaterial( name, false );
384 
385  if( tgbmate == 0)
386  {
387  // if FindG4tgbMaterial() returns 0, look for a G4NISTMaterial
389  }
390  else
391  {
392  g4mate = tgbmate->BuildG4Material();
393 
394  if( tgbmate->GetTgrMate()->GetIonisationMeanExcitationEnergy() != -1. )
395  {
396  g4mate->GetIonisation()->SetMeanExcitationEnergy(tgbmate->
397  GetTgrMate()->GetIonisationMeanExcitationEnergy());
398  }
399  }
400 
401  // Register it
402  if( g4mate != 0 )
403  {
404  theG4Materials[g4mate->GetName()] = g4mate;
405 #ifdef G4VERBOSE
407  {
408  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() - Material: "
409  << name << G4endl;
410  }
411 #endif
412  }
413  else
414  {
415  if( bMustExist )
416  {
417  G4String ErrMessage = "Material " + name + " not found !";
418  G4Exception("G4tgbMaterialMgr::FindOrBuildG4Material()",
419  "InvalidSetup", FatalException, ErrMessage);
420  }
421 #ifdef G4VERBOSE
423  {
424  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() - Element: "
425  << name << " not found " << G4endl;
426  }
427 #endif
428  }
429  }
430  else
431  {
432 #ifdef G4VERBOSE
434  {
435  G4cout << " G4tgbMaterialMgr::FindOrBuildG4Material() -"
436  << " G4Material already built: " << g4mate->GetName() << G4endl;
437  }
438 #endif
439  }
440 
441  return g4mate;
442 }
G4tgbMaterial * FindG4tgbMaterial(const G4String &name, G4bool bMustExist=0) const
G4IonisParamMat * GetIonisation() const
Definition: G4Material.hh:224
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
void SetMeanExcitationEnergy(G4double value)
const G4String & GetName() const
Definition: G4Material.hh:176
G4tgrMaterial * GetTgrMate() const
static G4NistManager * Instance()
G4GLOB_DLL std::ostream G4cout
virtual G4Material * BuildG4Material()=0
static G4int GetVerboseLevel()
G4double GetIonisationMeanExcitationEnergy() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4Material * FindBuiltG4Material(const G4String &name) const
#define G4endl
Definition: G4ios.hh:61
const G4msg4elem G4tgbMaterialMgr::GetG4ElementList ( ) const
inline

Definition at line 112 of file G4tgbMaterialMgr.hh.

Referenced by G4tgbVolumeMgr::DumpSummary().

112 { return theG4Elements; }
const G4msg4isot G4tgbMaterialMgr::GetG4IsotopeList ( ) const
inline

Definition at line 111 of file G4tgbMaterialMgr.hh.

Referenced by G4tgbVolumeMgr::DumpSummary().

111 { return theG4Isotopes; }
const G4msg4mate G4tgbMaterialMgr::GetG4MaterialList ( ) const
inline

Definition at line 113 of file G4tgbMaterialMgr.hh.

Referenced by G4tgbVolumeMgr::DumpSummary().

113 { return theG4Materials; }
G4tgbMaterialMgr * G4tgbMaterialMgr::GetInstance ( void  )
static

The documentation for this class was generated from the following files: