Parse_descriptor

t_err   Parse_descriptor (t_data_descr * dd, byte_t * data)

This function parse a first PAS L0 packet containing 3D data descriptor and extract:

  • nb_cem + cem_offset

  • nv_elevation + first elevation

  • nb_energy + first_energy

  • nb_sample

  • nb_K

Then computes size of expected data, registered in the following PAS 3D data packets:

  • sampling_size = nb_cem * nb_elevation * nb_energy * size (int16_t)

  • total_size = sampling_size * nb_k

All these values are registered in the t_data_desr * dd structure.

Store_3D_counts

This function populates a 9 x 11 x 96 matrix of counts :

  • from a byte array of counts (dd→data)

  • for a given k, where 0 ⇐ k ⇐ dd→k

  • setting nb_elev x nb_cem x nb_cem values, in the corresponding cells

  • taking in accounfs offset form first_energy, first_elevation and cem_offset

t_err   Store_3D_counts (t_data_descr *dd, t_counts_3d counts, int k)
{
        byte_t * ptr = dd->data + dd->sampling_size * k);

        for (energy = 0; energy < dd->nb_energy; energy++) {

                int     en = dd->first_energy + energy;

                for (elevation = 0 elevation < dd->nb_elevation; elevation++) {

                        int     el = dd->first_elevation + elevation;

                        for (cem = 0; cem <= dd->nb_cem; cem++) {

                                int     c = dd->cem_offset + cem;

                                short   value = get_int16 (ptr);

                                counts [c][el][en] = value;

                                ptr += 2;
                        }
                }
        }
}

Write_CDF_record

This function will write k CDF records from data contained in t_data_descr descriptor.

t_err Write_CDF_record (char * key, t_data_descr * dd)
{
        // use key : swa-pas-3ds, swa-pas-3db, swa-pas-3dt, swa-pas-3dn
        // to select CDF output file

        for (k = 0; k < dd->k; k++) {

                // Populates 3D matrix with data from k sampling

                Store_3D_counts (dd, counts_3D, k);

                // Write counts in a new CDF record

                Put_CDF (cdf, "COUNTS", record, & counts_3d);

                record ++;
        }
}