#include "TCanvas.h" #include "TApplication.h" #include "TH1F.h" #include "TF1.h" #include "linearFit.C" #include #include using namespace std; int main (int argc, char**argv) { TApplication app("App",&argc, argv); double x; fstream f; TH1F h1("h1","Istogramma 1D",100,-10.,10.); f.open("h1.dat",ios::in); for (int i = 0; i < 10000; i++) { f >> x; h1.Fill(x); } TCanvas c1("c1","Gauss",600,400); h1.Draw(); // ***************************************** // Fit con somma di due funzioni predefinite // ***************************************** TF1 somma("somma","gaus(0)+gaus(3)",-10.,10.); h1.Fit("somma"); // Il fit non converge! ==> TF1 g1("g1","gaus",-10.,10.); TF1 g2("g2","gaus",-10.,10.); double parg1[3], parg2[3]; h1.Fit("g1","","",0.,10.); // Fit della prima gaussiana h1.Fit("g2","","",-8.,0.); // Fit della seconda gaussiana g1.GetParameters(parg1); // Recupero dei parameteri g2.GetParameters(parg2); somma.SetParameters(parg1[0],parg1[1],parg1[2],parg2[0],parg2[1],parg2[2]); h1.Fit("somma"); // Il fit converge! cout << "Chi2 = " << somma.GetChisquare() << endl; app.Run(); return 0; }