## 4 Data Products and Processing
### Accessing and Processing of the Data Product
With the text file returned by the _Find_RawIF_Track_ function, all the complex waveform files can be downloaded sequentially. - _Read_CW_File: Given the filename of the complex waveform file, this function can return two labeled multi-dimensional arrays including all the variables in the \"cWF\" group and the \"MetaData\" group, respectively. - _ShiftCW_ and _CounterRotateCW_: As the OL tracking model (Section 3.2.2) is computed without considering the variation of the surface elevation along the track, it is necessary to realign the complex waveform by recomputing the bistatic delay of the reflected signal following a refined surface elevation model. With the precise estimation of the delay evolution along the track, _ShiftCW_ function is to align the complex waveforms by shifting each of them along the delay axis, and _CounterRotateCW_ function is to counter rotate the phase of the complex waveform by means of a product with a phavor rotated with the corresponding delay difference. It is noted that some other delay correction terms, such as the ionosphere delay and the troposphere delay can be also included in the bistatic delay computation and applied in the complex waveform realignment. - _Integration:_ In the raw IF processing stage (Section 3.2), the direct and reflected signals are integrated coherently for a fixed period of 1 ms. To decrease the impact of thermal and speckle noise, coherent integration (complex sum) and incoherent average (averaging of the squared amplitudes) are applied to the 1-ms complex waveforms of the direct and reflected signals by \[ \begin{split} Z^{\text{d}}_{\text{coh}}(t+\frac{nt_{\text{c}}}{2}, \tau)&=\frac{1}{N_{\text{c}}}\sum_{n=0}^{N_{\text{c}}-1}z^{ \text{d}}(t+nt_{\text{c}},\tau)\\ Z^{\text{r}}_{\text{coh}}(t+\frac{nt_{\text{c}}}{2},\tau)& =\frac{1}{N_{\text{c}}}\sum_{n=0}^{N_{\text{c}}-1}z^{\text{r}}(t+nt_{\text{c}},\tau)\end{split} \] (6) and \[ \begin{split} Z^{\text{d}}_{\text{inc}}(t+\frac{kT_{\text{c}}}{2},\tau)&=\frac{1}{N_{\text{I}}}\sum_{k=0}^{N_{\text{I}}-1}\left|Z^ {\text{d}}_{\text{coh}}(t+kT_{\text{c}},\tau)\right|^{2}\\ Z^{\text{r}}_{\text{inc}}(t+\frac{kT_{\text{c}}}{2},\tau)& =\frac{1}{N_{\text{I}}}\sum_{k=0}^{N_{\text{I}}-1}\left|Z^{\text{r }}_{\text{coh}}(t+kT_{\text{c}},\tau)\right|^{2}\end{split} \] (7) in which \(Z^{\text{d}}_{\text{coh}}\) and \(Z^{\text{r}}_{\text{coh}}\) are the direct and reflected complex waveforms with a coherent average time of \(T_{\text{c}}=N_{\text{c}}t_{\text{c}}\), and \(Z^{\text{d}}_{\text{inc}}\) and \(Z^{\text{r}}_{\text{inc}}\) are the power waveforms by incoherently averaging \(N_{\text{I}}\) complex waveforms (\(Z^{\text{d}}_{\text{coh}}\) and \(Z^{\text{r}}_{\text{coh}}\)). - _GNSSR_Obs:_ Different GNSS-R observables can be derived from the complex or power waveforms. Currently, the main observables provided with the example function include the SNRs of the direct and reflected signals, the carrier phase of the reflected signal (\(\Delta\phi^{\text{r}}_{\text{carr}}\)) and the coherence factor of the reflected signal (\(\Gamma^{\text{r}}\)). In addition, the geographic locations, i.e., the latitude and longitude, corresponding to these variables are also interpolated at each observation epoch. _Visualization_: With the value and geographic location of each observable, this function is to generate a Keyhole Markup Language (KML) file using the Python package \"simplekm1\" [70]. By importing the generated KML file into an Earth browser such as Google Earth, the values of the observable can be indicated with color scales along the track of the specular points, which can be used to characterize the GNSS-R observable over different surface types.