File indexing completed on 2025-01-18 09:59:07
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031 #ifndef G4StatMFMicroPartition_h
0032 #define G4StatMFMicroPartition_h 1
0033
0034 #include <vector>
0035
0036 #include "globals.hh"
0037 #include "G4StatMFParameters.hh"
0038 #include "G4StatMFChannel.hh"
0039
0040 class G4StatMFMicroPartition {
0041
0042 public:
0043
0044 G4StatMFMicroPartition(G4int A, G4int Z) :
0045 theA(A), theZ(Z), _Probability(0.0), _Temperature(0.0),
0046 _Entropy(0.0) {};
0047
0048
0049
0050 ~G4StatMFMicroPartition() {};
0051
0052
0053 private:
0054
0055 G4StatMFMicroPartition() {};
0056
0057
0058 G4StatMFMicroPartition(const G4StatMFMicroPartition & right);
0059
0060
0061 G4StatMFMicroPartition & operator=(const G4StatMFMicroPartition & right);
0062 public:
0063 G4bool operator==(const G4StatMFMicroPartition & right) const;
0064 G4bool operator!=(const G4StatMFMicroPartition & right) const;
0065
0066 public:
0067
0068
0069 G4StatMFChannel * ChooseZ(G4int A0, G4int Z0, G4double MeanT);
0070
0071 G4double GetProbability(void)
0072 { return _Probability; }
0073
0074 void SetPartitionFragment(G4int anA)
0075 {
0076 _thePartition.push_back(anA);
0077 CoulombFreeEnergy(anA);
0078 }
0079
0080 void Normalize(G4double Normalization)
0081 { _Probability /= Normalization; }
0082
0083 G4double CalcPartitionProbability(G4double U,
0084 G4double FreeInternalE0,
0085 G4double SCompound);
0086
0087 G4double GetTemperature(void)
0088 {
0089 return _Temperature;
0090 }
0091
0092 G4double GetEntropy(void)
0093 {
0094 return _Entropy;
0095 }
0096
0097 private:
0098
0099 void CoulombFreeEnergy(G4int anA);
0100
0101 G4double CalcPartitionTemperature(G4double U,
0102 G4double FreeInternalE0);
0103
0104 G4double GetPartitionEnergy(G4double T);
0105
0106 G4double GetCoulombEnergy(void);
0107
0108 G4double GetDegeneracyFactor(G4int A);
0109
0110 G4double InvLevelDensity(G4double Af)
0111 {
0112
0113
0114 if (Af < 1.5) return 0.0;
0115 else return G4StatMFParameters::GetEpsilon0()*(1.0+3.0/(Af - 1.0));
0116 }
0117
0118 private:
0119
0120
0121 G4int theA;
0122 G4int theZ;
0123
0124
0125 G4double _Probability;
0126
0127
0128 G4double _Temperature;
0129
0130
0131 G4double _Entropy;
0132
0133
0134 std::vector<G4int> _thePartition;
0135
0136 std::vector<G4double> _theCoulombFreeEnergy;
0137
0138 };
0139
0140 #endif