#include "Math/Integrator.h" #include "Math/WrappedFunction.h" class MyClass{ public: MyClass(){}; ~MyClass(){}; double func(const double* x){ for(UInt_t i=0; i < 3; i++){ std::cout << " x[" << i << "] = " << x[i]; } std::cout << std::endl; return x[0]+x[1]+x[2]; } typedef double (MyClass::*ForWrapper)(const double *x) ; }; void integration(){ MyClass* myclass = new MyClass(); // double dim=3; ROOT::Math::WrappedMemMultiFunction func(*myclass, &MyClass::func, 3); //ROOT::Math::IntegratorOneDim integrator(ROOT::Math::IntegrationOneDim::kADAPTIVE,1.E-6,1E-4,1000, 0, Integration::GKRule::kGAUS21); ROOT::Math::IntegratorOneDim integrator(ROOT::Math::IntegrationOneDim::kADAPTIVE); double par1 = 2.; double par2 = -1.; double params[3] = {0.,par1,par2}; integrator.SetFunction(func,0,params); // integrate over 0-coordinate?? Double_t value = integrator.Integral(-1,1.); /// integral should be equal to 2 std::cout << "Integral=" << value << " (should be equal to 2); par1=" << par1 << " par2=" << par2 << std::endl; };