Helper functions

Helper functions for generation rotation matrices and conversions for wavelengths and ellipsometric quantities.

class elli.utils.DeltaRange(lower: int, upper: int)[source]
elli.utils.calc_pseudo_diel(rho, angle, output='eps')[source]

Calculates the pseudo dielectric function of a measurement from rho.

Parameters:
  • rho (pandas.DataFrame) – Measurement DataFrame containing rho as complex number as column and wavelength as index

  • angle (float) – Angle of measurement in degree

  • output (str, optional) – Output format for dielectric function. ‘n’: refractive index, ‘eps’: Dielectric function as two-column pandas.DataFrame, ‘epsi’: Dielectric function as imaginary number. Defaults to ‘eps’.

Returns:

Frame containing the pseudo dielectric function or refractive index.

Return type:

pandas.DataFrame

elli.utils.calc_rho(psi_delta)[source]

Calculate rho from a Psi-Delta DataFrame. The Psi-Delta DataFrame should be structured as follows:

index:

Wavelength

column ‘Ψ’:

Psi from measurement

column ‘Δ’:

Delta from measurement

This format is as returned from SpectraRay.read_psi_delta_file(…).

Parameters:

psi_delta (pandas.DataFrame) – DataFrame containing Psi+Delta Measurement data

Returns:

Frame containing rho as an imaginary number.

Return type:

pandas.DataFrame

elli.utils.conversion_energy2frequency(E)[source]

Converts energy values to frequency values.

\[f = \boldsymbol{E} / \hbar\]
Parameters:

E (npt.ArrayLike) – Single value or array of energies in eV.

Returns:

Frequency in Hz.

Return type:

npt.ArrayLike

elli.utils.conversion_frequency2energy(f)[source]

Converts frequency values to energy values.

\[E = \boldsymbol{f} \cdot \hbar\]
Parameters:

f (npt.ArrayLike) – Single value or array of frequencies in Hz.

Returns:

Energy in eV.

Return type:

npt.ArrayLike

elli.utils.conversion_wavelength_energy(value)[source]

Converts wavelength values to energy values and vice versa.

\[value_{\text{target}} = c \cdot \hbar / \boldsymbol{value}\]
Parameters:

value (npt.ArrayLike) – Single value or array of wavelengths in nm or energy in eV.

Returns:

Energy in eV or wavelength in nm.

Return type:

npt.ArrayLike

elli.utils.conversion_wavelength_frequency(value)[source]

Converts wavelength values to frequency values and vice versa.

\[value_{\text{target}} = c / \boldsymbol{value}\]
Parameters:

value (npt.ArrayLike) – Single value or array of wavelengths in nm or frequencies in Hz.

Returns:

Frequencies in Hz or wavelengths in nm.

Return type:

npt.ArrayLike

elli.utils.conversion_wavelength_wavenumber(value)[source]

Converts wavelength values to wavenumber values and vice versa.

\[value_{\text{target}} = 1 / \boldsymbol{value}\]
Parameters:

value (npt.ArrayLike) – Single value or array of wavelengths in nm or wavenumbers in \(\text{cm}^{-1}\).

Returns:

Wavenumbers in \(\text{cm}^{-1}\) or wavelengths in nm.

Return type:

npt.ArrayLike

elli.utils.convert_delta_range(delta_values, lower, upper)[source]

Shifts the delta values to a given range.

Parameters:
  • delta_values (npt.ArrayLike) – Delta values to be converted.

  • lower (int) – The lower delta range. Should be in the range of -360 and 0.

  • upper (int) – The upper delta range. Should be in the range of 0 and 360.

Returns:

Delta values with shifted range.

Return type:

npt.ArrayLike

elli.utils.convert_psi_delta_to_isotropic_mueller_matrix(psi_delta_df)[source]

Extract aois and wavelengths values from psi_delta pandas.DataFrame and convert it to a Muellermatrix; only works for isotropic media.

Parameters:

psi_delta_df (pd.DataFrame) – dataFrame returned from data importers’

Returns:

pyElli-compatible DataFrame of the Mueller matrix

Return type:

pd.DataFrame

elli.utils.get_qwp_thickness(material, lbda)[source]

Return the thickness of a material in nm for a quarter wave plate at wavelength ‘lbda’.

Parameters:
  • material (Material) – Material object of the quarter wave plate

  • lbda (float) – Wavelength (in nm) at which the quarter wave plate is calculated

Returns:

Thickness (in nm) of quarter wave plate

Return type:

float

elli.utils.rotation_euler(p, n, r)[source]

Returns rotation matrix defined by Euler angles p, n, r.

Successive rotations : z,x’,z’ Note : The inverse rotation is -r, -n, -p

Parameters:
  • p (float) – precession angle, 1st rotation, around z (0..360°).

  • n (float) – nutation angle, 2nd rotation, around x’ (0..180°).

  • r (float) – 3rd rotation, around z’ (0..360°).

Returns:

rotation matrix \(M_R\)

Return type:

npt.NDArray

elli.utils.rotation_v(v)[source]

Returns rotation matrix defined by a rotation vector v.

The calculation is made with the matrix exponential \(M_R = \exp(W)\), with \(W_{ij} = - ε_{ijk} V_{k}\), where \(ε_{ijk}\) is the Levi-Civita antisymmetric tensor. If V is separated in a unit vector v and a magnitude θ, V = θ·v, with θ = ∥V∥, the calculation of the matrix exponential is avoided, and only sin(θ) and cos(θ) are needed instead.

Note : The inverse rotation is -v

Parameters:

v (npt.ArrayLike) – rotation vector (list or array)

Returns:

rotation matrix \(M_R\)

Return type:

npt.NDArray

elli.utils.rotation_v_theta(v, theta)[source]

Returns rotation matrix defined by a unit rotation vector and an angle.

Notes : The inverse rotation is (v,-theta)

Parameters:
  • v (npt.ArrayLike) – unit vector orienting the rotation (list or array)

  • theta (float) – rotation angle around v in degrees

Returns:

rotation matrix \(M_R\)

Return type:

npt.NDArray