#define N 10 using namespace std; int fit_utente() { double x[N], y[N]; double par[2]; fstream f, g; f.open("xval.dat",ios::in); g.open("yval.dat",ios::in); for (int i = 0; i < N; i++) { f >> x[i]; g >> y[i]; } TGraph *retta = new TGraph(N,x,y); TCanvas *c1 = new TCanvas("c1","Fit Lineare",600,400); retta->Draw("A*"); // ora proviamo a fare un fit a mano calcolando i // parametri linearFit(N,x,y,par); cout << "Ecco i parametri dopo il fit manuale :" << endl; cout << "a = " << par[0] << endl; cout << "b = " << par[1] << endl; // ora facciamo un fit con ROOT TF1 *rfit = new TF1("rfit","[0]+[1]*x",0.,10.); retta->Fit("rfit"); cout << "Ecco i parametri dopo il fit di ROOT :" << endl; cout << "a = " << rfit->GetParameter(0) << endl; cout << "b = " << rfit->GetParameter(1) << endl; cout << "Chi2 = " << rfit->GetChisquare() << endl; // il risultato e' lo stesso ma con meno fatica!! // oppure usando funzioni predefinite TCanvas *c2 = new TCanvas("c2","Fit Lineare (pol1)",600,400); retta->Draw("A*"); retta->Fit("pol1"); TF1 *fit_func = retta->GetFunction("pol1"); cout << "Ecco i parametri dopo il fit di ROOT (pol1):" << endl; cout << "a = " << fit_func->GetParameter(0) << endl; cout << "b = " << fit_func->GetParameter(1) << endl; return 0; }