All Level-1 and higher products are time stamped with the transmit time of the pulse in Universal Coordinated Time (UTC) in J2000 (referenced from noon on 01 January 2000) as received from the Level-0 data. Additional calibration will lead to further instrument corrections to this time. Corrections applied to a product-specific time are defined in the i_timecorflg flag in each product record.

To correlate records across GLA01-16, a unique record index is assigned to every frame (approximately one second) of data, based on the time in the Level-0 header records after conversion to J2000 UTC. The GLAS science team used this unique record index to minimize confusion from aligning products of different levels by time. Previous altimetry missions applied timing corrections to higher level products, making it difficult to align the records from different level products.

Thirty-nine delta times are provided, which the user adds to the full UTC time of the first transmit time in each record, to calculate the 40 laser shot times.

All corrections are added to respective parameters.

The ordering of the received echo (i_rng_wf) is preserved as the telemetered echo, so essentially it is in time-reversed order. The value of the first sample is for the sample farthest from the spacecraft in time, and the value of the last sample is for the sample closest to the spacecraft in time.

The ordering of the transmit pulse (i_tx_wf) is preserved as the telemetered pulse, so it is in time order. The value of the first sample is for the sample closest to the spacecraft in time, and the value of the last sample is for the sample farthest from the spacecraft in time.

To convert from the differences in digitizer addresses to time, use the oscillator calibration coefficient from the header records as follows.

`Elapsed time = (diga2 - diga1) X osc cal`

Where:

diga2 = digitizer address for a2

diga1 = digitizer address for a1

Both the received and transmit waveforms are given in uncalibrated counts; therefore, they must be calibrated if used. The calibration table supplied in the header contains one value for each possible waveform count value (0 to 255). To compute a calibrated waveform sample voltage, the count value of the sample should be used as an index into this table.

The geodetic location is calculated using a predicted orbit, assuming the laser is nadir pointing.

The transmit gain attenuator (i_ADdetOutGn) can change only at 1-sec intervals, but it is detected only at 4-sec intervals. The received gain attenuator (i_gainSet1064) is controlled and provided for each laser shot (40 per second). The conversion of the raw gains to energy, including laser fluxuations, is documented in Jester and Hancock (2002).

Check the following flags to filter out bad data.

**i_TxFlg**: if this is set to 1 for a specific shot, then the range measurement for that shot cannot be calculated. The transmit waveform parameter may look valid, but it is not. The received waveform may still be valid.

**i_txWfPk_Flag**: if this is set to indicate that the peak value is below threshold or was not found, then the range measurement for that shot cannot be calculated.

**i_InstState**: if none of the lasers is enabled (bits 0-2) then no valid range measurement exists. Occasionally when the GLAS instrument team downlinks the Optical Test Source (OTS) pulse in the normal received waveform location, the received waveform may look valid, but it is not reflected from the ground.

This file contains information necessary to characterize the waveform. Refer to Brenner et al. (2000) for details of the algorithm. Most of the derived parameters in this file have two values: one for the standard parameterization (the parameter name ends in a "2") and one for the alternate parameterization (the parameter name ends in a "1"). The differences in these two sets of parameters are determined by the input driving the algorithms, the thresholds used to determine signal begin and end times, and the Gaussian fit constraints as detailed in Brenner et al. (2000). For the waveform parameterization process, the waveform is first converted to volts using the calibration table in the GLA01 header records. All ranges and range offsets in this product are given in units of two-way time and must be divided by two times the speed of light to convert to distance. The oscillator calibrations were applied in calculating the ranges. The instrument internal timing delay, given in the header record, was applied in the calculation of the reference range ("i_refRng").

This file is an intermediate product used in conjunction with GLA01 to create the Level-1B (GLA06) and Level-2 elevation products (GLA12-15). This file is not intended for end users. The Level-1B and Level-2 products should contain all the information necessary for the end user; however, algorithm developers can use GLA05 in conjunction with GLA01 to test the science ground-processing algorithms.

*Note that "i_pcntsat1" and "i_pcntsat2" are not currently set.*

**Geolocation and Elevation Calculation**

The geolocation and elevation in GLA05 are calculated using precision attitude, precision orbits, and the range as defined in Schutz (2002). When there is no signal found in the return waveform, as indicated by "i_Wfqual," then the range is not defined and the geolocation on the record is from the predicted orbit assuming nadir-pointing. This predicted geolocation is only calculated at the 1 Hz rate, so it will remain the same for all shots in the frame that have no signal.

The range used to calculate the geolocation and elevation in GLA05 is calculated from the centroid of the transmit pulse to the first signal above the threshold (closest to ground) using the standard parameterization and accounting for instrument delays. This file also contains variables from which the user could recalculate the range using different criteria: the threshold crossing locations of the received pulse, the centroid, or Gaussian fit parameters.

**How to use the range offsets and Gaussian parameterizations**

GLA05 contains a set of offsets that are added to the reference range (i_refRng) to determine the range to any user-specified location on the received waveform. The reference range is measured from the centroid of the transmit pulse to the last received echo digitizer gate telemetered (furthest from the spacecraft). The range used in the GLA05 elevation calculation is i_preRngOff2, which is the offset added to i_refRng to give the two-way range in time to the location on the received echo, calculated as the end of signal (farthest from the spacecraft) using standard parameters.

`rangedef = (i_refRng + i_preRngOff2)/(2c)`

Where:

n = shot number within the frame (1 to 40)

c = speed of light

To calculate a new range, add to i_refRng the range offset applicable to the preferred algorithm. For example, to calculate the new range to the centroid of the received return, use the following equation:

`rangenew = (i_refRng + i_centroid2)/(2c)`

**Replacing the orbit and recalculating geolocation**

Some advanced users may want to replace the orbit on the products. The precision orbit vector and unit vectors of the attitude vectors are in the inertial celestial reference frame (ICRF). Schutz (2002) gives equations for calculating the geodetic latitude and longitude using range, orbit, attitude, and the quaternion to rotate from ICRF to the inertial terrestrial reference frame (ITRF). These quaternions are not provided in the record, but they are in daily Ancillary Data Products (ANC04 - ICRF to ITRF Transformation Interpolation File), available upon special request from NSIDC.

**Timing**

The shot time, defined as the time associated with the transmit pulses, is calculated after applying all oscillator and instrument corrections. This value should be accurate enough for all applications except for users who want to replace the orbit. To calculate the time to interpolate a new orbit, add the one-way transit time (i_transtime) to obtain ground-bounce time and the high frequency Global Positioning System (GPS) time correction (i_deltagpstmcor). The ground bounce time, "time_{gb}," in J2000 seconds, is calculated as:

For n=1:

`time`

_{gb} (n) = i_UTCTime(1) + i_UTCTime(2)/1.e6 + i_deltagpstmcor/1.e9 + i_transtime/1.e6

For n > 1:

`time`

_{gb} (n) = i_UTCTime(1) + i_UTCTime(2)/1.e6 + i_dShotTime(n-1)/1.e6 +

i_deltagpstmcor/1.e9 + i_transtime/1.e6

Where:

n = shot corresponding to the transit time

Both i_transtime and i_deltagpstmcor are given at 1/sec. The i_detagpstmcor value is constant for each specific GPS latched time. The GPS time changes at a maximum rate of once every 10 seconds, or if the GPS is resetting, it could be the same for 10 to 30 minutes. The change is implemented on the frame boundary so the 1/sec rate fully characterizes the correction.

The transit time on the record is calculated from the transmit time to the end of signal (latest in time) of the received return for the first shot with a valid value for i_preRngOff2. For more accuracy, calculate the transit time for each of the individual shots as follows:

`transit_time (n) = i_transtime + (i_preRngoff2(n) - i_preRngOff2(ivalid))/2`

Where:

ivalid = first shot number within the record for which i_preRngOff2 is defined.

Check the following flags to filter out bad data.

**i_FrameQF**: if bit 0 is set then some of the data in the frame have problems. Check "i_ElvuseFlg" to see what shots can be used in the frame.

**i_ElvuseFlg**: edit all data for which the corresponding bit is set.

**i_WFqual**: if bits 22, 23 and/or 24 are set, this indicates the received return may be saturated or have significant forward scattering. You should use discretion in with these returns, since they do not represent the surface characteristics, and they will give less accurate elevations.

The Level-1B elevation data (GLA06) and the regional Level-2 products (GLA12 - GLA15) are at full 40-per-second resolution. Data granules contain approximately 23 minutes (1/4 orbit) of data for GLA06 and 14 orbits for GLA12 - GLA15. These products include surface elevation, surface roughness assuming no slope, surface slope assuming no roughness, and geodetic and atmospheric corrections for the range. These data are geolocated to the center of the laser footprint. GLA06 is used with GLA05 to create GLA12 - GLA15.

GLA06 is a global product equivalent to the geodetic data records distributed for most radar altimetry missions. Elevation is calculated using the range associated with the standard parameterization (the ice sheet algorithm). Additional information allows the user to calculate an elevation based on the land, sea ice, or ocean algorithms. All ranges are given in one-way distance units. The geodetic corrections, which are applied to the range used to calculate the elevation, are provided with GLA06 so users can remove the existing correction and apply a different one. The geodetic corrections, geoid, and tidal values are not all given at the 40/sec shot rate because some corrections vary slowly. Corrections are given at least twice per record so that users can interpolate for the value at the individual shot time using only the values in the given record.

GLA12-15 are regional products. A record is placed on these products if any of the 40 measurements in the frame fall within the corresponding regional mask.

**Geolocation and Elevation Calculation**

The geolocation and elevation values in GLA06 are calculated using precision attitude, precision orbits, and the range as defined in Schutz (2002). The range used to calculate the geolocation and elevation in GLA06 is calculated using the ice sheet range offset after all instrument corrections and atmospheric delays have been accounted for. The tides are then applied to the elevation. The range used to calculate the elevation for each shot (range_{elv}(n) is calculated with the following equation.

`range`

_{elv}(n) = i_refRng(n) + i_isRngOff(n) + i_dTrop(n) + i_wTrop

Where:

i_refRng = reference range

i_isRngOff = ice sheet range offset

i_dTrop = dry troposphere delay for shot n

i_wTrop = interpolated value of the wet troposphere delay, linearly interpolated from the two values for first shot and last shot

`Elev = elev`

_{wtide} - i_erElv - i_ldElv - i_ocElv

Where:

Elev = final elevation after tides have been accounted for

Elev_{wtide} = elevation calculated using rangeelv

i_erElv = interpolated value of the solid earth tide, linearly interpolated from the two values for the first and last shots

i_ldElv = interpolated value of the load time, linearly interpolated or extrapolated from the two closest values for shots 1, 11, 21, and 31

i_ocElv = interpolated value of the ocean tide, linearly interpolated from the two values for first shot and last shot

For GLA12-15, the elevations are calculated using the appropriate range offset: i_isRngOff, i_siRngOff, i_ldRngOff, or i_ocRngOff; otherwise, the equations are exactly the same.

**How to use the range offsets and apply geodetic corrections or tides**

GLA06 contains range offsets used to calculate the elevations using the ice sheet, sea ice, land, and ocean algorithms. Additionally, range offsets using the threshold algorithm, centroid, and signal begin and signal end, are provided. All geodetic corrections used in the calculation of the range associated with the elevation calculation are also provided. Because the laser is not nadir pointing, to precisely calculate an elevation based on a different offset or correction, users should recalculate the range using the equation above, substituting the appropriate offset or correction. Then recalculate the geolocation and elevation using the stringent equations from Brenner et al. (2000). This requires using the precision attitude and orbit from the record, and the ICRF to ITRF transformations given in the ancillary file ANC04, available upon special request from NSIDC. For the majority of the data, the off-nadir pointing angle is small enough that users can calculate a new elevation by the difference between the range used and the new range.

`i_elevnew = i_elev + (rangeelv - rangenew)`

Check the "i_rng_UQF" flag to filter out bad data. If bits 12, 13 and/or 14 are set, this indicates the received return may be saturated or have significant forward scattering. You should use discretion with these returns, since they do not represent the surface characteristics and will give less accurate elevations.