14 void smooth_hist(
const char * fname,
double xmin,
double xmax,
int n1,
int n2) {
16 std::cout <<
"smoothing a " << fname <<
" histogram" << std::endl;
18 TH1D * h1 =
new TH1D(
"h1",
"h1",100,xmin,xmax);
19 TH1D * h2 =
new TH1D(
"h2",
"h2",100,xmin,xmax);
20 h1->FillRandom(fname,n1);
22 TH1D * h1_s =
new TH1D(*h1);
23 h1_s->SetName(
"h1_s");
26 h2->FillRandom(fname,n2);
28 double p1 = h1->Chi2Test(h2,
"");
29 double p2 = h1_s->Chi2Test(h2,
"UU");
30 if (p2 < p1) Error(
"testSmooth",
"TH1::Smooth is not working correctly - a worst chi2 is obtained");
32 std::cout <<
" chi2 test non-smoothed histo " << p1 << std::endl;
33 std::cout <<
" chi2 test smoothed histo " << p2 << std::endl;
35 double a1 = h1->AndersonDarlingTest(h2);
36 double a2 = h1_s->AndersonDarlingTest(h2);
38 std::cout <<
" AD test non-smoothed histo " << a1 << std::endl;
39 std::cout <<
" AD test smoothed histo " << a2 << std::endl;
41 double k1 = h1->KolmogorovTest(h2);
42 double k2 = h1_s->KolmogorovTest(h2);
44 std::cout <<
" KS test non-smoothed histo " << k1 << std::endl;
45 std::cout <<
" KS test smoothed histo " << k2 << std::endl;
49 h1_s->SetLineColor(kRed);
51 h2->Scale(
double(n1)/n2);
52 h2->SetLineColor(kGreen);
56 void testSmooth(
int n1 = 1000,
int n2 = 1000000) {
58 TH1::AddDirectory(
false);
64 smooth_hist(
"gaus",-5,5,n1,n2);
65 smooth_hist(
"landau",-5,15,n1,n2);
66 smooth_hist(
"expo",-5,0,n1,n2);