Xray::...::Henke(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

πŸ’– Xray::...::Henke πŸ’–

okay so bestie, this is the User Contributed Perl Documentation page for Xray::...::Henke(3pm), and it's literally the Perl interface to the Henke tables. come sit with me, this one's a bop πŸŽ€


✨ NAME ✨

Xray::Absorption::Henke β€” the Perl interface to the Henke tables. that's it, that's the name, and it's iconic for it πŸ’…


🌸 SYNOPSIS 🌸

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

that's the whole vibe.</p紫色>

also, go read the documentation for Xray::Absorption for the deets, k? this page is just the Henke-specific tea. πŸ“


πŸ¦‹ DESCRIPTION πŸ¦‹

so this module gets inherited by the Xray::Absorption module, and what it does is hand you the data from the Henke tables β€” that's anomalous scattering factors, plus line and edge energies. slay.

the data in here (everyone calls it "The Henke Tables") was published as:

B. L. Henke, E. M. Gullikson, and J. C. Davis, Atomic Data and Nuclear Data Tables Vol. 54 No. 2 (July 1993).

the Henke data lives on the web at http://www-cxro.lbl.gov/optical_constants/ and if you want more info about the data you can hit up Eric Gullikson <EMGullikson@lbl.gov>. 🫢

the data itself hangs out in a database file called henke.db, which gets generated at install time from the flat text files of the Henke data. it's stored in a Storable archive using "network" ordering β€” which means speedy disk and memory access, plus network and platform portability. it's giving efficiency, honestly. ✨

the required "File::Spec", "Chemistry::Elements", and "Storable" modules are all available from CPAN. go get 'em.


πŸ’œ METHODS πŸ’œ

heads up bestie: the methods in this module behave a little differently from the other modules that "Xray::Absorption" uses. this section is literally just the methods whose behaviour is different for this data resource. no cap.

πŸ”₯ "get_energy"

example time:

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

this works pretty much like the "get_energy" method of the other resources. but β€” when you're using the Henke data resource, $edge can be any of K, L1-L3, M1-M5, N1-N7, O1-O7, or P1-P3.

here's the catch tho: line energies are not supplied with the Henke data set. 😭 so the line energies from the McMaster tables are what get used. periodt.

🌈 "cross_section"

examples:

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

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

this one behaves slightly differently from the similar method for the McMaster and Elam resources. why? bc the Henke tables are actually tables of anomalous scattering factors and they do not come with coherent and incoherent scattering cross-sections. πŸ™ˆ

so the photo-electric cross-section gets calculated from the imaginary part of the anomalous scattering, using this formula:

mu = 2 * r_e * lambda * conv * f_2

where "r_e" is the classical electron radius, lambda is the photon wavelength, and conv is a units conversion factor. and those are:

r_e    = 2.817938 x 10^-15 m
lambda = 2 pi hbar c / energy
hbar*c = 1973.27053324 eV*Angstrom
conv   = Avagadro / atomic weight
       = 6.022045e7 / weight in cgs

now, the $mode argument is different here than for the other resources. your options are "xsec", "f1", and "f2" β€” and they tell this method to return the cross-section, or the real anomalous scattering factor, or the imaginary anomalous scattering factor, respectively. pick your fighter. πŸ’…

the values for f1 and f2 are computed by linear interpolation of a semi-log scale, and care is taken to avoid the discontinuities at the edges. thoughtful queen behaviour, honestly.

🚨 real talk: because the Henke tables do not include the coherent and incoherent scattering terms, the value returned by "get_energy" may be a bit smaller using the Henke tables than the one from the McMaster tables. that's just how it is, bestie.

πŸ‘‘ EDGE AND LINE ENERGIES πŸ‘‘

the Henke data resource gives you a fairly complete set of edge energies. like, any edge tabulated on the Gwyn William's Table of Electron Binding Energies for the Elements β€” yeah, that one, the one published by NSLS and taped on the door of just about every hutch at NSLS β€” is in the Henke data resource. iykyk. 🧚

and the Henke data comes with the same, limited set of fluorescence energies as McMaster. that's the deal.


πŸ’€ BUGS AND THINGS TO DO πŸ’€

  • It would be nice to improve the inter-/extrapolation near absorption edges. As it stands, these tables produce really poor DAFS output. 😭 (not me warning you, it's literally in the docs)

⭐ AUTHOR ⭐

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

and that's the whole page, bestie!! πŸŽ€ this was perl v5.34.0, dated 2022-06-28 β€” shoutout to the version and the date for showing up and showing out. mwah. πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from