AbstractSiliconSensorMaterial#

class optika.sensors.materials.AbstractSiliconSensorMaterial(temperature=<Quantity 300. K>)[source]#

Bases: AbstractSensorMaterial

An interface representing the light-sensitive material of a silicon sensor.

Attributes

is_mirror

flag controlling whether this material reflects or transmits light

shape

The array shape of this object.

temperature

The temperature of this sensor.

transformation

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

Methods

__init__([temperature])

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.

fano_factor(wavelength)

The Fano factor (ratio of the variance to the mean) of the Fano noise for this sensor material.

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.

quantum_yield_ideal(wavelength)

Compute the ideal quantum yield of this CCD sensor material using optika.sensors.quantum_yield_ideal().

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.AbstractSiliconSensorMaterial
Parameters:

temperature (Quantity | AbstractScalar)

attenuation(rays)[source]#

the attenuation coefficient of the given rays

Parameters:

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

Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

abstractmethod direction_refracted(wavelength, direction=None, n=1, normal=None)#

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

abstractmethod efficiency(rays, normal)#

The fraction of light that passes through the interface.

Parameters:
Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

fano_factor(wavelength)[source]#

The Fano factor (ratio of the variance to the mean) of the Fano noise for this sensor material.

The method uses the equivalent function, optika.sensors.fano_factor, along with the :attr:`temperature() attribute to compute the Fano factor for this material

Parameters:

wavelength (Quantity | AbstractScalar)

Return type:

ScalarArray

index_refraction(rays)[source]#

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

Parameters:

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

Return type:

int | float | complex | ndarray | Quantity | AbstractScalar

abstractmethod photons_incident(electrons, wavelength, direction, normal)#

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

quantum_yield_ideal(wavelength)[source]#

Compute the ideal quantum yield of this CCD sensor material using optika.sensors.quantum_yield_ideal().

Parameters:

wavelength (Quantity | AbstractScalar) – The wavelength of the incident light

Return type:

Quantity | AbstractScalar

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

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

abstract property shape: dict[str, int]#

The array shape of this object.

temperature: Quantity | AbstractScalar = <Quantity 300. K>#

The temperature of this sensor.

property transformation: None#

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