rSize ruiAbsoluteLayout::Layout(rRect& rect){ if (m_layoutItems.size() == 0) return rSize(0, 0); rPoint ptmin(INT32_MAX, INT32_MAX); rPoint ptmax(INT32_MIN, INT32_MIN); for (size_t i = 0; i < m_layoutItems.size(); i++){ ruiWidget* widget = m_layoutItems[i]; int margins[4] = { 0, 0, 0, 0 }; int top = 0; int left = 0; int bottom = 0; int right = 0; ruiStyle* properties = widget->ComputedStyle(); bool hasTop = properties->GetInt("top", top); bool hasLeft = properties->GetInt("left", left); bool hasBottom = properties->GetInt("bottom", bottom); bool hasRight = properties->GetInt("right", right); rSize itemSize = widget->Size(); rPoint position; if (hasTop) position.y = top; else if (hasBottom) position.y = rect.Bottom() - bottom - itemSize.y; else position.y = 0; if (hasLeft) position.x = left; else if (hasRight) position.x = rect.Right() - right - itemSize.x; else position.x = 0; widget->SetPosition(position); UpdatePoints(ptmin, ptmax, position); UpdatePoints(ptmin, ptmax, rPoint(position.x + itemSize.x, position.y + itemSize.y)); } rPoint difference = ptmax - ptmin; return rSize(difference.x, difference.y); }
void plotSFs() { TCanvas *c1 = new TCanvas(); TH1F *haxes = new TH1F("haxes",";p_{T} [GeV/c];Scale factor",1,0,30); float *etamin=NULL, *etamax=NULL; float eta, ptminval; // muidtrg, pbpb etamin = new float[4]; etamin[0]=0.; etamin[1]=0.9; etamin[2]=1.6; etamin[3]=2.1; etamax = new float[4]; etamax[0]=0.9; etamax[1]=1.6; etamax[2]=2.1; etamax[3] = 2.4; for (int i=0; i<4; i++) { haxes->GetYaxis()->SetRangeUser(0.5,1.5); haxes->Draw(); TLegend *tleg = new TLegend(0.53,0.16,0.91,0.41); tleg->SetBorderSize(0); eta = (etamax[i]+etamin[i])/2.; ptminval = ptmin(etamax[i]); for (int i=1; i<=100; i++) { TF1 *fnom = new TF1(Form("f%i",i),tnp_weight_muidtrg_pbpb_wrapper,ptminval,30,2); fnom->SetParameters(eta,i); fnom->SetLineColor(kBlack); fnom->Draw("same"); } TF1 *fp = new TF1("fp",tnp_weight_muidtrg_pbpb_wrapper,ptminval,30,2); fp->SetParameters(eta,-1); fp->SetLineColor(kCyan); fp->Draw("same"); TF1 *fm = new TF1("fm",tnp_weight_muidtrg_pbpb_wrapper,ptminval,30,2); fm->SetParameters(eta,-2); fm->SetLineColor(kCyan); fm->Draw("same"); TF1 *fnom = new TF1("fnom",tnp_weight_muidtrg_pbpb_wrapper,ptminval,30,2); fnom->SetParameters(eta,0); fnom->SetLineColor(kRed); fnom->Draw("same"); tleg->SetHeader(Form("#splitline{PbPb, MuId+Trg}{#eta #in [%.1f,%.1f], p_{T}>%.1f GeV/c}",etamin[i],etamax[i],ptminval)); tleg->AddEntry(fnom,"Nominal","l"); tleg->AddEntry("f1","stat (100 toys)","l"); tleg->AddEntry(fp,"syst (+/1#sigma)","l"); tleg->Draw(); c1->SaveAs(Form("tnp_muidtrg_pbpb_eta%.1f-%.1f.pdf",etamin[i],etamax[i])); c1->SaveAs(Form("tnp_muidtrg_pbpb_eta%.1f-%.1f.png",etamin[i],etamax[i])); } // muidtrg, pp for (int i=0; i<4; i++) { haxes->GetYaxis()->SetRangeUser(0.5,1.5); haxes->Draw(); TLegend *tleg = new TLegend(0.53,0.16,0.91,0.41); tleg->SetBorderSize(0); eta = (etamax[i]+etamin[i])/2.; ptminval = ptmin(etamax[i]); for (int i=1; i<=100; i++) { TF1 *fnom = new TF1(Form("f%i",i),tnp_weight_muidtrg_pp_wrapper,ptminval,30,2); fnom->SetParameters(eta,i); fnom->SetLineColor(kBlack); fnom->Draw("same"); } TF1 *fp = new TF1("fp",tnp_weight_muidtrg_pp_wrapper,ptminval,30,2); fp->SetParameters(eta,-1); fp->SetLineColor(kCyan); fp->Draw("same"); TF1 *fm = new TF1("fm",tnp_weight_muidtrg_pp_wrapper,ptminval,30,2); fm->SetParameters(eta,-2); fm->SetLineColor(kCyan); fm->Draw("same"); TF1 *fnom = new TF1("fnom",tnp_weight_muidtrg_pp_wrapper,ptminval,30,2); fnom->SetParameters(eta,0); fnom->SetLineColor(kRed); fnom->Draw("same"); tleg->SetHeader(Form("#splitline{pp, MuId+Trg}{#eta #in [%.1f,%.1f], p_{T}>%.1f GeV/c}",etamin[i],etamax[i],ptminval)); tleg->AddEntry(fnom,"Nominal","l"); tleg->AddEntry("f1","stat (100 toys)","l"); tleg->AddEntry(fp,"syst (+/1#sigma)","l"); tleg->Draw(); c1->SaveAs(Form("tnp_muidtrg_pp_eta%.1f-%.1f.pdf",etamin[i],etamax[i])); c1->SaveAs(Form("tnp_muidtrg_pp_eta%.1f-%.1f.png",etamin[i],etamax[i])); } // sta, pbpb etamin = new float[2]; etamin[0]=0.; etamin[1]=1.6;; etamax = new float[2]; etamax[0]=1.6; etamax[1]=2.4; for (int i=0; i<2; i++) { haxes->GetYaxis()->SetRangeUser(0.5,1.5); haxes->Draw(); TLegend *tleg = new TLegend(0.53,0.16,0.91,0.41); tleg->SetBorderSize(0); eta = (etamax[i]+etamin[i])/2.; ptminval = ptmin(etamax[i]); for (int i=1; i<=100; i++) { TF1 *fnom = new TF1(Form("f%i",i),tnp_weight_sta_pbpb_wrapper,ptminval,30,2); fnom->SetParameters(eta,i); fnom->SetLineColor(kBlack); fnom->Draw("same"); } TF1 *fp = new TF1("fp",tnp_weight_sta_pbpb_wrapper,ptminval,30,2); fp->SetParameters(eta,-1); fp->SetLineColor(kCyan); fp->Draw("same"); TF1 *fm = new TF1("fm",tnp_weight_sta_pbpb_wrapper,ptminval,30,2); fm->SetParameters(eta,-2); fm->SetLineColor(kCyan); fm->Draw("same"); TF1 *fnom = new TF1("fnom",tnp_weight_sta_pbpb_wrapper,ptminval,30,2); fnom->SetParameters(eta,0); fnom->SetLineColor(kRed); fnom->Draw("same"); tleg->SetHeader(Form("#splitline{PbPb, STA}{#eta #in [%.1f,%.1f], p_{T}>%.1f GeV/c}",etamin[i],etamax[i],ptminval)); tleg->AddEntry(fnom,"Nominal","l"); tleg->AddEntry("f1","stat (100 toys)","l"); tleg->AddEntry(fp,"syst (+/1#sigma)","l"); tleg->Draw(); c1->SaveAs(Form("tnp_sta_pbpb_eta%.1f-%.1f.pdf",etamin[i],etamax[i])); c1->SaveAs(Form("tnp_sta_pbpb_eta%.1f-%.1f.png",etamin[i],etamax[i])); } // sta, pp for (int i=0; i<2; i++) { haxes->GetYaxis()->SetRangeUser(0.5,1.5); haxes->Draw(); TLegend *tleg = new TLegend(0.53,0.16,0.91,0.41); tleg->SetBorderSize(0); eta = (etamax[i]+etamin[i])/2.; ptminval = ptmin(etamax[i]); for (int i=1; i<=100; i++) { TF1 *fnom = new TF1(Form("f%i",i),tnp_weight_sta_pp_wrapper,ptminval,30,2); fnom->SetParameters(eta,i); fnom->SetLineColor(kBlack); fnom->Draw("same"); } TF1 *fp = new TF1("fp",tnp_weight_sta_pp_wrapper,ptminval,30,2); fp->SetParameters(eta,-1); fp->SetLineColor(kCyan); fp->Draw("same"); TF1 *fm = new TF1("fm",tnp_weight_sta_pp_wrapper,ptminval,30,2); fm->SetParameters(eta,-2); fm->SetLineColor(kCyan); fm->Draw("same"); TF1 *fnom = new TF1("fnom",tnp_weight_sta_pp_wrapper,ptminval,30,2); fnom->SetParameters(eta,0); fnom->SetLineColor(kRed); fnom->Draw("same"); tleg->SetHeader(Form("#splitline{pp, STA}{#eta #in [%.1f,%.1f], p_{T}>%.1f GeV/c}",etamin[i],etamax[i],ptminval)); tleg->AddEntry(fnom,"Nominal","l"); tleg->AddEntry("f1","stat (100 toys)","l"); tleg->AddEntry(fp,"syst (+/1#sigma)","l"); tleg->Draw(); c1->SaveAs(Form("tnp_sta_pp_eta%.1f-%.1f.pdf",etamin[i],etamax[i])); c1->SaveAs(Form("tnp_sta_pp_eta%.1f-%.1f.png",etamin[i],etamax[i])); } }