Geant4-11
Namespaces | Functions
G4INCL::DeuteronDensity Namespace Reference

Static class for the deuteron density. More...

Namespaces

namespace  anonymous_namespace{G4INCLDeuteronDensity.cc}
 

Functions

G4double densityP (const G4double p)
 PDF for a nucleon in p space. More...
 
G4double densityR (const G4double r)
 PDF for a nucleon in r space. More...
 
G4double derivDensityR (const G4double r)
 First derivative of the r-space density function. More...
 
G4double derivWavefunctionR (const G4int l, const G4double r)
 
G4double wavefunctionP (const G4int l, const G4double p)
 
G4double wavefunctionR (const G4int l, const G4double r)
 

Detailed Description

Static class for the deuteron density.

Function Documentation

◆ densityP()

G4double G4INCL::DeuteronDensity::densityP ( const G4double  p)

PDF for a nucleon in p space.

The distribution is normalised to 1.

Parameters
pnucleon momentum [MeV/c]
Returns
4 * pi * p^2 * d|psi|^2/dp

Definition at line 117 of file G4INCLDeuteronDensity.cc.

117 {
118 const G4double sWave = wavefunctionP(0, p);
119 const G4double dWave = wavefunctionP(2, p);
120 return p*p*(sWave*sWave + dWave*dWave);
121 }
double G4double
Definition: G4Types.hh:83
G4double wavefunctionP(const G4int l, const G4double p)

References wavefunctionP().

Referenced by G4INCL::NuclearDensityFunctions::ParisP::operator()().

◆ densityR()

G4double G4INCL::DeuteronDensity::densityR ( const G4double  r)

PDF for a nucleon in r space.

The distribution is normalised to 1.

Parameters
rdistance from the deuteron centre [fm]
Returns
4 * pi * r^2 * |psi|^2

Definition at line 103 of file G4INCLDeuteronDensity.cc.

103 {
104 const G4double sWave = wavefunctionR(0, r);
105 const G4double dWave = wavefunctionR(2, r);
106 return r*r*(sWave*sWave + dWave*dWave);
107 }
G4double wavefunctionR(const G4int l, const G4double r)

References wavefunctionR().

Referenced by G4INCL::NuclearDensityFunctions::ParisR::operator()().

◆ derivDensityR()

G4double G4INCL::DeuteronDensity::derivDensityR ( const G4double  r)

First derivative of the r-space density function.

Parameters
rdistance from the deuteron centre [fm]
Returns
d|psi|^2/dr

Definition at line 109 of file G4INCLDeuteronDensity.cc.

109 {
110 const G4double sWave = wavefunctionR(0, r);
111 const G4double dWave = wavefunctionR(2, r);
112 const G4double sWaveDeriv = derivWavefunctionR(0, r);
113 const G4double dWaveDeriv = derivWavefunctionR(2, r);
114 return (sWave*sWaveDeriv + dWave*dWaveDeriv) / Math::twoPi;
115 }
G4double derivWavefunctionR(const G4int l, const G4double r)
const G4double twoPi

References derivWavefunctionR(), G4INCL::Math::twoPi, and wavefunctionR().

◆ derivWavefunctionR()

G4double G4INCL::DeuteronDensity::derivWavefunctionR ( const G4int  l,
const G4double  r 
)

Definition at line 143 of file G4INCLDeuteronDensity.cc.

143 {
144// assert(l==0 || l==2); // only s- and d-waves in a deuteron
145 const G4double r = 2. * std::max(theR, 1.e-4);
146
147 G4double result = 0.;
148 G4double fmr;
149
150 for(G4int i=0; i<coeffTableSize; ++i) {
151 fmr = r * (al+i);
152 if(l==0) { // s-wave
153 result += coeff1[i] * std::exp(-fmr) * (fmr + 1.);
154 } else { // d-wave
155 result += coeff2[i] * std::exp(-fmr) * (fmr + 4. + 9./fmr + 9./(fmr*fmr));
156 }
157 }
158
159 result *= -normalisationR/(r*r);
160 return result;
161 }
int G4int
Definition: G4Types.hh:85
const G4double coeff1[coeffTableSize]
Coefficients for the deuteron wave function.
const G4double coeff2[coeffTableSize]
Coefficients for the deuteron wave function.
const G4double normalisationR
Normalisation coefficient for the r-space deuteron wave function.
const G4double al
Mysterious coefficient that appears in the wavefunctions.
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::al, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff1, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff2, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeffTableSize, G4INCL::Math::max(), and G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::normalisationR.

Referenced by derivDensityR().

◆ wavefunctionP()

G4double G4INCL::DeuteronDensity::wavefunctionP ( const G4int  l,
const G4double  p 
)

Definition at line 163 of file G4INCLDeuteronDensity.cc.

163 {
164// assert(l==0 || l==2); // only s- and d-waves in a deuteron
165 const G4double q = theQ / PhysicalConstants::hc;
166 const G4double q2 = q*q;
167 G4double result=0.;
168 G4double fmq, alPlusI;
169 for(G4int i=0; i<coeffTableSize; ++i) {
170 alPlusI = al+i;
171 fmq = q2 + alPlusI*alPlusI;
172 if(l==0) { // s-wave
173 result += coeff1[i] / fmq;
174 } else { // d-wave
175 result += coeff2[i] / fmq;
176 }
177 }
178
179 result *= normalisationP;
180 return result;
181 }
const G4double normalisationP
Normalisation coefficient for the p-space deuteron wave function.
const G4double hc
[MeV*fm]

References G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::al, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff1, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff2, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeffTableSize, G4INCL::PhysicalConstants::hc, and G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::normalisationP.

Referenced by densityP().

◆ wavefunctionR()

G4double G4INCL::DeuteronDensity::wavefunctionR ( const G4int  l,
const G4double  r 
)

Definition at line 123 of file G4INCLDeuteronDensity.cc.

123 {
124// assert(l==0 || l==2); // only s- and d-waves in a deuteron
125 const G4double r = 2. * std::max(theR, 1.e-4);
126
127 G4double result = 0.;
128 G4double fmr;
129
130 for(G4int i=0; i<coeffTableSize; ++i) {
131 fmr = r * (al+i);
132 if(l==0) { // s-wave
133 result += coeff1[i] * std::exp(-fmr);
134 } else { // d-wave
135 result += coeff2[i] * std::exp(-fmr) * (1.+3./fmr+3./(fmr*fmr));
136 }
137 }
138
139 result *= normalisationR/r;
140 return result;
141 }

References G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::al, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff1, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeff2, G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::coeffTableSize, G4INCL::Math::max(), and G4INCL::DeuteronDensity::anonymous_namespace{G4INCLDeuteronDensity.cc}::normalisationR.

Referenced by densityR(), and derivDensityR().