IdealSensorMaterial#

class optika.sensors.materials.IdealSensorMaterial[source]#

Bases: Vacuum, AbstractSensorMaterial

An idealized sensor material with a quantum efficiency of unity, no charge diffusion, and a noise model which consists of only shot noise.

Attributes

is_mirror

flag controlling whether this material reflects or transmits light

shape

The array shape of this object.

transformation

the coordinate transformation between the global coordinate system and this object's local coordinate system

Methods

__init__()

attenuation(rays)

the attenuation coefficient of the given rays

direction_refracted(wavelength[, direction, ...])

The cosine of the refracted propagation angle inside the light-sensitive region of the sensor.

efficiency(rays, normal)

The fraction of light that passes through the interface.

index_refraction(rays)

the index of refraction of this material for the given input rays

photons_incident(electrons, wavelength, ...)

Given the number of electrons measured by the sensor, and a grid of wavelengths, compute the expected number of photons incident on the sensor.

signal(photons, wavelength[, direction, ...])

Given the photons incident on each pixel, compute the number of electrons measured by the sensor using signal().

to_string([prefix])

Public-facing version of the __repr__ method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.

Inheritance Diagram

Inheritance diagram of optika.sensors.materials.IdealSensorMaterial
attenuation(rays)#

the attenuation coefficient of the given rays

Parameters:

rays (RayVectorArray) – input rays to calculate the attenuation coefficient for

Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

direction_refracted(wavelength, direction=None, n=1, normal=None)[source]#

The cosine of the refracted propagation angle inside the light-sensitive region of the sensor.

This is the quantity signal() expects as its direction argument. Performing the refraction here lets the sensor’s collect method fold the ambient index of refraction into the per-pixel cosine, so signal() does not need a separate ambient-index argument.

Parameters:
Return type:

complex | AbstractScalar

efficiency(rays, normal)#

The fraction of light that passes through the interface.

Parameters:
Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

index_refraction(rays)#

the index of refraction of this material for the given input rays

Parameters:

rays (RayVectorArray) – input rays used to evaluate the index of refraction

Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

photons_incident(electrons, wavelength, direction, normal)[source]#

Given the number of electrons measured by the sensor, and a grid of wavelengths, compute the expected number of photons incident on the sensor.

Parameters:
Return type:

AbstractScalar

signal(photons, wavelength, direction=1, width_pixel=<Quantity 0. um>, axis_xy=None, noise=True, wrap=False)[source]#

Given the photons incident on each pixel, compute the number of electrons measured by the sensor using signal().

Parameters:
  • photons (Quantity | AbstractScalar) – The number of photons incident on each pixel.

  • wavelength (Quantity | AbstractScalar) – An assumed grid of wavelengths for the incident photons.

  • direction (float | AbstractScalar) – The cosine of the refracted angle inside the light-sensitive region, as produced by direction_refracted().

  • width_pixel (Quantity | AbstractScalar | AbstractCartesian2dVectorArray) – The physical size of each pixel, used by the charge-diffusion model.

  • axis_xy (None | tuple[str, str]) – The two logical axes corresponding to the pixel grid of the sensor. If provided, charge diffusion will occur along these two axes. If None (the default), no diffusion is performed.

  • noise (bool) – Whether to add noise to the result.

  • wrap (bool) – Controls how diffused charge is treated at the edges of the pixel grid. If False (the default), charge that diffuses past the edge of the grid is lost, as it would be at the physical edge of a sensor. If True, the grid is treated as periodic and the charge re-enters the opposite edge (a toroidal boundary).

Return type:

AbstractScalar

to_string(prefix=None)#

Public-facing version of the __repr__ method that allows for defining a prefix string, which can be used to calculate how much whitespace to add to the beginning of each line of the result.

Parameters:

prefix (None | str) – an optional string, the length of which is used to calculate how much whitespace to add to the result.

Return type:

str

property is_mirror: bool#

flag controlling whether this material reflects or transmits light

property shape: dict[str, int]#

The array shape of this object.

property transformation: None#

the coordinate transformation between the global coordinate system and this object’s local coordinate system