File indexing completed on 2025-01-18 09:59:27
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
0032 #ifndef G4VStatMFMacroCluster_h
0033 #define G4VStatMFMacroCluster_h 1
0034
0035 #include "G4StatMFParameters.hh"
0036 #include "G4HadronicException.hh"
0037
0038 class G4VStatMFMacroCluster {
0039
0040 public:
0041
0042 G4VStatMFMacroCluster(const G4int Size) :
0043 theA(Size),
0044 _InvLevelDensity(0.0),
0045 _Entropy(0.0),
0046 theZARatio(0.0),
0047 _MeanMultiplicity(0.0),
0048 _Energy(0.0)
0049 {
0050 if (theA <= 0) throw G4HadronicException(__FILE__, __LINE__,
0051 "G4VStatMFMacroCluster::Constructor: Cluster's size must be >= 1");
0052 _InvLevelDensity = CalcInvLevelDensity();
0053 }
0054
0055
0056
0057 virtual ~G4VStatMFMacroCluster() {};
0058
0059
0060 private:
0061
0062
0063 G4VStatMFMacroCluster() {};
0064
0065
0066 G4VStatMFMacroCluster(const G4VStatMFMacroCluster & right);
0067
0068
0069 G4VStatMFMacroCluster & operator=(const G4VStatMFMacroCluster & right);
0070
0071 public:
0072 G4bool operator==(const G4VStatMFMacroCluster & right) const;
0073 G4bool operator!=(const G4VStatMFMacroCluster & right) const;
0074
0075 private:
0076 G4double CalcInvLevelDensity(void);
0077
0078 public:
0079
0080 virtual G4double CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
0081 const G4double nu, const G4double T) = 0;
0082
0083 virtual G4double CalcZARatio(const G4double nu) = 0;
0084
0085 G4double GetMeanMultiplicity(void) const { return _MeanMultiplicity; }
0086
0087 virtual G4double CalcEnergy(const G4double T) = 0;
0088
0089 virtual G4double CalcEntropy(const G4double T, const G4double FreeVol) = 0;
0090
0091 protected:
0092
0093 G4int theA;
0094
0095
0096 G4double _InvLevelDensity;
0097
0098
0099 G4double _Entropy;
0100
0101
0102 G4double theZARatio;
0103
0104
0105 G4double _MeanMultiplicity;
0106
0107
0108 G4double _Energy;
0109
0110
0111 public:
0112
0113 G4double GetInvLevelDensity(void) const
0114 { return _InvLevelDensity; }
0115
0116 void SetZARatio(const G4double value)
0117 { theZARatio = value; }
0118
0119 G4double GetZARatio(void) const
0120 { return theZARatio; }
0121
0122
0123 void SetSize(const G4double value)
0124 {
0125 if (value <= 0.0) throw G4HadronicException(__FILE__, __LINE__, "G4VStatMFMacroCluster::SetSize: Cluster's size must be >= 1");
0126 theA = G4int(value);
0127 _InvLevelDensity = CalcInvLevelDensity();
0128 }
0129
0130 G4double GetSize(void) const
0131 { return theA; }
0132
0133
0134
0135
0136
0137 };
0138
0139 #endif