Loading [MathJax]/extensions/tex2jax.js
Logo ROOT  
Reference Guide
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
testSmooth.C File Reference

Detailed Description

View in nbviewer Open in SWAN Histogram smoothing.

int ipad = 1;
TCanvas * c1 = 0;
void smooth_hist(const char * fname, double xmin, double xmax, int n1, int n2) {
std::cout << "smoothing a " << fname << " histogram" << std::endl;
TH1D * h1 = new TH1D("h1","h1",100,xmin,xmax);
TH1D * h2 = new TH1D("h2","h2",100,xmin,xmax);
h1->FillRandom(fname,n1);
TH1D * h1_s = new TH1D(*h1);
h1_s->SetName("h1_s");
h1_s->Smooth();
h2->FillRandom(fname,n2);
double p1 = h1->Chi2Test(h2,"");
double p2 = h1_s->Chi2Test(h2,"UU");
if (p2 < p1) Error("testSmooth","TH1::Smooth is not working correctly - a worst chi2 is obtained");
std::cout << " chi2 test non-smoothed histo " << p1 << std::endl;
std::cout << " chi2 test smoothed histo " << p2 << std::endl;
double a1 = h1->AndersonDarlingTest(h2);
double a2 = h1_s->AndersonDarlingTest(h2);
std::cout << " AD test non-smoothed histo " << a1 << std::endl;
std::cout << " AD test smoothed histo " << a2 << std::endl;
double k1 = h1->KolmogorovTest(h2);
double k2 = h1_s->KolmogorovTest(h2);
std::cout << " KS test non-smoothed histo " << k1 << std::endl;
std::cout << " KS test smoothed histo " << k2 << std::endl;
c1->cd(ipad++);
h1->Draw("E");
h1_s->Draw("same");
h2->Scale(double(n1)/n2);
h2->Draw("same");
}
void testSmooth(int n1 = 1000, int n2 = 1000000) {
c1 = new TCanvas();
c1->Divide(1,3);
smooth_hist("gaus",-5,5,n1,n2);
smooth_hist("landau",-5,15,n1,n2);
smooth_hist("expo",-5,0,n1,n2);
}
@ kRed
Definition: Rtypes.h:64
@ kGreen
Definition: Rtypes.h:64
void Error(const char *location, const char *msgfmt,...)
float xmin
Definition: THbookFile.cxx:93
float xmax
Definition: THbookFile.cxx:93
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:40
The Canvas class.
Definition: TCanvas.h:27
1-D histogram with a double per channel (see TH1 documentation)}
Definition: TH1.h:614
virtual void Smooth(Int_t ntimes=1, Option_t *option="")
Smooth bin contents of this histogram.
Definition: TH1.cxx:6512
virtual void FillRandom(const char *fname, Int_t ntimes=5000)
Fill histogram following distribution in function fname.
Definition: TH1.cxx:3445
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
Definition: TH1.cxx:1226
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=0) const
test for comparing weighted and unweighted histograms
Definition: TH1.cxx:1950
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Definition: TH1.cxx:2998
virtual Double_t AndersonDarlingTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using the Anderson-Darling ...
Definition: TH1.cxx:7570
virtual void SetName(const char *name)
Change the name of this histogram.
Definition: TH1.cxx:8416
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
Definition: TH1.cxx:6246
virtual Double_t KolmogorovTest(const TH1 *h2, Option_t *option="") const
Statistical test of compatibility in shape between this histogram and h2, using Kolmogorov test.
Definition: TH1.cxx:7684
return c1
Definition: legend1.C:41
TH1F * h1
Definition: legend1.C:5
Author
Rene Brun

Definition in file testSmooth.C.