void landau() { const double MAX = 10; TF1* flandau = new TF1( "flandau", "TMath::Landau(x,2,1,0)", 0, MAX ); TH1* h2 = new TH1F( "hlandau", "Truncated Landau PDF", 1000, 0, MAX ); const int N = 1000000; double x[ N ]; for( int i = 0; i < N ; ++i ) { double rnd = gRandom->Landau( 2, 1 ); if( rnd > MAX ) continue; x[i] = rnd; h2->Fill( rnd ); } h2->Scale( 100./N ); h2->SetMinimum( 0 ); h2->SetMaximum( 0.2 ); h2->Draw(); flandau->Draw( "same" ); TLine* l = new TLine(); double median = TMath::Median( N, x ); double mean = h2->GetMean(); double mode = flandau->GetMaximumX(); l->DrawLine( median, 0, median, 0.2 ); l->DrawLine( mean, 0, mean, 0.2 ); l->DrawLine( mode, 0, mode, 0.2 ); gPad->SaveAs( "landau.pdf" ); }