1#ifndef LSST_GAUSS2D_FIT_SERSICMIX_H
2#define LSST_GAUSS2D_FIT_SERSICMIX_H
9#include "interpolation.h"
10#include "lsst/gauss2d/object.h"
12namespace lsst::gauss2d::fit {
14static const unsigned short SERSICMIX_ORDER_DEFAULT = 4;
19class IntegralSize :
public Object {
21 explicit IntegralSize(
double integral_,
double sigma_);
23 const double integral;
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;
43 virtual std::vector<IntegralSize> get_integralsizes_derivs(
double sersicindex)
const = 0;
45 virtual InterpType get_interptype()
const = 0;
46 virtual unsigned short get_order()
const = 0;
49const std::shared_ptr<const SersicMixInterpolator> get_sersic_mix_interpolator_default(
50 unsigned short order = SERSICMIX_ORDER_DEFAULT);
63 explicit SersicMixValues(
double sersicindex, std::vector<IntegralSize> values);
65 const double sersicindex;
66 const std::vector<IntegralSize> values;
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;
74 return lhs.sersicindex < rhs.sersicindex;
76inline bool operator<(
const SersicMixValues &lhs,
double x) {
return lhs.sersicindex < x; }
77inline bool operator<(
double x,
const SersicMixValues &rhs) {
return x < rhs.sersicindex; }
79std::vector<SersicMixValues> get_sersic_mix_knots_copy(
unsigned short order);
81const std::vector<SersicMixValues> &get_sersic_mix_knots(
unsigned short order);
83const std::vector<SersicMixValues> &get_sersic_mix_knots_order4();
84const std::vector<SersicMixValues> &get_sersic_mix_knots_order8();
Definition sersicmix.h:34
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