Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 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  }
const char * p
Definition: xmltok.h:285
G4double wavefunctionP(const G4int l, const G4double p)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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)
G4double wavefunctionR(const G4int l, const G4double r)
const G4double twoPi
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

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  }
G4double G4ParticleHPJENDLHEData::G4double result
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

Here is the call graph for this function:

Here is the caller graph for this function:

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  }
G4double G4ParticleHPJENDLHEData::G4double result
const G4double hc
[MeV*fm]
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76

Here is the caller graph for this function:

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  }
G4double G4ParticleHPJENDLHEData::G4double result
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

Here is the call graph for this function:

Here is the caller graph for this function: