Logo ROOT   6.10/09
Reference Guide
transpad.C
Go to the documentation of this file.
1 /// \file
2 /// \ingroup tutorial_hist
3 /// \notebook
4 /// Example of a canvas showing two histograms with different scales.
5 /// The second histogram is drawn in a transparent pad
6 ///
7 /// \macro_image
8 /// \macro_code
9 ///
10 /// \author Rene Brun
11 
12 void transpad() {
13  TCanvas *c1 = new TCanvas("c1","transparent pad",200,10,700,500);
14  TPad *pad1 = new TPad("pad1","",0,0,1,1);
15  TPad *pad2 = new TPad("pad2","",0,0,1,1);
16  pad2->SetFillStyle(4000); //will be transparent
17  pad1->Draw();
18  pad1->cd();
19 
20  TH1F *h1 = new TH1F("h1","h1",100,-3,3);
21  TH1F *h2 = new TH1F("h2","h2",100,-3,3);
22  TRandom r;
23  for (Int_t i=0;i<100000;i++) {
24  Double_t x1 = r.Gaus(-1,0.5);
25  Double_t x2 = r.Gaus(1,1.5);
26  if (i <1000) h1->Fill(x1);
27  h2->Fill(x2);
28  }
29  h1->Draw();
30  pad1->Update(); //this will force the generation of the "stats" box
31  TPaveStats *ps1 = (TPaveStats*)h1->GetListOfFunctions()->FindObject("stats");
32  ps1->SetX1NDC(0.4); ps1->SetX2NDC(0.6);
33  pad1->Modified();
34  c1->cd();
35 
36  //compute the pad range with suitable margins
37  Double_t ymin = 0;
38  Double_t ymax = 2000;
39  Double_t dy = (ymax-ymin)/0.8; //10 per cent margins top and bottom
40  Double_t xmin = -3;
41  Double_t xmax = 3;
42  Double_t dx = (xmax-xmin)/0.8; //10 per cent margins left and right
43  pad2->Range(xmin-0.1*dx,ymin-0.1*dy,xmax+0.1*dx,ymax+0.1*dy);
44  pad2->Draw();
45  pad2->cd();
46  h2->SetLineColor(kRed);
47  h2->Draw("][sames");
48  pad2->Update();
49  TPaveStats *ps2 = (TPaveStats*)h2->GetListOfFunctions()->FindObject("stats");
50  ps2->SetX1NDC(0.65); ps2->SetX2NDC(0.85);
51  ps2->SetTextColor(kRed);
52 
53  // draw axis on the right side of the pad
54  TGaxis *axis = new TGaxis(xmax,ymin,xmax,ymax,ymin,ymax,50510,"+L");
55  axis->SetLabelColor(kRed);
56  axis->Draw();
57 }
58 
59 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition: TH1.cxx:3126
float xmin
Definition: THbookFile.cxx:93
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:235
virtual void SetX2NDC(Double_t x2)
Definition: TPave.h:76
return c1
Definition: legend1.C:41
Definition: Rtypes.h:56
float ymin
Definition: THbookFile.cxx:93
THist< 1, float, THistStatContent, THistStatUncertainty > TH1F
Definition: THist.hxx:311
TVirtualPad * cd(Int_t subpadnumber=0)
Set current canvas & pad.
Definition: TCanvas.cxx:679
tomato 1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:551
virtual void Update()
Update pad.
Definition: TPad.cxx:2786
int Int_t
Definition: RtypesCore.h:41
virtual void Draw(Option_t *option="")
Default Draw method for all objects.
Definition: TObject.cxx:202
The histogram statistics painter class.
Definition: TPaveStats.h:18
virtual TObject * FindObject(const char *name) const
Find an object in this list using its name.
Definition: TList.cxx:501
TVirtualPad * cd(Int_t subpadnumber=0)
Set Current pad.
Definition: TPad.cxx:565
static const double x2[5]
This is the base class for the ROOT Random number generators.
Definition: TRandom.h:27
TH1F * h1
Definition: legend1.C:5
virtual void Draw(Option_t *option="")
Draw Pad in Current pad (re-parent pad if necessary).
Definition: TPad.cxx:1254
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:40
float ymax
Definition: THbookFile.cxx:93
TRandom2 r(17)
virtual void Draw(Option_t *option="")
Draw this histogram with options.
Definition: TH1.cxx:2851
virtual void Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Set world coordinate system for the pad.
Definition: TPad.cxx:5085
virtual void SetX1NDC(Double_t x1)
Definition: TPave.h:75
The most important graphics class in the ROOT system.
Definition: TPad.h:29
The axis painter class.
Definition: TGaxis.h:24
float xmax
Definition: THbookFile.cxx:93
The Canvas class.
Definition: TCanvas.h:31
static const double x1[5]
double Double_t
Definition: RtypesCore.h:55
virtual void SetFillStyle(Style_t fstyle)
Override TAttFill::FillStyle for TPad because we want to handle style=0 as style 4000.
Definition: TPad.cxx:5754
void SetLabelColor(Int_t labelcolor)
Definition: TGaxis.h:105
virtual void SetTextColor(Color_t tcolor=1)
Set the text color.
Definition: TAttText.h:43
TList * GetListOfFunctions() const
Definition: TH1.h:224
void Modified(Bool_t flag=1)
Definition: TPad.h:410