The PIDF Sensor Block contains descriptions of measurements defined under both the VIDF sensor data class and the VIDF ancillary data class. The block name is unfortunate but came into existence when only VIDF sensor class measurements were included here. It should be noted that descriptions of sensor class data are only made within this PIDF block while ancillary data may be defined both here and in the PIDF Ancillary Data Block.
The PIDF Sensor definitions are used by most GUI applications to present a list of measurements to a user. The sensor definition structure provides the location of the measurement in the UDF definition as well as its defined units and descriptive labels.
A PIDF sensor definition block consists of a single field which gives the number of sensor definition structures followed by the individual structures themselves, each of which contains one measurement definition. A PIDF sensor definition block has the generalized form:
int num_sensors = ENTRY; struct SensorN { string name = "Entry"; string component = "Entry"; char source = 'Entry'; string scf_filename = "Entry"; char pitch_angle_flag = 'Entry'; int pidf_sensor_num = N int vidf_sensor_num = Entry; int anc_sensor = Entry; int group_num = Entry; int scan_block_info = Entry; int binning_index = Entry; int display_flag = Entry; int num_units = Entry; int unit_number = Entry; };where N is a structure counter which begins at 0 and runs through the number of defined sensor structures less 1. The fields within the structure can be entered in any order.
Not all of the above structure fields need be present in a structure defintion. Only those which are applicable to the measurement being defined need be included. Default values are supplied for any unspecified field.
The number of defined Sensor structures in the PIDF. If there are no defined Sensor structures listed in the PIDF then this field should be set to 0. The num_sensors field can be placed anywhere within the overall PIDF file above the first Sensor structure definition and external to any internal PIDF structures. It is an int field.
A descriptive label for the measurement. The provided label should be reasonably short and should not contain any reference to units. This is a string field which if not included in the Sensor structure is defaulted to a NULL.
A short descriptive label for the measurement. This label is generally a decimated version of what is given in the name field and is meant to be used in conjunction with the group name under which the measurement falls. As such references to text already stated in the group_name are normally omitted.
As an example, a measurement having name field of Satellite X Position is listed under a group with a group_name of Satellite Position. An acceptable component label for the measurement would be X.
In cases where there is only a single measurement within a group, the group_name generally matches the sensor name the component name is often set to N/A.
This is a string field which if not included in the Sensor structure is defaulted to a NULL.
The measurement source. The recognized field values are listed below.
| VALUE | DEFINITION |
|---|---|
| A | The measurement is listed in the UDF VIDF definition as ancillary data. |
| S | The measurement is the result of an SCF algorithm |
| V | The measurement is listed in the UDF VIDF definition as sensor data. |
This is a char field.
The full path name to the file containing the SCF algorithm definition. The field is only applicable and only needs to be included in the structure if the source field has been set to 'S'.
This is a string field which if not included in the Sensor structure is defaulted to a NULL.
The number of the Sensor structure. This is an int field which must be present in the structure.
The id of the measurement within its defined source. If the measurement is a UDF sensor then this field holds the VIDF sensor number of the measurement. If the measurement source is an SCF algorithm then the field contains the offset into the SCF output array to the variable to be obtained. Finally, if measurement source is the UDF ancillary data then this field holds the VIDF ancillary data set number of the measurement.
This is an int field which must be present in the structure.
The VIDF sensor number to use when obtaining ancillary data. This field is only applicable and only needs to be included in the Sensor structure if source field has been set to 'A'. The sensor number is needed since ancillary data may be sensor dependent, that is may return different values for different VIDF sensors.
This is an int field which if not included in the Sensor structure is defaulted to a -1. A value of -1 when the source is ancillary data indicates that the ancillary data can be obtained from any defined UDF sensor.
The offset into the group name array under which this measurement is to be listed.
This is an int field which must be present in the structure.
The structure number of the PIDF scan definition to use in converting the measurement's array index values to physical units. The field is only applicable and only needs to be included in the structure if the defined measurement returns either an array or matrix of data.
This is an int field which if not included in the Sensor structure is defaulted to a -1.
A flag which indicates if pitch angle data is available for this measurement. The field only needs to be included in the structure if the Pitch Angle Defined field in the VIDF has been set to 1 in which case the pitch_angle_flag field should be set to Y.
This is a char field which if not included in the Sensor structure it is defaulted to 'N'.
The number of unit definitions included in the structure. There should always be at least one unit definition even if does no conversion and returns the UDF data in its raw or stored format.
This is an int field which must be present in the structure.
The structure number of one of the PIDF unit definitions. This provides the information to take the raw measurement into one of the unit definitions provided for it. There are num_units instances of this field within the Sensor structure.
This is an int field of which at least one instance must be present in the structure.
The structure number of one of the PIDF binning definitions. This field is included in the Sensor structure only if the measurement returns array or matrix data and then only if there is a binning scheme which has been defined for it.
This is an int field which if not included in the Sensor structure it is defaulted to a -1.
This field has been depreicated. It was intended to hold a flag which allowed a GUI menu to determine if the measurement should be included in a list of selectable measurements. A value of 1 indicated that the measurement should be included and a value of 0 indicated that it should be omitted. Because the PIDF is not a time tagged file, however, this field was found to be useless since it was either always on or off.
This is an int field which if not included in the Sensor structure it is defaulted to a 1.
The following are examples of fully functional PIDF sensor definition blocks. The entries are shown within the overall PIDF definition braces which would occur only once within the PIDF file.
pidf v2_IMES0CHS {
$*********************************************************************
int num_sensors = 10; $$ no. sensors
struct Sensor0 {
$-----------------------SENSOR 00-------------------------------------
string name = "Charge Histogram Sensor 0"; $$ sensor name
string component = "Sensor 0"; $$ component name
char source = 'V'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 0; $$ pidf sen num
int vidf_sensor_num = 0; $$ sen vidf no.
int group_num = 0; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 0; $$ unit number
};
struct Sensor1 {
$---------------------SENSOR 01 ---------------------------------------
string name = "Revision Num"; $$ sensor name
string component = "Revision Num"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 1; $$ pidf sen num
int vidf_sensor_num = 0; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 4; $$ unit number
};
struct Sensor2 {
$---------------------SENSOR 02 ---------------------------------------
string name = "Status Bits"; $$ sensor name
string component = "Status Bits"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 2; $$ pidf sen num
int vidf_sensor_num = 4; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 4; $$ unit number
};
struct Sensor3 {
$---------------------SENSOR 03 ---------------------------------------
string name = "Integration Time"; $$ sensor name
string component = "Integration Time"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 3; $$ pidf sen num
int vidf_sensor_num = 5; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 3; $$ unit number
};
struct Sensor4 {
$---------------------SENSOR 04 ---------------------------------------
string name = "Nadir Count"; $$ sensor name
string component = "Nadir Count"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 4; $$ pidf sen num
int vidf_sensor_num = 6; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 4; $$ unit number
};
struct Sensor5 {
$---------------------SENSOR 05 ---------------------------------------
string name = "Packet Count"; $$ sensor name
string component = "Packet Count"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 5; $$ pidf sen num
int vidf_sensor_num = 7; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 4; $$ unit number
};
struct Sensor6 {
$---------------------SENSOR 06 ---------------------------------------
string name = "High Voltage Off"; $$ sensor name
string component = "High Voltage Off"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 6; $$ pidf sen num
int vidf_sensor_num = 8; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 2; $$ no. of units
int unit_number = 5; $$ unit number
int unit_number = 6; $$ unit number
};
struct Sensor7 {
$---------------------SENSOR 07 ---------------------------------------
string name = "High Voltage On"; $$ sensor name
string component = "High Voltage On"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 7; $$ pidf sensor num
int vidf_sensor_num = 9; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 2; $$ no. of units
int unit_number = 5; $$ unit number
int unit_number = 6; $$ unit number
};
struct Sensor8 {
$---------------------SENSOR 08 ---------------------------------------
string name = "Sun Pulse"; $$ sensor name
string component = "Sun Pulse"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 8; $$ pidf sen num
int vidf_sensor_num = 10; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 2; $$ no. of units
int unit_number = 5; $$ unit number
int unit_number = 6; $$ unit number
};
struct Sensor9 {
$---------------------SENSOR 09 ---------------------------------------
string name = "Compression Flag"; $$ sensor name
string component = "Compression Flag"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 9; $$ pidf sen num
int vidf_sensor_num = 11; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int scan_block_info = 0; $$ scan block no.
int num_units = 1; $$ no. of units
int unit_number = 4; $$ unit number
};
$*********************************************************************
};
pidf v2_IMMSTATS {
$*********************************************************************
int num_sensors = 10; $$ no. sensors
struct Sensor0 {
$-----------------------SENSOR 00-------------------------------------
string name = "Start Height"; $$ sensor name
string component = "Start Height"; $$ component name
char source = 'V'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 0; $$ pidf sen num
int vidf_sensor_num = 0; $$ sen vidf no.
int group_num = 0; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 2; $$ unit number
};
struct Sensor1 {
$-----------------------SENSOR 01-------------------------------------
string name = "Stop Height"; $$ sensor name
string component = "Stop Height"; $$ component name
char source = 'V'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 1; $$ pidf sen num
int vidf_sensor_num = 0; $$ sen vidf no.
int group_num = 0; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 0; $$ unit number
};
struct Sensor2 {
$-----------------------SENSOR 02-------------------------------------
string name = "Start Position"; $$ sensor name
string component = "Start Position"; $$ component name
char source = 'V'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 2; $$ pidf sen num
int vidf_sensor_num = 0; $$ sen vidf no.
int group_num = 0; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 1; $$ unit number
};
struct Sensor3 {
$-----------------------SENSOR 03-------------------------------------
string name = "Stop Position"; $$ sensor name
string component = "Stop Position"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 3; $$ pidf sen num
int vidf_sensor_num = 1; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 0; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 3; $$ unit number
};
struct Sensor4 {
$-----------------------SENSOR 04-------------------------------------
string name = "Coarse Azimuth"; $$ sensor name
string component = "Coarse Azimuth"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 4; $$ pidf sen num
int vidf_sensor_num = 0; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int num_units = 2; $$ no. of units
int unit_number = 7; $$ unit number
int unit_number = 9; $$ unit number
};
struct Sensor5 {
$-----------------------SENSOR 05-------------------------------------
string name = "Fine Azimuth"; $$ sensor name
string component = "Fine Azimuth"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 5; $$ pidf sen num
int vidf_sensor_num = 1; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int num_units = 2; $$ no. of units
int unit_number = 4; $$ unit number
int unit_number = 10; $$ unit number
};
struct Sensor6 {
$-----------------------SENSOR 06-------------------------------------
string name = "Total Azimuth"; $$ sensor name
string component = "Total Azimuth"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 6; $$ pidf sen num
int vidf_sensor_num = 0; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 1; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 11; $$ unit number
};
struct Sensor7 {
$-----------------------SENSOR 07-------------------------------------
string name = "Time Of Flight"; $$ sensor name
string component = "Time Of Flight"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 7; $$ pidf sen num
int vidf_sensor_num = 1; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 2; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 5; $$ unit number
};
struct Sensor8 {
$-----------------------SENSOR 08-------------------------------------
string name = "Head ID"; $$ sensor name
string component = "Head ID"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 8; $$ pidf sen num
int vidf_sensor_num = 1; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 2; $$ sen group no.
int num_units = 1; $$ no. of units
int unit_number = 6; $$ unit number
};
struct Sensor9 {
$-----------------------SENSOR 09-------------------------------------
string name = "Packet Counter"; $$ sensor name
string component = "N/A"; $$ component name
char source = 'A'; $$ source (V) (S)
string scf_filename = "N/A"; $$ not applicable
char pitch_angle_flag = 'N'; $$ pa calculation
int pidf_sensor_num = 8; $$ pidf sen num
int vidf_sensor_num = 0; $$ anc vidf no.
int anc_sensor = 0; $$ sen vidf no.
int group_num = 2; $$ group no.
int num_units = 1; $$ no. of units
int unit_number = 8; $$ unit number
};
$*********************************************************************
};
| &larr Previous | TOC | HOME | Next &rarr |
| Unit Block | Array Index Block |