 ATOMIC WEIGHTS:
 double AtomicWeight(int Z)

 ELEMENT DENSITY:
 double ElementDensity(int Z)

 CROSS SECTIONS:
    (cm2/g)
 double CS_Total(int Z, double E)
 double CS_Photo(int Z, double E)
 double CS_Rayl(int Z, double E)
 double CS_Compt(int Z, double E) 
 double CS_FluorLine(int Z, int line, double E)
    (barn/atom)
 double CS_KN(double E)
 double CS_Energy(int Z, double E)
 double CSb_Total(int Z, double E)
 double CSb_Photo(int Z, double E)
 double CSb_Rayl(int Z, double E)
 double CSb_Compt(int Z, double E) 
 double CSb_FluorLine(int Z, int line, double E)

 DIFFERENTIAL UNPOLARIZED CROSS SECTIONS:
    (cm2/g/sterad)
 double DCS_Rayl(int Z, double E, double theta)
 double DCS_Compt(int Z, double E, double theta)
    (barns/atom/sterad)
 double DCS_Thoms(double theta)
 double DCS_KN(double E, double theta)
 double DCSb_Rayl(int Z, double E, double theta)
 double DCSb_Compt(int Z, double E, double theta)

 DIFFERENTIAL POLARIZED CROSS SECTIONS:
    (cm2/g/sterad)
 double DCSP_Rayl(int Z, double E, double theta, double phi)
 double DCSP_Compt(int Z, double E, double theta, double phi)
    (barns/atom/sterad)
 double DCSP_Thoms(double theta, double phi)
 double DCSP_KN(double E, double theta, double phi)
 double DCSPb_Rayl(int Z, double E, double theta, double phi)
 double DCSPb_Compt(int Z, double E, double theta, double phi)

 FORM FACTORS, SCATTERING FUNCTIONS, MOMENTUM TRANSFER
 double FF_Rayl(int Z, double q)
 double SF_Compt(int Z, double q)
 double MomentTransf(double E, double theta)

 COMPTON ENERGY:
 double ComptonEnergy(double E0, double theta)

 ABSORPTION EDGES AND TRANSITIONS DATA:
 double EdgeEnergy(int Z, int shell)
 double LineEnergy(int Z, int line)
 double FluorYield(int Z, int shell)
 double JumpFactor(int Z, int shell)
 double RadRate(int Z, int line)
 double CosKronTransProb(int Z, int trans)

 ANOMALOUS SCATTERING FACTORs
 double Fi(int Z, double E)
 double Fii(int Z, double E)

 KISSEL PHOTOELECTRIC CROSS SECTIONS
 double CS_Photo_Total(int Z, double E)
 double CSb_Photo_Total(int Z, double E)
 double CS_Photo_Partial(int Z, int shell, double E)
 double CSb_Photo_Partial(int Z, int shell, double E)

 XRF CROSS SECTIONS USING KISSEL PARTIAL PHOTOELECTRIC CROSS SECTIONS
 double CS_FluorLine_Kissel(int Z, int line, double E)
 double CSb_FluorLine_Kissel(int Z, int line, double E)
 double CS_FluorLine_Kissel_Cascade(int Z, int line, double E)
 double CSb_FluorLine_Kissel_Cascade(int Z, int line, double E)
 double CS_FluorLine_Kissel_Nonradiative_Cascade(int Z, int line, double E)
 double CSb_FluorLine_Kissel_Nonradiative_Cascade(int Z, int line, double E)
 double CS_FluorLine_Kissel_Radiative_Cascade(int Z, int line, double E)
 double CSb_FluorLine_Kissel_Radiative_Cascade(int Z, int line, double E)
 double CS_FluorLine_Kissel_no_Cascade(int Z, int line, double E)
 double CSb_FluorLine_Kissel_no_Cascade(int Z, int line, double E)


 TOTAL CROSS SECTIONS (PHOTOIONIZATION+RAYLEIGH+COMPTON) USING KISSEL TOTAL
 PHOTOELECTRIC CROSS SECTIONS
 double CS_Total_Kissel(int Z, double E)
 double CSb_Total_Kissel(int Z, double E)

 ELECTRONIC CONFIGURATION
 double ElectronConfig(int Z, int shell)

 CROSS SECTION FUNCTIONS USING THE COMPOUND PARSER
 double CS_Total_CP(const char compound[], double E)
 double CS_Photo_CP(const char compound[], double E)
 double CS_Rayl_CP(const char compound[], double E)
 double CS_Compt_CP(const char compound[], double E) 
 double CS_Energy_CP(const char compound[], double E) 
 double CSb_Total_CP(const char compound[], double E)
 double CSb_Photo_CP(const char compound[], double E)
 double CSb_Rayl_CP(const char compound[], double E)
 double CSb_Compt_CP(const char compound[], double E) 
 double DCS_Rayl_CP(const char compound[], double E, double theta)
 double DCS_Compt_CP(const char compound[], double E, double theta)
 double DCSb_Rayl_CP(const char compound[], double E, double theta)
 double DCSb_Compt_CP(const char compound[], double E, double theta)
 double DCSP_Rayl_CP(const char compound[], double E, double theta, double phi)
 double DCSP_Compt_CP(const char compound[], double E, double theta, double phi)
 double DCSPb_Rayl_CP(const char compound[], double E, double theta, double phi)
 double DCSPb_Compt_CP(const char compound[], double E, double theta, double phi)
 double CS_Photo_Total_CP(const char compound[], double E)
 double CSb_Photo_Total_CP(const char compound[], double E)
 double CS_Total_Kissel_CP(const char compound[], double E) 
 double CSb_Total_Kissel_CP(const char compound[], double E) 

 REFRACTIVE INDICES FUNCTIONS
 double Refractive_Index_Re(const char compound[], double E, double density)
 double Refractive_Index_Im(const char compound[], double E, double density)
 xrlComplex Refractive_Index(const char compound[], double E, double density)

 COMPTON PROFILES
 double ComptonProfile(int Z, double pz)
 double ComptonProfile_Partial(int Z, int shell, double pz)

 ATOMIC LEVEL WIDTHS
 double AtomicLevelWidth(int Z, int shell)

 NONRADIATIVE RATE
 double AugerRate(int Z, int auger_trans)
 double AugerYield(int Z, int shell)

 CRYSTAL DIFFRACTION
 void Crystal_ArrayInit (Crystal_Array* c_array, int n_crystal_alloc)
 void Crystal_ArrayFree (Crystal_Array* c_array)
 Crystal_Struct* Crystal_MakeCopy (Crystal_Struct* crystal)
 void Crystal_Free (Crystal_Struct* crystal)
 Crystal_Struct* Crystal_GetCrystal(const char* material, Crystal_Array* c_array)
 double Bragg_angle (Crystal_Struct* crystal, double energy, int i_miller, int j_miller, int k_miller)
 double Q_scattering_amplitude(Crystal_Struct* crystal, double energy,
                                     int i_miller, int j_miller, int k_miller, double rel_angle)
 void Atomic_Factors (int Z, double energy, double q, double debye_factor,
 				     double* f0, double* f_primep, double* f_prime2)
 xrlComplex Crystal_F_H_StructureFactor (Crystal_Struct* crystal, double energy,
                       int i_miller, int j_miller, int k_miller, double debye_factor, double rel_angle)
 xrlComplex Crystal_F_H_StructureFactor_Partial (Crystal_Struct* crystal, double energy,
                       int i_miller, int j_miller, int k_miller, double debye_factor, double rel_angle,
		                             int f0_flag, int f_prime_flag, int f_prime2_flag)
 double Crystal_UnitCellVolume (Crystal_Struct* crystal)
 double Crystal_dSpacing (Crystal_Struct* crystal, int i_miller, int j_miller, int k_miller)
 int Crystal_AddCrystal (Crystal_Struct* crystal, Crystal_Array* c_array)
 int Crystal_ReadFile (const char* file_name, Crystal_Array* c_array)
 char **Crystal_GetCrystalsList(Crystal_Array *c_array, int *nCrystals)

 COMPOUND PARSER
 struct compoundData {
        int nElements;
        double nAtomsAll;
        int *Elements;
        double *massFractions;
 }
 struct compoundData *CompoundParser(const char compoundString[])
 char * AtomicNumberToSymbol(int Z)
 int SymbolToAtomicNumber(const char *symbol)
 void xrlFree(void *)
 void FreeCompoundData(struct compoundData *)

 NIST COMPOUND DATA
 struct compoundDataNIST {
        char *name;
        int nElements;
        int *Elements;
        double *massFractions;
        double density;
 }
 struct compoundDataNIST *GetCompoundDataNISTByName(const char compoundString[])
 struct compoundDataNIST *GetCompoundDataNISTByIndex(int compoundIndex)
 char **GetCompoundDataNISTList(int *nCompounds)
 void FreeCompoundDataNIST(struct compoundDataNIST *compoundData)

 RADIONUCLIDES
 struct radioNuclideData{
	char *name;
	int Z;
	int A;
	int N;
	int Z_xray;
	int nXrays;
	int *XrayLines;
	double *XrayIntensities;
	int nGammas;
	double *GammaEnergies;
	double *GammaIntensities;
 }
 struct radioNuclideData *GetRadioNuclideDataByName(const char radioNuclideString[]);
 struct radioNuclideData *GetRadioNuclideDataByIndex(int radioNuclideIndex);
 char **GetRadioNuclideDataList(int *nRadioNuclides);
 void FreeRadioNuclideData(struct radioNuclideData *radioNuclideData);

