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();
}