/** \file Declaration of ParametricMieModel \author Segev BenZvi \version $Id$ \date 20 Oct 2009 */ #ifndef _atm_NonParametricXMLMieModel_h_ #define _atm_NonParametricXMLMieModel_h_ #include #include #include #include namespace atm { class NonParametricXMLMieModel : public atm::VMieModel { public: /// Destructor - should be virtual for base classes virtual ~NonParametricXMLMieModel() { } atm::ScatteringResult EvaluateMieScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const std::vector& wLength) const; atm::ScatteringResult EvaluateMieScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const atm::AttenuationResult& mieAttenuation) const; atm::AttenuationResult EvaluateMieAttenuation(const utl::Point& xInit, const utl::Point& xFinal, const std::vector& wLength) const; double EvaluateMieScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const double wLength) const; double EvaluateMieScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const double wLength, const double mieAttenuation) const; double EvaluateMieAttenuation(const utl::Point& xInit, const utl::Point& xFinal, const double wLength) const; double GetVerticalAerosolOpticalDepth(const unsigned int eyeId, const double altitude) const; double GetAttenuationLength(const utl::Point& p, const double wLength) const; double EvaluateScatteringAngle(const utl::Point& p, const double angle, const double wLength) const; void Init(); bool HasData() const { return true; } private: /// Vertical aerosol optical depth vs. height utl::ShadowPtr fVAODVsHeight; /// Aerosol extinction coefficient vs. height utl::ShadowPtr fAlphaVsHeight; /// Phase function table (arbitrary angular binning between 0, 180 degrees) typedef std::vector PhaseFunction; PhaseFunction fPF; /// Angstrom exponent of the aerosol scattering wavelength dependence double fGamma; double fGammaError; REGISTER_MODEL(atm::VMieModel, "NonParametricXML", NonParametricXMLMieModel); }; } #endif