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);
}
Beispiel #2
0
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]));
   }
}