double fitf2(Double_t *x, Double_t *par) { Double_t a=1/TMath::Log10(x[0]); Double_t fitval = par[0]/x[0] + par[1]/x[0]*a + par[2]/x[0]*a*a + par[3]/x[0]*a*a*a + par[4]/x[0]*a*a*a*a + par[5]/x[0]*a*a*a*a*a +par[6]/x[0]*a*a*a*a*a*a + par[7]/x[0]*a*a*a*a*a*a*a; return fitval; } void cm0(){ double *x=new double[5]{88.0336, 165.8575, 661.657, 834.848, 1115.9}; double *y=new double[5]{15.133731,13.721544, 5.089457,4.727570,3.847336}; double *erry=new double[5]{1.024484,1.219857,1.530440,0.814344,0.963188}; TGraphErrors*g = new TGraphErrors(5, x,y,0,erry); g->GetYaxis()->SetRangeUser(0.1,20); g->SetMarkerSize(2); g->SetMarkerStyle(20); g->SetMarkerColor(4); g->Draw("AP"); double point[1] = {909.15}; TF1*func= new TF1("fit", fitf2, 80,3400,8); func->SetParameters(0.0041,0.2,1,1,1,1,1,1); g->Fit("fit","R "); cout << " ========== FROM FIT ================" << endl; cout << " function value at " << point[0] << " = " << func->Eval(point[0]) << endl; //cout <Eval(909.15) <SetParameters(0.0041,0.2,1,1,1,1,1,1); TFitResultPtr r = g->Fit(func2,"R S"); double err[1]; r->GetConfidenceIntervals(1, 1, 1, point, err, 0.683, false); // 1 sigma cout << " ========== AFTER FitResultPtr ================" << endl; cout << " function value at " << point[0] << " = " << func2->Eval(point[0]) << " +/- " << err[0] << endl; cout << " function value at " << point[0] << " = " << func2->Eval(909.15) << " +/- " << err[0] << endl; }