您的位置:首页 > 编程语言 > C语言/C++

[cernRoot] How make a beautiful graph by CernRoot?

2015-09-17 19:22 585 查看
//    just for myself, may be it is useless for you)
double xmin = 0.15, xmax = 1.65, ymin = .0, ymax = .59;
double x[3] = {1./8., 4./8., 7./8.};
double y[6] = {1./17., 4./17., 7./17., 10./17., 13./17., 16./17.};
for(int i = 0; i < 3; i ++) x[i] += 0.2/8.;
for(int i = 0; i < 6; i ++) y[i] += 0.2/17.;
TCanvas * cc = new TCanvas("b39_b","b39_b",0,0,8*50,17*50);
TPad * pad0 = new TPad("","",0,0,1,1);
pad0->Draw();
pad0->cd();
TPad ** pad = new TPad * [ndeltaEta + 1];
for(int i = 0; i < ndeltaEta+1; i ++)
{
pad0->cd();
pad[i] = new TPad("","",x[i%2],y[6-2-i/2],x[i%2+1],y[6-1-i/2]);
pad[i]->Draw();
}
TH2D * haxis = new TH2D("","",100,xmin,xmax,100,ymin,ymax);
haxis->SetStats(0);
haxis->GetXaxis()->SetNdivisions(505);
haxis->GetYaxis()->SetNdivisions(508);
for(int i = 0; i < ndeltaEta+1; i ++)
{
pad[i]->cd();
pad[i]->SetMargin(0,0,0,0);
pad[i]->SetTicks(1,1);
pad[i]->SetGrid(0,1);
//        pad[i]->SetLogy();
haxis->Draw();
}
const int color[6] = {kBlack,kRed,kBlue,kGreen,kYellow+2,kPink+3};
const int markerStyle[6] = {20,21,22,23,33,34};
for(ideltaeta = 0; ideltaeta < ndeltaEta; ideltaeta ++)
{
pad[ideltaeta]->cd();
for(icen = 0; icen < ncendeg; icen ++)
{
gr[ideltaeta][icen]->SetMarkerColor(color[icen]);
gr[ideltaeta][icen]->SetMarkerStyle(markerStyle[icen]);
gr[ideltaeta][icen]->Draw("p");
}//icen
}//ideltaeta
pad0->cd();
TGaxis ** axisx = new TGaxis * [4];
TGaxis ** axisy = new TGaxis * [10];
for(int i = 0; i < 2; i ++)
{
axisx[i] = new TGaxis(x[i],y[0],x[i+1],y[0],xmin,xmax,505,"");
axisx[i+2] = new TGaxis(x[i],y[5],x[i+1],y[5],xmin,xmax,505,"-");
axisx[i]->SetLabelSize(0.05);
axisx[i]->SetLabelOffset(-0.015);
axisx[i+2]->SetLabelSize(0.05);
axisx[i]->Draw();
axisx[i+2]->Draw();
}
for(int i = 0; i < 5; i ++)
{
axisy[i] = new TGaxis(x[0],y[i],x[0],y[i+1],ymin,ymax,105,"");
axisy[i+5] = new TGaxis(x[2],y[i],x[2],y[i+1],ymin,ymax,105,"+L");
axisy[i]->SetLabelSize(0.05);
axisy[i+5]->SetLabelSize(0.05);
//        axisy[i]->SetMoreLogLabels(1);
//        axisy[i]->SetNoExponent();
axisy[i]->Draw();
axisy[i+5]->Draw();
}
TPaveText * pave = new TPaveText(.0, y[0], x[0]*.5, y[5]);
pave->SetBorderSize(0);
pave->SetFillStyle(0);
pave->SetTextSize(0.05);
(TText *)pave->AddText("FB correlation strength b")->SetTextAngle(90);
pave->Draw();
TPaveText * pave1 = new TPaveText(x[0], 0, x[2], y[0]*.5);
pave1->SetBorderSize(0);
pave1->SetFillStyle(0);
pave1->SetTextSize(0.05);
(TText *)pave1->AddText("#Delta#eta_{ref}")->SetTextAngle(0);
pave1->Draw();

TLatex tl;
tl.SetTextSize(0.15);
tl.SetTextFont();
for(ideltaeta = 0; ideltaeta < ndeltaEta; ideltaeta ++)
{
pad[ideltaeta]->cd();
sprintf(name, "#Delta#eta = %1.1f", .2*(ideltaeta+1) );
tl.DrawLatexNDC(.4,.8, name);
}

pad[9]->cd();
pad[9]->SetGrid(0,0);
TLegend leg(.1,.1,.9,.9);
leg.SetFillStyle(0);
leg.SetBorderSize(0);
leg.SetTextFont();
leg.SetTextSize(0.12);
for(int i = 0; i < ncendeg; i ++)
{
sprintf(name, "%d%%~%d%%", i*10, (i+1)*10 );
leg.AddEntry(gr[0][i],name,"p");
}
leg.Draw();
cc->DrawClone();
//____________________________CLEAR_________________________
delete pave1;
delete pave;
for(int i = 0; i < 10; i ++)
delete axisy[i];
for(int i = 0; i < 4; i ++)

4000
delete axisx[i];
delete [] axisy;
delete [] axisx;
delete haxis;
for(int i = 0; i < ndeltaEta+1; i ++)
delete pad[i];
delete [] pad;
delete cc;
for(ideltaeta = 0; ideltaeta < ndeltaEta; ideltaeta ++)
for(icen = 0; icen < ncendeg; icen ++)
delete gr[ideltaeta][icen];
for(ideltaeta = 0; ideltaeta < ndeltaEta; ideltaeta ++)
delete [] gr[ideltaeta];
delete [] gr;
</pre><pre name="code" class="cpp">
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ cernRoot