Class for cloud coverage calculations. More...
#include <LidarCloudDBModel.h>
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::Point > | fZonePositions |
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:
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.
Definition at line 73 of file LidarCloudDBModel.h.
LidarCloudDBModel::LidarCloudDBModel | ( | ) |
Definition at line 42 of file LidarCloudDBModel.cc.
|
virtual |
Definition at line 49 of file LidarCloudDBModel.cc.
References fCloudHeightMap.
|
private |
Definition at line 113 of file LidarCloudDBModel.cc.
References DEBUGLOG, fCloudHeightMap, fCurrentTime, fLidarDbIsEmptyNow, fZonePositions, atm::LidarDB::ZonesBegin(), and atm::LidarDB::ZonesEnd().
Referenced by EvaluateCloudCoverage().
|
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().
|
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().
|
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().
|
private |
Definition at line 164 of file LidarCloudDBModel.cc.
References fZonePositions, and max.
Referenced by EvaluateCloudCoverage().
|
private |
Definition at line 189 of file LidarCloudDBModel.cc.
References fZonePositions, and max.
|
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.
|
virtual |
Implements atm::VModel.
Definition at line 55 of file LidarCloudDBModel.cc.
|
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.
|
mutableprivate |
Definition at line 104 of file LidarCloudDBModel.h.
Referenced by CheckForUpdates(), and ~LidarCloudDBModel().
|
mutableprivate |
Definition at line 109 of file LidarCloudDBModel.h.
Referenced by CheckForUpdates().
|
mutableprivate |
Definition at line 111 of file LidarCloudDBModel.h.
Referenced by CheckForUpdates().
|
mutableprivate |
Definition at line 107 of file LidarCloudDBModel.h.
Referenced by CheckForUpdates(), and GetZoneName().