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.43722 +- 0.0792 RMS = 0.25046 Count = 10 Min = -1.0386 Max = -0.09452
OBJ: TStatistic max Mean = 6.351 +- 0.1181 RMS = 0.37338 Count = 10 Min = 5.8127 Max = 6.9971
OBJ: TStatistic dif Mean = 6.7882 +- 0.1624 RMS = 0.5136 Count = 10 Min = 5.9324 Max = 7.6007
OBJ: TStatistic mean Mean = 3.0047 +- 0.009987 RMS = 0.031582 Count = 10 Min = 2.9589 Max = 3.0571
OBJ: TStatistic rms Mean = 1.0076 +- 0.005473 RMS = 0.017306 Count = 10 Min = 0.98675 Max = 1.0367
ent: 10010
TH1.Print Name = myh0, Entries= 10010, Total sum= 10007
TH1.Print Name = myhref, Entries= 10010, Total sum= 10009
#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->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");
auto hw = new TH1D(hname.Data(), "Auto P2, merged", nbins, 0., -1.);
hw->SetBuffer(bsize);
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
}
}
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->StatOverflows();
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;
}
#define d(i)
Definition RSha256.hxx:102
#define a(i)
Definition RSha256.hxx:99
bool Bool_t
Definition RtypesCore.h:63
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:80
constexpr Bool_t kTRUE
Definition RtypesCore.h:100
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
#define gROOT
Definition TROOT.h:406
R__EXTERN TStyle * gStyle
Definition TStyle.h:433
The Canvas class.
Definition TCanvas.h:23
1-Dim function class
Definition TF1.h:233
1-D histogram with a double per channel (see TH1 documentation)
Definition TH1.h:669
@ kAutoBinPTwo
different than 1.
Definition TH1.h:174
A doubly linked list.
Definition TList.h:38
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:139
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:2378
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:1636
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.