35#define INCLXX_IN_GEANT4_MODE 1
57 const G4int nuclideID = 1000*Z + A;
58 const std::map<G4int,NuclearDensity*>::const_iterator mapEntry =
nuclearDensityCache.find(nuclideID);
61 if(!rpCorrelationTable)
67 return mapEntry->second;
72 const G4int nuclideID = 1000*Z + A;
73 const std::map<G4int,InverseInterpolationTable*>::const_iterator mapEntry =
rpCorrelationTableCache.find(nuclideID);
82 }
else if(A <= 19 && A > 6) {
87 }
else if(A <= 6 && A > 1) {
92 ERROR(
"No r-p correlation function for target A = "
93 << A <<
" Z = " << Z << std::endl);
102 normalisation(1./theFunction->integrate(xMin,xMax))
106 return Math::pow13(normalisation * theFunction->integrate(xMin,x));
111 } *theInverseCDFOneThird =
new InverseCDFOneThird(rpCorrelationFunction);
114 delete theInverseCDFOneThird;
115 delete rpCorrelationFunction;
116 DEBUG(
"Creating r-p correlation function for A=" << A <<
", Z=" << Z <<
":"
117 << std::endl << theTable->
print() << std::endl);
122 return mapEntry->second;
127 const G4int nuclideID = 1000*Z + A;
128 const std::map<G4int,InverseInterpolationTable*>::const_iterator mapEntry =
rCDFTableCache.find(nuclideID);
137 }
else if(A <= 19 && A > 6) {
142 }
else if(A <= 6 && A > 2) {
146 }
else if(A == 2 && Z == 1) {
149 ERROR(
"No nuclear density function for target A = "
150 << A <<
" Z = " << Z << std::endl);
155 delete rDensityFunction;
156 DEBUG(
"Creating inverse position CDF for A=" << A <<
", Z=" << Z <<
":" <<
157 std::endl << theTable->
print() << std::endl);
162 return mapEntry->second;
167 const G4int nuclideID = 1000*Z + A;
168 const std::map<G4int,InverseInterpolationTable*>::const_iterator mapEntry =
pCDFTableCache.find(nuclideID);
173 }
else if(A <= 19 && A > 2) {
176 }
else if(A == 2 && Z == 1) {
179 ERROR(
"No nuclear density function for target A = "
180 << A <<
" Z = " << Z << std::endl);
185 delete pDensityFunction;
186 DEBUG(
"Creating inverse momentum CDF for A=" << A <<
", Z=" << Z <<
":" <<
187 std::endl << theTable->
print() << std::endl);
192 return mapEntry->second;
Class for Gaussian density.
NDF* class for the deuteron density according to the HardSphere potential.
Class for modified harmonic oscillator density.
NDF* class for the deuteron density according to the Paris potential.
Class for Woods-Saxon density.
virtual G4double getXMaximum() const
Return the maximum allowed value of the independent variable.
virtual G4double getXMinimum() const
Return the minimum allowed value of the independent variable.
InverseInterpolationTable * inverseCDFTable(const G4int nNodes=60) const
Return a pointer to the inverse of the CDF of this function.
Class for interpolating the inverse of a 1-dimensional function.
std::string print() const
static std::map< G4int, InverseInterpolationTable * > rCDFTableCache
static std::map< G4int, NuclearDensity * > nuclearDensityCache
static NuclearDensity * createDensity(const G4int A, const G4int Z)
static InverseInterpolationTable * createPCDFTable(const G4int A, const G4int Z)
static ParticleSampler * createParticleSampler(const G4int A, const G4int Z)
static std::map< G4int, InverseInterpolationTable * > rpCorrelationTableCache
static std::map< G4int, InverseInterpolationTable * > pCDFTableCache
static InverseInterpolationTable * createRCDFTable(const G4int A, const G4int Z)
static InverseInterpolationTable * createRPCorrelationTable(const G4int A, const G4int Z)
static G4double getMomentumRMS(const G4int A, const G4int Z)
Return the RMS of the momentum distribution (light clusters)
static G4double getRadiusParameter(const G4int A, const G4int Z)
static G4double getMaximumNuclearRadius(const G4int A, const G4int Z)
static G4double getSurfaceDiffuseness(const G4int A, const G4int Z)
const G4double oneOverSqrtThree
const G4double Pf
Fermi momentum [MeV/c].