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; }
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; }
/*//////////////////////////////////////////////////////////////////// // // // 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); }
/*//////////////////////////////////////////////////////////////////// // // // 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); }