1 #ifndef GAUDIMATH_SPLINES_H 2 #define GAUDIMATH_SPLINES_H 1 15 #include "CLHEP/GenericFunctions/GenericFunctions.hh" 16 #include "CLHEP/GenericFunctions/Argument.hh" 17 #include "CLHEP/GenericFunctions/AbsFunction.hh" 25 #include "gsl/gsl_interp.h" 26 #include "gsl/gsl_spline.h" 31 #pragma clang diagnostic push 32 #pragma clang diagnostic ignored "-Winconsistent-missing-override" 37 namespace GaudiMathImplementation
41 void operator()(gsl_spline* p) {
if (p) gsl_spline_free(p); }
42 void operator()(gsl_interp_accel* p) {
if (p) gsl_interp_accel_free(p); }
66 (
const Data2D& data ,
74 template <
class DATAX,
class DATAY>
102 m_x.reserve(end-begin);
103 m_y.reserve(end-begin);
105 m_x.push_back( begin -> first ) ;
106 m_y.push_back( begin ->
second) ;
118 , m_type ( rhs.m_type )
126 double eval (
const double x )
const ;
128 double deriv (
const double x )
const ;
130 double deriv2 (
const double x )
const ;
132 double integ (
const double a ,
const double b )
const ;
135 void initialize ()
const ;
196 ( const Data2D& data ,
230 : m_spline( type , begin_x , end_x , begin_y )
243 template <
class DATA>
247 : m_spline( type , begin , end )
253 double operator() (
double a )
const override ;
255 double operator() (
const Argument& x )
const override ;
325 ( const Data2D& data ,
360 , m_spline( type , begin_x , end_x , begin_y )
373 template <
class DATA>
379 , m_spline( type , begin , end )
387 double operator() (
double a )
const override;
389 double operator() (
const Argument& x )
const override;
462 ( const Data2D& data ,
497 , m_spline( type , begin_x , end_x , begin_y )
510 template <
class DATA>
516 , m_spline( type , begin , end )
524 double operator() (
double a )
const override;
526 double operator() (
const Argument& x )
const override;
579 const
double low = 0 ) ;
600 ( const Data2D& data ,
602 const
double low = 0 ) ;
638 , m_spline ( type , begin_x , end_x , begin_y )
653 template <
class DATA>
659 : m_spline ( type , std::forward<DATA>(
begin) , std::forward<DATA>(
end) )
664 const double low = 0 ) ;
669 double operator() (
double a )
const override;
671 double operator() (
const Argument& x )
const override;
695 #pragma clang diagnostic pop 698 #endif // GAUDIMATH_SPLINES_H SplineBase(const SplineBase &rhs)
copy constructor
const SplineBase & spline() const
acess to the spline function
unsigned int dimensionality() const override
SplineBase::Data2D Data2D
SplineBase::Data2D Data2D
const SplineBase & spline() const
acess to the spline function
SplineBase::Data1D Data1D
const SplineBase & spline() const
acess to the spline function
SplineBase::Data2D Data2D
Genfun::GaudiMathImplementation::NumericalDerivative Derivative
auto begin(reverse_wrapper< T > &w)
PropertyMgr & operator=(const PropertyMgr &)=delete
unsigned int dimensionality() const override
SplineBase::Data1D Data1D
void operator()(gsl_interp_accel *p)
GSLSpline(const GaudiMath::Interpolation::Type type, DATA begin, DATA end)
templated constructor from the sequence of pairs as sequence of pairs the class TabulatedProperty can...
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
std::vector< double > Data1D
GaudiMath::Interpolation::Type m_type
transient
SplineBase & operator=(const SplineBase &rhs)
assignment
auto end(reverse_wrapper< T > &w)
std::vector< double > m_y
SplineBase::Data1D Data1D
SplineBase::Data2D Data2D
unsigned int dimensionality() const override
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
SplineBase::Data1D Data1D
T back_inserter(T...args)
bool hasAnalyticDerivative() const override
Does this function have an analytic derivative?
GaudiMath.h GaudiMath/GaudiMath.h.
std::unique_ptr< gsl_interp_accel, details::gsl_deleter > m_accel
transient
const SplineBase & spline() const
acess to the spline function
void operator()(gsl_spline *p)
Type
the list of available types for ntuples
std::vector< double > m_x
unsigned int dimensionality() const override
std::vector< std::pair< double, double > > Data2D
std::unique_ptr< gsl_spline, details::gsl_deleter > m_spline