53 return std::make_shared<ApCorrMap>(*apCorrMap);
69 _psf(
std::const_pointer_cast<detection::Psf>(psf)),
70 _calib(calib ? _cloneCalib(calib) :
std::shared_ptr<
Calib>(new
Calib())),
72 _validPolygon(polygon),
74 _metadata(metadata ? metadata
75 :
std::shared_ptr<daf::
base::PropertySet>(new daf::
base::PropertyList())),
76 _coaddInputs(coaddInputs),
77 _apCorrMap(_cloneApCorrMap(apCorrMap)),
78 _visitInfo(visitInfo),
79 _transmissionCurve(transmissionCurve) {}
84 _calib(_cloneCalib(other._calib)),
85 _detector(other._detector),
86 _validPolygon(other._validPolygon),
87 _filter(other._filter),
88 _metadata(other._metadata),
89 _coaddInputs(other._coaddInputs),
90 _apCorrMap(_cloneApCorrMap(other._apCorrMap)),
91 _visitInfo(other._visitInfo),
92 _transmissionCurve(other._transmissionCurve) {}
100 _calib(_cloneCalib(other._calib)),
101 _detector(other._detector),
102 _validPolygon(other._validPolygon),
103 _filter(other._filter),
104 _metadata(other._metadata),
105 _coaddInputs(other._coaddInputs),
106 _apCorrMap(_cloneApCorrMap(other._apCorrMap)),
107 _visitInfo(other._visitInfo),
108 _transmissionCurve(other._transmissionCurve) {
109 if (copyMetadata) _metadata = _metadata->deepCopy();
113 if (&other !=
this) {
116 _calib = _cloneCalib(other._calib);
117 _detector = other._detector;
118 _validPolygon = other._validPolygon;
119 _filter = other._filter;
120 _metadata = other._metadata;
121 _coaddInputs = other._coaddInputs;
122 _apCorrMap = _cloneApCorrMap(other._apCorrMap);
123 _visitInfo = other._visitInfo;
124 _transmissionCurve = other._transmissionCurve;
135 ExposureInfo::FitsWriteData ExposureInfo::_startWriteFits(
lsst::geom::Point2I const& xy0)
const {
140 data.maskMetadata = data.imageMetadata;
141 data.varianceMetadata = data.imageMetadata;
151 data.metadata->set(
"AR_HDU", 5,
"HDU (1-indexed) containing the archive used to store ancillary objects");
154 data.metadata->set(
"COADD_INPUTS_ID", coaddInputsId,
"archive ID for coadd inputs catalogs");
158 data.metadata->set(
"AP_CORR_MAP_ID", apCorrMapId,
"archive ID for aperture correction map");
161 int psfId = data.archive.put(
getPsf());
162 data.metadata->set(
"PSF_ID", psfId,
"archive ID for the Exposure's main Psf");
165 int wcsId = data.archive.put(
getWcs());
166 data.metadata->set(
"SKYWCS_ID", wcsId,
"archive ID for the Exposure's main Wcs");
170 data.metadata->set(
"VALID_POLYGON_ID", polygonId,
"archive ID for the Exposure's valid polygon");
174 data.metadata->set(
"TRANSMISSION_CURVE_ID", transmissionCurveId,
175 "archive ID for the Exposure's transmission curve");
179 data.metadata->set(
"DETECTOR_ID", detectorId,
"archive ID for the Exposure's Detector");
191 auto newWcs =
getWcs()->copyAtShiftedPixelOrigin(shift);
194 wcsMetadata = newWcs->getFitsMetadata(
true);
199 data.imageMetadata->combine(newWcs->getFitsMetadata(
true));
209 data.imageMetadata->set(
"LTV1", static_cast<double>(-xy0.getX()));
210 data.imageMetadata->set(
"LTV2", static_cast<double>(-xy0.getY()));
212 data.metadata->set(
"FILTER",
getFilter().getName());
214 data.metadata->set(
"DETNAME",
getDetector()->getName());
215 data.metadata->set(
"DETSER",
getDetector()->getSerial());
226 data.metadata->set(
"FLUXMAG0",
getCalib()->getFluxMag0().
first);
227 data.metadata->set(
"FLUXMAG0ERR",
getCalib()->getFluxMag0().
second);
232 void ExposureInfo::_finishWriteFits(
fits::Fits& fitsfile, FitsWriteData
const&
data)
const {
233 data.archive.writeFits(fitsfile);
bool hasTransmissionCurve() const
Does this exposure have a transmission curve?
Class for storing ordered metadata with comments.
std::shared_ptr< image::VisitInfo const > getVisitInfo() const
Return the exposure's visit info.
bool hasPsf() const
Does this exposure have a Psf?
std::shared_ptr< ApCorrMap > getApCorrMap()
Return the exposure's aperture correction map (null pointer if !hasApCorrMap())
bool hasDetector() const
Does this exposure have Detector information?
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
ExposureInfo(std::shared_ptr< geom::SkyWcs const > const &wcs=std::shared_ptr< geom::SkyWcs const >(), std::shared_ptr< detection::Psf const > const &psf=std::shared_ptr< detection::Psf const >(), std::shared_ptr< Calib const > const &calib=std::shared_ptr< Calib const >(), std::shared_ptr< cameraGeom::Detector const > const &detector=std::shared_ptr< cameraGeom::Detector const >(), std::shared_ptr< geom::polygon::Polygon const > const &polygon=std::shared_ptr< geom::polygon::Polygon const >(), Filter const &filter=Filter(), std::shared_ptr< daf::base::PropertySet > const &metadata=std::shared_ptr< daf::base::PropertySet >(), std::shared_ptr< CoaddInputs > const &coaddInputs=std::shared_ptr< CoaddInputs >(), std::shared_ptr< ApCorrMap > const &apCorrMap=std::shared_ptr< ApCorrMap >(), std::shared_ptr< image::VisitInfo const > const &visitInfo=std::shared_ptr< image::VisitInfo const >(), std::shared_ptr< TransmissionCurve const > const &transmissionCurve=std::shared_ptr< TransmissionCurve >())
Construct an ExposureInfo from its various components.
bool hasWcs() const
Does this exposure have a Wcs?
Describe an exposure's calibration.
table::Key< table::Array< std::uint8_t > > wcs
LSST DM logging module built on log4cxx.
ExposureInfo & operator=(ExposureInfo const &other)
Assignment; deep-copies all components except the metadata.
void setVisitInfoMetadata(daf::base::PropertyList &metadata, VisitInfo const &visitInfo)
Set FITS metadata from a VisitInfo.
bool hasApCorrMap() const
Return true if the exposure has an aperture correction map.
A base class for image defects.
std::shared_ptr< detection::Psf > getPsf() const
Return the exposure's point-spread function.
void initApCorrMap()
Set the exposure's aperture correction map to a new, empty map.
bool hasValidPolygon() const
Does this exposure have a valid Polygon.
table::Key< int > detector
std::shared_ptr< geom::polygon::Polygon const > getValidPolygon() const
Return the valid Polygon.
Holds an integer identifier for an LSST filter.
std::shared_ptr< daf::base::PropertySet > getMetadata() const
Return flexible metadata.
std::shared_ptr< cameraGeom::Detector const > getDetector() const
Return the exposure's Detector information.
std::shared_ptr< Calib > getCalib()
Return the exposure's photometric calibration.
ItemVariant const * other
Extent< double, 2 > Extent2D
#define LOG_GET(logger)
Returns a Log object associated with logger.
A collection of all the things that make an Exposure different from a MaskedImage.
std::shared_ptr< CoaddInputs > getCoaddInputs() const
Return a pair of catalogs that record the inputs, if this Exposure is a coadd (otherwise null)...
std::shared_ptr< geom::SkyWcs const > getWcs() const
Return the WCS of the exposure.
Filter getFilter() const
Return the exposure's filter.
Reports errors that are due to events beyond the control of the program.
bool hasCoaddInputs() const
Does this exposure have coadd provenance catalogs?
std::shared_ptr< TransmissionCurve const > getTransmissionCurve() const
Return the exposure's transmission curve.