8 #include <blitz/array.h> 9 #include <boost/shared_ptr.hpp> 54 const Spectrum& High_resolution_spectrum,
55 const std::vector<int>& Pixel_list,
56 int Spec_index)
const = 0;
68 virtual std::string
band_name(
int Spec_index)
const = 0;
90 virtual void print(std::ostream& Os)
const {Os <<
"Instrument";}
virtual boost::shared_ptr< Instrument > clone() const =0
Clone an Instrument object.
virtual std::string hdf_band_name(int Spec_index) const
In general, the name used in HDF files for a particular band is similar but not identical to the more...
virtual SpectralDomain pixel_spectral_domain(int Spec_index) const =0
This is the pixel wavenumber/wavelength for each pixel.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
virtual std::string band_name(int Spec_index) const =0
Band name for given Spec_index.
virtual int number_spectrometer() const =0
Give number of spectrometers.
void add_observer_do(Observer< Instrument > &Obs, Instrument &t)
Add an observer.
This is an observer of a StateVector.
void remove_observer_do(Observer< Instrument > &Obs, Instrument &t)
Remove an observer.
virtual Spectrum apply_instrument_model(const Spectrum &High_resolution_spectrum, const std::vector< int > &Pixel_list, int Spec_index) const =0
Apply the instrument model to both the radiance and derivatives.
This applies a instrument model to radiances.
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
Mixin for a class that allows other classes to observe it state.
virtual void print(std::ostream &Os) const
We frequently have a double with units associated with it.
virtual void add_observer(Observer< Instrument > &Obs)
Add an observer.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
virtual void remove_observer(Observer< Instrument > &Obs)
Remove an observer.
virtual DoubleWithUnit ils_half_width(int Spec_index) const =0
This is the half width of the ILS in wavenumber.