SYNOPSIS
use Xray::Scattering;
Xray::Scattering>load('CroMann');
$fnot = Xray::Scattering>get_f($symb, $d);
Xray::Scattering>load('WaasKirt');
$fnot = Xray::Scattering>get_f($symb, $d);
DESCRIPTION
This module supports access to Xray scattering data for atoms and ions. It is designed to be a transparent interface to scattering data from a variety of sources. Currently, the only sources of data are the CromerMann tables from the International Tables of Crystallography and the 1995 WaasmaierKirfel tables. More resources can be added easily.METHODS
 "available"

This method returns a list of data resources available to this module.
Currently this returns an array consisting of these strings:
CromerMann WaasmaierKirfel None
The first two are functional interfaces to those databases. The third is a fallback subclass which returns default values for all methods.
 "get_valence"

This returns the element/valence symbol in the proper form for use with other
methods. $elem is a twoletter atomic symbol, and $valence is the
valence of the ion. $valence can be an integer, a float, a dot or the
string ``va''.
$symbol = Xray::Scattering>get_valence($elem, $valence)
Unless the valence is a dot or the string ``va'', the nearest integer to $valence is used with the element symbol to construct the element/valence symbol. As an example, "$symbol eq "Cu2+"" if "$elem eq "Cu"" and "$valence == 2".
SUBCLASS METHODS
All the available subclasses corresponding to the data resources provide their own versions of the following methods: "get_f"

This function calculates the Thomson scattering for a given symbol
and dspacing. The Thomson scattering depends only on the momentum
transfer. The dspacing of the scattering planes is a closely related
quantity and is easily calculated from the crystal structure, see
Xtal.pm.
$symb = "Ce3+"; $fnot = Xray::Scattering>get_f($symb, $d);
If the symbol cannot be found in the table, "get_f" returns 0. It also returns 0 when $symbol consists of whitespace or is ``null'' or ``nu''. If $symbol is a number or the name of an element, then it assumes you want the Thomson scattering for the neutral element. The absolute value of $d_spacing is used by this function.
The "None" subclass always returns 0.
If you ask for a valence state that is not in the table but for an element whose 0+ state is in the table, this method returns the scattering factor for the 0 valent atom.
 "get_coefficients"

This returns the 9 (CromerMann) or 11 (WaasmaierKirfel) element list
containing the coefficients for the given symbol.
@coefs = Xray::Scattering>get_coefficients($symb)
See the documents for the subclasses for the order of the coefficients. The None subclass always returns a list of 11 zeros.
If you ask for a valence state that is not in the table but for an element whose 0+ state is in the table, this method returns the coefficients for the 0 valent atom.
 "has"

This is a test of whether a given symbol is tabulated in the selected data
resource table. It returns the symbol itself if found in the table or 0 if it
is not in the table.
$symb = "Ce3+"; $has = Xray::Scattering>has($symb);
The None subclass returns the symbol itself.
AUTHOR
Bruce Ravel, bravel AT bnl DOT govLICENCE AND COPYRIGHT
Copyright (c) 20062008 Bruce Ravel (bravel AT bnl DOT gov). All rights reserved.This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.