63 return std::make_shared<ApCorrMap>(*apCorrMap);
79 _psf(
std::const_pointer_cast<detection::Psf>(psf)),
80 _calib(calib ? _cloneCalib(calib) :
std::shared_ptr<
Calib>(new
Calib())),
82 _validPolygon(polygon),
84 _metadata(metadata ? metadata
85 :
std::shared_ptr<daf::
base::PropertySet>(new daf::
base::PropertyList())),
86 _coaddInputs(coaddInputs),
87 _apCorrMap(_cloneApCorrMap(apCorrMap)),
88 _visitInfo(visitInfo),
89 _transmissionCurve(transmissionCurve) {}
94 _calib(_cloneCalib(other._calib)),
95 _detector(other._detector),
96 _validPolygon(other._validPolygon),
97 _filter(other._filter),
98 _metadata(other._metadata),
99 _coaddInputs(other._coaddInputs),
100 _apCorrMap(_cloneApCorrMap(other._apCorrMap)),
101 _visitInfo(other._visitInfo),
102 _transmissionCurve(other._transmissionCurve) {}
110 _calib(_cloneCalib(other._calib)),
111 _detector(other._detector),
112 _validPolygon(other._validPolygon),
113 _filter(other._filter),
114 _metadata(other._metadata),
115 _coaddInputs(other._coaddInputs),
116 _apCorrMap(_cloneApCorrMap(other._apCorrMap)),
117 _visitInfo(other._visitInfo),
118 _transmissionCurve(other._transmissionCurve) {
119 if (copyMetadata) _metadata = _metadata->deepCopy();
123 if (&other !=
this) {
126 _calib = _cloneCalib(other._calib);
127 _detector = other._detector;
128 _validPolygon = other._validPolygon;
129 _filter = other._filter;
130 _metadata = other._metadata;
131 _coaddInputs = other._coaddInputs;
132 _apCorrMap = _cloneApCorrMap(other._apCorrMap);
133 _visitInfo = other._visitInfo;
134 _transmissionCurve = other._transmissionCurve;
145 ExposureInfo::FitsWriteData ExposureInfo::_startWriteFits(
lsst::geom::Point2I const& xy0)
const {
150 data.maskMetadata = data.imageMetadata;
151 data.varianceMetadata = data.imageMetadata;
163 data.metadata->set(
"AR_HDU", 5,
"HDU (1-indexed) containing the archive used to store ancillary objects");
166 data.metadata->set(
"COADD_INPUTS_ID", coaddInputsId,
"archive ID for coadd inputs catalogs");
170 data.metadata->set(
"AP_CORR_MAP_ID", apCorrMapId,
"archive ID for aperture correction map");
173 int psfId = data.archive.put(
getPsf());
174 data.metadata->set(
"PSF_ID", psfId,
"archive ID for the Exposure's main Psf");
177 int wcsId = data.archive.put(
getWcs());
178 data.metadata->set(
"SKYWCS_ID", wcsId,
"archive ID for the Exposure's main Wcs");
182 data.metadata->set(
"VALID_POLYGON_ID", polygonId,
"archive ID for the Exposure's valid polygon");
186 data.metadata->set(
"TRANSMISSION_CURVE_ID", transmissionCurveId,
187 "archive ID for the Exposure's transmission curve");
191 data.metadata->set(
"DETECTOR_ID", detectorId,
"archive ID for the Exposure's Detector");
203 auto newWcs =
getWcs()->copyAtShiftedPixelOrigin(shift);
206 wcsMetadata = newWcs->getFitsMetadata(
true);
211 data.imageMetadata->combine(newWcs->getFitsMetadata(
true));
221 data.imageMetadata->set(
"LTV1", static_cast<double>(-xy0.getX()));
222 data.imageMetadata->set(
"LTV2", static_cast<double>(-xy0.getY()));
224 data.metadata->set(
"FILTER",
getFilter().getName());
226 data.metadata->set(
"DETNAME",
getDetector()->getName());
227 data.metadata->set(
"DETSER",
getDetector()->getSerial());
238 data.metadata->set(
"FLUXMAG0",
getCalib()->getFluxMag0().
first);
239 data.metadata->set(
"FLUXMAG0ERR",
getCalib()->getFluxMag0().
second);
244 void ExposureInfo::_finishWriteFits(
fits::Fits& fitsfile, FitsWriteData
const&
data)
const {
245 data.archive.writeFits(fitsfile);
static std::string const & getFitsSerializationVersionName()
Get the version of FITS serialization version info name.
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?
static int getFitsSerializationVersion()
Get the version of FITS serialization that this ExposureInfo understands.
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
table::Key< int > version
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.