21 std::vector<int> plist = pixel_list(Spec_index);
22 if (plist.size() > 0) {
23 return spectral_window->apply(inst->pixel_spectral_domain(Spec_index), Spec_index);
37 std::vector<int> plist = pixel_list(Spec_index);
38 if (plist.size() > 0) {
39 return spectrum_sampling->spectral_domain(Spec_index, low_resolution_grid(Spec_index), inst->ils_half_width(Spec_index));
53 std::vector<int> plist = pixel_list(Spec_index);
54 if (plist.size() > 0) {
55 return spectrum_sampling->spectral_domain_interpolated(Spec_index, low_resolution_grid(Spec_index), inst->ils_half_width(Spec_index));
67 return spectral_window->grid_indexes(inst->pixel_spectral_domain(Spec_index), Spec_index);
75 (
const Spectrum& Spec_in,
int Spec_index)
const 78 if(!spectrum_sampling->need_interpolation(Spec_index))
80 Range ra(Range::all());
81 SpectralDomain hgrid_inter = high_resolution_interpolated_grid(Spec_index);
85 Array<double, 1> ispec_dom =
88 interp(spec_in_dom.begin(),
92 for(
int i = 0; i< ispec_dom.rows(); ++i)
93 res.value()(i) = interp(ispec_dom(i));
94 if(res.number_variable() > 0) {
95 std::vector<Array<double, 1> > yvec;
96 for(
int i = 0; i< spec_in_dom.
rows(); ++i)
99 jacinterp(spec_in_dom.begin(), spec_in_dom.end(),
102 for(
int i = 0; i< ispec_dom.rows(); ++i)
103 res.jacobian()(i,ra) = jacinterp(ispec_dom(i));
#define range_check(V, Min, Max)
Range check.
const SpectralDomain high_resolution_grid(int Spec_index) const
The high resolution grid, possibly nonuniform.
const SpectralDomain high_resolution_interpolated_grid(int Spec_index) const
The high resolution grid, interpolated to be uniform.
const std::vector< int > pixel_list(int Spec_index) const
Pixel indexes to use for low resolution grid.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
const SpectralDomain clone() const
Clones object into a new copy.
This is the Forward Model spectral grid.
Spectrum interpolate_spectrum(const Spectrum &Spec_in, int Spec_index) const
Interpolate a spectrum to the high_resolution_interpolated_grid() sampling.
const SpectralRange & spectral_range() const
Spectral range (e.g, radiance values)
const blitz::Array< T, D+1 > jacobian() const
#define REGISTER_LUA_CLASS(X)
Apply value function to a blitz array.
const Unit & units() const
Units of data.
This is a full spectrum, which contains a SpectralRange and SpectralDomain.
blitz::Array< double, 1 > convert_wave(const Unit &Units) const
Return data as the supplied the units.
int number_variable() const
We have a number of different spectrums that appear in different parts of the code.
const ArrayAd< double, 1 > & data_ad() const
Underlying data, possibly with a Jacobian.
const Unit units() const
Units that go with data()
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define REGISTER_LUA_END()
const SpectralDomain & spectral_domain() const
Spectral domain (i.e., wavenumber or wavelength).
const SpectralDomain low_resolution_grid(int Spec_index) const
The low resolution grid.
const blitz::Array< double, 1 > & data() const
Underlying data.
const blitz::Array< double, 1 > & data() const
Return data.