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
00033 #ifndef G4VStatMFMacroCluster_h
00034 #define G4VStatMFMacroCluster_h 1
00035
00036 #include "G4StatMFParameters.hh"
00037 #include "G4HadronicException.hh"
00038
00039 class G4VStatMFMacroCluster {
00040
00041 public:
00042
00043 G4VStatMFMacroCluster(const G4int Size) :
00044 theA(Size),
00045 _InvLevelDensity(0.0),
00046 _Entropy(0.0),
00047 theZARatio(0.0),
00048 _MeanMultiplicity(0.0),
00049 _Energy(0.0)
00050 {
00051 if (theA <= 0) throw G4HadronicException(__FILE__, __LINE__,
00052 "G4VStatMFMacroCluster::Constructor: Cluster's size must be >= 1");
00053 _InvLevelDensity = CalcInvLevelDensity();
00054 }
00055
00056
00057
00058 virtual ~G4VStatMFMacroCluster() {};
00059
00060
00061 private:
00062
00063
00064 G4VStatMFMacroCluster() {};
00065
00066
00067 G4VStatMFMacroCluster(const G4VStatMFMacroCluster & right);
00068
00069
00070 G4VStatMFMacroCluster & operator=(const G4VStatMFMacroCluster & right);
00071
00072 public:
00073 G4bool operator==(const G4VStatMFMacroCluster & right) const;
00074 G4bool operator!=(const G4VStatMFMacroCluster & right) const;
00075
00076 private:
00077 G4double CalcInvLevelDensity(void);
00078
00079 public:
00080
00081 virtual G4double CalcMeanMultiplicity(const G4double FreeVol, const G4double mu,
00082 const G4double nu, const G4double T) = 0;
00083
00084 virtual G4double CalcZARatio(const G4double nu) = 0;
00085
00086 G4double GetMeanMultiplicity(void) const { return _MeanMultiplicity; }
00087
00088 virtual G4double CalcEnergy(const G4double T) = 0;
00089
00090 virtual G4double CalcEntropy(const G4double T, const G4double FreeVol) = 0;
00091
00092 protected:
00093
00094 G4int theA;
00095
00096
00097 G4double _InvLevelDensity;
00098
00099
00100 G4double _Entropy;
00101
00102
00103 G4double theZARatio;
00104
00105
00106 G4double _MeanMultiplicity;
00107
00108
00109 G4double _Energy;
00110
00111
00112 public:
00113
00114 G4double GetInvLevelDensity(void) const
00115 { return _InvLevelDensity; }
00116
00117 void SetZARatio(const G4double value)
00118 { theZARatio = value; }
00119
00120 G4double GetZARatio(void) const
00121 { return theZARatio; }
00122
00123
00124 void SetSize(const G4double value)
00125 {
00126 if (value <= 0.0) throw G4HadronicException(__FILE__, __LINE__, "G4VStatMFMacroCluster::SetSize: Cluster's size must be >= 1");
00127 theA = G4int(value);
00128 _InvLevelDensity = CalcInvLevelDensity();
00129 }
00130
00131 G4double GetSize(void) const
00132 { return theA; }
00133
00134
00135
00136
00137
00138 };
00139
00140 #endif