Helper functions
Helper functions for generation rotation matrices and conversions for wavelengths and ellipsometric quantities.
- 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
- 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
- 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.get_qwp_thickness(material, lbda)[source]
Return the thickness of a material in nm for a quarter wave plate at wavelength ‘lbda’.
- 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
- 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