Class ChargeCoupledDevice
- Namespace
- NominalSystems.Classes
- Assembly
- NominalSystems.Classes.dll
[Nominal] A CCD (Charge-Coupled Device) is a sensor that captures light by converting photons into electrical charges at each pixel, which are then transferred sequentially to produce a digital image. Known for high image quality, CCDs excel in applications requiring low noise and precise light detection, such as astronomy and professional photography. This sensor is useful for determining the noise at a particular location in the simulation, due to atmospheric and light effects.
public class ChargeCoupledDevice : Sensor, IPayload
- Inheritance
-
ChargeCoupledDevice
- Implements
Constructors
ChargeCoupledDevice()
Default constructor
protected ChargeCoupledDevice()
Fields
Area
The total area of the CCD sensor. This is the area of the sensor covered by the pixels in square millimeters.
[Unit("mm²")]
[Range(1E-06, 1.7976931348623157E+308)]
public double Area
Field Value
AtmosphereAbsorption
A constant that represents the atmospheric absorption of the light that is captured by the CCD sensor. This is a value between 0 and 1, where 0 is no absorption and 1 is full absorption.
[Unit("")]
[Range(0, 1)]
public double AtmosphereAbsorption
Field Value
Bias
Represents the constant bias signal added to the sensor data. This accounts for any inherent offset in the sensor electronics, such as dark current, readout noise, or electronic biases. Bias is applied even when no light is detected, and should be subtracted during calibration to improve measurement accuracy.
[Unit("ADU")]
[Range(0, 2147483647)]
[Metadata(IsAdvanced = true)]
public double Bias
Field Value
CaptureOnTick
A flag whether the sensor should capture an image each frame.
[Unit("")]
[Metadata(IsAdvanced = true)]
public bool CaptureOnTick
Field Value
DarkCurrentNoise
Dark current noise, which is caused by the small current that flows through the sensor even in the absence of light. This current is related to the sensor's temperature and is responsible for generating a constant noise level in the absence of photons.
[Unit("ADU")]
[Range(0, 2147483647)]
[Metadata(IsAdvanced = true)]
public double DarkCurrentNoise
Field Value
Efficiency
The quantum efficiency of the CCD sensor. This is the fraction of photons that are converted into electrons at each pixel.
[Unit("")]
[Range(0, 1)]
public double Efficiency
Field Value
ExposureTime
The exposure time of the CCD sensor. This is the time in seconds that the sensor is exposed to light.
[Unit("s")]
[Range(1E-06, 1.7976931348623157E+308)]
public double ExposureTime
Field Value
FOV
The field of view of the CCD sensor. This is the angle in degrees and represents the angle of the sensor's view.
[Unit("deg")]
[Range(1E-06, 180)]
public double FOV
Field Value
In_PlanetStateMsg
A reference to the planet state, which comes from the planet in the simulation that this object exists on. This is optional.
public PlanetStateMessage? In_PlanetStateMsg
Field Value
In_SunPlanetStateMsg
A reference to the sun planet state, used for calculating the distance to the sun.
public PlanetStateMessage? In_SunPlanetStateMsg
Field Value
IsEarthGrounded
A flag whether the sensor is grounded on the Earth and should experience the effects from the Earth's atmosphere.
[Hidden]
public bool IsEarthGrounded
Field Value
MaximumADU
This is the maximum ADU (Analog-to-Digital Unit) value that each pixel can have. This is the maximum value that the sensor can record for each pixel.
[Unit("ADU")]
[Range(1, 2147483647)]
public int MaximumADU
Field Value
Out_CCDDataMsg
The output message that contains the raw data from the CCD sensor, once an image has been taken.
public CCDDataMessage? Out_CCDDataMsg
Field Value
PointSpreadFactor
A constant that represents the point spread function of the pixels on the CCD sensor. This is a value between 0 and 1, where 0 corresponds to a perfect point and 1 corresponds to a spread across the entire pixel.
[Unit("")]
[Range(0, 1)]
public double PointSpreadFactor
Field Value
QuantizationNoise
Quantization noise, which results from the discrete nature of digital signal processing. It occurs because the continuous signal is sampled and rounded to a finite precision (e.g., limited bit-depth of the sensor).
[Unit("ADU")]
[Range(0, 2147483647)]
[Metadata(IsAdvanced = true)]
public double QuantizationNoise
Field Value
ReadoutNoise
Readout noise, which is introduced by the sensor's electronics when reading the signal from the sensor pixels. This noise is caused by imperfections in the sensor's analog-to-digital conversion process and is typically fixed for a given sensor.
[Unit("ADU")]
[Range(0, 2147483647)]
[Metadata(IsAdvanced = true)]
public double ReadoutNoise
Field Value
SpectralWavelength
The spectral wavelength of the CCD sensor. This is the wavelength in nanometers that the sensor is sensitive to.
[Unit("nm")]
[Range(1, 1.7976931348623157E+308)]
public double SpectralWavelength
Field Value
TargetData
A list of target data that is used to store the data from the sensor. This is for serialization purposes and is used to store the targets.
[Hidden]
public List<JObject> TargetData
Field Value
- List<JObject>
ThermalNoise
Thermal noise, which arises from the random motion of charge carriers (electrons, for example) in the sensor material due to its temperature. This type of noise is present even when no light is detected and increases with the sensor's temperature.
[Unit("ADU")]
[Range(0, 2147483647)]
[Metadata(IsAdvanced = true)]
public double ThermalNoise
Field Value
Properties
Data
The data that is captured by the CCD sensor. This is the raw data that is captured by the sensor and is used to create an image. It is an array of integers, corresponding to the top-left pixel to the bottom-right pixel.
[Unit("ADU")]
[ReadOnly]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public int[] Data { get; }
Property Value
- int[]
MeanNoise
The average noise of the CCD sensor. This is the average noise across all of the pixels in the sensor from the most recent capture.
[Unit("ADU")]
[ReadOnly]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public int MeanNoise { get; }
Property Value
MeanSignal
The average signal and noise of the CCD sensor. This is the average across all of the pixels in the sensor from the most recent capture.
[Unit("ADU")]
[ReadOnly]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public int MeanSignal { get; }
Property Value
NumTargets
The number of targets that the CCD sensor can see, including any light sources or stars.
[Unit("")]
[ReadOnly]
[Metadata(IsAdvanced = true)]
public int NumTargets { get; }
Property Value
Resolution
The resolution of the CCD sensor. This is the number of pixels along each axis.
[Unit("px")]
[Range(1, 64)]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public int Resolution { get; set; }
Property Value
SignalToNoise
The signal-to-noise ratio of the CCD sensor. This is the ratio of the average signal to the average noise in the sensor.
[Unit(UnitType.DECIBEL)]
[ReadOnly]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public double SignalToNoise { get; }
Property Value
TotalSignal
The total signal of the CCD sensor. This is the sum of all the pixel values in the sensor from the most recent capture.
[Unit("ADU")]
[ReadOnly]
[Metadata(ContainedIn = "Out_CCDDataMsg")]
public int TotalSignal { get; }
Property Value
Methods
AddTarget(UniverseObject?, double, double, double)
Adds a target to the list of targets that the CCD sensor can see. This will create a new target with the specified parameters.
public void AddTarget(UniverseObject? obj, double diameter, double luminosity, double albedo)
Parameters
obj
UniverseObjectThe object to add
diameter
double[m] The diameter of the target
luminosity
double[W] The absolute luminosity of the target
albedo
double[-] The albedo fraction of the target reflection
AddTargetStruct(LightTarget)
Adds a target to the list of targets that the CCD sensor can see.
[Hidden]
public void AddTargetStruct(LightTarget target)
Parameters
target
LightTargetThe target to add
Capture()
A method that will capture the data of the payload and store it in some form of byte array.
public void Capture()
ClearBuffer()
Clears the cache of the CCD sensor, which will reset the data buffer to an empty state.
public void ClearBuffer()
OnBegin(double)
Called when the object is beginning ticking for the first time. This is when the simulation calls the very first tick and will run before the update call.
protected override void OnBegin(double time)
Parameters
time
double[s] Current time of the simulation before the tick
OnCreate()
Called when the 'Component' is created from the controller.
protected override void OnCreate()
OnLoad(double)
Called after all of the data has been loaded from a save state on this object. This enables any post-load operations to be performed and extra data to be loaded from the metadata.
protected override void OnLoad(double time)
Parameters
time
double[s] The current clock time of the simulation
OnSave()
Called before the object is saved into the save state. This ensures that any additional metadata can be saved on the object before it is automatically serialized.
protected override void OnSave()
OnUpdate(double, double)
Called when the object should update from the simulation tick. This will take in a time and a step, where the time is the time of the clock before updating the object.
protected override void OnUpdate(double time, double step)
Parameters
time
double[s] Current time of the simulation before the update
step
double[s] The time-step to update during this tick
RemoveTarget(UniverseObject)
Removes a target from the list of targets that the CCD sensor can see.
public void RemoveTarget(UniverseObject obj)
Parameters
obj
UniverseObjectThe object to remove
ShutDown()
Disables this device and zeroes out the data.
public void ShutDown()