double uni( double* x, double* par ) { double val = x[0]; double a = par[0]; double b = par[1]; if( val < a || val > b ) return 0; else return ( 1./(b-a) ); } void uniform_exponential() { TF1* funi1 = new TF1( "funi1", uni, -1, 10, 2); funi1->SetParameters( 1, 2 ); funi1->SetNpx( 1000 ); funi1->Draw(); funi1->SetTitle( "Uniform PDF: x #in [1,2]" ); funi1->GetXaxis()->SetTitle( "x" ); funi1->GetYaxis()->SetTitle( "f(x;a,b)" ); funi1->SetMaximum( 1.1 ); gPad->SaveAs( "uniform1.pdf" ); TF1* funi2 = new TF1( "funi2", uni, -1, 10, 2); funi2->SetParameters( 0, 7 ); funi2->SetNpx( 1000 ); funi2->Draw(); funi2->SetTitle( "Uniform PDF: x #in [0,7]" ); funi2->GetXaxis()->SetTitle( "x" ); funi2->GetYaxis()->SetTitle( "f(x;a,b)" ); funi2->SetMaximum( 1.1 ); gPad->SaveAs( "uniform2.pdf" ); TF1* fexp1 = new TF1( "fexp1", "[0]*TMath::Exp(-[0]*x)", 0, 10 ); fexp1->SetParameter( 0, 1 ); fexp1->SetNpx( 1000 ); fexp1->Draw(); fexp1->SetTitle( "Exponential PDF: #lambda = 1.0" ); fexp1->GetXaxis()->SetTitle( "x" ); fexp1->GetYaxis()->SetTitle( "f(x;#lambda)" ); // fexp1->SetMaximum( 1.1 ); gPad->SaveAs( "expo1.pdf" ); TF1* fexp2 = new TF1( "fexp2", "[0]*TMath::Exp(-[0]*x)", 0, 10 ); fexp2->SetParameter( 0, 0.2 ); fexp2->SetNpx( 1000 ); fexp2->Draw(); fexp2->SetTitle( "Exponential PDF: #lambda = 0.2" ); fexp2->GetXaxis()->SetTitle( "x" ); fexp2->GetYaxis()->SetTitle( "f(x;#lambda)" ); // fexp1->SetMaximum( 1.1 ); gPad->SaveAs( "expo2.pdf" ); }