Example #1
0
void ConfigContent::draw(GameState* gs) const {
	GameSettings& settings = gs->game_settings();
	gl_draw_rectangle_outline(bbox, COL_UNFILLED_OUTLINE);

	BBox entry_box(bbox.x1, bbox.y1, bbox.x2, bbox.y1 + TILE_SIZE);
	draw_option(gs, entry_box, settings.autouse_mana_potions,
			get_sprite_by_name("mana_potion"), "Auto-Use Mana Potions");
	entry_box = entry_box.translated(0, TILE_SIZE);
	draw_option(gs, entry_box, settings.autouse_health_potions,
			get_sprite_by_name("health_potion"), "Auto-Use Health Potions");
}
  bool PlotBundle::drawHistsAndGraphs(const PlotStyle &plot_style) const {
    if (hasDrawables()) {
      std::vector<DrawableDataObjectDrawOptionPair<TH1*> >::const_iterator hist_it;

      for (hist_it = histograms.begin(); hist_it != histograms.end();
          hist_it++) {
        TH1* hist = hist_it->data_object;
        std::string draw_option(hist_it->draw_option);
        if (hist) {
          if (hist->GetDimension() > 1) {
            hist->GetZaxis()->SetLimits(plot_axis.z_axis_range.low,
                plot_axis.z_axis_range.high);
            hist->GetZaxis()->SetRangeUser(plot_axis.z_axis_range.low,
                plot_axis.z_axis_range.high);
          }
          draw_option.append("SAME");
          hist->Draw(draw_option.c_str());
        }
      }

      std::vector<DrawableDataObjectDrawOptionPair<TGraph*> >::const_iterator graph_it;

      for (graph_it = graphs.begin(); graph_it != graphs.end(); graph_it++) {
        TGraph* graph = graph_it->data_object;
        std::string draw_option(graph_it->draw_option);
        if (graph) {
          draw_option.append("SAME");
          graph->Draw(draw_option.c_str());
        }
      }

      std::vector<DrawableDataObjectDrawOptionPair<TGraph2D*> >::const_iterator graph2d_it;

      for (graph2d_it = graphs2d.begin(); graph2d_it != graphs2d.end();
          graph2d_it++) {
        TGraph2D* graph = graph2d_it->data_object;
        std::string draw_option(graph2d_it->draw_option);
        if (graph) {
          draw_option.append("SAME");
          graph->Draw(draw_option.c_str());
        }
      }
      return true;
    } else {
      std::cout
          << "Dude, you forgot to add a histogram or graph in the plot bundle..."
          << " Please add at least one and make sure it points to an existing object!"
          << std::endl;
      return false;
    }
  }
Example #3
0
void add_option_b(char* text, bool* ptr) {
	if (is_current_option()) {
		if (BUTTON_A) *ptr = !*ptr;
		Menu.c_option_t = 1;
	}
	draw_bool(*ptr);
	draw_option(text);
}
Example #4
0
void menu_draw(Window* window, Menu* menu)
{
	// draw title to screen
	writeToScreen(window, menu->title.text, menu->title.x, menu->title.y, menu->title.fontSize, &(menu->title.font), menu->title.color);

	// draw each option
	int i;
	for (i = 0; i < menu->num_options; i++)
		draw_option(window, menu->options[i]);
}
Example #5
0
void add_option_bc(char* text, bool show, bool*(*x)(int), bool v) {
	if (is_current_option()) { 
		Menu.c_option_t = show;
		if (Menu.call_function) { 
			*(x(0)) = v; 
			(x(-1));
			Menu.call_function = false;
		} 
	}
	if (show) draw_bool(*(x(0)));
	draw_option(text);
}
Example #6
0
void add_option_e(char* text, string display, T* ptr, T min, T max, T incremement_s, T incremement_l) {
	if (is_current_option()) {
		if (DPAD_LEFT_RIGHT && !BUTTON_L1_R1) {
			*ptr += (DPAD_LEFT ? -incremement_s : incremement_s);
		}
		if (BUTTON_L1_R1 && !DPAD_LEFT_RIGHT) {
			*ptr += (BUTTON_L1 ? -incremement_l : incremement_l);
		}
		wrap_num(ptr, min, max);
		Menu.c_option_t = 2;
	}
	draw_value(display);
	draw_option(text);
}
  PadBoundaries PlotBundle::calculatePadBoundaries() const {
    PadBoundaries union_pad_boundaries;
    bool nothing_drawn(true);

    std::vector<DrawableDataObjectDrawOptionPair<TH1*> >::const_iterator hist_it;

    for (hist_it = histograms.begin(); hist_it != histograms.end(); hist_it++) {
      TH1* hist = hist_it->data_object;
      std::string draw_option(hist_it->draw_option);
      if (hist) {
        hist->Draw(draw_option.c_str());
        if (plot_axis.x_axis_range.active)
          hist->GetXaxis()->SetRangeUser(plot_axis.x_axis_range.low,
              plot_axis.x_axis_range.high);
        PadBoundaries current_pad_boundaries(*hist);

        if (nothing_drawn) {
          union_pad_boundaries = current_pad_boundaries;
          nothing_drawn = false;
        } else {
          union_pad_boundaries = union_pad_boundaries.getUnionBoundaries(
              current_pad_boundaries);
        }
      }
    }

    std::vector<DrawableDataObjectDrawOptionPair<TGraph*> >::const_iterator graph_it;

    for (graph_it = graphs.begin(); graph_it != graphs.end(); graph_it++) {
      TGraph* graph = graph_it->data_object;
      std::string draw_option("A");
      draw_option.append(graph_it->draw_option);
      if (graph) {
        graph->Draw(draw_option.c_str());
        if (plot_axis.x_axis_range.active)
          graph->GetXaxis()->SetRangeUser(plot_axis.x_axis_range.low,
              plot_axis.x_axis_range.high);
        PadBoundaries current_pad_boundaries(*graph->GetHistogram());
        if (nothing_drawn) {
          union_pad_boundaries = current_pad_boundaries;
          nothing_drawn = false;
        } else {
          union_pad_boundaries = union_pad_boundaries.getUnionBoundaries(
              current_pad_boundaries);
        }
      }
    }

    std::vector<DrawableDataObjectDrawOptionPair<TGraph2D*> >::const_iterator graph2d_it;

    for (graph2d_it = graphs2d.begin(); graph2d_it != graphs2d.end();
        graph2d_it++) {
      TGraph2D* graph = graph2d_it->data_object;
      std::string draw_option("A");
      draw_option.append(graph2d_it->draw_option);
      if (graph) {
        graph->Draw(draw_option.c_str());
        PadBoundaries current_pad_boundaries(*(TH1*) graph->GetHistogram());
        current_pad_boundaries.is_2d = true;
        current_pad_boundaries.z_min = graph->GetZmin();
        current_pad_boundaries.z_max = graph->GetZmax();
        if (nothing_drawn) {
          union_pad_boundaries = current_pad_boundaries;
          nothing_drawn = false;
        } else {
          union_pad_boundaries = union_pad_boundaries.getUnionBoundaries(
              current_pad_boundaries);
        }
      }
    }

    return union_pad_boundaries;
  }
Example #8
0
void draw_dca_distrib()
{
  gROOT->SetStyle("Plain");
  gStyle->SetOptStat("plain");
  //gStyle->SetOptStat(000000);

  Float_t contrib[knpart][knpbin][knseg_max];
  for ( int ipart = 0; ipart < knpart; ipart++ ) 
    for ( int ipbin = 0; ipbin < knpbin; ipbin++ )
      for ( int iseg = 0; iseg < knseg_max; iseg++ )
        contrib[ipart][ipbin][iseg] = 1;
  /*
  contrib[1][0][1] = 0;
  contrib[1][1][1] = 0;
  contrib[2][0][1] = 0;
  contrib[2][1][1] = 0;
  contrib[2][2][1] = 0;
  contrib[2][3][1] = 0;
  contrib[3][0][1] = 0;
  contrib[3][1][1] = 0;
  contrib[3][2][1] = 0;
  contrib[3][3][1] = 0;
  */

  TFile *f[knpart][knseg_max];

  //f[0][0] = new TFile("../data/merge/match_pdst_pp_ba_24m_3.root");
  //f[0][0] = new TFile("../data/merge/match_pdst_pp_ba_flat.root");
  f[0][0] = new TFile("meson_transform/data/train_b.root");

  //f[1][0] = new TFile("../data/merge/match_pdst_pp_ca_4.253b_3.root");
  //f[1][0] = new TFile("../data/merge/match_pdst_pp_ca_flat.root");
  f[1][0] = new TFile("meson_transform/data/train_c.root");


  //f[2][0] = new TFile("../data/merge/match_pdst_pp_bg_250b_2.root"); 
  f[2][0] = new TFile("../data/merge/match_pdst_pp_bg_250b_2.root");


  f[3][0] = new TFile("../data/merge/match_pdst_pp_ba_24m_3.root");

  f[4][0] = new TFile("../data/merge/match_pdst_pp_all_250b_3.root");

  TFile *freadin = new TFile("bin500_10pb/draw_dca_distrib_3.root", "READ");
  TH1F *hpart_total_tmp[knpart][knpbin];

  TString tree_name("mc_trk_eval");
  TTree *t[knpart][knseg_max]; 
  for ( Int_t ipart = 0; ipart < knpart; ipart++ ) {
    for ( Int_t iseg = 0; iseg < knseg[ipart]; iseg++ ) {
      cout << f[ipart][iseg]->GetName() << endl;
      t[ipart][iseg] = (TTree*)f[ipart][iseg]->Get(tree_name);
      //if (ipart == 4) t[ipart][iseg] = (TTree*)f[ipart][iseg]->Get("trk_eval");
    }
  }

  
  TH1F *hpart[knpart][knpbin][knseg_max];
  TString hpart_name[knpart][knpbin][knseg_max];

  TH1F *hpart_total[knpart][knpbin];
  TString hpart_total_name[knpart][knpbin];

  TString draw_value("(x0reco-evtx0mc)*(px0reco/sqrt(px0reco**2+py0reco**2))+(y0reco-evty0mc)*(py0reco/sqrt(px0reco**2+py0reco**2))");
//  TString draw_value("(y0reco-evty0mc)*(px0reco/sqrt(px0reco**2+py0reco**2))-(x0reco-evtx0mc)*(py0reco/sqrt(px0reco**2+py0reco**2))");

  TString cut_value("Abs((X0reco-evtx0mc)*(px0reco/sqrt(px0reco**2+py0reco**2))+(y0reco-evty0mc)*(py0reco/sqrt(px0reco**2+py0reco**2)))<0.5&&x0reco!=-9999&&y0reco!=-9999");
  TString dca_phi_cut_value("&&abs((y0reco-evty0mc)*(px0reco/sqrt(px0reco**2+py0reco**2))-(x0reco-evtx0mc)*(py0reco/sqrt(px0reco**2+py0reco**2)))<1&&x0reco!=-9999&&y0reco!=-9999&&mu_px!=-9999");

  //TString draw_value("((x0mc-px0mc/pz0mc*(z0mc-evtz0mc))-evtx0mc)*(px0mc/sqrt(px0mc**2+py0mc**2))+((y0mc-py0mc/pz0mc*(z0mc-evtz0mc))-evty0mc)*(py0mc/sqrt(px0mc**2+py0mc**2))");

  //TString draw_value("((y0mc-py0mc/pz0mc*(z0mc-evtz0mc))-evty0mc)*(px0mc/sqrt(px0mc**2+py0mc**2))-((x0mc-px0mc/pz0mc*(z0mc-evtz0mc))-evtx0mc)*(py0mc/sqrt(px0mc**2+py0mc**2))");

  //TString draw_value("mu_chi2");
  //TString cut_value("mu_chi2<100&&x0reco!=-9999&&y0reco!=-9999&&mu_px!=-9999");

  TString mu_cut_value("&&mu_chi2<5&&mu_lastGap==4&&abs(mu_eta)>1.2&&abs(mu_eta)<2.4&&mu_DG0<15&&mu_pT<30&&abs(mu_pz)>2.8&&abs(mu_pz)<=30&&mu_DDG0<10&&mu_mutr_nhits>=12");
 
  TString xcor("mu_pT");

  cut_value += dca_phi_cut_value;
  cut_value += mu_cut_value;

  //cut_value += "&&Entry$<100";

  TH1F *hmu_pT[knpart];
  for ( Int_t ipart = 0; ipart < knpart; ipart++ ) {
    TString hmu_pT_name("mu_pT_");
    hmu_pT_name += kpart_name[ipart];
    hmu_pT[ipart] = new TH1F(hmu_pT_name, hmu_pT_name, 2*knpbin, kpmin, kpmax);

    if (kreadin[ipart] == 0) t[ipart][0]->Draw( xcor + ">>" + hmu_pT_name, cut_value );
  } 


  TH1F *hdca_res[knpart];
  for ( Int_t ipart = 0; ipart < knpart; ipart++ ) {
    TString dca_res_name("DCA_res_");
    dca_res_name += kpart_name[ipart];
    hdca_res[ipart] = new TH1F(dca_res_name, dca_res_name, knpbin, kpmin, kpmax);
  }

  TH1F *hppart[knpart][knpbin];
  TString hppart_name[knpart][knpbin];  
  TH1F *hppart_total[knpart];
  TString hppart_total_name[knpart];
  for ( Int_t ipart = 0 ; ipart < 2; ipart++ ) {
    hppart_total_name[ipart] = TString("h_") + kpart_name[ipart] + "_p_pt_total";
    hppart_total[ipart] = new TH1F(hppart_total_name[ipart], hppart_total_name[ipart], knppbin, kppmin, kppmax);
    if (kreadin[ipart] == 0) t[ipart][0]->Draw( "py_p_pT>>" + hppart_total_name[ipart], cut_value );
  }
  for ( Int_t ipbin = 0; ipbin < knpbin; ipbin++ ) {
    Float_t pmin = kpmin + ipbin * kpstep;
    Float_t pmax = kpmin + (ipbin+1) * kpstep;

    for ( Int_t ipart = 0; ipart < knpart; ipart++ ) {
      hpart_total_name[ipart][ipbin] = TString("h_") + kpart_name[ipart] + "_pt_" + int((ipbin+2)/2);
      if (ipbin%2 == 1) hpart_total_name[ipart][ipbin] += TString(".5");
   
      //read in hist
      if (kreadin[ipart] == 1)
      {
        hpart_total_tmp[ipart][ipbin] = (TH1F*)((TCanvas*)freadin->Get("dca"))->GetPad(ipbin+1)->FindObject( hpart_total_name[ipart][ipbin] );
        if (!hpart_total_tmp[ipart][ipbin]) cout << hpart_total_name[ipart][ipbin] << " not found " << endl;
        hpart_total_tmp[ipart][ipbin]->SetName(hpart_total_name[ipart][ipbin] + "_readin");
        //cout << "  hpart_total_tmp name " << hpart_total_tmp[ipart][ipbin]->GetName() << endl;
      }

      hpart_total[ipart][ipbin] = new TH1F( hpart_total_name[ipart][ipbin], hpart_total_name[ipart][ipbin], khbin, khxmin, khxmax );
      if (kreadin[ipart] == 1) 
      {
        for (int idcabin = 0; idcabin < khbin; idcabin++) hpart_total[ipart][ipbin]->SetBinContent(idcabin+1, hpart_total_tmp[ipart][ipbin]->GetBinContent(idcabin+1));
      }

      for ( Int_t iseg = 0; iseg < knseg[ipart]; iseg++ ) {
        hpart_name[ipart][ipbin][iseg] = TString("h_") + kpart_name[ipart] + "_pt_" + (ipbin+1) + "_seg" + iseg;
        cout << hpart_name[ipart][ipbin][iseg] << endl;
        hpart[ipart][ipbin][iseg] = new TH1F( hpart_name[ipart][ipbin][iseg], hpart_name[ipart][ipbin][iseg], khbin, khxmin, khxmax );

        TString pcut;
        stringstream pcutstr;
        //pcutstr << "py_p_pT>4&&";
        pcutstr << xcor.Data() << ">=" << pmin << "&&" << xcor.Data() << "<" << pmax;
        pcut = pcutstr.str();
        cout << pcut << endl;

        //if (ipart != 4) t[ipart][iseg]->Draw( draw_value + ">>" + hpart_name[ipart][ipbin][iseg], cut_value+"&&"+pcut+"&&Entry$%2==0");
        //else t[ipart][iseg]->Draw( draw_value + ">>" + hpart_name[ipart][ipbin][iseg], cut_value+"&&"+pcut+"&&Entry$%2==1");
        if (kreadin[ipart] == 0) t[ipart][iseg]->Draw( draw_value + ">>" + hpart_name[ipart][ipbin][iseg], cut_value+"&&"+pcut );
      }
      hppart_name[ipart][ipbin] = TString("h_") + kpart_name[ipart] + "_p_pt_" + int((ipbin+2)/2);
      if (ipbin%2 == 1) hppart_name[ipart][ipbin] += TString(".5");
      cout << hppart_name[ipart][ipbin] << endl;
      hppart[ipart][ipbin] = new TH1F( hppart_name[ipart][ipbin], hppart_name[ipart][ipbin], knppbin, kppmin, kppmax );
      TString pcut;
      stringstream pcutstr;
      pcutstr << xcor.Data() << ">=" << pmin << "&&" << xcor.Data() << "<" << pmax;
      pcut = pcutstr.str();
      cout << pcut << endl;
      if (kreadin[ipart] == 0) t[ipart][0]->Draw( "py_p_pT>>" + hppart_name[ipart][ipbin], cut_value+"&&"+pcut );

      for (int jpbin = 0; jpbin < knppbin; jpbin++)
      {
        if (ipart >= 2) continue;
        if (hppart_total[ipart] != 0 && hppart_total[ipart]->GetBinContent(jpbin+1) != 0)
          hppart[ipart][ipbin]->SetBinContent(jpbin+1, hppart[ipart][ipbin]->GetBinContent(jpbin+1)/hppart_total[ipart]->GetBinContent(jpbin+1));
        else 
          hppart[ipart][ipbin]->SetBinContent(jpbin+1, 0);
      } 
    }
  }

  TCanvas *c_dca = new TCanvas( "dca", "dca", 1200, 900 );
  c_dca->Divide(knpadx, knpady) ;

  for ( Int_t ipbin = 0; ipbin < knpbin; ipbin++ ) {
    c_dca->cd(ipbin+1);
    Float_t hymax = 0.0;

    for ( Int_t ipart = knpart-1 ; ipart >= 0; ipart-- ) {
      hdca_res[ipart]->SetBinContent(ipbin, hpart[ipart][ipbin][0]->GetRMS());
      hdca_res[ipart]->SetBinError(ipbin, hpart[ipart][ipbin][0]->GetRMSError());

      TString draw_option("");
      if (ipart != knpart-1) draw_option = TString("same");

      int nseg_contrib = 0;
      for ( Int_t iseg = 0; iseg < knseg[ipart]; iseg++ ) {
        float scale = klt*ksigma[ipart]/knevent[ipart][iseg];
        cout << "ipart " << ipart << " iseg " << iseg << " ipbin " << ipbin << " : " << scale << endl;
/*        if ( ipart != knpart-1 ) {
          if( knevent[ipart][iseg] != 0 ) hpart[ipart][ipbin][iseg]->Scale( klt*ksigma[ipart]/knevent[ipart][iseg] );
          else hpart[ipart][ipbin][iseg]->Scale(0);
        }
*/
        if ( hpart[ipart][ipbin][iseg] ) hpart[ipart][ipbin][iseg]->Scale( contrib[ipart][ipbin][iseg] );
        if ( contrib[ipart][ipbin][iseg] != 0 ) nseg_contrib += contrib[ipart][ipbin][iseg];
        
        *hpart_total[ipart][ipbin] = *hpart_total[ipart][ipbin] + *hpart[ipart][ipbin][iseg];
      }

      cout << "nseg_contrib " << nseg_contrib << endl;

      hpart_total[ipart][ipbin]->Scale( 1.0/nseg_contrib );
      //if ( ipart != knpart-1 ) 
      //hpart_total[ipart][ipbin]->Scale( kreal[ipart] );

      hpart_total[ipart][ipbin]->GetXaxis()->SetTitle("dca_r [cm]");
      hpart_total[ipart][ipbin]->SetLineColor( khcolor[ipart] );
      hpart_total[ipart][ipbin]->SetLineWidth( khwidth[ipart] );
      hpart_total[ipart][ipbin]->SetMinimum(khymin);
      hpart_total[ipart][ipbin]->SetMaximum(khymax);
      if (ipart != 3) 
      hpart_total[ipart][ipbin]->Draw( draw_option );
      
      /*
      TGraphErrors *tg = histo_to_tgraph( hpart_total[ipart][ipbin], false );
      TString tg_title = hpart_total_name[ipart][ipbin];
      tg_title.Replace(0, 8, "@pT=");
      tg_title += TString("GeV");
      tg->SetTitle( tg_title );
      tg->GetXaxis()->SetTitle("DCA_r [cm]"); 
      tg->SetMarkerColor( khcolor[ipart] );
      tg->SetLineColor( khcolor[ipart] );
      tg->SetLineWidth( khwidth[ipart] );
      tg->SetMinimum(khymin);
      tg->SetMaximum(khymax);
      if (ipart != 3) tg->Draw( draw_option );

      TLatex ll[4];
      ll[0].SetTextSize(0.045);
      ll[0].DrawLatex(1., 0.9,"Merged events");
      ll[1].SetTextColor(2);
      ll[1].DrawLatex(1., 0.8, "B events");
      ll[2].SetTextColor(4);
      ll[2].DrawLatex(1., 0.7, "D events");
      ll[3].SetTextColor(6);
      ll[3].DrawLatex(1., 0.6, "Bkgnd events");
      */

      c_dca->GetPad( ipbin+1 )->SetLogy();
      c_dca->GetPad( ipbin+1 )->SetGridx();
      c_dca->GetPad( ipbin+1 )->SetGridy();

    }
  }

  TCanvas *c_dca_res = new TCanvas("c_dca_res", "c_dca_res"); 
  for ( Int_t ipart = knpart-1 ; ipart >= 0; ipart-- ) {
    TString draw_option("pl");
    if (ipart != knpart-1) draw_option += "same";

    hdca_res[ipart]->SetMinimum(0.0);
    hdca_res[ipart]->SetMaximum(0.2);
    hdca_res[ipart]->SetLineColor( khcolor[ipart] );
    if (ipart != 3) hdca_res[ipart]->Draw( draw_option ); 
  }

  TCanvas *c_ppT = new TCanvas( "ppT", "ppT", 1200, 900 );
  c_ppT->Divide(knpadx, knpady);
  for ( Int_t ipbin = 0; ipbin < knpbin; ipbin++ ) {
    c_ppT->cd(ipbin+1);

    double hbin_max = 0;
    for ( Int_t ipart = 1 ; ipart >= 0; ipart-- ) {
      if (hppart[ipart][ipbin]->GetBinContent( hppart[ipart][ipbin]->GetMaximumBin() ) > hbin_max)
        hbin_max = hppart[ipart][ipbin]->GetBinContent( hppart[ipart][ipbin]->GetMaximumBin() );
    }

    for ( Int_t ipart = knpart-1 ; ipart >= 0; ipart-- ) {
      TString draw_option("");
      if (ipart != knpart-1) draw_option = TString("same");

      hppart[ipart][ipbin]->SetLineColor( khcolor[ipart] );
      hppart[ipart][ipbin]->SetLineWidth( khwidth[ipart] );
      hppart[ipart][ipbin]->SetMaximum( hbin_max*1.2 );

      if (ipart == 0 || ipart == 1)
        hppart[ipart][ipbin]->Draw( draw_option );
    }
  }
  c_ppT->SaveAs("c_ppT.gif");

  TCanvas *c_mu_pT = new TCanvas("c_mu_pT", "c_mu_pT", 1200, 900 );
  for ( Int_t ipart = knpart-1 ; ipart >= 0; ipart-- ) {
    TString draw_option("");
    if (ipart != knpart-1) draw_option += "same";

    hmu_pT[ipart]->SetLineColor( khcolor[ipart] );
    if (ipart != 3) hmu_pT[ipart]->Draw( draw_option );
  }

  TFile *f_out = new TFile("draw_dca_distrib.root", "RECREATE");
  c_dca->Write();
  c_dca_res->Write();
  c_ppT->Write();
  c_mu_pT->Write();
}