Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
macro6.C
Go to the documentation of this file.
1// Divide and add 1D Histograms
2
3void format_h(TH1F* h, int linecolor){
4 h->SetLineWidth(3);
5 h->SetLineColor(linecolor);
6 }
7
8void macro6(){
9
10 auto sig_h=new TH1F("sig_h","Signal Histo",50,0,10);
11 auto gaus_h1=new TH1F("gaus_h1","Gauss Histo 1",30,0,10);
12 auto gaus_h2=new TH1F("gaus_h2","Gauss Histo 2",30,0,10);
13 auto bkg_h=new TH1F("exp_h","Exponential Histo",50,0,10);
14
15 // simulate the measurements
16 TRandom3 rndgen;
17 for (int imeas=0;imeas<4000;imeas++){
18 bkg_h->Fill(rndgen.Exp(4));
19 if (imeas%4==0) gaus_h1->Fill(rndgen.Gaus(5,2));
20 if (imeas%4==0) gaus_h2->Fill(rndgen.Gaus(5,2));
21 if (imeas%10==0)sig_h->Fill(rndgen.Gaus(5,.5));}
22
23 // Format Histograms
24 int i=0;
25 for (auto hist : {sig_h,bkg_h,gaus_h1,gaus_h2})
26 format_h(hist,1+i++);
27
28 // Sum
29 auto sum_h= new TH1F(*bkg_h);
30 sum_h->Add(sig_h,1.);
31 sum_h->SetTitle("Exponential + Gaussian;X variable;Y variable");
32 format_h(sum_h,kBlue);
33
34 auto c_sum= new TCanvas();
35 sum_h->Draw("hist");
36 bkg_h->Draw("SameHist");
37 sig_h->Draw("SameHist");
38
39 // Divide
40 auto dividend=new TH1F(*gaus_h1);
41 dividend->Divide(gaus_h2);
42
43 // Graphical Maquillage
44 dividend->SetTitle(";X axis;Gaus Histo 1 / Gaus Histo 2");
45 format_h(dividend,kOrange);
46 gaus_h1->SetTitle(";;Gaus Histo 1 and Gaus Histo 2");
47 gStyle->SetOptStat(0);
48
49 TCanvas* c_divide= new TCanvas();
50 c_divide->Divide(1,2,0,0);
51 c_divide->cd(1);
52 c_divide->GetPad(1)->SetRightMargin(.01);
53 gaus_h1->DrawNormalized("Hist");
54 gaus_h2->DrawNormalized("HistSame");
55
56 c_divide->cd(2);
57 dividend->GetYaxis()->SetRangeUser(0,2.49);
58 c_divide->GetPad(2)->SetGridy();
59 c_divide->GetPad(2)->SetRightMargin(.01);
60 dividend->Draw();
61}
#define h(i)
Definition RSha256.hxx:106
@ kOrange
Definition Rtypes.h:68
@ kBlue
Definition Rtypes.h:67
externTStyle * gStyle
Definition TStyle.h:442
TH1I * hist
Definition webwindow.cxx:23
virtual void SetRightMargin(Float_t rightmargin)
Set Pad right margin in fraction of the pad width.
Definition TAttPad.cxx:118
The Canvas class.
Definition TCanvas.h:23
TVirtualPad * cd(Int_t subpadnumber=0) override
Set current canvas & pad.
Definition TCanvas.cxx:716
1-D histogram with a float per channel (see TH1 documentation)
Definition TH1.h:878
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
Automatic pad generation by division.
Definition TPad.cxx:1295
TVirtualPad * GetPad(Int_t subpadnumber) const override
Get a pointer to subpadnumber of this pad.
Definition TPad.cxx:3027
Random number generator class based on M.
Definition TRandom3.h:27
virtual Double_t Gaus(Double_t mean=0, Double_t sigma=1)
Samples a random number from the standard Normal (Gaussian) Distribution with the given mean and sigm...
Definition TRandom.cxx:274
virtual Double_t Exp(Double_t tau)
Returns an exponential deviate.
Definition TRandom.cxx:251
virtual void SetGridy(Int_t value=1)=0
void macro6()
Definition macro6.C:8
void format_h(TH1F *h, int linecolor)
Definition macro6.C:3