本文整理汇总了C++中TPad::BuildLegend方法的典型用法代码示例。如果您正苦于以下问题:C++ TPad::BuildLegend方法的具体用法?C++ TPad::BuildLegend怎么用?C++ TPad::BuildLegend使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TPad
的用法示例。
在下文中一共展示了TPad::BuildLegend方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: determineWorkingPoint
void determineWorkingPoint(TString algo="csv",TString baseURL="~/scratch0/top-nosyst/plotter.root")
{
float workPoint(0.244);
float sfb(1.020), sfberr(0.04); //from BTV-11-003
float sflight(1.08), sflighterr(0.13); //from BTV-11-002
// float sfb(0.99), sfberr(0.099); //from BTV-11-001
// float sflight(1.07882), sflighterr(0.244); //from BTV-11-001
if(algo=="tche")
{
workPoint=1.7;
sfb=0.95; sfberr=0.095;
sflight=1.08018; sflighterr=0.1125;
}
TObjArray bjets=getDistributionFromPlotter(algo+"b",baseURL);
TObjArray lightjets=getDistributionFromPlotter(algo+"light",baseURL);
TH1F *bDisc=(TH1F *) bjets.At(1);
TH1F *lightDisc=(TH1F *) lightjets.At(1);
setStyle();
gStyle->SetOptFit(0);
TCanvas *cnv = getNewCanvas("c","c",false);
cnv->Clear();
cnv->SetCanvasSize(1200,1200);
cnv->SetWindowSize(1200,1200);
cnv->Divide(2,2);
//draw the discriminator
TPad *p = (TPad *)cnv->cd(1);
bDisc->SetTitle("b");
bDisc->SetLineColor(1);
bDisc->SetMarkerColor(1);
bDisc->SetMarkerStyle(20);
bDisc->SetFillStyle(0);
bDisc->DrawNormalized("histe1");
lightDisc->SetLineColor(1);
lightDisc->SetMarkerColor(1);
lightDisc->SetMarkerStyle(24);
lightDisc->SetFillStyle(0);
lightDisc->SetTitle("udcsg");
lightDisc->DrawNormalized("histe1same");
TLegend *leg=p->BuildLegend();
formatForCmsPublic(p,leg,"CMS simulation",2);
//draw the b/light efficiencies
p=(TPad *)cnv->cd(2);
p->SetLogy();
TGraphAsymmErrors *bEff = getEfficiencyFrom(bDisc);
TGraphAsymmErrors *lightEff = getEfficiencyFrom(lightDisc);
bEff->SetMarkerStyle(20);
bEff->SetFillStyle(0);
bEff->Draw("ap");
bEff->GetXaxis()->SetTitle(bDisc->GetXaxis()->GetTitle());
bEff->GetYaxis()->SetTitle("Efficiency");
lightEff->SetMarkerStyle(24);
lightEff->SetFillStyle(0);
lightEff->Draw("p");
//draw relatively to a given working point
p=(TPad *)cnv->cd(3);
Double_t baseBEff=bEff->Eval(workPoint);
TGraphAsymmErrors *relBEff=new TGraphAsymmErrors;
relBEff->SetMarkerStyle(20);
relBEff->SetFillStyle(0);
Double_t baseLightEff=lightEff->Eval(workPoint);
TGraphAsymmErrors *relLightEff=new TGraphAsymmErrors;
relLightEff->SetMarkerStyle(24);
relLightEff->SetFillStyle(0);
for(int ip=0; ip<bEff->GetN(); ip++)
{
Double_t cut, y,ey;
bEff->GetPoint(ip,cut,y); ey = bEff->GetErrorY(ip);
Double_t relEff(y/baseBEff);
if(relEff<sfb+2*sfberr && relEff>sfb-2*sfberr)
{
int ipt=relBEff->GetN();
relBEff->SetPoint(ipt,cut,relEff);
relBEff->SetPointError(ipt,0,0,ey/baseBEff,ey/baseBEff);
}
lightEff->GetPoint(ip,cut,y); ey = lightEff->GetErrorY(ip);
relEff=y/baseLightEff;
// if(relEff<sflight+7*sflighterr && relEff>sflight-7*sflighterr)
if(relEff<sflight+3*sflighterr && relEff>sflight-3*sflighterr)
{
int ipt=relLightEff->GetN();
relLightEff->SetPoint(ipt,cut,relEff);
relLightEff->SetPointError(ipt,0,0,ey/baseLightEff,ey/baseLightEff);
}
}
relLightEff->Draw("ap");
relLightEff->GetXaxis()->SetTitle( bDisc->GetXaxis()->GetTitle() );
relLightEff->GetYaxis()->SetTitle( "#varepsilon/#varepsilon_{0}" );
relLightEff->Fit("expo","Q+");
TF1 *ffunc=relLightEff->GetFunction("expo");
float newLightCut=(TMath::Log(sflight)-ffunc->GetParameter(0))/ffunc->GetParameter(1);
float newLightCutErrPlus=(TMath::Log(sflight+sflighterr)-ffunc->GetParameter(0))/ffunc->GetParameter(1)-newLightCut;
//.........这里部分代码省略.........
示例2: DrawGraphs
void SingleAnalysis::DrawGraphs()
{
std::cout << "Drawing graphs" << std::endl;
// special case for erec and deviation
m_pERecCanvas->cd();
TPad *pERecPad = new TPad("ERecPad", "ERecPad", 0.02, 0.37, 0.95, 0.99);
pERecPad->Draw();
pERecPad->cd();
pERecPad->Range(-19.23077,0.01,96.15385,1428.571);
pERecPad->SetFillColor(0);
pERecPad->SetBorderMode(0);
pERecPad->SetBorderSize(2);
pERecPad->SetTickx(1);
pERecPad->SetTicky(1);
pERecPad->SetLeftMargin(0.1666667);
pERecPad->SetRightMargin(0.01);
pERecPad->SetTopMargin(0.02);
pERecPad->SetBottomMargin(0.0);
pERecPad->SetFrameLineWidth(1);
pERecPad->SetFrameBorderMode(0);
m_canvasMultiGraphMap[E_REC].second->Draw("ap");
this->PostDrawMultiGraph(E_REC, m_canvasMultiGraphMap[E_REC].second);
TLegend *pLegend = pERecPad->BuildLegend();
pLegend->SetBorderSize(0);
pLegend->SetLineColor(0);
pLegend->SetLineStyle(0);
pLegend->SetLineWidth(1);
pLegend->SetFillColor(0);
pLegend->SetFillStyle(0);
pLegend->SetTextSize(0.04);
pERecPad->Modified();
m_pERecCanvas->cd();
TPad *pERecDeviationPad = new TPad("ERecDeviationPad", "ERecDeviationPad", 0.02, 0, 0.95, 0.37);
pERecDeviationPad->Draw();
pERecDeviationPad->cd();
pERecDeviationPad->Range(-19.23077,-0.3993507,96.15385,0.25);
pERecDeviationPad->SetFillColor(0);
pERecDeviationPad->SetBorderMode(0);
pERecDeviationPad->SetBorderSize(2);
pERecDeviationPad->SetTickx(1);
pERecDeviationPad->SetTicky(1);
pERecDeviationPad->SetLeftMargin(0.1666667);
pERecDeviationPad->SetRightMargin(0.01);
pERecDeviationPad->SetTopMargin(0);
pERecDeviationPad->SetBottomMargin(0.23);
pERecDeviationPad->SetFrameLineWidth(1);
pERecDeviationPad->SetFrameBorderMode(0);
m_canvasMultiGraphMap[E_REC_DEVIATION].second->Draw("ap");
TF1 *pLin = new TF1("lin", "0", 0, 90);
pLin->SetLineColor(kBlack);
pLin->SetLineWidth(1);
pLin->SetLineStyle(2);
pLin->Draw("same");
this->PostDrawMultiGraph(E_REC_DEVIATION, m_canvasMultiGraphMap[E_REC_DEVIATION].second);
pERecDeviationPad->Modified();
for(CanvasMultiGraphMap::iterator graphIter = m_canvasMultiGraphMap.begin(), graphEndIter = m_canvasMultiGraphMap.end() ;
graphEndIter != graphIter ; ++graphIter)
{
if(graphIter->first == E_REC || graphIter->first == E_REC_DEVIATION)
continue;
graphIter->second.first->cd();
graphIter->second.second->Draw("ap");
this->PostDrawMultiGraph(graphIter->first, graphIter->second.second);
TLegend *pLegend = graphIter->second.first->BuildLegend();
pLegend->SetBorderSize(0);
pLegend->SetLineColor(0);
pLegend->SetLineStyle(1);
pLegend->SetLineWidth(1);
pLegend->SetFillColor(0);
pLegend->SetFillStyle(0);
pLegend->SetTextSize(0.04);
}
}
示例3: LoadLibraries
//.........这里部分代码省略.........
AddPointsToProfile(hITSsa, pCombined[icent]);
spectraArray.Add(hITSsa);
hITSsa->DrawCopy("same");
if (hITSsa->GetMaximum() > maximum) maximum = hITSsa->GetMaximum();
if (hITSsa->GetMinimum() < minimum) minimum = hITSsa->GetMinimum();
}
if (hITSTPC) {
AddPointsToGraph(hITSTPC, gCombined[icent]);
AddPointsToProfile(hITSTPC, pCombined[icent]);
spectraArray.Add(hITSTPC);
hITSTPC->DrawCopy("same");
if (hITSTPC->GetMaximum() > maximum) maximum = hITSTPC->GetMaximum();
if (hITSTPC->GetMinimum() < minimum) minimum = hITSTPC->GetMinimum();
}
if (hTPCTOF) {
AddPointsToGraph(hTPCTOF, gCombined[icent]);
AddPointsToProfile(hTPCTOF, pCombined[icent]);
spectraArray.Add(hTPCTOF);
hTPCTOF->DrawCopy("same");
if (hTPCTOF->GetMaximum() > maximum) maximum = hTPCTOF->GetMaximum();
if (hTPCTOF->GetMinimum() < minimum) minimum = hTPCTOF->GetMinimum();
}
if (hTOF) {
AddPointsToGraph(hTOF, gCombined[icent]);
AddPointsToProfile(hTOF, pCombined[icent]);
spectraArray.Add(hTOF);
hTOF->DrawCopy("same");
if (hTOF->GetMaximum() > maximum) maximum = hTOF->GetMaximum();
if (hTOF->GetMinimum() < minimum) minimum = hTOF->GetMinimum();
}
if (hHydro) {
;//hHydro->Draw("c,same");
}
TLegend *legend = curpad->BuildLegend();
legend->SetFillStyle(0);
legend->SetFillColor(0);
legend->DeleteEntry();
hArea->SetMaximum(maximum * 1.1);
hArea->SetMinimum(0.01);
// gPad->SetLogy();
/*** RATIOS ***/
/* switch canvas */
if (cent == -1)
curpad = (TPad *)cCanvasRatio->cd(icent + 1);
else
curpad = (TPad *)cCanvasRatio->cd();
/* area histo */
if (!ratio)
TH1D *hAreaRatio = new TH1D(Form("hAreaRatio_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio;", partChargeName[part][charge], centName[icent]), 100, 0., 5.);
else
TH1D *hAreaRatio = new TH1D(Form("hAreaRatio_%d", icent), Form("%s (%s);p_{T} (GeV/c);ratio;", "generic ratio", centName[icent]), 100, 0., 5.);
hAreaRatio->SetMaximum(1.5);
hAreaRatio->SetMinimum(0.5);
hAreaRatio->Draw();
/* do ratios */
if (hITSsa && hITSTPC) {
hRatio_ITSsa_ITSTPC[icent] = new TH1D(*hITSsa);
hRatio_ITSsa_ITSTPC[icent]->Divide(hITSTPC);
hRatio_ITSsa_ITSTPC[icent]->SetNameTitle(Form("hRatio_ITSsa_ITSTPC_cent%d", icent), "ITSsa / ITSTPC");
示例4: view
void view()
{
TFile* f = TFile::Open("result.root");
int signalColorTable[20], backgroundColorTable[20];
for ( int i=0; i<20; ++i )
{
signalColorTable[i] = kAzure+10-i;
backgroundColorTable[i] = kOrange+10-i;
}
TList* signalPlots = makePlots((TDirectory*)f->Get("MC_Signal_EMEM"), signalColorTable);
TList* backgroundPlots = makePlots((TDirectory*)f->Get("MC_Background_EMEM"), backgroundColorTable, true);
if ( signalPlots == 0 || backgroundPlots == 0 ) return;
const int nPlots = signalPlots->GetSize();
for ( int i=0; i<nPlots; ++i )
{
THStack* hSignal = (THStack*)signalPlots->At(i);
THStack* hBackground = (THStack*)backgroundPlots->At(i);
TString histName = hSignal->GetName();
bool doLog = histName.Contains("Pt");// || histName.Contains("RelIso");
TCanvas* c = new TCanvas(TString("c")+hSignal->GetName(), hSignal->GetTitle(), 1200, 600);
TPad* pad;
c->Divide(2,1);
TString xTitle, yTitle;
pad = (TPad*)c->cd(1);
if ( doLog ) pad->SetLogy();
pad->SetBorderSize(0);
pad->SetBorderMode(0);
hBackground->Draw();
xTitle = ((TH1*)hBackground->GetHists()->At(0))->GetXaxis()->GetTitle();
yTitle = ((TH1*)hBackground->GetHists()->At(0))->GetYaxis()->GetTitle();
hBackground->GetXaxis()->SetTitle(xTitle);
hBackground->GetYaxis()->SetTitle(yTitle);
pad->BuildLegend(0.6, 0.6, 0.98, 0.98);
pad = (TPad*)c->cd(2);
if ( doLog ) pad->SetLogy();
pad->SetBorderSize(0);
pad->SetBorderMode(0);
hSignal->Draw("nostack");
xTitle = ((TH1*)hSignal->GetHists()->At(0))->GetXaxis()->GetTitle();
yTitle = ((TH1*)hSignal->GetHists()->At(0))->GetYaxis()->GetTitle();
hSignal->GetXaxis()->SetTitle(xTitle);
hSignal->GetYaxis()->SetTitle(yTitle);
pad->BuildLegend(0.6, 0.7, 0.98, 0.98);
c->Print(TString(c->GetName())+".png");
}
}