Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4tgbMaterialMgr.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4tgbMaterialMgr
27//
28// Class description:
29//
30// Singleton class to manage the building of transient materials,
31// as well as the construction of the corresponding G4Material's.
32
33// Author: P.Arce, CIEMAT (November 2007)
34// --------------------------------------------------------------------
35#ifndef G4tgbMaterialMgr_hh
36#define G4tgbMaterialMgr_hh 1
37
38#include "globals.hh"
39
40#include "G4tgbIsotope.hh"
41#include "G4tgbElement.hh"
42#include "G4tgbMaterial.hh"
43
44#include "G4tgrIsotope.hh"
45#include "G4tgrElement.hh"
46#include "G4tgrElement.hh"
47#include "G4tgrMaterial.hh"
48
49#include "G4Isotope.hh"
50#include "G4Element.hh"
51#include "G4Material.hh"
52
53using G4mstgbisot = std::map<G4String, G4tgbIsotope*>;
54using G4mstgbelem = std::map<G4String, G4tgbElement*>;
55using G4mstgbmate = std::map<G4String, G4tgbMaterial*>;
56using G4msg4isot = std::map<G4String, G4Isotope*>;
57using G4msg4elem = std::map<G4String, G4Element*>;
58using G4msg4mate = std::map<G4String, G4Material*>;
59
61{
62 public:
63
65
67 // Get only instance (it it does not exists, create it)
68
69 void CopyIsotopes();
70 // Copy the G4tgrIsotopes into G4tgbIsotopes
71 void CopyElements();
72 // Copy the G4tgrElements into G4tgbElements
73 void CopyMaterials();
74 // Copy the G4tgrMaterials into G4tgbMaterials
75
77 // Look for a G4Isotope that has to exists
78 // (if not found create it from the corresponding G4tgbIsotope)
79 G4Isotope* FindBuiltG4Isotope(const G4String& name) const;
80 // Look for a G4Isotope and if not found return nullptr
82 G4bool bMustExist = false) const;
83 // Look for a G4Isotope and if not found return nullptr
84
86 G4bool bMustExist = true);
87 // Look for a G4Element that has to exists by default
88 // (if not found create it from the corresponding G4tgbElement)
89 G4Element* FindBuiltG4Element(const G4String& name) const;
90 // Look for a G4Element and if not found return nullptr
92 G4bool bMustExist = false) const;
93 // Look for a G4Element and if not found return nullptr
94
96 G4bool bMustExist = true);
97 // Look for a G4Material that has to exists by default
98 // (if not found create it from the corresponding G4tgbMaterial)
99 G4Material* FindBuiltG4Material(const G4String& name) const;
100 // Look for a G4Material and if not found return nullptr
102 G4bool bMustExist = false) const;
103 // Look for a G4tgbMaterial and if not found return nullptr
104
105 const G4msg4isot GetG4IsotopeList() const { return theG4Isotopes; }
106 const G4msg4elem GetG4ElementList() const { return theG4Elements; }
107 const G4msg4mate GetG4MaterialList() const { return theG4Materials; }
108
109 private:
110
112 // Private Constructor
113
114 private:
115
116 static G4ThreadLocal G4tgbMaterialMgr* theInstance;
117
118 G4mstgbisot theG4tgbIsotopes;
119 // List of all tgbIsotopes created
120 G4mstgbelem theG4tgbElements;
121 // List of all tgbElements created
122 G4mstgbmate theG4tgbMaterials;
123 // List of all G4tgbMaterials created
124 G4msg4isot theG4Isotopes;
125 // Container of all G4Isotopes created
126 G4msg4elem theG4Elements;
127 // Container of all G4Elements created
128 G4msg4mate theG4Materials;
129 // Container of all G4Materials created
130};
131
132#endif
bool G4bool
Definition: G4Types.hh:86
std::map< G4String, G4Isotope * > G4msg4isot
std::map< G4String, G4tgbElement * > G4mstgbelem
std::map< G4String, G4tgbIsotope * > G4mstgbisot
std::map< G4String, G4tgbMaterial * > G4mstgbmate
std::map< G4String, G4Material * > G4msg4mate
std::map< G4String, G4Element * > G4msg4elem
G4Material * FindBuiltG4Material(const G4String &name) const
const G4msg4elem GetG4ElementList() const
G4Isotope * FindOrBuildG4Isotope(const G4String &name)
G4tgbIsotope * FindG4tgbIsotope(const G4String &name, G4bool bMustExist=false) const
G4tgbElement * FindG4tgbElement(const G4String &name, G4bool bMustExist=false) const
const G4msg4mate GetG4MaterialList() const
G4Element * FindBuiltG4Element(const G4String &name) const
G4Isotope * FindBuiltG4Isotope(const G4String &name) const
G4Element * FindOrBuildG4Element(const G4String &name, G4bool bMustExist=true)
G4Material * FindOrBuildG4Material(const G4String &name, G4bool bMustExist=true)
G4tgbMaterial * FindG4tgbMaterial(const G4String &name, G4bool bMustExist=false) const
const G4msg4isot GetG4IsotopeList() const
static G4tgbMaterialMgr * GetInstance()
#define G4ThreadLocal
Definition: tls.hh:77