16 void CanvasPartition(TCanvas *C,
const Int_t Nx = 2,
const Int_t Ny = 2,
17 Float_t lMargin = 0.15, Float_t rMargin = 0.05,
18 Float_t bMargin = 0.15, Float_t tMargin = 0.05);
23 gStyle->SetOptStat(0);
25 TCanvas *C = (TCanvas*) gROOT->FindObject(
"C");
27 C =
new TCanvas(
"C",
"canvas",1024,640);
28 C->SetFillStyle(4000);
35 Float_t lMargin = 0.12;
36 Float_t rMargin = 0.05;
37 Float_t bMargin = 0.15;
38 Float_t tMargin = 0.05;
41 CanvasPartition(C,Nx,Ny,lMargin,rMargin,bMargin,tMargin);
44 TH1F *h = (TH1F*) gROOT->FindObject(
"histo");
46 h =
new TH1F(
"histo",
"",100,-5.0,5.0);
47 h->FillRandom(
"gaus",10000);
48 h->GetXaxis()->SetTitle(
"x axis");
49 h->GetYaxis()->SetTitle(
"y axis");
53 for (Int_t i=0;i<Nx;i++) {
54 for (Int_t j=0;j<Ny;j++) {
59 sprintf(pname,
"pad_%i_%i",i,j);
60 pad[i][j] = (TPad*) gROOT->FindObject(pname);
62 pad[i][j]->SetFillStyle(4000);
63 pad[i][j]->SetFrameFillStyle(4000);
67 Float_t xFactor = pad[0][0]->GetAbsWNDC()/pad[i][j]->GetAbsWNDC();
68 Float_t yFactor = pad[0][0]->GetAbsHNDC()/pad[i][j]->GetAbsHNDC();
71 sprintf(hname,
"h_%i_%i",i,j);
72 TH1F *hFrame = (TH1F*) h->Clone(hname);
77 hFrame->GetYaxis()->SetRangeUser(0.0001,1.2*h->GetMaximum());
80 hFrame->GetYaxis()->SetLabelFont(43);
81 hFrame->GetYaxis()->SetLabelSize(16);
82 hFrame->GetYaxis()->SetLabelOffset(0.02);
83 hFrame->GetYaxis()->SetTitleFont(43);
84 hFrame->GetYaxis()->SetTitleSize(16);
85 hFrame->GetYaxis()->SetTitleOffset(5);
87 hFrame->GetYaxis()->CenterTitle();
88 hFrame->GetYaxis()->SetNdivisions(505);
91 hFrame->GetYaxis()->SetTickLength(xFactor*0.04/yFactor);
94 hFrame->GetXaxis()->SetLabelFont(43);
95 hFrame->GetXaxis()->SetLabelSize(16);
96 hFrame->GetXaxis()->SetLabelOffset(0.02);
97 hFrame->GetXaxis()->SetTitleFont(43);
98 hFrame->GetXaxis()->SetTitleSize(16);
99 hFrame->GetXaxis()->SetTitleOffset(5);
100 hFrame->GetXaxis()->CenterTitle();
101 hFrame->GetXaxis()->SetNdivisions(505);
104 hFrame->GetXaxis()->SetTickLength(yFactor*0.06/xFactor);
114 void CanvasPartition(TCanvas *C,
const Int_t Nx,
const Int_t Ny,
115 Float_t lMargin, Float_t rMargin,
116 Float_t bMargin, Float_t tMargin)
121 Float_t vSpacing = 0.0;
122 Float_t vStep = (1.- bMargin - tMargin - (Ny-1) * vSpacing) / Ny;
124 Float_t hSpacing = 0.0;
125 Float_t hStep = (1.- lMargin - rMargin - (Nx-1) * hSpacing) / Nx;
127 Float_t vposd,vposu,vmard,vmaru,vfactor;
128 Float_t hposl,hposr,hmarl,hmarr,hfactor;
130 for (Int_t i=0;i<Nx;i++) {
134 hposr = lMargin + hStep;
135 hfactor = hposr-hposl;
136 hmarl = lMargin / hfactor;
138 }
else if (i == Nx-1) {
139 hposl = hposr + hSpacing;
140 hposr = hposl + hStep + rMargin;
141 hfactor = hposr-hposl;
143 hmarr = rMargin / (hposr-hposl);
145 hposl = hposr + hSpacing;
146 hposr = hposl + hStep;
147 hfactor = hposr-hposl;
152 for (Int_t j=0;j<Ny;j++) {
156 vposu = bMargin + vStep;
157 vfactor = vposu-vposd;
158 vmard = bMargin / vfactor;
160 }
else if (j == Ny-1) {
161 vposd = vposu + vSpacing;
162 vposu = vposd + vStep + tMargin;
163 vfactor = vposu-vposd;
165 vmaru = tMargin / (vposu-vposd);
167 vposd = vposu + vSpacing;
168 vposu = vposd + vStep;
169 vfactor = vposu-vposd;
177 sprintf(name,
"pad_%i_%i",i,j);
178 TPad *pad = (TPad*) gROOT->FindObject(name);
180 pad =
new TPad(name,
"",hposl,vposd,hposr,vposu);
181 pad->SetLeftMargin(hmarl);
182 pad->SetRightMargin(hmarr);
183 pad->SetBottomMargin(vmard);
184 pad->SetTopMargin(vmaru);
186 pad->SetFrameBorderMode(0);
187 pad->SetBorderMode(0);
188 pad->SetBorderSize(0);