43 bool initFromWcs,
unsigned nNotFit,
unsigned order)
45 _skyToTangentPlane(projectionHandler)
50 for (
auto i = ccdImageList.
cbegin(); i != ccdImageList.
cend(); ++i, ++
count) {
52 if (
count < nNotFit) {
70 while (pol.
getNpar() > 2 * nObj) {
72 << pol.
getOrder() <<
", due to too few sources (" << nObj
73 <<
" vs. " << pol.
getNpar() <<
" parameters)");
89 pol = pol * shiftAndNormalize.
inverted();
98 return findMapping(ccdImage);
102 if (whatToFit.
find(
"Distortions") == std::string::npos) {
103 LOGLS_ERROR(
_log,
"AssignIndices was called and Distortions is *not* in whatToFit.");
106 Eigen::Index index = firstIndex;
107 for (
auto i = _myMap.begin(); i != _myMap.end(); ++i) {
117 for (
auto &i : _myMap) {
118 auto mapping = i.second.get();
119 mapping->offsetParams(delta.segment(mapping->getIndex(), mapping->getNpar()));
124 for (
auto &i : _myMap) i.second->freezeErrorTransform();
129 for (
auto &i : _myMap) {
130 total += i.second->getNpar();
136 out <<
"SimpleAstrometryModel: " << _myMap.size() <<
" mappings" <<
std::endl;
138 out <<
"Sensor to sky transforms:" <<
std::endl;
139 for (
auto &i : _myMap) {
162 auto iwcToSkyMap = iwcToSkyWcs->getFrameDict()->getMapping(
"PIXELS",
"SKY");
163 auto skyFrame = iwcToSkyWcs->getFrameDict()->getFrame(
"SKY");
166 frameDict.
addFrame(
"IWC", *iwcToSkyMap, *skyFrame);
167 return std::make_shared<afw::geom::SkyWcs>(frameDict);
172 if (i == _myMap.end())
174 "SimpleAstrometryModel cannot find CcdImage " + ccdImage.
getName());
175 return i->second.get();
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
LSST DM logging module built on log4cxx.
#define LOGLS_WARN(logger, message)
Log a warn-level message using an iostream-based interface.
#define LOG_GET(logger)
Returns a Log object associated with logger.
#define LOGLS_ERROR(logger, message)
Log a error-level message using an iostream-based interface.
A FrameSet whose frames can be referenced by domain name.
void addFrame(int iframe, Mapping const &map, Frame const &frame) override
Add a new Frame and an associated Mapping to this FrameSet so as to define a new coordinate system,...
Frame is used to represent a coordinate system.
Point in an unspecified spherical coordinate system.
virtual class needed in the abstraction of the distortion model
Interface between AstrometryFit and the combinations of Mappings from pixels to some tangent plane (a...
LOG_LOGGER _log
lsst.logging instance, to be created by a subclass so that messages have consistent name.
Handler of an actual image from a single CCD.
std::shared_ptr< AstrometryTransform > const getPixelToTangentPlane() const
Frame const & getImageFrame() const
Frame in pixels.
MeasuredStarList const & getCatalogForFit() const
Gets the catalog to be used for fitting, which may have been cleaned-up.
std::string getName() const
Return the _name that identifies this ccdImage.
CcdImageKey getHashKey() const
rectangle with sides parallel to axes.
std::size_t getNpar() const override
Number of parameters in total.
void setIndex(Eigen::Index i)
Set the index of this mapping in the grand fit.
Eigen::Index assignIndices(std::string const &whatToFit, Eigen::Index firstIndex) override
Positions the various parameter sets into the parameter vector, starting at firstIndex.
void offsetParams(Eigen::VectorXd const &delta) override
Offset the parameters by the provided amounts (by -delta).
std::size_t getTotalParameters() const override
Return the total number of parameters in this model.
AstrometryTransform const & getTransform(CcdImage const &ccdImage) const
Access to mappings.
void print(std::ostream &out) const override
Print a string representation of the contents of this mapping, for debugging.
void freezeErrorTransform() override
const std::shared_ptr< AstrometryTransform const > getSkyToTangentPlane(CcdImage const &ccdImage) const override
the mapping of sky coordinates (i.e.
const AstrometryMapping * getMapping(CcdImage const &) const override
Mapping associated to a given CcdImage.
std::shared_ptr< afw::geom::SkyWcs > makeSkyWcs(CcdImage const &ccdImage) const override
Make a SkyWcs that contains this model.
SimpleAstrometryModel(CcdImageList const &ccdImageList, const std::shared_ptr< ProjectionHandler const > projectionHandler, bool initFromWCS, unsigned nNotFit=0, unsigned order=3)
Mapping implementation for a polynomial transformation.
Reports invalid arguments.
std::shared_ptr< SkyWcs > makeSkyWcs(daf::base::PropertySet &metadata, bool strip=false)
Construct a SkyWcs from FITS keywords.
Eigen::Matrix2d makeCdMatrix(lsst::geom::Angle const &scale, lsst::geom::Angle const &orientation=0 *lsst::geom::degrees, bool flipX=false)
Make a WCS CD matrix.
constexpr AngleUnit degrees
constant with units of degrees
AstrometryTransformLinear normalizeCoordinatesTransform(const Frame &frame)
Returns the transformation that maps the input frame along both axes to [-1,1].
A base class for image defects.