void macro7() { // carica un grafico da file di testo //TGraph *g1 = new TGraph("R1.dat"); int Nfit=1000; TH2F *h2 = new TH2F("h2","correlation plot",200,-20,20,200,95,105); for (int ifit=0; ifit<Nfit; ifit++) { TGraph *g1 = new TGraph(10); for (int i=0; i<10; i++) { double xx = i*10; double yy = 100*xx; yy += gRandom->Gaus(0,5); g1->SetPoint(i,xx,yy); } g1->SetName("g1"); g1->SetMarkerStyle(20); g1->SetMarkerColor(4); g1->SetLineColor(2); g1->GetXaxis()->SetTitle("Intensita' [mA]"); g1->GetYaxis()->SetTitle("Tensione [mV]"); //g1->Draw("apl"); // crea la funzione (retta) per il fit TF1 *f1 = new TF1("f1","[0]+x*[1]",0,100); // esegue il fit con f1 nel range specificato in f1 (da 0 a 50) g1->Fit(f1,"RNQ"); // recupera i parametri double a0 = f1->GetParameter(0); double a1 = f1->GetParameter(1); // recupera le deviazioni std. double ea0 = f1->GetParError(0); double ea1 = f1->GetParError(1); //printf("a0 = %f +- %f \n",a0,ea0); //printf("a1 = %f +- %f \n",a1,ea1); // recupera gli elementi della matrice di covarianza TVirtualFitter *vf = TVirtualFitter::GetFitter(); double cm01 = vf->GetCovarianceMatrixElement(0,1); double cm00 = vf->GetCovarianceMatrixElement(0,0); double cm11 = vf->GetCovarianceMatrixElement(1,1); // calcola il coeff. di correlazione tra i parametri double rho = cm01/TMath::Sqrt(cm00)/TMath::Sqrt(cm11); //printf("correl. factor = %f \n",rho); h2->Fill(a0,a1); delete g1; delete f1; } h2->Draw(); }