15 auto it = std::lower_bound(cands.begin(), cands.end(), target);
16 const double upper = *it;
18 (it == cands.begin()) ? upper : *(--it);
20 if (std::fabs(target - upper) < std::fabs(target - lower))
25 template <
typename Interpolator>
32 m_interpolator = interpolator;
39 const auto *reader = m_interpolator->getReader();
45 return this->m_interpolator->interpolate(flavor, closestX, closestQ2);
48 void extrapolate(
double x,
double mu2, std::array<double, DEFAULT_TOTAL_PDFS> &output)
const
53 const auto *reader = m_interpolator->getReader();
67 const Interpolator *m_interpolator =
nullptr;
#define DEFAULT_TOTAL_PDFS
Definition: PartonUtils.h:17
Definition: AllFlavorsShape.h:14
bool isInRangeX(const Reader &reader, double x)
Definition: PDFUtils.h:6
PartonFlavor
Definition: PartonUtils.h:58
double _findClosestMatch(const std::vector< double > &cands, double target)
Definition: CNearestPointExtrapolator.h:13
constexpr std::array< PartonFlavor, DEFAULT_TOTAL_PDFS > standardPartonFlavors
Definition: PartonUtils.h:80
bool isInRangeQ2(const Reader &reader, double q2)
Definition: PDFUtils.h:11
int mu2
Definition: pdfset_tutorial.py:14