Menu::Menu(const Titles &titles,const std::string &ttf_path,TextureIds ids) :ttf_path(ttf_path), ids(ids){ int n=0; float y=MENU_Y; for (Titles::const_iterator title=titles.begin(); title!=titles.end(); title++) { TitleSprite* title_sprite=new TitleSprite(); title_sprite->n=n; title_sprite->y=y; title_sprite->title=*title; title_sprite->spr_normal=NULL; title_sprite->spr_selected=NULL; title_sprites.push_back(title_sprite); n++; y+=MENU_SPACING; } update_text(); //initialisation selected=title_sprites.begin(); }
string style(TH1 *h, const string &filename) { typedef shared_ptr<regex> RegexPtr; typedef pair<string, RegexPtr> Pattern; typedef map<int, Pattern> Styles; Styles styles; styles[kAzure - 9 ] = Pattern("Zprime M: 500 GeV w: 50 GeVc", RegexPtr(new regex(".*zprime_m500gev_w50gev-madgraph.*"))); styles[kAzure - 8 ] = Pattern("Zprime M: 500 GeV w: 5 GeVc", RegexPtr(new regex(".*zprime_m500gev_w5gev-madgraph.*"))); styles[kAzure + 0 ] = Pattern("Zprime M: 750 GeV w: 7.50 GeVc", RegexPtr(new regex(".*zprime_m750gev_w7500mev-madgraph.*"))); styles[kBlue - 7 ] = Pattern("Zprime M: 1000 GeV w: 100 GeVc", RegexPtr(new regex(".*zprime_m1000gev_w100gev-madgraph.*"))); styles[kBlue - 10] = Pattern("Zprime M: 1000 GeV w: 10 GeVc", RegexPtr(new regex(".*zprime_m1000gev_w10gev-madgraph.*"))); styles[kViolet ] = Pattern("Zprime M: 1250 GeV w: 1.25 GeVc", RegexPtr(new regex(".*zprime_m1250gev_w1250mev-madgraph.*"))); styles[kPink + 10] = Pattern("Zprime M: 1500 GeV w: 150 GeVc", RegexPtr(new regex(".*zprime_m1500gev_w150gev-madgraph.*"))); styles[kPink + 8 ] = Pattern("Zprime M: 1500 GeV w: 15 GeVc", RegexPtr(new regex(".*zprime_m1500gev_w15gev-madgraph.*"))); styles[kRed + 0 ] = Pattern("Zprime M: 2000 GeV w: 200 GeVc", RegexPtr(new regex(".*zprime_m2000gev_w200gev-madgraph.*"))); styles[kRed - 9 ] = Pattern("Zprime M: 2000 GeV w: 20 GeVc", RegexPtr(new regex(".*zprime_m2000gev_w20gev-madgraph.*"))); styles[kOrange + 9 ] = Pattern("Zprime M: 3000 GeV w: 300 GeVc", RegexPtr(new regex(".*zprime_m3000gev_w300gev-madgraph.*"))); styles[kOrange + 7 ] = Pattern("Zprime M: 3000 GeV w: 30 GeVc", RegexPtr(new regex(".*zprime_m3000gev_w30gev-madgraph.*"))); styles[kGreen + 1 ] = Pattern("Zprime M: 4000 GeV w: 400 GeVc", RegexPtr(new regex(".*zprime_m4000gev_w400gev-madgraph.*"))); styles[kGreen - 6 ] = Pattern("Zprime M: 4000 GeV w: 40 GeVc", RegexPtr(new regex(".*zprime_m4000gev_w40gev-madgraph.*"))); h->SetLineWidth(2); typedef map<string, string> Titles; Titles titles; titles["zprime_pt"] = "P_{T,Z'} [GeV/c]"; titles["zprime_eta"] = "#{eta}_{Z'}"; titles["zprime_phi"] = "#{phi}_{Z'}"; titles["top_pt"] = "P_{T,t} [GeV/c]"; titles["top_eta"] = "#{eta}_{t}"; titles["top_phi"] = "#{phi}_{t}"; titles["atop_pt"] = "P_{T,#bar{t}} [GeV/c]"; titles["atop_eta"] = "#{eta}_{#bar{t}}"; titles["atop_phi"] = "#{phi}_{#bar{t}}"; titles["ttbar_dr"] = "#DeltaR(t,#bar{t})"; titles["mtt"] = "M_{t,#bar{t}}"; titles["top_hadronic_dr"] = "#DeltaR(W#rightarrowjj,b)"; titles["top_leptonic_dr"] = "#DeltaR(W#rightarrowl#nu,b)"; titles["wjj_dr"] = "#DeltaR(j,j)_{W#rightarrowjj}"; titles["wlnu_dr"] = "#DeltaR(l,b)_{W#rightarrowl#nu}"; boost::smatch matches; for(Styles::const_iterator style = styles.begin(); styles.end() != style; ++style) { if (!regex_match(filename, matches, *style->second.second)) continue; h->SetLineColor(style->first); h->SetMarkerColor(style->first); for(Titles::const_iterator title = titles.begin(); titles.end() != title; ++title) { if (title->first == h->GetName()) { h->GetXaxis()->SetTitle(title->second.c_str()); break; } } return style->second.first; } return "unknown"; }