31 #ifndef ROOT_Math_GSLMultiFitFunctionWrapper
32 #define ROOT_Math_GSLMultiFitFunctionWrapper
34 #include "gsl/gsl_multifit.h"
46 typedef double ( * GSLMultiFitFPointer ) (
const gsl_vector *,
void *, gsl_vector *);
47 typedef void ( * GSLMultiFitDfPointer ) (
const gsl_vector *,
void *, gsl_matrix *);
48 typedef void ( * GSLMultiFitFdfPointer ) (
const gsl_vector *,
void *, gsl_vector *, gsl_matrix *);
58 class GSLMultiFitFunctionWrapper {
62 GSLMultiFitFunctionWrapper()
70 #if GSL_MAJOR_VERSION > 1
78 template<
class FuncVector>
79 void SetFunction(
const FuncVector & f,
unsigned int nres,
unsigned int npar ) {
82 fFunc.f = &GSLMultiFitFunctionAdapter<FuncVector >::F;
83 fFunc.df = &GSLMultiFitFunctionAdapter<FuncVector >::Df;
84 fFunc.fdf = &GSLMultiFitFunctionAdapter<FuncVector >::FDf;
87 fFunc.params =
const_cast<void *
>(p);
90 gsl_multifit_function_fdf * GetFunc() {
return &fFunc; }
95 gsl_multifit_function_fdf fFunc;