#include <G4NuclearFermiDensity.hh>
Inheritance diagram for G4NuclearFermiDensity:
Public Member Functions | |
G4NuclearFermiDensity (G4int anA, G4int aZ) | |
~G4NuclearFermiDensity () | |
G4double | GetRelativeDensity (const G4ThreeVector &aPosition) const |
G4double | GetRadius (const G4double maxRelativeDenisty) const |
G4double | GetDeriv (const G4ThreeVector &aPosition) const |
Definition at line 38 of file G4NuclearFermiDensity.hh.
Definition at line 32 of file G4NuclearFermiDensity.cc.
References G4INCL::Math::pi, G4VNuclearDensity::Setrho0(), and sqr().
00033 : theA(anA), a(0.545 * fermi) 00034 { 00035 const G4double r0 = 1.16 * (1. - 1.16 * std::pow(G4double(anA), -2./3.)) * fermi; 00036 theR = r0 * std::pow(anA, 1./3.); 00037 Setrho0(3./ (4.*pi * std::pow(r0,3.) * theA * (1. + sqr(a/theR)*pi2 ))); 00038 }
G4NuclearFermiDensity::~G4NuclearFermiDensity | ( | ) |
G4double G4NuclearFermiDensity::GetDeriv | ( | const G4ThreeVector & | aPosition | ) | const [inline, virtual] |
Implements G4VNuclearDensity.
Definition at line 55 of file G4NuclearFermiDensity.hh.
References G4VNuclearDensity::GetDensity(), G4VNuclearDensity::Getrho0(), and sqr().
00056 { 00057 G4double currentR=aPosition.mag(); 00058 if (currentR > 40*theR ) {return 0;} 00059 else return -std::exp((currentR-theR)/a) * sqr(GetDensity(aPosition)) / (a*Getrho0()); 00060 }
G4double G4NuclearFermiDensity::GetRadius | ( | const G4double | maxRelativeDenisty | ) | const [inline, virtual] |
Implements G4VNuclearDensity.
Definition at line 49 of file G4NuclearFermiDensity.hh.
References DBL_MAX.
00050 { 00051 return (maxRelativeDenisty>0 && maxRelativeDenisty <= 1 ) ? 00052 (theR + a*std::log((1-maxRelativeDenisty+std::exp(-1*theR/a))/maxRelativeDenisty)) : DBL_MAX; 00053 }
G4double G4NuclearFermiDensity::GetRelativeDensity | ( | const G4ThreeVector & | aPosition | ) | const [inline, virtual] |