PDFxTMDLib  1.0.0
IInterpolator.h
Go to the documentation of this file.
1 #pragma once
5 
6 namespace PDFxTMD
7 {
8 template <typename Derived, typename Reader, typename... InterpolateArgs>
9 class IInterpolator : public CRTPBase<Derived>
10 {
11  public:
12  void initialize(const IReader<Reader> *reader)
13  {
14  this->derived().initialize(reader);
15  }
16 
17  double interpolate(PartonFlavor flavor, InterpolateArgs... args) const
18  {
19  return this->derived().interpolate(flavor, args...);
20  }
21  void interpolate(InterpolateArgs... args, std::array<double, DEFAULT_TOTAL_PDFS> &output) const
22  {
23  return this->derived().interpolate(args..., output);
24  }
25  const IReader<Reader> *getReader() const
26  {
27  return this->derived().getReader();
28  }
29 };
30 template <typename Reader, typename Derived>
31 class IcPDFInterpolator : public IInterpolator<Derived, Reader, X_T, MU_T>
32 {
33 };
34 
35 template <typename Reader, typename Derived>
36 class ITMDInterpolator : public IInterpolator<Derived, Reader, X_T, KT_T, MU_T>
37 {
38 };
39 } // namespace PDFxTMD
Definition: InterfaceUtils.h:11
constexpr Derived & derived() noexcept
Definition: InterfaceUtils.h:13
Definition: IInterpolator.h:10
void interpolate(InterpolateArgs... args, std::array< double, DEFAULT_TOTAL_PDFS > &output) const
Definition: IInterpolator.h:21
double interpolate(PartonFlavor flavor, InterpolateArgs... args) const
Definition: IInterpolator.h:17
const IReader< Reader > * getReader() const
Definition: IInterpolator.h:25
void initialize(const IReader< Reader > *reader)
Definition: IInterpolator.h:12
Definition: IInterpolator.h:37
Definition: IInterpolator.h:32
Definition: AllFlavorsShape.h:14
PartonFlavor
Definition: PartonUtils.h:58