Sensor#
- class esis.optics.Sensor(manufacturer='Teledyne/e2v', family='CCD230-42', serial_number=None, grade=None, material=None, width_pixel=<Quantity 15. um>, num_pixel_x=2048, num_pixel_y=2064, num_blank=50, num_overscan=2, num_masked=8, cte=<Quantity 99.9995 %>, readout_noise=<Quantity 4. electron>, readout_mode='transfer', width_package_x=<Quantity 42. mm>, width_package_y=<Quantity 61. mm>, distance_radial=<Quantity 0. mm>, azimuth=<Quantity 0. deg>, translation=<Quantity 0. mm>, pitch=<Quantity 0. deg>, yaw=<Quantity 0. deg>, roll=<Quantity 0. deg>, position_image=<Quantity 0. mm>)[source]#
Bases:
Replaceable,Rollable,Yawable,Pitchable,Translatable,CylindricallyTransformable,TeledyneCCD230A model of the CCD sensors used to detect light.
Attributes
The angle that the detector has been rotated about the axis of symmetry.
The charge transfer efficiency of the sensor.
The distance between the axis of symmetry and the center of the detector.
The model number or product family of this sensor.
The quality of the device.
The company which produced the sensor.
The light-sensitive material used by this sensor.
The number of blank columns at the start of each row.
The number of masked rows at the start of each tap.
The number of overscan columns at the end of each row.
The number of pixels along the horizontal and vertical axes.
The number of pixels that are used to detect light.
The number of pixels along the horizontal axis of the CCD sensor.
The number of pixels along the vertical axis of the CCD sensor.
The number of taps along the long axis of the CCD sensor.
The number of taps along the short axis of the CCD sensor.
The pitch angle of this sensor.
The position of the center of the FOV on the sensor for the target wavelength.
The frame readout mode of the sensor.
The standard deviation of the error on each pixel value.
The roll angle of this sensor.
A unique number which identifies this sensor.
The operating temperature of this sensor.
the coordinate transformation between the global coordinate system and this object's local coordinate system
An additional translation vector.
The physical size of the light sensitive area of the sensor.
The vertical and horizontal width of the physical sensor package.
The horizontal size of the physical sensor package.
The vertical size of the physical sensor package.
The physical size of a single pixel on the imaging sensor.
The yaw angle of this sensor.
Methods
__init__([manufacturer, family, ...])dark_current([temperature])Calculate the rate of charge accumulation when the sensor is not illuminated.
replace(**changes)A copy of this object with the given fields replaced.
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:
manufacturer (str)
family (str)
serial_number (None | str)
grade (None | str)
material (None | AbstractSiliconSensorMaterial)
width_pixel (Quantity)
num_pixel_x (int)
num_pixel_y (int)
num_blank (int)
num_overscan (int)
num_masked (int)
cte (Quantity)
readout_noise (Quantity)
readout_mode (Literal['full-frame', 'transfer'])
width_package_x (Quantity)
width_package_y (Quantity)
distance_radial (Quantity | AbstractScalar)
azimuth (Quantity | AbstractScalar)
translation (Quantity | AbstractCartesian3dVectorArray)
pitch (Quantity | AbstractScalar)
yaw (Quantity | AbstractScalar)
roll (Quantity | AbstractScalar)
position_image (Quantity | AbstractCartesian2dVectorArray)
- dark_current(temperature=None)#
Calculate the rate of charge accumulation when the sensor is not illuminated.
This is the typical dark current given by the datasheet of the CCD230-42, version 5,
\[\frac{Q_d}{Q_{do}} = 1.14 \times 10^6 \, T^3 e^{-9080 / T},\]where \(Q_d\) is the dark current at the temperature \(T\), in kelvin, and \(Q_{do}\) is the dark current at 293 K, scaled so that the dark current at 248 K is the typical 0.2 electron / pixel / s.
The datasheet only claims this model from 230 K to 300 K, and warns that below 230 K other sources of dark current, which depend less steeply on temperature, may dominate. The ESIS cameras run below that range, and their measured dark current there is far above this model.
- Parameters:
temperature (None | Quantity | AbstractScalar) – The temperature of the sensor. If
None, the value oftemperatureis used.nblinkgallery:: (..) –
- caption:
Examples
- name:
rst-link-gallery
../reports/dark-current
- replace(**changes)#
A copy of this object with the given fields replaced.
A method version of
dataclasses.replace(), matchingnamed_arrays.AbstractArray.replace(), so that a nested change reads the same at every level:system.replace( surface=system.surface.replace( sag=system.surface.sag.replace(radius=r), ), )
The copy is shallow, as
dataclasses.replace()is: every field which is not named is shared with the original, and mutating one through the copy is mutating it in both. Takecopy.deepcopy()of the result where that matters.- Parameters:
changes – The fields to overwrite in the copy.
- 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.
- azimuth: Quantity | AbstractScalar = <Quantity 0. deg>#
The angle that the detector has been rotated about the axis of symmetry.
- distance_radial: Quantity | AbstractScalar = <Quantity 0. mm>#
The distance between the axis of symmetry and the center of the detector.
- grade: None | str = None#
The quality of the device.
Grade 0 is the best possible and Grade 5 is the worst possible.
- material: None | AbstractSiliconSensorMaterial = None#
The light-sensitive material used by this sensor.
If
None,optika.sensors.materials.e2v_ccd97()will be used.
- num_masked: int = 8#
The number of masked rows at the start of each tap.
These rows are read out before the image, but they hold charge from the part of the frame store closest to the image area rather than light from the image itself. They lie under the edge of the mask, so they have a dark current rate about 80 times that of the image area, and they receive a fraction of the light that leaks under the edge of the mask.
- property num_pixel: Cartesian2dVectorArray#
The number of pixels along the horizontal and vertical axes.
- property num_pixel_active#
The number of pixels that are used to detect light.
If
readout_modeis"full-frame", then this is the same asnum_pixel. Ifreadout_modeis"transfer", then the vertical component ofnum_pixelis divided by 2 since half of the sensor is now used for charge storage.
- pitch: Quantity | AbstractScalar = <Quantity 0. deg>#
The pitch angle of this sensor.
- position_image: Quantity | AbstractCartesian2dVectorArray = <Quantity 0. mm>#
The position of the center of the FOV on the sensor for the target wavelength.
- readout_mode: Literal['full-frame', 'transfer'] = 'transfer'#
The frame readout mode of the sensor.
Either the entire sensor is read at the same time (
"full-frame"), or half of the sensor is used for storage ("transfer").
- readout_noise: Quantity = <Quantity 4. electron>#
The standard deviation of the error on each pixel value.
- roll: Quantity | AbstractScalar = <Quantity 0. deg>#
The roll angle of this sensor.
- property temperature#
The operating temperature of this sensor.
- property transformation: AbstractTransformation#
the coordinate transformation between the global coordinate system and this object’s local coordinate system
- translation: Quantity | AbstractCartesian3dVectorArray = <Quantity 0. mm>#
An additional translation vector.
- property width_active#
The physical size of the light sensitive area of the sensor.
- property width_package: Cartesian2dVectorArray#
The vertical and horizontal width of the physical sensor package.
- width_pixel: Quantity = <Quantity 15. um>#
The physical size of a single pixel on the imaging sensor.
- yaw: Quantity | AbstractScalar = <Quantity 0. deg>#
The yaw angle of this sensor.