15 #include "ioda/ObsVector.h"
17 #include "oops/util/Logger.h"
20 #include "ufo/GeoVaLs.h"
21 #include "ufo/ObsDiagnostics.h"
33 oops::Log::trace() <<
"ObsCategorical constructor starting" << std::endl;
35 data_.configure(odb, params);
37 oops::Log::trace() <<
"ObsCategorical constructor finished" << std::endl;
43 oops::Log::trace() <<
"ObsCategorical destructed" << std::endl;
50 oops::Log::trace() <<
"ObsCategorical: simulateObs entered" << std::endl;
55 std::map <std::string, ioda::ObsVector> ovecs;
57 for (
const auto& component :
data_.components()) {
58 ioda::ObsVector ovecTemp(ovec);
59 component.second->simulateObs(gv, ovecTemp, ydiags);
60 ovecs.insert({component.first, ovecTemp});
65 data_.fillHofX(ovecs, ovec);
67 oops::Log::trace() <<
"ObsCategorical: simulateObs finished" << std::endl;
GeoVaLs: geophysical values at locations.
~ObsCategorical() override
ObsCategoricalData< ObsOperatorBase > data_
Data handler for the Categorical operator and TL/AD code.
void simulateObs(const GeoVaLs &, ioda::ObsVector &, ObsDiagnostics &) const override
Obs Operator.
void print(std::ostream &) const override
ObsCategorical(const ioda::ObsSpace &, const Parameters_ &)
Configuration options recognized by the Categorical operator.
static ObsOperatorMaker< ObsCategorical > obsCategoricalMaker_("Categorical")