36 using namespace G4InuclSpecialFunctions;
38 const G4double G4RegionModel::radius0 = 1.0E-15;
39 const G4double G4RegionModel::BE = 7;
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;