// // descrizione del metodo TGraph:Fit (trattazoine degli errori / parametri / opzioni) in // http://root.cern.ch/root/html/TGraph.html#TGraph:Fit // // piu` in generale come effettuare fit a histogrammi o grafici a punti in // How to Fit Histograms or Data Points => http://root.cern.ch/root/HowtoFit.html // // Double_t myfunction(Double_t *x, Double_t *par) { //cout<<" par "<SetFillColor(0); c1->SetGrid(); c1->GetFrame()->SetFillColor(21); c1->GetFrame()->SetBorderSize(12); gStyle->SetOptFit(1111); Int_t n = 10; Float_t x[10] = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95}; Float_t y[10] = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1}; Float_t ex[10] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05}; Float_t ey[10] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8}; gr = new TGraphErrors(n,x,y,ex,ey); gr->SetTitle("Fit of a Graph - Example"); gr->SetMarkerColor(4); gr->SetMarkerStyle(21); gr->GetXaxis()->SetTitle("my x variable"); gr->GetYaxis()->SetTitle("my Y variable"); //produce il grafico gr->Draw("AP"); c1->Update(); //interrompe l'esecuzione della macro //c1->WaitPrimitive(); // l'esecuzione riprende se si clicca sul canvas e si schiaccia un tasto qualunque della tastiera // produce il grafico e disegna una linea che congiunge i punti gr->Draw("APC"); c1->Update(); //fit del grafico con una funzione predefinita (polinomile di iv grado) gr->Fit("pol4"); c1->Update(); //interrompe l'esecuzione della macro c1->WaitPrimitive(); // l'esecuzione riprende se si clicca sul canvas e si schiaccia un tasto qualunque della tastiera // definiamo una nostra funzione entro il rande definito da lowerLimit e upperLimit Double_t lowerLimit = -0.3; Double_t upperLimit = 1.; // la funzione myfunction e` denominate "f1" - ha 4 parametri - e` definita entro i limiti fissati TF1 *f1 = new TF1("f1",myfunction,lowerLimit,upperLimit,4); // fissiamo i valori (iniziali) dei parametri f1->SetParameter(0,100.); f1->SetParameter(1,1.02); f1->SetParameter(2,0.2); f1->SetParameter(3,2.); f1->SetLineColor(kRed); // plottiamo il grafico gr->Draw("AP"); //fitta entro il range (opzione "R") specificato nella definizione della funzione gr->Fit("f1","R"); }