231{
232 G4double T = CalcPartitionTemperature(U,FreeInternalE0);
233 if ( T <= 0.0) return _Probability = 0.0;
234 _Temperature = T;
235
237
238
240 unsigned int i;
241 for (i = 0; i < _thePartition.size() - 1; i++)
242 {
244 for (unsigned int ii = i+1; i< _thePartition.size(); i++)
245 {
246 if (_thePartition[i] == _thePartition[ii]) f++;
247 }
248 Fact *= f;
249 }
250
253
254 for (i = 0; i < _thePartition.size(); i++)
255 {
256 ProbDegeneracy *= GetDegeneracyFactor(_thePartition[i]);
257 ProbA32 *= _thePartition[i]*std::sqrt((
G4double)_thePartition[i]);
258 }
259
260
262 for (i = 0; i < _thePartition.size(); i++)
263 {
264
265 if (_thePartition[i] == 4)
266 {
267 PartitionEntropy +=
268 2.0*T*_thePartition[i]/InvLevelDensity(_thePartition[i]);
269 }
270
271 else if (_thePartition[i] > 4)
272 {
273 PartitionEntropy +=
274 2.0*T*_thePartition[i]/InvLevelDensity(_thePartition[i])
276 }
277 }
278
279
280 G4double ThermalWaveLenght3 = 16.15*fermi/std::sqrt(T);
281 ThermalWaveLenght3 = ThermalWaveLenght3*ThermalWaveLenght3*ThermalWaveLenght3;
282
283
284 G4double kappa = 1. + elm_coupling*(g4calc->
Z13(_thePartition.size())-1.0)
286 kappa = kappa*kappa*kappa;
287 kappa -= 1.;
291 G4double TranslationalS = std::max(0.0,
G4Log(ProbA32/Fact) +
292 (_thePartition.size()-1.0)*
G4Log(FreeVolume/ThermalWaveLenght3) +
293 1.5*(_thePartition.size()-1.0) - 1.5*g4calc->
logZ(theA));
294
295 PartitionEntropy +=
G4Log(ProbDegeneracy) + TranslationalS;
296 _Entropy = PartitionEntropy;
297
298
299 G4double exponent = PartitionEntropy-SCompound;
300 if (exponent > 300.0) exponent = 300.0;
301 return _Probability =
G4Exp(exponent);
302}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
static G4Pow * GetInstance()
G4double logZ(G4int Z) const
G4double Z13(G4int Z) const
G4double Z23(G4int Z) const
static G4double DBetaDT(G4double T)