const Int_t N = 20; Int_t theN = 1; Double_t x[N]; Double_t y[N]; double mean = 1.0; double sig = 0.2; void ml_add_data() { TF1* f = new TF1( "f", loglike, 0, 2, 1 ); f->SetParameter( 0, sig ); f->Draw(); f->SetTitle( "-ln(L) for Gaussian" ); f->GetXaxis()->SetTitle( "x" ); f->GetYaxis()->SetTitle( "-ln(L)" ); Double_t xmin = f->GetMinimumX(); Double_t ymin = f->GetMinimum(); for( Int_t i = 0; i < N; ++i ) { x[i] = gRandom->Gaus( mean, sig ); theN = i+1; f->Draw(); TGraph* g = new TGraph( N, x, y ); g->SetMarkerStyle( 20 ); g->SetMarkerSize( 1.0 ); g->Draw( "p" ); gPad->Update(); char bla[80]; getline(cin,bla); } return; } Double_t loglike( Double_t* input, Double_t* par ) { Double_t mymean = input[0]; Double_t mysig = par[0]; Double_t val = theN * log( sqrt( 2*TMath::Pi() ) * mysig ); for( UInt_t i = 0; i < theN; ++i ) { Double_t arg = ( x[i] - mymean ) / mysig; val += 0.5*arg*arg; } return val; }