Example #1
0
void Atomic_Factors (int Z, float energy, float q, float debye_factor, 
                                  float* f0, float* f_prime, float* f_prime2) {

  *f0       = FF_Rayl(Z, q) * debye_factor; 
  *f_prime  = Fi(Z, energy) * debye_factor;
  *f_prime2 = -Fii(Z, energy) * debye_factor;

}
Example #2
0
void Atomic_Factors (int Z, double energy, double q, double debye_factor, 
                                  double* f0, double* f_prime, double* f_prime2) {

  *f0       = FF_Rayl(Z, q) * debye_factor; 
  *f_prime  = Fi(Z, energy) * debye_factor;
  *f_prime2 = -Fii(Z, energy) * debye_factor;

}
Example #3
0
/*////////////////////////////////////////////////////////////////////
//                                                                  //
//  Differential Rayleigh scattering cross section (cm2/g/sterad)   //
//                                                                  //
//          Z : atomic number                                       //
//          E : Energy (keV)                                        //
//          theta : scattering polar angle (rad)                    //
//                                                                  //
/////////////////////////////////////////////////////////////////// */
double  DCS_Rayl(int Z, double E, double theta)
{ 
  double F, q ;                                                      
                                                        
  if (Z<1 || Z>ZMAX) {
    ErrorExit("Z out of range in function DCS_Rayl");
    return 0;
  }

  if (E <= 0.) {
    ErrorExit("Energy <=0 in function DCS_Rayl");
    return 0;
  }

  q = MomentTransf(E, theta);
  F = FF_Rayl(Z, q);
  return  AVOGNUM / AtomicWeight_arr[Z] * F*F * DCS_Thoms(theta);
}
Example #4
0
/*////////////////////////////////////////////////////////////////////
//                                                                  //
//         Differential Rayleigh scattering cross section           // 
//                for polarized beam (cm2/g/sterad)                 //
//                                                                  //
//          Z : atomic number                                       //
//          E : Energy (keV)                                        //
//          theta : scattering polar angle (rad)                    //
//          phi : scattering azimuthal angle (rad)                  //
//                                                                  //
/////////////////////////////////////////////////////////////////// */
float  DCSP_Rayl(int Z, float E, float theta, float phi)
{
  float F, q;                                                      
                                                        
  if (Z<1 || Z>ZMAX) {
    ErrorExit("Z out of range in function DCSP_Rayl");
    return 0;
  }

  if (E <= 0.) {
    ErrorExit("Energy <=0 in function DCSP_Rayl");
    return 0;
  }

  q = MomentTransf(E , theta);
  F = FF_Rayl(Z, q);
  return  AVOGNUM / AtomicWeight(Z) * F*F * DCSP_Thoms(theta, phi);
}