UFO
SatName.h
Go to the documentation of this file.
1 /*
2  * (C) Crown copyright 2021, Met Office
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 #ifndef UFO_FILTERS_SATNAME_H_
8 #define UFO_FILTERS_SATNAME_H_
9 
10 #include <algorithm>
11 #include <iterator>
12 #include <memory>
13 #include <string>
14 #include <vector>
15 
16 #include "oops/util/missingValues.h"
17 #include "oops/util/ObjectCounter.h"
18 #include "oops/util/parameters/OptionalParameter.h"
19 #include "oops/util/parameters/RequiredParameter.h"
20 #include "ufo/filters/FilterBase.h"
21 #include "ufo/filters/QCflags.h"
22 #include "ufo/filters/Variable.h"
24 namespace eckit {
25  class Configuration;
26 }
27 namespace ioda {
28  template <typename DATATYPE> class ObsDataVector;
29  class ObsSpace;
30 }
31 namespace ufo {
32  static const std::string missing_value_string = util::missingValue(missing_value_string);
33 //
34 // table in yaml file to relate satellite name and wmo number label in yaml "Satellite_id"
35 //
36 class SatnameParameters : public oops::Parameters {
37  OOPS_CONCRETE_PARAMETERS(SatnameParameters, Parameters)
38  public:
39  oops::RequiredParameter<std::string> Satname{"Sat name", this};
40  oops::RequiredParameter<float> Satnumber{"Sat ID", this};
41 };
42 //
43 // various satillite instrument characteristics label in yaml "Satellite_comp"
44 //
45 class FrequencyBandParameters : public oops::Parameters {
46  OOPS_CONCRETE_PARAMETERS(FrequencyBandParameters, Parameters)
47  public:
48  oops::RequiredParameter<float> minFrequency{"min frequency", this};
49  oops::RequiredParameter<float> maxFrequency{"max frequency", this};
50  oops::OptionalParameter<int> satobchannel{"satobchannel", this};
51  oops::RequiredParameter<std::string> windChannel{"wind channel", this};
52 };
53 //
54 // range of satellite wmo numbers "min obs type" and "max obs type"
55 //
56 class SatIDRangeParameters : public oops::Parameters {
57  OOPS_CONCRETE_PARAMETERS(SatIDRangeParameters, Parameters)
58  public:
59  oops::RequiredParameter<int> minSatID{"min WMO Satellite id", this};
60  oops::RequiredParameter<int> maxSatID{"max WMO Satellite id", this};
61  oops::Parameter<std::vector<FrequencyBandParameters>> Satellite_comp{
62  "Satellite_comp", {}, this};
63  oops::Parameter<std::vector<SatnameParameters>> Satellite_id{
64  "Satellite_id", {}, this};
65 };
66 // Parameters controlling the operation of the SatName filter.
68  OOPS_CONCRETE_PARAMETERS(SatNameParameters, FilterParametersBase)
69 
70  public:
71  oops::Parameter<std::vector<SatIDRangeParameters>>
72  SatNameAssignments{ "SatName assignments", {}, this};};
73 class SatName : public FilterBase,
74  private util::ObjectCounter<SatName> {
75  public:
76 // The type of parameters accepted by the constructor of this filter.
77 // This typedef is used by the FilterFactory.
79  static const std::string classname() {return "ufo::SatName";}
80  SatName(ioda::ObsSpace &, const Parameters_ &,
81  std::shared_ptr<ioda::ObsDataVector<int> >,
82  std::shared_ptr<ioda::ObsDataVector<float> >);
83  ~SatName();
84  private:
85  void print(std::ostream &) const override;
86  void applyFilter(const std::vector<bool> &, const Variables &,
87  std::vector<std::vector<bool>> &) const override;
88  int qcFlag() const override {return QCflags::pass;}
90 };
91 } // namespace ufo
92 #endif // UFO_FILTERS_SATNAME_H_
Base class for UFO QC filters.
Definition: FilterBase.h:45
Parameters shared by all filters having a default action (typically "reject").
oops::RequiredParameter< float > maxFrequency
Definition: SatName.h:49
oops::RequiredParameter< std::string > windChannel
Definition: SatName.h:51
oops::OptionalParameter< int > satobchannel
Definition: SatName.h:50
oops::RequiredParameter< float > minFrequency
Definition: SatName.h:48
oops::RequiredParameter< int > maxSatID
Definition: SatName.h:60
oops::Parameter< std::vector< FrequencyBandParameters > > Satellite_comp
Definition: SatName.h:61
oops::Parameter< std::vector< SatnameParameters > > Satellite_id
Definition: SatName.h:63
oops::RequiredParameter< int > minSatID
Definition: SatName.h:59
static const std::string classname()
Definition: SatName.h:79
void applyFilter(const std::vector< bool > &, const Variables &, std::vector< std::vector< bool >> &) const override
A filter that creates a string variable that makes it simpler to identify Atmospheric Motion Vector (...
Definition: SatName.cc:147
int qcFlag() const override
Definition: SatName.h:88
Parameters_ parameters_
Definition: SatName.h:89
SatName(ioda::ObsSpace &, const Parameters_ &, std::shared_ptr< ioda::ObsDataVector< int > >, std::shared_ptr< ioda::ObsDataVector< float > >)
Definition: SatName.cc:62
void print(std::ostream &) const override
Definition: SatName.cc:210
SatNameParameters Parameters_
Definition: SatName.h:78
oops::Parameter< std::vector< SatIDRangeParameters > > SatNameAssignments
Definition: SatName.h:72
oops::RequiredParameter< std::string > Satname
Definition: SatName.h:39
oops::RequiredParameter< float > Satnumber
Definition: SatName.h:40
Forward declarations.
Definition: ObsAodExt.h:21
Forward declarations.
Definition: ObsAodExt.h:25
constexpr int pass
Definition: QCflags.h:14
Definition: RunCRTM.h:27
static const std::string missing_value_string
Definition: SatName.h:32