UFO
CloudDetectMinResidualIR.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 2019 UCAR
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  */
7 
8 #ifndef UFO_FILTERS_OBSFUNCTIONS_CLOUDDETECTMINRESIDUALIR_H_
9 #define UFO_FILTERS_OBSFUNCTIONS_CLOUDDETECTMINRESIDUALIR_H_
10 
11 #include <string>
12 #include <vector>
13 
14 #include "oops/util/parameters/Parameter.h"
15 #include "oops/util/parameters/Parameters.h"
16 #include "oops/util/parameters/RequiredParameter.h"
17 
20 #include "ufo/filters/Variables.h"
21 
22 namespace ufo {
23 
24 ///
25 /// \brief Options applying to Cloud Detection Algorithm (Minimum Residual Method)
26 /// for Infrared sensors
27 ///
28 class CloudDetectMinResidualIRParameters : public oops::Parameters {
29  OOPS_CONCRETE_PARAMETERS(CloudDetectMinResidualIRParameters, Parameters)
30 
31  public:
32  /// List of channels available for assimilation
33  oops::RequiredParameter<std::string> channelList{"channels", this};
34 
35  /// Useflag (-1: not used; 0: monitoring; 1: used) for each channel in channelList
36  oops::RequiredParameter<std::vector<int>> useflagChannel{"use_flag", this};
37 
38  /// Useflag (-1: not used; 1: used) indicating if the channel is used for cloud detection
39  oops::RequiredParameter<std::vector<int>> useflagCloudDetect{"use_flag_clddet", this};
40 
41  /// Observation error scale factors applied to surface temperature jacobians
42  /// over 5 surface types: [sea, land, ice, snow and mixed]
43  oops::RequiredParameter<std::vector<float>> obserrScaleFactorTsfc{"obserr_dtempf", this};
44 
45  /// Name of the data group to which the observation error is applied (default: ObsErrorData)
46  oops::Parameter<std::string> testObserr{"test_obserr", "ObsErrorData", this};
47 
48  /// Name of the HofX group used to replace the default group (default is HofX)
49  oops::Parameter<std::string> testHofX{"test_hofx", "HofX", this};
50 
51  /// Name of the data group to which the QC flag is applied (default is QCflagsData)
52  oops::Parameter<std::string> testQCflag{"test_qcflag", "QCflagsData", this};
53 };
54 
55 ///
56 /// \brief Cloud Detection Algorithm (Minimum Residual Method) for Infrared sensors
57 /// using selected channels from 15 microns CO2 absorption band
58 /// Output of this function:
59 /// 0 = channel is not affected by clouds (clear channel)
60 /// 1 = channel is affected by clouds (cloudy channel)
61 /// 2 = channel is not affected by clouds but too sensitive to surface condition
62 ///
64  public:
65  explicit CloudDetectMinResidualIR(const eckit::LocalConfiguration &);
67 
68  void compute(const ObsFilterData &,
70  const ufo::Variables & requiredVariables() const;
71  private:
74  std::vector<int> channels_;
75 };
76 
77 // -----------------------------------------------------------------------------
78 
79 } // namespace ufo
80 
81 #endif // UFO_FILTERS_OBSFUNCTIONS_CLOUDDETECTMINRESIDUALIR_H_
Cloud Detection Algorithm (Minimum Residual Method) for Infrared sensors using selected channels from...
CloudDetectMinResidualIRParameters options_
const ufo::Variables & requiredVariables() const
geovals required to compute the function
CloudDetectMinResidualIR(const eckit::LocalConfiguration &)
void compute(const ObsFilterData &, ioda::ObsDataVector< float > &) const
compute the result of the function
Options applying to Cloud Detection Algorithm (Minimum Residual Method) for Infrared sensors.
oops::Parameter< std::string > testQCflag
Name of the data group to which the QC flag is applied (default is QCflagsData)
oops::Parameter< std::string > testHofX
Name of the HofX group used to replace the default group (default is HofX)
oops::RequiredParameter< std::vector< int > > useflagChannel
Useflag (-1: not used; 0: monitoring; 1: used) for each channel in channelList.
oops::RequiredParameter< std::string > channelList
List of channels available for assimilation.
oops::Parameter< std::string > testObserr
Name of the data group to which the observation error is applied (default: ObsErrorData)
oops::RequiredParameter< std::vector< int > > useflagCloudDetect
Useflag (-1: not used; 1: used) indicating if the channel is used for cloud detection.
oops::RequiredParameter< std::vector< float > > obserrScaleFactorTsfc
ObsFilterData provides access to all data related to an ObsFilter.
Definition: RunCRTM.h:27