ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4tgrMaterialFactory.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4tgrMaterialFactory.hh
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 //
27 //
28 //
29 // class G4tgrMaterialFactory
30 //
31 // Class description:
32 //
33 // Singleton class to manage the building of transient materials.
34 
35 // History:
36 // - Created. P.Arce, CIEMAT (November 2007)
37 // -------------------------------------------------------------------------
38 
39 #ifndef G4tgrMaterialFactory_h
40 #define G4tgrMaterialFactory_h
41 
42 #include "globals.hh"
43 
44 #include <map>
45 
46 #include "G4tgrIsotope.hh"
47 #include "G4tgrElementSimple.hh"
49 #include "G4tgrMaterial.hh"
50 #include "G4tgrMaterialSimple.hh"
51 #include "G4tgrMaterialMixture.hh"
52 
53 typedef std::map< G4String, G4tgrIsotope* > G4mstgrisot;
54 typedef std::map< G4String, G4tgrElement* > G4mstgrelem;
55 typedef std::map< G4String, G4tgrMaterial* > G4mstgrmate;
56 
58 {
59  public: // with decription
60 
62 
64  // Get only instance (it it does not exist, create it)
65 
66  G4tgrIsotope* AddIsotope( const std::vector<G4String>& wl );
67  // Build a G4tgrIsotope
68 
69  G4tgrElementSimple* AddElementSimple( const std::vector<G4String>& wl );
70  // Build a G4tgrElementSimple
71  G4tgrElementFromIsotopes* AddElementFromIsotopes( const std::vector<G4String>& wl );
72  // Build a G4tgrElementFromIsotopes
73 
74  G4tgrMaterialSimple* AddMaterialSimple( const std::vector<G4String>& wl );
75  // Build a G4tgrMaterialSimple and add it to the Materials list
76 
77  G4tgrMaterialMixture* AddMaterialMixture( const std::vector<G4String>& wl, const G4String& mixtType );
78  // Build a G4tgrMaterialByWeight or G4tgrMaterialByNoAtoms
79  // or G4tgrMaterialByVolume and add it to the Materials list
80 
81  G4tgrIsotope* FindIsotope(const G4String& name) const;
82  // Look for a G4tgrIsotope and if not found return 0
83 
84  G4tgrElement* FindElement(const G4String& name) const;
85  // Look for an G4tgrElement and if not found return 0
86 
87  G4tgrMaterial* FindMaterial(const G4String& name) const;
88  // Look for an G4tgrMaterial and if not found return 0
89 
90  void DumpIsotopeList() const;
91  // Dump detailed list of isotopes
92  void DumpElementList() const;
93  // Dump detailed list of elements
94  void DumpMaterialList() const;
95  // Dump detailed list of materials
96 
97  public: // without description
98 
99  const G4mstgrisot& GetIsotopeList() const {return theG4tgrIsotopes; }
100  const G4mstgrelem& GetElementList() const {return theG4tgrElements; }
102 
103  private:
104 
106  // Constructor
107 
108  void ErrorAlreadyExists(const G4String& object,
109  const std::vector<G4String>& wl,
110  const G4bool bNoRepeating = true );
111  private:
112 
114 
116  // List of all G4tgrIsotopes created
118  // List of all G4tgrElements created
120  // List of all G4tgrMaterials created
121 };
122 
123 #endif