11 #ifndef OOPS_INTERFACE_OBSAUXCONTROL_H_
12 #define OOPS_INTERFACE_OBSAUXCONTROL_H_
19 #include "oops/util/Logger.h"
20 #include "oops/util/ObjectCounter.h"
21 #include "oops/util/Printable.h"
22 #include "oops/util/Timer.h"
33 template <
typename OBS>
35 private util::ObjectCounter<ObsAuxControl<OBS> > {
39 static const std::string
classname() {
return "oops::ObsAuxControl";}
50 void read(
const eckit::Configuration &);
51 void write(
const eckit::Configuration &)
const;
62 void print(std::ostream &)
const;
63 std::unique_ptr<ObsAuxControl_>
aux_;
68 template<
typename OBS>
70 const eckit::Configuration & conf) : aux_()
72 Log::trace() <<
"ObsAuxControl<OBS>::ObsAuxControl starting" << std::endl;
73 util::Timer timer(
classname(),
"ObsAuxControl");
75 Log::trace() <<
"ObsAuxControl<OBS>::ObsAuxControl done" << std::endl;
80 template<
typename OBS>
83 Log::trace() <<
"ObsAuxControl<OBS>::ObsAuxControl copy starting" << std::endl;
84 util::Timer timer(
classname(),
"ObsAuxControl");
86 Log::trace() <<
"ObsAuxControl<OBS>::ObsAuxControl copy done" << std::endl;
91 template<
typename OBS>
93 Log::trace() <<
"ObsAuxControl<OBS>::~ObsAuxControl starting" << std::endl;
94 util::Timer timer(classname(),
"~ObsAuxControl");
96 Log::trace() <<
"ObsAuxControl<OBS>::~ObsAuxControl done" << std::endl;
101 template<
typename OBS>
103 Log::trace() <<
"ObsAuxControl<OBS>::read starting" << std::endl;
104 util::Timer timer(classname(),
"read");
106 Log::trace() <<
"ObsAuxControl<OBS>::read done" << std::endl;
111 template<
typename OBS>
113 Log::trace() <<
"ObsAuxControl<OBS>::write starting" << std::endl;
114 util::Timer timer(classname(),
"write");
116 Log::trace() <<
"ObsAuxControl<OBS>::write done" << std::endl;
121 template<
typename OBS>
123 Log::trace() <<
"ObsAuxControl<OBS>::norm starting" << std::endl;
124 util::Timer timer(classname(),
"norm");
125 double zz = aux_->norm();
126 Log::trace() <<
"ObsAuxControl<OBS>::norm done" << std::endl;
132 template<
typename OBS>
134 Log::trace() <<
"ObsAuxControl<OBS>::requiredVars starting" << std::endl;
135 util::Timer timer(classname(),
"requiredVars");
136 Log::trace() <<
"ObsAuxControl<OBS>::requiredVars done" << std::endl;
137 return aux_->requiredVars();
142 template<
typename OBS>
144 Log::trace() <<
"ObsAuxControl<OBS>::requiredHdiagnostics starting" << std::endl;
145 util::Timer timer(classname(),
"requiredHdiagnostics");
146 Log::trace() <<
"ObsAuxControl<OBS>::requiredHdiagnostics done" << std::endl;
147 return aux_->requiredHdiagnostics();
151 template<
typename OBS>
153 Log::trace() <<
"ObsAuxControl<OBS>::operator= starting" << std::endl;
154 util::Timer timer(classname(),
"operator=");
156 Log::trace() <<
"ObsAuxControl<OBS>::operator= done" << std::endl;
162 template<
typename OBS>
164 Log::trace() <<
"ObsAuxControl<OBS>::print starting" << std::endl;
165 util::Timer timer(classname(),
"print");
167 Log::trace() <<
"ObsAuxControl<OBS>::print done" << std::endl;
174 #endif // OOPS_INTERFACE_OBSAUXCONTROL_H_