44 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroPartition::copy_constructor meant to not be accessable");
52 throw G4HadronicException(__FILE__, __LINE__,
"G4StatMFMicroPartition::operator= meant to not be accessable");
79 if (anA == 0 || anA == 1)
83 else if (anA == 2 || anA == 3 || anA == 4)
110 return CoulombEnergy;
171 return PartitionEnergy;
181 if (std::fabs(U + FreeInternalE0 - PartitionEnergy) < 0.003)
return -1.0;
195 while (Da*Db > 0.0 && maxit < 1000)
204 for (
G4int i = 0; i < 1000; i++)
207 if (std::fabs(Ta-Tb) <=
eps)
return Tmid;
209 if (std::fabs(Dmid) < 0.003)
return Tmid;
222 G4cout <<
"G4StatMFMicroPartition::CalcPartitionTemperature: I can't calculate the temperature"
282 ThermalWaveLenght3 = ThermalWaveLenght3*ThermalWaveLenght3*ThermalWaveLenght3;
287 kappa = kappa*kappa*kappa;
296 PartitionEntropy +=
G4Log(ProbDegeneracy) + TranslationalS;
300 G4double exponent = PartitionEntropy-SCompound;
301 if (exponent > 300.0) exponent = 300.0;
310 if (A > 4) DegFactor = 1.0;
311 else if (A == 1) DegFactor = 4.0;
312 else if (A == 2) DegFactor = 3.0;
313 else if (A == 3) DegFactor = 4.0;
314 else if (A == 4) DegFactor = 1.0;
321 std::vector<G4int> FragmentsZ;
332 if (Af > 1.5 && Af < 4.5) ZMean = 0.5*Af;
333 else ZMean = Af*Z0/A0;
334 G4double ZDispersion = std::sqrt(Af * MeanT/CC);
341 while (Zf < 0 || Zf > Af);
342 FragmentsZ.push_back(Zf);
345 ZBalance = Z0 - SumZ;
348 while (std::abs(ZBalance) > 1);
349 FragmentsZ[0] += ZBalance;
G4bool operator==(const G4StatMFMicroPartition &right) const
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double GetCoulombEnergy(void)
G4double logZ(G4int Z) const
G4double GetDegeneracyFactor(G4int A)
G4double Z13(G4int Z) const
G4double A13(G4double A) const
static constexpr double MeV
static G4double GetKappaCoulomb()
G4double InvLevelDensity(G4double Af)
static G4double GetCoulomb()
G4double G4Log(G4double x)
G4StatMFChannel * ChooseZ(G4int A0, G4int Z0, G4double MeanT)
void CreateFragment(G4int A, G4int Z)
static constexpr double fermi
static G4Pow * GetInstance()
std::vector< G4int > _thePartition
static constexpr double elm_coupling
G4StatMFMicroPartition & operator=(const G4StatMFMicroPartition &right)
std::vector< G4double > _theCoulombFreeEnergy
G4double CalcPartitionTemperature(G4double U, G4double FreeInternalE0)
G4double GetPartitionEnergy(G4double T)
double A(double temperature)
ThreeVector shoot(const G4int Ap, const G4int Af)
static G4double Beta(G4double T)
G4double CalcPartitionProbability(G4double U, G4double FreeInternalE0, G4double SCompound)
G4GLOB_DLL std::ostream G4cout
G4bool operator!=(const G4StatMFMicroPartition &right) const
static constexpr double pi
void CoulombFreeEnergy(G4int anA)
static const G4double eps
static G4double DBetaDT(G4double T)
G4double Z23(G4int Z) const
static G4double GetGamma0()