roentgen.absorption.material#
Classes
|
An object which enables the calculation of the x-ray transmission and absorption of a material (e.g. an element or a compound/mixture). |
|
The mass attenuation coefficient. |
|
An object which enables the calculation of the x-ray transmission and absorption of a stack of materaials. |
|
An object to handle the response of a detector material which includes an optical path or filter through which x-rays must first traverse before reaching the detector. |
- class roentgen.absorption.material.MassAttenuationCoefficient(material)[source]#
The mass attenuation coefficient.
- Parameters:
material_str (str) – A string representation of the material which includes an element symbol (e.g. Si), an element name (e.g. Silicon), or the name of a compound (e.g. cdte, mylar).
- data#
The mass attenuation data values.
- Type:
astropy.units.Quantityarray
- energy#
The energy values of the mass attenuation values.
- Type:
- func#
A function which returns the interpolated mass attenuation value at any given energy. Energies must be given by an
astropy.units.Quantity. The interpolation range is 1 keV to 20 MeV. Going outside that range will result in a ValueError.- Type:
lambda func
Examples
>>> from roentgen.absorption.material import MassAttenuationCoefficient >>> mass_atten = MassAttenuationCoefficient('air')
- class roentgen.absorption.material.Material(material_input, thickness: Unit('m'), density=None)[source]#
An object which enables the calculation of the x-ray transmission and absorption of a material (e.g. an element or a compound/mixture).
A material may be composed of a single atomic element such as Aluminum (‘Al’), or composed of number of elements and/or compounds.
- Parameters:
material_str (str or dict) – A string representation of the material which includes an element symbol (e.g. Si), an element name (e.g. Silicon), or the name of a compound (e.g. cdte, mylar). For supported elements see
elements.csvand for compounds seecompounds_mixtures.csv. Can also be a dictionary of element and compounds with fractional masses (ex. {“Cu”:0.70, “Zn”:0.30})thickness (
astropy.units.Quantity) – The thickness of the materialdensity (
astropy.units.Quantity, optional) – The density of the material. If not provided, uses default values which can be found inelements.csvfor elements or incompounds_mixtures.csvfor compounds. If many materials are present, calculates the weighted density.warning:: (..) – Elements beyond z = 92 are not supported by this class.
- fractional_masses#
A normalized array of fractional masses
- Type:
np.ndarray
- mass_attenuation_coefficients#
A list of
MassAttenuationCoefficient- Type:
- mass_attenuation_coefficient(energy)[source]#
The mass attenuation coefficient for the material at energy
Examples
>>> from roentgen.absorption.material import Material >>> import astropy.units as u >>> detector = Material('cdte', 500 * u.um) >>> thermal_blankets = Material('mylar', 0.5 * u.mm) >>> bronze = Material({"Cu": 0.88, "Sn": 0.12}, 1 * u.mm)
- absorption(energy)[source]#
Provides the absorption fraction (0 to 1).
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV.- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.
- linear_attenuation_coefficient(energy: Unit('keV'))[source]#
Provides the linear attenuation coefficient as a function of energy.
linear coeff = mass coeff * density.
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV.- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.
- transmission(energy)[source]#
Provide the transmission fraction (0 to 1).
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.
- class roentgen.absorption.material.Response(optical_path, detector)[source]#
An object to handle the response of a detector material which includes an optical path or filter through which x-rays must first traverse before reaching the detector.
- Parameters:
Examples
>>> from roentgen.absorption.material import Material, Response, Stack >>> import astropy.units as u >>> optical_path = Stack([Material('air', 1 * u.m), Material('Al', 500 * u.mm)]) >>> resp = Response(optical_path, detector=Material('cdte', 500 * u.um))
- response(energy)[source]#
Returns the response as a function of energy which corresponds to the transmission through the optical path multiplied by the absorption in the detector.
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV.- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.
- class roentgen.absorption.material.Stack(materials)[source]#
An object which enables the calculation of the x-ray transmission and absorption of a stack of materaials. This object is created automatically when
Materialobjects are added together.Examples
>>> from roentgen.absorption.material import Material, Stack >>> import astropy.units as u >>> detector = Stack([Material('Pt', 5 * u.um), Material('cdte', 500 * u.um)]) >>> optical_path = Material('mylar', 50 * u.micron) + Material('Al', 1 * u.mm)
- absorption(energy)[source]#
Provides the absorption fraction (0 to 1).
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV.- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.
- transmission(energy)[source]#
Provides the transmission fraction (0 to 1).
- Parameters:
energy (
astropy.units.Quantity) – An array of energies in keV- Raises:
ValueError – If energy is outside of the interpolation range of 1 keV to 20 MeV.