{ // Valori veri dei parametri double f0=0.5; double phase=0.6; double V0=1.; // parametri dell'oscilloscopio double tstep=0.1; double npunti=100; double t0=0.0; double sigma=0.05; TRandom gen(0); // numero di esperimenti nexp=100; // istogramma dei risultati TH1F isto("frequenze","frequanze fittate",100,0.4,0.6); // funzione di fit TF1 *sinusoide = new TF1("sinusoide","[0]*cos(2*3.1415292*[1]*x+[2])",0.,10.); // simulazione double *x=new double[npunti]; double *y=new double[npunti]; for (int j=0; jSetParameter(0,2.0); // Per questo fit i valori iniziali sinusoide->SetParameter(1,0.7); // sono molto importanti,se non sinusoide->SetParameter(2,0.5); // convergesse, provate a metterne altri g.Fit(sinusoide); if (j==1) g.DrawClone("AL"); // disegna il grafico solo per il primo esperimento // riempi l'istogramma delle frequenze determinate double freq=sinusoide->GetParameter(1); isto.Fill(freq); } // alla fine dei 100 esperimenti, stampa valor medio ed rms delle 100 misure cout << "La frequenza ricostruita e' " << isto.GetMean() << ", con R.M.S. " << isto.GetRMS() << endl; }