Observation
|
Observation manages the components of a MRO HiRISE instrument science observation data set. More...
#include <Observation.hh>
Public Member Functions | |
Observation () | |
Constructs an empty Observation. | |
Observation (std::istream &stream) | |
Constructs an Observation using the data obtained from a stream. | |
std::string | data_ID () const |
Gets the string representation of the observation data identification values for the current header data components. | |
std::vector< Data_Component * > & | data_components () |
Gets the vector of pointers to the Observation Data_Component header data objects. | |
unsigned int | line_count () const |
The number of lines read since the last set of header data components was read. | |
std::istream & | source () const |
Gets the istream being used as the source of observation data. | |
Observation & | source (std::istream &stream) |
Sets the input stream to be used as the source of observation data. | |
bool | components () |
Reads a set of header data components from the data source. | |
unsigned long | components (std::ostream &stream) const |
Writes the current set of header data components. | |
Observation & | line () |
Loads the next line of image data from the source into the Line cache. | |
std::ostream & | line (std::ostream &stream) const |
Writes the contents of the Line cache to a stream. | |
void | reset_line () |
Resets the Observation Image_Line structure. | |
Observation & | mirror_channel_1 (bool enable) |
Enables or disables mirroring of channel 1 Line data. | |
bool | mirror_channel_1 () const |
Tests if mirroring of channel 1 Line data is enabled. | |
unsigned long long | bytes_read () const |
Gets the number of bytes read since the data source stream was attached to this Observation. | |
std::ostream & | print (std::ostream &stream=std::cout, bool verbose=false) const |
Prints a detailed description of the current header data components. | |
std::string | data_set_version () const |
Gets the version string for the DATA_SET_ID and DATA_SET_NAME PDS PVL parameters. | |
Observation & | data_set_version (const char *version) |
Sets the version string for the DATA_SET_ID and DATA_SET_NAME PDS PVL parameters. | |
std::string | product_version () const |
Gets the version string for the PRODUCT_VERSION_ID parameter. | |
Observation & | product_version (const char *version) |
Sets the version string for the PRODUCT_VERSION_ID PDS PVL parameter. | |
idaeim::PVL::Aggregate * | PVL () const |
Produces an exhausitive PVL (Parameter Value Language) rendition of the header data components. | |
idaeim::PVL::Aggregate * | PVL_PDS () const |
Produces a set of PVL parameters for use in generating a PDS standards compliant EDR product label. | |
idaeim::PVL::Aggregate * | PVL_PDS (const Image_Line &image_line) const |
Static Public Member Functions | |
static void | mirror_channel_1_default (bool enable) |
Enables or disables the default mirroring of channel 1 Line data. | |
static bool | mirror_channel_1_default () |
Tests the state of default mirroring of channel 1 Line data. | |
static void | gap_map_shift (idaeim::PVL::Parameter *gap_map, int shift) |
Shifts the locations of gaps in a gap map. | |
Public Attributes | |
static const char *const *const | RECORD_TYPE = "UNDEFINED" |
static const char *const *const *const | DATA_SET_ID = "MRO-M-HIRISE-2-EDR" |
static const char *const *const *const *const | DATA_SET_NAME = "MRO MARS HIGH RESOLUTION IMAGING SCIENCE EXPERIMENT EDR" |
static const char *const *const *const *const *const | PRODUCER_INSTITUTION_NAME = "UNIVERSITY OF ARIZONA" |
static const char *const *const *const *const *const *const | PRODUCER_ID = "UA" |
static const char *const *const *const *const *const *const *const | PRODUCER_FULL_NAME = "ALFRED MCEWEN" |
static const char *const *const *const *const *const *const *const *const | INSTRUMENT_HOST_NAME = "MARS RECONNAISSANCE ORBITER" |
static const char *const *const *const *const *const *const *const *const *const | INSTRUMENT_HOST_ID = "MRO" |
static const char *const *const *const *const *const *const *const *const *const *const | INSTRUMENT_NAME = "HIGH RESOLUTION IMAGING SCIENCE EXPERIMENT" |
static const char *const *const *const *const *const *const *const *const *const *const *const | INSTRUMENT_ID = "HIRISE" |
static const char *const *const *const *const *const *const *const *const *const *const *const *const | TARGET_NAME = "MARS" |
static const char *const *const *const *const *const *const *const *const *const *const *const *const *const | FLIGHT_SOFTWARE_ID_PREFIX = "IE_FSW_V" |
static const char *const *const *const *const *const *const *const *const *const *const *const *const *const *const | PDS_NAMESPACE_PARAMETER_PREFIX = "MRO:" |
MROSP_Header | MROSP |
MROSP header. Usually absent (present in instrument manufacturer test data). | |
Science_Channel_Header | Science |
Science channel data containing a wealth of instrument settings. | |
LUT | Lookup_Table |
Lookup table used for 14-bit observation data to 8-bit image data mapping. | |
Engineering_Header | Engineering |
CPMM/Telemetry engineering info (just a few key settings). | |
Image_Line | Line |
Image data (lines cache). | |
Gap_Map | Gaps |
Gap range map for the channel data (excludes the MROSP). | |
std::vector< Data_Component * > | Components |
Data_Component header objects: Science, Lookup_Table, Engineering. | |
Static Public Attributes | |
static const char *const | ID = "UA::HiRISE::Observation (1.81 2020/02/14 01:17:18)" |
Class identification name with source code version and date. | |
static const char *const | PDS_VERSION_ID = "PDS3" |
Constant Parameter String values for the PDS label PVL contents. | |
static const char *const | DEFAULT_DATA_SET_VERSION |
Default data set version specification. | |
static const char *const | DEFAULT_PRODUCT_VERSION |
Default product version specification. | |
static const char *const | NON_PDS_NAMESPACE_PARAMETERS [] |
PDS label parameters that are not in the MRO namespace. | |
static const int | MINIMUM_MICROSECONDS_PRECISION |
The minimum precision (all digits) of microsecond time values. | |
static const int | PVL_PDS_BYTES = 32768 |
The absolute size to set the PDS PVL label. |
Observation manages the components of a MRO HiRISE instrument science observation data set.
It contains a full complement of HiRISE data components which it can read and write from any data stream (I/O is done sequentially).
N.B.: Observation data is always organized as MSB ordered data values (the most significant byte of a value occurs first; i.e. at the lowest address or stream position). It is expected to be in this order when read from the data source stream, and will be written in this order. This conforms to the established MRO data storage order requirement. However, the data values are always provided to the application in native data order (dependent on the host system architecture). This is transparently managed by the Data_Block base class of every Data_Component implementation.
1.50
Observation | ( | ) |
Constructs an empty Observation.
References Observation::Components, Observation::Engineering, Observation::Lookup_Table, and Observation::Science.
Observation | ( | std::istream & | stream ) | [explicit] |
Constructs an Observation using the data obtained from a stream.
The stream is expected to contain the following components:
Each set of components, including all of the Image_Line data following the headers, constitutes an observation channel. A data stream may contain more than one channel. Each component is encapsulated by its own class object.
stream | The istream from which to obtain the observation data. |
string data_ID | ( | ) | const |
Gets the string representation of the observation data identification values for the current header data components.
An observation data ID is expected to be composed of a primary observation ID that is the same for all channels of an observation plus a CCD ID (there are two data channels per CCD assembly used by the HiRISE instrument) and the channel number for the CCD.
References Science_Channel_Header::Channel, Science_Channel_Header::CPMM, Data_Component::get(), Science_Channel_Header::Observation_ID, Observation::Science, and Channel_ID::text().
std::vector<Data_Component*>& data_components | ( | ) | [inline] |
Gets the vector of pointers to the Observation Data_Component header data objects.
The vector is a convenience for treating the components as a consistent set of Data_Component objects. These are the same Data_Component objects that can be accessed individually by name.
Before reading a new set of header data components the vector is cleared. After each component has been successfully read the vector is updated with its Data_Component pointer. Thus the vector is also an indicator of which components have been read; an Observation that has not read any components will have data_components ().empty () return true.
The vector Data_Component entries (and individual names) are:
For test data generated by the HiRISE instrument manufacturer (Ball Aerospace, Inc.) an MROSP_Header may be present in the observation data stream, but it will not be included in the data components vector. It is not expected in the downlinked data from the MRO spacecraft.
The final data component of an Observation is the collection of image lines. Instead of reading all the image lines - there may be very many - an Image_Line cache is maintained. Use the line methods to step through the image line data.
References Observation::Components.
unsigned int line_count | ( | ) | const [inline] |
The number of lines read since the last set of header data components was read.
The Image_Line Line cache in the Observation contains the last image line that was read.
References Image_Line::count(), and Observation::Line.
istream & source | ( | ) | const |
Gets the istream being used as the source of observation data.
Warning: If the stream is repositioned (e.g. by I/O) then the Observation's expectations about the location of data components in the stream may be confused.
invalid_argument | If the Observation has no data source. |
References Observation::ID.
Observation& source | ( | std::istream & | stream ) | [inline] |
Sets the input stream to be used as the source of observation data.
This method is generally used when a data stream source needs to be provided to an empty Observation. It may also be provided to change from one data source to another. However care must be taken to ensure that the stream is properly positioned according to how it is used with the Observation object. For example, after switching to a new stream it is expected that a new set of components will be read to reinitialize the Observation, which requires that the stream be positioned at the beginning of a set of observation component headers.
N.B.: The count of the number of bytes_read is reset.
stream | The istream that will be used as the source of observation data. |
bool components | ( | ) |
Reads a set of header data components from the data source.
The data source must be positioned at the beginning of the header components. However, if the number of bytes read (since the stream source was attached to this Observation) is not a multiple of the Instrument::SSR_BYTE_BOUNDARY then additional bytes will be read to move the source stream to align on a boundary.
An attempt will be made to read an MROSP_Header data component. If the MROSP_Header thus produced identifies that the data is valid for that component then it is retained in the Observation's MROSP object and then a Science_Channel_Header data component is read. Otherwise the data from the MROSP object is moved into a Science_Channel_Header and the remainder of the Science_Channel_Header data is read in. In either case the Observation will now contain a Science object.
Following the Science_Channel_Header a LUT is read into the Observation's Lookup_Table object. Then an Engineering_Header is read into the Observation's Engineering object.
Finally an Image_Line is initialized for the number of pixels per line and bytes per pixel specified in the Science object. This is the Observation's Line object which will be used to cache image line data as it is read.
N.B.: A runtime_error exception will be thrown if line synchronization was lost during processing of the previous observation. In this case no data is read from the source.
The number of bytes_read is updated for each component read. The name field width for each component is reset to the maximum width of all component element names.
std::ios::failure | If a problem reading any of the data header components was encountered. |
std::length_error | If the Post_Binned_Pixels_Per_Line Science_Channel_Header::Element of the Science object contains an invalid value (thrown by the Line object). |
std::out_of_range | If the Pixel_Bytes Science_Channel_Header::Element of the Science object contains an invalid value (thrown by the Line object). |
std::runtime_error | If line synchronization has been lost. |
References Gap_Map::clear(), Engineering_Header::COMPONENT_BYTES, LUT::COMPONENT_BYTES, Science_Channel_Header::COMPONENT_BYTES, MROSP_Header::COMPONENT_BYTES, Observation::Components, Data_Component::data(), Observation::Engineering, Gap_Map::GAP_BYTE_VALUE, Observation::Gaps, Gap_Map::gaps_in(), Observation::ID, Gap_Map::in_gap(), Data_Block::input(), MROSP_Header::is_valid(), Observation::Line, Observation::Lookup_Table, Observation::MROSP, MROSP_Header::print(), Observation::reset_line(), Observation::Science, Gap_Map::sequence_threshold(), Gap_Map::set(), Gap_Map::shift(), and Image_Line::synchronization_lost().
Referenced by EDR_file(), and main().
unsigned long components | ( | std::ostream & | stream ) | const |
Writes the current set of header data components.
A MROSP_Header is never written even if it was present in the source data stream.
The components are written in the order they occur in the data_components vector. Thus if the vector is empty nothing is written.
stream | The ostream to which the components will be written. |
std::ios::failure | If there was a problem writing to the stream. |
References ID.
Observation & line | ( | ) |
Loads the next line of image data from the source into the Line cache.
The line_count and the bytes_read are updated. If the Channel Science_Channel_Header::Element of the Science component is 1 then the Line may be mirrored to compensate for the reverse readout order from the CCD.
std::out_of_range | If the line_count matches the Post_Binned_Lines Science_Channel_Header::Element of the Science component; i.e. there are no more lines to be read for the current channel. |
std::ios::failure | If there was a problem reading from the source. |
References Image_Line::bytes_read(), Science_Channel_Header::Channel, Engineering_Header::COMPONENT_BYTES, LUT::COMPONENT_BYTES, Science_Channel_Header::COMPONENT_BYTES, Image_Line::count(), Data_Component::data(), Observation::Engineering, Observation::Gaps, Gap_Map::gaps_in(), Data_Component::get(), Observation::Line, Image_Line::LINE_HEADER_BYTES, Observation::Lookup_Table, Image_Line::mirror(), Image_Line::next(), Image_Line::pixel_bytes(), Observation::Science, Gap_Map::set(), Gap_Map::shift(), and Data_Block::size().
Referenced by main().
ostream & line | ( | std::ostream & | stream ) | const |
Writes the contents of the Line cache to a stream.
All parts of the Image_Line - line header, buffer pixels, image pixels and black pixels - are written.
Special "observation" data sets from the instrument manufacturer contain extra "virtual" pixels at the end of the normal image data; these are also written if present.
stream | The ostream to which the Line data will be written. |
std::ios::failure | If there was a problem writing to the stream. |
References ID.
void reset_line | ( | ) |
Resets the Observation Image_Line structure.
The structure of the Image_Line managed by the Observation is expected to be consistent with the line structure definition values in the header data components:
The number of bytes per pixel is determined by the Science_Channel_Header Pixel_Bytes Element. However, if this value is invalid the Engineering_Header LUT_Compressed Element is used as a fallback: image data that is LUT compressed is always one byte per pixel, otherwise it is two bytes per pixel.
The number of pixels per line is determined by the Science_Channel_Header Post_Binned_Pixels_Per_Line Element.
The total number of lines is determined by the Science_Channel_Header Post_Binned_Lines Element. However, if this value is invalid the Engineering_Header Post_Binned_Lines is used instead.
The expected channel number, used to check the line headers, is determined by the Science_Channel_Header Channel and CPMM values.
The data source for the line is reset to the data source for this Observation.
N.B.: The line number and number of bytes read are reset to zero.
This method should be used if the contents of the Observation header data components has been changed in a way that affects any of the values dermining the line structure (e.g. by some method other than components()) and the Image_Line managed by the Observation needs to be reset accordingly.
References Engineering_Header::Binning_Factor, Image_Line::calibration_lines(), Instrument::calibration_lines_minimum(), Science_Channel_Header::Channel, Science_Channel_Header::CPMM, Image_Line::DEFAULT_CALIBRATION_LINES, Observation::Engineering, Image_Line::expected_channel(), Data_Component::get(), Observation::Line, Engineering_Header::LUT_Compressed, Instrument::MAX_BYTES_PER_PIXEL, Instrument::MAX_IMAGE_LINES, Science_Channel_Header::Pixel_Bytes, Image_Line::pixel_bytes(), Image_Line::pixel_count(), Engineering_Header::Post_Binned_Lines, Science_Channel_Header::Post_Binned_Lines, Science_Channel_Header::Post_Binned_Pixels_Per_Line, Observation::Science, Image_Line::source(), Engineering_Header::TDI_Stages, and Image_Line::total_lines().
Referenced by Observation::components().
Observation& mirror_channel_1 | ( | bool | enable ) | [inline] |
Enables or disables mirroring of channel 1 Line data.
Each of the HiRISE instrument 14 CCD assemblies is composed of two data channels - each getting its data from a CCD sensor device - aligned such that channel 0 is logically on the right, and channel 1 on the left, of a continuous linear pixel sensor array. Each CCD assembly has an electronics module (CPMM) that reads image data from the center of each CCD assembly. Thus channel 1 pixels are read out in reverse order from channel 0 resulting in channel 1 pixels having a logically mirrored view of the observation.
To compensate for the instrument image data readout reverse ordering of channel 1, when the Channel Science_Channel_Header::Element of the Science component is 1 the Observation line method can mirror the Line data to restore the logically consistent observation view.
The default Line mirroring behavior is determined by the MIRROR_CHANNEL_1 symbol when the Observation class is compiled. Thus if this class has been appropriately compiled at the user's site the mirroring behavior is not likely to be an issue. This method allows the mirroring behavior to be enabled or disabled at run time when that is needed.
enable | true for mirroring of channel 1 image data, false if the image data is not to be automatically mirrored. |
Referenced by main().
bool mirror_channel_1 | ( | ) | const [inline] |
Tests if mirroring of channel 1 Line data is enabled.
static void mirror_channel_1_default | ( | bool | enable ) | [inline, static] |
Enables or disables the default mirroring of channel 1 Line data.
When an Observation object is constructed the mode for mirroring of channel 1 data is set to this default state. The initial default state is set by the MIRROR_CHANNEL_1 compile time macro.
enable | true for enabling mirroring of channel 1 image data as the default; false otherwise. |
static bool mirror_channel_1_default | ( | ) | [inline, static] |
Tests the state of default mirroring of channel 1 Line data.
N.B.: This is a static class datum. An Observation object may be set to a different state.
unsigned long long bytes_read | ( | ) | const [inline] |
Gets the number of bytes read since the data source stream was attached to this Observation.
N.B.: The reported number of bytes read is the actual number of bytes that have been read from the source stream by this Observation object or its Image_Line object. The latter employs a cache mechanism that will have read more data than has yet been used. Thus the number of bytes read may remain constant even as additional line data is "read".
Referenced by main().
std::ostream & print | ( | std::ostream & | stream = std::cout , |
bool | verbose = false |
||
) | const |
Prints a detailed description of the current header data components.
If the Observation has a valid MROSP_Header then the MROSP component is printed first. Then each component registered in the data_components vector is printed.
stream | The ostream where the listing will be written. |
verbose | true if the listing is to be verbose, otherwise some structural details will be omitted for easier human consumption. |
References MROSP.
std::string data_set_version | ( | ) | const [inline] |
Gets the version string for the DATA_SET_ID and DATA_SET_NAME PDS PVL parameters.
Referenced by main().
Observation & data_set_version | ( | const char * | version ) |
Sets the version string for the DATA_SET_ID and DATA_SET_NAME PDS PVL parameters.
The version string is appended to the constant string values for the parameters after a "-V" or " V" prefix, respectively.
version | The version string pointer. If NULL, the DEFAULT_DATA_SET_VERSION will be used. The initial default version specification is set by the DATA_SET_VERSION compile time macro. |
References DEFAULT_DATA_SET_VERSION.
std::string product_version | ( | ) | const [inline] |
Gets the version string for the PRODUCT_VERSION_ID parameter.
Referenced by main().
Observation & product_version | ( | const char * | version ) |
Sets the version string for the PRODUCT_VERSION_ID PDS PVL parameter.
The version string is appended to the constant string values for the parameters after a "-V" or " V" prefix, respectively.
version | The version string pointer. If NULL, the DEFAULT_PRODUCT_VERSION will be used. The initial default version specification is set by the PRODUCT_VERSION compile time macro. |
Aggregate * PVL | ( | ) | const |
Produces an exhausitive PVL (Parameter Value Language) rendition of the header data components.
A HiRISE_Observation PVL Aggregate is produced with a PVL Group for each component in the data_components vector and having the same name as the component. However, the Lookup_Table component will not be included if there is an Engineering component and its LUT_Compressed Engineering_Header::Element is false (i.e. no LUT was used to produce the channel data). Every Data_Component Element of the component will have a Parameter with the same name as its Element name and a Value representing the Element data. Parameters will be organized into logical subgroups.
References Aggregate::add(), and Observation::Components.
idaeim::PVL::Aggregate* PVL_PDS | ( | ) | const [inline] |
Produces a set of PVL parameters for use in generating a PDS standards compliant EDR product label.
The Observation object must contain a set of valid Data_Component objects for valid PVL parameter values to be produced.
The PVL parameters are described in detail in the document "Software Interface Specification for HiRISE Experimental Data Record Products" produced for the Mars Reconnaissance Orbiter mission.
WARNING: Parameters that locate binary data objects have values that are the byte number of the component in the EDR product file. These values are set with the assumption that the EDR label will be written at the beginning of the file and padded with trailing space (' ') characters to a total size of PVL_PDS_BYTES. These parameters are:
Except for the LABEL_RECORDS parameter, which has the PVL_PDS_BYTES value, the values of all ^location parameters are the byte number where the corresponding data component is located (i.e. first byte) in the file. N.B.: The first byte of the file is byte 1.
The SOURCE_FILE_NAME parameter is given the value "UNKNOWN". This should be replaced with the filename to which the Observation data source stream is attached.
The RATIONALE_DESCRIPTION parameter is left as an empty string. It should probably be updated with an appropriately descriptive string.
The SOFTWARE_NAME parameter is given the Observation class ID string as its tentative value. It would be appropriate to update this parameter with the identification of the application software.
References Observation::Line, and Observation::PVL_PDS().
Referenced by main(), and Observation::PVL_PDS().
Aggregate * PVL_PDS | ( | const Image_Line & | image_line ) | const |
References Engineering_Header::ADC_IMAGE_TIMING, Engineering_Header::ADC_RESET_TIMING, Array::add(), Aggregate::add(), Science_Channel_Header::Analog_Power_On_Start_Time, Engineering_Header::Binning_Factor, Image_Line::calibration_lines(), Science_Channel_Header::Channel, Vectal< T >::clear(), Science_Channel_Header::CLOSED_LOOP, Engineering_Header::COMPONENT_BYTES, LUT::COMPONENT_BYTES, Science_Channel_Header::COMPONENT_BYTES, Image_Line::compressed_data(), Science_Channel_Header::CPMM, Science_Channel_Header::CPMM_Negative_5_Current, Science_Channel_Header::CPMM_Positive_29_Voltage, Science_Channel_Header::CPMM_PWS_Board_Temperature, Engineering_Header::Delta_Line_Time, Engineering_Header::DLL_Frequency_Correct_Count, Engineering_Header::DLL_Locked, Engineering_Header::DLL_Locked_Once, Engineering_Header::DLL_Reset_Count, Science_Channel_Header::DUTY_CYCLES, Science_Channel_Header::Expose_HiRISE_Time, Science_Channel_Header::Expose_MRO_Time, Science_Channel_Header::Exposure_Start_Time, Engineering_Header::FIRST_CLOCK, Science_Channel_Header::Focus_Motor_Temperature, Science_Channel_Header::Focus_Position, Engineering_Header::FPGA_Code_Version, Vectal< T >::front(), Science_Channel_Header::Heater_Control_Mode, Science_Channel_Header::Heater_Current, Science_Channel_Header::Heater_Zones_Enabled, ID, Science_Channel_Header::IE_PWS_Board_Temperature, Science_Channel_Header::IEA_Positive_5_Voltage, Science_Channel_Header::Instrument_Control_Board_Temperature, Science_Channel_Header::Instrument_Control_FPGA_Positive_2_5_Voltage, Science_Channel_Header::Line_Time_Nanoseconds, LUT::Linear, Engineering_Header::LUT_Compressed, Science_Channel_Header::LUT_Operation, Science_Channel_Header::Mech_TLM_Board_Temperature, Observation_ID::MISSION_PHASE_NAME, Aggregate::move_in(), Parameter::name(), Science_Channel_Header::NAMES, LUT::None, Science_Channel_Header::Observation_ID, Science_Channel_Header::Optical_Bench_Flexure_Temperature, Science_Channel_Header::Post_Binned_Lines, Science_Channel_Header::Powered_CPMMs_Map, Image_Line::PVL_description(), LUT::PVL_PDS_TABLE_NAME, Science_Channel_Header::Readout_Start_Time, Engineering_Header::SECOND_CLOCK, Data_Block::size(), LUT::Square_Root, LUT::Stored, Engineering_Header::TDI_Stages, Image_Line::total_lines(), LUT::Total_LUT_Types, Engineering_Header::Trimming, String::type(), and LUT::TYPE_NAMES.
void gap_map_shift | ( | idaeim::PVL::Parameter * | gap_map, |
int | shift | ||
) | [static] |
Shifts the locations of gaps in a gap map.
A gap map Parameter is an Array of location,size Integer pairs (a pair is itself a two element Array) that identifies where a downlink data gap occurs in the observation data stream. Each location is adjusted by a constant amount to reflect a corresponding relative shift of the gap map.
Due to PDS requirements, an empty gap map is represented by a single (0, 0) gap. This special pair is expected to be the first and only element of the gap map when there are no data gaps in the file. In this case the shift is not applied.
gap_map | A pointer to an idaeim::PVL::Parameter. If the pointer is NULL, its Value is not an Array, or the map is empty nothing is done. |
shift | The relative amount to change each gap location value. If the shift is 0, nothing is done. |
invalid_argument | If the gap_map refers to an idaeim::PVL::Aggregate Parameter (in this case the exception thrown is also an idaeim::Exception::Error::Invalid_Argument), or an element of the gap_map is not a pair of idaeim::PVL::Integer Values. |
References ID, Value::is_Array(), Value::is_Integer(), Parameter::name(), and Parameter::value().
const char *const ID = "UA::HiRISE::Observation (1.81 2020/02/14 01:17:18)" [static] |
Class identification name with source code version and date.
Reimplemented from Instrument.
Referenced by Observation::components(), main(), and Observation::source().
const char *const PDS_VERSION_ID = "PDS3" [static] |
Constant Parameter String values for the PDS label PVL contents.
const char *const *const RECORD_TYPE = "UNDEFINED" |
const char *const *const *const DATA_SET_ID = "MRO-M-HIRISE-2-EDR" |
const char *const *const *const *const DATA_SET_NAME = "MRO MARS HIGH RESOLUTION IMAGING SCIENCE EXPERIMENT EDR" |
const char *const *const *const *const *const PRODUCER_INSTITUTION_NAME = "UNIVERSITY OF ARIZONA" |
const char *const *const *const *const *const *const PRODUCER_ID = "UA" |
const char *const *const *const *const *const *const *const PRODUCER_FULL_NAME = "ALFRED MCEWEN" |
const char *const *const *const *const *const *const *const *const INSTRUMENT_HOST_NAME = "MARS RECONNAISSANCE ORBITER" |
const char *const *const *const *const *const *const *const *const *const INSTRUMENT_HOST_ID = "MRO" |
const char *const *const *const *const *const *const *const *const *const *const INSTRUMENT_NAME = "HIGH RESOLUTION IMAGING SCIENCE EXPERIMENT" |
const char *const *const *const *const *const *const *const *const *const *const *const INSTRUMENT_ID = "HIRISE" |
const char *const *const *const *const *const *const *const *const *const *const *const *const TARGET_NAME = "MARS" |
Referenced by usage().
const char *const *const *const *const *const *const *const *const *const *const *const *const *const FLIGHT_SOFTWARE_ID_PREFIX = "IE_FSW_V" |
const char *const *const *const *const *const *const *const *const *const *const *const *const *const *const PDS_NAMESPACE_PARAMETER_PREFIX = "MRO:" |
const char *const DEFAULT_DATA_SET_VERSION [static] |
const char *const DEFAULT_PRODUCT_VERSION [static] |
const char *const *const *const *const *const *const *const *const *const *const *const *const *const *const *const NON_PDS_NAMESPACE_PARAMETERS [static] |
{ "START_TIME", "SPACECRAFT_CLOCK_START_COUNT", "STOP_TIME", "SPACECRAFT_CLOCK_STOP_COUNT", "PRODUCT_CREATION_TIME", "FILTER_NAME", "CENTER_FILTER_WAVELENGTH", "BANDWIDTH" }
PDS label parameters that are not in the MRO namespace.
All group parameter names generated in the PVL_PDS method (not parameters generated by data component objects) are filtered for possible inclusion in the MRO namespace. Those parameters that are in the namespace have "MRO:" prefixed to their name. There may be some parameters that are not in a group that also have their name filtered in this way, but they are exceptions (by contrast, there are relatively few group parameters that are not in the MRO namespace).
const int MINIMUM_MICROSECONDS_PRECISION [static] |
The minimum precision (all digits) of microsecond time values.
const int PVL_PDS_BYTES = 32768 [static] |
The absolute size to set the PDS PVL label.
Referenced by main().
MROSP header. Usually absent (present in instrument manufacturer test data).
Referenced by Observation::components(), list_data(), and list_selections().
Science channel data containing a wealth of instrument settings.
Referenced by Observation::components(), Observation::data_ID(), Observation::line(), list_data(), list_selections(), main(), Observation::Observation(), and Observation::reset_line().
Lookup table used for 14-bit observation data to 8-bit image data mapping.
Referenced by Observation::components(), Observation::line(), list_data(), list_selections(), main(), and Observation::Observation().
CPMM/Telemetry engineering info (just a few key settings).
Referenced by Observation::components(), Observation::line(), list_data(), list_selections(), main(), Observation::Observation(), and Observation::reset_line().
Image data (lines cache).
Referenced by Observation::components(), Observation::line(), Observation::line_count(), main(), Observation::PVL_PDS(), and Observation::reset_line().
Gap range map for the channel data (excludes the MROSP).
Referenced by Observation::components(), Observation::line(), list_selections(), and main().
std::vector<Data_Component*> Components |
Data_Component header objects: Science, Lookup_Table, Engineering.
Referenced by Observation::components(), Observation::data_components(), list_selections(), Observation::Observation(), and Observation::PVL().