/** \file Declaration of ParametricXMLRayleighModel \author Luis Prado \version $Id: ParametricXMLRayleighModel.h,v 1.1 2003/09/22 11:56:12 prado Exp $ \date 20 Sep 2003 */ #ifndef _atm_ParametricXMLRayleighModel_h_ #define _atm_ParametricXMLRayleighModel_h_ static const char CVSId_atm_ParametricXMLRayleighModel[] = "$Id: ParametricXMLRayleighModel.h 20705 2012-03-28 16:20:59Z javierg $"; #include #include namespace atm { class ScatteringResult; class AttenuationResult; /** \class ParametricXMLRayleighModel ParametricXMLRayleighModel.h "atm/ParametricXMLRayleighModel.h" \brief Parametric model for Rayleigh scattering and attenuation using. The data used in this model are stored in an XML file. \author Luis Prado Jr \date 23 Sep 2003 \ingroup atm_models */ class ParametricXMLRayleighModel : public atm::VRayleighModel { public: ParametricXMLRayleighModel(); virtual ~ParametricXMLRayleighModel() { } atm::ScatteringResult EvaluateRayleighScattering( const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const std::vector& wLength) const; atm::ScatteringResult EvaluateRayleighScattering( const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, const atm::AttenuationResult& raylAtt) const; atm::AttenuationResult EvaluateRayleighAttenuation( const utl::Point& xInit, const utl::Point& xFinal, const std::vector& wLength) const; double EvaluateRayleighScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, double wLength) const; double EvaluateRayleighScattering(const utl::Point& xA, const utl::Point& xB, const double angle, const double distance, double wLength, const double raylAtt) const; double EvaluateRayleighAttenuation(const utl::Point& xInit, const utl::Point& xFinal, double wLength) const; /// Attenuation [slant depth]; assumes const Rayleigh X-section vs height double GetAttenuationLength(const utl::Point& p, const double wLength) const; double EvaluateScatteringAngle(const utl::Point& p, const double angle, const double wLength) const; bool HasData() const {return true;}; void Init(); private: bool fIntegratedGDistance; double fIntegrationStepWidth; // Depolarisation factor, Buchholtz Applied Optics 34, 2765 (1995) double fRhoN; double GDistance(const utl::Point& xA, const utl::Point& xB) const; REGISTER_MODEL(atm::VRayleighModel, "ParametricXML", ParametricXMLRayleighModel); }; } // atm #endif // _atm_ParametricXMLRayleighModel_h_