Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
cumulative.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_hist
3 /// \notebook -js
4 /// Illustrate use of the TH1::GetCumulative method.
5 ///
6 /// \macro_image
7 /// \macro_code
8 ///
9 /// \author M. Schiller
10 
11 #include <cassert>
12 #include <cmath>
13 
14 #include "TH1.h"
15 #include "TH1D.h"
16 #include "TCanvas.h"
17 #include "TRandom.h"
18 
19 TCanvas *cumulative()
20 {
21  TH1* h = new TH1D("h", "h", 100, -5., 5.);
22  gRandom->SetSeed();
23  h->FillRandom("gaus", 1u << 16);
24  // get the cumulative of h
25  TH1* hc = h->GetCumulative();
26  // check that c has the "right" contents
27  Double_t* integral = h->GetIntegral();
28  for (Int_t i = 1; i <= hc->GetNbinsX(); ++i) {
29  assert(std::abs(integral[i] * h->GetEntries() - hc->GetBinContent(i)) < 1e-7);
30  }
31  // draw histogram together with its cumulative distribution
32  TCanvas* c = new TCanvas;
33  c->Divide(1,2);
34  c->cd(1);
35  h->Draw();
36  c->cd(2);
37  hc->Draw();
38  c->Update();
39 
40  return c;
41 }