lsst.meas.modelfit  15.0-3-g150fc43+8
DoubleShapeletPsfApprox.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 /*
3  * LSST Data Management System
4  * Copyright 2008-2016 LSST/AURA.
5  *
6  * This product includes software developed by the
7  * LSST Project (http://www.lsst.org/).
8  *
9  * This program is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the LSST License Statement and
20  * the GNU General Public License along with this program. If not,
21  * see <http://www.lsstcorp.org/LegalNotices/>.
22  */
23 
24 #ifndef LSST_MEAS_MODELFIT_DoubleShapeletPsfApprox_h_INCLUDED
25 #define LSST_MEAS_MODELFIT_DoubleShapeletPsfApprox_h_INCLUDED
26 
31 
32 namespace lsst { namespace meas { namespace modelfit {
33 
38 public:
39 
41  innerOrder(2), outerOrder(1),
42  radiusRatio(2.0), peakRatio(0.1),
44  {}
45 
46  LSST_CONTROL_FIELD(innerOrder, int, "Shapelet order of inner expansion (0 == Gaussian)");
47 
48  LSST_CONTROL_FIELD(outerOrder, int, "Shapelet order of outer expansion (0 == Gaussian)");
49 
50  LSST_CONTROL_FIELD(radiusRatio, double, "Initial outer radius divided by inner radius");
51 
53  peakRatio, double,
54  "Initial outer Gaussian peak height divided by inner Gaussian peak height"
55  );
56 
58  minRadius, double,
59  "Don't allow the semi-minor radius of any component to drop below this value (pixels)"
60  );
61 
63  minRadiusDiff, double,
64  "Don't allow the determinant radii of the two components to differ by less than this (pixels)"
65  );
66 
68  maxRadiusBoxFraction, double,
69  "Don't allow the semi-major radius of any component to go above this fraction of the PSF image width"
70  );
71 
74  "Configuration of the optimizer used by DoubleShapeletPsfsApproxAlgorithm::fitProfile()."
75  );
76 
77 };
78 
79 
96 public:
97 
98  // Structures and routines to manage flaghandler
99  static base::FlagDefinitionList const & getFlagDefinitions();
104 
106 
108 
124  Control const & ctrl,
125  std::string const & name,
126  afw::table::Schema & schema
127  );
128 
136  static shapelet::MultiShapeletFunction initializeResult(Control const & ctrl);
137 
161  static void fitMoments(
163  Control const & ctrl,
164  afw::image::Image<Scalar> const & psfImage
165  );
166 
194  static PTR(OptimizerObjective) makeObjective(
195  afw::geom::ellipses::Ellipse const & moments,
196  Control const & ctrl,
197  afw::image::Image<Scalar> const & psfImage
198  );
199 
200 
217  static void fitProfile(
219  Control const & ctrl,
220  afw::image::Image<Scalar> const & psfImage
221  );
222 
237  static void fitShapelets(
239  Control const & ctrl,
240  afw::image::Image<Scalar> const & psfImage
241  );
242 
248  void measure(
249  afw::table::SourceRecord & measRecord,
250  afw::image::Exposure<float> const & exposure
251  ) const;
252 
256  void fail(
257  afw::table::SourceRecord & measRecord,
258  lsst::meas::base::MeasurementError * error=nullptr
259  ) const;
260 
261 private:
262  Control _ctrl;
263  meas::base::SafeCentroidExtractor _centroidExtractor;
265  lsst::meas::base::FlagHandler _flagHandler;
266 };
267 
268 }}} // namespace lsst::meas::modelfit
269 
270 #endif // !LSST_MEAS_MODELFIT_DoubleShapeletPsfApprox_h_INCLUDED
OptimizerControl optimizer
"Configuration of the optimizer used by DoubleShapeletPsfsApproxAlgorithm::fitProfile()." ;
Control object used to configure a 2-shapelet fit to a PSF model; see DoubleShapeletPsfApproxAlgorith...
An algorithm that fits a 2-component shapelet approximation to the PSF model.
#define PTR(...)
double radiusRatio
"Initial outer radius divided by inner radius" ;
#define LSST_CONTROL_FIELD(NAME, TYPE, DOC)
STL class.
double minRadius
"Don&#39;t allow the semi-minor radius of any component to drop below this value (pixels)" ; ...
int innerOrder
"Shapelet order of inner expansion (0 == Gaussian)" ;
#define LSST_NESTED_CONTROL_FIELD(NAME, MODULE, TYPE, DOC)
Configuration object for Optimizer.
Definition: optimizer.h:187
int outerOrder
"Shapelet order of outer expansion (0 == Gaussian)" ;
double minRadiusDiff
"Don&#39;t allow the determinant radii of the two components to differ by less than this (pixels)" ; ...
Base class for objective functions for Optimizer.
Definition: optimizer.h:44
double maxRadiusBoxFraction
"Don&#39;t allow the semi-major radius of any component to go above this fraction of the PSF image width"...
double peakRatio
"Initial outer Gaussian peak height divided by inner Gaussian peak height" ;