CLASS
1.1
|
00001 #ifndef __ISOTOPICVECTOR_HXX__ 00002 #define __ISOTOPICVECTOR_HXX__ 00003 00004 00013 #include "ZAI.hxx" 00014 00015 #include "TObject.h" 00016 #include <string> 00017 #include <map> 00018 00019 using namespace std; 00020 class IsotopicVector; 00021 00022 IsotopicVector operator/(IsotopicVector const& IVA, double F); 00023 IsotopicVector operator/(ZAI const& zai, double F); 00024 IsotopicVector operator*(IsotopicVector const& IVA, double F); 00025 IsotopicVector operator*(ZAI const& zai, double F); 00026 IsotopicVector operator+(IsotopicVector const& IVa, IsotopicVector const& IVb); 00027 IsotopicVector operator-(IsotopicVector const& IVa, IsotopicVector const& IVb); 00028 00029 double Distance(IsotopicVector IV1, IsotopicVector IV2 ); 00030 double Norme(IsotopicVector IV1); 00031 00032 class IsotopicVector : public TObject 00033 { 00034 public : 00035 00036 //********* Constructor/Destructor Method *********// 00037 00038 IsotopicVector(); 00039 ~IsotopicVector(); 00040 00041 00042 //********* Get Method *********// 00043 00044 map<ZAI ,double> GetIsotopicQuantity() const {return fIsotopicQuantity;} 00045 map<ZAI ,double> GetIsotopicQuantityNeeded() const {return fIsotopicQuantityNeeded;} 00046 IsotopicVector GetAtomicComposition(int z) const; 00047 vector<int> GetAtomicSpecies() const; 00048 00049 00050 //********* Modification Method *********// 00051 void Clear(); 00052 void ClearNeed(); 00053 00054 void Add(const ZAI& zai, double quantity); 00055 void Add(const IsotopicVector& isotopicvector); 00056 void Add(const map<ZAI ,double>& quantity); 00057 00058 void Need(const ZAI& zai, double quantity); 00059 void Need(const IsotopicVector& isotopicvector); 00060 void Need(const map<ZAI ,double>& quantityneeded) {fIsotopicQuantityNeeded = quantityneeded;} 00062 00063 void Remove(const ZAI& zai, double quantity); 00064 void Remove(const IsotopicVector& isotopicvector); 00065 00066 void Multiply(double factor); 00067 00068 void Write(string filename, long int time ) const; 00069 00070 void Print(string o =" ") const ; 00071 00072 double GetZAIIsotopicQuantity(const ZAI& zai) const; 00073 double GetZAIIsotopicQuantity(const int z, const int a, const int i) const; 00074 00075 00076 00077 //******* Set Operator between IsotopicVector *******// 00078 00079 IsotopicVector& operator+=(IsotopicVector const& IVb); 00080 IsotopicVector& operator-=(IsotopicVector const& IVb); 00081 00082 //***************************************************///< 00083 00084 00085 protected : 00086 00087 map<ZAI ,double> fIsotopicQuantity; 00088 map<ZAI ,double> fIsotopicQuantityNeeded; 00089 00090 ClassDef(IsotopicVector,2); 00091 }; 00092 00093 00094 00095 00096 00097 #endif