LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lsst::meas::base::SdssShapeTransform Class Reference

Transformation for SdssShape measurements. More...

#include <SdssShape.h>

Inheritance diagram for lsst::meas::base::SdssShapeTransform:
lsst::meas::base::BaseTransform

Public Types

typedef SdssShapeControl Control
 

Public Member Functions

 SdssShapeTransform (Control const &ctrl, std::string const &name, afw::table::SchemaMapper &mapper)
 
virtual void operator() (afw::table::SourceCatalog const &inputCatalog, afw::table::BaseCatalog &outputCatalog, afw::geom::SkyWcs const &wcs, afw::image::PhotoCalib const &photoCalib) const
 

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

Transformation for SdssShape measurements.

SdssShape measures not just shape but also instFlux and centroid. This transform operates on the first directly, and delegates to the Flux and Centroid transforms for the other two.

Definition at line 250 of file SdssShape.h.

Member Typedef Documentation

◆ Control

Definition at line 252 of file SdssShape.h.

Constructor & Destructor Documentation

◆ SdssShapeTransform()

lsst::meas::base::SdssShapeTransform::SdssShapeTransform ( Control const &  ctrl,
std::string const &  name,
afw::table::SchemaMapper mapper 
)

Definition at line 923 of file SdssShape.cc.

925  : BaseTransform{name}, _instFluxTransform{name, mapper}, _centroidTransform{name, mapper} {
926  // If the input schema has a PSF flag -- it's optional -- assume we are also transforming the PSF.
927  _transformPsf = mapper.getInputSchema().getNames().count("sdssShape_flag_psf") ? true : false;
928 
929  // Skip the last flag if not transforming the PSF shape.
930  for (std::size_t i = 0; i < SdssShapeAlgorithm::getFlagDefinitions().size(); i++) {
931  FlagDefinition const &flag = SdssShapeAlgorithm::getFlagDefinitions()[i];
932  if (flag == SdssShapeAlgorithm::FAILURE) continue;
933  if (mapper.getInputSchema().getNames().count(mapper.getInputSchema().join(name, flag.name)) == 0)
934  continue;
935  afw::table::Key<afw::table::Flag> key =
936  mapper.getInputSchema().find<afw::table::Flag>(name + "_" + flag.name).key;
937  mapper.addMapping(key);
938  }
939 
940  _outShapeKey = ShapeResultKey::addFields(mapper.editOutputSchema(), name, "Shape in celestial moments",
942  if (_transformPsf) {
943  _outPsfShapeKey = afw::table::QuadrupoleKey::addFields(mapper.editOutputSchema(), name + "_psf",
944  "PSF shape in celestial moments",
946  }
947 }
table::Key< std::string > name
Definition: Amplifier.cc:116
SchemaMapper * mapper
Definition: SchemaMapper.cc:71
static QuadrupoleKey addFields(Schema &schema, std::string const &name, std::string const &doc, CoordinateType coordType=CoordinateType::PIXEL)
Add a set of quadrupole subfields to a schema and return a QuadrupoleKey that points to them.
Definition: aggregates.cc:100
BaseTransform(std::string const &name)
Definition: Transform.h:88
std::size_t size() const
return the current size (number of defined elements) of the collection
Definition: FlagHandler.h:125
static FlagDefinitionList const & getFlagDefinitions()
Definition: SdssShape.cc:58
static FlagDefinition const FAILURE
Definition: SdssShape.h:155
static ShapeResultKey addFields(afw::table::Schema &schema, std::string const &name, std::string const &doc, UncertaintyEnum uncertainty, afw::table::CoordinateType coordType=afw::table::CoordinateType::PIXEL)
Add the appropriate fields to a Schema, and return a ShapeResultKey that manages them.
@ FULL_COVARIANCE
The full covariance matrix is provided.
Definition: constants.h:46

Member Function Documentation

◆ checkCatalogSize()

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

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()()

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

Implements lsst::meas::base::BaseTransform.

Definition at line 949 of file SdssShape.cc.

951  {
952  // The instFlux and cetroid transforms will check that the catalog lengths
953  // match and throw if not, so we don't repeat the test here.
954  _instFluxTransform(inputCatalog, outputCatalog, wcs, photoCalib);
955  _centroidTransform(inputCatalog, outputCatalog, wcs, photoCalib);
956 
957  CentroidResultKey centroidKey(inputCatalog.getSchema()[_name]);
958  ShapeResultKey inShapeKey(inputCatalog.getSchema()[_name]);
959  afw::table::QuadrupoleKey inPsfShapeKey;
960  if (_transformPsf) {
961  inPsfShapeKey = afw::table::QuadrupoleKey(
962  inputCatalog.getSchema()[inputCatalog.getSchema().join(_name, "psf")]);
963  }
964 
965  afw::table::SourceCatalog::const_iterator inSrc = inputCatalog.begin();
966  afw::table::BaseCatalog::iterator outSrc = outputCatalog.begin();
967  for (; inSrc != inputCatalog.end(); ++inSrc, ++outSrc) {
968  ShapeResult inShape = inShapeKey.get(*inSrc);
969  ShapeResult outShape;
970 
971  // The transformation from the (x, y) to the (Ra, Dec) basis.
972  geom::AffineTransform crdTr =
973  wcs.linearizePixelToSky(centroidKey.get(*inSrc).getCentroid(), geom::radians);
974  outShape.setShape(inShape.getShape().transform(crdTr.getLinear()));
975 
976  // Transformation matrix from pixel to celestial basis.
978  outShape.setShapeErr((m * inShape.getShapeErr().cast<double>() * m.transpose()).cast<ErrElement>());
979 
980  _outShapeKey.set(*outSrc, outShape);
981 
982  if (_transformPsf) {
983  _outPsfShapeKey.set(*outSrc, inPsfShapeKey.get(*inSrc).transform(crdTr.getLinear()));
984  }
985  }
986 }
table::Key< table::Array< std::uint8_t > > wcs
Definition: SkyWcs.cc:66
int m
Definition: SpanSet.cc:48
CatalogIterator< typename Internal::iterator > iterator
Definition: Catalog.h:111
void set(BaseRecord &record, geom::ellipses::Quadrupole const &value) const override
Set a Quadrupole in the given record.
Definition: aggregates.cc:114
An affine coordinate transformation consisting of a linear transformation and an offset.
LinearTransform const & getLinear() const noexcept
virtual void set(afw::table::BaseRecord &record, ShapeResult const &value) const
Set a ShapeResult in the given record.
constexpr AngleUnit radians
constant with units of radians
Definition: Angle.h:108
Eigen::Matrix< ShapeElement, 3, 3, Eigen::DontAlign > ShapeTrMatrix
Definition: constants.h:62
float ErrElement
Definition: constants.h:55
ShapeTrMatrix makeShapeTransformMatrix(geom::LinearTransform const &xform)
Construct a matrix suitable for transforming second moments.
Key< int > photoCalib
Definition: Exposure.cc:67

Member Data Documentation

◆ _name

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

Definition at line 107 of file Transform.h.


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