GENIEGenerator
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Interpolator2D.h
Go to the documentation of this file.
1 //____________________________________________________________________________
2 /*!
3 
4 \class genie::Interpolator2D
5 
6 \brief A 2D interpolator using the GSL spline type
7  If GSL version is not sufficient, does an inefficient version
8  using TGraph2D.
9 
10 \author Steve Dennis <s.r.dennis \at liverpool.ac.uk>
11  University of Liverpool
12 
13 \created November, 2017
14 
15 \cpright Copyright (c) 2003-2024, The GENIE Collaboration
16  For the full text of the license visit http://copyright.genie-mc.org
17 */
18 //____________________________________________________________________________
19 
20 #include <cstdlib>
21 
22 #ifndef GENIE_INTERPOLATOR2D_H_
23 #define GENIE_INTERPOLATOR2D_H_
24 
25 namespace genie {
26 
28 {
29  public:
30  Interpolator2D(const size_t & size_x, const double * grid_x,
31  const size_t & size_y, const double * grid_y,
32  const double * knots);
34 
35  double Eval (const double & x, const double & y) const;
36  double DerivX (const double & x, const double & y) const;
37  double DerivY (const double & x, const double & y) const;
38  double DerivXX (const double & x, const double & y) const;
39  double DerivXY (const double & x, const double & y) const;
40  double DerivYY (const double & x, const double & y) const;
41 
42  private:
43  // Done using PIMPL to avoid GSL vs ROOT mess in libraries
44  // Struct type declarations will be done in object code
45  struct spline2d_container ; // stores type gsl_spline2d
46  struct interp_accel_container; // stores type gsl_interp_accel
47  // And these are our actual members
51 };
52 
53 } // namespace genie
54 
55 #endif //GENIE_INTERPOLATOR2D_H_
double Eval(const double &x, const double &y) const
double DerivXY(const double &x, const double &y) const
double DerivYY(const double &x, const double &y) const
double DerivXX(const double &x, const double &y) const
spline2d_container * fSpline
Interpolator2D(const size_t &size_x, const double *grid_x, const size_t &size_y, const double *grid_y, const double *knots)
double DerivX(const double &x, const double &y) const
A 2D interpolator using the GSL spline type If GSL version is not sufficient, does an inefficient ver...
interp_accel_container * fAcc_y
interp_accel_container * fAcc_x
double DerivY(const double &x, const double &y) const