lhapdf is hosted by Hepforge, IPPP Durham
LHAPDF  6.5.4
Extrapolator.h
1 // -*- C++ -*-
2 //
3 // This file is part of LHAPDF
4 // Copyright (C) 2012-2023 The LHAPDF collaboration (see AUTHORS for details)
5 //
6 #pragma once
7 #ifndef LHAPDF_Extrapolator_H
8 #define LHAPDF_Extrapolator_H
9 
10 #include "LHAPDF/Utils.h"
11 
12 namespace LHAPDF {
13 
14 
15  // Forward declaration
16  class GridPDF;
17 
18 
20  class Extrapolator {
21  public:
22 
24  virtual ~Extrapolator() { }
25 
26 
29 
31  void bind(const GridPDF* pdf) { _pdf = pdf; }
32 
34  void unbind() { _pdf = 0; }
35 
37  bool hasPDF() { return _pdf != 0; }
38 
40  const GridPDF& pdf() const { return *_pdf; }
41 
43 
44 
47 
54  double extrapolateXQ(int id, double x, double q) const {
55  return extrapolateXQ2(id, x, q*q );
56  }
57 
64  virtual double extrapolateXQ2(int id, double x, double q2) const = 0;
65 
66 
68 
70 
71 
72  private:
73 
74  const GridPDF* _pdf;
75 
76  };
77 
78 
79 }
80 #endif
bool hasPDF()
Identify whether this Extrapolator has an associated PDF.
Definition: Extrapolator.h:37
const GridPDF & pdf() const
Get the associated GridPDF.
Definition: Extrapolator.h:40
A PDF defined via an interpolation grid.
Definition: GridPDF.h:19
void unbind()
Unbind from GridPDF.
Definition: Extrapolator.h:34
double extrapolateXQ(int id, double x, double q) const
Definition: Extrapolator.h:54
const GridPDF * _pdf
Definition: Extrapolator.h:74
void bind(const GridPDF *pdf)
Bind to a GridPDF.
Definition: Extrapolator.h:31
virtual double extrapolateXQ2(int id, double x, double q2) const =0
virtual ~Extrapolator()
Destructor to allow inheritance.
Definition: Extrapolator.h:24
The general interface for extrapolating beyond grid boundaries.
Definition: Extrapolator.h:20