/*  randomDistributions.cxx

    Using a Random class (see random.h), plots the results of 
    popular random number generators.

    Aug 2008
*/

#include <cstdlib>
#include "random.h"

void randomDistributions(){

   int n = 20000;
   Random r;

// The canvas
   TCanvas *c1  = new TCanvas("c1","Popular random distributions",10,10,600,500);

// The histograms
   TH1D *h1 = new TH1D("h1","Flat distribution        ",50, 0.0, 1.0);
   TH1D *h2 = new TH1D("h2","Gauss distribution       ",50,-5.0, 5.0);
   TH1D *h3 = new TH1D("h3","Exponential distribution ",50, 0.0, 10.);
   TH1D *h4 = new TH1D("h4","Breit-Wigner distribution",50,-5.0, 5.0);
   TH1D *h5 = new TH1D("h5","Integer distribution     ",8 ,-0.5, 7.5);

   h1->SetMinimum(0);
   h2->SetMinimum(0);
   h3->SetMinimum(0);
   h4->SetMinimum(0);
   h5->SetMinimum(0);

// Fill the histograms
   for(int i=0; i<n; i++)
   {
     h1->Fill( r.Flat() );
     h2->Fill( r.Gauss() );
     h3->Fill( r.Exponential(2.0) );
     h4->Fill( r.BreitWigner() );
     h5->Fill( r.Integer(1,6) );
   }

// Draw the histogram now
   h1->Draw();
   //h2->Draw();
   //h3->Draw();
   //h4->Draw();
   //h5->Draw();
}