LSST Applications g00d0e8bbd7+edbf708997,g03191d30f7+9ce8016dbd,g1955dfad08+0bd186d245,g199a45376c+5137f08352,g1fd858c14a+a888a50aa2,g262e1987ae+45f9aba685,g29ae962dfc+1c7d47a24f,g2cef7863aa+73c82f25e4,g35bb328faa+edbf708997,g3fd5ace14f+eed17d2c67,g47891489e3+6dc8069a4c,g53246c7159+edbf708997,g64539dfbff+c4107e45b5,g67b6fd64d1+6dc8069a4c,g74acd417e5+f452e9c21a,g786e29fd12+af89c03590,g7ae74a0b1c+a25e60b391,g7aefaa3e3d+2025e9ce17,g7cc15d900a+2d158402f9,g87389fa792+a4172ec7da,g89139ef638+6dc8069a4c,g8d4809ba88+c4107e45b5,g8d7436a09f+e96c132b44,g8ea07a8fe4+db21c37724,g98df359435+aae6d409c1,ga2180abaac+edbf708997,gac66b60396+966efe6077,gb632fb1845+88945a90f8,gbaa8f7a6c5+38b34f4976,gbf99507273+edbf708997,gca7fc764a6+6dc8069a4c,gd7ef33dd92+6dc8069a4c,gda68eeecaf+7d1e613a8d,gdab6d2f7ff+f452e9c21a,gdbb4c4dda9+c4107e45b5,ge410e46f29+6dc8069a4c,ge41e95a9f2+c4107e45b5,geaed405ab2+e194be0d2b,w.2025.47
LSST Data Management Base Package
Loading...
Searching...
No Matches
KernelPsf.cc
Go to the documentation of this file.
1// -*- LSST-C++ -*-
2
3#include "lsst/geom/Box.h"
7
8namespace lsst {
9namespace afw {
10namespace table {
11namespace io {
12
13template std::shared_ptr<meas::algorithms::KernelPsf>
14PersistableFacade<meas::algorithms::KernelPsf>::dynamicCast(std::shared_ptr<Persistable> const&);
15
16} // namespace io
17} // namespace table
18} // namespace afw
19namespace meas {
20namespace algorithms {
21
22std::shared_ptr<afw::detection::Psf::Image>
24 std::shared_ptr<Psf::Image> im = std::make_shared<Psf::Image>(_kernel->getDimensions());
25 _kernel->computeImage(*im, true, position.getX(), position.getY());
26 return im;
27}
28
30 return _kernel->getBBox();
31}
32
33KernelPsf::KernelPsf(afw::math::Kernel const& kernel, geom::Point2D const& averagePosition)
34 : ImagePsf(!kernel.isSpatiallyVarying()),
35 _kernel(kernel.clone()),
36 _averagePosition(averagePosition) {}
37
39 : ImagePsf(!kernel->isSpatiallyVarying()), _kernel(kernel), _averagePosition(averagePosition) {}
40
42
44 return std::make_shared<KernelPsf>(*_kernel->resized(width, height), _averagePosition);
45}
46
47geom::Point2D KernelPsf::getAveragePosition() const { return _averagePosition; }
48
49namespace {
50
51KernelPsfFactory<> registration("KernelPsf");
52
53} // namespace
54
56 static KernelPsfPersistenceHelper instance;
57 return instance;
58}
59
61 : schema(),
62 kernel(schema.addField<int>("kernel", "archive ID of nested kernel object")),
63 averagePosition(afw::table::PointKey<double>::addFields(
64 schema, "averagePosition", "average position of stars used to make the PSF", "pixel")) {}
65
66bool KernelPsf::isPersistable() const noexcept { return _kernel->isPersistable(); }
67
68std::string KernelPsf::getPersistenceName() const { return "KernelPsf"; }
69
70std::string KernelPsf::getPythonModule() const { return "lsst.meas.algorithms"; }
71
74 afw::table::BaseCatalog catalog = handle.makeCatalog(keys.schema);
75 std::shared_ptr<afw::table::BaseRecord> record = catalog.addNew();
76 record->set(keys.kernel, handle.put(_kernel));
77 record->set(keys.averagePosition, _averagePosition);
78 handle.saveCatalog(catalog);
79}
80
81} // namespace algorithms
82} // namespace meas
83} // namespace lsst
Utilities for persisting KernelPsf and subclasses thereof.
Describe the colour of a source.
Definition Color.h:23
Kernels are used for convolution with MaskedImages and (eventually) Images.
Definition Kernel.h:110
void saveCatalog(BaseCatalog const &catalog)
Save a catalog in the archive.
BaseCatalog makeCatalog(Schema const &schema)
Return a new, empty catalog with the given schema.
int put(Persistable const *obj, bool permissive=false)
Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArc...
static std::shared_ptr< T > dynamicCast(std::shared_ptr< Persistable > const &ptr)
Dynamically cast a shared_ptr.
io::OutputArchiveHandle OutputArchiveHandle
An integer coordinate rectangle.
Definition Box.h:55
ImagePsf(bool isFixed=false)
Definition ImagePsf.h:42
A PersistableFactory for KernelPsf and its subclasses.
KernelPsf(afw::math::Kernel const &kernel, geom::Point2D const &averagePosition=geom::Point2D())
Construct a KernelPsf with a clone of the given kernel.
Definition KernelPsf.cc:33
bool isPersistable() const noexcept override
Whether this object is persistable; just delegates to the kernel.
Definition KernelPsf.cc:66
geom::Box2I doComputeBBox(geom::Point2D const &position, afw::image::Color const &color) const override
Definition KernelPsf.cc:29
std::shared_ptr< Image > doComputeKernelImage(geom::Point2D const &position, afw::image::Color const &color) const override
These virtual member functions are private, not protected, because we only want derived classes to im...
Definition KernelPsf.cc:23
std::shared_ptr< afw::detection::Psf > clone() const override
Polymorphic deep copy.
Definition KernelPsf.cc:41
std::shared_ptr< afw::detection::Psf > resized(int width, int height) const override
Return a clone with specified kernel dimensions.
Definition KernelPsf.cc:43
std::string getPersistenceName() const override
Return the unique name used to persist this object and look up its factory.
Definition KernelPsf.cc:68
std::string getPythonModule() const override
Return the fully-qualified Python module that should be imported to guarantee that its factory is reg...
Definition KernelPsf.cc:70
void write(OutputArchiveHandle &handle) const override
Write the object to one or more catalogs.
Definition KernelPsf.cc:72
geom::Point2D getAveragePosition() const override
Return average position of stars; used as default position.
Definition KernelPsf.cc:47
T make_shared(T... args)
CatalogT< BaseRecord > BaseCatalog
Definition fwd.h:72
Point< double, 2 > Point2D
Definition Point.h:324
A read-only singleton struct containing the schema and key used in persistence for KernelPsf.
KernelPsfPersistenceHelper(const KernelPsfPersistenceHelper &)=delete
static KernelPsfPersistenceHelper const & get()
Definition KernelPsf.cc:55