|
| 1 | +import dataclasses |
| 2 | +import astropy.units as u |
| 3 | +import named_arrays as na |
| 4 | +import optika |
| 5 | +import msfc_ccd |
| 6 | +from .. import mixins |
| 7 | + |
| 8 | +__all__ = [ |
| 9 | + "Sensor", |
| 10 | +] |
| 11 | + |
| 12 | + |
| 13 | +@dataclasses.dataclass(repr=False) |
| 14 | +class Sensor( |
| 15 | + optika.mixins.Printable, |
| 16 | + optika.mixins.Rollable, |
| 17 | + optika.mixins.Yawable, |
| 18 | + optika.mixins.Pitchable, |
| 19 | + optika.mixins.Translatable, |
| 20 | + mixins.CylindricallyTransformable, |
| 21 | + msfc_ccd.TeledyneCCD230, |
| 22 | +): |
| 23 | + """A model of the CCD sensors used to detect light.""" |
| 24 | + |
| 25 | + distance_radial: u.Quantity | na.AbstractScalar = 0 * u.mm |
| 26 | + """The distance between the axis of symmetry and the center of the detector.""" |
| 27 | + |
| 28 | + azimuth: u.Quantity | na.AbstractScalar = 0 * u.deg |
| 29 | + """The angle that the detector has been rotated about the axis of symmetry.""" |
| 30 | + |
| 31 | + translation: u.Quantity | na.AbstractCartesian3dVectorArray = 0 * u.mm |
| 32 | + """An additional translation vector.""" |
| 33 | + |
| 34 | + pitch: u.Quantity | na.AbstractScalar = 0 * u.deg |
| 35 | + """The pitch angle of this sensor.""" |
| 36 | + |
| 37 | + yaw: u.Quantity | na.AbstractScalar = 0 * u.deg |
| 38 | + """The yaw angle of this sensor.""" |
| 39 | + |
| 40 | + roll: u.Quantity | na.AbstractScalar = 0 * u.deg |
| 41 | + """The roll angle of this sensor.""" |
| 42 | + |
| 43 | + position_image: u.Quantity | na.AbstractCartesian2dVectorArray = 0 * u.mm |
| 44 | + """The position of the center of the FOV on the sensor for the target wavelength.""" |
0 commit comments