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 G4StatMFMicroPartition_h
00033 #define G4StatMFMicroPartition_h 1
00034
00035 #include <vector>
00036
00037 #include "globals.hh"
00038 #include "G4StatMFParameters.hh"
00039 #include "G4StatMFChannel.hh"
00040
00041 class G4StatMFMicroPartition {
00042
00043 public:
00044
00045 G4StatMFMicroPartition(const G4int A, const G4double Z) :
00046 theA(A), theZ(Z), _Probability(0.0), _Temperature(0.0),
00047 _Entropy(0.0) {};
00048
00049
00050
00051 ~G4StatMFMicroPartition() {};
00052
00053
00054 private:
00055
00056 G4StatMFMicroPartition() {};
00057
00058
00059 G4StatMFMicroPartition(const G4StatMFMicroPartition & right);
00060
00061
00062 G4StatMFMicroPartition & operator=(const G4StatMFMicroPartition & right);
00063 public:
00064 G4bool operator==(const G4StatMFMicroPartition & right) const;
00065 G4bool operator!=(const G4StatMFMicroPartition & right) const;
00066
00067 public:
00068
00069
00070 G4StatMFChannel * ChooseZ(const G4double A0, const G4double Z0, const G4double MeanT);
00071
00072 G4double GetProbability(void)
00073 { return _Probability; }
00074
00075
00076
00077 void SetPartitionFragment(const G4int anA)
00078 {
00079 _thePartition.push_back(anA);
00080 CoulombFreeEnergy(anA);
00081 }
00082
00083 void Normalize(const G4double Normalization)
00084 { _Probability /= Normalization; }
00085
00086
00087 G4double CalcPartitionProbability(const G4double U,
00088 const G4double FreeInternalE0,
00089 const G4double SCompound);
00090
00091 G4double GetTemperature(void)
00092 {
00093 return _Temperature;
00094 }
00095
00096 G4double GetEntropy(void)
00097 {
00098 return _Entropy;
00099 }
00100
00101 private:
00102 void CoulombFreeEnergy(const G4double anA);
00103
00104 G4double CalcPartitionTemperature(const G4double U,
00105 const G4double FreeInternalE0);
00106
00107 G4double GetPartitionEnergy(const G4double T);
00108
00109 G4double GetCoulombEnergy(void);
00110
00111 G4double GetDegeneracyFactor(const G4int A);
00112
00113 G4double InvLevelDensity(const G4double Af)
00114 {
00115
00116
00117 if (Af < 1.5) return 0.0;
00118 else return G4StatMFParameters::GetEpsilon0()*(1.0+3.0/(Af - 1.0));
00119 }
00120
00121 private:
00122
00123
00124 G4double theA;
00125 G4double theZ;
00126
00127
00128 G4double _Probability;
00129
00130
00131 G4double _Temperature;
00132
00133
00134 G4double _Entropy;
00135
00136
00137 std::vector<G4int> _thePartition;
00138
00139
00140 std::vector<G4double> _theCoulombFreeEnergy;
00141
00142 };
00143
00144 #endif