Mit der ROOT Klasse TGraphErrors kann man Wertepaare mit Fehlern darstellen und Fitten:
double xv[5] = { 1., 2., 3., 4., 5. }; double yv[5] = { 2.8, 3.7, 5.4, 6.1, 8.0 }; double ey[5] = { 0.5, 0.5, 0.5, 0.5, 0.5 }; double ex[5] = { 0.01, 0.01, 0.01, 0.01, 0.01 }; TGraphErrors *tg = new TGraphErrors( 5, xv, yv, ex, ey ); tg->Draw("AP");
Fitten anschliessend interaktiv
Python Version:
import ROOT # from array import array nit = 5 xv = array('d',[ 1., 2., 3., 4., 5. ]) yv = array('d',[ 2.8, 3.7, 5.4, 6.1, 8.0 ]) ey = array('d',[ 0.5, 0.5, 0.5, 0.5, 0.5 ]) ex = array('d',[0.01, 0.01, 0.01, 0.01, 0.01 ]) # TGraphErrors needs arrays not just Python lists tg = ROOT.TGraphErrors( len(xv), xv, yv, ex, ey ) tg.Draw("AP") tg.Fit('pol1')
Fitparameter, Fehler und Kovarianz kann man nach dem Fit über die ROOT Fitter Klasse TVirtualFitter abrufen:
TVirtualFitter *ft = TVirtualFitter::GetFitter(); // get fit parameter + error cout << ft->GetParameter(0) << " +- " << ft->GetParError(0) << endl; cout << ft->GetParameter(1) << " +- " << ft->GetParError(1) << endl; // get covariance cout << ft->GetCovarianceMatrixElement(0,1) << endl;