Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCL::DeuteronDensity Namespace Reference

Static class for the deuteron density. More...

Functions

G4double densityR (const G4double r)
 PDF for a nucleon in r space.
 
G4double derivDensityR (const G4double r)
 First derivative of the r-space density function.
 
G4double densityP (const G4double p)
 PDF for a nucleon in p space.
 
G4double wavefunctionR (const G4int l, const G4double r)
 
G4double wavefunctionP (const G4int l, const G4double p)
 
G4double derivWavefunctionR (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)

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)

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)

◆ 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

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 }

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 }

Referenced by densityR(), and derivDensityR().