Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Functions
G4INCL::DeuteronDensity Namespace Reference

Static class for the deuteron density. More...

Functions

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 densityP (const G4double p)
 PDF for a nucleon in p space. More...
 
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

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 116 of file G4INCLDeuteronDensity.cc.

References wavefunctionP().

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

116  {
117  const G4double sWave = wavefunctionP(0, p);
118  const G4double dWave = wavefunctionP(2, p);
119  return p*p*(sWave*sWave + dWave*dWave);
120  }
const char * p
Definition: xmltok.h:285
G4double wavefunctionP(const G4int l, const G4double p)
double G4double
Definition: G4Types.hh:76
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 102 of file G4INCLDeuteronDensity.cc.

References wavefunctionR().

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

102  {
103  const G4double sWave = wavefunctionR(0, r);
104  const G4double dWave = wavefunctionR(2, r);
105  return r*r*(sWave*sWave + dWave*dWave);
106  }
G4double wavefunctionR(const G4int l, const G4double r)
double G4double
Definition: G4Types.hh:76
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 108 of file G4INCLDeuteronDensity.cc.

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

108  {
109  const G4double sWave = wavefunctionR(0, r);
110  const G4double dWave = wavefunctionR(2, r);
111  const G4double sWaveDeriv = derivWavefunctionR(0, r);
112  const G4double dWaveDeriv = derivWavefunctionR(2, r);
113  return (sWave*sWaveDeriv + dWave*dWaveDeriv) / Math::twoPi;
114  }
G4double derivWavefunctionR(const G4int l, const G4double r)
G4double wavefunctionR(const G4int l, const G4double r)
const G4double twoPi
double G4double
Definition: G4Types.hh:76
G4double G4INCL::DeuteronDensity::derivWavefunctionR ( const G4int  l,
const G4double  r 
)

Definition at line 142 of file G4INCLDeuteronDensity.cc.

References G4INCL::Math::max().

Referenced by derivDensityR().

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

Definition at line 162 of file G4INCLDeuteronDensity.cc.

References G4INCL::PhysicalConstants::hc.

Referenced by densityP().

162  {
163 // assert(l==0 || l==2); // only s- and d-waves in a deuteron
164  const G4double q = theQ / PhysicalConstants::hc;
165  const G4double q2 = q*q;
166  G4double result=0.;
167  G4double fmq, alPlusI;
168  for(G4int i=0; i<coeffTableSize; ++i) {
169  alPlusI = al+i;
170  fmq = q2 + alPlusI*alPlusI;
171  if(l==0) { // s-wave
172  result += coeff1[i] / fmq;
173  } else { // d-wave
174  result += coeff2[i] / fmq;
175  }
176  }
177 
178  result *= normalisationP;
179  return result;
180  }
const G4double hc
[MeV*fm]
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
G4double G4INCL::DeuteronDensity::wavefunctionR ( const G4int  l,
const G4double  r 
)

Definition at line 122 of file G4INCLDeuteronDensity.cc.

References G4INCL::Math::max().

Referenced by densityR(), and derivDensityR().

122  {
123 // assert(l==0 || l==2); // only s- and d-waves in a deuteron
124  const G4double r = 2. * std::max(theR, 1.e-4);
125 
126  G4double result = 0.;
127  G4double fmr;
128 
129  for(G4int i=0; i<coeffTableSize; ++i) {
130  fmr = r * (al+i);
131  if(l==0) { // s-wave
132  result += coeff1[i] * std::exp(-fmr);
133  } else { // d-wave
134  result += coeff2[i] * std::exp(-fmr) * (1.+3./fmr+3./(fmr*fmr));
135  }
136  }
137 
138  result *= normalisationR/r;
139  return result;
140  }
int G4int
Definition: G4Types.hh:78
T max(const T t1, const T t2)
brief Return the largest of the two arguments
double G4double
Definition: G4Types.hh:76