ReFRACtor
ils.h
Go to the documentation of this file.
1 #ifndef ILS_H
2 #define ILS_H
4 #include "double_with_unit.h"
5 #include "spectral_domain.h"
6 
7 namespace FullPhysics {
8 /****************************************************************/
13 class Ils : virtual public StateVectorObserver,
14  public Observable<Ils> {
15 public:
16  virtual ~Ils() {}
17 
18  virtual void add_observer(Observer<Ils>& Obs)
19  { add_observer_do(Obs, *this);}
20  virtual void remove_observer(Observer<Ils>& Obs)
21  { remove_observer_do(Obs, *this);}
22 
23 //-----------------------------------------------------------------------
35 //-----------------------------------------------------------------------
36 
37  virtual blitz::Array<double, 1> apply_ils
38  (const blitz::Array<double, 1>& High_resolution_wave_number,
39  const blitz::Array<double, 1>& High_resolution_radiance,
40  const std::vector<int>& Pixel_list) const = 0;
41 
42 //-----------------------------------------------------------------------
57 //-----------------------------------------------------------------------
58 
60  (const blitz::Array<double, 1>& High_resolution_wave_number,
61  const ArrayAd<double, 1>& High_resolution_radiance,
62  const std::vector<int>& Pixel_list) const = 0;
63 
64 //-----------------------------------------------------------------------
66 //-----------------------------------------------------------------------
67 
68  virtual std::string band_name() const = 0;
69 
70 //-----------------------------------------------------------------------
77 //-----------------------------------------------------------------------
78 
79  virtual boost::shared_ptr<Ils> clone() const = 0;
80 
81 //-----------------------------------------------------------------------
89 //-----------------------------------------------------------------------
90 
91  virtual std::string hdf_band_name() const { return band_name();}
92 
93 //-----------------------------------------------------------------------
95 //-----------------------------------------------------------------------
96 
97  virtual SpectralDomain pixel_grid() const = 0;
98 
99 //-----------------------------------------------------------------------
101 //-----------------------------------------------------------------------
102 
103  virtual DoubleWithUnit ils_half_width() const = 0;
104 
105 //-----------------------------------------------------------------------
107 //-----------------------------------------------------------------------
108 
109  virtual void ils_half_width(const DoubleWithUnit& half_width) = 0;
110 
111 };
112 }
113 #endif
virtual DoubleWithUnit ils_half_width() const =0
This is the half width of the ILS.
For different instruments, it is more natural to either work with wavenumbers (e.g., GOSAT) or wavelength (e.g., OCO).
virtual void remove_observer(Observer< Ils > &Obs)
Remove an observer.
Definition: ils.h:20
void add_observer_do(Observer< Ils > &Obs, Ils &t)
Add an observer.
Definition: observer.h:148
This is an observer of a StateVector.
virtual std::string hdf_band_name() const
In general, the name used in HDF files for a particular band is similar but not identical to the more...
Definition: ils.h:91
void remove_observer_do(Observer< Ils > &Obs, Ils &t)
Remove an observer.
Definition: observer.h:173
virtual void add_observer(Observer< Ils > &Obs)
Add an observer.
Definition: ils.h:18
Mixin for a class that allows other classes to observe it state.
Definition: observer.h:12
virtual SpectralDomain pixel_grid() const =0
This is the pixel grid for each pixel.
virtual std::string band_name() const =0
Descriptive name of the band.
We frequently have a double with units associated with it.
virtual boost::shared_ptr< Ils > clone() const =0
Clone an Ils object.
This class models an Instrument Line Shape (ILS).
Definition: ils.h:13
virtual ~Ils()
Definition: ils.h:16
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
virtual blitz::Array< double, 1 > apply_ils(const blitz::Array< double, 1 > &High_resolution_wave_number, const blitz::Array< double, 1 > &High_resolution_radiance, const std::vector< int > &Pixel_list) const =0
Apply the ILS.

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