1 #ifndef _atm_Atmosphere_h_
2 #define _atm_Atmosphere_h_
4 #include <atm/VModel.h>
5 #include <atm/MolecularIds.h>
6 #include <utl/AugerUnits.h>
27 class TabulatedFunction;
32 class AttenuationResult;
33 class ScatteringResult;
39 class VFluorescenceModel;
40 class VCherenkovModel;
42 class InclinedAtmosphericProfile;
45 class OverallQualityDB;
87 const std::vector<double>& wLength)
const;
91 const double wLength)
const;
95 const double angle,
const double distance,
96 const std::vector<double>& xLength)
const;
100 const double angle,
const double distance,
101 const double xLength)
const;
105 const double angle,
const double distance,
110 const double angle,
const double distance,
111 const double xLength,
112 const double rayleighAttenuation)
const;
115 const double wLength)
const;
124 const std::vector<double>& wLength)
const;
128 const double wLength)
const;
132 const double angle,
const double distance,
133 const std::vector<double>& xLength)
const;
137 const double angle,
const double distance,
138 const double xLength)
const;
142 const double angle,
const double distance,
147 const double angle,
const double distance,
148 const double xLength,
149 const double mieAttenuation)
const;
152 const double wLength)
const;
157 const double altitude = 4.5*
utl::km)
const;
171 const unsigned int telId,
172 const unsigned int pixId,
219 const double deltaX)
const;
225 const double delta)
const;
270 const double verticalDepth,
271 const double showerAge)
const;
275 const double verticalDepth,
276 const double showerAge)
const;
281 const double showerAge)
const;
287 const double showerAge)
const;
293 const double showerAge)
const;
299 const double showerAge,
300 const double wavelength)
const;
309 const double nSigma)
const;
Top of the interface to Atmosphere information.
const utl::TabulatedFunction & EvaluateFluorescenceYield(const double heightAboveSeaLevel) const
Evaluated Fluorescence Yield for a specific model.
Base class for a Mie Model.
void InitSlantProfileModel(const utl::Point &core, const utl::Vector &dir, const double deltaX) const
VProfileModel * fProfileModel
atm::AttenuationResult EvaluateMieAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
const std::vector< double > & GetWavelengths(const EmissionMode mode=eFluorescence) const
const atm::ProfileResult & EvaluateHeightVsSlantDepth() const
Table of height as a function of slant depth.
Detector description interface for GOES cloud data.
double AngularCherenkovPDF(const double theta, const double verticalDepth, const double showerAge) const
angular Cherenkov light distribution
const OverallQualityDB & GetOverallQualityDB() const
low-level interface to portion of the database summarizing overall quality
Class to hold collection (x,y) points and provide interpolation between them.
VFluorescenceModel * fFluorescenceModel
const atm::ProfileResult & EvaluatePressureVsHeight() const
Tabulated function giving Y=air pressure as a function of X=height.
Base class for a Cherenkov Model.
const atm::ProfileResult & EvaluateDensityVsHeight() const
Tabulated function giving Y=density as a function of X=height.
double GetRayleighAttenuationLength(const utl::Point &xA, const double wLength) const
const atm::ProfileResult & EvaluateDistanceVsSlantDepth() const
Table of distance as a function of slant depth.
std::map< MolecularIds::ProfileId, MolecularDB * > MolecularDBMap
Detector description interface for data in the Atm_Molecular database.
Base class for an Rayleigh Model.
Class holding the output of the ScatteringResult function.
static bool HasModel(VModel *const model)
double AngularCherenkovCDF(const double theta, const double verticalDepth, const double showerAge) const
cumulative of angular Cherenkov distribution from 0 to theta
Base class of atmospheric functions.
Class for loading and storing a collection of aerosol data.
Fluorescence Detector Pixel event.
const GOESDB & GetGOESDB() const
low-level interface to the cloud information from the GOES database
Class describing the Atmospheric profile.
const utl::TabulatedFunction & EvaluateCherenkovDirect(const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge) const
ProfileId
Monitoring profiles:
atm::AttenuationResult EvaluateRayleighAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
Compute Rayleigh attenuation between points.
Top of the hierarchy of the detector description interface.
double GetDeExcitationTime(const double height) const
get fluorescence de-excitation time
const MolecularDB & GetMolecularDB(const MolecularIds::ProfileId &id) const
Low-level interface to portion of the database with molecular information.
double GetMieAttenuationLength(const utl::Point &xA, const double wLength) const
const atm::ProfileResult & EvaluateDepthVsHeight() const
Tabulated function giving Y=depth as a function of X=height.
atm::ScatteringResult EvaluateRayleighScattering(const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &xLength) const
OverallQualityDB * fOverallQualityDB
VRayleighModel * fRayleighModel
Provides translational services for inclined profile.
Store the obscuration of an FD pixel by a cloud in the field of view.
Atmosphere & operator=(const Atmosphere &)
Detector description interface for LidarDB-realted data.
const AerosolDB & GetAerosolDB() const
Low-level interface to portion of the database with aerosol information.
VCherenkovModel * fCherenkovModel
const utl::TabulatedFunction & EvaluateCherenkovPhotons(const utl::Point &xA, const utl::Point &xB, const double showerAge) const
double GetVerticalTimeOfFlight(const double height1, const double height2) const
Evaluate light signal time-of-flight between two altitudes.
Fluorescence emission model.
InclinedAtmosphericProfile * fInclinedProfileModel
double EvaluateDirectCherenkovProbability(const utl::Point &xA, const utl::Point &xB, const utl::Point &xEye, const double showerAge) const
double GetdEdX0() const
get reference energy deposit for fluorescence yield model
double GetVerticalAerosolOpticalDepth(const unsigned int eyeId, const double altitude=4.5 *utl::km) const
Retrieve vertical optical depth at some location and altitude.
void SetCherenkovEnergyCutoff(const double eCut) const
double IntegratedGrammage(const utl::Point &pStart, const utl::Point &pStop, const double delta) const
const atm::ProfileResult & EvaluateHeightVsDepth() const
Tabulated function giving Y=height as a function of X=depth.
Access to database describing overall atmospheric quality.
const atm::ProfileResult & EvaluateRefractionIndexVsHeight() const
Tabulated function giving Y=refraction index as a function of X=height.
const atm::ProfileResult & EvaluateSlantDepthVsDistance() const
atm::CloudResult EvaluateCloudCoverage(const fdet::Pixel &pix, const utl::Point &x) const
const atm::ProfileResult & EvaluateVaporPressureVsHeight() const
Tabulated function giving Y=H20 vapor pressure as a function of X=height.
void SetUncertaintyBound(const ModelWithUncertainty model, const double nSigma) const
alter Model "model" by "nSigma" standard deviations
VCloudModel * fCloudModel
Base class for cloud coverage calculations.
const atm::ProfileResult & EvaluateTemperatureVsHeight() const
Tabulated function giving Y=temperature as a function of X=height.
Class describing the Atmospheric attenuation.
Base class for a Profile Model.
const LidarDB & GetLidarDB() const
low-level interface to portion of the database with cloud data from lidar analysis ...
MolecularDBMap fMolecularDBMap
const atm::ProfileResult & EvaluateHeightVsDistance() const
Table of height as a function of distance.
atm::ScatteringResult EvaluateMieScattering(const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &xLength) const