1#ifndef LSST_GAUSS2D_FIT_PARAM_FILTER_H
2#define LSST_GAUSS2D_FIT_PARAM_FILTER_H
10namespace g2f = lsst::gauss2d::fit;
12namespace lsst::gauss2d::fit {
21 bool nonlinear =
true;
22 std::optional<std::reference_wrapper<const Channel>> channel = std::nullopt;
34inline void insert_param(g2f::ParamBase& param, t& params,
ParamFilter* filter =
nullptr) {
35 bool is_fixed = param.get_fixed();
36 bool is_linear = param.get_linear();
37 if ((filter ==
nullptr)
38 || (((is_fixed == filter->fixed) || (is_fixed != filter->free))
39 && ((is_linear == filter->linear) || (is_linear != filter->nonlinear)))) {
40 params.insert(params.end(), param);
47 ParamFilter* filter) {
48 if ((filter ==
nullptr) || (filter->channel == std::nullopt) || (filter->channel == channel)) {
49 insert_param(param, params, filter);
55inline void insert_params_ref(
const t& params_in, t& params_out,
ParamFilter* filter =
nullptr) {
56 if (filter !=
nullptr)
57 for (
auto& p : params_in) insert_param<t>(p.get(), params_out, filter);
59 for (
auto& p : params_in) params_out.push_back(p);
64inline void insert_params(
const t params_in, t& params_out,
ParamFilter* filter =
nullptr) {
65 insert_params_ref<t>(params_in, params_out, filter);
An observational channel, usually representing some range of wavelengths of light.
Definition channel.h:29
Definition param_filter.h:17