TVirtualFitter *fitter1, *fitter2; //<===NEW void DoubleFit() { double xs[]={1,2,3}; double ys[]={1,0,2}; fitter1 = new TFitter(25); //<===NEW fitter2 = new TFitter(25); //<===NEW TVirtualFitter::SetFitter(fitter1); //<===NEW TGraph mygraph(3,xs,ys); TF1 myfunc("myfunc","x*[1]+[0]"); TF1 myfunc2("myfunc2","fitfunction(x)*[1]+[0]"); mygraph.Fit("myfunc"); cout<<"\nOk to me!\n\n"; mygraph.Fit("myfunc2"); cout<<"\nReally?\n"; } double fitfunction(double myy) { double xs2[]={1,2,3}; double ys2[]={0,myy,0}; TGraph mygraph2(3,xs2,ys2); TVirtualFitter::SetFitter(fitter2); //set new fitter mygraph2.Fit("gaus","Q"); TVirtualFitter::SetFitter(fitter1); //set old fitter return mygraph2.GetFunction("gaus")->GetParameter(0); }