Xray::Absorption::Elam - Perl interface to the Elam tables
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
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
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
$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
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-
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
EDGE AND LINE ENERGIES
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
BUGS AND THINGS TO DO
· 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.
Bruce Ravel, firstname.lastname@example.org