AbstractSiliconSensorMaterial#
- class optika.sensors.materials.AbstractSiliconSensorMaterial(temperature=<Quantity 300. K>)[source]#
Bases:
AbstractSensorMaterialAn interface representing the light-sensitive material of a silicon sensor.
Attributes
flag controlling whether this material reflects or transmits light
The array shape of this object.
The temperature of this sensor.
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

- 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:
- 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 itsdirectionargument. Performing the refraction here lets the sensor’scollectmethod fold the ambient index of refraction into the per-pixel cosine, sosignal()does not need a separate ambient-index argument.- Parameters:
wavelength (Quantity | AbstractScalar) – The wavelength of the incident light in vacuum.
direction (None | AbstractCartesian3dVectorArray) – The propagation direction of the incident light in the ambient medium. If
None(default), normal incidence (\(\hat{z}\)) is assumed.n (complex | AbstractScalar) – The complex index of refraction of the ambient medium.
normal (None | AbstractCartesian3dVectorArray) – The vector perpendicular to the surface of the sensor.
- Return type:
- abstractmethod efficiency(rays, normal)#
The fraction of light that passes through the interface.
- Parameters:
rays (AbstractRayVectorArray) – the input rays to calculate the efficiency for
normal (AbstractCartesian3dVectorArray) – the vector perpendicular to the optical surface
- Return type:
- 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:
- 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:
- 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:
electrons (Quantity | AbstractScalar) – The number of electrons measured by each pixel.
wavelength (Quantity | AbstractScalar) – An assumed grid of wavelengths for the incident photons.
direction (AbstractCartesian3dVectorArray) – An assumed propagation direction for the incident photons.
normal (AbstractCartesian3dVectorArray) – The vector perpendicular to the surface of the sensor.
- Return type:
- 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:
- 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. IfTrue, the grid is treated as periodic and the charge re-enters the opposite edge (a toroidal boundary).
- Return type:
- 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.
- temperature: Quantity | AbstractScalar = <Quantity 300. K>#
The temperature of this sensor.