---
name: "Xray::Scattering"
section: "3pm"
platform: "linux"
package: "libxray-scattering-perl"
version: "3.0.1-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Xray::Scattering"
---

# Xray::Scattering(3pm)

X-ray scattering data for the elements

## NAME

Xray::Scattering - X-ray scattering data for the elements

## 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 X-ray 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 Cromer-Mann tables from the International Tables of Crystallography and the 1995 Waasmaier-Kirfel 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:

  ```
    Cromer-Mann  Waasmaier-Kirfel  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 two-letter 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 d-spacing.  The Thomson scattering depends only on the momentum transfer.  The d-spacing 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 (Cromer-Mann) or 11 (Waasmaier-Kirfel) 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 gov

http://cars9.uchicago.edu/~ravel/software/exafs/

## LICENCE AND COPYRIGHT

Copyright (c) 2006-2008 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.
