lsst.gauss2d.fit g199a45376c+3b7b3fd841
 
Loading...
Searching...
No Matches
parameters.h
1//
2// Created by dtaranu on 4/8/21.
3//
4
5#ifndef LSST_GAUSS2D_FIT_PARAMETERS_H
6#define LSST_GAUSS2D_FIT_PARAMETERS_H
7
8#include <cfloat>
9#include <iostream>
10
11#include "lsst/modelfit/parameters.h"
12
13namespace parameters = lsst::modelfit::parameters;
14
15namespace lsst::gauss2d::fit {
16
17class UnitNone : public parameters::Unit {
18public:
19 std::string get_name() const override {
20 static const std::string name_none = "None";
21 return name_none;
22 }
23};
24
25static const UnitNone unit_none{};
26
29 virtual double get_size() const = 0;
30 virtual void set_size(double size) = 0;
31
32 virtual ~SizeParameterD() = default;
33};
34
36 virtual ~SizeXParameterD() = default;
37};
38
40 virtual ~SizeYParameterD() = default;
41};
42
43template <typename T>
44using Param = parameters::Parameter<double, T>;
45
46struct CentroidXParameterD : public Param<CentroidXParameterD> {
47 static inline const std::string _desc = "Centroid (x)";
48 static inline const std::string _name = "cen_x";
49 using Param<CentroidXParameterD>::Parameter;
50};
51
52struct CentroidYParameterD : public Param<CentroidYParameterD> {
53 static inline const std::string _desc = "Centroid (y)";
54 static inline const std::string _name = "cen_y";
55 using Param<CentroidYParameterD>::Parameter;
56};
57
58struct IntegralParameterD : public Param<IntegralParameterD> {
59public:
60 static inline const bool _linear = true;
61 static inline constexpr double _min = 0.;
62 static inline const std::string _desc = "Gaussian integral (total integrated weight/flux)";
63 static inline const std::string _name = "integral";
64 using Param<IntegralParameterD>::Parameter;
65};
66
67struct MeanParameterD : public Param<MeanParameterD> {
68 static inline const std::string _desc = "Gaussian (1D normal) mean";
69 static inline const std::string _name = "mean";
70 using Param<MeanParameterD>::Parameter;
71};
72
73struct MoffatConcentrationParameterD : public Param<MoffatConcentrationParameterD> {
74 static inline constexpr double _min = 1.;
75 static inline constexpr double _default = 2.5;
76 static inline const std::string _desc = "Moffat concentration (beta)";
77 static inline const std::string _name = "con_moffat";
78 using Param<MoffatConcentrationParameterD>::Parameter;
79};
80
81struct ProperFractionParameterD : public Param<ProperFractionParameterD> {
82public:
83 static inline constexpr double _min = 0.;
84 static inline constexpr double _max = 1.;
85 static inline const std::string _desc = "Proper fraction (0 <= x <= 1)";
86 static inline const std::string _name = "proper_fraction";
87 using Param<ProperFractionParameterD>::Parameter;
88};
89
91struct RadiusScaleParameterD : public Param<RadiusScaleParameterD> {
92 static inline constexpr double _min = 0.;
93 static inline constexpr double _default = 1.;
94 static inline const std::string _desc = "Scale radius";
95 static inline const std::string _name = "r_scale";
96 using Param<RadiusScaleParameterD>::Parameter;
97};
98
99struct ReffXParameterD : public Param<ReffXParameterD>, SizeXParameterD {
100 double get_size() const override { return this->get_value(); }
101 void set_size(double size) override { this->set_value(size); }
102
103 static inline constexpr double _min = 0.;
104 static inline const std::string _desc = "Sersic effective radius (x)";
105 static inline const std::string _name = "reff_x";
106 using Param<ReffXParameterD>::Parameter;
107};
108
109struct ReffYParameterD : public Param<ReffYParameterD>, SizeYParameterD {
110 double get_size() const override { return this->get_value(); }
111 void set_size(double size) override { this->set_value(size); }
112
113 static inline constexpr double _min = 0.;
114 static inline const std::string _desc = "Sersic effective radius (y)";
115 static inline const std::string _name = "reff_y";
116 using Param<ReffYParameterD>::Parameter;
117};
118
119struct RhoParameterD : public Param<RhoParameterD> {
120 static inline constexpr double _min = -1.;
121 static inline constexpr double _default = 0.;
122 static inline constexpr double _max = 1.;
123 static inline const std::string _desc = "Gaussian correlation (rho)";
124 static inline const std::string _name = "rho";
125 using Param<RhoParameterD>::Parameter;
126};
127
128struct SersicIndexParameterD : public Param<SersicIndexParameterD> {
129 static inline constexpr double _min = 0.;
130 static inline constexpr double _default = 0.5;
131 static inline const std::string _desc = "Sersic index";
132 static inline const std::string _name = "n_ser";
133 using Param<SersicIndexParameterD>::Parameter;
134};
135
136struct SigmaXParameterD : public Param<SigmaXParameterD>, SizeXParameterD {
137 double get_size() const override { return this->get_value(); }
138 void set_size(double size) override { this->set_value(size); }
139
140 static inline constexpr double _min = 0.;
141 static inline const std::string _desc = "Gaussian sigma (x)";
142 static inline const std::string _name = "sigma_x";
143 using Param<SigmaXParameterD>::Parameter;
144};
145
146struct SigmaYParameterD : public Param<SigmaYParameterD>, SizeYParameterD {
147 double get_size() const override { return this->get_value(); }
148 void set_size(double size) override { this->set_value(size); }
149
150 static inline constexpr double _min = 0.;
151 static inline const std::string _desc = "Gaussian sigma (y)";
152 static inline const std::string _name = "sigma_y";
153 using Param<SigmaYParameterD>::Parameter;
154};
155
156struct StdDevParameterD : public Param<StdDevParameterD> {
157 static inline constexpr double _min = 0.;
158 static inline constexpr double _default = 1.0;
159 static inline const std::string _desc = "Gaussian (1D normal) standard deviation (sigma)";
160 static inline const std::string _name = "stddev";
161 using Param<StdDevParameterD>::Parameter;
162};
163
164} // namespace lsst::gauss2d::fit
165
166#endif // LSST_GAUSS2D_FIT_PARAMETERS_H
Definition parameters.h:17
Definition parameters.h:46
Definition parameters.h:52
Definition parameters.h:58
Definition parameters.h:67
A generic scale radius, for profiles without specific names like "effective radius".
Definition parameters.h:91
Definition parameters.h:99
Definition parameters.h:109
Definition parameters.h:119
Definition parameters.h:136
Definition parameters.h:146
A Parameter representing a size (i.e. a physical length)
Definition parameters.h:28
Definition parameters.h:35
Definition parameters.h:39
Definition parameters.h:156