MODULE SensorInfo_Parameters

  ! -----------------
  ! Environment setup
  ! -----------------
  ! Module use
  ! ...none
  ! Disable implicit typing
  IMPLICIT NONE


  ! ------------
  ! Visibilities
  ! ------------
  ! Everything private by default
  PRIVATE
  ! Sensor Id defaults
  PUBLIC :: INVALID_WMO_SATELLITE_ID
  PUBLIC :: INVALID_WMO_SENSOR_ID
  ! Allowable sensor type values and names
  PUBLIC :: N_SENSOR_TYPES
  PUBLIC :: INVALID_SENSOR  
  PUBLIC :: MICROWAVE_SENSOR
  PUBLIC :: INFRARED_SENSOR 
  PUBLIC :: VISIBLE_SENSOR  
  PUBLIC :: ULTRAVIOLET_SENSOR  
  PUBLIC :: SENSOR_TYPE_NAME
  ! Allowable polarisation type values and names
  PUBLIC :: N_POLARIZATION_TYPES   
  PUBLIC :: INVALID_POLARIZATION   
  PUBLIC :: UNPOLARIZED            
  PUBLIC :: INTENSITY              
  PUBLIC :: FIRST_STOKES_COMPONENT 
  PUBLIC :: SECOND_STOKES_COMPONENT
  PUBLIC :: THIRD_STOKES_COMPONENT 
  PUBLIC :: FOURTH_STOKES_COMPONENT
  PUBLIC :: VL_POLARIZATION        
  PUBLIC :: HL_POLARIZATION        
  PUBLIC :: plus45L_POLARIZATION   
  PUBLIC :: minus45L_POLARIZATION  
  PUBLIC :: VL_MIXED_POLARIZATION  
  PUBLIC :: HL_MIXED_POLARIZATION  
  PUBLIC :: RC_POLARIZATION        
  PUBLIC :: LC_POLARIZATION        
  PUBLIC :: POLARIZATION_TYPE_NAME


  ! -----------------
  ! Module parameters
  ! -----------------
  ! RCS Id for the module
  CHARACTER(*), PARAMETER :: MODULE_RCS_ID = &
  '$Id: $'
  ! Invalid sensor ids
  INTEGER, PARAMETER :: INVALID_WMO_SATELLITE_ID = 1023
  INTEGER, PARAMETER :: INVALID_WMO_SENSOR_ID    = 2047
  ! The instrument types
  INTEGER, PARAMETER :: N_SENSOR_TYPES     = 4
  INTEGER, PARAMETER :: INVALID_SENSOR     = 0
  INTEGER, PARAMETER :: MICROWAVE_SENSOR   = 1
  INTEGER, PARAMETER :: INFRARED_SENSOR    = 2
  INTEGER, PARAMETER :: VISIBLE_SENSOR     = 3
  INTEGER, PARAMETER :: ULTRAVIOLET_SENSOR = 4
  CHARACTER(*), PARAMETER, DIMENSION( 0:N_SENSOR_TYPES ) :: &
    SENSOR_TYPE_NAME = (/ 'Invalid    ', &
                          'Microwave  ', &
                          'Infrared   ', &
                          'Visible    ', &
                          'Ultraviolet' /)

  ! The polarisation flags
  INTEGER, PARAMETER :: N_POLARIZATION_TYPES    = 12
  INTEGER, PARAMETER :: INVALID_POLARIZATION    = 0
  INTEGER, PARAMETER :: UNPOLARIZED             = 1
  INTEGER, PARAMETER :: INTENSITY               = UNPOLARIZED
  INTEGER, PARAMETER :: FIRST_STOKES_COMPONENT  = UNPOLARIZED
  INTEGER, PARAMETER :: SECOND_STOKES_COMPONENT = 2
  INTEGER, PARAMETER :: THIRD_STOKES_COMPONENT  = 3
  INTEGER, PARAMETER :: FOURTH_STOKES_COMPONENT = 4
  INTEGER, PARAMETER :: VL_POLARIZATION         = 5
  INTEGER, PARAMETER :: HL_POLARIZATION         = 6
  INTEGER, PARAMETER :: plus45L_POLARIZATION    = 7
  INTEGER, PARAMETER :: minus45L_POLARIZATION   = 8
  INTEGER, PARAMETER :: VL_MIXED_POLARIZATION   = 9
  INTEGER, PARAMETER :: HL_MIXED_POLARIZATION   = 10
  INTEGER, PARAMETER :: RC_POLARIZATION         = 11
  INTEGER, PARAMETER :: LC_POLARIZATION         = 12
  CHARACTER(*), PARAMETER, DIMENSION( 0:N_POLARIZATION_TYPES ) :: &
    POLARIZATION_TYPE_NAME = (/ 'Invalid                                          ', &
                                'Unpolarized/Intensity/First Stokes component (I) ', &
                                'Second Stokes component (Q)                      ', &
                                'Third Stokes component (U)                       ', &
                                'Fourth Stokes component (V)                      ', &
                                'Vertical linear polarization                     ', &
                                'Horizontal linear polarization                   ', &
                                '+45deg. linear polarization                      ', &
                                '-45deg. linear polarization                      ', &
                                'Vertical polarization at nadir; mixed off nadir  ', &
                                'Horizontal polarization at nadir; mixed off nadir', &
                                'Right circular polarization                      ', &
                                'Left circular polarization                       ' /)


END MODULE SensorInfo_Parameters