1 #ifndef LEVEL_1B_CACHE_H 2 #define LEVEL_1B_CACHE_H 16 virtual void print(std::ostream& Os)
const {Os <<
"Level1bCache";}
151 stk_coeff[i].reference(V.copy());
207 const std::vector<int>& Plist)
210 if(V.
data().rows() != (int) Plist.size())
211 throw Exception(
"Spectral Range is not the same size as Plist");
212 blitz::Array<double, 1> rnew = rad[i].data().copy();
213 blitz::Array<double, 1> unew = rad[i].uncertainty().copy();
214 for(
int j = 0; j < (int) Plist.size(); ++j) {
215 rnew(Plist[j]) = V.
data()(j);
222 std::vector<DoubleWithUnit> lat, lon, szen, sazm, solzen, solazm, alt,
224 std::vector<blitz::Array<double, 1> > stk_coeff;
225 std::vector<SpectralDomain> samp_grid;
226 std::vector<Time> tm;
227 std::vector<SpectralRange> rad;
#define range_check(V, Min, Max)
Range check.
void set_altitude(int i, const DoubleWithUnit &V)
Change value.
virtual DoubleWithUnit latitude(int i) const
Latitude.
void set_time(int i, const Time &V)
Change value.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
virtual SpectralRange radiance(int i) const
Radiance, for given spectral band.
virtual DoubleWithUnit longitude(int i) const
Longitude.
void set_sample_grid(int i, const SpectralDomain &V)
Change value.
This is the base of the exception hierarchy for Full Physics code.
Level1bCache(const Level1b &L1_in)
Constructor.
This is used to read a Level 1B file.
SpectralDomain sample_grid(int i) const
Returns the sample grid (ie wavenumber, wavelength, etc) for the corresponding radiance values...
virtual DoubleWithUnit solar_azimuth(int i) const
Solar azimuth.
void set_stokes_coefficient(int i, const blitz::Array< double, 1 > &V)
Change value.
This is a Level1b implementation that just saves the data read from another Level1b object...
const Unit & units() const
Units of data.
const blitz::Array< double, 1 > & uncertainty() const
Uncertainty.
void set_radiance(int i, const SpectralRange &V)
Change value.
void set_solar_azimuth(int i, const DoubleWithUnit &V)
Change value.
We frequently have a double with units associated with it.
void set_radiance(int i, const SpectralRange &V, const std::vector< int > &Plist)
Change value, but only for a subset of pixels.
void set_sounding_zenith(int i, const DoubleWithUnit &V)
Change value.
We have a number of different spectrums that appear in different parts of the code.
void set_relative_velocity(int i, const DoubleWithUnit &V)
Change value.
virtual DoubleWithUnit altitude(int i) const
Altitude.
void set_longitude(int i, const DoubleWithUnit &V)
Change value.
virtual DoubleWithUnit sounding_azimuth(int i) const
Sounding azimuth.
virtual void print(std::ostream &Os) const
Print description of object.
This is a simple time class.
void set_latitude(int i, const DoubleWithUnit &V)
Change value.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
virtual int number_spectrometer() const
Number of spectrometers.
virtual DoubleWithUnit relative_velocity(int i) const
Relative velocity.
void set_sounding_azimuth(int i, const DoubleWithUnit &V)
Change value.
void set_solar_zenith(int i, const DoubleWithUnit &V)
Change value.
virtual Time time(int i) const
Time of sounding.
virtual DoubleWithUnit solar_zenith(int i) const
Solar zenith.
virtual blitz::Array< double, 1 > stokes_coefficient(int i) const
Return stokes coefficients.
const blitz::Array< double, 1 > & data() const
Underlying data.
virtual DoubleWithUnit sounding_zenith(int i) const
Sounding zenith.