Xray::Absorption::Elam(3) Perl interface to the Elam tables


use Xray::Absorption;
Xray::Absorption -> load("elam");

See the documentation for Xray::Absorption for details.


This module is inherited by the Xray::Absorption module and provides access to the data contained in the 1999 Elam tables of absorption cross-sections and line and edge energies.

The data in this module, here referred to as ``The Elam Tables'', will be published real soon. The compilation of data is the work of Tim Elam ([email protected]).

The data is contained in a database file called elam.db which is generated at install time from a flat text database of the Elam data. The data is stored in a Storable archive using ``network'' ordering. This allows speedy disk and memory access along with network and platform portability.

The required "Chemistry::Elements", "Math::Spline", and "Math::Derivative" modules are available from CPAN.


K-shell fluorescence yield below Z=11 from new fits in J. H. Hubbell et. al., J. Chem. Phys. Ref. Data, Vol. 23, No. 2, 1994, pp. 339-364.

Fluorescence yields and Coster-Kronig transition rates for K and L shells Krause, J. Phys. Chem. Ref. Data, Vol. 8, No. 2, 1979, pp. 307-327. values for wK, wL2,and f23 are from Table 1. (values for light atoms in condensed matter) (note that this produces a large step in f23 values at z=30, see discussion in reference section 5.3 L2 Subshell and section 7 last paragraph)

Values of wL1 for Z=85-110 and f12 for Z=72-96 from Krause were modified as suggested by W. Jitschin, ``Progress in Measurements of L-Subshell Fluorescence, Coster-Kronig, and Auger Values'', AIP Conference Proceedings 215, X-ray and Inner-Shell Processes, Knocxville, TN, 1990. T. A. Carlson, M. O. Krause, and S. T. Manson, Eds. (American Institute of Physics, 1990).

Fluorescence yields and Coster-Kronig transition rates for M shells Eugene J. McGuire, ``Atomic M-Shell Coster-Kronig, Auger, and Radiative Rates, and Fluorescence Yields for Ca-Th'', Physical Review A, Vol. 5, No. 3, March 1972, pp. 1043-1047.

Fluorescence yields and Coster-Kronig transition rates for N shells Eugene J. McGuire, ``Atomic N-shell Coster-Kronig, Auger, and Radiative Rates and Fluorescence Yields for 38 <= Z <= 103'', Physical Review A 9, No. 5, May 1974, pp. 1840-1851. Values for Z=38 to 50 were adjusted according to instructions on page 1845, at the end of Section IV.a., and the last sentence of the conclusions.

Relative emission rates, fits to low-order polynomials, low-Z extrapolations by hand and eye data from Salem, Panossian, and Krause, Atomic Data and Nuclear Data Tables Vol. 14 No.2 August 1974, pp. 92-109. M shell data is from T. P. Schreiber and A. M. Wims, X-ray Spectrometry Vol. 11, No. 2, 1982, pp. 42-45. Small, arbitrary intensities assigned to Mgamma and Mzeta lines.

Cross sections are in cm2/gm vs energy in eV. Berger and Hubbell above 1 keV, Plechaty et. al. below.

Reference: M. J. Berger and J. H. Hubbell, XCOM: Photon Cross Sections on a Personal Computer, Publication NBSIR 87-3597, National Bureau of Standards, Gaithersburg, MD, 1987. Machine-readable data from J. H. Hubbell, personal communication, Nov. 9, 1998. The data were updated as of May 7, 1998 (XCOM Version 2.1).

Reference: Plechaty, E. F., Cullen, D. E., and Howerton,R.J, ``Tables and Graphs of Photon Interaction Cross Sections from 0.1 keV to 100 MeV Derived from the LLL Evaluated Nuclear Data Library,'' Report UCRL-50400, Vol. 6, Rev. 3, NTIS DE82-004819, Lawrence Livermore National Laboratory, Livermore, CA. (1981). Machine-readable data from D. B. Brown, Naval Research Laboratory.


The behaviour of the "get_energy" method in this module is a bit different from other modules used by "Xray::Absorption". This section describes methods which behave differently for this data resource and methods offered by this module which are not available for other resources.

   $energy = Xray::Absorption -> get_energy($elem, $edge)

This behaves similarly to the "get_energy" method of othe resources, except there are some differences regarding the syntax of specifying $edge. When using the Elam data resource, $edge can be any of K, L1-L3, M1-M5, N1-N7, O1-O7, or P1-P3. To get a fluorescence line, you may use any Siegbahn or IUPAC symbol to specify the line. See the pod in "Xray::Absorption" for details about these symbols. You may also specify a ``generic'' Siegbahn symbol, such as Kalpha. The energy that is returned depends on the value of an internal variable which may be set using the "line_toggle" method. If the toggle is set to ``brightest'', the energy of the brightest line of the class is returned. In the case of ``Kalpha'', the energy or the Kalpha1 line is returned. If the toggle is set to ``weighted'' then the intestity weighted average energy of all lines of the class is returned. ``weighted'' is the default.

Toggle the method of computing a generic fluorescence line between ``weighted'' and ``brightest''. This determines the response to a use of "get_energy" like this:

  $energy = Xray::Absorption -> line_toggle("brightest");
  $energy = Xray::Absorption -> get_energy("cu", "kalpha");
  $energy = Xray::Absorption -> line_toggle("wieghted");
  $energy = Xray::Absorption -> get_energy("cu", "kalpha");

When ``weighted'' is selected, this returns the intensity weighted energy of the various Kalpha lines. When ``brightest'' is chosen, this returns the energy of the Kalpha1 line because that is the brightest Kalpha line. The default is ``weighted''. Case does not matter for the argument, but spelling does. If the argument is not spelled correctly then the calculation method is not toggled.

Return the fluorescence yield for an atomic symbol and edge

  $fyield = Xray::Absorption -> fluor_yield("cu", "k");

The value returned is the probability of an fluorescent x-ray being emitted for an absorption event. Data comes from M. O. Krause, J. Phys. Chem. Ref. Data 8, 307 (1979) Returns -1 for non-interpretable input

Return edge jump ratio for an atomic symbol and edge

  $jump = Xray::Absorption -> edge_jump("cu", "k");

The value returned is the ratio of the above-edge absorption coefficient to the below-edge coefficient


   $intensity = Xray::Absorption -> get_intesity($elem, $symbol)

Get the relative amount of the line specified by $symbol for the element $elem. $elem can be a two letter symbol, a full name, or a Z number. $symbol may be either a Siegbahn or IUPAC symbol. The intesities are such that all lines of a type (e.g. all Kalpha lines) have intesities which sum to 1. If $elem or $symbol is not recognized, then this returns 0.


   $xsec = Xray::Absorption -> cross_section($elem, $energy, $mode);
   @xsec = Xray::Absorption -> cross_section($elem, \@energy, $mode);

The $mode argument is different here than for the other resources. The options are ``xsec'', ``photo'', ``coherent'' and ``incoherent'', telling this method to return the full cross-section or just the photoelectric, coherent, or incoherent portions.

The values for all cross-sections are computed using spline interpolation as described in the paper by Elam, Ravel, and Siebert.


The Elam data resource provides a fairly complete set of edge and line energies. Any edge tabulated on the Gwyn William's Table of Electron Binding Energies for the Elements (that's the one published by NSLS and on the door of just about every hutch at NSLS) is in the Elam data resource. Additionally, a large but not exhaustive collection of line energies is tabulated. Every line in the table in the SYMBOLS FOR FLUORESCENCE LINES section of the "Absorption.pm" pod is included in the Elam tables. A reasonable value for the relative line intensity if also included in this table. See (the elam reference) for a discussion of which lines were included in the tables and how the intensities were calculated.


  • The ``weighted'' option for "get_energy" is not quite right in that it counts in lines from different edges. While that might be appropriate, there is some question as to the relative weights of lines from different edges. So a better solution would be to only use lines from the edge directly below the chosen energy.