LSST Applications  21.0.0+04719a4bac,21.0.0-1-ga51b5d4+f5e6047307,21.0.0-11-g2b59f77+a9c1acf22d,21.0.0-11-ga42c5b2+86977b0b17,21.0.0-12-gf4ce030+76814010d2,21.0.0-13-g1721dae+760e7a6536,21.0.0-13-g3a573fe+768d78a30a,21.0.0-15-g5a7caf0+f21cbc5713,21.0.0-16-g0fb55c1+b60e2d390c,21.0.0-19-g4cded4ca+71a93a33c0,21.0.0-2-g103fe59+bb20972958,21.0.0-2-g45278ab+04719a4bac,21.0.0-2-g5242d73+3ad5d60fb1,21.0.0-2-g7f82c8f+8babb168e8,21.0.0-2-g8f08a60+06509c8b61,21.0.0-2-g8faa9b5+616205b9df,21.0.0-2-ga326454+8babb168e8,21.0.0-2-gde069b7+5e4aea9c2f,21.0.0-2-gecfae73+1d3a86e577,21.0.0-2-gfc62afb+3ad5d60fb1,21.0.0-25-g1d57be3cd+e73869a214,21.0.0-3-g357aad2+ed88757d29,21.0.0-3-g4a4ce7f+3ad5d60fb1,21.0.0-3-g4be5c26+3ad5d60fb1,21.0.0-3-g65f322c+e0b24896a3,21.0.0-3-g7d9da8d+616205b9df,21.0.0-3-ge02ed75+a9c1acf22d,21.0.0-4-g591bb35+a9c1acf22d,21.0.0-4-g65b4814+b60e2d390c,21.0.0-4-gccdca77+0de219a2bc,21.0.0-4-ge8a399c+6c55c39e83,21.0.0-5-gd00fb1e+05fce91b99,21.0.0-6-gc675373+3ad5d60fb1,21.0.0-64-g1122c245+4fb2b8f86e,21.0.0-7-g04766d7+cd19d05db2,21.0.0-7-gdf92d54+04719a4bac,21.0.0-8-g5674e7b+d1bd76f71f,master-gac4afde19b+a9c1acf22d,w.2021.13
LSST Data Management Base Package
PsfCandidate.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 #if !defined(LSST_MEAS_ALGORITHMS_PSFCANDIDATE_H)
3 #define LSST_MEAS_ALGORITHMS_PSFCANDIDATE_H
4 
5 /*
6  * LSST Data Management System
7  * Copyright 2008, 2009, 2010 LSST Corporation.
8  *
9  * This product includes software developed by the
10  * LSST Project (http://www.lsst.org/).
11  *
12  * This program is free software: you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation, either version 3 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the LSST License Statement and
23  * the GNU General Public License along with this program. If not,
24  * see <http://www.lsstcorp.org/LegalNotices/>.
25  */
26 
34 #include <memory>
35 #include <vector>
36 
37 #include "lsst/geom/Point.h"
39 #include "lsst/afw/detection/Psf.h"
41 #include "lsst/afw/table/Source.h"
43 
44 namespace lsst {
45 namespace meas {
46 namespace algorithms {
54 template <typename PixelT>
56 public:
60 
62 
70  parentExposure
71  )
72  : afw::math::SpatialCellImageCandidate(source->getX(), source->getY()),
73  _parentExposure(parentExposure),
74  _offsetImage(),
75  _source(source),
76  _image(nullptr),
77  _amplitude(0.0),
78  _var(1.0) {}
79 
85  parentExposure,
86  double xCenter,
87  double yCenter
88  )
89  : afw::math::SpatialCellImageCandidate(xCenter, yCenter),
90  _parentExposure(parentExposure),
91  _offsetImage(),
92  _source(source),
93  _image(nullptr),
94  _amplitude(0.0),
95  _var(1.0) {}
96 
98  virtual ~PsfCandidate(){};
99 
105  double getCandidateRating() const { return _source->getPsfInstFlux(); }
106 
108  PTR(afw::table::SourceRecord) getSource() const { return _source; }
109 
111  double getAmplitude() const { return _amplitude; }
112 
114  void setAmplitude(double amplitude) { _amplitude = amplitude; }
115 
117  double getVar() const { return _var; }
118 
120  void setVar(double var) { _var = var; }
121 
123  CONST_PTR(afw::image::MaskedImage<PixelT>) getMaskedImage(int width, int height) const;
125  getOffsetImage(std::string const algorithm, unsigned int buffer) const;
126 
128  static int getBorderWidth();
129 
131  static void setBorderWidth(int border);
132 
136  static void setPixelThreshold(float threshold);
137 
139  static float getPixelThreshold();
140 
142  static void setMaskBlends(bool doMaskBlends);
143 
145  static bool getMaskBlends();
146 
147 private:
149  _parentExposure; // the %image that the Sources are found in
150 
152  offsetImage(PTR(afw::image::MaskedImage<PixelT>) img, std::string const algorithm, unsigned int buffer);
153 
155  extractImage(unsigned int width, unsigned int height) const;
156 
157  PTR(afw::image::MaskedImage<PixelT>) mutable _offsetImage; // %image offset to put center on a pixel
158  PTR(afw::table::SourceRecord) _source; // the Source itself
159 
160  mutable std::shared_ptr<afw::image::MaskedImage<PixelT>> _image; // cutout image to return (cached)
161  double _amplitude; // best-fit amplitude of current PSF model
162  double _var; // variance to use when fitting this candidate
163  static int _border; // width of border of ignored pixels around _image
164  geom::Point2D _xyCenter;
165  static int _defaultWidth;
166  static float _pixelThreshold;
167  static bool _doMaskBlends;
168 };
169 
175 template <typename PixelT>
177  const & source,
179  image
180  ) {
181  return std::make_shared<PsfCandidate<PixelT>>(source, image);
182 }
183 
184 } // namespace algorithms
185 } // namespace meas
186 } // namespace lsst
187 
188 #endif
afw::table::Key< afw::table::Array< ImagePixelT > > image
#define PTR(...)
Definition: base.h:41
#define CONST_PTR(...)
A shared pointer to a const object.
Definition: base.h:47
A class to contain the data, WCS, and other information needed to describe an image of the sky.
Definition: Exposure.h:72
A class to manipulate images, masks, and variance as a single object.
Definition: MaskedImage.h:73
Base class for candidate objects in a SpatialCell that are able to return an Image of some sort (e....
Definition: SpatialCell.h:126
SpatialCellImageCandidate(float const xCenter, float const yCenter)
ctor
Definition: SpatialCell.h:129
Record class that contains measurements made on a single exposure.
Definition: Source.h:80
Class stored in SpatialCells for spatial Psf fitting.
Definition: PsfCandidate.h:55
static float getPixelThreshold()
Get threshold for rejecting pixels unconnected with the central footprint.
std::shared_ptr< const PsfCandidate< PixelT > > ConstPtr
Definition: PsfCandidate.h:58
double getCandidateRating() const
Return Cell rating.
Definition: PsfCandidate.h:105
static bool getMaskBlends()
Get whether blends are masked.
boost::shared_ptr< afw::image::MaskedImage< PixelT > > getOffsetImage(std::string const algorithm, unsigned int buffer) const
Return an offset version of the image of the source.
static void setBorderWidth(int border)
Set the number of pixels to ignore around the candidate image's edge.
double getVar() const
Return the variance in use when fitting this object.
Definition: PsfCandidate.h:117
static int getBorderWidth()
Return the number of pixels being ignored around the candidate image's edge.
static void setPixelThreshold(float threshold)
Set threshold for rejecting pixels unconnected with the central footprint.
boost::shared_ptr< afw::table::SourceRecord > getSource() const
Return the original Source.
Definition: PsfCandidate.h:108
void setVar(double var)
Set the variance to use when fitting this object.
Definition: PsfCandidate.h:120
PsfCandidate(boost::shared_ptr< afw::table::SourceRecord > const &source, boost::shared_ptr< afw::image::Exposure< PixelT > const > parentExposure)
Construct a PsfCandidate from a specified source and image.
Definition: PsfCandidate.h:68
void setAmplitude(double amplitude)
Set the best-fit amplitude.
Definition: PsfCandidate.h:114
afw::image::MaskedImage< PixelT > MaskedImageT
Definition: PsfCandidate.h:61
virtual ~PsfCandidate()
Destructor.
Definition: PsfCandidate.h:98
double getAmplitude() const
Return the best-fit amplitude.
Definition: PsfCandidate.h:111
PsfCandidate(boost::shared_ptr< afw::table::SourceRecord > const &source, boost::shared_ptr< afw::image::Exposure< PixelT > const > parentExposure, double xCenter, double yCenter)
Construct a PsfCandidate from a specified source, image and xyCenter.
Definition: PsfCandidate.h:83
static void setMaskBlends(bool doMaskBlends)
Set whether blends are masked.
std::shared_ptr< PsfCandidate< PixelT > > Ptr
Definition: PsfCandidate.h:57
boost::shared_ptr< afw::image::MaskedImage< PixelT > const > getMaskedImage() const
Return the image at the position of the Source, without any sub-pixel shifts to put the centre of the...
const char * source()
Source function that allows astChannel to source from a Stream.
Definition: Stream.h:224
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
std::shared_ptr< PsfCandidate< PixelT > > makePsfCandidate(boost::shared_ptr< afw::table::SourceRecord > const &source, boost::shared_ptr< afw::image::Exposure< PixelT > > image)
Return a PsfCandidate of the right sort.
Definition: PsfCandidate.h:176
A base class for image defects.