38const G4double G4RegionModel::radius0 = 1.0E-15;
43 : massNumber(A), protonNumber(Z)
48 if(numberOfLayers==1){
53 density.push_back(rho);
60 protonFermiEnergy.push_back(GetFermiEnergy(protonDensity, protonMass));
61 neutronFermiEnergy.push_back(GetFermiEnergy(neutronDensity, neutronMass));
63 protonFermiMomentum.push_back(GetFermiMomentum(protonDensity, protonMass));
64 neutronFermiMomentum.push_back(GetFermiMomentum(neutronDensity, neutronMass));
66 G4double fermiEP = *protonFermiEnergy.begin();
67 G4double fermiEN = *neutronFermiEnergy.begin();
68 protonPotentialEnergy.push_back(-(fermiEP + BE));
69 neutronPotentialEnergy.push_back(-(fermiEN + BE));
72 if(numberOfLayers==3){
73 radius.push_back(0.1*r);
74 radius.push_back(0.2*r);
75 radius.push_back(0.9*r);
85 for(
my_iterator i=radius.begin(); i<radius.end(); i++){
86 if(r <= *i)
return *j;
95 for(
my_iterator i=radius.begin(); i<radius.end(); i++){
96 if(r <= *i)
return *j;
104 for(
my_iterator i=radius.begin(); i<radius.end(); i++){
105 if(r <= *i)
return *j;
117 for(
my_iterator i=radius.begin(); i<radius.end(); i++){
118 if(r <= *i)
return *j;
124 for(
my_iterator i=radius.begin(); i<radius.end(); i++){
125 if(r <= *i)
return *j;
129 throw G4HadronicException(__FILE__, __LINE__,
"G4RegionModel::GetMaximumNucleonMomentum - return value undefined");
136 return std::sqrt(2*aMass*GetFermiEnergy(aDensity, aMass));
142 densFactor *= densFactor;
144 return hbar_Planck*hbar_Planck/(2.0*aMass) * densFactor;
std::vector< G4double >::const_iterator my_iterator
static G4Neutron * Neutron()
G4double GetPDGMass() const
static G4Proton * Proton()
G4double GetDensity(G4double radius)
G4double GetMaximumNucleonMomentum(G4double radius, G4int nucleon)
G4RegionModel(const G4int numberOfLayers, const G4int A, const G4int Z)
G4double GetPotentialEnergy(G4double r, G4int particle)
G4double G4cbrt(G4double x)