lsst.gauss2d.fit g199a45376c+5e234f8357
 
Loading...
Searching...
No Matches
sersicmix.h
1#ifndef LSST_GAUSS2D_FIT_SERSICMIX_H
2#define LSST_GAUSS2D_FIT_SERSICMIX_H
3
4#include <array>
5#include <memory>
6#include <stdexcept>
7#include <vector>
8
9#include "interpolation.h"
10#include "lsst/gauss2d/object.h"
11
12namespace lsst::gauss2d::fit {
13
14static const unsigned short SERSICMIX_ORDER_DEFAULT = 4;
15
19class IntegralSize : public Object {
20public:
21 explicit IntegralSize(double integral_, double sigma_);
22
23 const double integral;
24 const double sigma;
25
26 std::string repr(bool name_keywords = false,
27 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR) const override;
28 std::string str() const override;
29};
30
34class SersicMixInterpolator : public Object {
35public:
42 virtual std::vector<IntegralSize> get_integralsizes(double sersicindex) const = 0;
43 virtual std::vector<IntegralSize> get_integralsizes_derivs(double sersicindex) const = 0;
44
45 virtual InterpType get_interptype() const = 0;
46 virtual unsigned short get_order() const = 0;
47};
48
49const std::shared_ptr<const SersicMixInterpolator> get_sersic_mix_interpolator_default(
50 unsigned short order = SERSICMIX_ORDER_DEFAULT);
51
55class SersicMixValues : public Object {
56public:
63 explicit SersicMixValues(double sersicindex, std::vector<IntegralSize> values);
64
65 const double sersicindex;
66 const std::vector<IntegralSize> values;
67
68 std::string repr(bool name_keywords = false,
69 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR) const override;
70 std::string str() const override;
71};
72
73inline bool operator<(const SersicMixValues &lhs, const SersicMixValues &rhs) {
74 return lhs.sersicindex < rhs.sersicindex;
75}
76inline bool operator<(const SersicMixValues &lhs, double x) { return lhs.sersicindex < x; }
77inline bool operator<(double x, const SersicMixValues &rhs) { return x < rhs.sersicindex; }
78
79std::vector<SersicMixValues> get_sersic_mix_knots_copy(unsigned short order);
80
81const std::vector<SersicMixValues> &get_sersic_mix_knots(unsigned short order);
82
83const std::vector<SersicMixValues> &get_sersic_mix_knots_order4();
84const std::vector<SersicMixValues> &get_sersic_mix_knots_order8();
85
86} // namespace lsst::gauss2d::fit
87
88#endif
virtual std::vector< IntegralSize > get_integralsizes(double sersicindex) const =0
Definition sersicmix.h:55
SersicMixValues(double sersicindex, std::vector< IntegralSize > values)
Definition sersicmix.cc:47