1 #ifndef EMPIRICAL_ORTHOGONAL_FUNCTION_H 2 #define EMPIRICAL_ORTHOGONAL_FUNCTION_H 9 #include <boost/lexical_cast.hpp> 51 const std::string& Band_name,
52 const std::string& Hdf_group =
"N/A",
53 int Sounding_number = 0,
54 bool Eof_depend_on_sounding_number =
false)
59 sounding_number_(Sounding_number),
60 eof_depend_on_sounding_number_(Eof_depend_on_sounding_number),
67 const HdfFile& Hdf_static_input,
71 const std::string& Band_name,
72 const std::string& Hdf_group =
73 "Instrument/EmpiricalOrthogonalFunction");
76 const HdfFile& Hdf_static_input,
80 const std::string& Band_name,
81 const std::string& Hdf_group =
82 "Instrument/EmpiricalOrthogonalFunction");
85 const HdfFile& Hdf_static_input,
90 const std::string& Band_name,
91 const std::string& Hdf_group =
92 "Instrument/EmpiricalOrthogonalFunction",
93 double Scale_to_stddev = 1e19);
99 {
return "EOF order " + boost::lexical_cast<std::string>(order_) +
100 " scale factor " + band_name; }
105 const std::vector<int>& Pixel_list,
107 virtual void print(std::ostream& Os)
const;
142 return (t < 0 ? 0 : sqrt(t));
146 std::string band_name;
147 std::string hdf_group;
149 int sounding_number_;
150 bool eof_depend_on_sounding_number_;
151 bool eof_scale_uncertainty_;
152 double scale_to_stddev_;
virtual std::string sub_state_identifier() const
Return a string to identify this part of the state, this name should be all lower case and seperate p...
virtual void print(std::ostream &Os) const
EmpiricalOrthogonalFunction(double Coeff, bool Used_flag, const ArrayWithUnit< double, 1 > &Eof_waveform, int Order, const std::string &Band_name, const std::string &Hdf_group="N/A", int Sounding_number=0, bool Eof_depend_on_sounding_number=false)
Constructor.
double scale() const
Scale.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
virtual ~EmpiricalOrthogonalFunction()
blitz::Array< double, 2 > sv_cov_sub
The subset of cov_full that is "owned" by this class, what was passed through update_sub_state.
This class applies a empirical orthogonal function (EOF) correction to instrument data...
blitz::Array< T, D > value
This class reads and writes a HDF5 file.
const blitz::Array< T, D > & value() const
double scale_uncertainty() const
Scale uncertainty.
We have a number of different spectrums that appear in different parts of the code.
ArrayWithUnit< double, 1 > eof() const
Current value of empirical orthogonal function, for each pixel number.
This class calculates the wavenumber for each pixel in a single band of an Instrument.
int order() const
Order of the empirical orthogonal function (e.g., first order, second order, etc.) ...
It is common to have a class that is an Observable with a set of coefficients, a subset of which are ...
Contains classes to abstract away details in various Spurr Radiative Transfer software.
ArrayAd< double, 1 > coeff
Coefficients.
virtual boost::shared_ptr< InstrumentCorrection > clone() const
Clone an InstrumentCorrection object.
virtual std::string state_vector_name_i(int i) const
Return state vector name for ith entry in coeff.
This class models an Instrument correction.
virtual void apply_correction(const SpectralDomain &Pixel_grid, const std::vector< int > &Pixel_list, SpectralRange &Radiance) const
Apply correction to radiance values, in place.