00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 #ifndef G4StatMFMacroChemicalPotential_h
00033 #define G4StatMFMacroChemicalPotential_h 1
00034 
00035 #include <vector>
00036 
00037 #include "G4StatMFParameters.hh"
00038 #include "G4VStatMFMacroCluster.hh"
00039 #include "G4StatMFMacroMultiplicity.hh"
00040 #include "G4Solver.hh"
00041 
00042 
00043 
00044 class G4StatMFMacroChemicalPotential {
00045 
00046 public:
00047 
00048     G4StatMFMacroChemicalPotential(const G4double anA, const G4double aZ,
00049                                    const G4double kappa, 
00050                                    const G4double temp, 
00051                                    std::vector<G4VStatMFMacroCluster*> * ClusterVector) :
00052         theA(anA),
00053         theZ(aZ),
00054         _Kappa(kappa),
00055         _MeanMultiplicity(0.0),
00056         _MeanTemperature(temp),
00057         _ChemPotentialMu(0.0),
00058         _ChemPotentialNu(0.0),
00059         _theClusters(ClusterVector) 
00060         {};
00061         
00062     ~G4StatMFMacroChemicalPotential() {};
00063    
00064     G4double operator()(const G4double nu)
00065         { return (theZ - this->CalcMeanZ(nu))/theZ; }   
00066 
00067 private:
00068     
00069     G4StatMFMacroChemicalPotential() {};
00070 
00071     
00072     G4StatMFMacroChemicalPotential(const G4StatMFMacroChemicalPotential &) {};
00073 
00074 
00075     
00076     G4StatMFMacroChemicalPotential & operator=(const G4StatMFMacroChemicalPotential & right);
00077     G4bool operator==(const G4StatMFMacroChemicalPotential & right) const;
00078     G4bool operator!=(const G4StatMFMacroChemicalPotential & right) const;
00079 
00080 public:
00081 
00082     G4double GetMeanMultiplicity(void) const {return _MeanMultiplicity;}
00083         
00084     G4double GetChemicalPotentialMu(void) const {return _ChemPotentialMu;}
00085 
00086     G4double GetChemicalPotentialNu(void) const {return _ChemPotentialNu;}
00087 
00088     G4double CalcChemicalPotentialNu(void);
00089 
00090 private:
00091         
00092     G4double CalcMeanZ(const G4double nu);
00093 
00094     void CalcChemicalPotentialMu(const G4double nu);
00095 
00096 private:
00097 
00098     G4double theA;
00099 
00100     G4double theZ;
00101 
00102     G4double _Kappa;
00103 
00104     G4double _MeanMultiplicity;
00105 
00106     G4double _MeanTemperature;
00107         
00108     G4double _ChemPotentialMu;
00109         
00110     G4double _ChemPotentialNu;
00111         
00112     std::vector<G4VStatMFMacroCluster*> * _theClusters; 
00113 
00114 
00115 };
00116 #endif