CLASS  5.1
Fuel Cycle Simulator
IsotopicVector.hxx
Go to the documentation of this file.
1 #ifndef _ISOTOPICVECTOR_
2 #define _ISOTOPICVECTOR_
3 
4 
10 #include "ZAI.hxx"
11 
12 #include "TObject.h"
13 #include <string>
14 #include <vector>
15 #include <map>
16 
17 using namespace std;
18 typedef long long int cSecond;
19 
20 //-----------------------------------------------------------------------------//
22 
33 //________________________________________________________________________
34 
35 
36 
37 class IsotopicVector : public TObject
38 {
39  public :
40  typedef std::map<ZAI,double>::const_iterator const_iterator;
41  typedef std::map<ZAI,double>::iterator iterator;
42 
43  //********* Constructor/Destructor Method *********//
48 
49  IsotopicVector();
50  IsotopicVector ( IsotopicVector const& IVa );
51 
52 
53  ~IsotopicVector();
54 
56 
57  //********* Operator Method *********//
62 
63  IsotopicVector& operator += ( IsotopicVector const& IVb );
64  IsotopicVector& operator -= ( IsotopicVector const& IVb );
65  IsotopicVector& operator *= ( IsotopicVector const& IVb );
66  IsotopicVector& operator *= ( double const& factor );
67  bool operator < (const IsotopicVector& isotopicvector) const;
68 
70 
71  //********* Get Method *********//
76 
77  map<ZAI,double> GetIsotopicQuantity () const
78  { return fIsotopicQuantity; }
79  map<ZAI,double> GetIsotopicQuantityNeeded () const
80  { return fIsotopicQuantityNeeded; }
81  IsotopicVector GetSpeciesComposition ( int z ) const;
82  IsotopicVector GetThisComposition ( IsotopicVector IV ) const;
83  IsotopicVector GetThisChemicalComposition ( IsotopicVector IV ) const;
84  vector<ZAI> GetZAIList () const;
85  IsotopicVector GetActinidesComposition() const;
86 
87  double GetZAIIsotopicQuantity ( const ZAI& zai ) const;
88  double GetZAIIsotopicQuantity ( const int z, const int a, const int i) const;
89  double GetQuantity ( const int z, const int a, const int i ) const { return GetZAIIsotopicQuantity(z,a,i); }
90  double GetQuantity ( const ZAI& zai ) const { return GetZAIIsotopicQuantity(zai); }
91 
92  void Initiatlize ( double val );
93 
94 
95  double GetTotalMass () const;
96  double GetMeanMolarMass () const; //<! Return the mean molar mass of the isotopic vector
97 
98  vector<int> GetChemicalSpecies () const;
99  int GetZAIQuantity () const
100  {return fIsotopicQuantity.size(); }
101 
102  double GetSumOfAll () const;
103 
105  { return fIsotopicQuantity.begin(); }
107  { return fIsotopicQuantity.begin(); }
109  { return fIsotopicQuantity.end(); }
111  { return fIsotopicQuantity.end(); }
112 
113  iterator find ( const ZAI & zai ) { return fIsotopicQuantity.find(zai); }
114  const_iterator find ( const ZAI & zai ) const { return fIsotopicQuantity.find(zai); }
116 
117 
118 
119 
120 //********* Internal Operation Method *********//
121 
126 
127 
128  void Clear();
129  void ClearNeed();
130 
131  void Add(const ZAI& zai, double quantity);
132  void Add(const IsotopicVector& isotopicvector);
133  void Add(const map<ZAI ,double>& quantity);
134  void Add(int Z, int A, int I, double quantity)
135  { (*this).Add(ZAI(Z,A,I), quantity); }
136  void Add ( const pair<ZAI,double> & zaiQ ) { Add( zaiQ.first , zaiQ.second ); }
137 
138 
139  void Need(const ZAI& zai, double quantity);
140  void Need(const IsotopicVector& isotopicvector);
141  void Need(const map<ZAI ,double>& quantityneeded) { fIsotopicQuantityNeeded = quantityneeded; }
143 
144  void Remove(const ZAI& zai, double quantity);
145  void Remove(const IsotopicVector& isotopicvector);
146  void Remove ( const pair<ZAI,double> & zaiQ ) { Remove( zaiQ.first , zaiQ.second ); }
147 
148  void Multiply(double factor);
149 
150  void ApplyZAIThreshold(int z = 90);
151 
152 
153 
154 
155 //********* In/Out related Method *********//
156 
161 
162  void Write(string filename, cSecond time = -1 ) const;
163 
164  void Print(string o = " ") const ;
165  string sPrint() const ;
166 
167  void PrintList(string o = " ") const ;
168 
170 
171 
172 //***************************************************///<
173 
174 
175  protected :
176 
177  map<ZAI ,double> fIsotopicQuantity;
178  map<ZAI ,double> fIsotopicQuantityNeeded;
179 
180  ClassDef(IsotopicVector,1);
181 };
182 
183 IsotopicVector operator/(IsotopicVector const& IVA, double F);
184 IsotopicVector operator/(IsotopicVector const& IVA, IsotopicVector const& IVB);
185 IsotopicVector operator/(ZAI const& zai, double F);
186 IsotopicVector operator*(IsotopicVector const& IVA, double F);
187 IsotopicVector operator*(ZAI const& zai, double F);
188 IsotopicVector operator*(double F, IsotopicVector const& IVA);
189 IsotopicVector operator*(double F, ZAI const& zai);
190 IsotopicVector operator+(IsotopicVector const& IVa, IsotopicVector const& IVb);
191 IsotopicVector operator-(IsotopicVector const& IVa, IsotopicVector const& IVb);
192 
193 IsotopicVector operator*(IsotopicVector const& IVa, IsotopicVector const& IVb);
194 
195 
196 double RelativDistance ( const IsotopicVector & , const IsotopicVector & );
197 double Distance ( const IsotopicVector & , const IsotopicVector & , int DistanceType = 0 , const IsotopicVector & DistanceParameter = IsotopicVector() );
198 double DistanceStandard( const IsotopicVector & , const IsotopicVector & );
199 double DistanceAdjusted( const IsotopicVector & , const IsotopicVector & , const IsotopicVector & );
200 double Norme( const IsotopicVector & , int DistanceType = 0 , const IsotopicVector & DistanceParameter = IsotopicVector() );
201 
202 
203 #endif
IsotopicVector operator*(IsotopicVector const &IVA, double F)
Definition: IsotopicVector.cxx:598
double Norme(const IsotopicVector &, int DistanceType=0, const IsotopicVector &DistanceParameter=IsotopicVector())
return the norm of an IV
Definition: IsotopicVector.cxx:705
long long int cSecond
Definition: IsotopicVector.hxx:18
EvolutionData Multiply(EvolutionData const &evol, double F)
Definition: EvolutionData.cxx:119
double Distance(const IsotopicVector &, const IsotopicVector &, int DistanceType=0, const IsotopicVector &DistanceParameter=IsotopicVector())
return weighted euclidean distance between two IV
Definition: IsotopicVector.cxx:657
map< ZAI, double > GetIsotopicQuantity() const
Return the IsotopicVector as a map.
Definition: IsotopicVector.hxx:77
double RelativDistance(const IsotopicVector &, const IsotopicVector &)
return the euclidean distance between two IV. The two IV are normalize to unity
Definition: IsotopicVector.cxx:633
IsotopicVector operator/(IsotopicVector const &IVA, double F)
Definition: IsotopicVector.cxx:622
map< ZAI, double > GetIsotopicQuantityNeeded() const
Return the needed IsotopicVector as a map.
Definition: IsotopicVector.hxx:79
iterator find(const ZAI &zai)
Definition: IsotopicVector.hxx:113
Allows to store & operate on radioactive sample.
Definition: IsotopicVector.hxx:37
double GetQuantity(const int z, const int a, const int i) const
Definition: IsotopicVector.hxx:89
double DistanceAdjusted(const IsotopicVector &, const IsotopicVector &, const IsotopicVector &)
return the weighted euclidean distance between two IV
Definition: IsotopicVector.cxx:688
const_iterator begin() const
Return a constant iterator on the begin of fIsotopicQuantity.
Definition: IsotopicVector.hxx:106
Definition: CLASSBackEndDict.cxx:37
Header file for ZAI classes.
IsotopicVector operator-(IsotopicVector const &IVa, IsotopicVector const &IVb)
Definition: IsotopicVector.cxx:537
std::map< ZAI, double >::const_iterator const_iterator
Definition: IsotopicVector.hxx:40
Defines a nucleus.
Definition: ZAI.hxx:33
iterator end()
Return an iterator on the end of fIsotopicQuantity.
Definition: IsotopicVector.hxx:108
void Add(int Z, int A, int I, double quantity)
Add Quantity gramme of the ZAI Element.
Definition: IsotopicVector.hxx:134
const_iterator end() const
Return a constant iterator on the end of fIsotopicQuantity.
Definition: IsotopicVector.hxx:110
map< ZAI,double > fIsotopicQuantity
Isotopic vector composition in atomes Number.
Definition: IsotopicVector.hxx:177
map< ZAI,double > fIsotopicQuantityNeeded
map where negative value are saved
Definition: IsotopicVector.hxx:178
double DistanceStandard(const IsotopicVector &, const IsotopicVector &)
return the euclidean distance between two IV
Definition: IsotopicVector.cxx:674
iterator begin()
Return an iterator on the begin of fIsotopicQuantity.
Definition: IsotopicVector.hxx:104
void Add(const pair< ZAI, double > &zaiQ)
Definition: IsotopicVector.hxx:136
IsotopicVector operator+(IsotopicVector const &IVa, IsotopicVector const &IVb)
Definition: IsotopicVector.cxx:530
long long int cSecond
Definition: CLASSConstante.hxx:10
const_iterator find(const ZAI &zai) const
Definition: IsotopicVector.hxx:114
void Remove(const pair< ZAI, double > &zaiQ)
Definition: IsotopicVector.hxx:146
std::map< ZAI, double >::iterator iterator
Definition: IsotopicVector.hxx:41
double GetQuantity(const ZAI &zai) const
Definition: IsotopicVector.hxx:90
int GetZAIQuantity() const
Return the number of different ZAI in the IsotopicVector.
Definition: IsotopicVector.hxx:99
void Need(const map< ZAI, double > &quantityneeded)
Fill the fIsotopicQuantityNeeded.
Definition: IsotopicVector.hxx:141