91   if(t0 >= tm) 
return 0.0;
 
   94                            Shell(Z, shell)->BindingEnergy();
 
   96   if(e <= bindingEnergy) 
return 0.0;
 
  103   if(
verbose > 1 || (Z==4 && e>= 1.0 && e<= 0.0)) {
 
  104     G4cout << 
"G4RDeIonisationSpectrum::Probability: Z= " << Z
 
  105            << 
"; shell= " << shell
 
  106            << 
"; E(keV)= " << e/
keV 
  107            << 
"; Eb(keV)= " << bindingEnergy/
keV 
  124   if(p[3] > 0.5) p[3] = 0.5;
 
  126   G4double g = energy/electron_mass_c2 + 1.;
 
  127   p.push_back((2.0*g - 1.0)/(g*g));
 
  131   if(e >= 1. && e <= 0. && Z == 4) p.push_back(0.0);
 
  138   if(
verbose > 1 || (Z==4 && e>= 1.0 && e<= 0.0)) {
 
  139     G4cout << 
"tcut= " << tMin 
 
  140            << 
"; tMax= " << tMax 
 
  156   if(nor > 0.0) val /= nor;
 
  177   if(t0 >= tm) 
return 0.0;
 
  180                            Shell(Z, shell)->BindingEnergy();
 
  182   if(e <= bindingEnergy) 
return 0.0;
 
  190     G4cout << 
"G4RDeIonisationSpectrum::AverageEnergy: Z= " << Z
 
  191            << 
"; shell= " << shell
 
  192            << 
"; E(keV)= " << e/
keV 
  193            << 
"; bindingE(keV)= " << bindingEnergy/
keV 
  209   if(p[3] > 0.5) p[3] = 0.5;
 
  211   G4double g = energy/electron_mass_c2 + 1.;
 
  212   p.push_back((2.0*g - 1.0)/(g*g));
 
  223            << 
"; tMax(MeV)= " << tMax/
MeV  
  238   if(nor > 0.0) val /= nor;
 
  256   if(t0 > tm) 
return tDelta;
 
  259                            Shell(Z, shell)->BindingEnergy();
 
  261   if(e <= bindingEnergy) 
return 0.0;
 
  267   if(x1 >= x2) 
return tDelta;
 
  270     G4cout << 
"G4RDeIonisationSpectrum::SampleEnergy: Z= " << Z
 
  271            << 
"; shell= " << shell
 
  272            << 
"; E(keV)= " << e/
keV 
  287   if(p[3] > 0.5) p[3] = 0.5;
 
  289   G4double g = energy/electron_mass_c2 + 1.;
 
  290   p.push_back((2.0*g - 1.0)/(g*g));
 
  304   G4double amaj, fun, q, x, z1, z2, dx, dx1;
 
  312       if(p[j] > amaj) amaj = p[j];
 
  324       dx = (p[2] - p[1]) / 3.0;
 
  325       dx1= std::exp(std::log(p[3]/p[2]) / 16.0);
 
  326       for (i=4; i<iMax-1; i++) {
 
  330         } 
else if(iMax-2 == i) {
 
  336         if(x >= z1 && x <= z2) 
break;
 
  339       fun = p[i] + (x - z1) * (p[i+1] - p[i])/(z2 - z1);
 
  342           G4cout << 
"WARNING in G4RDeIonisationSpectrum::SampleEnergy:"  
  343                  << 
" Majoranta " << amaj 
 
  345                  << 
" in the first aria at x= " << x
 
  367           G4cout << 
"WARNING in G4RDeIonisationSpectrum::SampleEnergy:"  
  368                  << 
" Majoranta " << amaj 
 
  370                  << 
" in the second aria at x= " << x
 
  386            << 
"; tMax(MeV)= " << tMax/
MeV  
  392            << 
"; be= " << bindingEnergy 
 
  394            << 
"; tDelta= " << tDelta 
 
  409   if(xMin >= xMax) 
return sum;
 
  411   G4double x1, x2, xs1, xs2, y1, y2, ys1, ys2, q;
 
  420     G4double dx1= std::exp(std::log(p[3]/p[2]) / 16.0);
 
  422     for (
size_t i=0; i<19; i++) {
 
  437       } 
else if (xMin < x2) {
 
  447             ys1 += (xs1 - x1)*(y2 - y1)/(x2 - x1);
 
  451             ys2 += (xs2 - x2)*(y1 - y2)/(x1 - x2);
 
  454             q = (ys1*xs2 - ys2*xs1)/(xs1*xs2) 
 
  455               +  std::log(xs2/xs1)*(ys2 - ys1)/(xs2 - xs1);
 
  457             if(p.size() == 26) 
G4cout << 
"i= " << i << 
"  q= " << q << 
" sum= " << sum << 
G4endl;
 
  469   if(x1 >= xMax) 
return sum;
 
  474   q = (xs1 - xs2)*(1.0 - p[0]) 
 
  475        - p[
iMax]*std::log(x2/x1) 
 
  476        + (1. - p[
iMax])*(x2 - x1)
 
  477        + 1./(1. - x2) - 1./(1. - x1) 
 
  478        + p[
iMax]*std::log((1. - x2)/(1. - x1))
 
  479        + 0.25*p[0]*(xs1*xs1 - xs2*xs2);
 
  481   if(p.size() == 26) 
G4cout << 
"param...  q= " << q <<  
" sum= " << sum << 
G4endl;
 
  492   if(xMin >= xMax) 
return sum;
 
  494   G4double x1, x2, xs1, xs2, y1, y2, ys1, ys2;
 
  503     G4double dx1= std::exp(std::log(p[3]/p[2]) / 16.0);
 
  505     for (
size_t i=0; i<19; i++) {
 
  519       } 
else if (xMin < x2) {
 
  529             ys1 += (xs1 - x1)*(y2 - y1)/(x2 - x1);
 
  533             ys2 += (xs2 - x2)*(y1 - y2)/(x1 - x2);
 
  536             sum += std::log(xs2/xs1)*(ys1*xs2 - ys2*xs1)/(xs2 - xs1) 
 
  550   if(x1 >= xMax) 
return sum;
 
  556   sum  += std::log(x2/x1)*(1.0 - p[0]) 
 
  557         + 0.5*(1. - p[
iMax])*(x2*x2 - x1*x1)
 
  558         + 1./(1. - x2) - 1./(1. - x1) 
 
  559         + (1. + p[iMax])*std::log((1. - x2)/(1. - x1))
 
  560         + 0.5*p[0]*(xs1 - xs2);
 
  575   return 0.5 * kineticEnergy;
 
G4RDeIonisationSpectrum()
 
~G4RDeIonisationSpectrum()
 
G4double IntSpectrum(G4double xMin, G4double xMax, const G4DataVector &p) const 
 
static G4RDAtomicTransitionManager * Instance()
 
G4double SampleEnergy(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell, const G4ParticleDefinition *pd=0) const 
 
G4GLOB_DLL std::ostream G4cout
 
static const G4double factor
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4double energy(const ThreeVector &p, const G4double m)
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
G4double MaxEnergyOfSecondaries(G4double kineticEnergy, G4int Z=0, const G4ParticleDefinition *pd=0) const 
 
G4RDeIonisationParameters * theParam
 
G4double Parameter(G4int Z, G4int shellIndex, G4int parameterIndex, G4double e) const 
 
G4double AverageValue(G4double xMin, G4double xMax, const G4DataVector &p) const 
 
G4double Probability(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell, const G4ParticleDefinition *pd=0) const 
 
G4double bindingEnergy(G4int A, G4int Z)
 
G4double Function(G4double x, const G4DataVector &p) const 
 
G4double AverageEnergy(G4int Z, G4double tMin, G4double tMax, G4double kineticEnergy, G4int shell, const G4ParticleDefinition *pd=0) const