00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00032
00039
00040
00045
00046
00056
00057
00058 #ifndef _MJMATERIALELEMENT_HH
00059 #define _MJMATERIALELEMENT_HH
00060
00061
00062
00063 #include <string>
00064 #include <vector>
00065
00066 #include "globals.hh"
00067
00068 #include "database/MJDatabaseElement.hh"
00069 #include "materials/MJMaterialIsotope.hh"
00070
00071 using namespace std;
00072
00073
00074 class G4Element;
00075
00076 class MJMaterialElement
00077 {
00078 public:
00079
00080
00081 MJMaterialElement();
00082
00083 MJMaterialElement(G4String name, G4bool registerG4);
00084
00085
00086 MJMaterialElement(const MJMaterialElement &);
00087
00088
00089 ~MJMaterialElement();
00090
00091
00092
00093 void CreateFromDatabase();
00094
00098 void RegisterWithG4();
00099
00100 G4String GetName() { return fName; }
00101 G4String GetSymbol() { return fSymbol; }
00102 G4int GetNoOfIsotopes() { return fNoOfIsotopes; }
00103 G4int GetZ() { return fZ; }
00104
00105 G4bool operator==(MJMaterialElement a) { return GetName() == a.GetName(); }
00106 G4bool operator<(MJMaterialElement a) { return GetZ() < a.GetZ(); }
00107
00108
00109 protected:
00110
00111
00112
00113 private:
00114
00115 G4bool fExists;
00116 G4String fName;
00117 G4String fSymbol;
00118 G4int fNoOfIsotopes;
00119 G4int fZ;
00120 G4Element *fG4Element;
00121 vector<string> fIsoName;
00122 vector<string> fIsoSymb;
00123 vector<G4double> fIsoAbundance;
00124 vector<MJMaterialIsotope> fMJIsotopes;
00125 };
00126 #endif