1 #ifndef FLUKAMATERIAL_HH
2 #define FLUKAMATERIAL_HH 1
11 typedef std::map<G4String, FlukaMaterial*, std::less<G4String> > FlukaMaterialsTable;
12 typedef std::map<G4String, FlukaMaterial*, std::less<G4String> >::const_iterator FlukaMaterialsIterator;
13 typedef std::map<G4int, FlukaMaterial*, std::less<G4int> > FlukaMaterialsIndexTable;
14 typedef std::map<G4int, FlukaMaterial*, std::less<G4int> >::const_iterator FlukaMaterialsIndexIterator;
20 FlukaMaterial(const G4String& name,
24 virtual ~FlukaMaterial();
27 G4int GetZ() const {return fZ;}
28 G4double GetA() const {return fA;}
29 G4double GetDensity() const {return fDensity;}
30 G4int GetN() const {return fN;}
31 G4String GetName() const {return fName;}
32 G4String GetRealName() const;
33 G4int GetIndex() const {return fIndex;}
34 const FlukaLowMat* GetLowMat() const {return fFlukaLowMat;}
38 void SetZ(G4int Z) {fZ = Z;}
39 void SetA(G4double A) {fA = A;}
40 void SetDensity(G4double d) {fDensity = d;}
41 void SetN(G4int N) {fN = N;}
42 void SetName(const G4String& n) {fName = n;}
45 static const FlukaMaterialsTable* GetMaterialTable() {
46 return &fFlukaMaterials;}
47 static FlukaMaterial* GetFlukaMaterial(const G4String& name) {
48 return fFlukaMaterials[name];}
49 static std::ostream& PrintMaterialsByName(std::ostream& os);
50 static std::ostream& PrintMaterialsByIndex(std::ostream& os);
54 void AddLowMat(const G4String& name);
61 G4int fN; //Isotope number
62 FlukaLowMat* fFlukaLowMat;
66 static FlukaMaterialsTable fFlukaMaterials; //Map of name/material
67 static FlukaMaterialsIndexTable fFlukaIndexMaterials; //Map index/material
71 std::ostream& operator<<(std::ostream& os, const FlukaMaterial& material);