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 PTR(afw::math::LinearCombinationKernel
const)
getKernel()
const;
57 virtual std::string getPersistenceName()
const {
return "PcaPsf"; }
61 template <
class Archive>
62 void serialize(Archive&,
unsigned int const) {
63 boost::serialization::void_cast_register<
PcaPsf,
64 lsst::afw::detection::Psf>(
static_cast<PcaPsf*
>(0), static_cast<lsst::afw::detection::Psf*>(0));
72 namespace serialization {
74 template <
class Archive>
78 lsst::afw::math::LinearCombinationKernel
const* kernel = p->
getKernel().get();
79 ar << make_nvp(
"kernel", kernel);
81 ar << make_nvp(
"averagePositionX", averagePosition.getX());
82 ar << make_nvp(
"averagePositionY", averagePosition.getY());
85 template <
class Archive>
89 lsst::afw::math::LinearCombinationKernel* kernel;
90 ar >> make_nvp(
"kernel", kernel);
92 ar >> make_nvp(
"averagePositionX", x);
93 ar >> make_nvp(
"averagePositionY", y);
95 lsst::afw::geom::Point2D(x, y));
100 #endif // !LSST_MEAS_ALGORITHMS_PcaPsf_h_INCLUDED
void load_construct_data(Archive &ar, lsst::meas::algorithms::DoubleGaussianPsf *p, unsigned int const )
A Psf defined by a Kernel.
void save_construct_data(Archive &ar, lsst::meas::algorithms::DoubleGaussianPsf const *p, unsigned int const )
friend class boost::serialization::access
Represent a PSF as a linear combination of PCA (== Karhunen-Loeve) basis functions.
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.
tbl::PointKey< double > averagePosition
virtual boost::shared_ptr< afw::detection::Psf > clone() const
Polymorphic deep copy; should usually be unnecessary as Psfs are immutable.x.
PcaPsf(boost::shared_ptr< afw::math::LinearCombinationKernel > kernel, afw::geom::Point2D const &averagePosition=afw::geom::Point2D())
Constructor for a PcaPsf.