LSSTApplications  17.0+11,17.0+34,17.0+56,17.0+57,17.0+59,17.0+7,17.0-1-g377950a+33,17.0.1-1-g114240f+2,17.0.1-1-g4d4fbc4+28,17.0.1-1-g55520dc+49,17.0.1-1-g5f4ed7e+52,17.0.1-1-g6dd7d69+17,17.0.1-1-g8de6c91+11,17.0.1-1-gb9095d2+7,17.0.1-1-ge9fec5e+5,17.0.1-1-gf4e0155+55,17.0.1-1-gfc65f5f+50,17.0.1-1-gfc6fb1f+20,17.0.1-10-g87f9f3f+1,17.0.1-11-ge9de802+16,17.0.1-16-ga14f7d5c+4,17.0.1-17-gc79d625+1,17.0.1-17-gdae4c4a+8,17.0.1-2-g26618f5+29,17.0.1-2-g54f2ebc+9,17.0.1-2-gf403422+1,17.0.1-20-g2ca2f74+6,17.0.1-23-gf3eadeb7+1,17.0.1-3-g7e86b59+39,17.0.1-3-gb5ca14a,17.0.1-3-gd08d533+40,17.0.1-30-g596af8797,17.0.1-4-g59d126d+4,17.0.1-4-gc69c472+5,17.0.1-6-g5afd9b9+4,17.0.1-7-g35889ee+1,17.0.1-7-gc7c8782+18,17.0.1-9-gc4bbfb2+3,w.2019.22
LSSTDataManagementBasePackage
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lsst::meas::base::BaseTransform Class Referenceabstract

Abstract base class for all C++ measurement transformations. More...

#include <Transform.h>

Inheritance diagram for lsst::meas::base::BaseTransform:
lsst::meas::base::ApertureFluxTransform lsst::meas::base::CentroidTransform lsst::meas::base::FluxTransform lsst::meas::base::SdssShapeTransform lsst::meas::base::NaiveCentroidTransform lsst::meas::base::SdssCentroidTransform lsst::meas::base::GaussianFluxTransform lsst::meas::base::LocalBackgroundTransform lsst::meas::base::PeakLikelihoodFluxTransform lsst::meas::base::PsfFluxTransform lsst::meas::base::ScaledApertureFluxTransform

Public Member Functions

 BaseTransform (std::string const &name)
 
virtual ~BaseTransform ()
 
virtual void operator() (afw::table::SourceCatalog const &inputCatalog, afw::table::BaseCatalog &outputCatalog, afw::geom::SkyWcs const &wcs, afw::image::PhotoCalib const &photoCalib) const =0
 

Protected Member Functions

void checkCatalogSize (afw::table::BaseCatalog const &cat1, afw::table::BaseCatalog const &cat2) const
 Ensure that catalogs have the same size. More...
 

Protected Attributes

std::string _name
 

Detailed Description

Abstract base class for all C++ measurement transformations.

Measurement plugins return results in raw, uncalibrated units (eg fluxes or positions in pixels). The transformation system provides a mechanism for post-processing those results into a calibrated form (magnitudes, celestial coordinates, etc).

A measurement transformation should derive from BaseTransform. It should implement a constructor which takes three arguments:

The constructor should use the SchemaMapper to map fields from the input to output schemas and add additional keys to the output as required. For example:

class SillyTransform :
{
public:
typedef SillyCentroidControl Control;
SillyTransform(Control const & ctrl, std::string const & name, lsst::afw::table::SchemaMapper & mapper)
: BaseTransform(name), _ctrl(ctrl) {
// Map these fields from the input to the output
lsst::afw::table::Key<double> xkey = mapper.getInputSchema()[name + "_x"];
lsst::afw::table::Key<double> ykey = mapper.getInputSchema()[name + "_y"];
mapper.addMapping(xkey);
mapper.addMapping(ykey);
// Add these fields to the output schema to fill in later; the keys
// are stored as members of this class
_key_revX = mapper.editOutputSchema().addField<double>(name + "_reverse_x", "reversed X");
_key_revY = mapper.editOutputSchema().addField<double>(name + "_reverse_y", "reversed Y");
}

Derived classes should also implement operator() following the interface below. This will be called with a catalog containing the results of the measurement plugin and a catalog to be populated with transformed quantities, as well as WCS and calibration information. For example:

virtual void operator()(lsst::afw::table::SourceCatalog const& inputCatalog,
checkCatalogSize(inputCatalog, outputCatalog);
lsst::afw::table::Key<double> xkey = inputCatalog.getSchema()[_name + "_x"];
lsst::afw::table::Key<double> ykey = inputCatalog.getSchema()[_name + "_y"];
for (; inSrc < inputCatalog.end() && outSrc < outputCatalog.end(); ++inSrc, ++outSrc) {
// Store the "reversed" versions of the x and y positions in the
// output catalog.
outSrc->set(_key_revX, -1.0 * inSrc->get(xkey));
outSrc->set(_key_revY, -1.0 * inSrc->get(ykey));
}
} // operator()

Note that it is safe to assume that both catalogs passed to operator() are contiguous in memory. It is good practice to ensure that they are equal in size: this may be conveniently achieved by calling BaseTransform::checkCatalogSize().

operator() may throw LengthError if the transformation is impossible to complete. In this case, the contents of outputCatalog is not guaranteed.

Definition at line 86 of file Transform.h.

Constructor & Destructor Documentation

◆ BaseTransform()

lsst::meas::base::BaseTransform::BaseTransform ( std::string const &  name)
inlineexplicit

◆ ~BaseTransform()

virtual lsst::meas::base::BaseTransform::~BaseTransform ( )
inlinevirtual

Definition at line 89 of file Transform.h.

89 {}

Member Function Documentation

◆ checkCatalogSize()

void lsst::meas::base::BaseTransform::checkCatalogSize ( afw::table::BaseCatalog const &  cat1,
afw::table::BaseCatalog const &  cat2 
) const
inlineprotected

Ensure that catalogs have the same size.

Parameters
[in]cat1Catalog for comparison
[in]cat2Catalog for comparison
Exceptions
LengthErrorCatalog sizes do not match

Definition at line 102 of file Transform.h.

102  {
103  if (cat1.size() != cat2.size()) {
104  throw LSST_EXCEPT(pex::exceptions::LengthError, "Catalog size mismatch");
105  }
106  }
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48

◆ operator()()

virtual void lsst::meas::base::BaseTransform::operator() ( afw::table::SourceCatalog const &  inputCatalog,
afw::table::BaseCatalog outputCatalog,
afw::geom::SkyWcs const &  wcs,
afw::image::PhotoCalib const &  photoCalib 
) const
pure virtual

Member Data Documentation

◆ _name

std::string lsst::meas::base::BaseTransform::_name
protected

Definition at line 107 of file Transform.h.


The documentation for this class was generated from the following file: