9 #ifndef _atm_NonParametricXMLMieModel_h_
10 #define _atm_NonParametricXMLMieModel_h_
12 #include <atm/VMieModel.h>
13 #include <utl/ShadowPtr.h>
14 #include <utl/TabulatedFunction.h>
29 const double distance,
30 const std::vector<double>& wLength)
const;
35 const double distance,
40 const std::vector<double>& wLength)
const;
45 const double distance,
46 const double wLength)
const;
51 const double distance,
53 const double mieAttenuation)
const;
57 const double wLength)
const;
60 const double altitude)
const;
63 const double wLength)
const;
67 const double wLength)
const;
std::vector< double > PhaseFunction
Phase function table (arbitrary angular binning between 0, 180 degrees)
Base class for a Mie Model.
Class to hold collection (x,y) points and provide interpolation between them.
double GetAttenuationLength(const utl::Point &p, const double wLength) const
Horizontal attenuation length (inverse of extinction coefficient). Grows with altitude as aerosol dis...
atm::ScatteringResult EvaluateMieScattering(const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &wLength) const
Aerosol scattering fraction in a wavelength band.
utl::ShadowPtr< utl::TabulatedFunction > fAlphaVsHeight
Aerosol extinction coefficient vs. height.
Class holding the output of the ScatteringResult function.
double EvaluateScatteringAngle(const utl::Point &p, const double angle, const double wLength) const
Calculation is done independent of the position and wavelength.
REGISTER_MODEL(atm::VMieModel,"NonParametricXML", NonParametricXMLMieModel)
double fGamma
Angstrom exponent of the aerosol scattering wavelength dependence.
utl::ShadowPtr< utl::TabulatedFunction > fVAODVsHeight
Vertical aerosol optical depth vs. height.
void SetPhaseFunction(const PhaseFunction &phaseFunc)
Override the XML config phase function, which should be a function of arbitrary binning from 0 to 180...
virtual ~NonParametricXMLMieModel()
Destructor - should be virtual for base classes.
atm::AttenuationResult EvaluateMieAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
Calculate the aerosol attenuation between two points.
double GetVerticalAerosolOpticalDepth(const unsigned int eyeId, const double altitude) const
Calculate VAOD at some altitude (w.r.t. sea level) above a given eye.
bool HasData() const
True if a data source is for the given model.
void SetOpticalDepth(const utl::TabulatedFunction &vaod, const utl::TabulatedFunction &alpha)
Override the XML config aerosol profile (use a function of height above sea level) ...
Class describing the Atmospheric attenuation.
PhaseFunction fPF
Phase function table (arbitrary angular binning between 0, 180 degrees)