List of all members | Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes
atm::ParametricXMLMieModel Class Reference

Class for computing aerosol scattering and attenuation using simple parameterizations. More...

#include <ParametricXMLMieModel.h>

Inheritance diagram for atm::ParametricXMLMieModel:
Inheritance graph
[legend]

Classes

struct  PFParameters
 Phase function table (modified Henyey-Greenstein function). More...
 

Public Member Functions

atm::AttenuationResult EvaluateMieAttenuation (const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
 Calculate the aerosol attenuation between two points. More...
 
double EvaluateMieAttenuation (const utl::Point &xInit, const utl::Point &xFinal, const double wLength) const
 Calculate the attenuation between two points at a single wavelength. Uses a basic three-parameter aerosol model. More...
 
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. More...
 
atm::ScatteringResult EvaluateMieScattering (const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const atm::AttenuationResult &mieAttenuation) const
 Aerosol scattering fraction in a wavelength band using precomputed attenuation. More...
 
double EvaluateMieScattering (const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const double wLength) const
 Aerosol scattering fraction at a fixed wavelength. More...
 
double EvaluateMieScattering (const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const double wLength, const double mieAttenuation) const
 Aerosol scattering fraction at a fixed wavelength with precomputed attenuation. More...
 
double EvaluateScatteringAngle (const utl::Point &p, const double angle, const double wLength) const
 Calculation is done independent of the position and wavelength. More...
 
virtual const utl::VRandomSamplerEvaluateScatteringAngleDistribution (const utl::Point &p, const double wLength) const
 
double GetAngstromCoeff () const
 
double GetAttenuationLength (const utl::Point &p, const double wLength) const
 Horizontal attenuation length (inverse of extinction coefficient). Grows with altitude as aerosol distribution decreases. More...
 
double GetGroundHeightASL () const
 
double GetHorizAttLength () const
 
double GetMixHeight () const
 
double GetScaleHeight () const
 
double GetVerticalAerosolOpticalDepth (const unsigned int eyeId, const double altitude) const
 Calculate VAOD at some altitude (w.r.t. sea level) above a given eye. More...
 
bool HasData () const
 True if a data source is for the given model. More...
 
void Init ()
 
void SetAngstromCoeff (const double gamma)
 
void SetGroundHeightASL (const double hGnd)
 
void SetHorizAttLength (const double lMix)
 
void SetMixHeight (const double hMix)
 
void SetScaleHeight (const double hScl)
 
virtual void SetUncertaintyBound (const double nSigma) const
 alter Model by nSigma standard deviations More...
 
virtual ~ParametricXMLMieModel ()
 Destructor - should be virtual for base classes. More...
 

Private Types

typedef struct
atm::ParametricXMLMieModel::PFParameters 
PFParameters
 Phase function table (modified Henyey-Greenstein function). More...
 

Private Member Functions

 REGISTER_MODEL (atm::VMieModel,"ParametricXML", ParametricXMLMieModel)
 

Private Attributes

double fGamma
 Angstrom exponent of the aerosol scattering wavelength dependence. More...
 
double fGammaError
 
double fHGnd
 Prevailing ground height used in the aerosol model. More...
 
double fHMix
 Mixing layer height (w.r.t. prevailing ground level). More...
 
double fHMixError
 
double fHScl
 Scale height of the aerosol "entrainment layer" above the mixing layer. More...
 
double fHSclError
 
double fLMix
 Mixing layer (i.e., ground-level) horizontal attenuation length. More...
 
double fLMixError
 
PFParameters fPhaseFunction
 

Detailed Description

Class for computing aerosol scattering and attenuation using simple parameterizations.

Author
Luis Prado Jr

This class computes aerosol scattering and extinction properties using basic aerosol models also employed by the HiRes experiment.

For attenuation and VAOD, a simple three-parameter model is used for the altitude dependence of the extinction coefficient. The model splits the aerosol distribution into two layers: a uniform layer of height $h_M$ above ground level where aerosols have been mixed by convection; and an entrainment layer for all $h>h_M$ where the aerosol density decreases exponentially with scale height $H$. More specifically,

\[ \alpha(h) = \begin{cases} \alpha_M, & h\leq h_M \\ \alpha_M\ e^{-(h - h_M)/H}, & h>h_M \end{cases} \]

where $\alpha_M=1/l_M$ is the extinction coefficient within the mixing layer. For ease of use, this input to the model is given in terms of the horizontal attenuation length $l_M$ of aerosol extinction.

The optical depth between altitudes $h_1$ and $h_2$ is

\[ \tau(h_1,h_2) = \int_{h_1}^{h_2} \alpha(h') dh' = \begin{cases} \alpha_M\left(h_2-h_1\right), & h_1\leq h_M\text{ and }h_2\leq h_M \\ \alpha_M\left(h_M-h_1 + H(1-e^{-(h_2-h_M)/H})\right), & h_1\leq h_M\text{ and }h_2>h_M \\ \alpha_M H \left(e^{-(h_1-h_M)/H}-e^{-(h_2-h_M)/H}\right), & h_1>h_M\text{ and } h_2>h_M \end{cases} \]

Note that in this expression, all heights are expressed with respect to the prevailing ground level of the SD ( $h=0$), and not with respect to sea level. Possible differences between aerosols at different locations around the SD, as well as small changes in the terrain, are ignored.

When the height of the mixing layer is set to zero, the extinction coefficient and optical depth reduce to the two-parameter expression given by P. Sokolsky in the appendix to "Introduction to Ultrahigh Energy Cosmic Ray Physics," Westview Press 1988. This was the actual model used by HiRes.

The wavelength dependence of scattering is given by the power-law Angstrom coefficient $\gamma$:

\[ \tau(\lambda) = \tau(\lambda_0)\left(\frac{\lambda_0}{\lambda}\right)^\gamma \]

where $\lambda_0$=355 nm. See A. Angstrom, Geo. Anal. 12 (1929) 130-159.

For angular scattering, the model uses a numerically estimated phase function due to Longtin (1988). The calculation uses a desert atmosphere with sand, water droplets, and carbonaceous particles to estimate the phase function at 550 nm under a range of wind conditions. (The current values originate in the calculation performed with winds of 10 m/s.) Details can be found in:

Steven Mengzhi Luo, "Tropospheric Aerosol Study by Fly's Eye and Lidar Technique," PhD Thesis, University of Utah (1992).

Definition at line 19 of file ParametricXMLMieModel.h.

Member Typedef Documentation

Phase function table (modified Henyey-Greenstein function).

Constructor & Destructor Documentation

virtual atm::ParametricXMLMieModel::~ParametricXMLMieModel ( )
inlinevirtual

Destructor - should be virtual for base classes.

Definition at line 23 of file ParametricXMLMieModel.h.

Member Function Documentation

AttenuationResult ParametricXMLMieModel::EvaluateMieAttenuation ( const utl::Point xInit,
const utl::Point xFinal,
const std::vector< double > &  wLength 
) const
virtual

Calculate the aerosol attenuation between two points.

Todo:
Propagation of uncertainties of the parameters.

Implements atm::VMieModel.

Definition at line 171 of file ParametricXMLMieModel.cc.

References utl::TabulatedFunctionErrors::PushBack().

Referenced by atm::SuperMieModel::EvaluateMieAttenuation().

double ParametricXMLMieModel::EvaluateMieAttenuation ( const utl::Point xInit,
const utl::Point xFinal,
const double  wLength 
) const
virtual

Calculate the attenuation between two points at a single wavelength. Uses a basic three-parameter aerosol model.

Implements atm::VMieModel.

Definition at line 195 of file ParametricXMLMieModel.cc.

References utl::abs(), utl::ReferenceEllipsoid::eWGS84, utl::ReferenceEllipsoid::Get(), utl::kLn10, utl::m, max, utl::nanometer, utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), std::pow(), and utl::swap().

ScatteringResult ParametricXMLMieModel::EvaluateMieScattering ( const utl::Point xA,
const utl::Point xB,
const double  angle,
const double  distance,
const std::vector< double > &  wLength 
) const
virtual

Aerosol scattering fraction in a wavelength band.

Implements atm::VMieModel.

Definition at line 93 of file ParametricXMLMieModel.cc.

Referenced by atm::SuperMieModel::EvaluateMieScattering(), and testParametricXMLMieModel::testExpertMode().

ScatteringResult ParametricXMLMieModel::EvaluateMieScattering ( const utl::Point xA,
const utl::Point xB,
const double  angle,
const double  distance,
const atm::AttenuationResult mieAttenuation 
) const
virtual
double ParametricXMLMieModel::EvaluateMieScattering ( const utl::Point xA,
const utl::Point xB,
const double  angle,
const double  distance,
const double  wLength 
) const
virtual

Aerosol scattering fraction at a fixed wavelength.

Implements atm::VMieModel.

Definition at line 136 of file ParametricXMLMieModel.cc.

double ParametricXMLMieModel::EvaluateMieScattering ( const utl::Point xA,
const utl::Point xB,
const double  angle,
const double  distance,
const double  wLength,
const double  mieAttenuation 
) const
virtual

Aerosol scattering fraction at a fixed wavelength with precomputed attenuation.

Implements atm::VMieModel.

Definition at line 153 of file ParametricXMLMieModel.cc.

References std::pow().

double ParametricXMLMieModel::EvaluateScatteringAngle ( const utl::Point p,
const double  angle,
const double  wLength 
) const
virtual

Calculation is done independent of the position and wavelength.

Implements atm::VMieModel.

Definition at line 311 of file ParametricXMLMieModel.cc.

References RdGeoCeLDFFitter::a, RdGeoCeLDFFitter::b, RdGeoCeLDFFitter::c, utl::kPi, and std::pow().

Referenced by atm::SuperMieModel::EvaluateScatteringAngle().

const utl::VRandomSampler & VMieModel::EvaluateScatteringAngleDistribution ( const utl::Point p,
const double  wLength 
) const
virtualinherited
double atm::ParametricXMLMieModel::GetAngstromCoeff ( ) const
inline

Definition at line 83 of file ParametricXMLMieModel.h.

References fGamma.

Referenced by testParametricXMLMieModel::testExpertMode().

double ParametricXMLMieModel::GetAttenuationLength ( const utl::Point p,
const double  wLength 
) const
virtual

Horizontal attenuation length (inverse of extinction coefficient). Grows with altitude as aerosol distribution decreases.

Implements atm::VMieModel.

Definition at line 287 of file ParametricXMLMieModel.cc.

References utl::ReferenceEllipsoid::eWGS84, utl::ReferenceEllipsoid::Get(), utl::nanometer, utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), and std::pow().

Referenced by atm::SuperMieModel::GetAttenuationLength().

double atm::ParametricXMLMieModel::GetGroundHeightASL ( ) const
inline

Definition at line 86 of file ParametricXMLMieModel.h.

References fHGnd.

double atm::ParametricXMLMieModel::GetHorizAttLength ( ) const
inline

Definition at line 74 of file ParametricXMLMieModel.h.

References fLMix.

Referenced by testParametricXMLMieModel::testExpertMode().

double atm::ParametricXMLMieModel::GetMixHeight ( ) const
inline

Definition at line 77 of file ParametricXMLMieModel.h.

References fHMix.

Referenced by testParametricXMLMieModel::testExpertMode().

double atm::ParametricXMLMieModel::GetScaleHeight ( ) const
inline

Definition at line 80 of file ParametricXMLMieModel.h.

References fHScl.

Referenced by testParametricXMLMieModel::testExpertMode().

double ParametricXMLMieModel::GetVerticalAerosolOpticalDepth ( const unsigned int  eyeId,
const double  altitude 
) const
virtual

Calculate VAOD at some altitude (w.r.t. sea level) above a given eye.

Implements atm::VMieModel.

Definition at line 251 of file ParametricXMLMieModel.cc.

References utl::ReferenceEllipsoid::eWGS84, utl::ReferenceEllipsoid::Get(), utl::m, and utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight().

Referenced by atm::SuperMieModel::GetVerticalAerosolOpticalDepth().

bool atm::ParametricXMLMieModel::HasData ( ) const
inlinevirtual

True if a data source is for the given model.

This method is meant to be checked to determine whether the given model is able to find valid data to evaluate. Typically it will always be true for parametric models which rely on an XML file, and will be true or false for database-based models, depending on whether or not relevant data are found in the DB for the current detector time

Implements atm::VModel.

Definition at line 88 of file ParametricXMLMieModel.h.

void ParametricXMLMieModel::Init ( void  )
virtual
atm::ParametricXMLMieModel::REGISTER_MODEL ( atm::VMieModel  ,
"ParametricXML"  ,
ParametricXMLMieModel   
)
private
void atm::ParametricXMLMieModel::SetAngstromCoeff ( const double  gamma)
inline

Definition at line 82 of file ParametricXMLMieModel.h.

References fGamma.

void atm::ParametricXMLMieModel::SetGroundHeightASL ( const double  hGnd)
inline

Definition at line 85 of file ParametricXMLMieModel.h.

References fHGnd.

void atm::ParametricXMLMieModel::SetHorizAttLength ( const double  lMix)
inline

Definition at line 73 of file ParametricXMLMieModel.h.

References fLMix.

Referenced by testParametricXMLMieModel::testExpertMode().

void atm::ParametricXMLMieModel::SetMixHeight ( const double  hMix)
inline

Definition at line 76 of file ParametricXMLMieModel.h.

References fHMix.

void atm::ParametricXMLMieModel::SetScaleHeight ( const double  hScl)
inline

Definition at line 79 of file ParametricXMLMieModel.h.

References fHScl.

Referenced by testParametricXMLMieModel::testExpertMode().

void VModel::SetUncertaintyBound ( const double  nSigma) const
virtualinherited

alter Model by nSigma standard deviations

Reimplemented in atm::MeasuredDBMieModel, and atm::SuperMieModel.

Definition at line 11 of file VModel.cc.

References ERROR.

Member Data Documentation

double atm::ParametricXMLMieModel::fGamma
private

Angstrom exponent of the aerosol scattering wavelength dependence.

Definition at line 104 of file ParametricXMLMieModel.h.

Referenced by GetAngstromCoeff(), and SetAngstromCoeff().

double atm::ParametricXMLMieModel::fGammaError
private

Definition at line 105 of file ParametricXMLMieModel.h.

double atm::ParametricXMLMieModel::fHGnd
private

Prevailing ground height used in the aerosol model.

Definition at line 108 of file ParametricXMLMieModel.h.

Referenced by GetGroundHeightASL(), and SetGroundHeightASL().

double atm::ParametricXMLMieModel::fHMix
private

Mixing layer height (w.r.t. prevailing ground level).

Definition at line 96 of file ParametricXMLMieModel.h.

Referenced by GetMixHeight(), and SetMixHeight().

double atm::ParametricXMLMieModel::fHMixError
private

Definition at line 97 of file ParametricXMLMieModel.h.

double atm::ParametricXMLMieModel::fHScl
private

Scale height of the aerosol "entrainment layer" above the mixing layer.

Definition at line 100 of file ParametricXMLMieModel.h.

Referenced by GetScaleHeight(), and SetScaleHeight().

double atm::ParametricXMLMieModel::fHSclError
private

Definition at line 101 of file ParametricXMLMieModel.h.

double atm::ParametricXMLMieModel::fLMix
private

Mixing layer (i.e., ground-level) horizontal attenuation length.

Definition at line 92 of file ParametricXMLMieModel.h.

Referenced by GetHorizAttLength(), and SetHorizAttLength().

double atm::ParametricXMLMieModel::fLMixError
private

Definition at line 93 of file ParametricXMLMieModel.h.

PFParameters atm::ParametricXMLMieModel::fPhaseFunction
private

Definition at line 118 of file ParametricXMLMieModel.h.


The documentation for this class was generated from the following files:

, generated on Tue Sep 26 2023.