32 typedef std::pair<std::reference_wrapper<const Channel>, std::shared_ptr<ProperFractionParameterD>>
33 ChannelIntegralParameterD;
34 typedef std::vector<ChannelIntegralParameterD> Data;
36 explicit FractionalIntegralModel(
const FractionalIntegralModel&) =
delete;
37 FractionalIntegralModel& operator=(
const FractionalIntegralModel&) =
delete;
39 ~FractionalIntegralModel();
41 std::shared_ptr<ProperFractionParameterD> at(
const Channel& channel);
42 std::shared_ptr<const ProperFractionParameterD> at(
const Channel& channel)
const;
44 typename Data::iterator begin()
noexcept;
45 typename Data::const_iterator cbegin()
const noexcept;
47 typename Data::iterator end()
noexcept;
48 typename Data::const_iterator cend()
const noexcept;
57 const auto found = _registry_rev.find(model);
58 return (found == _registry_rev.end()) ? nullptr : (*found).second.lock();
61 std::vector<std::reference_wrapper<const Channel>>
get_channels()
const override;
65 const Channel& channel)
const override;
66 double get_integral_remainder(
const Channel& channel)
const;
72 bool is_final()
const;
86 static std::shared_ptr<FractionalIntegralModel>
make(std::optional<const Data> data,
87 std::shared_ptr<const IntegralModel> model,
88 bool is_final =
false);
89 static const std::shared_ptr<const FractionalIntegralModel> make_const(
90 std::optional<const Data> data, std::shared_ptr<const IntegralModel> model,
91 bool is_final =
false);
95 std::string repr(
bool name_keywords =
false,
96 std::string_view namespace_separator = Object::CC_NAMESPACE_SEPARATOR)
const override;
97 std::string str()
const override;
103 std::map<std::reference_wrapper<const Channel>, std::shared_ptr<ProperFractionParameterD>> _map = {};
106 std::shared_ptr<const FractionalIntegralModel> _find_parent(std::shared_ptr<const IntegralModel> model);
107 const std::shared_ptr<const IntegralModel> _model;
108 std::shared_ptr<const FractionalIntegralModel> _parent;
109 static inline std::map<std::reference_wrapper<const FractionalIntegralModel>,
110 std::reference_wrapper<const IntegralModel>>
112 static inline std::map<std::reference_wrapper<const IntegralModel>,
113 std::weak_ptr<FractionalIntegralModel>>
121 FractionalIntegralModel(std::optional<const Data> data, std::shared_ptr<const IntegralModel> model,
ParamCRefs & get_parameters_const(ParamCRefs ¶ms, ParamFilter *filter=nullptr) const override
Same as get_parameters(), but for const refs.
Definition fractionalintegralmodel.cc:184
std::vector< std::pair< ParamBaseCRef, ExtraParamFactorValues > > get_integral_derivative_factors(const Channel &channel) const override
Return the partial derivative of the model w.r.t. each metaparameter.
Definition fractionalintegralmodel.cc:120
static std::shared_ptr< FractionalIntegralModel > make(std::optional< const Data > data, std::shared_ptr< const IntegralModel > model, bool is_final=false)
Definition fractionalintegralmodel.cc:230