netcdf_file.rst

changeset 11
79fea4145278
parent 10
f6927689a3b2
child 12
3171dc8d75e7
--- a/netcdf_file.rst	Fri May 11 13:22:25 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1187 +0,0 @@
-The SCC netCDF file format
-==========================
-
-Rationale
----------
-
-The Single Calculus Chain (SCC) is composed by two different modules:
-
--  pre-processing module ( scc\_preprocessing)
-
--  optical processing module ( ELDA)
-
-To perfom aerosol optical retrievals the SCC needs not only the raw
-lidar data but also a certain number of parameters to use in both
-pre-processing and optical processing stages. The SCC gets these
-parameters looking at two different locations:
-
--  Single Calculus Chain relational database (SCC\_DB)
-
--  Input files
-
-There are some paramenters that can be found only in the input files
-(those ones changing from measurement to measurement), others that can
-be found only in the SCC\_DB and other ones that can be found in both
-these locations. In the last case, if a particular parameter is needed,
-the SCC will search first in the input files and then in SCC\_DB. If the
-parameter is found in the input files the SCC will keep it without
-looking into SCC\_DB.
-
-The input files have to be submitted to the SCC in NetCDF format. At the
-present the SCC can handle four different types of input files:
-
-1. Raw Lidar Data
-2. Sounding Data
-3. Overlap
-4. Lidar Ratio
-
-
-As already mentioned, the  Raw Lidar Data file contains not only the
-raw lidar data but also other parameters to use to perform the
-pre-processing and optical processing. The  Sounding Data file
-contains the data coming from a correlative radiosounding and it is used
-by the SCC for molecular density calculation. The  Overlap file
-contains the measured overlap function. The  Lidar Ratio file contains
-a lidar ratio profile to use in elastic backscatter retrievals. The 
-Raw Lidar Data file is of course mandatory and the  Sounding Data, 
-Overlap and  Lidar Ratio files are optional. If  Sounding Data file
-is not submitted by the user, the molecular density will be calculated
-by the SCC using the “US Standard Atmosphere 1976”. If the  Overlap
-file is not submitted by the user, the SCC will get the full overlap
-height from SCC\_DB and it will produce optical results starting from
-this height. If  Lidar Ratio file is not submitted by the user, the
-SCC will consider a fixed value for lidar ratio got from SCC\_DB.
-
-The user can decide to submit all these files or any number of them (of
-course the file  Raw Lidar Data is mandatory). For example the user
-can submit together with the  Raw Lidar Data file only the  Sounding
-Data file or only the  Overlap file.
-
-This document provides a detailed explanation about the structure of the
-NetCDF input files to use for SCC data submission. All Earlinet groups
-should read it carefully because they have to produce such kind of input
-files if they want to use the SCC for their standard lidar retrievals.
-Every comments or suggestions regarding this document can be sent to
-Giuseppe D’Amico by e-mail at ``damico@imaa.cnr.it``
-
-This document is available for downloading at ``www.earlinetasos.org``
-
-In table tab:rawdata is reported a list of dimensions, variables and
-global attributes that can be used in the NetCDF  Raw Lidar Data input
-file. For each of them it is indicated:
-
--  The name. For the multidimensional variables also the corresponding
-   dimensions are reported
-
--  A description explaining the meaning
-
--  The type
-
--  If it is mandatory or optional
-
-As already mentioned, the SCC can get some parameters looking first in
-the  Raw Lidar Data input file and then into SCC\_DB. This means that
-to use the parameters stored in SCC\_DB the optional variables or
-optional global attributes must not appear within  Raw Lidar Data
-file. This is the suggested and recommended way to use the SCC. Please
-include optional parameters in the  Raw Lidar Data only as an
-exception.
-
-In table tab:sounding, tab:overlap and tab:lr are reported all the
-information about the structure of  Sounding Data,  Overlap and 
-Lidar Ratio input files respectively.
-
-Example
--------
-
-Let’s now consider an example of  Raw Lidar Data input file. Suppose
-we want to generate NetCDF input file corresponding to a measurement
-with the following properties:
-
-+----------------------+-------------------------------------------+
-| Start Date           | :math:`30^{th}` January 2009              |
-+----------------------+-------------------------------------------+
-| Start Time UT        | 00:00:01                                  |
-+----------------------+-------------------------------------------+
-| Stop Time UT         | 00:05:01                                  |
-+----------------------+-------------------------------------------+
-| Station Name         | Dummy station                             |
-+----------------------+-------------------------------------------+
-| Earlinet call-sign   | cc                                        |
-+----------------------+-------------------------------------------+
-| Pointing angle       | 5 degrees with respect to the zenith      |
-+----------------------+-------------------------------------------+
-
-Moreover suppose that this measurement is composed by the following
-lidar channels:
-
-1. 1064 lidar channel
-
-   +------------------------------+-------------------------------+
-   | Emission wavelength=1064nm   | Detection wavelength=1064nm   |
-   +------------------------------+-------------------------------+
-   | Time resolution=30s          | Number of laser shots=1500    |
-   +------------------------------+-------------------------------+
-   | Number of bins=3000          | Detection mode=analog         |
-   +------------------------------+-------------------------------+
-   | Range resolution=7.5m        | Polarization state=total      |
-   +------------------------------+-------------------------------+
-
-2. 532 cross lidar channel
-
-   +-----------------------------+---------------------------------+
-   | Emission wavelength=532nm   | Detection wavelength=532nm      |
-   +-----------------------------+---------------------------------+
-   | Time resolution=60s         | Number of laser shots=3000      |
-   +-----------------------------+---------------------------------+
-   | Number of bins=5000         | Detection mode=photoncounting   |
-   +-----------------------------+---------------------------------+
-   | Range resolution=15m        | Polarization state=cross        |
-   +-----------------------------+---------------------------------+
-
-3. 532 parallel lidar channel
-
-   +-----------------------------+---------------------------------+
-   | Emission wavelength=532nm   | Detection wavelength=532nm      |
-   +-----------------------------+---------------------------------+
-   | Time resolution=60s         | Number of laser shots=3000      |
-   +-----------------------------+---------------------------------+
-   | Number of bins=5000         | Detection mode=photoncounting   |
-   +-----------------------------+---------------------------------+
-   | Range resolution=15m        | Polarization state=parallel     |
-   +-----------------------------+---------------------------------+
-
-4. 607 :math:`N_2` vibrational Raman channel
-
-   +-----------------------------+---------------------------------+
-   | Emission wavelength=532nm   | Detection wavelength=607nm      |
-   +-----------------------------+---------------------------------+
-   | Time resolution=60s         | Number of laser shots=3000      |
-   +-----------------------------+---------------------------------+
-   | Number of bins=5000         | Detection mode=photoncounting   |
-   +-----------------------------+---------------------------------+
-   | Range resolution=15m                                          |
-   +-----------------------------+---------------------------------+
-
-Finally let’s assume we have also performed dark measurements before the
-lidar measurements from the 23:50:01 UT up to 23:53:01 UT of
-29:math:`^\mathrmth` January 2009.
-
-Dimensions
-~~~~~~~~~~
-
-Looking at table tab:rawdata we have to fix the following dimensions:
-
-::
-
-    points
-    channels
-    time
-    nb_of_time_scales
-    scan_angles
-    time_bck
-
-The dimension ``time`` is unlimited so we don’t have to fix it.
-
-We have 4 lidar channels so:
-
-::
-
-    channels=4
-
-Regarding the dimension ``points`` we have only one channel with a
-number of vertical bins equal to 3000 (the 1064nm) and all other
-channels with 5000 vertical bins. In cases like this the dimension
-``points`` has to be fixed to the maximum number of vertical bins so:
-
-::
-
-    points=5000
-
-Moreover only one channel (1064nm) is acquired with a time resolution of
-30 seconds, all the other channels have a time resolution of 60 seconds.
-This means that we have to define two different time scales. We have to
-set:
-
-::
-
-    nb_of_time_scales=2
-
-The measurement is performed only at one scan angle (5 degrees with
-respect to the zenith) so:
-
-::
-
-    scan_angles=1
-
-We have 3 minutes of dark measurements and two different time scales one
-with 60 seconds time resolution and the other one with 30 seconds time
-resolution. So we will have 3 different dark profiles for the channels
-acquired with the first time scale and 6 for the lidar channels acquired
-with the second time scale. We have to fix the dimension ``time_bck`` as
-the maximum between these values:
-
-::
-
-    time_bck=6
-
-Variables
-~~~~~~~~~
-
-In this section it will be explained how to fill all the possible
-variables either mandatory or optional of  Raw Lidar Data input file.
-
-Raw_Data_Start_Time(time, nb_of_time_scales)
-   This 2 dimensional mandatory array has to contain the acquisition
-   start time (in seconds from the time given by the global attribute
-   ``RawData_Start_Time_UT``) of each lidar profile. In this example we
-   have two different time scales: one is characterized by steps of 30
-   seconds (the 1064nm is acquired with this time scale) the other by
-   steps of 60 seconds (532cross, 532parallel and 607nm). Moreover the
-   measurement start time is 00:00:01 UT and the measurement stop time
-   is 00:05:01 UT. In this case we have to define:
-
-   ::
-
-       Raw_Data_Start_Time =
-         0, 0,
-         60, 30,
-         120, 60,
-         180, 90,
-         240, 120,
-         _, 150,
-         _, 180,
-         _, 210,
-         _, 240,
-         _, 270 ;
-
-   The order used to fill this array defines the correspondence between
-   the different time scales and the time scale index. In this example
-   we have a time scale index of 0 for the time scale with steps of 60
-   seconds and a time scale index of 1 for the other one.
-
-Raw_Data_Stop_Time(time, nb_of_time_scales)
-   The same as previous item but for the data acquisition stop time.
-   Following a similar procedure we have to define:
-
-   ::
-
-       Raw_Data_Stop_Time =
-         60, 30,
-         120, 60,
-         180, 90,
-         240, 120,
-         300, 150,
-         _, 180,
-         _, 210,
-         _, 240,
-         _, 270,
-         _, 300 ;
-
-Raw_Lidar_Data(time, channels, points)
-   This 3 dimensional mandatory array has to be filled with the
-   time-series of raw lidar data. The photoncounting profiles have to
-   submitted in counts (so as integers) while the analog ones in mV. The
-   order the user chooses to fill this array defines the correspondence
-   between channel index and lidar data.
-   
-   For example if we fill this array in such way that:
-
-   +-------------------------------------+------------------------------------------------------------+
-   | Raw_Lidar_Data(time,0,points        | :math:`\rightarrow` is the time-series of 1064 nm          |
-   +-------------------------------------+------------------------------------------------------------+
-   | Raw_Lidar_Data(time,1,points        | :math:`\rightarrow` is the time-series of 532 cross        |
-   +-------------------------------------+------------------------------------------------------------+
-   | Raw_Lidar_Data(time,2,points        | :math:`\rightarrow` is the time-series of 532 parallel     |
-   +-------------------------------------+------------------------------------------------------------+
-   | Raw_Lidar_Data(time,3,points        | :math:`\rightarrow` is the time-series of 607 nm           |
-   +-------------------------------------+------------------------------------------------------------+
-
-   from now on the channel index 0 is associated to the 1064 channel, 
-   1 to the 532 cross, 2 to the 532 parallel and 3 to the 607nm.
-
-Raw_Bck_Start_Time(time_bck, nb_of_time_scales)
-   This 2 dimensional optional array has to contain the acquisition
-   start time (in seconds from the time given by the global attribute
-   ``RawBck_Start_Time_UT``) of each dark measurements profile.
-   Following the same procedure used for the variable
-   ``Raw_Data_Start_Time`` we have to define:
-
-   ::
-
-       Raw_Bck_Start_Time =
-         0, 0,
-         60, 30,
-         120, 60,
-         _, 90,
-         _, 120,
-         _, 150;
-
-Raw_Bck_Stop_Time(time_bck, nb_of_time_scales)
-   The same as previous item but for the dark acquisition stop time.
-   Following a similar procedure we have to define:
-
-   ::
-
-       Raw_Bck_Stop_Time =
-         60, 30,
-         120, 60,
-         180, 90,
-         _, 120,
-         _, 150,
-         _, 180 ;
-         
-
-Background_Profile(time_bck, channels, points)
-   This 3 dimensional optional array has to be filled with the
-   time-series of the dark measurements data. The photoncounting
-   profiles have to submitted in counts (so as integers) while the
-   analog ones in mV. The user has to fill this array following the same
-   order used in filling the array ``Raw_Lidar_Data``:
-
-   +---------------------------------------------+----------------------------------------------------------+
-   | Background_Profile(time_bck,0,points        | :math:`\rightarrow` dark time-series at 1064 nm          |
-   +---------------------------------------------+----------------------------------------------------------+
-   | Background_Profile(time_bck,1,points        | :math:`\rightarrow` dark time-series at 532 cross        |
-   +---------------------------------------------+----------------------------------------------------------+
-   | Background_Profile(time_bck,2,points        | :math:`\rightarrow` dark time-series at 532 parallel     |
-   +---------------------------------------------+----------------------------------------------------------+
-   | Background_Profile(time_bck,3,points        | :math:`\rightarrow` dark time-series at 607 nm           |
-   +---------------------------------------------+----------------------------------------------------------+
-   
-
-channel_ID(channels)
-   This mandatory array provides the link between the channel index
-   within the  Raw Lidar Data input file and the channel ID in
-   SCC\_DB. To fill this variable the user has to know which channel IDs
-   in SCC\_DB correspond to his lidar channels. For this purpose the
-   SCC, in its final version will provide to the user a special tool to
-   get these channel IDs through a Web interface. At the moment this
-   interface is not yet available and these channel IDs will be
-   communicated directly to the user by the NA5 people.
-   
-   Anyway to continue the example let’s suppose that the four lidar
-   channels taken into account are mapped into SCC\_DB with the
-   following channel IDs:
-
-   +----------------+--------------------------------------+
-   | 1064 nm        | :math:`\rightarrow` channel ID=7     |
-   +----------------+--------------------------------------+
-   | 532 cross      | :math:`\rightarrow` channel ID=5     |
-   +----------------+--------------------------------------+
-   | 532 parallel   | :math:`\rightarrow` channel ID=6     |
-   +----------------+--------------------------------------+
-   | 607 nm         | :math:`\rightarrow` channel ID=8     |
-   +----------------+--------------------------------------+
-
-    In this case we have to define:
-
-   ::
-
-       channel_ID = 7, 5, 6, 8 ;
-
-id_timescale(channels)
-   This mandatory array is introduced to determine which time scale is
-   used for the acquisition of each lidar channel. In particular this
-   array defines the link between the channel index and the time scale
-   index. In our example we have two different time scales. Filling the
-   arrays ``Raw_Data_Start_Time`` and ``Raw_Data_Stop_Time`` we have
-   defined a time scale index of 0 for the time scale with steps of 60
-   seconds and a time scale index of 1 for the other one with steps of
-   30 seconds. In this way this array has to be set as:
-
-   ::
-
-       id_timescale = 1, 0, 0, 0 ;
-
-Laser_Pointing_Angle(scan_angles
-   This mandatory array contains all the scan angles used in the
-   measurement. In our example we have only one scan angle of 5 degrees
-   with respect to the zenith, so we have to define:
-
-   ::
-
-       Laser_Pointing_Angle = 5 ;
-
-Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales)
-   This mandatory array is introduced to determine which scan angle is
-   used for the acquisition of each lidar profile. In particular this
-   array defines the link between the time and time scales indexes and
-   the scan angle index. In our example we have a single scan angle that
-   has to correspond to the scan angle index 0. So this array has to be
-   defined as:
-
-   ::
-
-       Laser_Pointing_Angle_of_Profiles =
-         0, 0,
-         0, 0,
-         0, 0,
-         0, 0,
-         0, 0,
-         _, 0,
-         _, 0,
-         _, 0,
-         _, 0,
-         _, 0 ;
-
-Laser_Shots(time, channels)
-   This mandatory array stores the laser shots accumulated at each time
-   for each channel. In our example the number of laser shots
-   accumulated is 1500 for the 1064nm channels and 3000 for all the
-   other channels. Moreover the laser shots do not change with the time.
-   So we have to define this array as:
-
-   ::
-
-        Laser_Shots =
-         1500, 3000, 3000, 3000, 
-         1500, 3000, 3000, 3000, 
-         1500, 3000, 3000, 3000, 
-         1500, 3000, 3000, 3000, 
-         1500, 3000, 3000, 3000, 
-         1500, _, _, _, 
-         1500, _, _, _, 
-         1500, _, _, _, 
-         1500, _, _, _, 
-         1500, _, _, _ ;
-
-Emitted_Wavelength(channels)
-   This optional array defines the link between the channel index and
-   the emission wavelength for each lidar channel. The wavelength has to
-   be expressed in nm. This information can be also taken from SCC\_DB.
-   In our example we have:
-
-   ::
-
-       Emitted_Wavelength = 1064, 532, 532, 532 ;
-
-Detected_Wavelength(channels)
-   This optional array defines the link between the channel index and
-   the detected wavelength for each lidar channel. Here detected
-   wavelength means the value of center of interferential filter
-   expressed in nm. This information can be also taken from SCC\_DB. In
-   our example we have:
-
-   ::
-
-       Detected_Wavelength = 1064, 532, 532, 607 ;
-
-Raw_Data_Range_Resolution(channels)
-   This optional array defines the link between the channel index and
-   the raw range resolution for each channel. If the scan angle is
-   different from zero this quantity is different from the vertical
-   resolution. More precisely if :math:`\alpha` is the scan angle used
-   and :math:`\Delta z` is the range resolution the vertical
-   resolution is calculated as :math:`\Delta
-   z'=\Delta z \cos\alpha`. This array has to be filled with
-   :math:`\Delta z` and not with :math:`\Delta z'`. The unit is
-   meters. This information can be also taken from SCC\_DB. In our
-   example we have:
-
-   ::
-
-       Raw_Data_Range_Resolution = 7.5, 15.0, 15.0, 15.0 ;
-
-ID_Range(channels)
-   This optional array defines if a particular channel is configured as
-   high, low or ultranear range channel. In particular a value 0
-   indicates a low range channel, a value 1 a high range channel and a
-   value of 2 an ultranear range channel. If for a particular channel
-   you don’t separate between high and low range channel, please set the
-   corresponding value to 1. This information can be also taken from
-   SCC\_DB. In our case we have to set:
-
-   ::
-
-       ID_Range = 1, 1, 1, 1 ;
-
-Scattering_Mechanism(channels)
-   This optional array defines the scattering mechanism involved in
-   each lidar channel. In particular the following values are adopted:
-
-   +------+---------------------------------------------------------------------------------------------+
-   | 0    | :math:`\rightarrow` Total elastic backscatter                                               |
-   +------+---------------------------------------------------------------------------------------------+
-   | 1    | :math:`\rightarrow` :math:`N_2` vibrational Raman backscatter                               |
-   +------+---------------------------------------------------------------------------------------------+
-   | 2    | :math:`\rightarrow` Cross polarization elastic backscatter                                  |
-   +------+---------------------------------------------------------------------------------------------+
-   | 3    | :math:`\rightarrow` Parallel polarization elastic backscatter                               |
-   +------+---------------------------------------------------------------------------------------------+
-   | 4    | :math:`\rightarrow` :math:`H_2O` vibrational Raman backscatter                              |
-   +------+---------------------------------------------------------------------------------------------+
-   | 5    | :math:`\rightarrow` Rotational Raman Stokes line close to elastic line                      |
-   +------+---------------------------------------------------------------------------------------------+
-   | 6    | :math:`\rightarrow` Rotational Raman Stokes line far from elastic line                      |
-   +------+---------------------------------------------------------------------------------------------+
-   | 7    | :math:`\rightarrow` Rotational Raman anti-Stokes line close to elastic line                 |
-   +------+---------------------------------------------------------------------------------------------+
-   | 8    | :math:`\rightarrow` Rotational Raman anti-Stokes line far from elastic line                 |
-   +------+---------------------------------------------------------------------------------------------+
-   | 9    | :math:`\rightarrow` Rotational Raman Stokes and anti-Stokes lines close to elastic line     |
-   +------+---------------------------------------------------------------------------------------------+
-   | 10   | :math:`\rightarrow` Rotational Raman Stokes and anti-Stokes lines far from elastic line     |
-   +------+---------------------------------------------------------------------------------------------+
-
-   This information can be also taken from SCC\_DB. In our example we have:
-
-   ::
-
-        Scattering_Mechanism = 0, 2, 3, 1 ;
-
-Acquisition_Mode(channels)
-   This optional array defines the acquisition mode (analog or
-   photoncounting) involved in each lidar channel. In particular a value
-   of 0 means analog mode and 1 photoncounting mode. This information
-   can be also taken from SCC\_DB. In our example we have:
-
-   ::
-
-        Acquisition_Mode = 0, 1, 1, 1 ;
-
-Laser_Repetition_Rate(channels)
-   This optional array defines the repetition rate in Hz used to
-   acquire each lidar channel. This information can be also taken from
-   SCC\_DB. In our example we are supposing we have only one laser with
-   a repetition rate of 50 Hz so we have to set:
-
-   ::
-
-       Laser_Repetition_Rate = 50, 50, 50, 50 ;
-
-Dead_Time(channels)
-   This optional array defines the dead time in ns associated to each
-   lidar channel. The SCC will use the values given by this array to
-   correct the photoncounting signals for dead time. Of course for
-   analog signals no dead time correction will be applied (for analog
-   channels the corresponding dead time values have to be set to
-   undefined value). This information can be also taken from SCC\_DB. In
-   our example the 1064 nm channel is acquired in analog mode so the
-   corresponding dead time value has to be undefined. If we suppose a
-   dead time of 10 ns for all other channels we have to set:
-
-   ::
-
-        Dead_Time = _, 10, 10, 10 ;
-
-Dead_Time_Corr_Type(channels
-   This optional array defines which kind of dead time correction has
-   to be applied on each photoncounting channel. The SCC will correct
-   the data supposing a not-paralyzable channel if a value of 0 is found
-   while a paralyzable channel is supposed if a value of 1 is found. Of
-   course for analog signals no dead time correction will be applied and
-   so the corresponding values have to be set to undefined value. This
-   information can be also taken from SCC\_DB. In our example the 1064
-   nm channel is acquired in analog mode so the corresponding has to be
-   undefined. If we want to consider all the photoncounting signals as
-   not-paralyzable ones: we have to set:
-
-   ::
-
-        Dead_Time_Corr_Type = _, 0, 0, 0 ;
-
-Trigger_Delay(channels)
-   This optional array defines the delay (in ns) of the middle of the
-   first rangebin with respect to the output laser pulse for each lidar
-   channel. The SCC will use the values given by this array to correct
-   for trigger delay. This information can be also taken from SCC\_DB.
-   Let’s suppose that in our example all the photoncounting channels are
-   not affected by this delay and only the analog channel at 1064nm is
-   acquired with a delay of 50ns. In this case we have to set:
-
-   ::
-
-       Trigger_Delay = 50, 0, 0, 0 ;
-
-Background_Mode(channels
-   This optional array defines how the atmospheric background has to be
-   subtracted from the lidar channel. Two options are available for the
-   calculation of atmospheric background:
-
-   #. Average in the far field of lidar channel. In this case the value
-      of this variable has to be 1
-
-   #. Average within pre-trigger bins. In this case the value of this
-      variable has to be 0
-
-   This information can be also taken from SCC\_DB. Let’s suppose in our
-   example we use the pre-trigger for the 1064nm channel and the far
-   field for all other channels. In this case we have to set:
-
-   ::
-
-       Background_Mode = 0, 1, 1, 1 ;
-
-Background_Low(channels)
-   This mandatory array defines the minimum altitude (in meters) to
-   consider in calculating the atmospheric background for each channel.
-   In case pre-trigger mode is used the corresponding value has to be
-   set to the rangebin to be used as lower limit (within pre-trigger
-   region) for background calculation. In our example, if we want to
-   calculate the background between 30000 and 50000 meters for all
-   photoncounting channels and we want to use the first 500 pre-trigger
-   bins for the background calculation for the 1064nm channel we have to
-   set:
-
-   ::
-
-        Background_Low= 0, 30000, 30000, 30000 ;
-
-Background_High(channels)
-   This mandatory array defines the maximum altitude (in meters) to
-   consider in calculating the atmospheric background for each channel.
-   In case pre-trigger mode is used the corresponding value has to be
-   set to the rangebin to be used as upper limit (within pre-trigger
-   region) for background calculation. In our example, if we want to
-   calculate the background between 30000 and 50000 meters for all
-   photoncounting channels and we want to use the first 500 pre-trigger
-   bins for the background calculation for the 1064nm channel we have to
-   set:
-
-   ::
-
-       Background_High = 500, 50000, 50000, 50000 ;
-
-Molecular_Calc
-   This mandatory variable defines the way used by SCC to calculate the
-   molecular density profile. At the moment two options are available:
-
-   #. US Standard Atmosphere 1976. In this case the value of this
-      variable has to be 0
-
-   #. Radiosounding. In this case the value of this variable has to be 1
-
-   If we decide to use the option 1. we have to provide also the
-   measured pressure and temperature at lidar station level. Indeed if
-   we decide to use the option 2. a radiosounding file has to be
-   submitted separately in NetCDF format (the structure of this file is
-   summarized in table tab:sounding). Let’s suppose we want to use the
-   option 1. so:
-
-   ::
-
-       Molecular_Calc = 0 ;
-
-Pressure_at_Lidar_Station
-   Because we have chosen the US Standard Atmosphere for calculation of
-   the molecular density profile we have to give the pressure in hPa at
-   lidar station level:
-
-   ::
-
-       Pressure_at_Lidar_Station = 1010 ;
-
-Temperature_at_Lidar_Station
-   Because we have chosen the US Standard Atmosphere for calculation of
-   the molecular density profile we have to give the temperature in C at
-   lidar station level:
-
-   ::
-
-       Temperature_at_Lidar_Station = 19.8 ;
-
-Depolarization_Factor(channels)
-   This array is required only for lidar systems that use the two
-   depolarization channels for the backscatter retrieval. It represents
-   the factor :math:`f` to calculate the total backscatter signal
-   :math:`S_t` combining its cross :math:`S_c` and parallel
-   :math:`S_p` components: :math:`S_t=S_p+fS_c`. This factor is
-   mandatory only for systems acquiring :math:`S_c` and :math:`S_p`
-   and not :math:`S_t`. For systems acquiring :math:`S_c`,
-   :math:`S_p` and :math:`S_t` this factor is optional and it will
-   be used only for depolarizaton ratio calculation. Moreover only the
-   values of the array corresponding to cross polarization channels will
-   be considered; all other values will be not taken into account and
-   should be set to undefined value. In our example for the wavelength
-   532nm we have only the cross and the parallel components and not the
-   total one. So we have to give the value of this factor only in
-   correspondence of the 532nm cross polarization channel that
-   corresponds to the channel index 1. Suppose that this factor is 0.88.
-   Moreover, because we don’t have any other depolarization channels we
-   have also to set all other values of the array to undefined value.
-
-   ::
-
-       Depolarization_Factor = _,0.88,_,_ ;
-
-LR_Input(channels)
-   This array is required only for lidar channels for which elastic
-   backscatter retrieval has to be performed. It defines the lidar ratio
-   to be used within this retrieval. Two options are available:
-
-   #. The user can submit a lidar ratio profile. In this case the value
-      of this variable has to be 0.
-
-   #. A fixed value of lidar ratio can be used. In this case the value
-      of this variable has to be 1.
-
-   If we decide to use the option 1. a lidar ratio file has to be
-   submitted separately in NetCDF format (the structure of this file is
-   summarized in table tab:lr). If we decide to use the option 2. the
-   fixed value of lidar ratio will be taken from SCC\_DB. In our example
-   we have to give a value of this array only for the 1064nm lidar
-   channel because for the 532nm we will be able to retrieve a Raman
-   backscatter coefficient. In case we want to use the fixed value
-   stored in SCC\_DB we have to set:
-
-   ::
-
-       LR_Input = 1,_,_,_ ;
-
-DAQ_Range(channels)
-   This array is required only if one or more lidar signals are
-   acquired in analog mode. It gives the analog scale in mV used to
-   acquire the analog signals. In our example we have only the 1064nm
-   channel acquired in analog mode. If we have used a 100mV analog scale
-   to acquire this channel we have to set:
-
-   ::
-
-       DAQ_Range = 100,_,_,_ ;
-
-Global attributes
-~~~~~~~~~~~~~~~~~
-
-Measurement_ID
-   This mandatory global attribute defines the measurement ID
-   corresponding to the actual lidar measurement. It is a string
-   composed by 12 characters. The first 8 characters give the start date
-   of measurement in the format YYYYMMDD. The next 2 characters give the
-   Earlinet call-sign of the station. The last 2 characters are used to
-   distinguish between different time-series within the same date. In
-   our example we have to set:
-
-   ::
-
-        Measurement_ID= "20090130cc00" ;
-
-RawData_Start_Date
-   This mandatory global attribute defines the start date of lidar
-   measurements in the format YYYYMMDD. In our case we have:
-
-   ::
-
-        RawData_Start_Date = "20090130" ;
-
-RawData_Start_Time_UT
-   This mandatory global attribute defines the UT start time of lidar
-   measurements in the format HHMMSS. In our case we have:
-
-   ::
-
-        RawData_Start_Time_UT = "000001" ;
-
-RawData_Stop_Time_UT``
-   This mandatory global attribute defines the UT stop time of lidar
-   measurements in the format HHMMSS. In our case we have:
-
-   ::
-
-        RawData_Stop_Time_UT = "000501" ;
-
-RawBck_Start_Date
-   This optional global attribute defines the start date of dark
-   measurements in the format YYYYMMDD. In our case we have:
-
-   ::
-
-        RawBck_Start_Date = "20090129" ;
-
-RawBck_Start_Time_UT
-   This optional global attribute defines the UT start time of dark
-   measurements in the format HHMMSS. In our case we have:
-
-   ::
-
-        RawBck_Start_Time_UT = "235001" ;
-
-RawBck_Stop_Time_UT
-   This optional global attribute defines the UT stop time of dark
-   measurements in the format HHMMSS. In our case we have:
-
-   ::
-
-        RawBck_Stop_Time_UT = "235301" ;
-
-Example of file (CDL format)
-----------------------------
-
-To summarize we have the following NetCDF  Raw Lidar Data file (in CDL
-format):
-
-::
-
-    dimensions:
-            points = 5000 ;
-            channels = 4 ;
-            time = UNLIMITED ; // (10 currently)
-            nb_of_time_scales = 2 ;
-            scan_angles = 1 ;
-            time_bck = 6 ;
-    variables:
-            int channel_ID(channels) ;
-            int Laser_Repetition_Rate(channels) ;
-            double Laser_Pointing_Angle(scan_angles) ;
-            int ID_Range(channels) ;
-            int Scattering_Mechanism(channels) ;
-            double Emitted_Wavelength(channels) ;
-            double Detected_Wavelength(channels) ;
-            double Raw_Data_Range_Resolution(channels) ;
-            int Background_Mode(channels) ;
-            double Background_Low(channels) ;
-            double Background_High(channels) ;
-            int Molecular_Calc ;
-            double Pressure_at_Lidar_Station ;
-            double Temperature_at_Lidar_Station ;
-            int id_timescale(channels) ;
-            double Dead_Time(channels) ;
-            int Dead_Time_Corr_Type(channels) ;
-            int Acquisition_Mode(channels) ;
-            double Trigger_Delay(channels) ;
-            int LR_Input(channels) ;
-            int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
-            int Raw_Data_Start_Time(time, nb_of_time_scales) ;
-            int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
-            int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
-            int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
-            int Laser_Shots(time, channels) ;
-            double Raw_Lidar_Data(time, channels, points) ;
-            double Background_Profile(time_bck, channels, points) ;
-            double DAQ_Range(channels) ;
-
-    // global attributes:
-                    :Measurement_ID = "20090130cc00" ;
-                    :RawData_Start_Date = "20090130" ;
-                    :RawData_Start_Time_UT = "000001" ;
-                    :RawData_Stop_Time_UT = "000501" ;
-                    :RawBck_Start_Date = "20090129" ;
-                    :RawBck_Start_Time_UT = "235001" ;
-                    :RawBck_Stop_Time_UT = "235301" ;
-           
-    data:
-
-     channel_ID = 7, 5, 6, 8 ;
-
-     Laser_Repetition_Rate = 50, 50, 50, 50 ;
-
-     Laser_Pointing_Angle = 5 ;
-
-     ID_Range = 1, 1, 1, 1 ;
-
-     Scattering_Mechanism = 0, 2, 3, 1 ;
-
-     Emitted_Wavelength = 1064, 532, 532, 532 ;
-
-     Detected_Wavelength = 1064, 532, 532, 607 ;
-
-     Raw_Data_Range_Resolution = 7.5, 15, 15, 15 ;
-
-     Background_Mode = 0, 1, 1, 1 ;
-
-     Background_Low = 0, 30000, 30000, 30000 ;
-
-     Background_High = 500, 50000, 50000, 50000 ;
-
-     Molecular_Calc = 0 ;
-
-     Pressure_at_Lidar_Station = 1010 ;
-
-     Temperature_at_Lidar_Station = 19.8 ;
-
-     id_timescale = 1, 0, 0, 0 ;
-
-     Dead_Time = _, 10, 10, 10 ;
-
-     Dead_Time_Corr_Type = _, 0, 0, 0 ;
-
-     Acquisition_Mode = 0, 1, 1, 1 ;
-
-     Trigger_Delay = 50, 0, 0, 0 ;
-
-     LR_Input = 1,_,_,_ ;
-
-     DAQ_Range = 100,_,_,_ ;
-
-     Laser_Pointing_Angle_of_Profiles =
-      0, 0,
-      0, 0,
-      0, 0,
-      0, 0,
-      0, 0,
-      _, 0,
-      _, 0,
-      _, 0,
-      _, 0,
-      _, 0 ;
-
-
-     Raw_Data_Start_Time =
-      0, 0,
-      60, 30,
-      120, 60,
-      180, 90,
-      240, 120,
-      _, 150,
-      _, 180,
-      _, 210,
-      _, 240,
-      _, 270 ;
-
-     Raw_Data_Stop_Time =
-      60, 30,
-      120, 60,
-      180, 90,
-      240, 120,
-      300, 150,
-      _, 180,
-      _, 210,
-      _, 240,
-      _, 270,
-      _, 300 ;
-
-
-     Raw_Bck_Start_Time =
-      0, 0,
-      60, 30,
-      120, 60,
-      _, 90,
-      _, 120,
-      _, 150;
-
-
-    Raw_Bck_Stop_Time =
-      60, 30,
-      120, 60,
-      180, 90,
-      _, 120,
-      _, 150,
-      _, 180 ;
-
-
-     Laser_Shots =
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _ ;
-
-
-     Raw_Lidar_Data = ... 
-
-     Background_Profile = ...
-
-Please keep in mind that in case you submit a file like the previous one
-all the parameters present in it will be used by the SCC even if you
-have different values for the same parameters within the SCC\_DB. If you
-want to use the values already stored in SCC\_DB (this should be the
-usual way to use SCC) the  Raw Lidar Data input file has to be
-modified as follows:
-
-::
-
-    dimensions:
-            points = 5000 ;
-            channels = 4 ;
-            time = UNLIMITED ; // (10 currently)
-            nb_of_time_scales = 2 ;
-            scan_angles = 1 ;
-            time_bck = 6 ;
-    variables:
-            int channel_ID(channels) ;
-            double Laser_Pointing_Angle(scan_angles) ;
-            double Background_Low(channels) ;
-            double Background_High(channels) ;
-            int Molecular_Calc ;
-            double Pressure_at_Lidar_Station ;
-            double Temperature_at_Lidar_Station ;
-            int id_timescale(channels) ;
-            int Laser_Pointing_Angle_of_Profiles(time, nb_of_time_scales) ;
-            int Raw_Data_Start_Time(time, nb_of_time_scales) ;
-            int Raw_Data_Stop_Time(time, nb_of_time_scales) ;
-            int Raw_Bck_Start_Time(time_bck, nb_of_time_scales) ;
-            int Raw_Bck_Stop_Time(time_bck, nb_of_time_scales) ;
-            int LR_Input(channels) ;
-            int Laser_Shots(time, channels) ;
-            double Raw_Lidar_Data(time, channels, points) ;
-            double Background_Profile(time_bck, channels, points) ;
-            double DAQ_Range(channels) ;
-
-    // global attributes:
-                    :Measurement_ID = "20090130cc00" ;
-                    :RawData_Start_Date = "20090130" ;  
-                    :RawData_Start_Time_UT = "000001" ;
-                    :RawData_Stop_Time_UT = "000501" ;
-                    :RawBck_Start_Date = "20090129" ;
-                    :RawBck_Start_Time_UT = "235001" ;
-                    :RawBck_Stop_Time_UT = "235301" ;
-        
-    data:
-
-     channel_ID = 7, 5, 6, 8 ;
-
-     Laser_Pointing_Angle = 5 ;
-
-     Background_Low = 0, 30000, 30000, 30000 ;
-
-     Background_High = 500, 50000, 50000, 50000 ;
-
-     Molecular_Calc = 0 ;
-
-     Pressure_at_Lidar_Station = 1010 ;
-
-     Temperature_at_Lidar_Station = 19.8 ;
-
-     id_timescale = 1, 0, 0, 0 ;
-
-     LR_Input = 1,_,_,_ ;
-
-     DAQ_Range = 100,_,_,_ ;
-
-     Laser_Pointing_Angle_of_Profiles =
-      0, 0,
-      0, 0,
-      0, 0,
-      0, 0,
-      0, 0,
-      _, 0,
-      _, 0,
-      _, 0,
-      _, 0,
-      _, 0 ;
-
-
-     Raw_Data_Start_Time =
-      0, 0,
-      60, 30,
-      120, 60,
-      180, 90,
-      240, 120,
-      _, 150,
-      _, 180,
-      _, 210,
-      _, 240,
-      _, 270 ;
-
-     Raw_Data_Stop_Time =
-      60, 30,
-      120, 60,
-      180, 90,
-      240, 120,
-      300, 150,
-      _, 180,
-      _, 210,
-      _, 240,
-      _, 270,
-      _, 300 ;
-
-
-     Raw_Bck_Start_Time =
-      0, 0,
-      60, 30,
-      120, 60,
-      _, 90,
-      _, 120,
-      _, 150;
-
-
-     Raw_Bck_Stop_Time =
-      60, 30,
-      120, 60,
-      180, 90,
-      _, 120,
-      _, 150,
-      _, 180 ;
-
-
-     Laser_Shots =
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, 3000, 3000, 3000, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _, 
-      1500, _, _, _ ;
-
-
-     Raw_Lidar_Data = ...
-
-     Background_Profile = ... 
-
-This example file contains the minimum collection of mandatory
-information that has to be found within the  Raw Lidar Data input
-file. If it is really necessary, the user can decide to add to these
-mandatory parameters any number of additional parameters considered in
-the previous example.
-
-Finally, suppose we want to make the following changes with respect to
-the previous example:
-
-#. use a sounding file for molecular density calculation instead of “US
-   Standar Atmosphere 1976”
-
-#. supply a lidar ratio profile to use in elastic backscatter retrieval
-   instead of a fixed value
-
-#. provide a overlap function for overlap correction
-
-In this case we have to generate the following NetCDF additional files:
-
-rs_20090130cc00.nc
-    The name of  Sounding Data file has to be computed as follows:
-    ``"rs_"``+``Measurement_ID``
-    The structure of this file is summarized in table tab:sounding.
-
-ov_20090130cc00.nc
-    The name of  Overlap file has to be computed as follows:
-    ``"ov_"``+``Measurement_ID``
-    The structure of this file is summarized in table tab:overlap.
-
-lr_20090130cc00.nc
-    The name of  Lidar Ratio file has to be computed as follows:
-    ``"lr_"``+``Measurement_ID``
-    The structure of this file is summarized in table tab:lr.
-
-Moreover we need to apply the following changes to the  Raw Lidar Data
-input file:
-
-1. Change the value of the variable ``Molecular_Calc`` as follows:
-
-   ::
-
-       Molecular_Calc = 1 ;
-
-   Of course the variables ``Pressure_at_Lidar_Station`` and
-   ``Temperature_at_Lidar_Station`` are not necessary anymore.
-
-2. Change the values of the array ``LR_Input`` as follows:
-
-   ::
-
-       LR_Input = 0,_,_,_ ;
-
-3. Add the global attribute ``Sounding_File_Name``
-
-   ::
-
-       Sounding_File_Name = "rs_20090130cc00.nc" ;
-
-5. Add the global attribute ``LR_File_Name``
-
-   ::
-
-       LR_File_Name = "lr_20090130cc00.nc" ;
-
-6. Add the global attribute ``Overlap_File_Name``
-
-   ::
-
-       Overlap_File_Name = "ov_20090130cc00.nc" ;

mercurial