Physics

The physics module includes functionality for modeling and treating various signal related to X-ray physics. In particular, we offer modeling of X-ray fluorescence (XRF) emission and X-ray attenuation, and some useful tools for X-ray phase contrast. The back-end of this module is the famous X-ray physics package called xraylib.

X-ray Fluorescence

The physics.xrf sub-module offers mainly two classes: LinesSiegbahn and DetectorXRF. The former exposes a simplified interface for handling XRF emission lines, using the Siegbahn nomenclature. The latter allows one to describe the position and geometry of a XRF detector, that is used in the VolumeMaterial class of the physics.materials sub-module.

The LinesSiegbahn class, exposes two important static methods:

class LinesSiegbahn:
    """Siegbahn fluorescence lines collection class."""

    @staticmethod
    def get_lines(line: str) -> Sequence[FluoLine]:
        ...

    @staticmethod
    def get_energy(
        element: Union[str, int],
        lines: Union[str, FluoLine, Sequence[FluoLine]],
        compute_average: bool = False,
        verbose: bool = False,
    ) -> Union[float, NDArray]:
        ...

The method get_lines returns the list of available lines for a given line family, e.g. the Kα and Kβ lines for the K line family. The method get_energy, instead, returns the energy(ies) of the requested line(s) for a given element. If the requested expression matches more than one line, it can either be the list of all the line energies, or their average.

Material modeling

The main class of the physics.materials sub-module is VolumeMaterial, that allows one to model heterogeneous material compositions in the reconstruction volume, with the aim of generating:

  1. Attenuation maps (local linear attenuation coefficient).

  2. Emission cross-sections maps for XRF and Compton.

X-ray Phase Contrast

The physics.phase sub-module contains functions to model the delta-over-beta value and transfer functions encountered in phase contrast problems.