FilmStack class

class pySCATMECH.fresnel.FilmStack(films=[])

Bases: Model

A class for handling stacks of films

R(theta, wavelength, no, nt, type='12')

Return the reflectance.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

refl – The Mueller matrix reflectance, which is the linear relationship between radiant fluxes.

Return type:

MuellerMatrix

Rp(theta, wavelength, no, nt, type='12')

Return the reflectance for p-polarized radiation.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

refl – The reflectance for p-polarization, which is the linear relationship between radiant fluxes.

Return type:

float

Rs(theta, wavelength, no, nt, type='12')

Return the reflectance for s-polarized radiation.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

refl – The reflectance for s-polarization, which is the linear relationship between radiant fluxes.

Return type:

float

T(theta, wavelength, no, nt, type='12')

Return the transmittance.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

refl – The Mueller matrix transmittance, which is the linear relationship between radiant fluxes.

Return type:

MuellerMatrix

Tp(theta, wavelength, no, nt, type='12')

Return the transmittance for p-polarized radiation.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is ‘12’)

Returns:

refl – The transmittance for p-polarization, which is the linear relationship between radiant fluxes.

Return type:

float

Ts(theta, wavelength, no, nt, type='12')

Return the transmittance for s-polarized radiation.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

refl – The transmittance for s-polarization, which is the linear relationship between radiant fluxes.

Return type:

float

clean()

Clear the stack of all films.

getModelDict()

Return a Model parameter dictionary. Used primarily internally so that a FilmStack can be passed as a parameter to a Model for a stack.

getStackCommand(wavelength)

Get the list of films suitable for a SCATMECH::Stack_StackModel

Parameters:

wavelength (float) – The wavelength to evaluate the complex index at.

Returns:

command – List of films suitable for a SCATMECH::Stack_StackModel

Return type:

str

grow(film)

Grow a film on the stack.

Parameters:

film (Film) – The film to be grown

reflectionCoefficient(theta, wavelength, no, nt, type='12')

Return the reflection coefficent.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

coeff – The Jones matrix reflection coefficient, which is the linear relationship between the electric field amplitudes. coeff[0][0] is the s-polarized reflection coefficient. coeff[1][1] is the p-polarized reflection coefficient. coeff[1][0] = coeff[0][1] = 0

Return type:

list of list of complex

transmissionCoefficient(theta, wavelength, no, nt, type='12')

Return the transmission coefficient.

Parameters:
  • theta (float) – Incident angle in radians

  • wavelength (float) – Wavelength in vacuum

  • no (OpticalFunction) – Optical constants for the incident medium

  • nt (OpticalFunction) – Optical constants for the transmitted medium

  • type (str, optional) – If 12, then the incident medium is the medium above the substrate and theta is the incident angle, evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 21, then the incident medium is the substrate and theta is the incident angle evaluated is evaluated as if the radiation were in vacuum. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/lambda) If 12i, then the incident medium is the medium above the substrate and theta is the incident angle in that medium. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/no/lambda) If 21i, then the incident medium is the substrate and theta is the incident angle in the substrate. (The component of the wavevector parallel to the surface is 2*pi*sin(theta)/n0/lambda) (Default is 12)

Returns:

coeff – The Jones matrix transmission coefficient, which is the linear relationship between the electric field amplitudes. coeff[0][0] is the s-polarized transmission coefficient. coeff[1][1] is the p-polarized transmission coefficient. coeff[1][0] = coeff[0][1] = 0

Return type:

list of list of complex