HiRISE
 libHiRISE

Static Public Member Functions | Static Public Attributes

Instrument Class Reference

The Instrument defines constants and static functions used to characterize the MRO HiRISE instrument. More...

#include <Instrument.hh>

List of all members.

Static Public Member Functions

static unsigned int calibration_lines_minimum (unsigned int TDI, unsigned int binning)
 Gets the minimum number of calibration lines.
static int focal_plane_x_offset (unsigned int CPMM, unsigned int binning=1) throw (Out_of_Range, Invalid_Argument)
 Gets the focal plane X offset pixels.

Static Public Attributes

static const char *const ID = "UA::HiRISE::Instrument (2.14 2020/02/14 00:58:12)"
 Class identification name with source code version and date.
static const unsigned int CCDS = 14
 Total number of CCD array assemblies.
static const unsigned int CCD_UNKNOWN = 99
 Special CCD number when the actual CCD/CPMM number is unknown.
static const char *const CCD_NAMES []
 The identification names associated with each CCD, indexed by CPMM number.
static const char *const CCD_FILTER_NAMES []
 The filter names associated with each CCD, indexed by CPMM number.
static const unsigned int CCD_BY_CPMM []
 CCD sensor array numbers associated with each CCD, indexed by CPMM number.
static const unsigned int CPMM_BY_CCD []
 CPMM numbers associated with each CCD, indexed by CCD sensor array number.
static const char *const WAVELENGTH_UNITS = "NANOMETERS"
 The units of wavelength measurement for the CCD filters.
static const unsigned int CCD_CENTER_WAVELENGTHS []
 The filter center wavelength for each CCD, indexed by CPMM number.
static const unsigned int CCD_BANDWIDTHS []
 The filter wavelength bandwidth for each CCD, indexed by CPMM number.
static const double CCD_FOCAL_PLANE_X_OFFSETS_MM []
 Focal plane X offset in millimeters for each CCD, indexed by CPMM number.
static const double CCD_FOCAL_PLANE_Y_OFFSETS_MM []
 Focal plane Y offset in millimeters for each CCD, indexed by CPMM number.
static const double CCD_PIXEL_SIZE_MM = 0.012
 CCD detector pixel size in millimeters.
static const unsigned int CCD_CHANNELS = 2
 The number of data channels for each CCD assembly.
static const unsigned int CCD_CHANNEL_UNKNOWN = 9
 Special channel number when the actual channel number is unknown.
static const unsigned int CCD_IMAGE_SENSORS = 1024
 The number of image sensors in a single CCD channel line.
static const unsigned int MAX_BYTES_PER_PIXEL = 2
 The maximum number of bytes per pixel value.
static const unsigned int MAX_PIXEL_VALUES []
 The maximum valid pixel values.
static const unsigned int MAX_IMAGE_LINES = (1 << 23)
 Image lines upper limit (exclusive).
static const unsigned int TOTAL_TDI_STAGES = 4
 The number of time delay integration (TDI) stages available to each CCD.
static const unsigned int TDI_STAGES []
 Valid TDI stages values.
static const unsigned int TOTAL_BINNING_FACTORS = 6
 The number of binning factors available to each CCD.
static const unsigned int BINNING_FACTORS []
 Valid binning factor values.
static const unsigned int CCD_BINNED_PIXELS []
 The number of image pixels per line for each binning factor.
static const unsigned int STORED_LUTS = 28
 The number of stored LUTS available.
static const unsigned int STIMULATOR_LEDS = 3
 The number of stimulator LEDs.
static const char *const STIMULATOR_LED_NAMES []
 The identification names associated with each stim lamp.
static const double EXPOSURE_SETUP_MICROS = 99.48
 Exposure operation setup time.
static const unsigned int DELTA_LINE_TIME_MAX = 4194303
 Engineering_Header Delta_Line_Time maximum valid value.
static const double DELTA_LINE_TIME_TICK_NANOS = 62.5
 Engineering_Header Delta_Line_Time nanoseconds per tick.
static const double LINE_TIME_PRE_OFFSET = 74.0
 Offset for Engineering_Header Delta_Line_Time when calculating line time.
static const unsigned int TRIM_ADDITION_LINES = 180
 Number of scan lines after the trim lines before the first observation line.
static const unsigned int REVERSE_READOUT_LINES = 20
 Number of initial unbinned reverse readout observation lines.
static const unsigned int MASKED_LINES = 20
 Number of binned masked lines following the reverse readout lines.
static const unsigned int DLL_LOCKED = 0x11
 96 MHz DLL locked telemetry value.
static const unsigned int DLL_NOT_LOCKED = 0x5A
 96 MHz DLL out of lock telemetry value.
static const unsigned int SPACECRAFT_EPOCH = MRO_EPOCH
 MRO spacecraft clock epoch (year).
static const double MRO_CLOCK_SUBTICK_MICROS = (1000000.0 / (1 << 16))
 MRO spacecraft clock microseconds per subseconds tick.
static const double HIRISE_CLOCK_SUBTICK_MICROS = 16.0
 HiRISE clock microseconds per subseconds tick.
static const int SPACECRAFT_NAIF_ID = -74
 MRO NAIF spacecraft clock identifier.
static const unsigned int SSR_BYTE_BOUNDARY = 4
 Byte boundary (byte count modulus) for the solid state recorder.
static const int UNKNOWN_NUMBER = -9999
 Special integer value when the actual value is unknown.
static const int NOT_APPLICABLE_NUMBER = -9998
 Special integer value when it is not applicable in context.
static const char *const UNKNOWN_STRING = "UNKNOWN"
 Special text value when the actual value is unknown.
static const char *const NOT_APPLICABLE_STRING = "N/A"
 Special text value when it is not applicable in context.

Detailed Description

The Instrument defines constants and static functions used to characterize the MRO HiRISE instrument.

Author:
Bradford Castalia, UA/PIRL 2.15

Member Function Documentation

unsigned int calibration_lines_minimum ( unsigned int  TDI,
unsigned int  binning 
) [static]

Gets the minimum number of calibration lines.

The minimum number of calibration lines is:

REVERSE_READOUT_LINES + ceil ((MASKED_LINES + TDI) / binning)

Where the number of REVERSE_READOUT_LINES and MASKED_LINES are Instrument constants, and TDI and Binning are the Engineering Header TDI_Stages and Binning_Factor values respectively. The calculated real value is rounded up to the next line boundary; i.e. any partial line resulting from the division is entirely included as a calibration line.

N.B.: The calculated number of calibration lines is the minimum that contain data only suitable for calibration purposes, as opposed to observation image lines that contain data for the target image acquisition. However, it is possible for additional image lines to be designated as calibration lines.

Parameters:
TDIThe number of time delay integration stages.
binningThe line binning factor.
Returns:
The minimum number of calibration lines.
int focal_plane_x_offset ( unsigned int  CPMM,
unsigned int  binning = 1 
) throw (Out_of_Range, Invalid_Argument) [static]

Gets the focal plane X offset pixels.

The X offset in pixels of the first pixel within a CCD sensor array is provided for a given CPMM number and binning mode. This is useful for determining how each CCD channel is mapped into the focal plane. Note: CCD Channel 1 is to the left, and channel 0 is to the right, of the image observation data generated by each CCD array assembly.

Parameters:
CPMMThe CPMM number for which the offset is to be calculated.
binningThe applicable binning factor.
Returns:
The pixel offset relative to CPMM 6 (CCD sensor array 10), which is at offset 0.
Exceptions:
Out_of_RangeIf the CPMM index is invalid.
Invalid_ArgumentIf binning is 0. Any other binning factor is accepted.
See also:
CCD_CHANNELS
BINNING_FACTORS

References ID.


Member Data Documentation

const char *const ID = "UA::HiRISE::Instrument (2.14 2020/02/14 00:58:12)" [static]

Class identification name with source code version and date.

const unsigned int CCDS = 14 [static]

Total number of CCD array assemblies.

Referenced by CCD_ID::ccd_name(), and CCD_ID::cpmm_number().

const unsigned int CCD_UNKNOWN = 99 [static]

Special CCD number when the actual CCD/CPMM number is unknown.

Referenced by CCD_ID::CCD_ID(), CCD_ID::ccd_name(), Channel_ID::Channel_ID(), CCD_ID::cpmm_number(), and CCD_ID::parse().

const char *const CCD_NAMES [static]
Initial value:
        {
        "RED0",
        "RED1",
        "RED2",
        "RED3",
        "BG12",
        "RED4",
        "IR10",
        "IR11",
        "RED5",
        "BG13",
        "RED6",
        "RED7",
        "RED8",
        "RED9"
        }

The identification names associated with each CCD, indexed by CPMM number.

Each CCD sensor array has been given a name that includes an abbreviation for the color filter it uses and its CCD sensor array number. N.B.: The CCD sensor array number is not the same as the CPPM number reported by the instrument; use the CCD_BY_CPMM array to map CPMM numbers to CCD sensor array numbers, and the CPMM_BY_CCD to map CCD sensor array numbers to CPMM numbers.

Referenced by CCD_ID::ccd_name(), and CCD_ID::cpmm_number().

const char *const CCD_FILTER_NAMES [static]
Initial value:
        {
        "RED",
        "RED",
        "RED",
        "RED",
        "BLUE-GREEN",
        "RED",
        "NEAR-INFRARED",
        "NEAR-INFRARED",
        "RED",
        "BLUE-GREEN",
        "RED",
        "RED",
        "RED",
        "RED"
        }

The filter names associated with each CCD, indexed by CPMM number.

const unsigned int CCD_BY_CPMM [static]
Initial value:
 
        {
         0,
         1,
         2,
         3,
        12,
         4,
        10,
        11,
         5,
        13,
         6,
         7,
         8,
         9
        }

CCD sensor array numbers associated with each CCD, indexed by CPMM number.

The instrument software refers to CCDs by their CPMM number. However, due to the way the CCD sensor arrays were wired to the CPPM modules the CCD sensor array numbers are not always the same as the CPMM number. This array maps CPMM numbers to the corresponding CCD sensor array number.

See also:
CPMM_BY_CCD
const unsigned int CPMM_BY_CCD [static]
Initial value:
        {
         0,
         1,
         2,
         3,
         5,
         8,
        10,
        11,
        12,
        13,
         6,
         7,
         4,
         9
        }

CPMM numbers associated with each CCD, indexed by CCD sensor array number.

N.B.: All other arrays in this Instrument class are indexed by CPMM number.

See also:
CCD_BY_CPMM
const char *const WAVELENGTH_UNITS = "NANOMETERS" [static]

The units of wavelength measurement for the CCD filters.

const unsigned int CCD_CENTER_WAVELENGTHS [static]
Initial value:
        {
        700,
        700,
        700,
        700,
        500,
        700,
        900,
        900,
        700,
        500,
        700,
        700,
        700,
        700
        }

The filter center wavelength for each CCD, indexed by CPMM number.

Wavelength values are measured in WAVELENGTH_UNITS.

const unsigned int CCD_BANDWIDTHS [static]
Initial value:
        {
        300,
        300,
        300,
        300,
        200,
        300,
        200,
        200,
        300,
        200,
        300,
        300,
        300,
        300
        }

The filter wavelength bandwidth for each CCD, indexed by CPMM number.

Wavelength values are measured in WAVELENGTH_UNITS.

const double CCD_FOCAL_PLANE_X_OFFSETS_MM [static]
Initial value:
 
        {
        -96.0000,
        -71.9985,
        -48.0499,
        -24.0400,
          0.0000,
          0.0000,
          0.0000,
         24.0000,
         24.0000,
         24.0000,
         48.0000,
         72.0045,
         96.0014,
        120.0025
        }

Focal plane X offset in millimeters for each CCD, indexed by CPMM number.

The X offset of each CCD's first detector pixel measured in millimeters in the HiRISE focal plane assembly relative to CPMM 6 (CCD sensor array 10) left fiducial.

See also:
CCD_FOCAL_PLANE_Y_OFFSETS_MM
const double CCD_FOCAL_PLANE_Y_OFFSETS_MM [static]
Initial value:
        {
        -14.6257,
        -21.5130,
        -14.0498,
        -21.4869,
        -28.7552,
        -14.4594,
          0.0000,
         -7.2767,
        -21.4662,
        -36.0247,
        -14.2603,
        -21.4359,
        -14.5152,
        -21.8000
        }

Focal plane Y offset in millimeters for each CCD, indexed by CPMM number.

The Y offset of each CCD's first detector pixel measured in millimeters in the HiRISE focal plane assembly relative to CPMM 6 (CCD sensor array 10) left fiducial.

See also:
CCD_FOCAL_PLANE_X_OFFSETS_MM
const double CCD_PIXEL_SIZE_MM = 0.012 [static]

CCD detector pixel size in millimeters.

const unsigned int CCD_CHANNELS = 2 [static]

The number of data channels for each CCD assembly.

Each CCD array assembly is composed of a pair of CCD channels. Both channels act together as an image scanning unit, but each channel has its own distinct imaging sensors and pixel line data store. All instrument observation data is organized by channel.

Referenced by Channel_ID::channel_number().

const unsigned int CCD_CHANNEL_UNKNOWN = 9 [static]

Special channel number when the actual channel number is unknown.

Referenced by Channel_ID::Channel_ID(), Channel_ID::channel_name(), Channel_ID::channel_number(), and Channel_ID::parse().

const unsigned int CCD_IMAGE_SENSORS = 1024 [static]

The number of image sensors in a single CCD channel line.

Each CCD device of an instrument channel is an array of sensors organized as across-track lines and down-track TDI line stages. Each line contains the same number of sensors.

const unsigned int MAX_BYTES_PER_PIXEL = 2 [static]

The maximum number of bytes per pixel value.

const unsigned int MAX_PIXEL_VALUES [static]
Initial value:
        {
        254,
        0x3FFF  
        }

The maximum valid pixel values.

Any pixel value above the maximum is invalid. The instrument is expected to guarantee that only valid pixel values are produced. This array is indexed by the number of bytes per pixel - 1.

During data downlink operations from the spacecraft lost packets gaps are filled with values with all bits set. Pixels with gap values are therefore certain to be above the MAX_PIXEL_VALUES for any number of bytes per pixel.

const unsigned int MAX_IMAGE_LINES = (1 << 23) [static]

Image lines upper limit (exclusive).

Line header bytes 3-5 contain the observation line number as recorded by the instrument. The most significant bit of this field is being reserved to accommodate an additional "bad line" flag. The instrument can not generate enough observation lines to cause this reserved bit to be set by a valid line number.

const unsigned int TOTAL_TDI_STAGES = 4 [static]

The number of time delay integration (TDI) stages available to each CCD.

Each CCD device of an instrument channel is an array of sensors organized a across-track lines and down-track TDI line stages. Only one line has its sensor values sampled and scanned out to the CPMM storage for further processing. The sensor values from lines preceeding (up-track) the TDI line are cascaded into the following line to accumulate down-track sensor values. Since the rate at which sensor line values cascade (the scan line time) is set at the time the observation starts to coincide with the rate at which the image scene moves across the sensor lines, the effect is to build image signal strength and improve the signal-to-noise ratio at the expense of some image blurring due to timing and alignment inaccuracies.

See also:
TDI_STAGES
const unsigned int TDI_STAGES [static]
Initial value:
        {
        8,
        32,
        64,
        128
        }

Valid TDI stages values.

const unsigned int TOTAL_BINNING_FACTORS = 6 [static]

The number of binning factors available to each CCD.

After the selected CCD sensor line has its values read out into CPMM storage the accumulated observation sensor readings may be summed - binned - by pixel groups in both the cross-track and down-track directions. Each non-overlapping pixel group is square with a size specified by the binning factor. Each square of pixels is a patch of the image observation that, as a result of binning, produces a single new pixel value.

See also:
BINNING_FACTORS
const unsigned int BINNING_FACTORS [static]
Initial value:
        {
        1,
        2,
        3,
        4,
        8,
        16
        }

Valid binning factor values.

const unsigned int CCD_BINNED_PIXELS [static]
Initial value:
        {
        1024,
        512,
        342,
        256,
        128,
        64
        }

The number of image pixels per line for each binning factor.

Normally the number of pixels per line is the number of CCD_IMAGE_SENSORS divided by the binning factor in use. However, for the odd binning factor 3 the number of pixels per line is rounded up.

const unsigned int STORED_LUTS = 28 [static]

The number of stored LUTS available.

const unsigned int STIMULATOR_LEDS = 3 [static]

The number of stimulator LEDs.

const char *const STIMULATOR_LED_NAMES [static]
Initial value:
        {
        "RED",
        "BLUE-GREEN",
        "NEAR-INFRARED"
        }

The identification names associated with each stim lamp.

const double EXPOSURE_SETUP_MICROS = 99.48 [static]

Exposure operation setup time.

const unsigned int DELTA_LINE_TIME_MAX = 4194303 [static]

Engineering_Header Delta_Line_Time maximum valid value.

const double DELTA_LINE_TIME_TICK_NANOS = 62.5 [static]

Engineering_Header Delta_Line_Time nanoseconds per tick.

const double LINE_TIME_PRE_OFFSET = 74.0 [static]

Offset for Engineering_Header Delta_Line_Time when calculating line time.

const unsigned int TRIM_ADDITION_LINES = 180 [static]

Number of scan lines after the trim lines before the first observation line.

const unsigned int REVERSE_READOUT_LINES = 20 [static]

Number of initial unbinned reverse readout observation lines.

const unsigned int MASKED_LINES = 20 [static]

Number of binned masked lines following the reverse readout lines.

const unsigned int DLL_LOCKED = 0x11 [static]

96 MHz DLL locked telemetry value.

const unsigned int DLL_NOT_LOCKED = 0x5A [static]

96 MHz DLL out of lock telemetry value.

const unsigned int SPACECRAFT_EPOCH = MRO_EPOCH [static]

MRO spacecraft clock epoch (year).

const double MRO_CLOCK_SUBTICK_MICROS = (1000000.0 / (1 << 16)) [static]

MRO spacecraft clock microseconds per subseconds tick.

const double HIRISE_CLOCK_SUBTICK_MICROS = 16.0 [static]

HiRISE clock microseconds per subseconds tick.

const int SPACECRAFT_NAIF_ID = -74 [static]

MRO NAIF spacecraft clock identifier.

const unsigned int SSR_BYTE_BOUNDARY = 4 [static]

Byte boundary (byte count modulus) for the solid state recorder.

const int UNKNOWN_NUMBER = -9999 [static]

Special integer value when the actual value is unknown.

const int NOT_APPLICABLE_NUMBER = -9998 [static]

Special integer value when it is not applicable in context.

const char *const UNKNOWN_STRING = "UNKNOWN" [static]

Special text value when the actual value is unknown.

const char *const NOT_APPLICABLE_STRING = "N/A" [static]

Special text value when it is not applicable in context.


The documentation for this class was generated from the following files: