ReFRACtor
nonuniform_spectrum_sampling.h
Go to the documentation of this file.
1 #ifndef NONUNIFORM_SPECTRUM_SAMPLING_H
2 #define NONUNIFORM_SPECTRUM_SAMPLING_H
3 #include <boost/shared_ptr.hpp>
4 #include "spectrum_sampling.h"
5 #include "fp_exception.h"
6 #include <vector>
7 
8 namespace FullPhysics {
9 /****************************************************************/
32 public:
34  const boost::shared_ptr<SpectrumSampling>& Interpolated_sampling);
36  const SpectralDomain& Grid2,
37  const SpectralDomain& Grid3,
38  const boost::shared_ptr<SpectrumSampling>& Interpolated_sampling);
39 
41 
43  const SpectralDomain& Lowres_grid,
44  const DoubleWithUnit& Ils_half_width) const
45  { return interpolated_sampling->
46  spectral_domain(Spec_index, Lowres_grid, Ils_half_width); }
47  virtual SpectralDomain spectral_domain(int spec_index,
48  const SpectralDomain& Lowres_grid,
49  const DoubleWithUnit& Ils_half_width) const;
50 
51  virtual bool need_interpolation(int Spec_index) const
52  { return (spec_domain[Spec_index].data().rows() > 0); }
53  virtual void print(std::ostream& Os) const;
54 private:
55  SpectralDomain sort_sd(const SpectralDomain& In) const;
56  boost::shared_ptr<SpectrumSampling> interpolated_sampling;
57  std::vector<SpectralDomain> spec_domain;
58 };
59 }
60 #endif
virtual SpectralDomain spectral_domain_interpolated(int Spec_index, const SpectralDomain &Lowres_grid, const DoubleWithUnit &Ils_half_width) const
The interpolated spectral domain.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
This determines the sampling of the spectrum that should be used for each of the spectrum indexes...
We frequently have a double with units associated with it.
NonuniformSpectrumSampling(const SpectralDomain &Grid, const boost::shared_ptr< SpectrumSampling > &Interpolated_sampling)
Constructor.
virtual bool need_interpolation(int Spec_index) const
Indicate if spectral_domain and spectral_domain_interpolated are different at all.
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
virtual SpectralDomain spectral_domain(int spec_index, const SpectralDomain &Lowres_grid, const DoubleWithUnit &Ils_half_width) const
Wavenumbers/Wavelengths to use for the given spectrometer.
virtual void print(std::ostream &Os) const
Print to stream.
This is a simple SpectrumSampling that is just a nonuniform sampling.

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:10