24 #ifndef LSST_MEAS_ALGORITHMS_PcaPsf_h_INCLUDED 25 #define LSST_MEAS_ALGORITHMS_PcaPsf_h_INCLUDED 29 namespace lsst {
namespace meas {
namespace algorithms {
34 class PcaPsf :
public lsst::afw::table::io::PersistableFacade<PcaPsf>,
public KernelPsf {
44 PTR(afw::math::LinearCombinationKernel) kernel,
49 virtual PTR(afw::detection::Psf)
clone()
const;
52 virtual PTR(afw::detection::Psf)
resized(
int width,
int height)
const;
55 PTR(afw::math::LinearCombinationKernel
const)
getKernel()
const;
60 virtual std::string getPersistenceName()
const {
return "PcaPsf"; }
64 template <
class Archive>
65 void serialize(Archive&,
unsigned int const) {
66 boost::serialization::void_cast_register<
PcaPsf,
67 lsst::afw::detection::Psf>(
static_cast<PcaPsf*
>(0), static_cast<lsst::afw::detection::Psf*>(0));
75 namespace serialization {
77 template <
class Archive>
81 lsst::afw::math::LinearCombinationKernel
const* kernel = p->
getKernel().get();
82 ar << make_nvp(
"kernel", kernel);
84 ar << make_nvp(
"averagePositionX", averagePosition.getX());
85 ar << make_nvp(
"averagePositionY", averagePosition.getY());
88 template <
class Archive>
92 lsst::afw::math::LinearCombinationKernel* kernel;
93 ar >> make_nvp(
"kernel", kernel);
95 ar >> make_nvp(
"averagePositionX", x);
96 ar >> make_nvp(
"averagePositionY", y);
98 lsst::afw::geom::Point2D(x, y));
103 #endif // !LSST_MEAS_ALGORITHMS_PcaPsf_h_INCLUDED virtual boost::shared_ptr< afw::detection::Psf > resized(int width, int height) const
Return a clone with specified kernel dimensions.
A Psf defined by a Kernel.
void load_construct_data(Archive &ar, lsst::meas::algorithms::PcaPsf *p, unsigned int const)
virtual boost::shared_ptr< afw::detection::Psf > clone() const
Polymorphic deep copy; should usually be unnecessary as Psfs are immutable.x.
friend class boost::serialization::access
Represent a PSF as a linear combination of PCA (== Karhunen-Loeve) basis functions.
void save_construct_data(Archive &ar, lsst::meas::algorithms::PcaPsf const *p, unsigned int const)
tbl::PointKey< double > averagePosition
PcaPsf(boost::shared_ptr< afw::math::LinearCombinationKernel > kernel, afw::geom::Point2D const &averagePosition=afw::geom::Point2D())
Constructor for a PcaPsf.
boost::shared_ptr< afw::math::LinearCombinationKernel const > getKernel() const
PcaPsf always has a LinearCombinationKernel, so we can override getKernel to make it more useful...
virtual afw::geom::Point2D getAveragePosition() const
Return average position of stars; used as default position.