1#ifndef LSST_GAUSS2D_FIT_GSLSERSICMIXINTERPOLATOR_H
2#define LSST_GAUSS2D_FIT_GSLSERSICMIXINTERPOLATOR_H
4#ifdef LSST_GAUSS2D_FIT_HAS_GSL
9#include "gslinterpolator.h"
12#include <gsl/gsl_errno.h>
13#include <gsl/gsl_spline.h>
15namespace lsst::gauss2d::fit {
22 explicit GSLSersicMixInterpolator(
unsigned short order = SERSICMIX_ORDER_DEFAULT,
23 InterpType interp_type = INTERPTYPE_DEFAULT);
24 ~GSLSersicMixInterpolator();
26 bool correct_final_integral =
true;
27 static constexpr InterpType INTERPTYPE_DEFAULT = InterpType::cspline;
29 const std::vector<SersicMixValues>& get_knots()
const;
33 double get_final_correction()
const;
35 std::vector<IntegralSize> get_integralsizes(
double sersicindex)
const override;
36 std::vector<IntegralSize> get_integralsizes_derivs(
double sersicindex)
const override;
38 InterpType get_interptype()
const override;
39 unsigned short get_order()
const override;
41 double get_sersicindex_min()
const;
42 double get_sersicindex_max()
const;
44 std::string repr(
bool name_keywords =
false,
45 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR)
const override;
46 std::string str()
const override;
51 mutable double _final_correction = 1.;
52 const InterpType _interp_type;
53 const unsigned short _order;
54 std::vector<std::pair<std::unique_ptr<GSLInterpolator>, std::unique_ptr<GSLInterpolator>>> _interps;
55 const std::vector<SersicMixValues>& _knots;
56 const double _sersicindex_min;
57 const double _sersicindex_max;
Definition sersicmix.h:34