List of all members | Public Member Functions | Private Member Functions | Private Attributes
atm::LidarCloudDBModel Class Reference

Class for cloud coverage calculations. More...

#include <LidarCloudDBModel.h>

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

Public Member Functions

CloudResult EvaluateCloudCoverage (const fdet::Pixel &pixel, const utl::Point &x) const
 Evaluate coverage for an fdet::Pixel. More...
 
CloudResult EvaluateCloudCoverage (const fevt::Pixel &pixel, const utl::Point &x) const
 Evaluate coverage for an fevt::Pixel. More...
 
CloudResult EvaluateCloudCoverage (const unsigned int eyeId, const unsigned int telescopeId, const unsigned int pixelId, const utl::Point &x) const
 Evaluate coverage for a pixel with some Eye, Telescope, and Pixel ID. More...
 
bool HasData () const
 True if a data source is for the given model. More...
 
void Init ()
 
 LidarCloudDBModel ()
 
virtual void SetUncertaintyBound (const double nSigma) const
 alter Model by nSigma standard deviations More...
 
virtual ~LidarCloudDBModel ()
 

Private Member Functions

bool CheckForUpdates () const
 
std::string GetZoneName (const unsigned int eyeId) const
 
std::string GetZoneName (const utl::Point &x) const
 
 REGISTER_MODEL (atm::VCloudModel,"LidarCloudDB", LidarCloudDBModel)
 

Private Attributes

std::map< std::string, double > * fCloudHeightMap
 
utl::TimeStamp fCurrentTime
 
bool fLidarDbIsEmptyNow
 
std::map< std::string, utl::PointfZonePositions
 

Detailed Description

Class for cloud coverage calculations.

This model is a facade for low-level objects that are used to access cloud data from the lidar and cloud camera databases. The purpose of this class is to hide the details of the cloud database access code, which is dispersed between the LidarDB and fdet::Telescope classes, and give users the coverage status of a given fdet::Pixel. Specifically, it will determine whether or not a cloud lies along the line of sight between a fdet::Pixel and a particular utl::Point in the Atmosphere.

The model differs slightly from other atmospheric models in that it does not generally throw exceptions when cloud data are not found. This is because there are several possible uses for cloud data, even if lidar and cloud camera results are not simultaneously available. The two data sets contain complementary information: the lidar DB contains accurate cloud heights but coarse coverage information, and the cloud DB contains accurate coverage information but no cloud heights. These data can be used together or separately.

When the user queries the obscuration between a fdet::Pixel and a utl::Point in the Atmosphere, the following checks are performed:

  1. The minimum cloud base height around the telescope is checked. If the utl::Point is below this minimum height, the fdet::Pixel is treated as unobscured (a clear CloudResult is returned).
  2. If the utl::Point is above the minimum cloud base height, then the fdet::Pixel could be obscured. In this case, the cloud DB is checked and the coverage is returned (if there are data for this period).

By checking the coverage this way, expensive queries to the MySQL databases are minimized.

Note that if there are no lidar data, the cloud coverage is still checked, though the absence of lidar data will be flagged within the CloudResult. In this way, clouds along the fdet::Pixel line of sight could be identified, although the clouds might be well above the altitudes of interest for a given event. Cloud cuts performed in the absence of lidar data, though still valid, should therefore be considered very conservative.

Author
Segev BenZvi
Date
17 Jul 2007

Definition at line 73 of file LidarCloudDBModel.h.

Constructor & Destructor Documentation

LidarCloudDBModel::LidarCloudDBModel ( )

Definition at line 42 of file LidarCloudDBModel.cc.

LidarCloudDBModel::~LidarCloudDBModel ( )
virtual

Definition at line 49 of file LidarCloudDBModel.cc.

References fCloudHeightMap.

Member Function Documentation

bool LidarCloudDBModel::CheckForUpdates ( ) const
private
atm::CloudResult VCloudModel::EvaluateCloudCoverage ( const fdet::Pixel pixel,
const utl::Point x 
) const
inherited

Evaluate coverage for an fdet::Pixel.

Definition at line 25 of file VCloudModel.cc.

References fdet::Pixel::GetEyeId(), fdet::Pixel::GetId(), and fdet::Pixel::GetTelescopeId().

atm::CloudResult VCloudModel::EvaluateCloudCoverage ( const fevt::Pixel pixel,
const utl::Point x 
) const
inherited

Evaluate coverage for an fevt::Pixel.

Definition at line 35 of file VCloudModel.cc.

References fevt::Pixel::GetEyeId(), fevt::Pixel::GetId(), and fevt::Pixel::GetTelescopeId().

CloudResult LidarCloudDBModel::EvaluateCloudCoverage ( const unsigned int  eyeId,
const unsigned int  telescopeId,
const unsigned int  pixelId,
const utl::Point x 
) const
virtual

Evaluate coverage for a pixel with some Eye, Telescope, and Pixel ID.

Implements atm::VCloudModel.

Definition at line 69 of file LidarCloudDBModel.cc.

References CheckForUpdates(), DEBUGLOG, fwk::CoordinateSystemRegistry::Get(), GetZoneName(), and utl::ReferenceEllipsoid::PointToLatitudeLongitudeHeight().

string LidarCloudDBModel::GetZoneName ( const unsigned int  eyeId) const
private

Definition at line 164 of file LidarCloudDBModel.cc.

References fZonePositions, and max.

Referenced by EvaluateCloudCoverage().

string LidarCloudDBModel::GetZoneName ( const utl::Point x) const
private

Definition at line 189 of file LidarCloudDBModel.cc.

References fZonePositions, and max.

bool LidarCloudDBModel::HasData ( ) const
virtual

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 60 of file LidarCloudDBModel.cc.

void LidarCloudDBModel::Init ( void  )
virtual

Implements atm::VModel.

Definition at line 55 of file LidarCloudDBModel.cc.

atm::LidarCloudDBModel::REGISTER_MODEL ( atm::VCloudModel  ,
"LidarCloudDB"  ,
LidarCloudDBModel   
)
private
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

std::map< std::string, double >* atm::LidarCloudDBModel::fCloudHeightMap
mutableprivate

Definition at line 104 of file LidarCloudDBModel.h.

Referenced by CheckForUpdates(), and ~LidarCloudDBModel().

utl::TimeStamp atm::LidarCloudDBModel::fCurrentTime
mutableprivate

Definition at line 109 of file LidarCloudDBModel.h.

Referenced by CheckForUpdates().

bool atm::LidarCloudDBModel::fLidarDbIsEmptyNow
mutableprivate

Definition at line 111 of file LidarCloudDBModel.h.

Referenced by CheckForUpdates().

std::map< std::string, utl::Point > atm::LidarCloudDBModel::fZonePositions
mutableprivate

Definition at line 107 of file LidarCloudDBModel.h.

Referenced by CheckForUpdates(), and GetZoneName().


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

, generated on Tue Sep 26 2023.