void wjetsPrint(string type="ps"){ const int nProcs = 2; string procs[nProcs] = {"elec", "muon"}; string event_type = type; // ctrl_highm if(event_type.find("ps")!=string::npos){ string vars[] = {"lep_met_pt","dijet_pt","dijet_m","jet_n","met","lep_met_mt","lep_pt","lead_jet_pt","lep_met_dijet_mt","avg_int_per_xing"}; int tmpVars = sizeof(vars)/sizeof(vars[0]); const int nVars = tmpVars; string plot_vars[nVars] = {"Pt(lep,MET)","Dijet Pt","Dijet M","Jet N","MET_RefFinal","MT(lep,met)","Lepton Pt","Leading jet pt","Mt(lep,MET,dijet)","Average Interactions per Xing"}; }else if(event_type.find("ctrl_ewk")!=string::npos){ string vars[] = {"mt_dijet_pt","mt_njets","mt_met","mt_lep_met_mt","mt_lep_pt"}; int tmpVars = sizeof(vars)/sizeof(vars[0]); const int nVars = tmpVars; string plot_vars[nVars] = {"Dijet Pt","Jet N","MET_RefFinal","MT(lep,met)","Lepton Pt"}; }else if(event_type.find("ctrl_highm")!=string::npos){ string vars[] = {"dijet_m_lep_met_pt","dijet_m_dijet_pt","dijet_m_jet_n","dijet_m_met","dijet_m_lep_met_mt","dijet_m_lep_pt","dijet_m_lead_jet_pt","dijet_m_lep_met_dijet_mt"}; int tmpVars = sizeof(vars)/sizeof(vars[0]); const int nVars = tmpVars; string plot_vars[nVars] = {"Pt(lep,MET)","Dijet Pt","Jet N","MET_RefFinal","MT(lep,met)","Lepton Pt","Leading jet pt","Mt(lep,MET,dijet)"}; } // // ps // string regions[] = {"all"} // int tmpRegions = sizeof(regions)/sizeof(regions[0]); // const int nRegions = tmpRegions; gROOT->LoadMacro("../include/atlasstyle-00-03-04/AtlasStyle.C"); SetAtlasStyle(); gROOT->LoadMacro("../include/atlasstyle-00-03-04/AtlasUtils.C"); gROOT->LoadMacro("../include/atlasstyle-00-03-04/AtlasLabels.C"); gROOT->SetBatch(); cout<<endl; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"<<endl; cout<<"In wjetsPrint.C"<<endl; //string file_loc = "/Users/elw/analy/lvjj/plots/ctrl_plots/"; string file_loc; if(event_type.find("ps")!=string::npos){ file_loc="/Users/elw/Dropbox/eMacs/analy/lvjj/plots/gww_plots/"; }else if(event_type.find("ctrl")!=string::npos){ file_loc="/Users/elw/Dropbox/eMacs/analy/lvjj/plots/ctrl_plots/"; }else{ cout<<"Unknown plot source type: "<<event_type<<endl; exit(1); } ////////////////////////////////////////////////// // Load Data ////////////////////////////////////////////////// string file_end; if(event_type.find("ps")!=string::npos){ file_end=".plot.root"; }else if(event_type.find("ctrl")!=string::npos){ file_end=".ctrl.plot.root"; }else{ cout<<"Unknown plot source type: "<<event_type<<endl; exit(1); } string data_loc = file_loc+"merged/data.lnuj"+file_end; TFile* data = (TFile*) TFile::Open(data_loc.c_str()); ////////////////////////////////////////////////// // Load Scaled Backgrounds ////////////////////////////////////////////////// string sherpa_wjets_loc = file_loc+"merged/mc.sherpa.wjets"+file_end; string alpgen_wjets_loc = file_loc+"merged/mc.alpgen.wjets"+file_end; string vv_loc = file_loc+"merged/mc.herwig.vv"+file_end; string alpgen_qcd_loc = file_loc+"merged/qcd.alpgen"+file_end; string sherpa_qcd_loc = file_loc+"merged/qcd.sherpa"+file_end; string top_loc = file_loc+"merged/mc.mcatnlo.top"+file_end; string alpgen_zjets_loc = file_loc+"merged/mc.alpgen.zjets"+file_end; string sherpa_zjets_loc = file_loc+"merged/mc.sherpa.zjets"+file_end; TFile* sherpa_wjets = (TFile*) TFile::Open(sherpa_wjets_loc.c_str(),"READ"); TFile* alpgen_wjets = (TFile*) TFile::Open(alpgen_wjets_loc.c_str(),"READ"); TFile* top = (TFile*) TFile::Open(top_loc.c_str(),"READ"); TFile* alpgen_qcd = (TFile*) TFile::Open(alpgen_qcd_loc.c_str(),"READ"); TFile* vv = (TFile*) TFile::Open(vv_loc.c_str(),"READ"); TFile* sherpa_qcd = (TFile*) TFile::Open(sherpa_qcd_loc.c_str(),"READ"); TFile* sherpa_zjets = (TFile*) TFile::Open(sherpa_zjets_loc.c_str(),"READ"); TFile* alpgen_zjets = (TFile*) TFile::Open(alpgen_zjets_loc.c_str(),"READ"); const int nBkgds = 2; TFile* bkgd_files[nBkgds] = {vv,top}; ////////////////////////////////////////////////// // Histogram selection ////////////////////////////////////////////////// TH1F* h_data[nProcs][nVars]; TH1F* h_sherpa_bkgd[nProcs][nVars]; TH1F* h_alpgen_bkgd[nProcs][nVars]; THStack* stk_alpgen_bkgd[nProcs][nVars]; TH1F* h_sherpa_ratio[nProcs][nVars]; TH1F* h_alpgen_ratio[nProcs][nVars]; for(int p=0;p<nProcs;p++){// e.g. elec,muon string proc = procs[p]; for(int v=0;v<nVars;v++){// e.g. nocut_dijet_pt, dijet_m_lep_met_mt string var = vars[v]; string hist_name; if(event_type.find("ps")!=string::npos){ hist_name = "ps/h_"+proc+"_"+var; }else if(event_type.find("ctrl")!=string::npos){ hist_name = "h_"+event_type+"_"+proc+"_"+var; }else{ cout<<"Unknown plot source type: "<<event_type<<endl; exit(1); } ////////////////////////////////////////////////// // Load data ////////////////////////////////////////////////// //h_data[p][v] = (TH1F*) data->Get(hist_name.c_str())->Clone(); h_data[p][v] = (TH1F*) data->Get(hist_name.c_str()); ////////////////////////////////////////////////// // Load backgrounds ////////////////////////////////////////////////// // h_sherpa/alpgen for ratios //TH1F* cur_sherpa_wjets_hist = (TH1F*) sherpa_wjets->Get(hist_name.c_str())->Clone(); TH1F* cur_sherpa_wjets_hist = (TH1F*) sherpa_wjets->Get(hist_name.c_str()); h_sherpa_bkgd[p][v] = cur_sherpa_wjets_hist; TH1F* cur_sherpa_zjets_hist = (TH1F*) sherpa_zjets->Get(hist_name.c_str()); ((TH1F*) h_sherpa_bkgd[p][v])->Add(cur_sherpa_zjets_hist); h_sherpa_bkgd[p][v]->SetLineColor(sherpa_color); TH1F* cur_sherpa_qcd_hist = (TH1F*) sherpa_qcd->Get(hist_name.c_str()); ((TH1F*) h_sherpa_bkgd[p][v])->Add(cur_sherpa_qcd_hist); //alpgen //TH1F* cur_alpgen_wjets_hist = (TH1F*) alpgen_wjets->Get(hist_name.c_str())->Clone(); TH1F* cur_alpgen_wjets_hist = (TH1F*) alpgen_wjets->Get(hist_name.c_str()); h_alpgen_bkgd[p][v] = cur_alpgen_wjets_hist; TH1F* cur_alpgen_zjets_hist = (TH1F*) alpgen_zjets->Get(hist_name.c_str()); ((TH1F*) h_alpgen_bkgd[p][v])->Add(cur_alpgen_zjets_hist); h_alpgen_bkgd[p][v]->SetLineColor(alpgen_color); //TH1F* cur_alpgen_qcd_hist = (TH1F*) alpgen_qcd->Get(hist_name.c_str())->Clone(); TH1F* cur_alpgen_qcd_hist = (TH1F*) alpgen_qcd->Get(hist_name.c_str()); ((TH1F*) h_alpgen_bkgd[p][v])->Add(cur_alpgen_qcd_hist); h_alpgen_bkgd[p][v]->SetLineWidth(1); // h_alpgen_bkgd[p][v] = (TH1F*) alpgen_wjets->Get(hist_name.c_str())->Clone(); // ((TH1F*) h_alpgen_bkgd[p][v])->Add((TH1F*) alpgen_qcd->Get(hist_name.c_str())->Clone()); // ((TH1F*) h_alpgen_bkgd[p][v])->Add((TH1F*) alpgen_zjets->Get(hist_name.c_str())->Clone()); // h_alpgen_bkgd[p][v]->SetLineColor(alpgen_color); // string stack_name = "stk_"+event_type+"_"+proc+"_"+var; stk_alpgen_bkgd[p][v] = new THStack(stack_name.c_str(),hist_name.c_str()); TH1F* vv_hist = (TH1F*) vv->Get(hist_name.c_str())->Clone(); //vv_hist->SetFillStyle(3013); vv_hist->SetFillColor(kYellow-4); vv_hist->SetLineWidth(1); ((THStack*) stk_alpgen_bkgd[p][v])->Add(vv_hist,"hist"); // TH1F* alpgen_qcd_hist = (TH1F*) alpgen_qcd->Get(hist_name.c_str())->Clone(); // alpgen_qcd_hist->SetFillStyle(3003); // alpgen_qcd_hist->SetFillColor(kRed); // alpgen_qcd_hist->SetLineWidth(1); // ((THStack*) stk_alpgen_bkgd[p][v])->Add(alpgen_qcd_hist); // TH1F* alpgen_zjets_hist = (TH1F*) alpgen_zjets->Get(hist_name.c_str())->Clone(); // alpgen_zjets_hist->SetFillStyle(3018); // alpgen_zjets_hist->SetFillColor(kYellow); // alpgen_zjets_hist->SetLineWidth(1); // ((THStack*) stk_alpgen_bkgd[p][v])->Add(alpgen_zjets_hist); TH1F* top_hist = (TH1F*) top->Get(hist_name.c_str())->Clone(); //top_hist->SetFillStyle(3017); top_hist->SetFillColor(kAzure+1); top_hist->SetLineWidth(1); ((THStack*) stk_alpgen_bkgd[p][v])->Add(top_hist,"hist"); // TH1F* alpgen_wjets_hist = (TH1F*) alpgen_wjets->Get(hist_name.c_str())->Clone(); // //top_hist->SetF(3003); // alpgen_wjets_hist->SetLineColor(6); // alpgen_wjets_hist->SetLineWidth(2); // ((THStack*) stk_alpgen_bkgd[p][v])->Add(alpgen_wjets_hist); ((THStack*) stk_alpgen_bkgd[p][v])->Add((TH1F*) ((TH1F*) h_alpgen_bkgd[p][v])->Clone(),"hist"); ////////////////////////////////////////////////// // Alpgen printed as stack, to see other backgrounds // Sherpa background added ////////////////////////////////////////////////// for(int b=0;b<nBkgds;b++){ TH1F* bkgd_hist = (TH1F*) ((TFile*) bkgd_files[b])->Get(hist_name.c_str()); ((TH1F*) h_sherpa_bkgd[p][v])->Add(bkgd_hist); ((TH1F*) h_alpgen_bkgd[p][v])->Add(bkgd_hist); }// bkds ////////////////////////////////////////////////// // make ratio histogram ////////////////////////////////////////////////// int n_bins = ((TAxis*) h_data[p][v]->GetXaxis())->GetNbins(); float x_min = ((TAxis*) h_data[p][v]->GetXaxis())->GetXmin(); float x_max = ((TAxis*) h_data[p][v]->GetXaxis())->GetXmax(); string alpgen_ratio_name = "h_alpgen_ratio_"+event_type+"_"+proc+"_"+var; TH1F* alpgen_ratio = new TH1F(alpgen_ratio_name.c_str(),"",n_bins,x_min,x_max); string sherpa_ratio_name = "h_sherpa_ratio_"+event_type+"_"+proc+"_"+var; TH1F* sherpa_ratio = new TH1F(sherpa_ratio_name.c_str(),"",n_bins,x_min,x_max); for(int i=0;i<n_bins;i++){ //loop over bins float data_count = h_data[p][v]->GetBinContent(i); float data_err = h_data[p][v]->GetBinError(i); // alpgen float alpgen_bkgd_count= h_alpgen_bkgd[p][v]->GetBinContent(i); float alpgen_bkgd_err=sqrt(alpgen_bkgd_count); // Luminosity Error float alpgen_lumi_error = alpgen_bkgd_count*0.037; alpgen_bkgd_err = sqrt(pow(alpgen_lumi_error,2.)+pow(alpgen_bkgd_err,2.)); if(alpgen_bkgd_count && data_count) { ////////////////////////////////////////////////// // relErr((D-B)/B) = sqrt( (Err(D-B)/(D-B))^2 + (Err(B)/B)^2) //Err(D-B) double comb_alpgen_bkgd_data_err = sqrt(pow(data_err,2.)+pow(alpgen_bkgd_err,2.)); // Err(D-B)/(D-B) double rel_alpgen_bkgd_data_err = comb_alpgen_bkgd_data_err/(data_count-alpgen_bkgd_count); // Err(B)/B double rel_alpgen_bkgd_err = alpgen_bkgd_err/alpgen_bkgd_count; // relErr((D-B)/B) double rel_alpgen_ratio_err = sqrt(pow(rel_alpgen_bkgd_data_err,2.)+pow(rel_alpgen_bkgd_err,2.)); double cur_alpgen_ratio = (data_count-alpgen_bkgd_count)/alpgen_bkgd_count; double cur_alpgen_ratio_err = fabs(rel_alpgen_ratio_err*cur_alpgen_ratio); alpgen_ratio->SetBinContent(i,cur_alpgen_ratio); alpgen_ratio->SetBinError(i,cur_alpgen_ratio_err); } // sherpa float sherpa_bkgd_count= h_sherpa_bkgd[p][v]->GetBinContent(i); float sherpa_bkgd_err=sqrt(sherpa_bkgd_count); // Luminosity Error float sherpa_lumi_error = sherpa_bkgd_count*0.037; sherpa_bkgd_err = sqrt(pow(sherpa_lumi_error,2.)+pow(sherpa_bkgd_err,2.)); if(sherpa_bkgd_count && data_count) { ////////////////////////////////////////////////// // relErr((D-B)/B) = sqrt( (Err(D-B)/(D-B))^2 + (Err(B)/B)^2) //Err(D-B) double comb_sherpa_bkgd_data_err = sqrt(pow(data_err,2.)+pow(sherpa_bkgd_err,2.)); // Err(D-B)/(D-B) double rel_sherpa_bkgd_data_err = comb_sherpa_bkgd_data_err/(data_count-sherpa_bkgd_count); // Err(B)/B double rel_sherpa_bkgd_err = sherpa_bkgd_err/sherpa_bkgd_count; // relErr((D-B)/B) double rel_sherpa_ratio_err = sqrt(pow(rel_sherpa_bkgd_data_err,2.)+pow(rel_sherpa_bkgd_err,2.)); double cur_sherpa_ratio = (data_count-sherpa_bkgd_count)/sherpa_bkgd_count; double cur_sherpa_ratio_err = fabs(rel_sherpa_ratio_err*cur_sherpa_ratio); sherpa_ratio->SetBinContent(i,cur_sherpa_ratio); sherpa_ratio->SetBinError(i,cur_sherpa_ratio_err); } } h_sherpa_ratio[p][v] = (TH1F*) sherpa_ratio; h_alpgen_ratio[p][v] = (TH1F*) alpgen_ratio; }// vars }// procs ////////////////////////////////////////////////// // Plotting Loop ////////////////////////////////////////////////// const int nCanvases = nProcs*nVars; TCanvas* canvases[nCanvases]; TPad* ratio_pads[nCanvases]; TPad* plot_pads[nCanvases]; int c=0; //canvas index for(int p=0;p<nProcs;p++){// e.g. elec,muon string proc = procs[p]; for(int v=0;v<nVars;v++){// e.g. nocut_dijet_pt, dijet_m_lep_met_mt string var = vars[v]; string canvas_name = "tc_vjets_"+event_type+"_"+proc+"_"+var; string hist_name = "h_vjets_"+event_type+"_"+proc+"_"+var; ////////////////////////////////////////////////// // make canvas ////////////////////////////////////////////////// canvases[c] = new TCanvas(canvas_name.c_str(),canvas_name.c_str(),0,0,1920,1200); canvases[c]->cd(); ratio_pads[c] = new TPad("ratio_pad","ratio_pad",0.01,0.01,0.99,ratio_split); ratio_pads[c]->SetTopMargin(0.05); ratio_pads[c]->SetBottomMargin(0.31); ratio_pads[c]->Draw(); plot_pads[c] = new TPad("plot_pad","plot_pad",0.01,ratio_split,0.99,0.99); plot_pads[c]->SetBottomMargin(0); plot_pads[c]->Draw(); plot_pads[c]->cd(); plot_pads[c]->Update(); stk_alpgen_bkgd[p][v]->Draw(); ((THStack*) stk_alpgen_bkgd[p][v])->SetMinimum(0.1); stk_alpgen_bkgd[p][v]->Draw("hist"); //h_sherpa_bkgd[p][v]->SetLineColor(sherpa_color); h_sherpa_bkgd[p][v]->SetLineWidth(1); h_sherpa_bkgd[p][v]->GetXaxis()->SetTitle(plot_vars[v].c_str()); h_sherpa_bkgd[p][v]->Draw("hist sames"); h_data[p][v]->SetMarkerStyle(data_marker_style); h_data[p][v]->SetMarkerSize(data_marker_size); h_data[p][v]->Draw("sames PE"); cout<<vars[v]<<endl; if(vars[v].find("avg_int_per_xing") == string::npos && vars[v].find("dijet_m")==string::npos){ plot_pads[c]->SetLogy(); } canvases[c]->Update(); ////////////////////////////////////////////////// // make legend ////////////////////////////////////////////////// TLegend* lgnd = new TLegend(0.63,0.7,0.9,0.9); lgnd->SetFillColor(0); lgnd->SetTextSize(0.045); lgnd->AddEntry(h_data[p][v],"data","F"); lgnd->AddEntry(h_sherpa_bkgd[p][v],"SHERPA (qcd,v+jets)","F"); lgnd->AddEntry(h_alpgen_bkgd[p][v],"ALPGEN (qcd,v+jets)","F"); lgnd->AddEntry(top_hist,"mc.mcatnlo.top","F"); lgnd->AddEntry(vv_hist,"mc.herwig.vv","F"); lgnd->Draw(); ////////////////////////////////////////////////// // Do ratio ////////////////////////////////////////////////// ratio_pads[c]->cd(); ratio_pads[c]->SetGrid(); TAxis* alpgen_ratio_xaxis= h_alpgen_ratio[p][v]->GetXaxis(); TAxis* alpgen_ratio_yaxis= h_alpgen_ratio[p][v]->GetYaxis(); h_alpgen_ratio[p][v]->SetMarkerStyle(20); h_alpgen_ratio[p][v]->SetMarkerSize(2); h_alpgen_ratio[p][v]->SetLineWidth(1); h_alpgen_ratio[p][v]->SetLineColor(alpgen_color); alpgen_ratio_xaxis->SetLabelSize(0.08); alpgen_ratio_yaxis->SetLabelSize(0.08); alpgen_ratio_xaxis->SetTitle(plot_vars[v].c_str()); alpgen_ratio_xaxis->SetTitleSize(0.16); alpgen_ratio_xaxis->SetTitleOffset(0.7); alpgen_ratio_yaxis->SetNdivisions(4,4,4); alpgen_ratio_yaxis->SetTitle("(data-MC)/MC"); alpgen_ratio_yaxis->SetTitleSize(0.07); alpgen_ratio_yaxis->SetTitleOffset(0.36); alpgen_ratio_yaxis->SetRangeUser(-0.5,0.5); h_alpgen_ratio[p][v]->Draw("PE"); canvases[c]->Update(); TAxis* sherpa_ratio_yaxis= h_sherpa_ratio[p][v]->GetYaxis(); h_sherpa_ratio[p][v]->SetMarkerStyle(20); h_sherpa_ratio[p][v]->SetMarkerSize(2); h_sherpa_ratio[p][v]->SetLineColor(sherpa_color); sherpa_ratio_yaxis->SetRangeUser(-0.5,0.5); h_sherpa_ratio[p][v]->Draw("PE sames"); canvases[c]->Update(); plot_pads[c]->cd(); canvases[c]->RedrawAxis(); double leg_x1 = lgnd->GetX1NDC(); double leg_y1 = lgnd->GetY1NDC(); double offset_x1 = -0.02; double offset_y1 = 0.08; // If you want to write text on the plot (e.g. integrated luminosity) //string atlas_text = "ATLAS pre-approval"; string sqrts_text = "#sqrt{s}= 7 TeV"; string lumi_text = "#int Ldt = 4.701 fb^{-1}"; myText(leg_x1-offset_x1, leg_y1-offset_y1, 1, sqrts_text.c_str()); myText(leg_x1-offset_x1 + 0.1, leg_y1-offset_y1,1, lumi_text.c_str()); string cur_saveas = plot_loc+hist_name+save_ext; canvases[c]->SaveAs(cur_saveas.c_str()); ++c; } } sherpa_wjets->Close(); sherpa_zjets->Close(); vv->Close(); alpgen_qcd->Close(); sherpa_qcd->Close(); top->Close(); alpgen_zjets->Close(); sherpa_zjets->Close(); gROOT->ProcessLine(".q"); }