void MinFCN(int& /*npar*/, double* /*gin*/, double& f, double* par, int /*iflag*/) { double x[10] = {0, 1, 1, 2, 3, 5, 6, 8, 8.5, 9}; double y[10] = {-0.110079, 1.91072, 1.89933, 3.95169, 6.12023, 10.1611, 12.5725, 17.4555, 15.9894, 17.0093}; for (int i = 0; i < 10; ++i) { double dy = par[0] + par[1] * x[i] - y[i]; f += dy * dy; } } void doMinuit() { TMinuit* minu = new TMinuit(2); minu->SetFCN(MinFCN); minu->SetPrintLevel(-1); minu->DefineParameter(0, "Offset", 0, 0.1, -0.5, 0.5); minu->DefineParameter(1, "Slope", 1.6, 0.2, 1.5, 2.5); minu->Migrad(); }