LSST Applications g042eb84c57+730a74494b,g04e9c324dd+8c5ae1fdc5,g134cb467dc+1f1e3e7524,g199a45376c+0ba108daf9,g1fd858c14a+fa7d31856b,g210f2d0738+f66ac109ec,g262e1987ae+83a3acc0e5,g29ae962dfc+d856a2cb1f,g2cef7863aa+aef1011c0b,g35bb328faa+8c5ae1fdc5,g3fd5ace14f+a1e0c9f713,g47891489e3+0d594cb711,g4d44eb3520+c57ec8f3ed,g4d7b6aa1c5+f66ac109ec,g53246c7159+8c5ae1fdc5,g56a1a4eaf3+fd7ad03fde,g64539dfbff+f66ac109ec,g67b6fd64d1+0d594cb711,g67fd3c3899+f66ac109ec,g6985122a63+0d594cb711,g74acd417e5+3098891321,g786e29fd12+668abc6043,g81db2e9a8d+98e2ab9f28,g87389fa792+8856018cbb,g89139ef638+0d594cb711,g8d7436a09f+80fda9ce03,g8ea07a8fe4+760ca7c3fc,g90f42f885a+033b1d468d,g97be763408+a8a29bda4b,g99822b682c+e3ec3c61f9,g9d5c6a246b+0d5dac0c3d,ga41d0fce20+9243b26dd2,gbf99507273+8c5ae1fdc5,gd7ef33dd92+0d594cb711,gdab6d2f7ff+3098891321,ge410e46f29+0d594cb711,geaed405ab2+c4bbc419c6,gf9a733ac38+8c5ae1fdc5,w.2025.38
LSST Data Management Base Package
Loading...
Searching...
No Matches
VisitInfo.h
Go to the documentation of this file.
1// -*- LSST-C++ -*- // fixed format comment for emacs
2/*
3 * LSST Data Management System
4 * Copyright 2016 LSST Corporation.
5 *
6 * This product includes software developed by the
7 * LSST Project (http://www.lsst.org/).
8 *
9 * This program is free software: you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation, either version 3 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the LSST License Statement and
20 * the GNU General Public License along with this program. If not,
21 * see <http://www.lsstcorp.org/LegalNotices/>.
22 */
23
24#ifndef LSST_AFW_IMAGE_VISITINFO_H_INCLUDED
25#define LSST_AFW_IMAGE_VISITINFO_H_INCLUDED
26
27#include <cmath>
28#include <limits>
29
30#include "lsst/base.h"
31#include "lsst/daf/base.h"
34#include "lsst/geom/Point.h"
36#include "lsst/afw/table/misc.h" // for RecordId
39
40namespace lsst {
41namespace afw {
42namespace image {
43
45enum class RotType {
46 UNKNOWN,
48 SKY,
51 HORIZON,
54 MOUNT
55};
56
69public:
98 explicit VisitInfo(double exposureTime, double darkTime, daf::base::DateTime const &date, double ut1,
99 lsst::geom::Angle const &era, lsst::geom::SpherePoint const &boresightRaDec,
100 lsst::geom::SpherePoint const &boresightAzAlt, double boresightAirmass,
101 lsst::geom::Angle const &boresightRotAngle, RotType const &rotType,
102 coord::Observatory const &observatory, coord::Weather const &weather,
103 std::string const &instrumentLabel, table::RecordId const &id, double focusZ,
104 std::string const &observationType, std::string const &scienceProgram,
105 std::string const &observationReason, std::string const &object,
106 bool hasSimulatedContent)
107 : _exposureTime(exposureTime),
108 _darkTime(darkTime),
109 _date(date),
110 _ut1(ut1),
111 _era(era),
112 _boresightRaDec(boresightRaDec),
113 _boresightAzAlt(boresightAzAlt),
114 _boresightAirmass(boresightAirmass),
115 _boresightRotAngle(boresightRotAngle),
116 _rotType(rotType),
117 _observatory(observatory),
118 _weather(weather),
119 _instrumentLabel(instrumentLabel),
120 _id(id),
121 _focusZ(focusZ),
122 _observationType(observationType),
123 _scienceProgram(scienceProgram),
124 _observationReason(observationReason),
125 _object(object),
126 _hasSimulatedContent(hasSimulatedContent) {}
127
128 explicit VisitInfo(daf::base::PropertySet const &metadata);
129
130 ~VisitInfo() override = default;
131
132 VisitInfo(VisitInfo const &) = default;
133 VisitInfo(VisitInfo &&) = default;
134 VisitInfo &operator=(VisitInfo const &) = default;
136
137 bool operator==(VisitInfo const &other) const;
138 bool operator!=(VisitInfo const &other) const { return !(*this == other); };
139
141 std::size_t hash_value() const noexcept override;
142
144 double getExposureTime() const { return _exposureTime; }
145
147 double getDarkTime() const { return _darkTime; }
148
150 daf::base::DateTime getDate() const { return _date; }
151
153 double getUt1() const { return _ut1; }
154
156 lsst::geom::Angle getEra() const { return _era; }
157
160 lsst::geom::SpherePoint getBoresightRaDec() const { return _boresightRaDec; }
161
164 lsst::geom::SpherePoint getBoresightAzAlt() const { return _boresightAzAlt; }
165
168 double getBoresightAirmass() const { return _boresightAirmass; }
169
176 lsst::geom::Angle getBoresightRotAngle() const { return _boresightRotAngle; }
177
179 RotType getRotType() const { return _rotType; }
180
182 coord::Observatory getObservatory() const { return _observatory; }
183
185 coord::Weather getWeather() const { return _weather; }
186
187 bool isPersistable() const noexcept override { return true; }
188
189 // get the local sidereal time on the meridian (equivalent, but not equal, to Local Mean Sidereal Time)
191
192 // get hour angle at the boresight
194
195 std::string getInstrumentLabel() const { return _instrumentLabel; }
196
197 table::RecordId getId() const { return _id; }
198
199 // get defocal distance (mm)
200 double getFocusZ() const { return _focusZ; }
201
202 std::string getObservationType() const { return _observationType; }
203 std::string getScienceProgram() const { return _scienceProgram; }
204 std::string getObservationReason() const { return _observationReason; }
205 std::string getObject() const { return _object; }
206 bool getHasSimulatedContent() const { return _hasSimulatedContent; }
207
218
221
223 std::string toString() const override;
224
230 bool equals(typehandling::Storable const &other) const noexcept override;
231
232protected:
233 std::string getPersistenceName() const override;
234
235 void write(OutputArchiveHandle &handle) const override;
236
237private:
238 double _exposureTime;
239 double _darkTime;
241 double _ut1;
243 lsst::geom::SpherePoint _boresightRaDec;
244 lsst::geom::SpherePoint _boresightAzAlt;
245 double _boresightAirmass;
246 lsst::geom::Angle _boresightRotAngle;
247 RotType _rotType;
248 coord::Observatory _observatory;
249 coord::Weather _weather;
250 std::string _instrumentLabel;
251 table::RecordId _id;
252 double _focusZ;
253 std::string _observationType;
254 std::string _scienceProgram;
255 std::string _observationReason;
256 std::string _object;
257 bool _hasSimulatedContent;
258};
259
260std::ostream &operator<<(std::ostream &os, VisitInfo const &visitInfo);
261
262namespace detail {
263
270void setVisitInfoMetadata(daf::base::PropertyList &metadata, VisitInfo const &visitInfo);
271
280
281} // namespace detail
282} // namespace image
283} // namespace afw
284} // namespace lsst
285
286namespace std {
287template <>
288struct hash<lsst::afw::image::VisitInfo> {
291 size_t operator()(argument_type const &obj) const noexcept { return obj.hash_value(); }
292};
293} // namespace std
294
295#endif // !LSST_AFW_IMAGE_VISITINFO_H_INCLUDED
Basic LSST definitions.
Hold the location of an observatory.
Definition Observatory.h:43
Basic weather information sufficient for a simple model for air mass or refraction.
Definition Weather.h:38
Information about a single exposure of an imaging camera.
Definition VisitInfo.h:68
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
Definition VisitInfo.cc:574
daf::base::DateTime getDate() const
get uniform date and time at middle of exposure
Definition VisitInfo.h:150
VisitInfo(VisitInfo const &)=default
coord::Weather getWeather() const
get basic weather information
Definition VisitInfo.h:185
VisitInfo(double exposureTime, double darkTime, daf::base::DateTime const &date, double ut1, lsst::geom::Angle const &era, lsst::geom::SpherePoint const &boresightRaDec, lsst::geom::SpherePoint const &boresightAzAlt, double boresightAirmass, lsst::geom::Angle const &boresightRotAngle, RotType const &rotType, coord::Observatory const &observatory, coord::Weather const &weather, std::string const &instrumentLabel, table::RecordId const &id, double focusZ, std::string const &observationType, std::string const &scienceProgram, std::string const &observationReason, std::string const &object, bool hasSimulatedContent)
Construct a VisitInfo.
Definition VisitInfo.h:98
lsst::geom::Angle getLocalEra() const
Definition VisitInfo.cc:612
~VisitInfo() override=default
double getUt1() const
get UT1 (universal time) MJD date at middle of exposure
Definition VisitInfo.h:153
double getBoresightAirmass() const
get airmass at the boresight, relative to zenith at sea level (and at the middle of the exposure,...
Definition VisitInfo.h:168
std::string getScienceProgram() const
Definition VisitInfo.h:203
lsst::geom::Angle getBoresightHourAngle() const
Definition VisitInfo.cc:614
lsst::geom::Angle getBoresightRotAngle() const
Get rotation angle at boresight at middle of exposure.
Definition VisitInfo.h:176
VisitInfo & operator=(VisitInfo const &)=default
std::size_t hash_value() const noexcept override
Return a hash of this object.
Definition VisitInfo.cc:566
bool operator==(VisitInfo const &other) const
Definition VisitInfo.cc:551
bool operator!=(VisitInfo const &other) const
Definition VisitInfo.h:138
lsst::geom::Angle getEra() const
get earth rotation angle at middle of exposure
Definition VisitInfo.h:156
bool isPersistable() const noexcept override
Return true if this particular object can be persisted using afw::table::io.
Definition VisitInfo.h:187
table::RecordId getId() const
Definition VisitInfo.h:197
VisitInfo & operator=(VisitInfo &&)=default
std::string getObservationReason() const
Definition VisitInfo.h:204
std::string toString() const override
Create a string representation of this object.
Definition VisitInfo.cc:638
double getExposureTime() const
get exposure duration (shutter open time); (sec)
Definition VisitInfo.h:144
RotType getRotType() const
get rotation type of boresightRotAngle
Definition VisitInfo.h:179
bool equals(typehandling::Storable const &other) const noexcept override
Compare this object to another Storable.
Definition VisitInfo.cc:634
lsst::geom::SpherePoint getBoresightAzAlt() const
get refracted apparent topocentric Az/Alt position at the boresight (and at the middle of the exposur...
Definition VisitInfo.h:164
std::string getObject() const
Definition VisitInfo.h:205
lsst::geom::SpherePoint getBoresightRaDec() const
get ICRS RA/Dec position at the boresight (and at the middle of the exposure, if it varies with time)
Definition VisitInfo.h:160
std::shared_ptr< typehandling::Storable > cloneStorable() const override
Create a new VisitInfo that is a copy of this one.
Definition VisitInfo.cc:630
VisitInfo(VisitInfo &&)=default
std::string getInstrumentLabel() const
Definition VisitInfo.h:195
bool getHasSimulatedContent() const
Definition VisitInfo.h:206
double getDarkTime() const
get time from CCD flush to exposure readout, including shutter open time (despite the name); (sec)
Definition VisitInfo.h:147
coord::Observatory getObservatory() const
get observatory longitude, latitude and elevation
Definition VisitInfo.h:182
lsst::geom::Angle getBoresightParAngle() const
Get parallactic angle at the boresight.
Definition VisitInfo.cc:616
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
Definition VisitInfo.cc:576
std::string getObservationType() const
Definition VisitInfo.h:202
A CRTP facade class for subclasses of Persistable.
io::OutputArchiveHandle OutputArchiveHandle
Interface supporting iteration over heterogenous containers.
Definition Storable.h:58
Class for handling dates/times, including MJD, UTC, and TAI.
Definition DateTime.h:64
Class for storing ordered metadata with comments.
Class for storing generic metadata.
Definition PropertySet.h:67
A class representing an angle.
Definition Angle.h:128
Point in an unspecified spherical coordinate system.
Definition SpherePoint.h:57
int stripVisitInfoKeywords(daf::base::PropertySet &metadata)
Remove VisitInfo-related keywords from the metadata.
Definition VisitInfo.cc:389
void setVisitInfoMetadata(daf::base::PropertyList &metadata, VisitInfo const &visitInfo)
Set FITS metadata from a VisitInfo.
Definition VisitInfo.cc:408
std::ostream & operator<<(std::ostream &os, Measurement const &measurement)
Definition PhotoCalib.cc:48
RotType
Type of rotation.
Definition VisitInfo.h:45
std::int64_t RecordId
Type used for unique IDs for records.
Definition misc.h:21
STL namespace.
lsst::afw::image::VisitInfo argument_type
Definition VisitInfo.h:289
size_t operator()(argument_type const &obj) const noexcept
Definition VisitInfo.h:291