PDFxTMDLib 2.0.0
Loading...
Searching...
No Matches
IInterpolator.h
Go to the documentation of this file.
1#pragma once
2#include "PDFxTMDLib/Common/InterfaceUtils.h"
3#include "PDFxTMDLib/Common/PartonUtils.h"
5
6namespace PDFxTMD
7{
8template <typename Derived, typename Reader, typename... InterpolateArgs>
9class IInterpolator : public CRTPBase<Derived>
10{
11 public:
13 void initialize(const IReader<Reader> *reader)
14 {
15 this->derived().initialize(reader);
16 }
18 template <typename... Flavors>
19 double interpolate(Flavors &&...flavors, InterpolateArgs &&...args) const
20 {
21 return this->derived().interpolate(std::forward<Flavors>(flavors)...,
22 std::forward<Flavors>(args)...);
23 }
26 {
27 return this->derived().getReader();
28 }
29};
30
31} // namespace PDFxTMD
Definition IInterpolator.h:10
const IReader< Reader > * getReader() const
Return the reader used by the concrete interpolator.
Definition IInterpolator.h:25
double interpolate(Flavors &&...flavors, InterpolateArgs &&...args) const
Forward an interpolation request to the concrete interpolator.
Definition IInterpolator.h:19
void initialize(const IReader< Reader > *reader)
Initialize the concrete interpolator with its data reader.
Definition IInterpolator.h:13
Definition IReader.h:11
Definition Factory.h:9