<?xml version="1.0"?>
<cd:ProductClass xmlns:cd="http://www.stcorp.nl/coda/definition/2008/07" name="Sentinel5P" last-modified="2016-09-22">
  <cd:Description>Sentinel-5P products</cd:Description>
  <cd:ProductType name="L1B_RA_BD1">
    <cd:Description>Sentinel 5P L1b Radiance product band 1 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD1" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD1"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND1_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD2">
    <cd:Description>Sentinel 5P L1b Radiance product band 2 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD2" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD2"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND2_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD3">
    <cd:Description>Sentinel 5P L1b Radiance product band 3 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD3" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD3"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND3_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD4">
    <cd:Description>Sentinel 5P L1b Radiance product band 4 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD4" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD4"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND4_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD5">
    <cd:Description>Sentinel 5P L1b Radiance product band 5 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD5" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD5"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND5_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD6">
    <cd:Description>Sentinel 5P L1b Radiance product band 6 (UV detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD6" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD6"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND6_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD7">
    <cd:Description>Sentinel 5P L1b Radiance product band 7 (SWIR detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD7" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD7"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND7_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_RA_BD8">
    <cd:Description>Sentinel 5P L1b Radiance product band 8 (SWIR detector)</cd:Description>
    <cd:ProductDefinition id="L1B_RA_BD8" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_RA_BD8"</cd:MatchExpression>
        <cd:MatchExpression>exists(/BAND8_RADIANCE)</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_IR_UVN">
    <cd:Description>Sentinel 5P L1b Irradiance product UVN module</cd:Description>
    <cd:ProductDefinition id="L1B_IR_UVN" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_IR_UVN"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_IR_SIR">
    <cd:Description>Sentinel 5P L1b Irradiance product SWIR module</cd:Description>
    <cd:ProductDefinition id="L1B_IR_SIR" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_IR_SIR"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_CA_UVN">
    <cd:Description>Sentinel 5P L1b Calibration product UVN module</cd:Description>
    <cd:ProductDefinition id="L1B_CA_UVN" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_CA_UVN"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_CA_SIR">
    <cd:Description>Sentinel 5P L1b Calibration product SIR module</cd:Description>
    <cd:ProductDefinition id="L1B_CA_SIR" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_CA_SIR"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L1B_ENG_DB">
    <cd:Description>Sentinel 5P L1b Engineering product</cd:Description>
    <cd:ProductDefinition id="L1B_ENG_DB" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression>substr(0,3,filename())=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>substr(9,10,filename())=="L1B_ENG_DB"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__O3__PR">
    <cd:Description>Sentinel 5P L2 O3 profile</cd:Description>
    <cd:ProductDefinition id="L2__O3__PR" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__O3__PR"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__O3_TCL">
    <cd:Description>Sentinel 5P L2 O3 tropospheric column</cd:Description>
    <cd:ProductDefinition id="L2__O3_TPR" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="Tropomi"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__O3_TCL"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__O3_TPR">
    <cd:Description>Sentinel 5P L2 O3 tropospheric profile</cd:Description>
    <cd:ProductDefinition id="L2__O3_TPR" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__O3_TPR"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__NO2___">
    <cd:Description>Sentinel 5P L2 NO2 tropospheric column</cd:Description>
    <cd:ProductDefinition id="L2__NO2___" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__NO2___"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__CO____">
    <cd:Description>Sentinel 5P L2 CO total column</cd:Description>
    <cd:ProductDefinition id="L2__CO____" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__CO____"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__CH4___">
    <cd:Description>Sentinel 5P L2 CH4 total column</cd:Description>
    <cd:ProductDefinition id="L2__CH4___" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__CH4___"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__AER_LH">
    <cd:Description>Sentinel 5P L2 aerosol layer height</cd:Description>
    <cd:ProductDefinition id="L2__AER_LH" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__AER_LH"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__AER_AI">
    <cd:Description>Sentinel 5P L2 aerosol index</cd:Description>
    <cd:ProductDefinition id="L2__AER_AI" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__AER_AI"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__CLOUD_">
    <cd:Description>Sentinel 5P L2 cloud properties</cd:Description>
    <cd:ProductDefinition id="L2__CLOUD_" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__CLOUD_"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__FRESCO">
    <cd:Description>Sentinel 5P L2 KNMI cloud support product</cd:Description>
    <cd:ProductDefinition id="L2__FRESCO" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__FRESCO"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__SO2___">
    <cd:Description>Sentinel 5P L2 KNMI SO2 total column</cd:Description>
    <cd:ProductDefinition id="L2__SO2___" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__SO2___"</cd:MatchExpression>
      </cd:DetectionRule>
      <cd:DetectionRule>
        <!-- For now, also support the sample product that had a wrong attribute value -->
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__SO2____"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__O3____">
    <cd:Description>Sentinel 5P L2 KNMI O3 total column</cd:Description>
    <cd:ProductDefinition id="L2__O3____" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__O3____"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
  <cd:ProductType name="L2__HCHO__">
    <cd:Description>Sentinel 5P L2 KNMI HCHO total column</cd:Description>
    <cd:ProductDefinition id="L2__HCHO__" format="hdf5" version="0">
      <cd:Description>The format definition for this product is taken from the netCDF4 file itself.</cd:Description>
      <cd:DetectionRule>
        <cd:MatchExpression path="/METADATA/GRANULE_DESCRIPTION">str(.@InstrumentName)=="TROPOMI"</cd:MatchExpression>
        <cd:MatchExpression>str(.@MissionShortName)=="S5P"</cd:MatchExpression>
        <cd:MatchExpression>str(.@ProductShortName)=="L2__HCHO__"</cd:MatchExpression>
      </cd:DetectionRule>
    </cd:ProductDefinition>
  </cd:ProductType>
</cd:ProductClass>
