/* * $Id: dda.x,v 1.1 1995/04/19 23:59:25 dzirkle Exp dzirkle $ * * DMSP Digital Archive Data Formats * * * DRAFT * version 0.93 * December 28, 1993 * */ /* * Moment in time */ struct DDAEpoch { short Year; /* 4 digit year */ short DayOfYear; /* day of year (January 1 = 1) */ double SecondsOfDay; /* seconds of day [0.0 - 86400.0) */ }; /* * Spacecraft ephemeris */ struct DDAEphemeride { float Latitude; /* Geodetic Latitude in degrees */ float Longitude; /* Longitude in degrees (0 - 360) */ float Altitude; /* Altitude in kilometers */ float Heading; /* Heading west of north */ }; /* * Spacecraft information */ struct DDASpacecraftInfo { DDAEpoch Epoch; DDAEphemeride Ephemeride; }; /* ======================================================= */ /* ========================= OIS ========================= */ /* ======================================================= */ /* * Scan line related information */ struct DDA_OLSScanPrefix { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ float ScannerOffset; /* Scanner offset in radians */ u_char ScanDirection; /* Actual scan direction */ float SolarElevation; /* Solar elevation in degrees */ float SolarAzimuth; /* Solar azimuth in degrees */ float LunarElevation; /* Lunar elevation in degrees */ float LunarAzimuth; /* Lunar azimuth in degrees */ float LunarPhase; /* Lunar phase in degrees */ float GainCode; /* Gain code in decibels */ u_char GainMode; /* Gain mode: 0 = lin, 1 = log */ u_char GainSubMode; /* Gain sub-mode */ u_char HotTCalSegmentID; /* Hot T cal seg ID: 0 = right, 1 = left */ u_char ColdTCalSegmentID; /* Cold T cal seg ID: 0 = right, 1 = left */ u_char HotTCal; /* Hot T calibration */ u_char ColdTCal; /* Cold T calibration */ u_char PMTCal; /* Photomultiplier tube calibration */ float TChannelGain; /* T channel gain in decibels */ }; /* * Number of video samples per smooth scan line */ const DDA_SMOOTH_OLS_SAMPLES = 1465; /* * OLS Smooth scan line */ struct DDA_OLSSmoothVideo { u_int QualityFlag; /* scan line quality flag */ opaque Pixels [ DDA_SMOOTH_OLS_SAMPLES ]; /* scan line pixels */ }; /* * OLS Interleaved Smooth scan line */ struct DDA_OISScanline { DDA_OLSScanPrefix ScanPrefix; /* Scan line prefix */ DDA_OLSSmoothVideo LightVideoData; /* 6 bit visible data */ DDA_OLSSmoothVideo ThermalVideoData; /* 8 bit thermal data */ }; /* * Number of video samples per fine scan line */ const DDA_FINE_OLS_SAMPLES = 7322; /* * OLS Fine scan line */ struct DDA_OLSFineVideo { u_int QualityFlag; /* scan line quality flag */ opaque Pixels [ DDA_FINE_OLS_SAMPLES ]; /* scan line pixels */ }; /* * OLS NonInterleaved Fine Light scan line */ struct DDA_OLFScanline { DDA_OLSScanPrefix ScanPrefix; /* Scan line prefix */ DDA_OLSFineVideo VideoData; /* 6 bit fine data */ }; /* * OLS NonInterleaved Fine Thermal scan line */ struct DDA_OTFScanline { DDA_OLSScanPrefix ScanPrefix; /* Scan line prefix */ DDA_OLSFineVideo VideoData; /* 6 bit fine data */ }; /* * OLS Interleaved Fine scan line */ struct DDA_OIFScanline { DDA_OLSScanPrefix ScanPrefix; /* Scan line prefix */ DDA_OLSFineVideo LightVideoData; /* 6 bit visible data */ DDA_OLSFineVideo ThermalVideoData; /* 6 bit thermal data */ }; /* * Number of video samples per browse scan line */ const DDA_BROWSE_OLS_SAMPLES = 293; /* * OLS Browse scan line */ struct DDA_OLSBrowseVideo { u_int QualityFlag; /* scan line quality flag */ opaque Pixels [ DDA_BROWSE_OLS_SAMPLES ]; /* scan line pixels */ }; /* * OLS Interleaved Smooth Browse scan line */ struct DDA_OIBScanline { DDA_OLSScanPrefix ScanPrefix; DDA_OLSBrowseVideo LightVideoData; /* 6 bit visible data */ DDA_OLSBrowseVideo ThermalVideoData; /* 6 bit thermal data */ }; /* ======================================================= */ /* ========================= SSM/I ======================= */ /* ======================================================= */ /* * * SSM/I Archive Format Terminology * -------------------------------- * * channel - 1 of the 7 frequency/polarization pairs: * 19V, 19H, 22V, 37V, 37H, 85V, 85H * * low channels - 19V, 19H, 22V, 37V, 37H * high channels - 85V, 85H * * scan - 1 of the 4 measurement sweeps (A, B, A', B') * cycle - 4 contiguous scans; minimum required to contain all measurements * taken by the instrument * */ /* * Number of hot and cold load readings taken in an SSM/I scan */ const DDA_SSMI_LOADS = 5; /* * Number of automatic gain control readings per SSM/I scan */ const DDA_SSMI_GAINS = 3; /* * Number of scene stations per SSM/I scan */ const DDA_SSMI_SCENE_STATIONS = 128; /* * SSM/I calibration information */ struct DDA_SSMICalibration { float HotLoadTemp1; /* hot load 1 temperature, Kelvins */ float HotLoadTemp2; /* hot load 2 temperature, Kelvins */ float HotLoadTemp3; /* hot load 3 temperature, Kelvins */ float RFMixerTemp; /* RF mixer temperature, Kelvins */ float ForwardRadiatorTemp; /* fwd. radiator temperature, Kelvins */ float Scale85V; /* 85V counts-to-Ta scale, Kelvins/count */ float Scale85H; /* 85H counts-to-Ta scale, Kelvins/count */ float Scale37V; /* 37V counts-to-Ta scale, Kelvins/count */ float Scale37H; /* 37H counts-to-Ta scale, Kelvins/count */ float Scale22V; /* 22V counts-to-Ta scale, Kelvins/count */ float Scale19V; /* 19V counts-to-Ta scale, Kelvins/count */ float Scale19H; /* 19H counts-to-Ta scale, Kelvins/count */ float Bias85V; /* 85V counts-to-Ta bias, Kelvins */ float Bias85H; /* 85H counts-to-Ta bias, Kelvins */ float Bias37V; /* 37V counts-to-Ta bias, Kelvins */ float Bias37H; /* 37H counts-to-Ta bias, Kelvins */ float Bias22V; /* 22V counts-to-Ta bias, Kelvins */ float Bias19V; /* 19V counts-to-Ta bias, Kelvins */ float Bias19H; /* 19H counts-to-Ta bias, Kelvins */ u_int ReferenceVoltage; /* reference voltage, counts */ u_int ReferenceReturn; /* return voltage, counts */ u_int AAGC[ DDA_SSMI_GAINS ]; /* A automatic gain control, counts */ u_int BAGC[ DDA_SSMI_GAINS ]; /* B automatic gain control, counts */ u_int APrimeAGC[ DDA_SSMI_GAINS ]; /* A' automatic gain control, counts */ u_int BPrimeAGC[ DDA_SSMI_GAINS ]; /* B' automatic gain control, counts */ }; /* * A (and A') scan parameters * * In the A and A' scans of a cycle, both the high and low frequencies * are sampled. Each of the 128 scene stations has an 85 GHz sample, * and every other scene station has the low frequency samples, starting * with the first scene station in the scan. The 85 GHz scene stations * which are in register with the low frequency are commonly known as * the "odd" scene stations, even though in this format they are indexed * with even values. * * Example: * * Latitude[0],Longitude[0] : Ta85V[0] Ta85H[0] ... Ta19V[0] Ta19H[0] * Latitude[1],Longitude[1] : Ta85V[1] Ta85H[1] * Latitude[2],Longitude[2] : Ta85V[2] Ta85H[2] ... Ta19V[1] Ta19H[1] * Latitude[3],Longitude[3] : Ta85V[3] Ta85H[3] * Latitude[4],Longitude[4] : Ta85V[4] Ta85H[4] ... Ta19V[2] Ta19H[2] * . * . * . */ struct AScan { DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[128]; /* geodetic latitudes, degrees */ float Longitude[128]; /* longitudes, 0-360 degrees */ float Ta85V[128]; /* 85V antenna temperatures, Kelvins */ float Ta85H[128]; /* 85H antenna temperatures, Kelvins */ float Ta37V[64]; /* 37V antenna temperatures, Kelvins */ float Ta37H[64]; /* 37H antenna temperatures, Kelvins */ float Ta22V[64]; /* 22V antenna temperatures, Kelvins */ float Ta19V[64]; /* 19V antenna temperatures, Kelvins */ float Ta19H[64]; /* 19H antenna temperatures, Kelvins */ u_int QualityFlag85V[128]; /* 85V quality flags */ u_int QualityFlag85H[128]; /* 85H quality flags */ u_int QualityFlag37V[64]; /* 37V quality flags */ u_int QualityFlag37H[64]; /* 37H quality flags */ u_int QualityFlag22V[64]; /* 22V quality flags */ u_int QualityFlag19V[64]; /* 19V quality flags */ u_int QualityFlag19H[64]; /* 19H quality flags */ u_int HotLoad85V[ DDA_SSMI_LOADS ]; /* 85V hot load readings, counts */ u_int HotLoad85H[ DDA_SSMI_LOADS ]; /* 85H hot load readings, counts */ u_int HotLoad37V[ DDA_SSMI_LOADS ]; /* 37V hot load readings, counts */ u_int HotLoad37H[ DDA_SSMI_LOADS ]; /* 37H hot load readings, counts */ u_int HotLoad22V[ DDA_SSMI_LOADS ]; /* 22V hot load readings, counts */ u_int HotLoad19V[ DDA_SSMI_LOADS ]; /* 19V hot load readings, counts */ u_int HotLoad19H[ DDA_SSMI_LOADS ]; /* 19H hot load readings, counts */ u_int ColdLoad85V[ DDA_SSMI_LOADS ]; /* 85V cold load readings, counts */ u_int ColdLoad85H[ DDA_SSMI_LOADS ]; /* 85H cold load readings, counts */ u_int ColdLoad37V[ DDA_SSMI_LOADS ]; /* 37V cold load readings, counts */ u_int ColdLoad37H[ DDA_SSMI_LOADS ]; /* 37H cold load readings, counts */ u_int ColdLoad22V[ DDA_SSMI_LOADS ]; /* 22V cold load readings, counts */ u_int ColdLoad19V[ DDA_SSMI_LOADS ]; /* 19V cold load readings, counts */ u_int ColdLoad19H[ DDA_SSMI_LOADS ]; /* 19H cold load readings, counts */ }; /* * B (and B') scan parameters */ struct BScan { DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[128]; /* geodetic latitudes, degrees */ float Longitude[128]; /* longitudes, 0-360 degrees */ float Ta85V[128]; /* 85V antenna temperatures, Kelvins */ float Ta85H[128]; /* 85H antenna temperatures, Kelvins */ u_int QualityFlag85V[128]; /* 85V quality flags */ u_int QualityFlag85H[128]; /* 85H quality flags */ u_int HotLoad85V[ DDA_SSMI_LOADS ]; /* 85V hot load readings, counts */ u_int HotLoad85H[ DDA_SSMI_LOADS ]; /* 85H hot load readings, counts */ u_int ColdLoad85V[ DDA_SSMI_LOADS ]; /* 85V cold load readings, counts */ u_int ColdLoad85H[ DDA_SSMI_LOADS ]; /* 85H cold load readings, counts */ }; /* * SSM/I Cycle (antenna temperatures) */ struct DDA_SSMICycle { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ DDA_SSMICalibration Calibration; /* Ta calibration coefficients */ AScan A; /* A scan antenna temperatures */ BScan B; /* B scan antenna temperatures */ AScan APrime; /* A' scan antenna temperatures */ BScan BPrime; /* B' scan antenna temperatures */ }; /* ======================================================= */ /* ====================== SSM/I Tb ======================= */ /* ======================================================= */ /* * A (and A') scan parameters (Tb) */ struct AScanTb { DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[128]; /* geodetic latitudes, degrees */ float Longitude[128]; /* longitudes, 0-360 degrees */ float Tb85V[128]; /* 85V brightness temperatures, Kelvins */ float Tb85H[128]; /* 85H brightness temperatures, Kelvins */ float Tb37V[64]; /* 37V brightness temperatures, Kelvins */ float Tb37H[64]; /* 37H brightness temperatures, Kelvins */ float Tb22V[64]; /* 22V brightness temperatures, Kelvins */ float Tb19V[64]; /* 19V brightness temperatures, Kelvins */ float Tb19H[64]; /* 19H brightness temperatures, Kelvins */ u_int QualityFlag85V[128]; /* 85V quality flags */ u_int QualityFlag85H[128]; /* 85H quality flags */ u_int QualityFlag37V[64]; /* 37V quality flags */ u_int QualityFlag37H[64]; /* 37H quality flags */ u_int QualityFlag22V[64]; /* 22V quality flags */ u_int QualityFlag19V[64]; /* 19V quality flags */ u_int QualityFlag19H[64]; /* 19H quality flags */ }; /* * B (and B') scan parameters (Tb) */ struct BScanTb { DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[128]; /* geodetic latitudes, degrees */ float Longitude[128]; /* longitudes, 0-360 degrees */ float Tb85V[128]; /* 85V brightness temperatures, Kelvins */ float Tb85H[128]; /* 85H brightness temperatures, Kelvins */ u_int QualityFlag85V[128]; /* 85V quality flags */ u_int QualityFlag85H[128]; /* 85H quality flags */ }; /* * SSM/I Cycle (brightness temperatures) */ struct DDA_SSMICycle_Tb { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ AScanTb A; /* A scan brightness temperatures */ BScanTb B; /* B scan brightness temperatures */ AScanTb APrime; /* A' scan brightness temperatures */ BScanTb BPrime; /* B' scan brightness temperatures */ }; /* ======================================================= */ /* ========================= SSM/T-2 ===================== */ /* ======================================================= */ /* * SSM/T-2 Scan */ struct DDA_SSMT2Scan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[28]; /* geodetic latitudes, degrees */ float Longitude[28]; /* longitudes, 0-360 degrees */ float Tb183_3[28]; /* 183 (+- 3) GHz brightness temperatures, Kelvins */ float Tb183_1[28]; /* 183 (+- 1) GHz brightness temperatures, Kelvins */ float Tb183_7[28]; /* 183 (+- 7) GHz brightness temperatures, Kelvins */ float Tb91_1[28]; /* 91 (+- 1) GHz brightness temperatures, Kelvins */ float Tb150_1[28]; /* 150 (+- 1) GHz brightness temperatures, Kelvins */ u_int QualityFlag183_3[28]; /* 183 (+- 3) GHz quality flags */ u_int QualityFlag183_1[28]; /* 183 (+- 1) GHz quality flags */ u_int QualityFlag183_7[28]; /* 183 (+- 7) GHz quality flags */ u_int QualityFlag91_1[28]; /* 91 (+- 1) GHz quality flags */ u_int QualityFlag150_1[28]; /* 150 (+- 1) GHz quality flags */ u_int SAGC183_3; /* 183 (+- 3) GHz gain control, counts */ u_int SAGC183_1; /* 183 (+- 1) GHz gain control, counts */ u_int SAGC183_7; /* 183 (+- 7) GHz gain control, counts */ u_int SAGC91_1; /* 91 (+- 1) GHz gain control, counts */ u_int SAGC150_1; /* 150 (+- 1) GHz gain control, counts */ float Gain183_3; /* 183 (+- 3) GHz counts-to-Tb gain, Kelvins/count */ float Gain183_1; /* 183 (+- 1) GHz counts-to-Tb gain, Kelvins/count */ float Gain183_7; /* 183 (+- 7) GHz counts-to-Tb gain, Kelvins/count */ float Gain91_1; /* 91 (+- 1) GHz counts-to-Tb gain, Kelvins/count */ float Gain150_1; /* 150 (+- 1) GHz counts-to-Tb gain, Kelvins/count */ float Offset183_3; /* 183 (+- 3) GHz counts-to-Tb offset, Kelvins */ float Offset183_1; /* 183 (+- 1) GHz counts-to-Tb offset, Kelvins */ float Offset183_7; /* 183 (+- 7) GHz counts-to-Tb offset, Kelvins */ float Offset91_1; /* 91 (+- 1) GHz counts-to-Tb offset, Kelvins */ float Offset150_1; /* 150 (+- 1) GHz counts-to-Tb offset, Kelvins */ u_int ThermalReference; /* thermal reference, counts */ u_int Temperatures[18]; /* miscellaneous housekeeping, counts */ u_int WarmCounts183_3[4]; /* 183 (+- 3) GHz warm load counts, counts */ u_int WarmCounts183_1[4]; /* 183 (+- 1) GHz warm load counts, counts */ u_int WarmCounts183_7[4]; /* 183 (+- 7) GHz warm load counts, counts */ u_int WarmCounts91_1[4]; /* 91 (+- 1) GHz warm load counts, counts */ u_int WarmCounts150_1[4]; /* 150 (+- 1) GHz warm load counts, counts */ u_int ColdCounts183_3[4]; /* 183 (+- 3) GHz cold load counts, counts */ u_int ColdCounts183_1[4]; /* 183 (+- 1) GHz cold load counts, counts */ u_int ColdCounts183_7[4]; /* 183 (+- 7) GHz cold load counts, counts */ u_int ColdCounts91_1[4]; /* 91 (+- 1) GHz cold load counts, counts */ u_int ColdCounts150_1[4]; /* 150 (+- 1) GHz cold load counts, counts */ }; /* ======================================================= */ /* ========================= SSM/T-1 ===================== */ /* ======================================================= */ /* * SSM/T-1 Scan * * Notes: * ------ * Thermistor[ 0] = Warm Load 1 Temp * Thermistor[ 1] = Warm Load 2 Temp * Thermistor[ 2] = Warm Load 3 Temp * Thermistor[ 3] = Cold Load 1 Temp * Thermistor[ 4] = Cold Load 2 Temp * Thermistor[ 5] = Cold Load 3 Temp * Thermistor[ 6] = Diplexer Temp * Thermistor[ 7] = V Modulator Temp * Thermistor[ 8] = H Modulator Temp * Thermistor[ 9] = RF Filter Temp * Thermistor[10] = GMT Temp * Thermistor[11] = Mixer 1 Temp * Thermistor[12] = Mixer 2 Temp * Thermistor[13] = Mixer 3 Temp * Thermistor[14] = Local Oscillator Temp * Thermistor[15] = IF Amplifier 1 Temp * Thermistor[16] = IF Amplifier 2 Temp * Thermistor[17] = IF Amplifier 3 Temp * Thermistor[18] = Antenna Temp * Thermistor[19] = DC/DC Connector Temp * */ /* * Number of video samples per smooth scan line */ const SSMT1_CHANNELS = 7; const SSMT1_BEAM_POSITIONS = 7; struct DDA_SSMT1Scan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ DDAEpoch StartOfScan; /* epoch of start of scan */ float Latitude[SSMT1_BEAM_POSITIONS]; /* geodetic latitudes, degrees */ float Longitude[SSMT1_BEAM_POSITIONS]; /* longitudes, 0-360 degrees */ float Tb50_5[SSMT1_BEAM_POSITIONS]; /* 50.5 GHz brightness temp, Kelvins */ float Tb53_2[SSMT1_BEAM_POSITIONS]; /* 53.2 GHz brightness temp, Kelvins */ float Tb54_3[SSMT1_BEAM_POSITIONS]; /* 54.35 GHz brightness temp, Kelvins */ float Tb54_9[SSMT1_BEAM_POSITIONS]; /* 54.9 GHz brightness temp, Kelvins */ float Tb58_4[SSMT1_BEAM_POSITIONS]; /* 58.4 GHz brightness temp, Kelvins */ float Tb58_8[SSMT1_BEAM_POSITIONS]; /* 58.825 GHz brightness temp, Kelvins */ float Tb59_4[SSMT1_BEAM_POSITIONS]; /* 59.4 GHz brightness temp, Kelvins */ u_int QualityFlag50_5[SSMT1_BEAM_POSITIONS]; /* 50.5 GHz quality flags */ u_int QualityFlag53_2[SSMT1_BEAM_POSITIONS]; /* 53.2 GHz quality flags */ u_int QualityFlag54_3[SSMT1_BEAM_POSITIONS]; /* 54.35 GHz quality flags */ u_int QualityFlag54_9[SSMT1_BEAM_POSITIONS]; /* 54.9 GHz quality flags */ u_int QualityFlag58_4[SSMT1_BEAM_POSITIONS]; /* 58.4 GHz quality flags */ u_int QualityFlag58_8[SSMT1_BEAM_POSITIONS]; /* 58.825 GHz quality flags */ u_int QualityFlag59_4[SSMT1_BEAM_POSITIONS]; /* 59.4 GHz quality flags */ float Gain50_5; /* 50.5 GHz counts-to-Ta gain, Kelvins/count */ float Gain53_2; /* 53.2 GHz counts-to-Ta gain, Kelvins/count */ float Gain54_3; /* 54.35 GHz counts-to-Ta gain, Kelvins/count */ float Gain54_9; /* 54.9 GHz counts-to-Ta gain, Kelvins/count */ float Gain58_4; /* 58.4 GHz counts-to-Ta gain, Kelvins/count */ float Gain58_8; /* 58.825 GHz counts-to-Ta gain, Kelvins/count */ float Gain59_4; /* 59.4 GHz counts-to-Ta gain, Kelvins/count */ float Offset50_5; /* 50.5 GHz counts-to-Ta offset, Kelvins */ float Offset53_2; /* 53.2 GHz counts-to-Ta offset, Kelvins */ float Offset54_3; /* 54.35 GHz counts-to-Ta offset, Kelvins */ float Offset54_9; /* 54.9 GHz counts-to-Ta offset, Kelvins */ float Offset58_4; /* 58.4 GHz counts-to-Ta offset, Kelvins */ float Offset58_8; /* 58.825 GHz counts-to-Ta offset, Kelvins */ float Offset59_4; /* 59.4 GHz counts-to-Ta offset, Kelvins */ u_int SAGC_Channel1[SSMT1_BEAM_POSITIONS]; /* SAGC for channel 1 */ u_int SAGC_Channel234[SSMT1_BEAM_POSITIONS]; /* SAGC for channels 2-4 */ u_int SAGC_Channel567[SSMT1_BEAM_POSITIONS]; /* SAGC for channels 5-7 */ u_int WarmCal[SSMT1_CHANNELS]; /* beam position 15, counts */ u_int WarmCalSAGC_Channel1; /* SAGC, beam position 15, channel 1 */ u_int WarmCalSAGC_Channel234; /* SAGC, beam position 15, channels 2-4 */ u_int WarmCalSAGC_Channel567; /* SAGC, beam position 15, channels 5-7 */ u_int ColdCal[SSMT1_CHANNELS]; /* beam position 23, counts */ u_int ColdCalSAGC_Channel1; /* SAGC, beam position 23, channel 1 */ u_int ColdCalSAGC_Channel234; /* SAGC, beam position 23, channels 2-4 */ u_int ColdCalSAGC_Channel567; /* SAGC, beam position 23, channels 5-7 */ u_int Thermistors[20]; /* MUX data, counts */ u_int IRSync; u_int MUXZero; u_int MUXCal; u_int MUXFlag; }; /* ======================================================= */ /* ========================= SSJ/4 ======================= */ /* ======================================================= */ const DDA_SSJ4_CHANNELS = 20; /* * SSJ/4 Scan * * Notes: * ------ * Channel Channel * Index Energy * ------- ---------- * [ 0] : 30.000 KeV * [ 1] : 20.440 KeV * [ 2] : 13.920 KeV * [ 3] : 9.480 KeV * [ 4] : 6.460 KeV * [ 5] : 4.400 KeV * [ 6] : 3.000 KeV * [ 7] : 2.040 KeV * [ 8] : 1.390 KeV * [ 9] : 0.948 KeV * [10] : 948.0 eV * [11] : 646.0 eV * [12] : 440.0 eV * [13] : 300.0 eV * [14] : 204.4 eV * [15] : 139.2 eV * [16] : 94.9 eV * [17] : 64.6 eV * [18] : 44.0 eV * [19] : 30.0 eV */ struct DDA_SSJ4Scan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ float CorrGeomLatitude; /* degrees (from PACE model) */ float CorrGeomLongitude; /* degrees east (from PACE model) */ float MagneticLocalTime; /* 0.0,,24.0 (from PACE model) */ float DiffNumberFluxE[DDA_SSJ4_CHANNELS]; float DiffNumberFluxP[DDA_SSJ4_CHANNELS]; u_int CountsE[ DDA_SSJ4_CHANNELS ]; u_int CountsP[ DDA_SSJ4_CHANNELS ]; u_int QualityFlagE[DDA_SSJ4_CHANNELS]; u_int QualityFlagP[DDA_SSJ4_CHANNELS]; }; /* ======================================================= */ /* ========================= SSM ========================= */ /* ======================================================= */ const DDA_SSM_AXES = 3; const DDA_SSM_X_DIFFS = 9; const DDA_SSM_YZ_DIFFS = 11; struct DDA_SSMScan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ float CorrGeomLatitude; /* degrees (from PACE model) */ float CorrGeomLongitude; /* degrees east (from PACE model) */ float MagneticLocalTime; /* 0.0,,24.0 (from PACE model) */ u_int Mode; /* 1 = normal operating mode, 0 = test mode */ u_int Delta; /* 1 = delta exceeded, 0 = delta in range */ u_int Calibrate; /* 1 = calibrate on, 0 = calibrate off */ /* * The bias counts range in value from 0 through 31, in units of * approximately 4096 gammas. */ u_int XBias; u_int YBias; u_int ZBias; /* * The fine counts range in value from 0 through 4095, in units of * approximately 2 gammas. */ u_int XFine; u_int YFine; u_int ZFine; /* * The difference counts range in value from -32 through 31. 9 are sent for * the X axis and 11 are sent for the Y and Z axes. */ u_int XDiffs[ DDA_SSM_X_DIFFS ]; u_int YDiffs[ DDA_SSM_YZ_DIFFS ]; u_int ZDiffs[ DDA_SSM_YZ_DIFFS ]; /* u_int QualityFlagE[ DDA_SSJ4_CHANNELS ]; */ /* u_int QualityFlagP[ DDA_SSJ4_CHANNELS ]; */ }; /* ======================================================= */ /* ========================= SSIES-1 ===================== */ /* ======================================================= */ const DDA_SSIES1_WORDS = 120; /* * SSIES-1 Scan * * Note: SSIES-1 data currently archived as raw counts. */ struct DDA_SSIES1Scan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ float CorrGeomLatitude; /* degrees (from PACE model) */ float CorrGeomLongitude; /* degrees east (from PACE model) */ float MagneticLocalTime; /* 0.0,24.0 (from PACE model) */ unsigned Counts[DDA_SSIES1_WORDS]; /* raw counts for 1 second */ u_int QualityFlag; /* scan quality flag */ }; /* * SSIES Drift Meter data */ struct DDA_DriftMeter { DDASpacecraftInfo StartOfCycle; float CorrGeomLatitude; /* degrees (from PACE model) */ float CorrGeomLongitude; /* degrees east (from PACE model) */ float MagneticLocalTime; /* 0.0,24.0 (from PACE model) */ u_int DriftMeterMode; /* normal(0) or H+(1) */ float VX[6]; /* vertical velocities (meters/sec) */ float VZ[6]; /* horizontal velocities (meters/sec) */ u_int VXQualityFlag; /* sample quality flags */ u_int VZQualityFlag; /* sample quality flags */ }; struct DDA_SSIESDriftMeter { DDA_DriftMeter Cycle1; /* 1st second of drift meter data */ DDA_DriftMeter Cycle2; /* 2nd second of drift meter data */ }; /* ======================================================= */ /* ========================= SSIES-2 ===================== */ /* ======================================================= */ const DDA_SSIES2_WORDS = 84; /* * SSIES-2 Scan */ struct DDA_SSIES2Scan { DDASpacecraftInfo SpacecraftInfo; /* Time and ephemeris info */ float CorrGeomLatitude; /* degrees (from PACE model) */ float CorrGeomLongitude; /* degrees east (from PACE model) */ float MagneticLocalTime; /* 0.0,24.0 (from PACE model) */ unsigned Counts[DDA_SSIES2_WORDS]; /* raw counts for 1 second */ u_int QualityFlag; /* scan quality flag */ };