Model for Rayleigh scattering and attenuation in a humid atmosphere. More...
#include <HumidAirRayleighModel.h>
Public Member Functions | |
atm::AttenuationResult | EvaluateRayleighAttenuation (const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const |
Calculate the Rayleigh attenuation between two points for a vector of wavelengths. More... | |
double | EvaluateRayleighAttenuation (const utl::Point &xInit, const utl::Point &xFinal, double wLength) const |
Calculate the Rayleigh attenuation between two points at a given wavelength. Integrate the Rayleigh volume scattering coefficient over the path between the points. More... | |
atm::ScatteringResult | EvaluateRayleighScattering (const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &wLength) const |
Calculate the fraction of Rayleigh scattering photons in the beam. More... | |
atm::ScatteringResult | EvaluateRayleighScattering (const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const AttenuationResult &raylAtt) 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, const double raylAtt, double wLength) const |
double | EvaluateScatteringAngle (const utl::Point &p, const double angle, const double wLength) const |
virtual const utl::VRandomSampler & | EvaluateScatteringAngleDistribution (const utl::Point &p, const double wLength) const |
double | GetAttenuationLength (const utl::Point &p, const double wLength) const |
Attenuation in units of length [1/scattering coefficient]. More... | |
bool | HasData () const |
True if a data source is for the given model. More... | |
HumidAirRayleighModel () | |
void | Init () |
virtual void | SetUncertaintyBound (const double nSigma) const |
alter Model by nSigma standard deviations More... | |
virtual | ~HumidAirRayleighModel () |
Private Member Functions | |
double | KingFactor (const double wl, const double pressure, const double vaporPressure) const |
double | RayleighCrossSection (const double wl, const double refIndex, const double temperature, const double pressure, const double vaporPressure) const |
REGISTER_MODEL (atm::VRayleighModel,"HumidAir", HumidAirRayleighModel) | |
Private Attributes | |
double | fIntegrationStepWidth |
Model for Rayleigh scattering and attenuation in a humid atmosphere.
"atm/HumidAirRayleighModel.h"
Definition at line 32 of file HumidAirRayleighModel.h.
HumidAirRayleighModel::HumidAirRayleighModel | ( | ) |
Definition at line 42 of file HumidAirRayleighModel.cc.
|
inlinevirtual |
Definition at line 38 of file HumidAirRayleighModel.h.
|
virtual |
Calculate the Rayleigh attenuation between two points for a vector of wavelengths.
Implements atm::VRayleighModel.
Definition at line 140 of file HumidAirRayleighModel.cc.
References utl::TabulatedFunctionErrors::PushBack().
Referenced by EvaluateRayleighScattering().
|
virtual |
Calculate the Rayleigh attenuation between two points at a given wavelength. Integrate the Rayleigh volume scattering coefficient over the path between the points.
Implements atm::VRayleighModel.
Definition at line 165 of file HumidAirRayleighModel.cc.
References atm::Atmosphere::EvaluatePressureVsHeight(), atm::Atmosphere::EvaluateRefractionIndexVsHeight(), atm::Atmosphere::EvaluateTemperatureVsHeight(), atm::Atmosphere::EvaluateVaporPressureVsHeight(), fIntegrationStepWidth, fwk::CoordinateSystemRegistry::Get(), utl::Vector::GetMag(), utl::kBoltzmann, utl::m, utl::Vector::Normalize(), utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), RayleighCrossSection(), and atm::ProfileResult::Y().
|
virtual |
Calculate the fraction of Rayleigh scattering photons in the beam.
xA,: | position of the first point |
xB,: | position of the second point |
angle,: | scattering angle to reach the target |
distance,: | distance between mean of xA and xB and the target |
wLength,: | wavelengths to calculate the scattering |
Implements atm::VRayleighModel.
Definition at line 69 of file HumidAirRayleighModel.cc.
References EvaluateRayleighAttenuation().
Referenced by EvaluateRayleighScattering().
|
virtual |
Additionally takes a precomputed Rayleigh AttenuationResult. Warning: Make sure it's compatible with the other parameters!
Implements atm::VRayleighModel.
Definition at line 82 of file HumidAirRayleighModel.cc.
References EvaluateRayleighScattering(), utl::TabulatedFunction::GetNPoints(), atm::AttenuationResult::GetTransmissionFactor(), utl::TabulatedFunction::GetX(), utl::TabulatedFunction::GetY(), and utl::TabulatedFunctionErrors::PushBack().
|
virtual |
Implements atm::VRayleighModel.
Definition at line 107 of file HumidAirRayleighModel.cc.
References EvaluateRayleighAttenuation(), and EvaluateRayleighScattering().
|
virtual |
Additionally takes a precomputed Rayleigh attenuation. Warning: Make sure it's compatible with the other parameters!
Implements atm::VRayleighModel.
Definition at line 120 of file HumidAirRayleighModel.cc.
References EvaluateScatteringAngle().
|
virtual |
Implements atm::VRayleighModel.
Definition at line 245 of file HumidAirRayleighModel.cc.
References atm::Atmosphere::EvaluatePressureVsHeight(), atm::Atmosphere::EvaluateVaporPressureVsHeight(), fwk::CoordinateSystemRegistry::Get(), KingFactor(), utl::kPi, utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), and atm::ProfileResult::Y().
Referenced by EvaluateRayleighScattering().
|
virtualinherited |
Definition at line 29 of file VRayleighModel.cc.
References utl::deg, utl::RandomSamplerFromPDF::eLinear, and utl::TabulatedFunction::PushBack().
|
virtual |
Attenuation in units of length [1/scattering coefficient].
Implements atm::VRayleighModel.
Definition at line 221 of file HumidAirRayleighModel.cc.
References atm::Atmosphere::EvaluatePressureVsHeight(), atm::Atmosphere::EvaluateRefractionIndexVsHeight(), atm::Atmosphere::EvaluateTemperatureVsHeight(), atm::Atmosphere::EvaluateVaporPressureVsHeight(), fwk::CoordinateSystemRegistry::Get(), utl::kBoltzmann, utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight(), RayleighCrossSection(), and atm::ProfileResult::Y().
|
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 84 of file HumidAirRayleighModel.h.
|
virtual |
Implements atm::VModel.
Definition at line 49 of file HumidAirRayleighModel.cc.
References fIntegrationStepWidth, utl::Branch::GetChild(), utl::Branch::GetData(), and utl::Branch::GetTopBranch().
|
private |
Definition at line 269 of file HumidAirRayleighModel.cc.
References utl::kArAirFraction, utl::kCO2AirFraction, utl::kN2AirFraction, utl::kO2AirFraction, utl::micrometer, and std::pow().
Referenced by EvaluateScatteringAngle(), and RayleighCrossSection().
|
private |
Definition at line 296 of file HumidAirRayleighModel.cc.
References utl::kBoltzmann, KingFactor(), utl::kPi, and std::pow().
Referenced by EvaluateRayleighAttenuation(), and GetAttenuationLength().
|
private |
|
virtualinherited |
alter Model by nSigma standard deviations
Reimplemented in atm::MeasuredDBMieModel, and atm::SuperMieModel.
Definition at line 11 of file VModel.cc.
References ERROR.
|
private |
Definition at line 92 of file HumidAirRayleighModel.h.
Referenced by EvaluateRayleighAttenuation(), and Init().