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

Detailed Description

Fill multiple histograms with different functions and automatic binning.

Illustrates merging with the power-of-two autobin algorithm

OBJ: TStatistic min Mean = -0.17821 +- 0.1063 RMS = 0.33603 Count = 10 Min = -0.6426 Max = 0.3576
OBJ: TStatistic max Mean = 6.1344 +- 0.1326 RMS = 0.4193 Count = 10 Min = 5.6349 Max = 6.893
OBJ: TStatistic dif Mean = 6.3127 +- 0.2045 RMS = 0.6466 Count = 10 Min = 5.6956 Max = 7.5356
OBJ: TStatistic mean Mean = 2.9992 +- 0.008902 RMS = 0.02815 Count = 10 Min = 2.955 Max = 3.0383
OBJ: TStatistic rms Mean = 1.0028 +- 0.004049 RMS = 0.012805 Count = 10 Min = 0.98101 Max = 1.0251
ent: 10010
TH1.Print Name = myh0, Entries= 10010, Total sum= 10005
TH1.Print Name = myhref, Entries= 10010, Total sum= 9993
#include "TF1.h"
#include "TH1D.h"
#include "TMath.h"
#include "TF1.h"
#include "TCanvas.h"
#include "TRandom3.h"
#include "TStatistic.h"
#include "TFile.h"
#include "TStyle.h"
TF1 *gam = new TF1("gam", "1/(1+0.1*x*0.1*x)", -100., 100.);
TF1 *gam1 = new TF1("gam", "1/(1+0.1*x*0.1*x)", -1., .25);
TF1 *iga = new TF1("inv gam", "1.-1/(1+0.1*x*0.1*x)", -100., 100.);
TF1 *iga1 = new TF1("inv gam", "1.-1/(1+0.1*x*0.1*x)", -.5, 1.);
void fillhistosauto2p(unsigned opt = 1, unsigned n = 1001)
{
UInt_t nh = 10;
UInt_t bsize = 1000;
TRandom3 rndm((Long64_t)time(0));
// Standard autobinning reference
auto href = new TH1D("myhref", "current", 50, 0., -1.);
href->SetBuffer(bsize);
// New autobinning 1-histo reference
auto href2 = new TH1D("myhref", "Auto P2, sequential", 50, 0., -1.);
href2->SetBit(TH1::kAutoBinPTwo);
href2->SetBuffer(bsize);
TList *hlist = new TList;
Int_t nbins = 50;
TStatistic x("min"), y("max"), d("dif"), a("mean"), r("rms");
for (UInt_t j = 0; j < nh; ++j) {
Double_t xmi = 1e15, xma = -1e15;
TStatistic xw("work");
TString hname = TString::Format("myh%d", j);
auto hw = new TH1D(hname.Data(), "Auto P2, merged", nbins, 0., -1.);
hw->SetBit(TH1::kAutoBinPTwo);
hw->SetBuffer(bsize);
Double_t xhma, xhmi, ovf, unf;
Bool_t emptied = kFALSE, tofill = kTRUE;
Bool_t buffering = kTRUE;
for (UInt_t i = 0; i < n; ++i) {
switch (opt) {
case 1: xx = rndm.Gaus(3, 1); break;
case 2: xx = rndm.Rndm() * 100. - 50.; break;
case 3: xx = gam->GetRandom(); break;
case 4: xx = gam1->GetRandom(); break;
case 5: xx = iga->GetRandom(); break;
case 6: xx = iga1->GetRandom(); break;
default: xx = rndm.Gaus(0, 1);
}
if (buffering) {
if (xx > xma)
xma = xx;
if (xx < xmi)
xmi = xx;
xw.Fill(xx);
}
hw->Fill(xx);
href->Fill(xx);
href2->Fill(xx);
if (!hw->GetBuffer()) {
// Not buffering anymore
buffering = kFALSE;
}
}
x.Fill(xmi);
y.Fill(xma);
d.Fill(xma - xmi);
a.Fill(xw.GetMean());
r.Fill(xw.GetRMS());
hlist->Add(hw);
}
x.Print();
y.Print();
d.Print();
a.Print();
r.Print();
TH1D *h0 = (TH1D *)hlist->First();
hlist->Remove(h0);
if (!h0->Merge(hlist))
return;
gStyle->SetOptStat(111110);
if (gROOT->GetListOfCanvases()->FindObject("c3"))
delete gROOT->GetListOfCanvases()->FindObject("c3");
TCanvas *c3 = new TCanvas("c3", "c3", 800, 800);
c3->Divide(1, 3);
c3->cd(1);
h0->DrawClone("HIST");
c3->cd(2);
href2->StatOverflows();
href2->DrawClone();
c3->cd(3);
href->StatOverflows();
href->DrawClone();
c3->Update();
std::cout << " ent: " << h0->GetEntries() << "\n";
h0->Print();
href->Print();
hlist->SetOwner(kTRUE);
delete hlist;
delete href;
delete href2;
delete h0;
}
ROOT::R::TRInterface & r
Definition Object.C:4
#define d(i)
Definition RSha256.hxx:102
#define a(i)
Definition RSha256.hxx:99
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
const Bool_t kFALSE
Definition RtypesCore.h:92
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:73
const Bool_t kTRUE
Definition RtypesCore.h:91
#define gROOT
Definition TROOT.h:406
R__EXTERN TStyle * gStyle
Definition TStyle.h:412
The Canvas class.
Definition TCanvas.h:23
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
1-Dim function class
Definition TF1.h:213
virtual Double_t GetRandom(TRandom *rng=nullptr, Option_t *opt=nullptr)
Return a random number following this function shape.
Definition TF1.cxx:2180
1-D histogram with a double per channel (see TH1 documentation)}
Definition TH1.h:618
virtual void Print(Option_t *option="") const
Print some global quantities for this histogram.
Definition TH1.cxx:6975
static void StatOverflows(Bool_t flag=kTRUE)
if flag=kTRUE, underflows and overflows are used by the Fill functions in the computation of statisti...
Definition TH1.cxx:6891
@ kAutoBinPTwo
Use Power(2)-based algorithm for autobinning.
Definition TH1.h:173
virtual Double_t GetEntries() const
Return the current number of entries.
Definition TH1.cxx:4386
virtual Long64_t Merge(TCollection *list)
Definition TH1.h:341
A doubly linked list.
Definition TList.h:44
virtual void Add(TObject *obj)
Definition TList.h:87
virtual TObject * Remove(TObject *obj)
Remove object from the list.
Definition TList.cxx:822
virtual TObject * First() const
Return the first object in the list. Returns 0 when list is empty.
Definition TList.cxx:659
virtual TObject * DrawClone(Option_t *option="") const
Draw a clone of this object in the current selected pad for instance with: gROOT->SetSelectedPad(gPad...
Definition TObject.cxx:221
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
Definition TObject.cxx:552
Random number generator class based on M.
Definition TRandom3.h:27
Statistical variable, defined by its mean and variance (RMS).
Definition TStatistic.h:33
Basic string class.
Definition TString.h:136
const char * Data() const
Definition TString.h:369
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Definition TString.cxx:2331
void SetOptStat(Int_t stat=1)
The type of information printed in the histogram statistics box can be selected via the parameter mod...
Definition TStyle.cxx:1589
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
const Int_t n
Definition legend1.C:16
return c3
Definition legend3.C:15
Date
November 2017
Author
Gerardo Ganis

Definition in file fillhistosauto2p.C.