PDFxTMDLib  1.0.0
IExtrapolator.h
Go to the documentation of this file.
1 #pragma once
4 #include <array>
5 
6 namespace PDFxTMD
7 {
8 template <typename Derived, typename... ExtrapolateArgs>
9 class IExtrapolator : public CRTPBase<Derived>
10 {
11  public:
12  double extrapolate(PartonFlavor parton, ExtrapolateArgs... args) const
13  {
14  return this->derived().extrapolate(parton, args...);
15  }
16  double extrapolate(ExtrapolateArgs... args,
17  std::array<double, DEFAULT_TOTAL_PDFS> &output) const
18  {
19  return this->derived().extrapolate(args..., output);
20  }
21 };
22 
23 template <typename Derived, typename... ExtrapolateArgs>
24 class IAdvancedExtrapolator : public IExtrapolator<Derived, ExtrapolateArgs...>
25 {
26  protected:
27  template <typename InterpolatorType> void setInterpolator(const InterpolatorType *interpolator)
28  {
29  this->derived().setInterpolator(interpolator);
30  }
31 };
32 
33 template <typename Derived> class IcPDFExtrapolator : public IExtrapolator<Derived, X_T, MU_T>
34 {
35 };
36 
37 template <typename Derived>
38 class IcAdvancedPDFExtrapolator : public IAdvancedExtrapolator<Derived, X_T, MU_T>
39 {
40 };
41 
42 template <typename Derived> class ITMDExtrapolator : public IExtrapolator<Derived, X_T, KT_T, MU_T>
43 {
44 };
45 
46 template <typename Derived>
47 class ITMDAdvancedTMDExtrapolator : public IAdvancedExtrapolator<Derived, X_T, KT_T, MU_T>
48 {
49 };
50 
51 } // namespace PDFxTMD
Definition: InterfaceUtils.h:11
constexpr Derived & derived() noexcept
Definition: InterfaceUtils.h:13
Definition: IExtrapolator.h:25
void setInterpolator(const InterpolatorType *interpolator)
Definition: IExtrapolator.h:27
Definition: IExtrapolator.h:10
double extrapolate(ExtrapolateArgs... args, std::array< double, DEFAULT_TOTAL_PDFS > &output) const
Definition: IExtrapolator.h:16
double extrapolate(PartonFlavor parton, ExtrapolateArgs... args) const
Definition: IExtrapolator.h:12
Definition: IExtrapolator.h:48
Definition: IExtrapolator.h:43
Definition: IExtrapolator.h:39
Definition: IExtrapolator.h:34
Definition: AllFlavorsShape.h:14
PartonFlavor
Definition: PartonUtils.h:58