lsst.gauss2d.fit g199a45376c+3b7b3fd841
 
Loading...
Searching...
No Matches
shapeprior.h
1#ifndef LSST_GAUSS2D_FIT_SHAPEPRIOR_H
2#define LSST_GAUSS2D_FIT_SHAPEPRIOR_H
3
4#include <memory>
5
6#include "lsst/gauss2d/object.h"
7
8#include "parametricellipse.h"
9#include "parametricgaussian1d.h"
10#include "prior.h"
11#include "transforms.h"
12
13namespace lsst::gauss2d::fit {
14
18class ShapePriorOptions : public Object {
19public:
20 static inline const double delta_jacobian_default = 1e-5;
21 static inline const double size_maj_floor_default = 1e-3;
22 static inline const double axrat_floor_default = 1e-3;
23
31 explicit ShapePriorOptions(double delta_jacobian = delta_jacobian_default,
32 double size_maj_floor = size_maj_floor_default,
33 double axrat_floor = axrat_floor_default);
34
35 bool check_delta_jacobian(double delta_jacobian, bool do_throw = false);
36 bool check_size_maj_floor(double size_maj_floor, bool do_throw = false);
37 bool check_axrat_floor(double axrat_floor, bool do_throw = false);
38
39 double get_delta_jacobian() const;
40 double get_size_maj_floor() const;
41 double get_axrat_floor() const;
42
43 void set_delta_jacobian(double delta_jacobian);
44 void set_size_maj_floor(double size_maj_floor);
45 void set_axrat_floor(double axrat_floor);
46
47 std::string repr(bool name_keywords = false,
48 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR) const override;
49 std::string str() const override;
50
51private:
52 double _delta_jacobian;
53 double _size_maj_floor;
54 double _axrat_floor;
55};
56
63class ShapePrior : public Prior {
64public:
72 explicit ShapePrior(std::shared_ptr<const ParametricEllipse> ellipse,
73 std::shared_ptr<ParametricGaussian1D> prior_size = nullptr,
74 std::shared_ptr<ParametricGaussian1D> prior_axrat = nullptr,
75 std::shared_ptr<ShapePriorOptions> options = nullptr);
77
78 PriorEvaluation evaluate(bool calc_jacobians = false, bool normalize_loglike = false) const override;
79
80 std::shared_ptr<ParametricGaussian1D> get_prior_size() const;
81 std::shared_ptr<ParametricGaussian1D> get_prior_axrat() const;
82
83 std::vector<double> get_loglike_const_terms() const override;
84
85 void set_prior_size(std::shared_ptr<ParametricGaussian1D> prior_size);
86 void set_prior_axrat(std::shared_ptr<ParametricGaussian1D> prior_axrat);
87
88 size_t size() const override;
89
90 std::string repr(bool name_keywords = false,
91 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR) const override;
92 std::string str() const override;
93
94private:
95 std::shared_ptr<const ParametricEllipse> _ellipse;
96 std::shared_ptr<ParametricGaussian1D> _prior_size;
97 std::shared_ptr<ParametricGaussian1D> _prior_axrat;
98 std::shared_ptr<ShapePriorOptions> _options;
99};
100} // namespace lsst::gauss2d::fit
101
102#endif
Definition prior.h:38
ShapePriorOptions(double delta_jacobian=delta_jacobian_default, double size_maj_floor=size_maj_floor_default, double axrat_floor=axrat_floor_default)
Definition shapeprior.cc:35
PriorEvaluation evaluate(bool calc_jacobians=false, bool normalize_loglike=false) const override
Definition shapeprior.cc:127
ShapePrior(std::shared_ptr< const ParametricEllipse > ellipse, std::shared_ptr< ParametricGaussian1D > prior_size=nullptr, std::shared_ptr< ParametricGaussian1D > prior_axrat=nullptr, std::shared_ptr< ShapePriorOptions > options=nullptr)
Definition shapeprior.cc:109
std::vector< double > get_loglike_const_terms() const override
Return the constant terms of the log likelihood (dependent on stddevs only)
Definition shapeprior.cc:225