double f2(const double * x) { return x[0] + x[1]; } int mathmoreIntegrationMultidim() { const double RESULT = 1.0; const double ERRORLIMIT = 1E-3; int status = 0; ROOT::Math::Functor wf(&f2,2); double a[2] = {0,0}; double b[2] = {1,1}; ROOT::Math::IntegratorMultiDim ig(ROOT::Math::IntegrationMultiDim::kADAPTIVE); ig.SetFunction(wf); double val = ig.Integral(a,b); std::cout << "integral result is " << val << std::endl; status += std::fabs(val-RESULT) > ERRORLIMIT; ROOT::Math::IntegratorMultiDim ig2(ROOT::Math::IntegrationMultiDim::kVEGAS); ig2.SetFunction(wf); val = ig2.Integral(a,b); std::cout << "integral result is " << val << std::endl; status += std::fabs(val-RESULT) > ERRORLIMIT; ROOT::Math::IntegratorMultiDim ig3(wf,ROOT::Math::IntegrationMultiDim::kPLAIN); val = ig3.Integral(a,b); std::cout << "integral result is " << val << std::endl; status += std::fabs(val-RESULT) > ERRORLIMIT; ROOT::Math::IntegratorMultiDim ig4(wf,ROOT::Math::IntegrationMultiDim::kMISER); val = ig4.Integral(a,b); std::cout << "integral result is " << val << std::endl; status += std::fabs(val-RESULT) > ERRORLIMIT; return status; }