source: trunk/examples/advanced/radiation_monitor/materials/include/RadmonMaterialsManager.hh@ 893

Last change on this file since 893 was 807, checked in by garnier, 17 years ago

update

File size: 6.7 KB
Line 
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// File name: RadmonMaterialsManager.hh
28// Creation date: Sep 2005
29// Main author: Riccardo Capra <capra@ge.infn.it>
30//
31// Id: $Id: RadmonMaterialsManager.hh,v 1.4 2006/06/29 16:16:45 gunter Exp $
32// Tag: $Name: $
33//
34// Description: Singleton that manages the materials creation
35//
36
37#ifndef RADMONMATERIALSMANAGER_HH
38 #define RADMONMATERIALSMANAGER_HH
39
40 // Include files
41 #include "globals.hh"
42 #include "G4String.hh"
43 #include "G4Element.hh"
44 #include "G4Material.hh"
45 #include "G4Color.hh"
46
47 #include <list>
48 #include <map>
49
50 // Forward declaration
51 class RadmonMaterialsMessenger;
52 class G4Material;
53 class G4VisAttributes;
54
55 class RadmonMaterialsManager
56 {
57 public:
58 static RadmonMaterialsManager * Instance(void);
59
60 G4Element & CreateElement(const G4String & elementName, const G4String & symbol, G4double zEff, G4double aEff);
61 G4Element & GetElement(const G4String & elementName);
62 inline const G4Element & GetElement(const G4String & elementName) const;
63 inline G4Element & GetElement(G4int index);
64 inline const G4Element & GetElement(G4int index) const;
65 inline G4int GetNElements() const;
66 G4bool ExistsElement(const G4String & elementName) const;
67
68 void CreateMaterial(const G4String & materialName, G4double density, G4int nComponents);
69 void AddComponentByAtoms(const G4String & materialName, const G4String & elementName, G4int nAtoms);
70 void AddComponentByFraction(const G4String & materialName, const G4String & componentName, G4double fraction);
71 G4Material & GetMaterial(const G4String & materialName);
72 inline const G4Material & GetMaterial(const G4String & materialName) const;
73 inline G4Material & GetMaterial(G4int index);
74 inline const G4Material & GetMaterial(G4int index) const;
75 inline G4int GetNMaterials() const;
76 G4bool ExistsMaterial(const G4String & materialName) const;
77 inline G4bool IsIncompleteMaterial(const G4String & materialName) const;
78
79 void SetMaterialColor(const G4String & materialName, const G4Color & color);
80 void SetMaterialVisibility(const G4String & materialName, G4bool visibility);
81 void SetMaterialForceWireframe(const G4String & materialName, G4bool force);
82 void SetMaterialForceSolid(const G4String & materialName, G4bool force);
83
84 const G4Color & GetMaterialColor(const G4String & materialName) const;
85 G4bool GetMaterialVisibility(const G4String & materialName) const;
86 G4bool GetMaterialForceWireframe(const G4String & materialName) const;
87 G4bool GetMaterialForceSolid(const G4String & materialName) const;
88
89 void Dump(std::ostream & out, const G4String &indent=G4String()) const;
90
91 G4bool Insert(std::istream & in);
92 G4bool Save(std::ostream & out) const;
93
94 private:
95 inline G4Element * FindElement(const G4String & elementName);
96 inline G4Material * FindMaterial(const G4String & materialName);
97 G4Material * FindIncompleteMaterial(const G4String & materialName);
98 G4Material * FindIncompleteMaterialOrAbort(const G4String & materialName);
99 void UpdateIncompleteStatus(const G4String & materialName);
100
101 // Hidden constructors and operators
102 inline RadmonMaterialsManager();
103 RadmonMaterialsManager(const RadmonMaterialsManager & copy);
104 ~RadmonMaterialsManager();
105 RadmonMaterialsManager & operator=(const RadmonMaterialsManager & copy);
106
107 // Private data types
108 typedef std::list<G4Material *> MaterialsList;
109 typedef std::map<G4String, G4VisAttributes *> MaterialAttributes;
110
111 // Private attributes
112 RadmonMaterialsMessenger * messenger;
113
114 MaterialsList incompleteMaterialsList;
115 MaterialAttributes attributesMap;
116
117 // Private static attribute
118 static RadmonMaterialsManager * instance;
119 };
120
121 // Inline implementations
122 #include "RadmonMaterialsManager.icc"
123#endif /* RADMONMATERIALSMANAGER_HH */
Note: See TracBrowser for help on using the repository browser.