本文整理汇总了C++中TVirtualPad::SetRightMargin方法的典型用法代码示例。如果您正苦于以下问题:C++ TVirtualPad::SetRightMargin方法的具体用法?C++ TVirtualPad::SetRightMargin怎么用?C++ TVirtualPad::SetRightMargin使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TVirtualPad
的用法示例。
在下文中一共展示了TVirtualPad::SetRightMargin方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawInPad
//#endif
void DrawInPad(TVirtualPad* p,
Int_t sub,
TH1* h,
Bool_t logy=false)
{
TVirtualPad* pp = p->cd(sub);
pp->SetRightMargin(0.02);
if (logy) pp->SetLogy();
TH1* copy = h->DrawCopy("hist");
copy->GetXaxis()->SetLabelSize(0.13);
copy->GetYaxis()->SetLabelSize(0.08);
copy->SetDirectory(0);
}
示例2: TCanvas
/**
* Draw final plot for QM2011
*
* @param max
*
* @ingroup pwglf_forward_scripts
*/
void
dndeta_final(Double_t max=6)
{
gStyle->SetOptTitle(0);
gStyle->SetOptFit(0);
gStyle->SetTitleFont(132, "xyz");
gStyle->SetTitleSize(0.1, "xyz");
gStyle->SetTitleOffset(0.4, "y");
gStyle->SetTitleOffset(0.8, "x");
gStyle->SetLabelFont(132, "xyz");
gStyle->SetLabelSize(0.08, "xyz");
gStyle->SetNdivisions(212, "x");
gStyle->SetNdivisions(208, "y");
gStyle->SetTextFont(132);
gStyle->SetPadColor(0);
gStyle->SetPadBorderMode(0);
// gStyle->SetFillColor(0);
// gStyle->SetFillStyle(0);
TCanvas* c = new TCanvas("c", "c", 900, 900);
c->SetFillColor(0);
c->SetFillStyle(0);
c->SetBorderSize(0);
c->SetBorderMode(0);
c->SetRightMargin(0.02);
c->SetTopMargin(0.02);
c->SetBottomMargin(0.15);
c->Divide(1,3,0,0);
// --- INEL --------------------------------------------------------
TVirtualPad* p = c->cd(1);
p->SetGridx();
p->SetRightMargin(.01);
THStack* inel = new THStack("inel", "INEL");
TLatex* inelT = new TLatex(1-p->GetRightMargin()-.01,
1-p->GetTopMargin()-.01,
"INEL");
inelT->SetNDC();
inelT->SetTextAlign(33);
inelT->SetTextSize(0.12);
TLegend* inelL = new TLegend(.3, .02, .8, .4);
inelL->SetBorderSize(0);
inelL->SetNColumns(2);
inelL->SetFillColor(0);
inelL->SetFillStyle(0);
TLegendEntry* e = inelL->AddEntry("d1", "Forward", "lp");
e->SetMarkerColor(kRed+2);
e->SetMarkerStyle(29);
e = inelL->AddEntry("d2", "Central", "lp");
e->SetMarkerColor(kMagenta+2);
e->SetMarkerStyle(29);
e = inelL->AddEntry("d3", "Data", "lp");
e->SetMarkerStyle(29);
e = inelL->AddEntry("d4", "Mirrored data", "lp");
e->SetMarkerStyle(30);
e = inelL->AddEntry("d5", "Systematic error", "f");
e->SetFillColor(kGray);
e->SetLineColor(kGray);
e->SetLineWidth(0);
e->SetFillStyle(3001);
gROOT->LoadMacro("export_pp_0900GeV_INEL_m10p10cm_000100000ev.C");
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inel, inelL, 20);
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inel, inelL, 21);
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inel, inelL, 22);
inel->Draw("nostack e1");
inel->GetHistogram()->SetYTitle("#frac{1}{N}#frac{dN_{ch}}{d#eta}");
inel->GetHistogram()->SetXTitle("#eta");
inel->GetHistogram()->GetYaxis()->SetDecimals();
inelL->Draw();
inelT->Draw();
// --- INEL>0 ------------------------------------------------------
p = c->cd(2);
p->SetGridx();
p->SetRightMargin(.01);
THStack* inelgt0 = new THStack("inelgt0", "INEL>0");
TLatex* inelgt0T = new TLatex(1-p->GetRightMargin()-.01,
1-p->GetTopMargin()-.01,
"INEL>0");
inelgt0T->SetNDC();
inelgt0T->SetTextAlign(33);
inelgt0T->SetTextSize(0.12);
gROOT->LoadMacro("export_pp_0900GeV_INEL_m10p10cm_000100000ev.C");
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inelgt0, 0, 20);
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inelgt0, 0, 21);
export_pp_0900GeV_INEL_m10p10cm_000100000ev(inelgt0, 0, 22);
inelgt0->Draw("nostack e1");
inelgt0->GetHistogram()->SetXTitle("#eta");
inelgt0->GetHistogram()->GetYaxis()->SetDecimals();
inelgt0T->Draw();
// --- NSD ---------------------------------------------------------
//.........这里部分代码省略.........
示例3: MakeIntegerAxis
//.........这里部分代码省略.........
// Fill into our base histogram
base->Fill(iEta, iPhi, m);
// Fill into poisson calculator
c->Fill(iEta, iPhi, m > 0, (useWeights ? m : 1));
}
}
// Calculate the result
TH2D* res = c->Result(correct);
// Now loop and compare
Double_t mBase = 0;
Double_t mPois = 0;
for (Int_t iEta = 0; iEta < nBin; iEta++) {
for (Int_t iPhi = 0; iPhi < nBin; iPhi++) {
Double_t p = res->GetBinContent(iEta, iPhi);
Double_t t = base->GetBinContent(iEta, iPhi);
mBase += t;
mPois += p;
corr->Fill(t, p);
diff->Fill(p-t);
}
}
Int_t nn = nBin * nBin;
mean->Fill(mBase / nn, mPois / nn);
}
TCanvas* cc = new TCanvas("c", "c", 900, 900);
cc->SetFillColor(0);
cc->SetFillStyle(0);
cc->SetBorderMode(0);
cc->SetRightMargin(0.02);
cc->SetTopMargin(0.02);
cc->Divide(2,2);
TVirtualPad* pp = cc->cd(1);
pp->SetFillColor(0);
pp->SetFillStyle(0);
pp->SetBorderMode(0);
pp->SetRightMargin(0.15);
pp->SetTopMargin(0.02);
pp->SetLogz();
pp->SetGridx();
pp->SetGridy();
corr->Draw();
lcorr->Draw();
pp = cc->cd(2);
pp->SetFillColor(0);
pp->SetFillStyle(0);
pp->SetBorderMode(0);
pp->SetRightMargin(0.02);
pp->SetTopMargin(0.02);
#if 0
c->GetMean()->Draw();
#elif 1
pp->SetLogy();
diff->Draw();
#elif 1
c->GetOccupancy()->Draw();
#else
pp->SetLogy();
dist->SetStats(0);
dist->Scale(1. / dist->Integral());
示例4: makeqaplot
void makeqaplot(int run=0, int plt=0, int save=0){
runnum=run;
yearday=run/1000;
if(save==0) {png=0; pdf=0;}
if(save==1) {png=1; pdf=0;}
if(save==2) {png=0; pdf=1;}
if(save==3) {png=1; pdf=1;}
c1 = new TCanvas("c1","QA",50,50,800,800);
gStyle->SetLabelSize(0.04,"xy");
//colortable();
gStyle->SetPalette(1);
gStyle->SetStatW(0.4);
char fname[50];
if(run==0) {sprintf(fname,"fgtQA.root");}
else {sprintf(fname,"%d/fgtQA_%d.root",yearday,run);}
cout << "Opening "<<fname<<endl;
file=new TFile(fname,"");
char c[50];
if(plt==0 || plt==1) {
gStyle->SetOptStat(111110);
c1->Divide(1,3);
for(int i=0; i<3; i++){
TVirtualPad* pad = c1->cd(i+1);
int log=0;
if(i>0) {log=1;}
pad->SetLogy(log);
hist0[i]=(TH1F*) file->Get(cHist[i]);
hist0[i]->SetFillColor(kBlue);
hist0[i]->Draw();
if(i==2){
float ntot = float(hist0[i]->GetEntries());
if(ntot>0.0){
int nbin = hist0[i]->GetNbinsX();
float nofgt = hist0[i]->Integral(1,1);
int bin = hist0[i]->FindBin(float(kFgtNumElecIds));
float nonzs = hist0[i]->Integral(bin-1,nbin+1);
float zs = hist0[i]->Integral(2,bin-2);
hist0[i]->GetXaxis()->SetRange(2, bin-2);
float mean = hist0[i]->GetMean() / float(kFgtNumElecIds);
char c[100];
sprintf(c,"Total %d",ntot); TText *t1 = new TText(0.3,0.8,c); t1->SetNDC(); t1->SetTextSize(0.06); t1->Draw();
sprintf(c,"NoFGT %d (%5.2f)",nofgt,nofgt/ntot); TText *t2 = new TText(0.3,0.7,c); t2->SetNDC(); t2->SetTextSize(0.06); t2->Draw();
sprintf(c,"NoneZS %d (%5.2f)",nonzs,nonzs/ntot); TText *t3 = new TText(0.3,0.6,c); t3->SetNDC(); t3->SetTextSize(0.06); t3->Draw();
sprintf(c,"ZS %d (%5.2f)",zs,zs/ntot); TText *t4 = new TText(0.3,0.5,c); t4->SetNDC(); t4->SetTextSize(0.06); t4->Draw();
sprintf(c,"Mean ZS data size/fullsize= %5.3f",mean); TText *t5 = new TText(0.3,0.4,c); t5->SetNDC(); t5->SetTextSize(0.06); t5->Draw();
if(mean>0.08) { t5->SetTextColor(2); }
else { t5->SetTextColor(4); }
}
}
}
c1->Update();
save("plot");
}
if(plt==0 || plt==2) {
c1->Clear();
gStyle->SetOptStat(0);
gStyle->SetOptTitle(0);
c1->Divide(1,3);
for(int i=3; i<6; i++){ hist0[i]=(TH1F*) file->Get(cHist[i]); }
int nevt=hist0[5]->GetEntries();
printf("Nevent=%d\n",nevt);
TVirtualPad* pad;
pad=c1->cd(1); pad->SetLogy(); pad->SetTopMargin(0.01); pad->SetRightMargin(0.01);
hist0[3]->GetXaxis()->SetLabelSize(0.07); hist0[3]->GetYaxis()->SetLabelSize(0.07);
hist0[3]->SetFillColor(kRed); hist0[3]->Scale(1/float(nevt)); hist0[3]->Draw();
TText *tx= new TText(0.87,0.0,"EleID"); tx->SetNDC(); tx->SetTextSize(0.1); tx->Draw();
TText *t3= new TText(0.05,0.1,"F3=frac in 3sig/2tb"); t3->SetNDC(); t3->SetTextSize(0.08); t3->SetTextAngle(90); t3->Draw();
pad=c1->cd(2); pad->SetLogy(); pad->SetTopMargin(0.01); pad->SetRightMargin(0.01);
hist0[4]->GetXaxis()->SetLabelSize(0.07); hist0[4]->GetYaxis()->SetLabelSize(0.07);
hist0[4]->SetFillColor(kBlue); hist0[4]->Scale(1/float(nevt)); hist0[4]->Draw();
tx->Draw();
TText *t4= new TText(0.05,0.1,"F10=frac in 10sig & >500"); t4->SetNDC(); t4->SetTextSize(0.08); t4->SetTextAngle(90); t4->Draw();
float min=-4;
int max=hist0[3]->GetNbinsX();
printf("Max=%d\n",max);
TH1F *h1 = new TH1F("ZSdataFrac","ZSdataFrac",50,min,0);
TH1F *h2 = new TH1F("10SigmaFrac","10SigmaFrac",50,min,0);
float f1[kFgtNumElecIds],f2[kFgtNumElecIds];
for(int i=0; i<max; i++){
f1[i] = log10(hist0[3]->GetBinContent(i+1)); if(f1[i]<min) {f1[i]=min;} h1->Fill(f1[i]);
f2[i] = log10(hist0[4]->GetBinContent(i+1)); if(f2[i]<min) {f2[i]=min;} h2->Fill(f2[i]);
}
pad = c1->cd(3); pad->Divide(2,1);
TVirtualPad *pad2;
pad2 = pad->cd(1);
pad2->SetLogy(); pad2->SetTopMargin(0.01); pad2->SetRightMargin(0.01);
h1->GetXaxis()->SetLabelSize(0.1); h1->GetYaxis()->SetLabelSize(0.1);
h2->GetXaxis()->SetLabelSize(0.1); h2->GetYaxis()->SetLabelSize(0.1);
h1->SetLineColor(kRed); h2->SetLineColor(kBlue);
if(h1->GetMaximum()>h2->GetMaximum()){
h1->Draw(); h2->Draw("SAME");
}else{
h2->Draw(); h1->Draw("SAME");
}
//.........这里部分代码省略.........
示例5: Error
/**
* Draw the Poisson estimate of the occupancy
*
* @param filename Input file name
* @param folder Input folder name in file
*
* @deprecated Use QATrender instead
* @ingroup pwglf_forward_scripts_qa
*/
void
DrawOccupancy(const char* filename="forward.root",
const char* folder="ForwardResults")
{
gStyle->SetPalette(1);
gStyle->SetOptFit(0);
gStyle->SetOptStat(0);
gStyle->SetOptTitle(0);
gStyle->SetTitleW(.4);
gStyle->SetTitleH(.1);
gStyle->SetTitleX(.4);
// gStyle->SetTitleY(.1);
gStyle->SetTitleColor(0);
gStyle->SetTitleStyle(0);
gStyle->SetTitleBorderSize(0);
TFile* file = TFile::Open(filename, "READ");
if (!file) {
Error("DrawOccupancy", "failed to open %s", filename);
return;
}
TList* forward = static_cast<TList*>(file->Get(folder));
if (!forward) {
Error("DrawOccupancy", "List %s not found in %s", folder, filename);
return;
}
TList* dc = static_cast<TList*>(forward->FindObject("fmdDensityCalculator"));
if (!dc) {
Error("DrawOccupancy", "List fmdDensityCalculator not found in Forward");
return;
}
TCanvas* c = new TCanvas("occupancy",
"Mean Occupancy", 900, 700);
c->SetFillColor(0);
c->SetBorderSize(0);
c->SetBorderMode(0);
c->SetHighLightColor(0);
c->SetBottomMargin(.15);
c->SetTopMargin(.02);
c->SetRightMargin(.02);
c->SetLeftMargin(.15);
c->Divide(3, 2, 0, 0);
Double_t corrs[5];
c->cd(1); corrs[0] = DrawRingOccupancy(dc, 1, 'I');
c->cd(2); corrs[1] = DrawRingOccupancy(dc, 2, 'I');
c->cd(5); corrs[2] = DrawRingOccupancy(dc, 2, 'O');
c->cd(3); corrs[3] = DrawRingOccupancy(dc, 3, 'I');
c->cd(6); corrs[4] = DrawRingOccupancy(dc, 3, 'O');
TVirtualPad* p = c->cd(4);
p->SetTopMargin(0.05);
p->SetRightMargin(0.10);
p->SetLeftMargin(0.15);
p->SetBottomMargin(0.15);
p->SetFillColor(0);
TH1D* hc = new TH1D("occ", "Mean occupancy", 5, .5, 5.5);
hc->SetFillColor(kRed+1);
hc->SetFillStyle(3001);
hc->SetMinimum(0.0);
hc->GetXaxis()->SetBinLabel(1,"FMD1i"); hc->SetBinContent(1,corrs[0]);
hc->GetXaxis()->SetBinLabel(2,"FMD2i"); hc->SetBinContent(2,corrs[1]);
hc->GetXaxis()->SetBinLabel(3,"FMD2o"); hc->SetBinContent(3,corrs[2]);
hc->GetXaxis()->SetBinLabel(4,"FMD3i"); hc->SetBinContent(4,corrs[3]);
hc->GetXaxis()->SetBinLabel(5,"FMD3o"); hc->SetBinContent(5,corrs[4]);
hc->GetXaxis()->SetLabelSize(0.08);
hc->GetYaxis()->SetTitle("#bar{occupancy}");
hc->SetMarkerSize(1.5);
hc->Draw("text hist");
hc->SetMaximum(hc->GetMaximum()*1.5);
// TH2D* highCuts = static_cast<TH2D*>(dc->FindObject("highCuts"));
// if (highCuts) highCuts->Draw("colz");
c->cd();
c->SaveAs("occupancy.png");
}
示例6: make_v2_graphs
//.........这里部分代码省略.........
trig_dec_sys[i] = new TGraphErrors(4,pt_trig,dec_v2[i],pt_trig_err,dec_v2_sys[i]);
trig_dec_sys[i]->SetName(name.str().c_str());
trig_dec_sys[i]->SetTitle(name.str().c_str());
trig_dec_sys[i]->Write();
name.str("");
name << "pi0_v2_" << i;
trig_pi0_v2[i] = new TGraphErrors(4,pt_trig,pi0_v2[i],pt_trig_err,pi0_v2_err[i]);
trig_pi0_v2[i]->SetName(name.str().c_str());
trig_pi0_v2[i]->SetTitle(name.str().c_str());
trig_pi0_v2[i]->Write();
name.str("");
name << "pi0_v2sys_" << i;
trig_pi0_sys[i] = new TGraphErrors(4,pt_trig,pi0_v2[i],pt_trig_err,pi0_v2_sys[i]);
trig_pi0_sys[i]->SetName(name.str().c_str());
trig_pi0_sys[i]->SetTitle(name.str().c_str());
trig_pi0_sys[i]->Write();
name.str("");
name << "hadron_v2_" << i;
hassoc_v2[i] = new TGraphErrors(5,pt_assoc,hadron_v2[i],pt_assoc_err,hadron_v2_err[i]);
hassoc_v2[i]->SetName(name.str().c_str());
hassoc_v2[i]->SetTitle(name.str().c_str());
hassoc_v2[i]->Write();
name.str("");
name << "hadron_v2sys_" << i;
hassoc_sys[i] = new TGraphErrors(5,pt_assoc,hadron_v2[i],pt_assoc_err,hadron_v2_sys[i]);
hassoc_sys[i]->SetName(name.str().c_str());
hassoc_sys[i]->SetTitle(name.str().c_str());
hassoc_sys[i]->Write();
}
int cent[5] = {0,20,40,60,90};
int color[4] = {kBlack,kRed,kBlue,kViolet-7};
int sys_color[4] = {kGray,kRed-9,kBlue-9,kViolet-9};
TCanvas* can = new TCanvas("can","can");
can->Divide(2,2,0.001,0.001);
TH1D* thisto = new TH1D("thisto",";p^{#gamma}_{T} ;v_{2} ",100,0.0,15.0);
thisto->SetAxisRange(0.0,0.75,"Y");
thisto->SetAxisRange(4.5,14.0,"X");
TH1D* ahisto = new TH1D("ahisto",";p^{h}_{T} ;v_{2} ",100,0.0,15.0);
ahisto->SetAxisRange(0.0,0.75,"Y");
ahisto->SetAxisRange(0.0,6.0,"X");
for( int i = 0; i < 4; i++ )
{
TVirtualPad* pad = can->cd(i+1);
pad->SetRightMargin(0.01);
pad->SetTopMargin(0.01);
if( i < 3 ) thisto->Draw();
else ahisto->Draw();
}
TLegend* leg = new TLegend(0.5,0.5,0.9,0.9);
leg->SetBorderSize(0);
leg->SetFillColor(0);
for( int ic = 0; ic < 4; ic++ )
{
can->cd(1);
trig_inc_sys[ic]->SetMarkerSize(0);
trig_inc_sys[ic]->SetLineWidth(10);
trig_inc_sys[ic]->SetLineColor(sys_color[ic]);
trig_inc_sys[ic]->Draw("E1,Psame");
trig_inc_v2[ic]->SetMarkerColor(color[ic]);
trig_inc_v2[ic]->SetLineColor(color[ic]);
trig_inc_v2[ic]->Draw("Psame");
// trig_inc_v2[ic]->Write();
// trig_inc_sys[ic]->Write();
can->cd(2);
trig_dec_sys[ic]->SetMarkerSize(0);
trig_dec_sys[ic]->SetLineWidth(10);
trig_dec_sys[ic]->SetLineColor(sys_color[ic]);
trig_dec_sys[ic]->Draw("E1,Psame");
trig_dec_v2[ic]->SetMarkerColor(color[ic]);
trig_dec_v2[ic]->SetLineColor(color[ic]);
trig_dec_v2[ic]->Draw("Psame");
can->cd(3);
trig_pi0_sys[ic]->SetMarkerSize(0);
trig_pi0_sys[ic]->SetLineWidth(10);
trig_pi0_sys[ic]->SetLineColor(sys_color[ic]);
trig_pi0_sys[ic]->Draw("E1,Psame");
trig_pi0_v2[ic]->SetMarkerColor(color[ic]);
trig_pi0_v2[ic]->SetLineColor(color[ic]);
trig_pi0_v2[ic]->Draw("Psame");
can->cd(4);
hassoc_sys[ic]->SetMarkerSize(0);
hassoc_sys[ic]->SetLineWidth(10);
hassoc_sys[ic]->SetLineColor(sys_color[ic]);
hassoc_sys[ic]->Draw("E1,Psame");
hassoc_v2[ic]->SetMarkerColor(color[ic]);
hassoc_v2[ic]->SetLineColor(color[ic]);
hassoc_v2[ic]->Draw("Psame");
name.str("");
name << cent[ic] << " - " << cent[ic+1] << "%";
leg->AddEntry(trig_inc_v2[ic],name.str().c_str(),"P");
}
leg->Draw();
can->Write();
}
示例7: EstimateBg_76X
//.........这里部分代码省略.........
can->Draw();
TH1D *h_side = (TH1D*)can->GetListOfPrimitives()->At(i_h_side[iMethod]);
TH1D *h_signal = (TH1D*)can->GetListOfPrimitives()->At(i_h_signal[iMethod]);
// Simulate different cross section by scaling a certain background
if (iMethod==1) {
TH1D *h_side_temp_scaled = (TH1D*)h_side->Clone(); h_side_temp_scaled->Scale(scale_factors[iSample]);
TH1D *h_signal_temp_scaled = (TH1D*)h_signal->Clone(); h_signal_temp_scaled->Scale(scale_factors[iSample]);
if (iSample==0) {
h_side_sum = h_side_temp_scaled;
h_signal_sum = h_signal_temp_scaled;
} else {
h_side_sum->Add(h_side_temp_scaled);
h_signal_sum->Add(h_signal_temp_scaled);
}
} else if (iMethod==2) {
h_side = h_side_sum;
h_signal = h_signal_sum;
}
TH1D *h_pred =(TH1D*)h_side->Clone();
if (iMethod!=0&&rebin>1) { h_side->Rebin(rebin); h_signal->Rebin(rebin); h_pred->Rebin(rebin); }
TLegend *leg = (TLegend*)can->GetListOfPrimitives()->At(can->GetListOfPrimitives()->GetEntries()-1);
leg->SetX1(0.35); leg->SetX2(0.65); leg->SetY1(0.6);
// Add ratio plot
int y1 = 350;
int y2 = 150;
int mid2 = 10;
can->Divide(1,2);
// Pad 1 (80+500+20 x 40+500)
TVirtualPad* p = can->cd(1);
p->SetPad(0,(y2+60+mid2)/(y1+y2+100.0+mid2),1,1);
p->SetTopMargin(40.0/(y1+40));
p->SetBottomMargin(0);
p->SetRightMargin(0.05);
p->SetLogy(1);
h_side->GetYaxis()->SetRangeUser(1.00001e-4,1e4);
h_side->Draw("HIST");
h_signal->Draw("SAMEHISTE1");
leg->Draw();
// Pad 2 (80+500+20 x 200+60)
p = can->cd(2);
p->SetGrid(0,1);
p->SetPad(0,0,1,(y2+60+mid2)/(y1+y2+100.0+mid2));
p->SetTopMargin(((float)mid2)/(y2+60+mid2));
p->SetBottomMargin(60.0/(y2+60+mid2));
p->SetRightMargin(0.05);
TH1D* ratio = (TH1D*)h_signal->Clone();
TH1D* div = (TH1D*)h_side->Clone();
//ratio->Scale(1/ratio->GetSumOfWeights());
double sum_bins_ratio = iMethod==0 ? ratio->Integral():
ratio->Integral(ratio->FindBin(R_CUT_LOW),ratio->FindBin(Rranges_ABCD[iMethod][3]));
ratio->Scale(1/sum_bins_ratio);
ratio->SetTitleSize(32.0/(y2+60+mid2),"xyz");
ratio->SetLabelSize(20.0/(y2+60+mid2),"xyz");
//ratio->Scale(1/div->GetSumOfWeights());
double sum_bins_div = iMethod==0 ? div->Integral():
div->Integral(div->FindBin(R_CUT_LOW),div->FindBin(Rranges_ABCD[iMethod][3]));
div->Scale(1/sum_bins_div);
ratio->Divide(div);
//ratio->GetYaxis()->SetRangeUser(0,2);
ratio->GetXaxis()->SetTitleOffset(0.7);
ratio->GetYaxis()->SetNdivisions(305);
ratio->GetYaxis()->SetTitle("Ratio (Norm.)");
ratio->GetYaxis()->SetTitleOffset(0.4);
ratio->SetTitleSize(24.0/(y2+60+mid2),"y");
ratio->SetTitle("");
示例8: DrawTwoInPad
void DrawTwoInPad(TVirtualPad* p,
Int_t sub,
TH1* h1,
TH1* h2,
Bool_t ratio,
Bool_t logy=false,
Bool_t legend=false)
{
TVirtualPad* pp = p->cd(sub);
pp->SetRightMargin(0.02);
pp->SetLeftMargin(0.10);
TVirtualPad* ppp = pp;
if (ratio) {
pp->Divide(1,2,0,0);
ppp = pp->cd(1);
ppp->SetRightMargin(0.02);
}
if (logy) ppp->SetLogy();
TH1* hs[] = { h1, h2, 0 };
if (h1->GetMaximum() < h2->GetMaximum()) {
hs[0] = h2;
hs[1] = h1;
}
TH1** ph = hs;
Double_t size = (ratio ? 0.1 : 0.05);
Double_t off = (ratio ? 0.6 : 0.5);
h1->SetFillStyle(3004);
h2->SetFillStyle(3005);
while (*ph) {
TString opt("hist");
if (ph != hs) opt.Append(" same");
TH1* copy = (*ph)->DrawCopy(opt);
copy->GetXaxis()->SetLabelSize(2*size);
copy->GetYaxis()->SetLabelSize(size);
copy->GetYaxis()->SetTitleSize(size);
copy->GetYaxis()->SetTitleOffset(off);
copy->SetYTitle(copy->GetTitle());
copy->SetTitle("");
copy->SetDirectory(0);
ph++;
}
TString s1 = h1->GetYaxis()->GetTitle();
TString s2 = h2->GetYaxis()->GetTitle();
if (legend) {
TLegend* l = new TLegend(0.6, 0.1, 0.9, 0.9);
l->SetBorderSize(0);
TLegendEntry* e = l->AddEntry("dummy", s1, "lf");
l->SetFillColor(kWhite);
e->SetFillColor(kBlack);
e->SetFillStyle(h1->GetFillStyle());
e = l->AddEntry("dummy", s2, "lf");
e->SetFillColor(kBlack);
e->SetFillStyle(h2->GetFillStyle());
l->Draw();
}
if (!ratio) return;
ppp = pp->cd(2);
ppp->SetRightMargin(0.02);
TH1* r = static_cast<TH1*>(h1->Clone(Form("ratio%s", h1->GetName())));
r->SetDirectory(0);
r->SetTitle("");
r->GetXaxis()->SetLabelSize(size);
r->GetYaxis()->SetLabelSize(size);
r->GetYaxis()->SetTitleSize(0.9*size);
r->GetYaxis()->SetTitleOffset(0.9*off);
r->SetMarkerStyle(20);
r->SetMarkerColor(h1->GetFillColor()+1);
r->SetFillStyle(3007);
r->SetYTitle(Form("#frac{%s}{%s}", s1.Data(), s2.Data()));
// r->Add(h2, -1);
// r->Divide(h1);
if (!r->IsA()->InheritsFrom(TProfile::Class())) {
r->GetSumw2()->Set(0); // r->Sumw2(false);
h2->GetSumw2()->Set(0); // h2->Sumw2(false);
}
r->Divide(h2);
Printf("%s", r->GetName());
for (UShort_t bin = 1; bin <= r->GetNbinsX(); bin++) {
Printf(" bin # %2d: Diff=%g+/-%g", bin, r->GetBinContent(bin),
r->GetBinError(bin));
r->SetBinError(bin, 0);
}
r->GetSumw2()->Set(0); //r->Sumw2(false);
r->SetMarkerSize(4);
r->SetMaximum(r->GetMaximum()*1.2);
r->SetMinimum(r->GetMinimum()*0.8);
r->Draw("hist text30");
p->Modified();
p->Update();
p->cd();
}