PDFxTMDLib 2.0.0
Loading...
Searching...
No Matches
IExtrapolator.h
Go to the documentation of this file.
1#pragma once
4#include <array>
5
6namespace PDFxTMD
7{
8template <typename Derived, typename... ExtrapolateArgs>
9class IExtrapolator : public CRTPBase<Derived>
10{
11 public:
13 template <typename... Flavors>
14 double extrapolate(Flavors... partons, ExtrapolateArgs... args) const
15 {
16 return this->derived().extrapolate(partons..., args...);
17 }
18};
19
20template <typename Derived, typename... ExtrapolateArgs>
21class IAdvancedExtrapolator : public IExtrapolator<Derived, ExtrapolateArgs...>
22{
23 protected:
25 template <typename InterpolatorType> void setInterpolator(const InterpolatorType *interpolator)
26 {
27 this->derived().setInterpolator(interpolator);
28 }
29};
30} // namespace PDFxTMD
Definition IExtrapolator.h:22
void setInterpolator(const InterpolatorType *interpolator)
Give the concrete extrapolator access to its interpolator.
Definition IExtrapolator.h:25
Definition IExtrapolator.h:10
double extrapolate(Flavors... partons, ExtrapolateArgs... args) const
Forward an out-of-range evaluation to the concrete extrapolator.
Definition IExtrapolator.h:14
Definition Factory.h:9