LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
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");
}
table::Key< std::string > name
Definition: Amplifier.cc:116
SchemaMapper * mapper
Definition: SchemaMapper.cc:71
A mapping between the keys of two Schemas, used to copy data between them.
Definition: SchemaMapper.h:21
Abstract base class for all C++ measurement transformations.
Definition: Transform.h:86
BaseTransform(std::string const &name)
Definition: Transform.h:88

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()
table::Key< table::Array< std::uint8_t > > wcs
Definition: SkyWcs.cc:66
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 class for CatalogT.
Definition: Catalog.h:40
iterator begin()
Iterator access.
Definition: Catalog.h:401
typename Base::const_iterator const_iterator
Definition: SortedCatalog.h:50
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
Key< int > photoCalib
Definition: Exposure.cc:67

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

Definition at line 88 of file Transform.h.

88 : _name(name) {}

◆ ~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: