Scattering Matrix

Funtions to calculate the forward or grazing-incidence scattering matrices.

nexus.ElectronicForwardScatteringFactor(material, energy)

Pure electronic forward scattering factor. Scalar version of Eq. (4.4), [Roehlsberger].

Parameters:
  • material (Material) – Material for the calculation.

  • energy (float) – Photon energy (eV).

Returns:

Electronic forward scattering factor.

Return type:

complex

nexus.ElectronicRefractiveIndex(material, energy)

Pure electronic refractive index in forward direction. Scalar version of Eq. (4.5), [Roehlsberger].

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • energy (float) – Photon energy (eV).

Returns:

Electronic forward scattering factor.

Return type:

complex

nexus.ElectronicSLD(material, energy)

Electronic scattering length density (SLD) \(\rho\) of the material.

\[\rho = \frac{2 \pi E^2}{h^2 c^2} \left(1 - n(E) \right),\]

where \(E\) is the photon energy and \(n(E)\) is the refractive index at the given energy. Typically, only the real part of the SLD is used, when the imaginary part is much smaller.

Added in version 2.0.0.

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • energy (float) – X-ray energy (eV).

Returns:

SLD of the layer in Angstrom -2.

Return type:

complex

nexus.ElectronicGrazingScatteringFactor(material, energy, kvector_z)

Pure electronic scattering factor in grazing incidence geometry. Scalar version of Eq. (4.25), [Roehlsberger].

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • energy (float) – Photon energy (eV).

  • kvector_z (float) – k-vector component along layer direction.

Returns:

Electronic scattering factor.

Return type:

complex

nexus.ForwardScatteringMatrix(material, isotope, detuning, calc_transitions=True)

Forward scattering matrix. Eq. (4.4), [Roehlsberger].

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • isotope (MoessbauerIsotope) – The MoessbauerIsotope for which the nuclear scattering length should be calculated.

  • detuning (list or ndarray) – Detuning values around the isotope transition energy.

  • calc_transition (bool) – Specifies if the nuclear transitions of the material are calculated before the scattering matrix is determined.

Returns:

List of 2x2 matrices of the forward scattering matrix (1/m).

Return type:

list

nexus.GrazingScatteringMatrix(material, isotope, detuning, kvector_z, calc_transitions=True)

Grazing-incidence scattering matrix. Eq. (4.25), [Roehlsberger].

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • isotope (MoessbauerIsotope) – The MoessbauerIsotope for which the nuclear scattering length should be calculated.

  • detuning (list or ndarray) – Detuning values around the isotope transition energy.

  • kvector_z (float) – k-vector component along layer direction.

  • calc_transition (bool) – Specifies if the nuclear transitions of the material are calculated before the scattering matrix is determined.

Returns:

List of 2x2 matrices of the grazing-incidence scattering matrix (1/m).

Return type:

list

nexus.CriticalAngle(material, energy)

Calculates the critical angle of the material, see Eq. (4.22), [Roehlsberger].

Added in version 1.0.3.

Parameters:
  • material (Material) – Material for the X-ray interaction.

  • energy (float) – Photon energy (eV).

Returns:

Critical angle (rad).

Return type:

float

Examples

material = nx.Material(id = "my_material",
                       composition = [["Fe", 2], ["O", 3]],
                       density = 5.24))

# k-vector along layer direction at an angle of 0.1 degree
kz = nx.conversions.EnergyToKvectorZ(20e3, 0.1)

scattering_factor = nx.ElectronicGrazingScatteringFactor(material, 20e3, kz)
print(scattering_factor)
# scattering matrix at 57-Fe transition energy
mat_Fe = nx.Material.Template(nx.lib.material.Fe_enriched)

site1 = nx.Hyperfine(magnetic_field = 33)

mat_Fe.hyperfinesites = [site1]

detuning = np.linspace(-200, 200, 201)

scattering_matrix = nx.ForwardScatteringMatrix(mat_Fe, nx.lib.moessbauer.Fe57, detuning)
print(scattering_matrix)