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");
 
   70 void G4StatMFMicroPartition::CoulombFreeEnergy(
G4int anA)
 
   79   if (anA == 0 || anA == 1) 
 
   81       _theCoulombFreeEnergy.push_back(CoulombConstFactor*ZA*ZA);
 
   83   else if (anA == 2 || anA == 3 || anA == 4) 
 
   86       _theCoulombFreeEnergy.push_back(CoulombConstFactor*0.5
 
   91       _theCoulombFreeEnergy.push_back(CoulombConstFactor*ZA*ZA  
 
   96 G4double G4StatMFMicroPartition::GetCoulombEnergy(
void)
 
  105   for (
unsigned int i = 0; i < _thePartition.size(); i++) 
 
  106     CoulombEnergy += _theCoulombFreeEnergy[i] - 
elm_coupling*0.6*
 
  107       ZA*ZA*_thePartition[i]*g4calc->
Z23(_thePartition[i])/
 
  110   return CoulombEnergy;
 
  121   for (
unsigned int i = 0; i < _thePartition.size(); i++) 
 
  123       if (_thePartition[i] == 0 || _thePartition[i] == 1) 
 
  125           PartitionEnergy += _theCoulombFreeEnergy[i];
 
  127       else if (_thePartition[i] == 2) 
 
  131             + _theCoulombFreeEnergy[i];     
 
  133       else if (_thePartition[i] == 3) 
 
  137             + _theCoulombFreeEnergy[i];     
 
  139       else if (_thePartition[i] == 4) 
 
  143             + _theCoulombFreeEnergy[i] 
 
  144             + 4.*T*T/InvLevelDensity(4.);
 
  151              T*T/InvLevelDensity(_thePartition[i]))
 
  156             (1.0-2.0*theZ/theA)*(1.0-2.0*theZ/theA)*_thePartition[i] +  
 
  160             g4calc->
Z23(_thePartition[i]) +
 
  163             _theCoulombFreeEnergy[i];
 
  167   PartitionEnergy += 
elm_coupling*0.6*theZ*theZ*CoulombFactor/
 
  169     + 1.5*T*(_thePartition.size()-1);
 
  171   return PartitionEnergy;
 
  177   G4double PartitionEnergy = GetPartitionEnergy(0.0);
 
  181   if (std::fabs(U + FreeInternalE0 - PartitionEnergy) < 0.003) 
return -1.0;
 
  190   G4double Da = (U + FreeInternalE0 - GetPartitionEnergy(Ta))/U;
 
  191   G4double Db = (U + FreeInternalE0 - GetPartitionEnergy(Tb))/U;
 
  195   while (Da*Db > 0.0 && maxit < 1000) 
 
  199       Db = (U + FreeInternalE0 - GetPartitionEnergy(Tb))/U;
 
  204   for (
G4int i = 0; i < 1000; i++) 
 
  207       if (std::fabs(Ta-Tb) <= 
eps) 
return Tmid;
 
  208       G4double Dmid = (U + FreeInternalE0 - GetPartitionEnergy(Tmid))/U;
 
  209       if (std::fabs(Dmid) < 0.003) 
return Tmid;
 
  222   G4cout << 
"G4StatMFMicroPartition::CalcPartitionTemperature: I can't calculate the temperature"   
  233   G4double T = CalcPartitionTemperature(U,FreeInternalE0);
 
  234   if ( T <= 0.0) 
return _Probability = 0.0;
 
  242   for (i = 0; i < _thePartition.size() - 1; i++) 
 
  245       for (
unsigned int ii = i+1; i< _thePartition.size(); i++) 
 
  247           if (_thePartition[i] == _thePartition[ii]) f++;
 
  255   for (i = 0; i < _thePartition.size(); i++) 
 
  257       ProbDegeneracy *= GetDegeneracyFactor(_thePartition[i]);
 
  258       ProbA32 *= _thePartition[i]*std::sqrt((
G4double)_thePartition[i]);
 
  263   for (i = 0; i < _thePartition.size(); i++) 
 
  266       if (_thePartition[i] == 4) 
 
  269             2.0*T*_thePartition[i]/InvLevelDensity(_thePartition[i]);
 
  272       else if (_thePartition[i] > 4) 
 
  275             2.0*T*_thePartition[i]/InvLevelDensity(_thePartition[i])
 
  282   ThermalWaveLenght3 = ThermalWaveLenght3*ThermalWaveLenght3*ThermalWaveLenght3;
 
  287   kappa = kappa*kappa*kappa;
 
  293       (_thePartition.size()-1.0)*
G4Log(FreeVolume/ThermalWaveLenght3) +
 
  294       1.5*(_thePartition.size()-1.0) - 1.5*g4calc->
logZ(theA));
 
  296   PartitionEntropy += 
G4Log(ProbDegeneracy) + TranslationalS;
 
  297   _Entropy = PartitionEntropy;
 
  300   G4double exponent = PartitionEntropy-SCompound;
 
  301   if (exponent > 300.0) exponent = 300.0;
 
  302   return _Probability = 
G4Exp(exponent);
 
  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;
 
  328       for (
unsigned int i = 0; i < _thePartition.size(); i++) 
 
  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;
 
  352   for (
unsigned int i = 0; i < _thePartition.size(); i++)
 
static G4double GetGamma0()
 
static G4Pow * GetInstance()
 
G4bool operator!=(const G4StatMFMicroPartition &right) const 
 
ThreeVector shoot(const G4int Ap, const G4int Af)
 
static G4double GetKappaCoulomb()
 
static const G4double eps
 
G4bool operator==(const G4StatMFMicroPartition &right) const 
 
void CreateFragment(G4int A, G4int Z)
 
G4StatMFChannel * ChooseZ(G4int A0, G4int Z0, G4double MeanT)
 
G4double logZ(G4int Z) const 
 
G4GLOB_DLL std::ostream G4cout
 
G4double Z13(G4int Z) const 
 
double A(double temperature)
 
G4StatMFMicroPartition(G4int A, G4int Z)
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4double A13(G4double A) const 
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4double CalcPartitionProbability(G4double U, G4double FreeInternalE0, G4double SCompound)
 
static G4double DBetaDT(G4double T)
 
static G4double GetCoulomb()
 
G4double Z23(G4int Z) const 
 
static constexpr double MeV
 
static constexpr double pi
 
static constexpr double fermi
 
static G4double Beta(G4double T)