Xray::...::Elam(3pm)

πŸ“¦
version 3.0.1 Β· 2 versions
  • 3.0.1 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 3.0.1 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

🌸 NAME 🌸

Xray::Absorption::Elam β€” literally just a Perl interface to the Elam tables, bestie. That's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

okay so here's the whole thing, no notes:

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

That's it. Go read the docs for Xray::Absorption if you want the deets, because this page is just the Elam-flavored extras. 🫢


πŸ’– DESCRIPTION πŸ’–

So this module gets inherited by the Xray::Absorption module, and what it does is hand you access to the data sitting inside the 1999 Elam tables of absorption cross-sections plus line and edge energies. Iconic honestly.

The data in this module β€” and yes, we're calling it "The Elam Tables" around here β€” will be published real soon. Like, soon soon. The compilation of all this data is the work of Tim Elam (tim.elam@nrl.navy.mil), so go say thank you. 😌

The data lives in a database file called elam.db, which gets generated at install time from a flat text database of the Elam data. It's stored in a Storable archive using "network" ordering. Why does that matter? Because it gives you speedy disk and memory access plus network and platform portability. Best of both worlds, fr fr. ✨

The required Chemistry::Elements, Math::Spline, and Math::Derivative modules are all available from CPAN, so no excuses. 🧚


πŸ“š LITERATURE REFERENCES πŸ“š

not me actually citing sources, this is giving academic main character energy:

  • 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.

πŸ’… METHODS πŸ’…

okay so heads up: the get_energy method in this module does not behave like the other modules used by Xray::Absorption. Not even a little. So this section is all about the methods that act different for this data resource, plus the methods this module offers that literally no other resource has. slay.

get_energy πŸ”₯

Example:

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

This behaves similarly to the get_energy method of other resources, except there are some differences regarding the syntax of specifying $edge. When you're 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.

line_toggle πŸŽ€

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. so like, type carefully bestie. 😭

fluor_yield 🌈

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. πŸ’€

edge_jump πŸ¦‹

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. cute, simple, math. ✨

get_intesity πŸ™ˆ

Example:

$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.

πŸ‘‘ and yes, the method name really is spelled get_intesity. It's iconic. It stays. Don't @ me.

cross_section ⭐

Example:

$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. πŸ”₯


🌟 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. iykyk. πŸ‘‘

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.


πŸ’€ 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.
not me pointing out the bugs in my own fave. honest queen behavior tho. πŸ’–

🌸 AUTHOR 🌸

Bruce Ravel, bruce@phys.washington.edu
http://feff.phys.washington.edu/~ravel/software/Absorption/

and that's the whole page, bestie!! this one's running on perl v5.34.0, dated 2022-06-28, and it's filed under that Xray::...::Elam(3pm) name. go read your absorption tables, you got this. πŸŽ€βœ¨πŸ’œ

πŸ“¦ where this page comes from