10 #ifndef ROOT_Minuit2_FCNGradAdapter
11 #define ROOT_Minuit2_FCNGradAdapter
35 template<
class Function>
36 class FCNGradAdapter :
public FCNGradientBase {
40 FCNGradAdapter(
const Function & f,
double up = 1.) :
43 fGrad(std::vector<double>(fFunc.NDim() ) )
50 double operator()(
const std::vector<double>& v)
const {
51 return fFunc.operator()(&v[0]);
53 double operator()(
const double * v)
const {
54 return fFunc.operator()(v);
57 double Up()
const {
return fUp;}
59 std::vector<double> Gradient(
const std::vector<double>& v)
const {
60 fFunc.Gradient(&v[0], &fGrad[0]);
63 std::cout <<
" gradient in FCNAdapter = { " ;
64 for (
unsigned int i = 0; i < fGrad.size(); ++i)
65 std::cout << fGrad[i] <<
"\t";
66 std::cout <<
"}" << std::endl;
72 bool CheckGradient()
const {
return false; }
75 const Function & fFunc;
77 mutable std::vector<double> fGrad;
86 #endif //ROOT_Minuit2_FCNGradAdapter