bool is_invisible(const Styles &styles, const LayerDescription &layer_desc) { auto it = find_style(styles, layer_desc); if (it == styles.end()) { // We don't have a style, so we fall back to the default style which is // always visible. return false; } return !it->second.isVisible(); }
typename Styles::const_iterator find_style(const Styles &styles, const LayerDescription &layer_desc) { auto it = styles.find(layer_desc.name); #if defined(DEBUG) if (it == styles.end()) { if (debug::renderWarnings) { fprintf(stderr, "[WARNING] can't find class named '%s' in style\n", layer_desc.name.c_str()); } } #endif return it; }
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"; }