LSSTApplications  19.0.0-14-gb0260a2+72efe9b372,20.0.0+7927753e06,20.0.0+8829bf0056,20.0.0+995114c5d2,20.0.0+b6f4b2abd1,20.0.0+bddc4f4cbe,20.0.0-1-g253301a+8829bf0056,20.0.0-1-g2b7511a+0d71a2d77f,20.0.0-1-g5b95a8c+7461dd0434,20.0.0-12-g321c96ea+23efe4bbff,20.0.0-16-gfab17e72e+fdf35455f6,20.0.0-2-g0070d88+ba3ffc8f0b,20.0.0-2-g4dae9ad+ee58a624b3,20.0.0-2-g61b8584+5d3db074ba,20.0.0-2-gb780d76+d529cf1a41,20.0.0-2-ged6426c+226a441f5f,20.0.0-2-gf072044+8829bf0056,20.0.0-2-gf1f7952+ee58a624b3,20.0.0-20-geae50cf+e37fec0aee,20.0.0-25-g3dcad98+544a109665,20.0.0-25-g5eafb0f+ee58a624b3,20.0.0-27-g64178ef+f1f297b00a,20.0.0-3-g4cc78c6+e0676b0dc8,20.0.0-3-g8f21e14+4fd2c12c9a,20.0.0-3-gbd60e8c+187b78b4b8,20.0.0-3-gbecbe05+48431fa087,20.0.0-38-ge4adf513+a12e1f8e37,20.0.0-4-g97dc21a+544a109665,20.0.0-4-gb4befbc+087873070b,20.0.0-4-gf910f65+5d3db074ba,20.0.0-5-gdfe0fee+199202a608,20.0.0-5-gfbfe500+d529cf1a41,20.0.0-6-g64f541c+d529cf1a41,20.0.0-6-g9a5b7a1+a1cd37312e,20.0.0-68-ga3f3dda+5fca18c6a4,20.0.0-9-g4aef684+e18322736b,w.2020.45
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

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  }

◆ 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:
lsst::afw::table::CatalogT::end
iterator end()
Definition: Catalog.h:397
std::string
STL class.
wcs
table::Key< table::Array< std::uint8_t > > wcs
Definition: SkyWcs.cc:71
lsst::afw::geom::SkyWcs
A 2-dimensional celestial WCS that transform pixels to ICRS RA/Dec, using the LSST standard for pixel...
Definition: SkyWcs.h:117
lsst::afw::geom.transform.transformContinued.name
string name
Definition: transformContinued.py:32
lsst::meas::base::BaseTransform::_name
std::string _name
Definition: Transform.h:107
lsst::meas::base::BaseTransform::checkCatalogSize
void checkCatalogSize(afw::table::BaseCatalog const &cat1, afw::table::BaseCatalog const &cat2) const
Ensure that catalogs have the same size.
Definition: Transform.h:102
lsst::afw::table._source.SourceCatalog
Definition: _source.py:32
lsst::afw::table::SchemaMapper
A mapping between the keys of two Schemas, used to copy data between them.
Definition: SchemaMapper.h:21
lsst::afw::table::Key< double >
lsst::afw::table::CatalogIterator
Iterator class for CatalogT.
Definition: Catalog.h:39
lsst::afw::image::PhotoCalib
The photometric calibration of an exposure.
Definition: PhotoCalib.h:114
lsst::meas::base::BaseTransform::operator()
virtual void operator()(afw::table::SourceCatalog const &inputCatalog, afw::table::BaseCatalog &outputCatalog, afw::geom::SkyWcs const &wcs, afw::image::PhotoCalib const &photoCalib) const =0
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
photoCalib
Key< int > photoCalib
Definition: Exposure.cc:67
mapper
SchemaMapper * mapper
Definition: SchemaMapper.cc:78
lsst::meas::base::BaseTransform::BaseTransform
BaseTransform(std::string const &name)
Definition: Transform.h:88
lsst::meas::base::BaseTransform
Abstract base class for all C++ measurement transformations.
Definition: Transform.h:86
lsst::afw::table::CatalogT::begin
iterator begin()
Iterator access.
Definition: Catalog.h:396
lsst::ip::diffim.Control
Control
Definition: __init__.py:49
lsst::afw::table::CatalogT< BaseRecord >