LSST Applications g2079a07aa2+86d27d4dc4,g2305ad1205+a659bff248,g2bbee38e9b+3c60f8fe34,g337abbeb29+3c60f8fe34,g33d1c0ed96+3c60f8fe34,g3502564af9+d77d6d1350,g3a166c0a6a+3c60f8fe34,g487adcacf7+25d9892218,g4be5004598+d77d6d1350,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+4d81263f9a,g5cd07815a0+980d2b1c3b,g607f77f49a+d77d6d1350,g858d7b2824+d77d6d1350,g88963caddf+83e433e629,g99cad8db69+a4d3c48eeb,g9ddcbc5298+9a081db1e4,ga1e77700b3+bcf1af89ad,ga57fefb910+9a39d7b2d7,gae0086650b+585e252eca,gb065fddaf9+4f9fd82a2c,gb0e22166c9+60f28cb32d,gb363559e06+d84b1d3d07,gb3b7280ab2+4563d032e1,gb4b16eec92+babe958938,gba4ed39666+c2a2e4ac27,gbb8dafda3b+ed6854b564,gc120e1dc64+b72d212f87,gc28159a63d+3c60f8fe34,gc3e9b769f7+921dbcd359,gcf0d15dbbd+9a39d7b2d7,gdaeeff99f8+f9a426f77a,gddc38dedce+585e252eca,ge79ae78c31+3c60f8fe34,w.2024.21
LSST Data Management Base Package
No Matches
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.

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 :
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"];
// 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");
SchemaMapper * mapper
Tag types used to declare specialized field types.
Definition misc.h:31
A mapping between the keys of two Schemas, used to copy data between them.
Abstract base class for all C++ measurement transformations.
Definition Transform.h:86

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,
lsst::afw::image::PhotoCalib const& photoCalib) const {
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()
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Definition SkyWcs.h:117
The photometric calibration of an exposure.
Definition PhotoCalib.h:114
iterator begin()
Iterator access.
Definition Catalog.h:400
typename Base::const_iterator const_iterator
virtual void operator()(afw::table::SourceCatalog const &inputCatalog, afw::table::BaseCatalog &outputCatalog, afw::geom::SkyWcs const &wcs, afw::image::PhotoCalib const &photoCalib) const =0
void checkCatalogSize(afw::table::BaseCatalog const &cat1, afw::table::BaseCatalog const &cat2) const
Ensure that catalogs have the same size.
Definition Transform.h:102

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)

Definition at line 88 of file Transform.h.

88: _name(name) {}

◆ ~BaseTransform()

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

Definition at line 89 of file Transform.h.


Member Function Documentation

◆ checkCatalogSize()

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

Ensure that catalogs have the same size.

[in]cat1Catalog for comparison
[in]cat2Catalog for comparison
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

Definition at line 107 of file Transform.h.

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