lsst.afw g28e9080985+60ce4897b0
Weather.cc
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2
3/*
4 * LSST Data Management System
5 * Copyright 2016 LSST Corporation.
6 *
7 * This product includes software developed by the
8 * LSST Project (http://www.lsst.org/).
9 *
10 * This program is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License, or
13 * (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the LSST License Statement and
21 * the GNU General Public License along with this program. If not,
22 * see <http://www.lsstcorp.org/LegalNotices/>.
23 */
24
25#include <sstream>
26
27#include "lsst/utils/hashCombine.h"
28#include "lsst/pex/exceptions.h"
30
31namespace lsst {
32namespace afw {
33namespace coord {
34
36 : _airTemperature(airTemperature), _airPressure(airPressure), _humidity(humidity) {
37 validate();
38}
39
40bool Weather::operator==(Weather const& other) const noexcept {
41 return (_airTemperature == other.getAirTemperature() && _airPressure == other.getAirPressure() &&
42 _humidity == other.getHumidity());
43}
44
46 // Completely arbitrary seed
47 return utils::hashCombine(17, _airTemperature, _airPressure, _humidity);
48}
49
50void Weather::validate() const {
51 if (_humidity < 0.0) { // allow > 100 even though supersaturation is most unlikely
53 os << "Relative humidity = " << _humidity << " must not be negative";
55 }
56}
57
59 return os << "Weather(" << weath.getAirTemperature() << ", " << weath.getAirPressure() << ", "
60 << weath.getHumidity() << ")";
61}
62} // namespace coord
63} // namespace afw
64} // namespace lsst
#define LSST_EXCEPT(type,...)
std::ostream * os
Definition: Schema.cc:557
table::Key< double > airPressure
Definition: VisitInfo.cc:210
table::Key< double > airTemperature
Definition: VisitInfo.cc:209
table::Key< double > humidity
Definition: VisitInfo.cc:211
Basic weather information sufficient for a simple model for air mass or refraction.
Definition: Weather.h:38
bool operator==(Weather const &other) const noexcept
Definition: Weather.cc:40
double getHumidity() const noexcept
get outside relative humidity (%)
Definition: Weather.h:70
double getAirPressure() const noexcept
get outside air pressure (Pascal)
Definition: Weather.h:67
double getAirTemperature() const noexcept
get outside air temperature (C)
Definition: Weather.h:64
Weather(double airTemperature, double airPressure, double humidity)
Construct a Weather.
Definition: Weather.cc:35
std::size_t hash_value() const noexcept
Return a hash of this object.
Definition: Weather.cc:45
std::ostream & operator<<(std::ostream &os, Observatory const &obs)
Print an Observatory to the stream.
Definition: Observatory.cc:64
A base class for image defects.