void canvasRAAPbPb_0_100() { //=========Macro generated from canvas: canvasRAA/canvasRAA //========= (Mon Nov 21 04:10:29 2016) by ROOT version6.02/10 TCanvas *canvasRAA = new TCanvas("canvasRAA", "canvasRAA",0,0,600,600); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); canvasRAA->SetHighLightColor(2); canvasRAA->Range(0.5519499,-0.2310559,1.777118,1.69441); canvasRAA->SetFillColor(0); canvasRAA->SetBorderMode(0); canvasRAA->SetBorderSize(2); canvasRAA->SetLogx(); canvasRAA->SetLeftMargin(0.12); canvasRAA->SetRightMargin(0.03); canvasRAA->SetTopMargin(0.075); canvasRAA->SetBottomMargin(0.12); canvasRAA->SetFrameBorderMode(0); canvasRAA->SetFrameBorderMode(0); TH2F *hemptyEff1 = new TH2F("hemptyEff1","",50,5,55,10,0,1.55); hemptyEff1->SetMinimum(0); hemptyEff1->SetMaximum(2); hemptyEff1->SetStats(0); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#000099"); hemptyEff1->SetLineColor(ci); hemptyEff1->SetMarkerStyle(20); hemptyEff1->GetXaxis()->SetTitle("p_{T} (GeV/c)"); hemptyEff1->GetXaxis()->CenterTitle(true); hemptyEff1->GetXaxis()->SetLabelFont(42); hemptyEff1->GetXaxis()->SetTitleSize(0.05); hemptyEff1->GetXaxis()->SetTitleFont(42); hemptyEff1->GetYaxis()->SetTitle("R_{AA}"); hemptyEff1->GetYaxis()->CenterTitle(true); hemptyEff1->GetYaxis()->SetLabelFont(42); hemptyEff1->GetYaxis()->SetTitleSize(0.05); hemptyEff1->GetYaxis()->SetTitleOffset(1.1); hemptyEff1->GetYaxis()->SetTitleFont(42); hemptyEff1->GetZaxis()->SetLabelFont(42); hemptyEff1->GetZaxis()->SetLabelSize(0.035); hemptyEff1->GetZaxis()->SetTitleSize(0.035); hemptyEff1->GetZaxis()->SetTitleFont(42); hemptyEff1->Draw(""); TLine *line = new TLine(5,1,55,1); line->SetLineStyle(2); line->SetLineWidth(2); line->Draw(); TBox *box = new TBox(5,0.8492652,5.35,1.150735); box->SetFillColor(16); box->SetLineColor(16); box->Draw(); TLatex * tex = new TLatex(0.38,0.595,"Centrality 0-100%"); tex->SetNDC(); tex->SetTextFont(42); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.13,0.936,"25.8 pb^{-1} (5.02 TeV pp) + 350.68 #mub^{-1} (5.02 TeV PbPb)"); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.038); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.15,0.9,"CMS"); tex->SetNDC(); tex->SetTextAlign(13); tex->SetTextSize(0.06); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.15,0.84,"Preliminary"); tex->SetNDC(); tex->SetTextAlign(13); tex->SetTextFont(52); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.23,0.7,"T_{AA} and lumi."); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.04); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.23,0.65,"uncertainty"); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.04); tex->SetLineWidth(2); tex->Draw(); Double_t gNuclearModification_fx3001[5] = { 8.5, 12.5, 17.5, 25, 40}; Double_t gNuclearModification_fy3001[5] = { 0.2588925, 0.3541164, 0.4248931, 0.6428491, 0.3291394}; Double_t gNuclearModification_felx3001[5] = { 1.5, 2.5, 2.5, 5, 10}; Double_t gNuclearModification_fely3001[5] = { 0.06471243, 0.08566381, 0.1025233, 0.1541752, 0.07884685}; Double_t gNuclearModification_fehx3001[5] = { 1.5, 2.5, 2.5, 5, 10}; Double_t gNuclearModification_fehy3001[5] = { 0.06471243, 0.08566381, 0.1025233, 0.1541752, 0.07884685}; TGraphAsymmErrors *grae = new TGraphAsymmErrors(5,gNuclearModification_fx3001,gNuclearModification_fy3001,gNuclearModification_felx3001,gNuclearModification_fehx3001,gNuclearModification_fely3001,gNuclearModification_fehy3001); grae->SetName("gNuclearModification"); grae->SetTitle("Graph"); ci = TColor::GetColor("#0099ff"); grae->SetFillColor(ci); grae->SetFillStyle(3001); ci = TColor::GetColor("#0099ff"); grae->SetLineColor(ci); ci = TColor::GetColor("#330066"); grae->SetMarkerColor(ci); grae->SetMarkerStyle(21); TH1F *Graph_gNuclearModification3001 = new TH1F("Graph_gNuclearModification3001","Graph",100,2.7,54.3); Graph_gNuclearModification3001->SetMinimum(0.1338956); Graph_gNuclearModification3001->SetMaximum(0.8573087); Graph_gNuclearModification3001->SetDirectory(0); Graph_gNuclearModification3001->SetStats(0); ci = TColor::GetColor("#000099"); Graph_gNuclearModification3001->SetLineColor(ci); Graph_gNuclearModification3001->SetMarkerStyle(20); Graph_gNuclearModification3001->GetXaxis()->SetLabelFont(42); Graph_gNuclearModification3001->GetXaxis()->SetLabelSize(0.035); Graph_gNuclearModification3001->GetXaxis()->SetTitleSize(0.035); Graph_gNuclearModification3001->GetXaxis()->SetTitleFont(42); Graph_gNuclearModification3001->GetYaxis()->SetLabelFont(42); Graph_gNuclearModification3001->GetYaxis()->SetLabelSize(0.035); Graph_gNuclearModification3001->GetYaxis()->SetTitleSize(0.035); Graph_gNuclearModification3001->GetYaxis()->SetTitleFont(42); Graph_gNuclearModification3001->GetZaxis()->SetLabelFont(42); Graph_gNuclearModification3001->GetZaxis()->SetLabelSize(0.035); Graph_gNuclearModification3001->GetZaxis()->SetTitleSize(0.035); Graph_gNuclearModification3001->GetZaxis()->SetTitleFont(42); grae->SetHistogram(Graph_gNuclearModification3001); grae->Draw("5"); Double_t xAxis1[6] = {7, 10, 15, 20, 30, 50}; TH1D *hNuclearModification2 = new TH1D("hNuclearModification2","",5, xAxis1); hNuclearModification2->SetBinContent(1,0.2588925); hNuclearModification2->SetBinContent(2,0.3541164); hNuclearModification2->SetBinContent(3,0.4248931); hNuclearModification2->SetBinContent(4,0.6428491); hNuclearModification2->SetBinContent(5,0.3291394); hNuclearModification2->SetBinError(1,0.1738922); hNuclearModification2->SetBinError(2,0.08216078); hNuclearModification2->SetBinError(3,0.09029037); hNuclearModification2->SetBinError(4,0.1168973); hNuclearModification2->SetBinError(5,0.1254217); hNuclearModification2->SetEntries(54.19682); ci = TColor::GetColor("#330066"); hNuclearModification2->SetLineColor(ci); hNuclearModification2->SetLineWidth(3); ci = TColor::GetColor("#330066"); hNuclearModification2->SetMarkerColor(ci); hNuclearModification2->SetMarkerStyle(21); hNuclearModification2->SetMarkerSize(1.2); hNuclearModification2->GetXaxis()->SetTitle("D^{0} p_{T} (GeV/c)"); hNuclearModification2->GetXaxis()->SetLabelFont(42); hNuclearModification2->GetXaxis()->SetLabelSize(0.035); hNuclearModification2->GetXaxis()->SetTitleSize(0.035); hNuclearModification2->GetXaxis()->SetTitleFont(42); hNuclearModification2->GetYaxis()->SetTitle("Uncorrected dN(D^{0})/dp_{T}"); hNuclearModification2->GetYaxis()->SetLabelFont(42); hNuclearModification2->GetYaxis()->SetLabelSize(0.035); hNuclearModification2->GetYaxis()->SetTitleSize(0.035); hNuclearModification2->GetYaxis()->SetTitleFont(42); hNuclearModification2->GetZaxis()->SetLabelFont(42); hNuclearModification2->GetZaxis()->SetLabelSize(0.035); hNuclearModification2->GetZaxis()->SetTitleSize(0.035); hNuclearModification2->GetZaxis()->SetTitleFont(42); hNuclearModification2->Draw("same"); TLegend *leg = new TLegend(0.6036242,0.7474695,0.942953,0.8457592,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextSize(0.04); leg->SetLineColor(0); leg->SetLineStyle(1); leg->SetLineWidth(1); leg->SetFillColor(0); leg->SetFillStyle(1001); TLegendEntry *entry=leg->AddEntry("gNuclearModification","B^{+} |y| < 1.0","pf"); ci = TColor::GetColor("#0099ff"); entry->SetFillColor(ci); entry->SetFillStyle(3001); ci = TColor::GetColor("#0099ff"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(1); ci = TColor::GetColor("#330066"); entry->SetMarkerColor(ci); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry->SetTextSize(0.038); leg->Draw(); TH2F *hemptyEff_copy3 = new TH2F("hemptyEff_copy3","",50,5,55,10,0,1.55); hemptyEff_copy3->SetMinimum(0); hemptyEff_copy3->SetMaximum(2); hemptyEff_copy3->SetDirectory(0); hemptyEff_copy3->SetStats(0); ci = TColor::GetColor("#000099"); hemptyEff_copy3->SetLineColor(ci); hemptyEff_copy3->SetMarkerStyle(20); hemptyEff_copy3->GetXaxis()->SetTitle("p_{T} (GeV/c)"); hemptyEff_copy3->GetXaxis()->CenterTitle(true); hemptyEff_copy3->GetXaxis()->SetLabelFont(42); hemptyEff_copy3->GetXaxis()->SetTitleSize(0.05); hemptyEff_copy3->GetXaxis()->SetTitleFont(42); hemptyEff_copy3->GetYaxis()->SetTitle("R_{AA}"); hemptyEff_copy3->GetYaxis()->CenterTitle(true); hemptyEff_copy3->GetYaxis()->SetLabelFont(42); hemptyEff_copy3->GetYaxis()->SetTitleSize(0.05); hemptyEff_copy3->GetYaxis()->SetTitleOffset(1.1); hemptyEff_copy3->GetYaxis()->SetTitleFont(42); hemptyEff_copy3->GetZaxis()->SetLabelFont(42); hemptyEff_copy3->GetZaxis()->SetLabelSize(0.035); hemptyEff_copy3->GetZaxis()->SetTitleSize(0.035); hemptyEff_copy3->GetZaxis()->SetTitleFont(42); hemptyEff_copy3->Draw("sameaxis"); canvasRAA->Modified(); canvasRAA->cd(); canvasRAA->SetSelected(canvasRAA); }
void plot_config_combsignal_category_monojet() { //=========Macro generated from canvas: c_0/c_0 //========= (Wed Mar 2 17:34:36 2016) by ROOT version6.07/03 TCanvas *c_0 = new TCanvas("c_0", "c_0",0,0,800,800); gStyle->SetOptStat(0); c_0->SetHighLightColor(2); c_0->Range(0,0,1,1); c_0->SetFillColor(0); c_0->SetBorderMode(0); c_0->SetBorderSize(2); c_0->SetFrameBorderMode(0); // ------------>Primitives in pad: p1 TPad *p1 = new TPad("p1", "p1",0,0.28,1,1); p1->Draw(); p1->cd(); p1->Range(99.99999,-1.766386,1100,4.975187); p1->SetFillColor(0); p1->SetBorderMode(0); p1->SetBorderSize(2); p1->SetLogy(); p1->SetBottomMargin(0.01); p1->SetFrameBorderMode(0); p1->SetFrameBorderMode(0); Double_t xAxis1[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *QCD_FITTY__1 = new TH1F("QCD_FITTY__1","",16, xAxis1); QCD_FITTY__1->SetBinContent(1,5.692051); QCD_FITTY__1->SetBinContent(2,0.6079234); QCD_FITTY__1->SetBinContent(3,0.1364834); QCD_FITTY__1->SetBinContent(5,0.1015811); QCD_FITTY__1->SetBinError(1,4.740265); QCD_FITTY__1->SetBinError(2,0.2887402); QCD_FITTY__1->SetBinError(3,0.1318165); QCD_FITTY__1->SetBinError(5,0.1015811); QCD_FITTY__1->SetMinimum(0.02); QCD_FITTY__1->SetMaximum(20000); QCD_FITTY__1->SetEntries(93114); TF1 *func1 = new TF1("func","[0]*(TMath::Exp(-[1]*x))",200,1000); func1->SetFillColor(19); func1->SetFillStyle(0); func1->SetLineColor(2); func1->SetLineWidth(2); func1->SetChisquare(1.944907); func1->SetNDF(14); func1->GetXaxis()->SetLabelFont(42); func1->GetXaxis()->SetLabelSize(0.035); func1->GetXaxis()->SetTitleSize(0.035); func1->GetXaxis()->SetTitleFont(42); func1->GetYaxis()->SetLabelFont(42); func1->GetYaxis()->SetLabelSize(0.035); func1->GetYaxis()->SetTitleSize(0.035); func1->GetYaxis()->SetTitleFont(42); func1->SetParameter(0,18385.94); func1->SetParError(0,68314.65); func1->SetParLimits(0,0,0); func1->SetParameter(1,0.03609646); func1->SetParError(1,0.01573978); func1->SetParLimits(1,0,0); QCD_FITTY__1->GetListOfFunctions()->Add(func1); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#000099"); QCD_FITTY__1->SetLineColor(ci); QCD_FITTY__1->GetXaxis()->SetLabelFont(42); QCD_FITTY__1->GetXaxis()->SetLabelSize(0); QCD_FITTY__1->GetXaxis()->SetTitleSize(0.035); QCD_FITTY__1->GetXaxis()->SetTitleFont(42); QCD_FITTY__1->GetYaxis()->SetTitle("Events/GeV"); QCD_FITTY__1->GetYaxis()->SetLabelFont(42); QCD_FITTY__1->GetYaxis()->SetLabelSize(0.045); QCD_FITTY__1->GetYaxis()->SetTitleSize(0.05); QCD_FITTY__1->GetYaxis()->SetTitleOffset(0.9); QCD_FITTY__1->GetYaxis()->SetTitleFont(42); QCD_FITTY__1->GetZaxis()->SetLabelFont(42); QCD_FITTY__1->GetZaxis()->SetLabelSize(0.035); QCD_FITTY__1->GetZaxis()->SetTitleSize(0.035); QCD_FITTY__1->GetZaxis()->SetTitleFont(42); QCD_FITTY__1->Draw(""); THStack *bkg = new THStack(); bkg->SetName("bkg"); bkg->SetTitle(""); Double_t xAxis2[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *bkg_stack_1 = new TH1F("bkg_stack_1","",16, xAxis2); bkg_stack_1->SetMinimum(0.4825172); bkg_stack_1->SetMaximum(1930.069); bkg_stack_1->SetDirectory(0); bkg_stack_1->SetStats(0); ci = TColor::GetColor("#000099"); bkg_stack_1->SetLineColor(ci); bkg_stack_1->GetXaxis()->SetLabelFont(42); bkg_stack_1->GetXaxis()->SetLabelSize(0.035); bkg_stack_1->GetXaxis()->SetTitleSize(0.035); bkg_stack_1->GetXaxis()->SetTitleFont(42); bkg_stack_1->GetYaxis()->SetLabelFont(42); bkg_stack_1->GetYaxis()->SetLabelSize(0.035); bkg_stack_1->GetYaxis()->SetTitleSize(0.035); bkg_stack_1->GetYaxis()->SetTitleFont(42); bkg_stack_1->GetZaxis()->SetLabelFont(42); bkg_stack_1->GetZaxis()->SetLabelSize(0.035); bkg_stack_1->GetZaxis()->SetTitleSize(0.035); bkg_stack_1->GetZaxis()->SetTitleFont(42); bkg->SetHistogram(bkg_stack_1); Double_t xAxis3[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__2 = new TH1F("signal_data__2","",16, xAxis3); signal_data__2->SetBinContent(1,3.366115); signal_data__2->SetBinContent(2,0.787499); signal_data__2->SetBinContent(3,0.1981346); signal_data__2->SetBinContent(4,0.05906976); signal_data__2->SetBinContent(5,0.02671834); signal_data__2->SetBinContent(6,0.009428909); signal_data__2->SetBinContent(7,0.003852866); signal_data__2->SetBinContent(9,0.001330514); signal_data__2->SetBinError(1,0.06263562); signal_data__2->SetBinError(2,0.03020511); signal_data__2->SetBinError(3,0.01526774); signal_data__2->SetBinError(4,0.008347501); signal_data__2->SetBinError(5,0.005865361); signal_data__2->SetBinError(6,0.003101941); signal_data__2->SetBinError(7,0.002245571); signal_data__2->SetBinError(9,0.001330514); signal_data__2->SetMinimum(0.02); signal_data__2->SetMaximum(20000); signal_data__2->SetEntries(93114); ci = TColor::GetColor("#006600"); signal_data__2->SetFillColor(ci); signal_data__2->SetLineWidth(2); signal_data__2->GetXaxis()->SetLabelFont(42); signal_data__2->GetXaxis()->SetLabelSize(0); signal_data__2->GetXaxis()->SetTitleSize(0.035); signal_data__2->GetXaxis()->SetTitleFont(42); signal_data__2->GetYaxis()->SetTitle("Events/GeV"); signal_data__2->GetYaxis()->SetLabelFont(42); signal_data__2->GetYaxis()->SetLabelSize(0.045); signal_data__2->GetYaxis()->SetTitleSize(0.05); signal_data__2->GetYaxis()->SetTitleOffset(0.9); signal_data__2->GetYaxis()->SetTitleFont(42); signal_data__2->GetZaxis()->SetLabelFont(42); signal_data__2->GetZaxis()->SetLabelSize(0.035); signal_data__2->GetZaxis()->SetTitleSize(0.035); signal_data__2->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); Double_t xAxis4[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__3 = new TH1F("signal_data__3","",16, xAxis4); signal_data__3->SetBinContent(1,5.462509); signal_data__3->SetBinContent(2,0.8986022); signal_data__3->SetBinContent(3,0.1478233); signal_data__3->SetBinContent(4,0.02431746); signal_data__3->SetBinContent(5,0.004000308); signal_data__3->SetBinContent(6,0.0006580651); signal_data__3->SetBinContent(7,0.0001082541); signal_data__3->SetBinContent(8,1.780818e-05); signal_data__3->SetBinContent(9,2.929509e-06); signal_data__3->SetBinContent(10,4.819148e-07); signal_data__3->SetBinContent(11,7.92767e-08); signal_data__3->SetBinContent(12,1.30413e-08); signal_data__3->SetBinContent(13,2.145341e-09); signal_data__3->SetBinContent(14,3.529162e-10); signal_data__3->SetBinContent(15,5.805598e-11); signal_data__3->SetBinContent(16,9.550416e-12); signal_data__3->SetEntries(93130); ci = TColor::GetColor("#990099"); signal_data__3->SetFillColor(ci); signal_data__3->SetLineWidth(2); signal_data__3->GetXaxis()->SetLabelFont(42); signal_data__3->GetXaxis()->SetLabelSize(0); signal_data__3->GetXaxis()->SetTitleSize(0.035); signal_data__3->GetXaxis()->SetTitleFont(42); signal_data__3->GetYaxis()->SetTitle("Events/GeV"); signal_data__3->GetYaxis()->SetLabelFont(42); signal_data__3->GetYaxis()->SetLabelSize(0.045); signal_data__3->GetYaxis()->SetTitleSize(0.05); signal_data__3->GetYaxis()->SetTitleOffset(0.9); signal_data__3->GetYaxis()->SetTitleFont(42); signal_data__3->GetZaxis()->SetLabelFont(42); signal_data__3->GetZaxis()->SetLabelSize(0.035); signal_data__3->GetZaxis()->SetTitleSize(0.035); signal_data__3->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); Double_t xAxis5[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__4 = new TH1F("signal_data__4","",16, xAxis5); signal_data__4->SetBinContent(1,11.27338); signal_data__4->SetBinContent(2,5.164269); signal_data__4->SetBinContent(3,2.134427); signal_data__4->SetBinContent(4,0.9783491); signal_data__4->SetBinContent(5,0.4964133); signal_data__4->SetBinContent(6,0.2830323); signal_data__4->SetBinContent(7,0.1401665); signal_data__4->SetBinContent(8,0.0659925); signal_data__4->SetBinContent(9,0.04940417); signal_data__4->SetBinContent(10,0.02696197); signal_data__4->SetBinContent(11,0.01117821); signal_data__4->SetBinContent(12,0.01268177); signal_data__4->SetBinContent(13,0.0008583732); signal_data__4->SetBinContent(14,0.005009577); signal_data__4->SetBinContent(15,0.001705303); signal_data__4->SetBinContent(16,0.0008942028); signal_data__4->SetBinError(1,0.1195696); signal_data__4->SetBinError(2,0.07936277); signal_data__4->SetBinError(3,0.04934242); signal_data__4->SetBinError(4,0.03261242); signal_data__4->SetBinError(5,0.02356661); signal_data__4->SetBinError(6,0.01626474); signal_data__4->SetBinError(7,0.01126338); signal_data__4->SetBinError(8,0.007697977); signal_data__4->SetBinError(9,0.007462621); signal_data__4->SetBinError(10,0.005887312); signal_data__4->SetBinError(11,0.002575424); signal_data__4->SetBinError(12,0.002793759); signal_data__4->SetBinError(13,0.0005778751); signal_data__4->SetBinError(14,0.003120235); signal_data__4->SetBinError(15,0.001219083); signal_data__4->SetBinError(16,0.0006213816); signal_data__4->SetMinimum(0.02); signal_data__4->SetMaximum(20000); signal_data__4->SetEntries(93114); ci = TColor::GetColor("#cccccc"); signal_data__4->SetFillColor(ci); signal_data__4->SetLineWidth(2); signal_data__4->GetXaxis()->SetLabelFont(42); signal_data__4->GetXaxis()->SetLabelSize(0); signal_data__4->GetXaxis()->SetTitleSize(0.035); signal_data__4->GetXaxis()->SetTitleFont(42); signal_data__4->GetYaxis()->SetTitle("Events/GeV"); signal_data__4->GetYaxis()->SetLabelFont(42); signal_data__4->GetYaxis()->SetLabelSize(0.045); signal_data__4->GetYaxis()->SetTitleSize(0.05); signal_data__4->GetYaxis()->SetTitleOffset(0.9); signal_data__4->GetYaxis()->SetTitleFont(42); signal_data__4->GetZaxis()->SetLabelFont(42); signal_data__4->GetZaxis()->SetLabelSize(0.035); signal_data__4->GetZaxis()->SetTitleSize(0.035); signal_data__4->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); Double_t xAxis6[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__5 = new TH1F("signal_data__5","",16, xAxis6); signal_data__5->SetBinContent(1,9.395635); signal_data__5->SetBinContent(2,2.767704); signal_data__5->SetBinContent(3,0.825768); signal_data__5->SetBinContent(4,0.270995); signal_data__5->SetBinContent(5,0.1046858); signal_data__5->SetBinContent(6,0.04337157); signal_data__5->SetBinContent(7,0.006181574); signal_data__5->SetBinContent(8,0.006578597); signal_data__5->SetBinContent(9,0.002775389); signal_data__5->SetBinContent(10,0.0001472684); signal_data__5->SetBinContent(12,0.001207239); signal_data__5->SetBinError(1,0.1914438); signal_data__5->SetBinError(2,0.09748959); signal_data__5->SetBinError(3,0.05366274); signal_data__5->SetBinError(4,0.03048251); signal_data__5->SetBinError(5,0.01732507); signal_data__5->SetBinError(6,0.009830044); signal_data__5->SetBinError(7,0.002704768); signal_data__5->SetBinError(8,0.002764011); signal_data__5->SetBinError(9,0.001745024); signal_data__5->SetBinError(10,0.0001403425); signal_data__5->SetBinError(12,0.001207239); signal_data__5->SetMinimum(0.02); signal_data__5->SetMaximum(20000); signal_data__5->SetEntries(93114); ci = TColor::GetColor("#ffcc00"); signal_data__5->SetFillColor(ci); signal_data__5->SetLineWidth(2); signal_data__5->GetXaxis()->SetLabelFont(42); signal_data__5->GetXaxis()->SetLabelSize(0); signal_data__5->GetXaxis()->SetTitleSize(0.035); signal_data__5->GetXaxis()->SetTitleFont(42); signal_data__5->GetYaxis()->SetTitle("Events/GeV"); signal_data__5->GetYaxis()->SetLabelFont(42); signal_data__5->GetYaxis()->SetLabelSize(0.045); signal_data__5->GetYaxis()->SetTitleSize(0.05); signal_data__5->GetYaxis()->SetTitleOffset(0.9); signal_data__5->GetYaxis()->SetTitleFont(42); signal_data__5->GetZaxis()->SetLabelFont(42); signal_data__5->GetZaxis()->SetLabelSize(0.035); signal_data__5->GetZaxis()->SetTitleSize(0.035); signal_data__5->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); Double_t xAxis7[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__6 = new TH1F("signal_data__6","",16, xAxis7); signal_data__6->SetBinContent(1,485.676); signal_data__6->SetBinContent(2,150.4476); signal_data__6->SetBinContent(3,48.99616); signal_data__6->SetBinContent(4,16.70447); signal_data__6->SetBinContent(5,7.399257); signal_data__6->SetBinContent(6,2.859279); signal_data__6->SetBinContent(7,1.354017); signal_data__6->SetBinContent(8,0.6687575); signal_data__6->SetBinContent(9,0.3364223); signal_data__6->SetBinContent(10,0.1512945); signal_data__6->SetBinContent(11,0.0427805); signal_data__6->SetBinContent(12,0.008073589); signal_data__6->SetBinContent(15,0.04519286); signal_data__6->SetBinError(1,5.197335); signal_data__6->SetBinError(2,2.689428); signal_data__6->SetBinError(3,1.486889); signal_data__6->SetBinError(4,0.7618376); signal_data__6->SetBinError(5,0.5645714); signal_data__6->SetBinError(6,0.2985256); signal_data__6->SetBinError(7,0.2173355); signal_data__6->SetBinError(8,0.1679533); signal_data__6->SetBinError(9,0.08155546); signal_data__6->SetBinError(10,0.07316577); signal_data__6->SetBinError(11,0.02187704); signal_data__6->SetBinError(12,0.008073589); signal_data__6->SetBinError(15,0.02937385); signal_data__6->SetMinimum(0.02); signal_data__6->SetMaximum(20000); signal_data__6->SetEntries(93114); ci = TColor::GetColor("#0066ff"); signal_data__6->SetFillColor(ci); signal_data__6->SetLineWidth(2); signal_data__6->GetXaxis()->SetLabelFont(42); signal_data__6->GetXaxis()->SetLabelSize(0); signal_data__6->GetXaxis()->SetTitleSize(0.035); signal_data__6->GetXaxis()->SetTitleFont(42); signal_data__6->GetYaxis()->SetTitle("Events/GeV"); signal_data__6->GetYaxis()->SetLabelFont(42); signal_data__6->GetYaxis()->SetLabelSize(0.045); signal_data__6->GetYaxis()->SetTitleSize(0.05); signal_data__6->GetYaxis()->SetTitleOffset(0.9); signal_data__6->GetYaxis()->SetTitleFont(42); signal_data__6->GetZaxis()->SetLabelFont(42); signal_data__6->GetZaxis()->SetLabelSize(0.035); signal_data__6->GetZaxis()->SetTitleSize(0.035); signal_data__6->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); Double_t xAxis8[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__7 = new TH1F("signal_data__7","",16, xAxis8); signal_data__7->SetBinContent(1,691.1194); signal_data__7->SetBinContent(2,259.5456); signal_data__7->SetBinContent(3,104.7472); signal_data__7->SetBinContent(4,44.93597); signal_data__7->SetBinContent(5,20.99294); signal_data__7->SetBinContent(6,10.32105); signal_data__7->SetBinContent(7,5.277536); signal_data__7->SetBinContent(8,2.623267); signal_data__7->SetBinContent(9,1.527075); signal_data__7->SetBinContent(10,0.8305721); signal_data__7->SetBinContent(11,0.4631412); signal_data__7->SetBinContent(12,0.2500485); signal_data__7->SetBinContent(13,0.1764325); signal_data__7->SetBinContent(14,0.08449654); signal_data__7->SetBinContent(15,0.06779213); signal_data__7->SetBinContent(16,0.03614071); signal_data__7->SetBinError(1,1.220341); signal_data__7->SetBinError(2,0.7476462); signal_data__7->SetBinError(3,0.4749452); signal_data__7->SetBinError(4,0.3110437); signal_data__7->SetBinError(5,0.2123163); signal_data__7->SetBinError(6,0.1491278); signal_data__7->SetBinError(7,0.1066568); signal_data__7->SetBinError(8,0.07549773); signal_data__7->SetBinError(9,0.05746214); signal_data__7->SetBinError(10,0.04245363); signal_data__7->SetBinError(11,0.03171115); signal_data__7->SetBinError(12,0.0230028); signal_data__7->SetBinError(13,0.01935178); signal_data__7->SetBinError(14,0.01319687); signal_data__7->SetBinError(15,0.01228991); signal_data__7->SetBinError(16,0.008698386); signal_data__7->SetMinimum(0.02); signal_data__7->SetMaximum(20000); signal_data__7->SetEntries(93114); ci = TColor::GetColor("#9999ff"); signal_data__7->SetFillColor(ci); signal_data__7->SetLineWidth(2); signal_data__7->GetXaxis()->SetLabelFont(42); signal_data__7->GetXaxis()->SetLabelSize(0); signal_data__7->GetXaxis()->SetTitleSize(0.035); signal_data__7->GetXaxis()->SetTitleFont(42); signal_data__7->GetYaxis()->SetTitle("Events/GeV"); signal_data__7->GetYaxis()->SetLabelFont(42); signal_data__7->GetYaxis()->SetLabelSize(0.045); signal_data__7->GetYaxis()->SetTitleSize(0.05); signal_data__7->GetYaxis()->SetTitleOffset(0.9); signal_data__7->GetYaxis()->SetTitleFont(42); signal_data__7->GetZaxis()->SetLabelFont(42); signal_data__7->GetZaxis()->SetLabelSize(0.035); signal_data__7->GetZaxis()->SetTitleSize(0.035); signal_data__7->GetZaxis()->SetTitleFont(42); bkg->Add(signal_data,""); bkg->Draw("histfsame"); Double_t xAxis9[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__8 = new TH1F("signal_data__8","",16, xAxis9); signal_data__8->SetBinContent(1,2.224751); signal_data__8->SetBinContent(2,1.974505); signal_data__8->SetBinContent(3,1.697419); signal_data__8->SetBinContent(4,1.381147); signal_data__8->SetBinContent(5,1.072331); signal_data__8->SetBinContent(6,0.7898172); signal_data__8->SetBinContent(7,0.6394378); signal_data__8->SetBinContent(8,0.5046116); signal_data__8->SetBinContent(9,0.4333764); signal_data__8->SetBinContent(10,0.3183351); signal_data__8->SetBinContent(11,0.2179884); signal_data__8->SetBinContent(12,0.2030754); signal_data__8->SetBinContent(13,0.1783056); signal_data__8->SetBinContent(14,0.1315356); signal_data__8->SetBinContent(15,0.08231596); signal_data__8->SetBinContent(16,0.06008587); signal_data__8->SetBinError(1,29.60662); signal_data__8->SetBinError(2,27.89184); signal_data__8->SetBinError(3,25.86084); signal_data__8->SetBinError(4,23.32749); signal_data__8->SetBinError(5,20.55477); signal_data__8->SetBinError(6,17.64052); signal_data__8->SetBinError(7,15.87257); signal_data__8->SetBinError(8,14.10025); signal_data__8->SetBinError(9,13.06715); signal_data__8->SetBinError(10,11.19929); signal_data__8->SetBinError(11,9.267548); signal_data__8->SetBinError(12,8.944927); signal_data__8->SetBinError(13,8.38167); signal_data__8->SetBinError(14,7.198961); signal_data__8->SetBinError(15,5.694953); signal_data__8->SetBinError(16,4.865577); signal_data__8->SetEntries(93114); ci = TColor::GetColor("#cc0000"); signal_data__8->SetLineColor(ci); signal_data__8->SetLineStyle(7); signal_data__8->SetLineWidth(5); signal_data__8->GetXaxis()->SetLabelFont(42); signal_data__8->GetXaxis()->SetLabelSize(0); signal_data__8->GetXaxis()->SetTitleSize(0.035); signal_data__8->GetXaxis()->SetTitleFont(42); signal_data__8->GetYaxis()->SetTitle("Events/GeV"); signal_data__8->GetYaxis()->SetLabelFont(42); signal_data__8->GetYaxis()->SetLabelSize(0.045); signal_data__8->GetYaxis()->SetTitleSize(0.05); signal_data__8->GetYaxis()->SetTitleOffset(0.9); signal_data__8->GetYaxis()->SetTitleFont(42); signal_data__8->GetZaxis()->SetLabelFont(42); signal_data__8->GetZaxis()->SetLabelSize(0.035); signal_data__8->GetZaxis()->SetTitleSize(0.035); signal_data__8->GetZaxis()->SetTitleFont(42); signal_data__8->Draw("samehist"); Double_t xAxis10[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__9 = new TH1F("signal_data__9","",16, xAxis10); signal_data__9->SetBinContent(1,1206.523); signal_data__9->SetBinContent(2,419.3206); signal_data__9->SetBinContent(3,157.0381); signal_data__9->SetBinContent(4,62.94885); signal_data__9->SetBinContent(5,29.12159); signal_data__9->SetBinContent(6,13.51616); signal_data__9->SetBinContent(7,6.781754); signal_data__9->SetBinContent(8,3.364596); signal_data__9->SetBinContent(9,1.917007); signal_data__9->SetBinContent(10,1.008976); signal_data__9->SetBinContent(11,0.5170999); signal_data__9->SetBinContent(12,0.2720111); signal_data__9->SetBinContent(13,0.1772909); signal_data__9->SetBinContent(14,0.08950612); signal_data__9->SetBinContent(15,0.1146903); signal_data__9->SetBinContent(16,0.03703492); signal_data__9->SetBinError(1,7.143284); signal_data__9->SetBinError(2,2.809285); signal_data__9->SetBinError(3,1.568227); signal_data__9->SetBinError(4,0.8241403); signal_data__9->SetBinError(5,0.6123951); signal_data__9->SetBinError(6,0.3342565); signal_data__9->SetBinError(7,0.2423832); signal_data__9->SetBinError(8,0.1843234); signal_data__9->SetBinError(9,0.1000685); signal_data__9->SetBinError(10,0.08479517); signal_data__9->SetBinError(11,0.03861133); signal_data__9->SetBinError(12,0.02456775); signal_data__9->SetBinError(13,0.01936041); signal_data__9->SetBinError(14,0.01356072); signal_data__9->SetBinError(15,0.03186457); signal_data__9->SetBinError(16,0.008720552); signal_data__9->SetMinimum(0.02); signal_data__9->SetMaximum(20000); signal_data__9->SetEntries(93114); signal_data__9->SetFillColor(1); signal_data__9->SetFillStyle(3144); ci = TColor::GetColor("#000099"); signal_data__9->SetLineColor(ci); signal_data__9->SetMarkerSize(0); signal_data__9->GetXaxis()->SetLabelFont(42); signal_data__9->GetXaxis()->SetLabelSize(0); signal_data__9->GetXaxis()->SetTitleSize(0.035); signal_data__9->GetXaxis()->SetTitleFont(42); signal_data__9->GetYaxis()->SetTitle("Events/GeV"); signal_data__9->GetYaxis()->SetLabelFont(42); signal_data__9->GetYaxis()->SetLabelSize(0.045); signal_data__9->GetYaxis()->SetTitleSize(0.05); signal_data__9->GetYaxis()->SetTitleOffset(0.9); signal_data__9->GetYaxis()->SetTitleFont(42); signal_data__9->GetZaxis()->SetLabelFont(42); signal_data__9->GetZaxis()->SetLabelSize(0.035); signal_data__9->GetZaxis()->SetTitleSize(0.035); signal_data__9->GetZaxis()->SetTitleFont(42); signal_data__9->Draw("E2same"); Double_t xAxis11[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__10 = new TH1F("signal_data__10","",16, xAxis11); signal_data__10->SetBinContent(1,1215.98); signal_data__10->SetBinContent(2,401.4); signal_data__10->SetBinContent(3,141.34); signal_data__10->SetBinContent(4,56.42); signal_data__10->SetBinContent(5,24.04); signal_data__10->SetBinContent(6,10.98); signal_data__10->SetBinContent(7,5.44); signal_data__10->SetBinContent(8,2.62); signal_data__10->SetBinContent(9,1.7); signal_data__10->SetBinContent(10,0.8); signal_data__10->SetBinContent(11,0.38); signal_data__10->SetBinContent(12,0.26); signal_data__10->SetBinContent(13,0.14); signal_data__10->SetBinContent(14,0.06); signal_data__10->SetBinContent(15,0.06); signal_data__10->SetBinContent(16,0.02); signal_data__10->SetBinError(1,4.931491); signal_data__10->SetBinError(2,2.833373); signal_data__10->SetBinError(3,1.681309); signal_data__10->SetBinError(4,1.062262); signal_data__10->SetBinError(5,0.6933974); signal_data__10->SetBinError(6,0.468615); signal_data__10->SetBinError(7,0.3298485); signal_data__10->SetBinError(8,0.2289105); signal_data__10->SetBinError(9,0.1843909); signal_data__10->SetBinError(10,0.1264911); signal_data__10->SetBinError(11,0.08717798); signal_data__10->SetBinError(12,0.07211103); signal_data__10->SetBinError(13,0.05291503); signal_data__10->SetBinError(14,0.03464102); signal_data__10->SetBinError(15,0.03464102); signal_data__10->SetBinError(16,0.02); signal_data__10->SetMinimum(0.02); signal_data__10->SetMaximum(20000); signal_data__10->SetEntries(93098); signal_data__10->SetMarkerStyle(20); signal_data__10->SetMarkerSize(0.9); signal_data__10->GetXaxis()->SetLabelFont(42); signal_data__10->GetXaxis()->SetLabelSize(0); signal_data__10->GetXaxis()->SetTitleSize(0.035); signal_data__10->GetXaxis()->SetTitleFont(42); signal_data__10->GetYaxis()->SetTitle("Events/GeV"); signal_data__10->GetYaxis()->SetLabelFont(42); signal_data__10->GetYaxis()->SetLabelSize(0.045); signal_data__10->GetYaxis()->SetTitleSize(0.05); signal_data__10->GetYaxis()->SetTitleOffset(0.9); signal_data__10->GetYaxis()->SetTitleFont(42); signal_data__10->GetZaxis()->SetLabelFont(42); signal_data__10->GetZaxis()->SetLabelSize(0.035); signal_data__10->GetZaxis()->SetTitleSize(0.035); signal_data__10->GetZaxis()->SetTitleFont(42); signal_data__10->Draw("same"); TLegend *leg = new TLegend(0.43,0.41,0.88,0.89,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(1); leg->SetFillColor(0); leg->SetFillStyle(1001); TLegendEntry *entry=leg->AddEntry("signal_data","Data","PEL"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(20); entry->SetMarkerSize(0.9); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","Z(#rightarrow #nu#nu)+jets","F"); ci = TColor::GetColor("#9999ff"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","W(#rightarrow l#nu)+jets","F"); ci = TColor::GetColor("#0066ff"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","top","F"); ci = TColor::GetColor("#ffcc00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","Dibosons","F"); ci = TColor::GetColor("#cccccc"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","QCD","F"); ci = TColor::GetColor("#990099"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","Z(#rightarrow ll)+jets","F"); ci = TColor::GetColor("#006600"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("signal_data","#splitline{Vector Mediator}{m_{med}=1 TeV, m_{DM}=10 GeV}","L"); ci = TColor::GetColor("#cc0000"); entry->SetLineColor(ci); entry->SetLineStyle(7); entry->SetLineWidth(5); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); leg->Draw(); Double_t xAxis12[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *QCD_FITTY_copy__11 = new TH1F("QCD_FITTY_copy__11","",16, xAxis12); QCD_FITTY_copy__11->SetBinContent(1,5.692051); QCD_FITTY_copy__11->SetBinContent(2,0.6079234); QCD_FITTY_copy__11->SetBinContent(3,0.1364834); QCD_FITTY_copy__11->SetBinContent(5,0.1015811); QCD_FITTY_copy__11->SetBinError(1,4.740265); QCD_FITTY_copy__11->SetBinError(2,0.2887402); QCD_FITTY_copy__11->SetBinError(3,0.1318165); QCD_FITTY_copy__11->SetBinError(5,0.1015811); QCD_FITTY_copy__11->SetMinimum(0.02); QCD_FITTY_copy__11->SetMaximum(20000); QCD_FITTY_copy__11->SetEntries(93114); QCD_FITTY_copy__11->SetDirectory(0); TF1 *func2 = new TF1("func","[0]*(TMath::Exp(-[1]*x))",200,1000); func2->SetFillColor(19); func2->SetFillStyle(0); func2->SetLineColor(2); func2->SetLineWidth(2); func2->SetChisquare(1.944907); func2->SetNDF(14); func2->GetXaxis()->SetLabelFont(42); func2->GetXaxis()->SetLabelSize(0.035); func2->GetXaxis()->SetTitleSize(0.035); func2->GetXaxis()->SetTitleFont(42); func2->GetYaxis()->SetLabelFont(42); func2->GetYaxis()->SetLabelSize(0.035); func2->GetYaxis()->SetTitleSize(0.035); func2->GetYaxis()->SetTitleFont(42); func2->SetParameter(0,18385.94); func2->SetParError(0,68314.65); func2->SetParLimits(0,0,0); func2->SetParameter(1,0.03609646); func2->SetParError(1,0.01573978); func2->SetParLimits(1,0,0); QCD_FITTY_copy__11->GetListOfFunctions()->Add(func2); ci = TColor::GetColor("#000099"); QCD_FITTY_copy__11->SetLineColor(ci); QCD_FITTY_copy__11->GetXaxis()->SetLabelFont(42); QCD_FITTY_copy__11->GetXaxis()->SetLabelSize(0); QCD_FITTY_copy__11->GetXaxis()->SetTitleSize(0.035); QCD_FITTY_copy__11->GetXaxis()->SetTitleFont(42); QCD_FITTY_copy__11->GetYaxis()->SetTitle("Events/GeV"); QCD_FITTY_copy__11->GetYaxis()->SetLabelFont(42); QCD_FITTY_copy__11->GetYaxis()->SetLabelSize(0.045); QCD_FITTY_copy__11->GetYaxis()->SetTitleSize(0.05); QCD_FITTY_copy__11->GetYaxis()->SetTitleOffset(0.9); QCD_FITTY_copy__11->GetYaxis()->SetTitleFont(42); QCD_FITTY_copy__11->GetZaxis()->SetLabelFont(42); QCD_FITTY_copy__11->GetZaxis()->SetLabelSize(0.035); QCD_FITTY_copy__11->GetZaxis()->SetTitleSize(0.035); QCD_FITTY_copy__11->GetZaxis()->SetTitleFont(42); QCD_FITTY_copy__11->Draw("sameaxis"); TLatex * tex = new TLatex(0.17,0.82,"#bf{CMS}"); tex->SetNDC(); tex->SetTextFont(42); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.72,0.92,"19.7 fb^{-1} (8 TeV)"); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.04); tex->SetLineWidth(2); tex->Draw(); p1->Modified(); c_0->cd(); // ------------>Primitives in pad: p2 TPad *p2 = new TPad("p2", "p2",0,0.068,1,0.28); p2->Draw(); p2->cd(); p2->Range(99.99999,0.03045454,1100,1.825909); p2->SetFillColor(0); p2->SetBorderMode(0); p2->SetBorderSize(2); p2->SetTopMargin(0.02); p2->SetFrameBorderMode(0); p2->SetFrameBorderMode(0); Double_t xAxis13[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__12 = new TH1F("signal_data__12","",16, xAxis13); signal_data__12->SetBinContent(1,1.00803); signal_data__12->SetBinContent(2,0.9565997); signal_data__12->SetBinContent(3,0.899971); signal_data__12->SetBinContent(4,0.8959371); signal_data__12->SetBinContent(5,0.8282797); signal_data__12->SetBinContent(6,0.8123214); signal_data__12->SetBinContent(7,0.8021396); signal_data__12->SetBinContent(8,0.7786927); signal_data__12->SetBinContent(9,0.8867975); signal_data__12->SetBinContent(10,0.7928828); signal_data__12->SetBinContent(11,0.7348676); signal_data__12->SetBinContent(12,0.9558432); signal_data__12->SetBinContent(13,0.7896627); signal_data__12->SetBinContent(14,0.6703452); signal_data__12->SetBinContent(15,0.523148); signal_data__12->SetBinContent(16,0.5400309); signal_data__12->SetBinError(1,0.004088137); signal_data__12->SetBinError(2,0.006752375); signal_data__12->SetBinError(3,0.0107056); signal_data__12->SetBinError(4,0.01686848); signal_data__12->SetBinError(5,0.02389048); signal_data__12->SetBinError(6,0.03466903); signal_data__12->SetBinError(7,0.04863685); signal_data__12->SetBinError(8,0.0680347); signal_data__12->SetBinError(9,0.09618669); signal_data__12->SetBinError(10,0.1253658); signal_data__12->SetBinError(11,0.1685902); signal_data__12->SetBinError(12,0.2651032); signal_data__12->SetBinError(13,0.2984644); signal_data__12->SetBinError(14,0.387024); signal_data__12->SetBinError(15,0.3020397); signal_data__12->SetBinError(16,0.5400309); signal_data__12->SetMinimum(0.21); signal_data__12->SetMaximum(1.79); signal_data__12->SetEntries(219.6838); signal_data__12->SetMarkerStyle(20); signal_data__12->SetMarkerSize(0.9); signal_data__12->GetXaxis()->SetLabelFont(42); signal_data__12->GetXaxis()->SetLabelSize(0.12); signal_data__12->GetXaxis()->SetTitleSize(0.085); signal_data__12->GetXaxis()->SetTitleFont(42); signal_data__12->GetYaxis()->SetTitle("Data/MC"); signal_data__12->GetYaxis()->SetNdivisions(5); signal_data__12->GetYaxis()->SetLabelFont(42); signal_data__12->GetYaxis()->SetLabelSize(0.12); signal_data__12->GetYaxis()->SetTitleSize(0.12); signal_data__12->GetYaxis()->SetTitleOffset(0.3); signal_data__12->GetYaxis()->SetTitleFont(42); signal_data__12->GetZaxis()->SetLabelFont(42); signal_data__12->GetZaxis()->SetLabelSize(0.035); signal_data__12->GetZaxis()->SetTitleSize(0.035); signal_data__12->GetZaxis()->SetTitleFont(42); signal_data__12->Draw(""); Double_t xAxis14[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__13 = new TH1F("signal_data__13","",16, xAxis14); signal_data__13->SetBinContent(1,1.00019); signal_data__13->SetBinContent(2,0.9993073); signal_data__13->SetBinContent(3,0.9999277); signal_data__13->SetBinContent(4,0.9996138); signal_data__13->SetBinContent(5,1.003362); signal_data__13->SetBinContent(6,0.9999514); signal_data__13->SetBinContent(7,0.999984); signal_data__13->SetBinContent(8,0.9999948); signal_data__13->SetBinContent(9,0.9999985); signal_data__13->SetBinContent(10,0.9999995); signal_data__13->SetBinContent(11,0.9999998); signal_data__13->SetBinContent(12,0.9999999); signal_data__13->SetBinContent(13,0.9999998); signal_data__13->SetBinContent(14,1); signal_data__13->SetBinContent(15,0.9999999); signal_data__13->SetBinContent(16,1); signal_data__13->SetBinError(1,0.005921683); signal_data__13->SetBinError(2,0.006694971); signal_data__13->SetBinError(3,0.009985558); signal_data__13->SetBinError(4,0.01308717); signal_data__13->SetBinError(5,0.0210996); signal_data__13->SetBinError(6,0.02472894); signal_data__13->SetBinError(7,0.03573992); signal_data__13->SetBinError(8,0.05478295); signal_data__13->SetBinError(9,0.05220027); signal_data__13->SetBinError(10,0.08404079); signal_data__13->SetBinError(11,0.07466899); signal_data__13->SetBinError(12,0.0903189); signal_data__13->SetBinError(13,0.1092014); signal_data__13->SetBinError(14,0.1515061); signal_data__13->SetBinError(15,0.2778315); signal_data__13->SetBinError(16,0.2354684); signal_data__13->SetMinimum(0.02); signal_data__13->SetMaximum(20000); signal_data__13->SetEntries(1301.711); ci = TColor::GetColor("#cccccc"); signal_data__13->SetFillColor(ci); ci = TColor::GetColor("#000099"); signal_data__13->SetLineColor(ci); signal_data__13->SetMarkerSize(0); signal_data__13->GetXaxis()->SetLabelFont(42); signal_data__13->GetXaxis()->SetLabelSize(0); signal_data__13->GetXaxis()->SetTitleSize(0.035); signal_data__13->GetXaxis()->SetTitleFont(42); signal_data__13->GetYaxis()->SetTitle("Events/GeV"); signal_data__13->GetYaxis()->SetLabelFont(42); signal_data__13->GetYaxis()->SetLabelSize(0.045); signal_data__13->GetYaxis()->SetTitleSize(0.05); signal_data__13->GetYaxis()->SetTitleOffset(0.9); signal_data__13->GetYaxis()->SetTitleFont(42); signal_data__13->GetZaxis()->SetLabelFont(42); signal_data__13->GetZaxis()->SetLabelSize(0.035); signal_data__13->GetZaxis()->SetTitleSize(0.035); signal_data__13->GetZaxis()->SetTitleFont(42); signal_data__13->Draw("sameE2"); Double_t xAxis15[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__14 = new TH1F("signal_data__14","",16, xAxis15); signal_data__14->SetBinContent(1,1.00803); signal_data__14->SetBinContent(2,0.9565997); signal_data__14->SetBinContent(3,0.899971); signal_data__14->SetBinContent(4,0.8959371); signal_data__14->SetBinContent(5,0.8282797); signal_data__14->SetBinContent(6,0.8123214); signal_data__14->SetBinContent(7,0.8021396); signal_data__14->SetBinContent(8,0.7786927); signal_data__14->SetBinContent(9,0.8867975); signal_data__14->SetBinContent(10,0.7928828); signal_data__14->SetBinContent(11,0.7348676); signal_data__14->SetBinContent(12,0.9558432); signal_data__14->SetBinContent(13,0.7896627); signal_data__14->SetBinContent(14,0.6703452); signal_data__14->SetBinContent(15,0.523148); signal_data__14->SetBinContent(16,0.5400309); signal_data__14->SetBinError(1,0.004088137); signal_data__14->SetBinError(2,0.006752375); signal_data__14->SetBinError(3,0.0107056); signal_data__14->SetBinError(4,0.01686848); signal_data__14->SetBinError(5,0.02389048); signal_data__14->SetBinError(6,0.03466903); signal_data__14->SetBinError(7,0.04863685); signal_data__14->SetBinError(8,0.0680347); signal_data__14->SetBinError(9,0.09618669); signal_data__14->SetBinError(10,0.1253658); signal_data__14->SetBinError(11,0.1685902); signal_data__14->SetBinError(12,0.2651032); signal_data__14->SetBinError(13,0.2984644); signal_data__14->SetBinError(14,0.387024); signal_data__14->SetBinError(15,0.3020397); signal_data__14->SetBinError(16,0.5400309); signal_data__14->SetMinimum(0.21); signal_data__14->SetMaximum(1.79); signal_data__14->SetEntries(219.6838); signal_data__14->SetMarkerStyle(20); signal_data__14->SetMarkerSize(0.9); signal_data__14->GetXaxis()->SetLabelFont(42); signal_data__14->GetXaxis()->SetLabelSize(0.12); signal_data__14->GetXaxis()->SetTitleSize(0.085); signal_data__14->GetXaxis()->SetTitleFont(42); signal_data__14->GetYaxis()->SetTitle("Data/MC"); signal_data__14->GetYaxis()->SetNdivisions(5); signal_data__14->GetYaxis()->SetLabelFont(42); signal_data__14->GetYaxis()->SetLabelSize(0.12); signal_data__14->GetYaxis()->SetTitleSize(0.12); signal_data__14->GetYaxis()->SetTitleOffset(0.3); signal_data__14->GetYaxis()->SetTitleFont(42); signal_data__14->GetZaxis()->SetLabelFont(42); signal_data__14->GetZaxis()->SetLabelSize(0.035); signal_data__14->GetZaxis()->SetTitleSize(0.035); signal_data__14->GetZaxis()->SetTitleFont(42); signal_data__14->Draw("same"); TLine *line = new TLine(200,1,1000,1); line->SetLineColor(2); line->SetLineWidth(3); line->Draw(); Double_t xAxis16[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data__15 = new TH1F("signal_data__15","",16, xAxis16); signal_data__15->SetBinContent(1,1.00803); signal_data__15->SetBinContent(2,0.9565997); signal_data__15->SetBinContent(3,0.899971); signal_data__15->SetBinContent(4,0.8959371); signal_data__15->SetBinContent(5,0.8282797); signal_data__15->SetBinContent(6,0.8123214); signal_data__15->SetBinContent(7,0.8021396); signal_data__15->SetBinContent(8,0.7786927); signal_data__15->SetBinContent(9,0.8867975); signal_data__15->SetBinContent(10,0.7928828); signal_data__15->SetBinContent(11,0.7348676); signal_data__15->SetBinContent(12,0.9558432); signal_data__15->SetBinContent(13,0.7896627); signal_data__15->SetBinContent(14,0.6703452); signal_data__15->SetBinContent(15,0.523148); signal_data__15->SetBinContent(16,0.5400309); signal_data__15->SetBinError(1,0.004088137); signal_data__15->SetBinError(2,0.006752375); signal_data__15->SetBinError(3,0.0107056); signal_data__15->SetBinError(4,0.01686848); signal_data__15->SetBinError(5,0.02389048); signal_data__15->SetBinError(6,0.03466903); signal_data__15->SetBinError(7,0.04863685); signal_data__15->SetBinError(8,0.0680347); signal_data__15->SetBinError(9,0.09618669); signal_data__15->SetBinError(10,0.1253658); signal_data__15->SetBinError(11,0.1685902); signal_data__15->SetBinError(12,0.2651032); signal_data__15->SetBinError(13,0.2984644); signal_data__15->SetBinError(14,0.387024); signal_data__15->SetBinError(15,0.3020397); signal_data__15->SetBinError(16,0.5400309); signal_data__15->SetMinimum(0.21); signal_data__15->SetMaximum(1.79); signal_data__15->SetEntries(219.6838); signal_data__15->SetMarkerStyle(20); signal_data__15->SetMarkerSize(0.9); signal_data__15->GetXaxis()->SetLabelFont(42); signal_data__15->GetXaxis()->SetLabelSize(0.12); signal_data__15->GetXaxis()->SetTitleSize(0.085); signal_data__15->GetXaxis()->SetTitleFont(42); signal_data__15->GetYaxis()->SetTitle("Data/MC"); signal_data__15->GetYaxis()->SetNdivisions(5); signal_data__15->GetYaxis()->SetLabelFont(42); signal_data__15->GetYaxis()->SetLabelSize(0.12); signal_data__15->GetYaxis()->SetTitleSize(0.12); signal_data__15->GetYaxis()->SetTitleOffset(0.3); signal_data__15->GetYaxis()->SetTitleFont(42); signal_data__15->GetZaxis()->SetLabelFont(42); signal_data__15->GetZaxis()->SetLabelSize(0.035); signal_data__15->GetZaxis()->SetTitleSize(0.035); signal_data__15->GetZaxis()->SetTitleFont(42); signal_data__15->Draw("same"); Double_t xAxis17[17] = {200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000}; TH1F *signal_data_copy__16 = new TH1F("signal_data_copy__16","",16, xAxis17); signal_data_copy__16->SetBinContent(1,1.00803); signal_data_copy__16->SetBinContent(2,0.9565997); signal_data_copy__16->SetBinContent(3,0.899971); signal_data_copy__16->SetBinContent(4,0.8959371); signal_data_copy__16->SetBinContent(5,0.8282797); signal_data_copy__16->SetBinContent(6,0.8123214); signal_data_copy__16->SetBinContent(7,0.8021396); signal_data_copy__16->SetBinContent(8,0.7786927); signal_data_copy__16->SetBinContent(9,0.8867975); signal_data_copy__16->SetBinContent(10,0.7928828); signal_data_copy__16->SetBinContent(11,0.7348676); signal_data_copy__16->SetBinContent(12,0.9558432); signal_data_copy__16->SetBinContent(13,0.7896627); signal_data_copy__16->SetBinContent(14,0.6703452); signal_data_copy__16->SetBinContent(15,0.523148); signal_data_copy__16->SetBinContent(16,0.5400309); signal_data_copy__16->SetBinError(1,0.004088137); signal_data_copy__16->SetBinError(2,0.006752375); signal_data_copy__16->SetBinError(3,0.0107056); signal_data_copy__16->SetBinError(4,0.01686848); signal_data_copy__16->SetBinError(5,0.02389048); signal_data_copy__16->SetBinError(6,0.03466903); signal_data_copy__16->SetBinError(7,0.04863685); signal_data_copy__16->SetBinError(8,0.0680347); signal_data_copy__16->SetBinError(9,0.09618669); signal_data_copy__16->SetBinError(10,0.1253658); signal_data_copy__16->SetBinError(11,0.1685902); signal_data_copy__16->SetBinError(12,0.2651032); signal_data_copy__16->SetBinError(13,0.2984644); signal_data_copy__16->SetBinError(14,0.387024); signal_data_copy__16->SetBinError(15,0.3020397); signal_data_copy__16->SetBinError(16,0.5400309); signal_data_copy__16->SetMinimum(0.21); signal_data_copy__16->SetMaximum(1.79); signal_data_copy__16->SetEntries(219.6838); signal_data_copy__16->SetDirectory(0); signal_data_copy__16->SetMarkerStyle(20); signal_data_copy__16->SetMarkerSize(0.9); signal_data_copy__16->GetXaxis()->SetLabelFont(42); signal_data_copy__16->GetXaxis()->SetLabelSize(0.12); signal_data_copy__16->GetXaxis()->SetTitleSize(0.085); signal_data_copy__16->GetXaxis()->SetTitleFont(42); signal_data_copy__16->GetYaxis()->SetTitle("Data/MC"); signal_data_copy__16->GetYaxis()->SetNdivisions(5); signal_data_copy__16->GetYaxis()->SetLabelFont(42); signal_data_copy__16->GetYaxis()->SetLabelSize(0.12); signal_data_copy__16->GetYaxis()->SetTitleSize(0.12); signal_data_copy__16->GetYaxis()->SetTitleOffset(0.3); signal_data_copy__16->GetYaxis()->SetTitleFont(42); signal_data_copy__16->GetZaxis()->SetLabelFont(42); signal_data_copy__16->GetZaxis()->SetLabelSize(0.035); signal_data_copy__16->GetZaxis()->SetTitleSize(0.035); signal_data_copy__16->GetZaxis()->SetTitleFont(42); signal_data_copy__16->Draw("sameaxis"); p2->Modified(); c_0->cd(); tex = new TLatex(0.72,0.02,"E_{T}^{miss} (GeV)"); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.04); tex->SetLineWidth(2); tex->Draw(); c_0->Modified(); c_0->cd(); c_0->SetSelected(c_0); }
void Fig1Rec_now4j() { // ======================== // Initialization // ======================== gROOT->Reset(); gROOT->SetStyle("Plain"); gROOT->LoadMacro("DividegPad.C"); // TCanvas *c1 = new TCanvas("c1","Plot"); TCanvas *c1 = new TCanvas("c1","Plot",600,800); // c1->SetLogy(1); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetFrameLineWidth(2); gStyle->SetEndErrorSize(0.); // gStyle->SetPaintTextFormat("5.3f"); // gStyle->SetPalette(1); // gStyle->SetPadGridX(kTRUE); TString f_ttx_root = "../LHEAnalysis_pp_ttx_Wmjjbbx.root"; TString f_Wmjjbbx_root = "../LHEAnalysis_pp_Wmjjbbx.root"; // TString f_Wmjjjj_root = "../LHEAnalysis_pp_Wmjjjj.root"; TString f_pdf = "Fig1Rec.pdf"; TString f_eps = "Fig1Rec.eps"; TFile* file_ttx = new TFile(f_ttx_root); TFile* file_Wmjjbbx = new TFile(f_Wmjjbbx_root); // TFile* file_Wmjjjj = new TFile(f_Wmjjjj_root); TH1D* h_ttx_MttRec = (TH1D*)file_ttx->Get("h_MttRec_Norm") ->Clone("h_ttx_MttRec"); TH1D* h_ttx_MttRec_Forw = (TH1D*)file_ttx->Get("h_MttRec_Forw") ->Clone("h_ttx_MttRec_Forw"); TH1D* h_ttx_MttRec_Backw = (TH1D*)file_ttx->Get("h_MttRec_Backw") ->Clone("h_ttx_MttRec_Backw"); TH1D* h_Wmjjbbx_MttRec = (TH1D*)file_Wmjjbbx->Get("h_MttRec_Norm") ->Clone("h_Wmjjbbx_MttRec"); TH1D* h_Wmjjbbx_MttRec_Forw = (TH1D*)file_Wmjjbbx->Get("h_MttRec_Forw") ->Clone("h_Wmjjbbx_MttRec_Forw"); TH1D* h_Wmjjbbx_MttRec_Backw = (TH1D*)file_Wmjjbbx->Get("h_MttRec_Backw") ->Clone("h_Wmjjbbx_MttRec_Backw"); /* TH1D* h_Wmjjjj_MttRec = (TH1D*)file_Wmjjjj->Get("h_MttRec_Norm") ->Clone("h_Wmjjjj_MttRec"); TH1D* h_Wmjjjj_MttRec_Forw = (TH1D*)file_Wmjjjj->Get("h_MttRec_Forw") ->Clone("h_Wmjjjj_MttRec_Forw"); TH1D* h_Wmjjjj_MttRec_Backw = (TH1D*)file_Wmjjjj->Get("h_MttRec_Backw") ->Clone("h_Wmjjjj_MttRec_Backw"); */ /* TH1D* h_w4j_MttRec = new TH1D((*h_Wmjjbbx_MttRec)+ (*h_Wmjjjj_MttRec)); TH1D* h_w4j_MttRec_Forw = new TH1D((*h_Wmjjbbx_MttRec_Forw)+ (*h_Wmjjjj_MttRec_Forw)); TH1D* h_w4j_MttRec_Backw = new TH1D((*h_Wmjjbbx_MttRec_Backw)+ (*h_Wmjjjj_MttRec_Backw)); */ /* gStyle->SetPadTopMargin(0.); gStyle->SetPadBottomMargin(0.); gStyle->SetPadLeftMargin(0.); gStyle->SetPadRightMargin(0.); */ Double_t ml = 0.1; Double_t mr = 0.1; Double_t mt = 0.4; Double_t mb = 0.4; Int_t nx = 1; Int_t ny = 2; DividegPad(nx,ny,ml,mr,mt,mb); TLegend* legend; TLine* line; TLatex* text = new TLatex(); text->SetTextAlign(12); text->SetTextSize(0.040); Double_t f_ytext = 0.88; Double_t ytext; Double_t ymin,ymax; Double_t x1leg = 0.70; Double_t y1leg = 0.43; Double_t x2leg = 0.88; Double_t y2leg = 0.58; /* const Int_t npt = 14; Double_t xpt[npt] = {325., 375., 425., 475., 525., 575., 625., 675., 725., 775., 825., 875., 925., 975.}; Double_t dxpt[npt] = { 25., 25., 25., 25., 25., 25., 25., 25., 25., 25., 25., 25., 25., 25.}; Double_t ypt_ttx[npt]; Double_t dypt_ttx[npt] = { 0. };; Double_t ypt_w4j[npt]; Double_t dypt_w4j[npt] = { 0. }; */ const Int_t npt = 4; // const Int_t npt = 7; Double_t xpt[npt]; // = {300., 400., 500., 600., 700., 800., 900.}; // = {400., 500., 600., 700., 800.}; Double_t dxpt[npt]; // = { 50., 50., 50., 50., 50.}; Double_t ypt_ttx[npt]; Double_t dypt_ttx[npt]; Double_t ypt_Wmjjjj[npt]; Double_t dypt_Wmjjjj[npt]; Double_t ypt_Wmjjbbx[npt]; Double_t dypt_Wmjjbbx[npt]; c1->cd(2); gPad->SetLogy(1); gPad->SetLeftMargin(0.12); gPad->SetBottomMargin(0.); // ymax = 9.6; ymax = 16.; ymin = 4.e-4; h_ttx_MttRec->SetMaximum(ymax); h_ttx_MttRec->SetMinimum(ymin); h_ttx_MttRec->SetLineWidth(2); h_ttx_MttRec->SetLineStyle(1); h_ttx_MttRec->SetLineColor(kRed+1); h_Wmjjbbx_MttRec->SetLineWidth(2); h_Wmjjbbx_MttRec->SetLineStyle(2); h_Wmjjbbx_MttRec->SetLineColor(kBlue+1); /* h_Wmjjjj_MttRec->SetMaximum(ymax); h_Wmjjjj_MttRec->SetMinimum(ymin); h_Wmjjjj_MttRec->SetLineWidth(2); h_Wmjjjj_MttRec->SetLineStyle(3); h_Wmjjjj_MttRec->SetLineColor(kGreen+1); */ h_ttx_MttRec->GetXaxis() ->SetTitle("M_{t#bar{t}} [GeV]"); h_ttx_MttRec->GetYaxis() ->SetTitle("d#sigma / d M_{t#bar{t}} [fb/GeV]"); h_ttx_MttRec->GetYaxis()->SetTitleOffset(1.2); // h_Wmjjjj_MttRec->Draw(); h_ttx_MttRec->Draw(); h_Wmjjbbx_MttRec->Draw("same"); legend = new TLegend(x1leg,y1leg,x2leg,y2leg); legend->AddEntry(h_ttx_MttRec,"t#bar{t}","l"); legend->AddEntry(h_Wmjjbbx_MttRec,"W+b#bar{b}+2j","l"); // legend->AddEntry(h_Wmjjjj_MttRec,"W+4j","l"); legend->SetTextSize(0.035); legend->SetBorderSize(0); legend->SetFillColor(0); legend->Draw(); Int_t nbins = h_ttx_MttRec->GetNbinsX(); Double_t sigma = 0.; for (Int_t ibin=1;ibin<=nbins;++ibin) { Double_t dx = h_ttx_MttRec->GetBinWidth(ibin); Double_t y = h_ttx_MttRec->GetBinContent(ibin); sigma += y*dx; } std::cout<<"sigma = "<<sigma<<std::endl; c1->cd(1); gPad->SetLeftMargin(0.12); gPad->SetTopMargin(0.); gPad->SetBottomMargin(0.6); Double_t nf, nb; Double_t asym, dasym; const Int_t ipt0 = 2; for (Int_t ipt=1;ipt<=npt;++ipt) { Int_t i=ipt0+ipt-1; Double_t xcent = h_ttx_MttRec_Forw->GetBinCenter(i); xpt[ipt-1] = xcent; Double_t xwid = 0.5*h_ttx_MttRec_Forw->GetBinWidth(i); dxpt[ipt-1] = xwid; nf = h_ttx_MttRec_Forw->GetBinContent(i); nb = h_ttx_MttRec_Backw->GetBinContent(i); Asymmetry(nf,nb, asym,dasym); ypt_ttx[ipt-1] = asym; dypt_ttx[ipt-1] = dasym; // std::cout<<"ttx:asym = "<<asym<<" +- "<<dasym<<std::endl; nf = h_Wmjjbbx_MttRec_Forw->GetBinContent(i); nb = h_Wmjjbbx_MttRec_Backw->GetBinContent(i); Asymmetry(nf,nb, asym,dasym); ypt_Wmjjbbx[ipt-1] = asym; dypt_Wmjjbbx[ipt-1] = dasym; // nf = h_Wmjjjj_MttRec_Forw->GetBinContent(i); //nb = h_Wmjjjj_MttRec_Backw->GetBinContent(i); //Asymmetry(nf,nb, asym,dasym); //ypt_Wmjjjj[ipt-1] = asym; //dypt_Wmjjjj[ipt-1] = dasym; // std::cout<<"w4j:asym = "<<xpt[ipt-1]<<", "<<asym<<" +- "<<dasym<<std::endl; } for (Int_t i=0;i<npt;++i) { std::cout<<"ttx: x,y = "<<xpt[i]<<" "<<ypt_ttx[i]<<std::endl; std::cout<<" : dx,dy = "<<dxpt[i]<<" "<<dypt_ttx[i]<<std::endl; } for (Int_t i=0;i<npt;++i) { std::cout<<"Wmjjjj: x,y = "<<xpt[i]<<" "<<ypt_Wmjjjj[i]<<std::endl; } TGraphErrors* g_ttx_asym = new TGraphErrors(npt,xpt,ypt_ttx,dxpt,dypt_ttx); TGraphErrors* g_Wmjjbbx_asym = new TGraphErrors(npt,xpt,ypt_Wmjjbbx,dxpt,dypt_Wmjjbbx); // TGraphErrors* g_Wmjjjj_asym = // new TGraphErrors(npt,xpt,ypt_Wmjjjj,dxpt,dypt_Wmjjjj); Double_t xmin = h_ttx_MttRec->GetXaxis()->GetXmin(); Double_t xmax = h_ttx_MttRec->GetXaxis()->GetXmax(); x1leg = 0.15; y1leg = 0.85; x2leg = 0.30; y2leg = 1.; // ymin = -0.25; // ymax = 0.35; ymin = -0.1; ymax = 0.199; g_ttx_asym->GetXaxis()->SetLimits(xmin,xmax); // g_ttx_asym->SetMinimum(ymin); // g_ttx_asym->SetMaximum(ymax); g_ttx_asym->SetMinimum(ymin); g_ttx_asym->SetMaximum(ymax); g_ttx_asym->GetXaxis()->SetTitle("M_{t#bar{t}} [GeV]"); g_ttx_asym->GetYaxis()->SetTitle("Asymmetry"); g_ttx_asym->GetYaxis()->SetTitleOffset(1.2); g_ttx_asym->SetMarkerStyle(20); g_ttx_asym->SetMarkerSize(0.8); g_ttx_asym->SetMarkerColor(kRed+1); g_ttx_asym->SetLineWidth(2); g_ttx_asym->SetLineStyle(1); g_ttx_asym->SetLineColor(kRed+1); g_ttx_asym->Draw("ap"); g_Wmjjbbx_asym->SetMarkerStyle(21); g_Wmjjbbx_asym->SetMarkerSize(0.7); g_Wmjjbbx_asym->SetMarkerColor(kBlue+1); g_Wmjjbbx_asym->SetLineWidth(2); g_Wmjjbbx_asym->SetLineStyle(1); g_Wmjjbbx_asym->SetLineColor(kBlue+1); g_Wmjjbbx_asym->Draw("p same"); /* g_Wmjjjj_asym->SetMarkerStyle(22); g_Wmjjjj_asym->SetMarkerSize(0.9); g_Wmjjjj_asym->SetMarkerColor(kGreen+1); g_Wmjjjj_asym->SetLineWidth(2); g_Wmjjjj_asym->SetLineStyle(1); g_Wmjjjj_asym->SetLineColor(kGreen+1); g_Wmjjjj_asym->Draw("p same"); */ legend = new TLegend(x1leg,y1leg,x2leg,y2leg); legend->AddEntry(g_ttx_asym,"t#bar{t}","lp"); legend->AddEntry(g_Wmjjbbx_asym,"W+b#bar{b}+2j","lp"); // legend->AddEntry(g_Wmjjjj_asym,"W+4j","lp"); legend->SetTextSize(0.035); legend->SetBorderSize(0); legend->SetFillColor(0); legend->Draw(); line = new TLine(xmin,0.,xmax,0.); line->SetLineWidth(1); line->Draw(); /* ytext = f_ytext*ymax; text->DrawLatex(1.,ytext,"M_{t#bar{t}} > 450GeV"); */ c1->Update(); c1->Print(f_pdf); }
void validation() { msglvl[DBG] = SILENT; msglvl[INF] = VISUAL; msglvl[WRN] = VISUAL; msglvl[ERR] = VISUAL; msglvl[FAT] = VISUAL; TDirectory* oldDir = gDirectory; // remember old directory style(); Int_t g4bin = (ng4bins/g4max+1); //==> g^4=1 ==> SSM ! TString suffix = ""; if(doTruth) suffix = "_truth"; TString mctype = (isMC11c) ? "mc11c" : "mc11a"; // TString fBGname = "plots/ZP_2dtemplates_"+mctype+"_33st_overallEWkF_noInAmpSigEWkF_noHighMbins_wthOfficialZP_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_"+mctype+"_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_noTruth_wthOfficialZP_treeLevelMass_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_"+mctype+"_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_wthOfficialZP_treeLevelMass_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_mc11c_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_wthOfficialZP_fixedBWwidth_treeLevelMass_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_mc11c_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_noTruth_wthOfficialZP_treeLevelMass_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_"+mctype+"_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_noTruth_wthOfficialZP_treeLevelMass_Xmass2000.root"; // TString fBGname = "plots/ZP_2dtemplates_"+mctype+"_33st_noKKtmplates_overallEWkF_noInAmpSigEWkF_noTruth_wthOfficialZP_fixedBWwidth_treeLevelMass_Xmass2000.root"; TLegend* legR = new TLegend(0.15,0.75,0.35,0.85,NULL,"brNDC"); legR->SetFillStyle(4000); //will be transparent legR->SetFillColor(0); legR->SetTextFont(42); TH1D* hDummy = new TH1D("","",1,0.,1.); hDummy->SetMarkerStyle(20); hDummy->SetMarkerSize(0.8); hDummy->SetMarkerColor(kBlack); if(!doResiduals) legR->AddEntry(hDummy,"#frac{template}{official}","lep"); else legR->AddEntry(hDummy,"#frac{template - official}{#sqrt{#delta^{2}template + #delta^{2}official}}","lep"); TPaveText* ptxt = new TPaveText(0.145,0.35,0.245,0.55,"NDC"); TText* txt; ptxt->SetTextSize(0.03); ptxt->SetBorderSize(0); ptxt->SetFillStyle(4000); //will be transparent ptxt->SetFillColor(0); ptxt->SetTextAlign(12); txt = ptxt->AddText("This range"); txt = ptxt->AddText("is chopped"); txt = ptxt->AddText("before the"); txt = ptxt->AddText("template is"); txt = ptxt->AddText("handed to"); txt = ptxt->AddText("BAT (limit)."); oldDir->cd(); TString fBGname = "plots/validation/ZP_2dtemplates_mc11c_33st_noKKtmplates_wthOfficialZP_treeLevelMass_Xmass2000.root"; TFile* fD = new TFile(fBGname,"READ"); TH1D* hDY = NULL; if(doTruth) hDY = (TH1D*)fD->Get("hMass_DYmumu_truth")->Clone(); else hDY = (TH1D*)fD->Get("hMass_DYmumu")->Clone(); hDY->SetLineColor(kMagenta-5); hDY->SetMarkerColor(kMagenta-5); oldDir->cd(); TFile* fDYrozmin = new TFile("plots/mass_plot_tables_3st.root","READ"); TH1D* hDYrozmin = (TH1D*)fDYrozmin->Get("mass_log_dy")->Clone(); hDYrozmin = (TH1D*)hGeV2TeV(hDYrozmin)->Clone(); hDYrozmin = (TH1D*)hChopper(hDYrozmin,bins2chop)->Clone(); oldDir->cd(); TFile* f1dTemplates = new TFile("plots/ZpSignal_MM_MC11c_5points.root","READ"); TObjArray* toarr1d = new TObjArray(); toarr1d->Read("template"); TMapTSP2TH1D h1dBrandeisTmpltMap; double Nflat = 399948; double sigmaflat = 4.3988E+07*nb2fb; double Lmcflat = Nflat/sigmaflat; double scale = luminosity/Lmcflat; TH1D* h1dTmp = NULL; h1dTmp = (TH1D*)((TObjArray*)toarr1d->At(0/*22*/))->Clone(); h1dTmp->Scale(scale); h1dTmp = (TH1D*)hChopper(h1dTmp,bins2chop)->Clone(); h1dTmp->Add(hDYrozmin); h1dBrandeisTmpltMap.insert( make_pair("1000",(TH1D*)resetErrors(h1dTmp)->Clone("1000")) ); h1dTmp = NULL; h1dTmp = (TH1D*)((TObjArray*)toarr1d->At(1/*28*/))->Clone(); h1dTmp->Scale(scale); h1dTmp = (TH1D*)hChopper(h1dTmp,bins2chop)->Clone(); h1dTmp->Add(hDYrozmin); h1dBrandeisTmpltMap.insert( make_pair("1250",(TH1D*)resetErrors(h1dTmp)->Clone("1250")) ); h1dTmp = NULL; h1dTmp = (TH1D*)((TObjArray*)toarr1d->At(2/*34*/))->Clone(); h1dTmp->Scale(scale); h1dTmp = (TH1D*)hChopper(h1dTmp,bins2chop)->Clone(); h1dTmp->Add(hDYrozmin); h1dBrandeisTmpltMap.insert( make_pair("1500",(TH1D*)resetErrors(h1dTmp)->Clone("1500")) ); h1dTmp = NULL; h1dTmp = (TH1D*)((TObjArray*)toarr1d->At(3/*40*/))->Clone(); h1dTmp->Scale(scale); h1dTmp = (TH1D*)hChopper(h1dTmp,bins2chop)->Clone(); h1dTmp->Add(hDYrozmin); h1dBrandeisTmpltMap.insert( make_pair("1750",(TH1D*)resetErrors(h1dTmp)->Clone("1750")) ); h1dTmp = NULL; h1dTmp = (TH1D*)((TObjArray*)toarr1d->At(4/*47*/))->Clone(); h1dTmp->Scale(scale); h1dTmp = (TH1D*)hChopper(h1dTmp,bins2chop)->Clone(); h1dTmp->Add(hDYrozmin); h1dBrandeisTmpltMap.insert( make_pair("2000",(TH1D*)resetErrors(h1dTmp)->Clone("2000")) ); oldDir->cd(); TMapTSP2TH1D h1Map; h1Map.insert( make_pair("1000o", (TH1D*)fD->Get("hMass_Zprime_SSM1000"+suffix)->Clone()) ); h1Map.insert( make_pair("1000t", (TH1D*)fD->Get("hMass_Zprime_SSM1000_template"+suffix)->Clone()) ); if(isMC11c) { h1Map.insert( make_pair("1250o", (TH1D*)fD->Get("hMass_Zprime_SSM1250"+suffix)->Clone()) ); h1Map.insert( make_pair("1250t", (TH1D*)fD->Get("hMass_Zprime_SSM1250_template"+suffix)->Clone()) ); } h1Map.insert( make_pair("1500o", (TH1D*)fD->Get("hMass_Zprime_SSM1500"+suffix)->Clone()) ); h1Map.insert( make_pair("1500t", (TH1D*)fD->Get("hMass_Zprime_SSM1500_template"+suffix)->Clone()) ); h1Map.insert( make_pair("1750o", (TH1D*)fD->Get("hMass_Zprime_SSM1750"+suffix)->Clone()) ); h1Map.insert( make_pair("1750t", (TH1D*)fD->Get("hMass_Zprime_SSM1750_template"+suffix)->Clone()) ); h1Map.insert( make_pair("2000o", (TH1D*)fD->Get("hMass_Zprime_SSM2000"+suffix)->Clone()) ); h1Map.insert( make_pair("2000t", (TH1D*)fD->Get("hMass_Zprime_SSM2000_template"+suffix)->Clone()) ); TMapTSP2TH1D h1rMap; h1rMap.insert( make_pair("1000", (TH1D*)fD->Get("hMass_Zprime_SSM1000"+suffix)->Clone()) ); if(isMC11c) h1rMap.insert( make_pair("1250", (TH1D*)fD->Get("hMass_Zprime_SSM1250"+suffix)->Clone()) ); h1rMap.insert( make_pair("1500", (TH1D*)fD->Get("hMass_Zprime_SSM1500"+suffix)->Clone()) ); h1rMap.insert( make_pair("1750", (TH1D*)fD->Get("hMass_Zprime_SSM1750"+suffix)->Clone()) ); h1rMap.insert( make_pair("2000", (TH1D*)fD->Get("hMass_Zprime_SSM2000"+suffix)->Clone()) ); for(TMapTSP2TH1D::iterator it=h1rMap.begin() ; it!=h1rMap.end() ; ++it) { it->second->Reset(); if(!doResiduals) it->second->Divide(h1Map[it->first+"o"],h1Map[it->first+"t"],1.,1.,"B"); else residuals(h1Map[it->first+"o"], h1Map[it->first+"t"], it->second); // for(Int_t i=0 ; i<=it->second->GetNbinsX()+1 ; i++) it->second->SetBinError(i,0); it->second->SetMarkerStyle(20); it->second->SetMarkerSize(0.5); it->second->GetXaxis()->SetLabelSize(0.073); it->second->GetYaxis()->SetLabelSize(0.073); it->second->GetXaxis()->SetTitleSize(0.073); it->second->GetYaxis()->SetTitleSize(0.073); it->second->SetTitleSize(0.075); it->second->GetYaxis()->SetTitleOffset(0.5); if(!doResiduals) { it->second->SetMinimum(0.2); it->second->SetMaximum(1.8); } else { it->second->SetMinimum(-5.); it->second->SetMaximum(+5.); } it->second->SetTitle(""); if(!doResiduals) it->second->GetYaxis()->SetTitle("ratio"); else it->second->GetYaxis()->SetTitle("residuals"); } TMapTSP2TGAE poissonGraphMap; TMapTSP2TLeg legMap; _INFO(""); oldDir->cd(); fD->cd(); TH1D* h1Template = (TH1D*)fD->Get("hMass_DYmumu"+suffix)->Clone(); h1Template->Reset(); TObjArray* toarr = new TObjArray(); if(doTruth) toarr->Read("truth_template2d"); else toarr->Read("template2d"); TH2D* h2SSM2000 = (TH2D*)((TObjArray*)toarr->At(0))->Clone("hMass"+suffix+"_Zprime_SSM2000_template2d"); for(Int_t bin=1 ; bin<=h2SSM2000->GetNbinsX() ; bin++) { h1Template->SetBinContent(bin, h2SSM2000->GetBinContent(bin,g4bin)); h1Template->SetBinError(bin, h2SSM2000->GetBinError(bin,g4bin)); } h1Template->SetLineColor(kViolet); h1Template->SetLineWidth(1); h1Template->SetMarkerStyle(20); h1Template->SetMarkerSize(0.3); h1Template->SetMarkerColor(kViolet); // the functions h2Template = (TH2D*)h2SSM2000->Clone(); vector<TF1*> vfunc; unsigned int nmllbins = h2Template->GetNbinsX(); for(unsigned int mll=1 ; mll<=(nmllbins-bins2chop) ; mll++) // 1...(56-9 = 47) { TString mllname = (TString)_s(mll); TString mllval = (TString)_s(h2Template->GetXaxis()->GetBinCenter(mll+bins2chop)); TF1* f = new TF1("fNominal_mll"+mllname,fTH1toTF1,g4min,g4max,1); f->SetParameter(0,mll); f->SetParNames("mll"); // f->SetLineColor(kBlue); // f->SetLineWidth(1); f->SetNpx(400); vfunc.push_back(f); } TGraph* graphDY = new TGraph(); graphDY->SetMarkerStyle(25); graphDY->SetMarkerSize(0.6); graphDY->SetMarkerColor(kGreen+2); TGraph* graphSSM = new TGraph(); graphSSM->SetMarkerStyle(24); graphSSM->SetMarkerSize(0.6); graphSSM->SetMarkerColor(kOrange+8); for(unsigned int i=0 ; i<vfunc.size() ; i++) { double DY = vfunc[i]->Eval(0.0); double SSM = vfunc[i]->Eval(1.0); graphDY->SetPoint(i,h2Template->GetXaxis()->GetBinCenter(bins2chop+i+1),DY); graphSSM->SetPoint(i,h2Template->GetXaxis()->GetBinCenter(bins2chop+i+1),SSM); } oldDir->cd(); TObjArray* toarr1dTLV = new TObjArray(); TMapTSP2TH1D h1dTlvTmpltMap; TFile* fT = NULL; TString fTname = "plots/validation/ZP_2dtemplates_mc11c_33st_noInterference_noKKtmplates_noOverallEWkF_wthOfficialZP_treeLevelMass_Xmass"; fT = new TFile(fTname+"1000.root","READ"); toarr1dTLV->Read("template"); h1dTmp = (TH1D*)((TObjArray*)toarr1dTLV->At(0))->Clone(); h1dTmp->Add(hDY); h1dTlvTmpltMap.insert( make_pair("1000",(TH1D*)resetErrors(h1dTmp)->Clone("1000")) ); fT = new TFile(fTname+"1250.root","READ"); toarr1dTLV->Read("template"); h1dTmp = (TH1D*)((TObjArray*)toarr1dTLV->At(0))->Clone(); h1dTmp->Add(hDY); h1dTlvTmpltMap.insert( make_pair("1250",(TH1D*)resetErrors(h1dTmp)->Clone("1250")) ); fT = new TFile(fTname+"1500.root","READ"); toarr1dTLV->Read("template"); h1dTmp = (TH1D*)((TObjArray*)toarr1dTLV->At(0))->Clone(); h1dTmp->Add(hDY); h1dTlvTmpltMap.insert( make_pair("1500",(TH1D*)resetErrors(h1dTmp)->Clone("1500")) ); fT = new TFile(fTname+"1750.root","READ"); toarr1dTLV->Read("template"); h1dTmp = (TH1D*)((TObjArray*)toarr1dTLV->At(0))->Clone(); h1dTmp->Add(hDY); h1dTlvTmpltMap.insert( make_pair("1750",(TH1D*)resetErrors(h1dTmp)->Clone("1750")) ); fT = new TFile(fTname+"2000.root","READ"); toarr1dTLV->Read("template"); h1dTmp = (TH1D*)((TObjArray*)toarr1dTLV->At(0))->Clone(); h1dTmp->Add(hDY); h1dTlvTmpltMap.insert( make_pair("2000",(TH1D*)resetErrors(h1dTmp)->Clone("2000")) ); oldDir->cd(); for(TMapTSP2TH1D::iterator it=h1Map.begin() ; it!=h1Map.end() ; ++it) { if(it->first.Contains("o")) { TString name = it->first; name.ReplaceAll("o",""); it->second->SetFillColor(kAzure-9); if(doTruth) it->second->SetTitle("m_{Z'} = "+name+" GeV (truth)"); else it->second->SetTitle("m_{Z'} = "+name+" GeV"); } if(it->first.Contains("t")) { //TGraphAsymmErrors* poisson(TH1D* h) it->second->SetLineColor(kBlue); it->second->SetMarkerStyle(20); it->second->SetMarkerSize(0.4); it->second->SetMarkerColor(kBlue); it->second->SetLineWidth(1); TString name = it->first; name.ReplaceAll("t",""); poissonGraphMap.insert( make_pair(name, (TGraphAsymmErrors*)poisson(it->second)->Clone()) ); poissonGraphMap[name]->SetMarkerStyle(20); poissonGraphMap[name]->SetMarkerSize(0.3); poissonGraphMap[name]->SetMarkerColor(kBlue); poissonGraphMap[name]->SetLineWidth(1); poissonGraphMap[name]->SetLineColor(kBlue); } } Double_t yLine = (!doResiduals) ? 1. : 0.; TLine* line = new TLine(0.07,yLine,3.,yLine); line->SetLineColor(kRed); line->SetLineWidth(2); TMapTSP2TCNV cnvMap; cnvMap.insert( make_pair("1000", new TCanvas("1000","1000",600,550)) ); if(isMC11c) cnvMap.insert( make_pair("1250", new TCanvas("1250","1250",600,550)) ); cnvMap.insert( make_pair("1500", new TCanvas("1500","1500",600,550)) ); cnvMap.insert( make_pair("1750", new TCanvas("1750","1750",600,550)) ); cnvMap.insert( make_pair("2000", new TCanvas("2000","2000",600,550)) ); for(TMapTSP2TCNV::iterator it=cnvMap.begin() ; it!=cnvMap.end() ; ++it) { _INFO("starting "+(string)it->first); if(it->first=="2000") legMap.insert( make_pair(it->first, new TLegend(0.35,0.55,0.83,0.84,NULL,"brNDC")) ); else legMap.insert( make_pair(it->first, new TLegend(0.35,0.60,0.83,0.84,NULL,"brNDC")) ); legMap[it->first]->SetFillStyle(4000); //will be transparent legMap[it->first]->SetFillColor(0); legMap[it->first]->SetTextFont(42); legMap[it->first]->AddEntry(h1Map[it->first+"o"],"Official Z'_{SSM}","F"); legMap[it->first]->AddEntry(hDY,"Official DY#mu#mu","lep"); legMap[it->first]->AddEntry(h1Map[it->first+"t"],"ME^{2} method: Template w/o couplings scale","lep"); if(it->first=="2000") { legMap[it->first]->AddEntry(h1Template,"ME^{2} method: Template histogram at #it{g=1} (SSM)","lep"); legMap[it->first]->AddEntry(graphSSM, "ME^{2} method: Template function at #it{g=1} (SSM)","p"); legMap[it->first]->AddEntry(graphDY, "ME^{2} method: Template function at #it{g=0} (DY)","p"); } if(!doTruth) { h1dTlvTmpltMap[it->first]->SetLineColor(kCyan+2); h1dTlvTmpltMap[it->first]->SetMarkerColor(kCyan+2); h1dTlvTmpltMap[it->first]->SetMarkerStyle(5); h1dTlvTmpltMap[it->first]->SetMarkerSize(0.5); legMap[it->first]->AddEntry(h1dTlvTmpltMap[it->first],"ME^{2} method: DY+Template (no interference)","p"); h1dBrandeisTmpltMap[it->first]->SetLineColor(kRed); h1dBrandeisTmpltMap[it->first]->SetMarkerColor(kRed); h1dBrandeisTmpltMap[it->first]->SetMarkerStyle(27); h1dBrandeisTmpltMap[it->first]->SetMarkerSize(0.5); legMap[it->first]->AddEntry(h1dBrandeisTmpltMap[it->first],"Flat Z' method: DY+Template (no interference)","p"); } it->second->Divide(1,2); TVirtualPad* ph = it->second->cd(1); TVirtualPad* pr = it->second->cd(2); ph->SetPad(0.00, 0.35, 1.00, 1.00); pr->SetPad(0.00, 0.00, 1.00, 0.35); ph->SetBottomMargin(0.012); pr->SetBottomMargin(0.20); pr->SetTopMargin(0.012); ph->cd(); ph->Draw(); ph->SetTicks(1,1); ph->SetLogy(); ph->SetLogx(); // h1Map[it->first+"o"]->SetMaximum( h1Map[it->first+"t"]->GetMaximum()*1.5 ); // h1Map[it->first+"o"]->Draw(); TH1D* hTmpNoErr = (TH1D*)resetErrors(h1Map[it->first+"o"])->Clone(); hTmpNoErr->SetMaximum( h1Map[it->first+"t"]->GetMaximum()*1.5 ); hTmpNoErr->SetLineStyle(1); hTmpNoErr->SetLineColor(kBlack); hTmpNoErr->SetFillColor(kAzure-9); hTmpNoErr->Draw(); TH1D* hTmpErr = (TH1D*)ShiftLog(h1Map[it->first+"o"],0.2)->Clone(); hTmpErr->SetFillStyle(4000); //will be transparent hTmpErr->SetFillColor(0); hTmpErr->DrawCopy("epx0SAMES"); hDY->Draw("SAMES"); h1Map[it->first+"t"]->Draw("epSAMES"); //poissonGraphMap[it->first]->Draw("pSAMES"); if(it->first=="2000") { graphDY->Draw("SAMESp"); graphSSM->Draw("SAMESp"); h1Template->Draw("epSAMES"); } _INFO(""); h1dTlvTmpltMap[it->first]->Draw("SAMESp"); h1dBrandeisTmpltMap[it->first]->Draw("SAMESp"); TLine* chopline = new TLine(0.12805,getYmin(h1Map[it->first+"o"]),0.12805,7.e5); chopline->SetLineStyle(2); chopline->SetLineColor(kBlack); chopline->Draw("SAMES"); ptxt->Draw("SAMES"); legMap[it->first]->Draw("SAMES"); ph->RedrawAxis(); ph->Update(); _INFO(""); pr->cd(); pr->Draw(); pr->SetTicks(1,1); pr->SetGridy(); pr->SetLogx(); h1rMap[it->first]->Draw("ep"); line->Draw("SAMES"); h1rMap[it->first]->Draw("epSAMES"); legR->Draw("SAMES"); pr->RedrawAxis(); pr->Update(); unsigned int savestate = 1; if(it->first=="1000") savestate = 0; else if(it->first=="2000") savestate = 2; else savestate = 1; TString testType = (doResiduals) ? "_residuals" : "_ratio"; mutype = (doTruth) ? "_truth" : "_recon"; savemultipdf(it->second, "plots/validation/validation"+mutype+testType+"_"+mctype+"_all.pdf", savestate); saveas(it->second, "plots/validation/validation"+mutype+testType+"_"+mctype+"_"+it->first); TCanvas* c = new TCanvas(it->first,"",600,400); c->cd(); c->Draw(); c->SetTicks(1,1); c->SetLogy(); c->SetLogx(); hTmpNoErr->Draw(); hTmpErr->DrawCopy("epx0SAMES"); hDY->Draw("SAMES"); h1Map[it->first+"t"]->Draw("epSAMES"); //poissonGraphMap[it->first]->Draw("pSAMES"); if(it->first=="2000") { graphDY->Draw("SAMESp"); graphSSM->Draw("SAMESp"); h1Template->Draw("epSAMES"); } h1dTlvTmpltMap[it->first]->Draw("SAMESp"); h1dBrandeisTmpltMap[it->first]->Draw("SAMESp"); legMap[it->first]->Draw("SAMES"); chopline->Draw("SAMES"); ptxt->Draw("SAMES"); c->RedrawAxis(); c->Update(); saveas(c,"plots/validation/validation_"+it->first+"_"+mutype+testType); _INFO("done "+(string)it->first); } }
//______________________________________________________________________________ void PIDEnergy() { // Main method. Char_t tmp[256]; // load CaLib gSystem->Load("libCaLib.so"); // general configuration Bool_t watch = kTRUE; const Char_t* data = "Data.PID.E1"; const Char_t* hName = "CaLib_PID_dE_E_013"; Double_t yMin = 0; Double_t yMax = 2000; gMin = 500; gMax = 1100; // configuration (December 2007) //const Char_t calibration[] = "LD2_Dec_07"; //const Char_t* fLoc = "/usr/puma_scratch0/werthm/A2/Dec_07/AR/out/droop"; // configuration (February 2009) //const Char_t calibration[] = "LD2_Feb_09"; //const Char_t* fLoc = "/usr/puma_scratch0/werthm/A2/Feb_09/AR/out/droop"; // configuration (May 2009) const Char_t calibration[] = "LD2_May_09"; const Char_t* fLoc = "/usr/puma_scratch0/werthm/A2/May_09/AR/out/droop"; // create histogram gHOverview = new TH1F("Overview", "Overview", 40000, 0, 40000); TCanvas* cOverview = new TCanvas(); gHOverview->GetYaxis()->SetRangeUser(yMin, yMax); gHOverview->Draw("E1"); // create line gLine = new TLine(); gLine->SetLineColor(kBlue); gLine->SetLineWidth(2); // init fitting function gFitFunc = 0; // create fitting canvas gCFit = new TCanvas(); // get number of sets Int_t nSets = TCMySQLManager::GetManager()->GetNsets(data, calibration); // total number of runs Int_t nTotRuns = 0; // first and last runs Int_t first_run, last_run; // loop over sets for (Int_t i = 0; i < nSets; i++) { // get runs of set Int_t nRuns; Int_t* runs = TCMySQLManager::GetManager()->GetRunsOfSet(data, calibration, i, &nRuns); // loop over runs for (Int_t j = 0; j < nRuns; j++) { // save first and last runs if (i == 0 && j == 0) first_run = runs[j]; if (i == nSets-1 && j == nRuns-1) last_run = runs[j]; // clean-up if (gH) delete gH; if (gH3) delete gH3; if (gFile) delete gFile; gH = 0; gH3 = 0; gFile = 0; // load ROOT file sprintf(tmp, "%s/ARHistograms_CB_%d.root", fLoc, runs[j]); gFile = new TFile(tmp); // check file if (!gFile) continue; if (gFile->IsZombie()) continue; // load histogram gH3 = (TH3*) gFile->Get(hName); if (!gH3) continue; if (!gH3->GetEntries()) continue; if (gH3->GetEntries() < 5000) continue; // project histogram gH3->GetXaxis()->SetRangeUser(40, 60); sprintf(tmp, "Proj_%d_y", runs[j]); gH = (TH1D*) gH3->Project3D(tmp); gH->Rebin(3); // fit the histogram Fit(runs[j]); // update canvases and sleep if (watch) { cOverview->Update(); gCFit->Update(); //gSystem->Sleep(10); } // count run nTotRuns++; } // clean-up delete runs; // draw runset markers cOverview->cd(); // get first run of set Int_t frun = TCMySQLManager::GetManager()->GetFirstRunOfSet(data, calibration, i); // draw line TLine* aLine = new TLine(frun, yMin, frun, yMax); aLine->SetLineColor(kBlue); aLine->SetLineWidth(2); aLine->Draw("same"); } // adjust axis gHOverview->GetXaxis()->SetRangeUser(first_run-10, last_run+10); TFile* fout = new TFile("runset_overview.root", "recreate"); cOverview->Write(); delete fout; printf("%d runs analyzed.\n", nTotRuns); gSystem->Exit(0); }
void continuum_test2(const int type = 11) { TChain* gen_chain = new TChain("TEvent"); gen_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_mixed.root"); TChain* sig_chain = new TChain("TEvent"); TChain* bkg_chain = new TChain("TEvent"); int nsig; int m_mode,m_h0mode; double eff_min = 0.4; double eff_max = 0.95; double signif_min = 0; double signif_max = 15; double rej_min = 0.8; double rej_max = 1.0; // double mh0_min, mh0_max; double de_min, de_max; double mbc_min, mbc_max; string label; switch(type) { case 11: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcPi0_s7.root"); m_mode = 1; m_h0mode = 10; label = string("#pi^{0}"); signif_min = 13.; signif_max = 20; de_min =-0.1; de_max = 0.0921343; mbc_min = 5.27093; mbc_max = 5.28789; break; case 101: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcDST0_s1.root"); m_mode = 10; m_h0mode = 10; label = string("D^{*0}#pi^{0}"); signif_min = 5.5; signif_max = 7.2; de_min =-0.1; de_max = 0.0647985; mbc_min = 5.27146; mbc_max = 5.28769; break; case 12: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcETA_s2.root"); m_mode = 2; m_h0mode = 10; label = string("#eta#rightarrow#gamma#gamma"); signif_min = 7.5; signif_max = 10; de_min =-0.0994528; de_max = 0.0758825; mbc_min = 5.27147; mbc_max = 5.28763; break; case 102: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcDST0_s1.root"); m_mode = 20; m_h0mode = 10; label = string("D^{*0}#eta(#rightarrow#gamma#gamma)"); signif_min = 4.; signif_max = 5.; de_min =-0.0853615; de_max = 0.0630641; mbc_min = 5.27182; mbc_max = 5.28746; break; case 13: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcETA_s2.root"); m_mode = 2; m_h0mode = 20; label = string("#eta#rightarrow#pi^{+}#pi^{-}#pi^{0}"); signif_min = 4.5; signif_max = 6.2; de_min =-0.0534644; de_max = 0.0453713; mbc_min = 5.27205; mbc_max = 5.28735; break; case 103: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcDST0_s1.root"); m_mode = 20; m_h0mode = 20; label = string("D^{*0}#eta(#rightarrow#pi^{+}#pi^{-}#pi^{0})"); signif_min = 5; signif_max = 6.5; de_min =-0.0567598; de_max = 0.0459849; mbc_min = 5.27182; mbc_max = 5.28746; break; case 14: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcOMEGA_s5.root"); m_mode = 3; m_h0mode = 20; label = string("#omega"); signif_min = 11.5; signif_max = 15.0; de_min =-0.0565915; de_max = 0.0467748; mbc_min = 5.27198; mbc_max = 5.28743; break; case 15: sig_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_b2dh_sigmcETAP_s1.root"); m_mode = 5; m_h0mode = 10; label = string("#eta'(#rightarrow#gamma#gamma)"); signif_min = 3.; signif_max = 4; de_min =-0.0873898; de_max = 0.0642064; mbc_min = 5.27255; mbc_max = 5.28718; break; default: cout << "Wrong signal type " << type << endl; return; } bkg_chain->Add("/home/vitaly/B0toDh0/Tuples/Fil_cont.root"); // bkg_chain->Add("/home/vitaly/B0toDh0/TMVA/FIL1_b2dh_charm_2_12.root"); // bkg_chain->Add("/home/vitaly/B0toDh0/TMVA/FIL1_b2dh_uds_2_12.root"); RooArgSet argset; RooCategory mode("mode","mode"); mode.defineType("mode",m_mode); RooCategory h0mode("h0mode","h0mode"); h0mode.defineType("h0mode",m_h0mode); argset.add(mode); argset.add(h0mode); RooCategory good_icpv("good_icpv","good_icpv"); good_icpv.defineType("good_icpv",1); argset.add(good_icpv); RooRealVar mbc("mbc","mbc",mbc_min,mbc_max,"GeV"); argset.add(mbc); RooRealVar de("de","#DeltaE",de_min,de_max,"GeV"); argset.add(de); RooRealVar cos_thr("cos_thr","cos_thr",-1,1); argset.add(cos_thr); RooRealVar cos_hel("cos_hel","cos_hel",-1,1); if(type == 14) argset.add(cos_hel); // RooRealVar md("md_raw","md_raw",md_min,md_max,"GeV"); argset.add(md); // RooRealVar mk("mk","mk",KMass-mk_cut,KMass+mk_cut,"GeV"); argset.add(mk); // RooRealVar mh0("mh0","mh0",mh0_min,mh0_max,"GeV"); argset.add(mh0); // RooRealVar mpi0("mpi0","mpi0",mpi0_min,mpi0_max,"GeV"); if(type != 12) argset.add(mpi0); // RooRealVar chi2_mass_d0("chi2_mass_d0","chi2_mass_d0",0.,50.); argset.add(chi2_mass_d0); const bool bdt_flag = type<15; const bool bdtg_flag = false; const bool lh1_flag = false; const bool lh0_flag = type>=15; double bdt_best_cut = 0; double bdtg_best_cut = 0; double lh1_best_cut = 0; double lh0_best_cut = 0; double bdt_best_sig = 0; double bdtg_best_sig = 0; double lh1_best_sig = 0; double lh0_best_sig = 0; double bdt_best_eff = 0; double bdtg_best_eff = 0; double lh1_best_eff = 0; double lh0_best_eff = 0; double bdt_best_sup = 0; double bdtg_best_sup = 0; double lh1_best_sup = 0; double lh0_best_sup = 0; double bdt_best_pur = 0; double bdtg_best_pur = 0; double lh1_best_pur = 0; double lh0_best_pur = 0; if(bdt_flag) { RooRealVar bdt("bdt","bdt",-1.,1.); argset.add(bdt); } if(bdtg_flag) { RooRealVar bdtg("bdtg","bdtg",-1.,1.); argset.add(bdtg); } if(lh1_flag) { RooRealVar lh1("lh1","lh1",0.,1.); argset.add(lh1); } if(lh0_flag) { RooRealVar lh0("lh0","lh0",0.,1.); argset.add(lh0); } // RooRealVar atckpi_max("atckpi_max","atckpi_max",0.,atckpi_cut); argset.add(atckpi_max); // RooRealVar cos_thr("cos_thr","cos_thr",-1.,1.); argset.add(cos_thr); // RooArgSet argset_gen(argset); RooCategory b0f("b0f","b0f"); b0f.defineType("comb",-1); b0f.defineType("good",1); b0f.defineType("wrph",5); b0f.defineType("fsr",10); argset.add(b0f); RooDataSet ds_sig("ds_sig","ds_sig",sig_chain,argset,"b0f == 1 || b0f == 5 || b0f == 10"); RooDataSet ds_con("ds_con","ds_con",bkg_chain,argset,"b0f == -1"); RooDataSet ds_gen("ds_gen","ds_gen",gen_chain,argset,"b0f == 1 || b0f == 5 || b0f == 10"); nsig = ds_gen.sumEntries()*0.25; cout << "Nsig: " << nsig << endl; ds_sig.Print(); ds_con.Print(); double sig_eff_bdt[100]; double sig_eff_bdtg[100]; double sig_eff_lh1[100]; double sig_eff_lh0[100]; double back_reg_bdt[100]; double back_reg_bdtg[100]; double back_reg_lh1[100]; double back_reg_lh0[100]; double signif_bdt[100]; double signif_bdtg[100]; double signif_lh1[100]; double signif_lh0[100]; const double gen = ds_con.sumEntries()*0.25; const double sig = ds_sig.sumEntries(); stringstream out; double S,B; const int dots = 100; const double dbdt = 1./dots; cout << gen*4 << " " << sig << endl; for(int i=0; i<dots; i++) { if(bdt_flag) { out.str(""); out << "bdt>" << i*dbdt; S = ds_sig.sumEntries(out.str().c_str()); B = ds_con.sumEntries(out.str().c_str())*0.25; sig_eff_bdt[i] = S/sig; back_reg_bdt[i] = (gen-B)/gen; S = nsig/sig*S; // B = nback/gen*B; signif_bdt[i] = S/sqrt(S+B+0.0001); if(bdt_best_sig<(signif_bdt[i]-0.07)) { bdt_best_sig = signif_bdt[i]; bdt_best_cut = i*dbdt; bdt_best_pur = S/(S+B); bdt_best_eff = sig_eff_bdt[i]; bdt_best_sup = back_reg_bdt[i]; } } if(lh1_flag) { out.str(""); out << "lh1>sqrt(1-" << i*dbdt*i*dbdt << ") && abs(cos_thr)<1."; if(type == 14) out << " && abs(cos_hel)>0.3"; S = ds_sig.sumEntries(out.str().c_str()); B = ds_con.sumEntries(out.str().c_str())*0.25; sig_eff_lh1[i] = S/sig; back_reg_lh1[i] = (gen-B)/gen; S = nsig/sig*S; // B = nback/gen*B; signif_lh1[i] = S/sqrt(S+B+0.0001); if(lh1_best_sig<signif_lh1[i]) { lh1_best_sig = signif_lh1[i]; lh1_best_cut = sqrt(1-i*dbdt*i*dbdt); lh1_best_pur = S/(S+B); lh1_best_eff = sig_eff_lh1[i]; lh1_best_sup = back_reg_lh1[i]; } } if(lh0_flag) { out.str(""); out << "lh0>" << -1 +2*i*dbdt << " && abs(cos_thr)<1."; if(type == 14) out << " && abs(cos_hel)>0.3"; S = ds_sig.sumEntries(out.str().c_str()); B = ds_con.sumEntries(out.str().c_str())*0.25; sig_eff_lh0[i] = S/sig; back_reg_lh0[i] = (gen-B)/gen; S = nsig/sig*S; // B = nback/gen*B; signif_lh0[i] = S/sqrt(S+B+0.0001); if(lh0_best_sig<signif_lh0[i]) { lh0_best_sig = signif_lh0[i]; lh0_best_cut = sqrt(1-i*dbdt*i*dbdt); lh0_best_pur = S/(S+B); lh0_best_eff = sig_eff_lh0[i]; lh0_best_sup = back_reg_lh0[i]; } } if(bdtg_flag) { out.str(""); out << "bdtg>sqrt(1-" << i*dbdt*i*dbdt << ")"; S = ds_sig.sumEntries(out.str().c_str()); B = ds_con.sumEntries(out.str().c_str())/0.949; sig_eff_bdtg[i] = S/sig; back_reg_bdtg[i] = (gen-B)/gen; S = nsig/sig*S; // B = nback/gen*B; signif_bdtg[i] = S/sqrt(S+B+0.0001); if(bdtg_best_sig<signif_bdtg[i]) { bdtg_best_sig = signif_bdtg[i]; bdtg_best_cut = sqrt(1-i*dbdt*i*dbdt); bdtg_best_pur = S/(S+B); bdtg_best_eff = sig_eff_bdtg[i]; bdtg_best_sup = back_reg_bdtg[i]; } } } TCanvas* c1 = new TCanvas("c1","Signal Efficiency vs. Background Rejection",600,600); TH1F* h1 = c1->Draw(); c1->SetGrid(); TMultiGraph *mg = new TMultiGraph(); mg->SetTitle("Background Rejection"); TGraph* gr_bdt = new TGraph(dots,sig_eff_bdt,back_reg_bdt); gr_bdt->SetMarkerSize(1); gr_bdt->SetMarkerColor(kBlue); gr_bdt->SetMarkerStyle(21); gr_bdt->SetTitle("Background Rejection"); gr_bdt->GetXaxis()->SetRangeUser(eff_min,eff_max); gr_bdt->GetXaxis()->SetTitle("Signal Efficiency"); gr_bdt->GetXaxis()->SetTitleSize(0.06); gr_bdt->GetXaxis()->SetTitleOffset(0.75); gr_bdt->GetYaxis()->SetRangeUser(rej_min,rej_max); TGraph* gr_bdtg = new TGraph(dots,sig_eff_bdtg,back_reg_bdtg); gr_bdtg->SetMarkerSize(1); gr_bdtg->SetMarkerColor(kRed); gr_bdtg->SetMarkerStyle(21); TGraph* gr_ksfw1 = new TGraph(dots,sig_eff_lh1,back_reg_lh1); gr_ksfw1->SetMarkerSize(1); gr_ksfw1->SetMarkerColor(kRed); gr_ksfw1->SetMarkerStyle(22); TGraph* gr_ksfw0 = new TGraph(dots,sig_eff_lh0,back_reg_lh0); gr_ksfw0->SetMarkerSize(1.4); gr_ksfw0->SetMarkerColor(kBlue); gr_ksfw0->SetMarkerStyle(22); gr_ksfw0->SetTitle("Background Rejection"); gr_ksfw0->GetXaxis()->SetRangeUser(eff_min,eff_max); gr_ksfw0->GetXaxis()->SetTitle("Signal Efficiency"); gr_ksfw0->GetXaxis()->SetTitleSize(0.06); gr_ksfw0->GetXaxis()->SetTitleOffset(0.75); gr_ksfw0->GetYaxis()->SetRangeUser(rej_min,rej_max); if(bdt_flag)mg->Add(gr_bdt); if(bdtg_flag)mg->Add(gr_bdtg); if(lh1_flag)mg->Add(gr_ksfw1); if(lh0_flag)mg->Add(gr_ksfw0); if(bdt_flag && !bdtg_flag && !lh1_flag && !lh0_flag) { gr_bdt->Draw("AP"); } else if(lh0_flag && !bdtg_flag && !lh1_flag && !bdt_flag) { gr_ksfw0->Draw("AP"); } else { mg->Draw("AP"); } if(type<15) { TLine* cutline = new TLine(bdt_best_eff,rej_min,bdt_best_eff,rej_max); cutline->SetLineColor(kRed); cutline->SetLineWidth(2); cutline->Draw("AP"); } else { TLine* cutline = new TLine(lh0_best_eff,rej_min,lh0_best_eff,rej_max); cutline->SetLineColor(kRed); cutline->SetLineWidth(2); cutline->Draw("AP"); } TPaveText *pt = new TPaveText(0.7,0.75,0.98,0.9,"brNDC"); pt->SetFillColor(0); pt->SetTextAlign(12); pt->AddText(label.c_str()); out.str(""); out << "Input S = " << nsig; pt->AddText(out.str().c_str()); out.str(""); out << "Input B = " << (int)gen; pt->AddText(out.str().c_str()); pt->Draw(); TPaveText *pt2 = new TPaveText(0.3,0.25,0.6,0.5,"brNDC"); pt2->SetFillColor(0); pt2->SetTextAlign(12); pt2->AddText("Best cut:"); if(type<15) { out.str(""); out << setprecision(3); out << "Pur = " << bdt_best_pur*100; pt2->AddText(out.str().c_str()); out.str(""); out << "Eff = " << bdt_best_eff*100; pt2->AddText(out.str().c_str()); out.str(""); out << "Rej = " << bdt_best_sup*100; pt2->AddText(out.str().c_str()); pt2->Draw(); } else { out.str(""); out << setprecision(3); out << "Pur = " << lh0_best_pur*100; pt2->AddText(out.str().c_str()); out.str(""); out << "Eff = " << lh0_best_eff*100; pt2->AddText(out.str().c_str()); out.str(""); out << "Rej = " << lh0_best_sup*100; pt2->AddText(out.str().c_str()); pt2->Draw(); } c1->Update(); out.str(""); out << "../Note/pics/eff-rej-m" << type << ".root"; c1->Print(out.str().c_str()); out.str(""); out << "../Note/pics/eff-rej-m" << type << ".eps"; c1->Print(out.str().c_str()); TCanvas* c2 = new TCanvas("c2","Significance",600,600); c2->cd(); c2->SetGrid(); TMultiGraph *signif_mg = new TMultiGraph(); signif_mg->SetTitle("Signal Significance"); TGraph* signif_gr_bdt = new TGraph(dots,sig_eff_bdt,signif_bdt); signif_gr_bdt->SetMarkerSize(1); signif_gr_bdt->SetMarkerColor(kBlue); signif_gr_bdt->SetMarkerStyle(21); signif_gr_bdt->SetTitle("Signal Significance"); signif_gr_bdt->GetXaxis()->SetRangeUser(eff_min,eff_max); signif_gr_bdt->GetXaxis()->SetTitle("Signal Efficiency"); signif_gr_bdt->GetXaxis()->SetTitleSize(0.06); signif_gr_bdt->GetXaxis()->SetTitleOffset(0.75); signif_gr_bdt->GetYaxis()->SetRangeUser(signif_min,signif_max); TGraph* signif_gr_bdtg = new TGraph(dots,sig_eff_bdtg,signif_bdtg); signif_gr_bdtg->SetMarkerSize(1); signif_gr_bdtg->SetMarkerColor(kRed); signif_gr_bdtg->SetMarkerStyle(21); TGraph* signif_gr_ksfw1 = new TGraph(dots,sig_eff_lh1,signif_lh1); signif_gr_ksfw1->SetMarkerSize(1); signif_gr_ksfw1->SetMarkerColor(kRed); signif_gr_ksfw1->SetMarkerStyle(22); TGraph* signif_gr_ksfw0 = new TGraph(dots,sig_eff_lh0,signif_lh0); signif_gr_ksfw0->SetMarkerSize(1.4); signif_gr_ksfw0->SetMarkerColor(kBlue); signif_gr_ksfw0->SetMarkerStyle(22); signif_gr_ksfw0->SetTitle("Signal Significance"); signif_gr_ksfw0->GetXaxis()->SetRangeUser(eff_min,eff_max); signif_gr_ksfw0->GetXaxis()->SetTitle("Signal Efficiency"); signif_gr_ksfw0->GetXaxis()->SetTitleSize(0.06); signif_gr_ksfw0->GetXaxis()->SetTitleOffset(0.75); signif_gr_ksfw0->GetYaxis()->SetRangeUser(signif_min,signif_max); if(bdt_flag) signif_mg->Add(signif_gr_bdt); if(bdtg_flag) signif_mg->Add(signif_gr_bdtg); if(lh1_flag) signif_mg->Add(signif_gr_ksfw1); if(lh0_flag) signif_mg->Add(signif_gr_ksfw0); if(bdt_flag && !bdtg_flag && !lh1_flag && !lh0_flag) { signif_gr_bdt->Draw("AP"); } else if(!bdt_flag && !bdtg_flag && !lh1_flag && lh0_flag) { signif_gr_ksfw0->Draw("AP"); } else { signif_mg->Draw("AP"); } if(type<15) { TLine* cutline2 = new TLine(bdt_best_eff,signif_min,bdt_best_eff,signif_max); cutline2->SetLineColor(kRed); cutline2->SetLineWidth(2); cutline2->Draw("AP"); } else { TLine* cutline2 = new TLine(lh0_best_eff,signif_min,lh0_best_eff,signif_max); cutline2->SetLineColor(kRed); cutline2->SetLineWidth(2); cutline2->Draw("AP"); } pt->Draw(); pt2->Draw(); c2->Update(); out.str(""); out << "../Note/pics/eff-fom-m" << type << ".root"; c2->Print(out.str().c_str()); out.str(""); out << "../Note/pics/eff-fom-m" << type << ".eps"; c2->Print(out.str().c_str()); cout << "Summary:" << endl; if(bdtg_flag) { cout << "bdtg decision: "; cout << "sig: " << bdtg_best_sig; cout << ", cut: " << bdtg_best_cut; cout << ", pur: " << bdtg_best_pur; cout << ", eff: " << bdtg_best_eff; cout << ", sup: " << bdtg_best_sup << endl; } if(bdt_flag) { cout << "bdt decision: "; cout << "sig: " << bdt_best_sig; cout << ", cut: " << bdt_best_cut; cout << ", pur: " << bdt_best_pur; cout << ", eff: " << bdt_best_eff; cout << ", sup: " << bdt_best_sup << endl; } if(lh1_flag) { cout << "lh1 decision: "; cout << "sig: " << lh1_best_sig; cout << ", cut: " << lh1_best_cut; cout << ", pur: " << lh1_best_pur; cout << ", eff: " << lh1_best_eff; cout << ", sup: " << lh1_best_sup << endl; } if(lh0_flag) { cout << "lh0 decision: "; cout << "sig: " << lh0_best_sig; cout << ", cut: " << lh0_best_cut; cout << ", pur: " << lh0_best_pur; cout << ", eff: " << lh0_best_eff; cout << ", sup: " << lh0_best_sup << endl; } return; }
int JERJES(const char *reta = "eta2") { LoadStyle(); int rfit=8; int statop=1; int kRebin=1; //const char *reta = "eta3.0"; //bool iSave=false; float ketacut=2.0; if(strcmp(reta,"eta3.0")==0)ketacut=3; bool iSigma=false; if(rfit==0){fitmin=0.01;fitmax=2.00;} else if(rfit==1){fitmin=0.00;fitmax=1.25;} else if(rfit==2){fitmin=0.00;fitmax=1.50;} else if(rfit==3){fitmin=0.00;fitmax=1.75;} else if(rfit==4){fitmin=0.00;fitmax=2.50;} else if(rfit==5){fitmin=0.00;fitmax=3.50;} else if(rfit==6){fitmin=0.50;fitmax=1.25;} else if(rfit==7){fitmin=0.50;fitmax=1.50;} else if(rfit==8){fitmin=0.50;fitmax=1.75;} else if(rfit==9){fitmin=0.50;fitmax=2.50;} else if(rfit==10){fitmin=0.50;fitmax=3.50;} else if(rfit==11){fitmin=0.75;fitmax=1.25;} else if(rfit==12){fitmin=0.75;fitmax=1.50;} else if(rfit==13){fitmin=0.75;fitmax=1.75;} else if(rfit==14){fitmin=0.75;fitmax=2.50;} else if(rfit==15){fitmin=0.75;fitmax=3.50;} else if(rfit==16){fitmin=1.00;fitmax=1.25;} else if(rfit==17){fitmin=1.00;fitmax=1.50;} else if(rfit==18){fitmin=1.00;fitmax=1.75;} else if(rfit==19){fitmin=1.00;fitmax=2.50;} else if(rfit==20){fitmin=1.00;fitmax=3.50;} if(kRebin){ if(bins%kRebin!=0){ cout<<"Cannot be divided in these bins chose another combination : "<<endl; return 0; } bins /= kRebin; binw = (maxval - minval)/(1.0*bins); cout<<"kRebin : "<<kRebin<<"\t bins : "<<bins<<"\t binw : "<<binw<<endl; } //! Input files TFile *fin_pbpb = new TFile("input/pbpb/MC_2011_pbpb_merged.root","r"); //! 0 : pp //TFile *fin_pp = new TFile("input/pp/MC_2013_pp_merged.root","r"); TFile *fin_pp = new TFile("input/pp/MC_2013_v81_prod22_pp_merged.root","r"); cout<<"\t"<<endl <<"rfit : "<<rfit<<"\t fitmin : "<<fitmin<<"\t fitmax : "<<fitmax<<endl <<"Input file name pbpb : "<<fin_pbpb->GetName()<<endl <<"Input file name pp : "<<fin_pp->GetName()<<endl <<"\t"<<endl; //! used for fit double ptbins[] = {20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300}; //double ptbins[] = {50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,220,240,260,280,300,340,400,440,600}; const int b1 = sizeof(ptbins)/sizeof(Double_t) - 1; const int nbins = b1; cout<<"# of pt bins : "<<nbins<<endl; //return 0; int maxr=3; int ipad=0; //! 0-5 PbPb Resposnse and 6th is pp response //! Response corrected pT (jtpt) / gen pT vs gen pT TH2F *hratiocorrrefpt[knj][ncen]; TH1F *hratiocorrrefpt1D[knj][ncen][nbins]; TH1F *hMean[knj][ncen], *hSigma[knj][ncen], *hRMS[knj][ncen], *hArM[knj][ncen]; //! Response raw pT / gen pT vs gen pT TH2F *hratiorawrefpt[knj][ncen]; TH1F *hratiorawrefpt1D[knj][ncen][nbins]; TH1F *hMean_r[knj][ncen], *hSigma_r[knj][ncen], *hRMS_r[knj][ncen], *hArM_r[knj][ncen]; //! Ratio of Fit and geometric mean/RMS //TH1F *hRatio_Mean[knj][ncen], *hRatio_RMS[knj][ncen]; for(int nj=0;nj<knj;nj++){ //cout<<"nj : "<<nj<<Form("\t %s",calgo[nj])<<endl; for(int icen=0;icen<ncen;icen++){ if(icen < ncen-1){ if(nj==1)cout<<"icen : "<<ccent[icen]<<endl; //! PbPb Histograms //! corrected jet pT hMean [nj][icen] = new TH1F(Form("hMean%d_%d",nj,icen),Form("<reco p_{T}/gen p_{T}> %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hMean[nj][icen],statop); hArM [nj][icen] = new TH1F(Form("hArM%d_%d",nj,icen),Form("<reco p_{T}/gen p_{T}> %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hArM[nj][icen],statop); hSigma [nj][icen] = new TH1F(Form("hSigma%d_%d",nj,icen),Form("#sigma(reco p_{T}/gen p_{T}) %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hSigma[nj][icen],statop); hRMS [nj][icen] = new TH1F(Form("hRMS%d_%d",nj,icen),Form("RMS(reco p_{T}/gen p_{T}) %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hRMS[nj][icen],statop); //! Raw jet pt hMean_r [nj][icen] = new TH1F(Form("hMean_r%d_%d",nj,icen),Form("<raw p_{T}/gen p_{T}> %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hMean_r[nj][icen],statop); hArM_r [nj][icen] = new TH1F(Form("hArM_r%d_%d",nj,icen),Form("<raw p_{T}/gen p_{T}> %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hArM_r[nj][icen],statop); hSigma_r [nj][icen] = new TH1F(Form("hSigma_r%d_%d",nj,icen),Form("#sigma(raw p_{T}/gen p_{T}) %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hSigma_r[nj][icen],statop); hRMS_r [nj][icen] = new TH1F(Form("hRMS_r%d_%d",nj,icen),Form("RMS(raw p_{T}/gen p_{T}) %s pbpb %d",calgo[nj],icen),nbins,ptbins); MakeHist(hRMS_r[nj][icen],statop); //! PbPb starts here hratiocorrrefpt[nj][icen] = (TH2F*)fin_pbpb->Get(Form("hrescrpt_genm%d_%d",nj+knj,icen)); hratiocorrrefpt[nj][icen]->SetName(Form("hratiocorrrefpt_pbpb%d_%d",nj,icen)); hratiorawrefpt[nj][icen] = (TH2F*)fin_pbpb->Get(Form("hresrrpt_genm%d_%d",nj+knj,icen)); hratiorawrefpt[nj][icen]->SetName(Form("hratiorawrefpt_pbpb%d_%d",nj,icen)); for(int ip=0;ip<nbins;ip++){ int lbin = (int)(ptbins[ip] - minval)/binw +1; int hbin = (int)(ptbins[ip+1] - minval)/binw +1; hratiocorrrefpt1D[nj][icen][ip] = (TH1F*)hratiocorrrefpt [nj][icen]->ProjectionY(Form("hratiocorrrefpt1D%d_%d_%d",nj,icen,ip),lbin,hbin,"e"); if(hratiocorrrefpt1D[nj][icen][ip]->GetEntries()<maxEntry)continue; hratiocorrrefpt1D[nj][icen][ip]->Rebin(5); FillMeanSigma(ip,hratiocorrrefpt1D[nj][icen][ip], hArM[nj][icen],hRMS[nj][icen], hMean[nj][icen],hSigma[nj][icen]); //! Raw / Gen hratiorawrefpt1D[nj][icen][ip] = (TH1F*)hratiorawrefpt [nj][icen]->ProjectionY(Form("hratiorawrefpt1D%d_%d_%d",nj,icen,ip),lbin,hbin,"e"); if(hratiorawrefpt1D[nj][icen][ip]->GetEntries()<maxEntry)continue; hratiorawrefpt1D[nj][icen][ip]->Rebin(5); FillMeanSigma(ip,hratiorawrefpt1D[nj][icen][ip], hArM_r[nj][icen],hRMS_r[nj][icen], hMean_r[nj][icen],hSigma_r[nj][icen]); } //! PbPb ends }else{//! pp if(nj==1)cout<<"icen : "<<ccent[icen]<<endl; //! pp ///////////////////////////// hMean [nj][icen] = new TH1F(Form("hMean%d_%d",nj,icen),Form("<reco p_{T}/gen p_{T}> %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hMean[nj][icen],statop); hArM [nj][icen] = new TH1F(Form("hArM%d_%d",nj,icen),Form("<reco p_{T}/gen p_{T}> %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hArM[nj][icen],statop); hSigma [nj][icen] = new TH1F(Form("hSigma%d_%d",nj,icen),Form("#sigma(reco p_{T}/gen p_{T}) %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hSigma[nj][icen],statop); hRMS [nj][icen] = new TH1F(Form("hRMS%d_%d",nj,icen),Form("RMS(reco p_{T}/gen p_{T}) %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hRMS[nj][icen],statop); hMean_r [nj][icen] = new TH1F(Form("hMean_r%d_%d",nj,icen),Form("<raw p_{T}/gen p_{T}> %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hMean_r[nj][icen],statop); hArM_r [nj][icen] = new TH1F(Form("hArM_r%d_%d",nj,icen),Form("<raw p_{T}/gen p_{T}> %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hArM_r[nj][icen],statop); hSigma_r [nj][icen] = new TH1F(Form("hSigma_r%d_%d",nj,icen),Form("#sigma(raw p_{T}/gen p_{T}) %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hSigma_r[nj][icen],statop); hRMS_r [nj][icen] = new TH1F(Form("hRMS_r%d_%d",nj,icen),Form("RMS(raw p_{T}/gen p_{T}) %s pp %d",calgo[nj],icen),nbins,ptbins); MakeHist(hRMS_r[nj][icen],statop); //! Histograms for the response calculation hratiocorrrefpt[nj][icen] = (TH2F*)fin_pp->Get(Form("hrescrpt_genm%d_%d",nj,0)); hratiocorrrefpt[nj][icen]->SetName(Form("hratiocorrrefpt_pp%d_%d",nj,icen)); hratiorawrefpt[nj][icen] = (TH2F*)fin_pp->Get(Form("hresrrpt_genm%d_%d",nj,0)); hratiorawrefpt[nj][icen]->SetName(Form("hratiorawrefpt_pp%d_%d",nj,icen)); /* //! Pile up subtracted algorithms hratiocorrrefpt[nj][icen] = (TH2F*)fin_pp->Get(Form("hrescrpt%d_%d",nj+knj,icen)); hratiocorrrefpt[nj][icen]->SetName(Form("hratiocorrrefpt_pp%d_%d",nj,icen)); hratiorawrefpt[nj][icen] = (TH2F*)fin_pp->Get(Form("hresrrpt%d_%d",nj+knj,icen)); hratiorawrefpt[nj][icen]->SetName(Form("hratiorawrefpt_pp%d_%d",nj,icen)); */ for(int ip=0;ip<nbins;ip++){ int lbin = (int)(ptbins[ip] - minval)/binw +1; int hbin = (int)(ptbins[ip+1] - minval)/binw +1; hratiocorrrefpt1D[nj][icen][ip] = (TH1F*)hratiocorrrefpt [nj][icen]->ProjectionY(Form("hratiocorrrefpt1D_pp%d_%d_%d",nj,icen,ip),lbin,hbin,"e"); if(hratiocorrrefpt1D[nj][icen][ip]->GetEntries()<maxEntry)continue; hratiocorrrefpt1D[nj][icen][ip]->Rebin(5); FillMeanSigma(ip,hratiocorrrefpt1D[nj][icen][ip], hArM[nj][icen],hRMS[nj][icen], hMean[nj][icen],hSigma[nj][icen]); //! Raw/Gen hratiorawrefpt1D[nj][icen][ip] = (TH1F*)hratiorawrefpt [nj][icen]->ProjectionY(Form("hratiorawrefpt1D_pp%d_%d_%d",nj,icen,ip),lbin,hbin,"e"); if(hratiorawrefpt1D[nj][icen][ip]->GetEntries()<maxEntry)continue; hratiorawrefpt1D[nj][icen][ip]->Rebin(5); FillMeanSigma(ip,hratiorawrefpt1D[nj][icen][ip], hArM_r[nj][icen],hRMS_r[nj][icen], hMean_r[nj][icen],hSigma_r[nj][icen]); }//! ip bin }//! pp ends }//! icen loop ends }//! nj loop ends for(int nj=0;nj<knj;nj++){ for(int ic=0;ic<ncen;ic++){ MakeHistMean(hArM [nj][ic],1.09,0.84); MakeHistRMS (hRMS [nj][ic],0.43,0.001); MakeHistMean(hMean [nj][ic],1.09,0.84); MakeHistRMS (hSigma[nj][ic],0.43,0.001); // if(ic<ncen-1){ // MakeHistMean(hArM [nj][ic],1.058,0.955); // MakeHistRMS (hRMS [nj][ic],0.43,0.001); // MakeHistMean(hMean [nj][ic],1.058,0.955); // MakeHistRMS (hSigma[nj][ic],0.43,0.001); // MakeHistMean(hArM_r [nj][ic],1.058,0.955); // MakeHistRMS (hRMS_r [nj][ic],0.43,0.001); // MakeHistMean(hMean_r [nj][ic],1.058,0.955); // MakeHistRMS (hSigma_r[nj][ic],0.43,0.001); // }else{ // MakeHistMean(hArM [nj][ic],1.058,0.955); // MakeHistRMS (hRMS [nj][ic],0.43,0.001); // MakeHistMean(hMean [nj][ic],1.058,0.955); // MakeHistRMS (hSigma[nj][ic],0.43,0.001); // MakeHistMean(hArM_r [nj][ic],1.058,0.955); // MakeHistRMS (hRMS_r [nj][ic],0.43,0.001); // MakeHistMean(hMean_r [nj][ic],1.058,0.955); // MakeHistRMS (hSigma_r[nj][ic],0.43,0.001); // } } } TCanvas *c3[knj]; TLegend *l3[knj]; int maxc=ncen-1; maxr=2; for(int nj=0;nj<knj;nj++){ //if(nj!=1)continue; c3[nj] = new TCanvas(Form("c3_%d",nj),Form("%s JES JER",calgo[nj]),97,118,1739,479); makeMultiPanelCanvas(c3[nj],maxc,maxr,0.0,0.0,0.22,0.22,0.02,0); //std::cout<<std::endl; ipad=0; l3[nj] = new TLegend(0.2453033,0.6247655,0.4838159,0.9399625,NULL,"BRNDC"); l3[nj]->SetHeader(""); l3[nj]->SetBorderSize(0); l3[nj]->SetTextFont(42); l3[nj]->SetTextSize(0.09); l3[nj]->SetLineColor(1); l3[nj]->SetLineStyle(1); l3[nj]->SetLineWidth(1); l3[nj]->SetFillColor(10); l3[nj]->SetFillStyle(1001); l3[nj]->SetHeader(""); for(int ic=ncen-2;ic>=0;ic--){ if(iSigma){ hSigma[nj][ic]->SetMarkerStyle(24); hSigma[nj][ic]->SetMarkerColor(1); hSigma[nj][ic]->SetLineColor(1); hSigma[nj][ic]->SetMarkerSize(1.3); hSigma[nj][ncen-1]->SetMarkerStyle(20); hSigma[nj][ncen-1]->SetMarkerColor(1); hSigma[nj][ncen-1]->SetLineColor(1); hSigma[nj][ncen-1]->SetMarkerSize(1.1); hMean[nj][ic]->SetMarkerStyle(24); hMean[nj][ic]->SetMarkerColor(1); hMean[nj][ic]->SetLineColor(1); hMean[nj][ic]->SetMarkerSize(1.3); hMean[nj][ncen-1]->SetMarkerStyle(20); hMean[nj][ncen-1]->SetMarkerColor(1); hMean[nj][ncen-1]->SetLineColor(1); hMean[nj][ncen-1]->SetMarkerSize(1.1); hMean_r[nj][ic]->SetMarkerStyle(25); hMean_r[nj][ic]->SetMarkerColor(1); hMean_r[nj][ic]->SetLineColor(1); hMean_r[nj][ic]->SetMarkerSize(1.3); hMean_r[nj][ncen-1]->SetMarkerStyle(21); hMean_r[nj][ncen-1]->SetMarkerColor(1); hMean_r[nj][ncen-1]->SetLineColor(1); hMean_r[nj][ncen-1]->SetMarkerSize(1.1); c3[nj]->cd(++ipad); //gPad->SetLogx(); hSigma[nj][ic]->Draw("p"); hSigma[nj][ncen-1]->Draw("psame"); if(ipad==6){ //l3[nj]->AddEntry(hSigma[nj][ncen-1],"pp","p"); l3[nj]->AddEntry(hSigma[nj][ncen-1],"pp v81 prod 22","p"); //l3[nj]->AddEntry(hSigma[nj][ncen-1],"pp w pu subtraction","p"); l3[nj]->AddEntry(hSigma[nj][0],"PbPb","p"); l3[nj]->Draw(); } if(ipad==1){ TPaveText *pt3 = new TPaveText(0.4193406,0.7098186,0.7083456,0.8899312,"brNDC"); pt3->SetBorderSize(0); pt3->SetFillColor(10); pt3->SetTextFont(42); TText *text3 = pt3->AddText("CMS Preliminary"); text3->SetTextSize(0.09); TText *text4 = pt3->AddText("PYTHIA Z2 + HYDJET 1.8"); text4->SetTextSize(0.09); pt3->Draw(); } TPaveText *pt = new TPaveText(0.2663379,0.02939336,0.4986753,0.1544715,"brNDC"); pt->SetBorderSize(0); pt->SetFillColor(10); pt->SetTextFont(42); TText *text = pt->AddText(Form("%s",ccent[ic])); text->SetTextSize(0.09); pt->Draw(); if(ipad==2){ TPaveText *pt1 = new TPaveText(0.1346399,0.6797999,0.9011061,0.8749218,"brNDC"); pt1->SetBorderSize(0); pt1->SetFillColor(10); pt1->SetTextFont(42); //TText *text1 = pt1->AddText(Form("%s",calgo[nj])); TText *text1 = pt1->AddText(Form("%s",algn[nj])); text1->SetTextSize(0.09); TText *text2 = pt1->AddText(Form("|#eta| < %0.0f",ketacut)); text2->SetTextSize(0.09); pt1->Draw(); } c3[nj]->cd(ipad+(ncen-1)); //cout<<"pad : "<<(ipad+(ncen-1))<<"\t "<<calgo[nj]<<"\t centrality : "<<ccent[ic]<<"\t name : "<<hArM[nj][ic]->GetName()<<endl; //gPad->SetLogx(); hMean[nj][ic]->Draw("p"); hMean_r[nj][ic]->Draw("psame"); hMean[nj][ncen-1]->Draw("psame"); hMean_r[nj][ncen-1]->Draw("psame"); if(ipad==6){ TLatex *tex1 = new TLatex(175,0.68,"Raw"); tex1->SetTextFont(42); tex1->SetTextSize(0.08); tex1->SetLineWidth(2); tex1->Draw(); TLatex *tex2 = new TLatex(174,0.63,"Corrected"); tex2->SetTextFont(42); tex2->SetTextSize(0.08); tex2->SetLineWidth(2); tex2->Draw(); TMarker *marker1 = new TMarker(162,0.65,25); marker1->SetMarkerStyle(25); marker1->Draw(); TMarker *marker2 = new TMarker(139,0.65,21); marker2->SetMarkerStyle(21); marker2->Draw(); TMarker *marker3 = new TMarker(162,0.70,24); marker3->SetMarkerStyle(24); marker3->Draw(); TMarker *marker4 = new TMarker(139,0.70,20); marker4->SetMarkerStyle(20); marker4->Draw(); } TLine *line = new TLine(xmin,1,xmax,1); line->SetLineWidth(1); line->SetLineStyle(2); line->Draw(); }else{ hRMS[nj][ic]->SetMarkerStyle(24); hRMS[nj][ic]->SetMarkerColor(1); hRMS[nj][ic]->SetLineColor(1); hRMS[nj][ic]->SetMarkerSize(1.3); hRMS[nj][ncen-1]->SetMarkerStyle(20); hRMS[nj][ncen-1]->SetMarkerColor(1); hRMS[nj][ncen-1]->SetLineColor(1); hRMS[nj][ncen-1]->SetMarkerSize(1.1); hArM[nj][ic]->SetMarkerStyle(24); hArM[nj][ic]->SetMarkerColor(1); hArM[nj][ic]->SetLineColor(1); hArM[nj][ic]->SetMarkerSize(1.3); hArM[nj][ncen-1]->SetMarkerStyle(20); hArM[nj][ncen-1]->SetMarkerColor(1); hArM[nj][ncen-1]->SetLineColor(1); hArM[nj][ncen-1]->SetMarkerSize(1.1); hArM_r[nj][ic]->SetMarkerStyle(25); hArM_r[nj][ic]->SetMarkerColor(1); hArM_r[nj][ic]->SetLineColor(1); hArM_r[nj][ic]->SetMarkerSize(1.3); hArM_r[nj][ncen-1]->SetMarkerStyle(21); hArM_r[nj][ncen-1]->SetMarkerColor(1); hArM_r[nj][ncen-1]->SetLineColor(1); hArM_r[nj][ncen-1]->SetMarkerSize(1.1); c3[nj]->cd(++ipad); //gPad->SetLogx(); hRMS[nj][ic]->Draw("p"); hRMS[nj][ncen-1]->Draw("psame"); if(ipad==6){ l3[nj]->AddEntry(hRMS[nj][ncen-1],"pp v81 prod22 ak3PF","p"); //l3[nj]->AddEntry(hRMS[nj][ncen-1],"pp w pu subtraction","p"); l3[nj]->AddEntry(hRMS[nj][0],"PbPb akPu3PF","p"); l3[nj]->Draw(); } if(ipad==1){ TPaveText *pt3 = new TPaveText(0.4193406,0.7098186,0.7083456,0.8899312,"brNDC"); pt3->SetBorderSize(0); pt3->SetFillColor(10); pt3->SetTextFont(42); TText *text3 = pt3->AddText("CMS Preliminary"); text3->SetTextSize(0.09); TText *text4 = pt3->AddText("PYTHIA Z2 + HYDJET 1.8"); text4->SetTextSize(0.09); pt3->Draw(); } TPaveText *pt = new TPaveText(0.2663379,0.02939336,0.4986753,0.1544715,"brNDC"); pt->SetBorderSize(0); pt->SetFillColor(10); pt->SetTextFont(42); TText *text = pt->AddText(Form("%s",ccent[ic])); text->SetTextSize(0.09); pt->Draw(); if(ipad==2){ TPaveText *pt1 = new TPaveText(0.1346399,0.6797999,0.9011061,0.8749218,"brNDC"); pt1->SetBorderSize(0); pt1->SetFillColor(10); pt1->SetTextFont(42); //TText *text1 = pt1->AddText(Form("%s",calgo[nj])); TText *text1 = pt1->AddText(Form("%s",algn[nj])); text1->SetTextSize(0.09); TText *text2 = pt1->AddText(Form("|#eta| < %0.0f",ketacut)); text2->SetTextSize(0.09); pt1->Draw(); } c3[nj]->cd(ipad+(ncen-1)); //cout<<"pad : "<<(ipad+(ncen-1))<<"\t "<<calgo[nj]<<"\t centrality : "<<ccent[ic]<<"\t name : "<<hArM[nj][ic]->GetName()<<endl; //gPad->SetLogx(); hArM[nj][ic]->Draw("p"); //hArM_r[nj][ic]->Draw("psame"); hArM[nj][ncen-1]->Draw("psame"); //hArM_r[nj][ncen-1]->Draw("psame"); if(ipad==6){ TLatex *tex1 = new TLatex(175,0.68,"Raw"); tex1->SetTextFont(42); tex1->SetTextSize(0.08); tex1->SetLineWidth(2); tex1->Draw(); TLatex *tex2 = new TLatex(174,0.63,"Corrected"); tex2->SetTextFont(42); tex2->SetTextSize(0.08); tex2->SetLineWidth(2); tex2->Draw(); TMarker *marker1 = new TMarker(162,0.65,25); marker1->SetMarkerStyle(25); marker1->Draw(); TMarker *marker2 = new TMarker(139,0.65,21); marker2->SetMarkerStyle(21); marker2->Draw(); TMarker *marker3 = new TMarker(162,0.70,24); marker3->SetMarkerStyle(24); marker3->Draw(); TMarker *marker4 = new TMarker(139,0.70,20); marker4->SetMarkerStyle(20); marker4->Draw(); } TLine *line = new TLine(xmin,1,xmax,1); line->SetLineWidth(1); line->SetLineStyle(2); line->Draw(); }//! else }//! icen if(nj!=1)c3[nj]->Close(); /* if(iSave){ c3[nj]->SaveAs(Form("AN/JERJES/JERJES_%s.png",calgo[nj])); c3[nj]->SaveAs(Form("AN/JERJES/JERJES_%s.pdf",calgo[nj])); c3[nj]->SaveAs(Form("AN/JERJES/JERJES_%s.C",calgo[nj])); c3[nj]->SaveAs(Form("AN/JERJES/JERJES_%s.eps",calgo[nj])); } */ }//! algo //return 0; ipad=0; TCanvas *c99[knj][ncen]; maxr=3; for(int nj=1;nj<2;nj++){ for(int ic=0;ic<ncen-1;ic++){ c99[nj][ic] = new TCanvas(Form("c99_%d_%d",nj,ic),Form("%s Fitting plots %s",calgo[nj],ccent[ic]),100,102,1399,942); //c99[nj][ic]->Divide(6,maxr,0,0); c99[nj][ic]->Divide(7,4,0,0); ipad=0; for(int ip=0;ip<nbins;ip++){ c99[nj][ic]->cd(++ipad); if(ipad%7==0)gPad->SetRightMargin(0.02); if(ipad==1 || ipad==8 || ipad==15 || ipad==22)gPad->SetLeftMargin(0.15); gPad->SetBottomMargin(0.15); gPad->SetLogy(); hratiocorrrefpt1D[nj][ic][ip]->SetMaximum(25.634); hratiocorrrefpt1D[nj][ic][ip]->SetMinimum(1e-09); hratiocorrrefpt1D[nj][ic][ip]->SetTitle(0); hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitle("<reco jet p_{T} / gen jet p_{T}>"); hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitleFont(42); hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetLabelFont(42); hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetLabelSize(0.08); hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitleSize(0.07); hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetTitle(""); hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetTitleFont(42); hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetLabelFont(42); hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetLabelSize(0.08); hratiocorrrefpt1D[nj][ic][ip]->SetMarkerStyle(24); hratiocorrrefpt1D[nj][ic][ip]->SetMarkerColor(1); hratiocorrrefpt1D[nj][ic][ip]->SetLineColor(1); hratiocorrrefpt1D[nj][ic][ip]->SetMarkerSize(1.1); hratiocorrrefpt1D[nj][ic][ip]->Draw("p"); // c99[nj][ic]->Update(); // TPaveStats *ps = (TPaveStats*) hratiocorrrefpt1D[nj][ic][ip]->GetListOfFunctions()->FindObject("stats"); // ps->SetX1NDC(0.50); // ps->SetY1NDC(0.41); // ps->SetX2NDC(0.95); // ps->SetY2NDC(0.79); // ps->SetTextFont(42); // ps->Draw(); //pp if(ic==0){ hratiocorrrefpt1D[nj][ncen-1][ip]->SetMaximum(25.634); hratiocorrrefpt1D[nj][ncen-1][ip]->SetMinimum(1e-09); hratiocorrrefpt1D[nj][ncen-1][ip]->SetTitle(0); hratiocorrrefpt1D[nj][ncen-1][ip]->GetXaxis()->SetTitle("<reco jet p_{T} / gen jet p_{T}>"); hratiocorrrefpt1D[nj][ncen-1][ip]->GetXaxis()->SetTitleFont(42); hratiocorrrefpt1D[nj][ncen-1][ip]->GetXaxis()->SetLabelFont(42); hratiocorrrefpt1D[nj][ncen-1][ip]->GetXaxis()->SetLabelSize(0.08); hratiocorrrefpt1D[nj][ncen-1][ip]->GetXaxis()->SetTitleSize(0.07); hratiocorrrefpt1D[nj][ncen-1][ip]->GetYaxis()->SetTitle(""); hratiocorrrefpt1D[nj][ncen-1][ip]->GetYaxis()->SetTitleFont(42); hratiocorrrefpt1D[nj][ncen-1][ip]->GetYaxis()->SetLabelFont(42); hratiocorrrefpt1D[nj][ncen-1][ip]->GetYaxis()->SetLabelSize(0.08); hratiocorrrefpt1D[nj][ncen-1][ip]->SetMarkerStyle(24); hratiocorrrefpt1D[nj][ncen-1][ip]->SetMarkerColor(2); hratiocorrrefpt1D[nj][ncen-1][ip]->SetLineColor(2); hratiocorrrefpt1D[nj][ncen-1][ip]->SetMarkerSize(0.8); } // TPaveStats *ps = (TPaveStats*) hratiocorrrefpt1D[nj][ic][ip]->GetListOfFunctions()->FindObject("stats"); // ps->SetX1NDC(0.50); // ps->SetY1NDC(0.41); // ps->SetX2NDC(0.95); // ps->SetY2NDC(0.79); // ps->SetTextFont(42); // ps->Draw(); hratiocorrrefpt1D[nj][ncen-1][ip]->Draw("psame"); c99[nj][ic]->Update(); TPaveText *pt = new TPaveText(0.4524683,0.8914759,0.7023389,0.9597512,"brNDC"); pt->SetBorderSize(0); pt->SetFillColor(10); pt->SetTextFont(42); TText *text = pt->AddText(Form("%0.0f < p_{T} (GeV/c) < %0.0f",ptbins[ip], ptbins[ip+1])); text->SetTextSize(0.07); pt->Draw(); // if(ic<ncen-1){ // hratiocorrrefpt1D[nj][ic][ip]->SetMaximum(25.634); // hratiocorrrefpt1D[nj][ic][ip]->SetMinimum(1e-09); // hratiocorrrefpt1D[nj][ic][ip]->SetTitle(0); // hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitle("<reco jet p_{T} / gen jet p_{T}>"); // hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitleFont(42); // hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetLabelFont(42); // hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetLabelSize(0.08); // hratiocorrrefpt1D[nj][ic][ip]->GetXaxis()->SetTitleSize(0.07); // hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetTitle(""); // hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetTitleFont(42); // hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetLabelFont(42); // hratiocorrrefpt1D[nj][ic][ip]->GetYaxis()->SetLabelSize(0.08); // hratiocorrrefpt1D[nj][ic][ip]->SetMarkerStyle(24); // hratiocorrrefpt1D[nj][ic][ip]->SetMarkerColor(1); // hratiocorrrefpt1D[nj][ic][ip]->SetLineColor(1); // hratiocorrrefpt1D[nj][ic][ip]->SetMarkerSize(0.9); // hratiocorrrefpt1D[nj][ic][ip]->Draw("p"); // hratiorawrefpt1D[nj][ic][ip]->SetMarkerStyle(24); // hratiorawrefpt1D[nj][ic][ip]->SetMarkerColor(4); // hratiorawrefpt1D[nj][ic][ip]->SetLineColor(4); // hratiorawrefpt1D[nj][ic][ip]->SetMarkerSize(0.9); // //hratiorawrefpt1D[nj][ic][ip]->Draw("psame"); // c99[nj][ic]->Update(); // TPaveStats *ps = (TPaveStats*) hratiocorrrefpt1D[nj][ic][ip]->GetListOfFunctions()->FindObject("stats"); // ps->SetX1NDC(0.50); // ps->SetY1NDC(0.41); // ps->SetX2NDC(0.95); // ps->SetY2NDC(0.79); // ps->SetTextFont(42); // ps->Draw(); // }else{ // TPaveText *pt = new TPaveText(0.4524683,0.8914759,0.7023389,0.9597512,"brNDC"); // pt->SetBorderSize(0); // pt->SetFillColor(10); // pt->SetTextFont(42); // TText *text = pt->AddText(Form("%0.0f < p_{T} (GeV/c) < %0.0f",ptbins[ip], ptbins[ip+1])); // text->SetTextSize(0.07); // pt->Draw(); // if(ipad==1){ // TPaveText *pt1 = new TPaveText(0.6044166,0.2194909,0.8644171,0.3668644,"brNDC"); // pt1->SetBorderSize(0); // pt1->SetFillColor(10); // pt1->SetTextFont(42); // TText *text1 = 0; // if(ic==ncen-1)text1 = pt1->AddText("ak3PF"); // else text1 = pt1->AddText(calgo[nj]); // text1->SetTextSize(0.09); // pt1->Draw(); // TPaveText *pt2 = new TPaveText(0.60104,0.8160025,0.8475339,0.9142515,"brNDC"); // pt2->SetBorderSize(0); // pt2->SetFillColor(10); // pt->SetTextFont(42); // TText *text2 = pt2->AddText(Form("%s",ccent[ic])); // text2->SetTextSize(0.08); // pt2->Draw(); // } } } } return 0; /* //! Difference between Gaussian fits mean/sigma and ArM/RMS cout<<"Sigma and RMS ....." <<endl; ipad=0; ialg=1; TCanvas *c7 = new TCanvas("c7","Sigma and RMSFit resolution",15,131,1885,546); makeMultiPanelCanvas(c7,ncen,2,0.0,0.0,0.22,0.22,0.02,0); //c7->SetGridx(); TLegend *l7 = new TLegend(0.2453033,0.6247655,0.4838159,0.9399625,NULL,"BRNDC"); l7->SetHeader(""); l7->SetBorderSize(0); l7->SetTextFont(42); l7->SetTextSize(0.09); l7->SetLineColor(1); l7->SetLineStyle(1); l7->SetLineWidth(1); l7->SetFillColor(10); l7->SetFillStyle(1001); l7->SetHeader(""); l7->AddEntry(hRMS[ialg][0],"RMS","p"); l7->AddEntry(hSigma[ialg][0],"Gaussian Sigma","p"); for(int icen=ncen-1;icen>=0;icen--){ c7->cd(++ipad); //gPad->SetGridx(); //gPad->SetLogx(); if(ipad==1){//! pp hSigma[ialg][icen]->SetStats(0); hSigma[ialg][icen]->SetMarkerStyle(20); hSigma[ialg][icen]->SetMarkerColor(1); hSigma[ialg][icen]->SetLineColor(1); hSigma[ialg][icen]->SetMarkerSize(1.0); hRMS[ialg][icen]->SetStats(0); hRMS[ialg][icen]->SetMarkerStyle(24); hRMS[ialg][icen]->SetMarkerColor(1); hRMS[ialg][icen]->SetLineColor(1); hRMS[ialg][icen]->SetMarkerSize(1.2); hRMS[ialg][icen]->Draw("p"); hSigma[ialg][icen]->Draw("psame"); hRatio_RMS[ialg][icen] = (TH1F*)hRMS[ialg][icen]->Clone(Form("hRatio_RMS%d_%d",1,icen)); hRatio_RMS[ialg][icen]->Divide(hSigma[ialg][icen]); }else{//! pbpb hSigma[ialg][icen]->SetStats(0); hSigma[ialg][icen]->SetMarkerStyle(20); hSigma[ialg][icen]->SetMarkerColor(1); hSigma[ialg][icen]->SetLineColor(1); hSigma[ialg][icen]->SetMarkerSize(1.0); hRMS[ialg][icen]->SetStats(0); hRMS[ialg][icen]->SetMarkerStyle(24); hRMS[ialg][icen]->SetMarkerColor(1); hRMS[ialg][icen]->SetLineColor(1); hRMS[ialg][icen]->SetMarkerSize(1.2); hRMS[ialg][icen]->Draw("p"); hSigma[ialg][icen]->Draw("psame"); hRatio_RMS[ialg][icen] = (TH1F*)hRMS[ialg][icen]->Clone(Form("hRatio_RMS%d_%d",1,icen)); hRatio_RMS[ialg][icen]->Divide(hSigma[ialg][icen]); } gPad->Update(); TPaveText *pt1 = new TPaveText(0.2846445,0.06345905,0.4451356,0.2028512,"brNDC"); pt1->SetBorderSize(0); pt1->SetFillColor(10); pt1->SetTextFont(42); TText *text1 = pt1->AddText(Form("%s",ccent[icen])); text1->SetTextSize(0.08); pt1->Draw(); if(ipad==1)l7->Draw(); gPad->Update(); c7->cd(ipad+ncen); //gPad->SetLogx(); //gPad->SetGridx(); TLine *l2 = new TLine(xmin,1,xmax+250,1); l2->SetLineWidth(1); l2->SetLineStyle(2); hRatio_RMS[ialg][icen]->SetStats(0); hRatio_RMS[ialg][icen]->SetMaximum(1.546); hRatio_RMS[ialg][icen]->SetMinimum(0.846); hRatio_RMS[ialg][icen]->GetYaxis()->SetTitle("RMS/Sigma"); hRatio_RMS[ialg][icen]->Draw("p"); l2->Draw(); } // c7->SaveAs("AN/JER/Fits_RMSSigma_JER.png"); // c7->SaveAs("AN/JER/Fits_RMSSigma_JER.C"); // c7->SaveAs("AN/JER/Fits_RMSSigma_JER.eps"); // c7->SaveAs("AN/JER/Fits_RMsSigma_JER.pdf"); cout<<endl; cout<<"ArM and Mean ....." <<endl; //! Mean ipad=0; TCanvas *c8 = new TCanvas("c8","ArM and Mean",15,131,1885,546); makeMultiPanelCanvas(c8,ncen,2,0.0,0.0,0.22,0.22,0.02,0); TLegend *l8 = new TLegend(0.2453033,0.6247655,0.4838159,0.9399625,NULL,"BRNDC"); l8->SetHeader(""); l8->SetBorderSize(0); l8->SetTextFont(42); l8->SetTextSize(0.09); l8->SetLineColor(1); l8->SetLineStyle(1); l8->SetLineWidth(1); l8->SetFillColor(10); l8->SetFillStyle(1001); l8->SetHeader(""); l8->AddEntry(hArM[ialg][0],"Ar Mean","p"); l8->AddEntry(hMean[ialg][0],"Gaussian Mean","p"); for(int icen=ncen-1;icen>=0;icen--){ c8->cd(++ipad); if(ipad==1){//! pp hMean[ialg][icen]->SetStats(0); hMean[ialg][icen]->SetMarkerStyle(20); hMean[ialg][icen]->SetMarkerColor(1); hMean[ialg][icen]->SetLineColor(1); hMean[ialg][icen]->SetMarkerSize(1.0); hArM[ialg][icen]->SetStats(0); hArM[ialg][icen]->SetMarkerStyle(24); hArM[ialg][icen]->SetMarkerColor(1); hArM[ialg][icen]->SetLineColor(1); hArM[ialg][icen]->SetMarkerSize(1.2); hArM[ialg][icen]->Draw("p"); hMean[ialg][icen]->Draw("psame"); hRatio_Mean[ialg][icen] = (TH1F*)hArM[ialg][icen]->Clone(Form("hRatio_ArM%d_%d",ialg,icen)); hRatio_Mean[ialg][icen]->Divide(hMean[ialg][icen]); }else{ hMean[ialg][icen]->SetStats(0); hMean[ialg][icen]->SetMarkerStyle(20); hMean[ialg][icen]->SetMarkerColor(1); hMean[ialg][icen]->SetLineColor(1); hMean[ialg][icen]->SetMarkerSize(1.0); hArM[ialg][icen]->SetStats(0); hArM[ialg][icen]->SetMarkerStyle(24); hArM[ialg][icen]->SetMarkerColor(1); hArM[ialg][icen]->SetLineColor(1); hArM[ialg][icen]->SetMarkerSize(1.2); hArM[ialg][icen]->Draw("p"); hMean[ialg][icen]->Draw("psame"); hRatio_Mean[ialg][icen] = (TH1F*)hArM[ialg][icen]->Clone(Form("hRatio_Mean%d_%d",ialg,icen)); hRatio_Mean[ialg][icen]->Divide(hMean[ialg][icen]); } TPaveText *pt1 = new TPaveText(0.2846445,0.06345905,0.4451356,0.2028512,"brNDC"); pt1->SetBorderSize(0); pt1->SetFillColor(10); pt1->SetTextFont(42); TText *text1 = pt1->AddText(Form("%s",ccent[icen])); text1->SetTextSize(0.08); pt1->Draw(); if(ipad==1)l8->Draw(); c8->cd(ipad+ncen); TLine *l2 = new TLine(xmin,1,xmax+250,1); l2->SetLineWidth(1); l2->SetLineStyle(2); hRatio_Mean[ialg][icen]->SetStats(0); hRatio_Mean[ialg][icen]->SetMaximum(1.046); hRatio_Mean[ialg][icen]->SetMinimum(0.946); hRatio_Mean[ialg][icen]->GetYaxis()->SetTitle("ArM/Mean"); hRatio_Mean[ialg][icen]->Draw("p"); l2->Draw(); } // c8->SaveAs("AN/JER/Fits_RMSSigma_JES.png"); // c8->SaveAs("AN/JER/Fits_RMSSigma_JES.C"); // c8->SaveAs("AN/JER/Fits_RMSSigma_JES.eps"); // c8->SaveAs("AN/JER/Fits_RMsSigma_JES.pdf"); */ return 0; }
void bdtout_etaR9bins(TString r9bin, bool preselNorm=false, bool passcut=false) { gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetCanvasColor(0); gStyle->SetFrameBorderMode(0); gStyle->SetPalette(1); TString r9_str; if (r9bin=="lowR9") {r9_str="both R9<0.9";} else if (r9bin=="mixedR9") {r9_str="one R9<0.9, one R9>0.9";} else if (r9bin=="highR9") {r9_str="both R9>0.9";} else { cout << "1st argument must be lowR9, midR9 or highR9" << endl; return; } TString passcut_str=""; if (passcut) passcut_str="_passcut"; TFile *file = TFile::Open("histograms_CMS-HGG_zeevalidation.root"); file->cd(); txt = new TLatex(); txt->SetNDC(); txt->SetTextSize(0.08); TH1* hist_Data[4]; TH1* hist_MC[4]; TH1* hist_MC_up[4]; TH1* hist_MC_down[4]; TH1* hist_syst[4]; TString eta_str[4] = {"Inclusive","EBEB","EBEE","EEEE"}; float sf_presel = bdtout_cat0_Data->Integral()/bdtout_cat0_DYJetsToLL->Integral(); for (int i=0; i<4; i++) { TString iStr; iStr+=i; hist_Data[i] = (TH1*)(file->Get("bdtout_"+r9bin+"_cat"+iStr+"_Data"))->Clone(); hist_MC[i] = (TH1*)(file->Get("bdtout_"+r9bin+"_cat"+iStr+"_DYJetsToLL"))->Clone(); hist_MC_up[i] = (TH1*)(file->Get("bdtout_"+r9bin+"_up_cat"+iStr+"_DYJetsToLL"))->Clone(); hist_MC_down[i] = (TH1*)(file->Get("bdtout_"+r9bin+"_down_cat"+iStr+"_DYJetsToLL"))->Clone(); if (passcut) { hist_Data[i]->Rebin(2); hist_MC[i]->Rebin(2); hist_MC_up[i]->Rebin(2); hist_MC_down[i]->Rebin(2); } else { hist_Data[i]->Rebin(4); hist_MC[i]->Rebin(4); hist_MC_up[i]->Rebin(4); hist_MC_down[i]->Rebin(4); } hist_MC_up[i]->SetLineColor(2); hist_MC_down[i]->SetLineColor(2); hist_Data[i]->GetYaxis()->SetTitle(""); hist_Data[i]->GetXaxis()->SetTitle("diphoMVA output ("+r9_str+", "+eta_str[i]+")"); hist_Data[i]->GetXaxis()->SetTitleSize(0.05); hist_MC[i]->SetFillColor(38); hist_Data[i]->SetMarkerStyle(20); hist_Data[i]->SetMarkerSize(.5); hist_syst[i] = (TH1*)hist_MC_up[i]->Clone(); hist_syst[i]->Add(hist_MC_down[i]); hist_syst[i]->Scale(0.5); for (int j=1; j<hist_syst[i]->GetNbinsX()+1; j++) { float up = hist_MC_up[i]->GetBinContent(j); float down = hist_MC_down[i]->GetBinContent(j); hist_syst[i]->SetBinError(j,fabs(up-down)/2.); } } TLegend *leg; leg = new TLegend(.6,.65,.87,.87); leg->SetBorderSize(0); leg->SetFillColor(10); leg->SetTextSize(.035); leg->AddEntry(hist_Data[0],"Data (19.6fb^{-1})"); leg->AddEntry(hist_MC[0],"DYJetsToLL MC","F"); leg->AddEntry(hist_syst[0],"MC with idmva�01","F"); TLegend *leg2; leg2 = new TLegend(.2,.65,.52,.87); leg2->SetBorderSize(0); leg2->SetFillColor(10); leg2->SetTextSize(.035); leg2->AddEntry(hist_Data[0],"Data (19.6fb^{-1})"); leg2->AddEntry(hist_MC[0],"DYJetsToLL MC","F"); leg2->AddEntry(hist_syst[0],"MC with idmva�01","F"); TLine *line; if (passcut) { line = new TLine(-0.05,1.,1.,1.); } else { line = new TLine(-1.,1.,1.,1.); } line->SetLineColor(4); line->SetLineWidth(2); TCanvas *c = new TCanvas("c","",2200,800); c->Divide(4,2); c->cd(1); plotDataMC(hist_Data[0],hist_MC[0],hist_MC_up[0],hist_MC_down[0], hist_syst[0],passcut,preselNorm,sf_presel); gPad->RedrawAxis(); if (r9bin=="highR9" || !passcut) leg2->Draw(); c->cd(2); plotDataMC(hist_Data[1],hist_MC[1],hist_MC_up[1],hist_MC_down[1], hist_syst[1],passcut,preselNorm,sf_presel); gPad->RedrawAxis(); if (r9bin=="highR9" || !passcut) leg2->Draw(); c->cd(3); plotDataMC(hist_Data[2],hist_MC[2],hist_MC_up[2],hist_MC_down[2], hist_syst[2],passcut,preselNorm,sf_presel); gPad->RedrawAxis(); leg->Draw(); c->cd(4); plotDataMC(hist_Data[3],hist_MC[3],hist_MC_up[3],hist_MC_down[3], hist_syst[3],passcut,preselNorm,sf_presel); gPad->RedrawAxis(); leg->Draw(); c->cd(5); gPad->SetGrid(); plotRatio(hist_Data[0],hist_MC[0],hist_MC_up[0],hist_MC_down[0],passcut); line->Draw(); c->cd(6); gPad->SetGrid(); plotRatio(hist_Data[1],hist_MC[1],hist_MC_up[1],hist_MC_down[1],passcut); line->Draw(); c->cd(7); gPad->SetGrid(); plotRatio(hist_Data[2],hist_MC[2],hist_MC_up[2],hist_MC_down[2],passcut); line->Draw(); c->cd(8); gPad->SetGrid(); plotRatio(hist_Data[3],hist_MC[3],hist_MC_up[3],hist_MC_down[3],passcut); line->Draw(); if (preselNorm) { c->SaveAs("bdtout_"+r9bin+passcut_str+"_preselNorm.png"); } else { c->SaveAs("bdtout_"+r9bin+passcut_str+"_equalArea.png"); } }
void makePlots_vdm_ls(double skip = 10.*11246.) { gROOT->ProcessLine(" .L style.cc+"); #ifdef __CINT__ style(); #endif TFile* file = TFile::Open("histos_vdmpp.root"); TH1D* h_rate = (TH1D*)file->Get((string("pp/h_rate_ls")).c_str()); h_rate->Scale(1./h_rate->GetBinWidth(1)); h_rate->SetTitle(";orbitNb;dN/dT_{Orbit}"); h_rate->GetXaxis()->SetNdivisions(505); h_rate->GetYaxis()->SetTitleOffset(h_rate->GetYaxis()->GetTitleOffset()*0.7); canFind = new TCanvas; canFind->Divide(1,2); vector<string> type; type.push_back("X"); type.push_back("Y"); vector<double> sectionXBegin; vector<double> sectionXEnd; vector<double> sectionXTruth; vector<double> sectionXMean; vector<double> sectionXMeanE; vector<TGraphErrors*> sectionXChi; // sectionXTruth.push_back(100); //0 // sectionXTruth.push_back(50); //1 // sectionXTruth.push_back(0); //2 // sectionXTruth.push_back(-50); //3 // sectionXTruth.push_back(-100);//4 // sectionXTruth.push_back(-50); //5 // sectionXTruth.push_back(0); //6 // sectionXTruth.push_back(50); //7 // sectionXTruth.push_back(100); //8 // sectionXTruth.push_back(0); //9 //sectionXTruth.push_back(-70); //0 sectionXTruth.push_back(-370); //1 sectionXTruth.push_back(-220); //2 sectionXTruth.push_back(-70); //3 sectionXTruth.push_back(80);//4 sectionXTruth.push_back(230); //5 sectionXTruth.push_back(80); //6 sectionXTruth.push_back(-70); //7 sectionXTruth.push_back(-220); //8 sectionXTruth.push_back(-370); //9 canFind->cd(1); FindSections(h_rate,sectionXBegin, sectionXEnd, BEGINX,ENDX,3.*11246.,skip); //FindSections(h_rate,sectionXBegin, sectionXEnd, 1.932e8,2.025e8,3.*11246.,skip); #ifdef __CINT__ CMSText(1,1,1,string("#DeltaX length scale"),"","pp, #sqrt{s}=2.76 TeV"); #endif if(sectionXTruth.size() != sectionXBegin.size()) { cerr << "Sections error: not same size. Truth/Found: " << sectionXTruth.size() << " " << sectionXBegin.size() << endl; //exit(-1); } vector<double> sectionYBegin; vector<double> sectionYEnd; vector<double> sectionYTruth; vector<double> sectionYMean; vector<double> sectionYMeanE; vector<TGraphErrors*> sectionYChi; // sectionYTruth.push_back(100); // sectionYTruth.push_back(50); // sectionYTruth.push_back(0); // sectionYTruth.push_back(-50); // sectionYTruth.push_back(-100); // sectionYTruth.push_back(-50); // sectionYTruth.push_back(0); // sectionYTruth.push_back(50); // sectionYTruth.push_back(100); // sectionYTruth.push_back(0); //sectionYTruth.push_back(70); //0 sectionYTruth.push_back(-370); //1 sectionYTruth.push_back(-220); //2 sectionYTruth.push_back(-70); //3 sectionYTruth.push_back(80);//4 sectionYTruth.push_back(230); //5 sectionYTruth.push_back(80); //6 sectionYTruth.push_back(-70); //7 sectionYTruth.push_back(-220); //8 sectionYTruth.push_back(-370); //9 canFind->cd(2); //FindSections(h_rate,sectionYBegin, sectionYEnd, 2.038e8,2.12e8,3.*11246.,skip); FindSections(h_rate,sectionYBegin, sectionYEnd, BEGINY,ENDY,3.*11246.,skip); #ifdef __CINT__ CMSText(1,1,1,string("#DeltaY length scale"),"","pp, #sqrt{s}=2.76 TeV"); #endif if(sectionYTruth.size() != sectionYBegin.size()) { cerr << "Sections error: not same size. Truth/Found: " << sectionYTruth.size() << " " << sectionYBegin.size() << endl; //exit(-1); } TCanvas* can1 = new TCanvas; can1->Divide(1,2); //GENERAL LOOP OVER SECTIONS for(int n=0; n<int(type.size()); n++) { can1->cd(type[n]=="X"?1:2); vector<double>& sectionBegin = type[n]=="X"?sectionXBegin:sectionYBegin; vector<double>& sectionEnd = type[n]=="X"?sectionXEnd:sectionYEnd; vector<double>& sectionTruth = type[n]=="X"?sectionXTruth:sectionYTruth; vector<double>& sectionMean = type[n]=="X"?sectionXMean:sectionYMean; vector<double>& sectionMeanE = type[n]=="X"?sectionXMeanE:sectionYMeanE; vector<TGraphErrors*>& sectionChi = type[n]=="X"?sectionXChi:sectionYChi; const int nSec = int(sectionBegin.size()); sectionMean.resize(nSec); sectionMeanE.resize(nSec); TH2D* h_length_scale = (TH2D*)file->Get((string("pp/h_length_scale_") + type[n]).c_str()); // for(int i= 0; i<h_length_scale->GetNbinsX()+1;i++) cout << h_length_scale->Print TGraphErrors* h_truth_fit_up = new TGraphErrors(0); TGraphErrors* h_truth_fit_down = new TGraphErrors(0); TGraphErrors* h_truth_fit_crosscheck_up = new TGraphErrors(0); TGraphErrors* h_truth_fit_crosscheck_down = new TGraphErrors(0); ostringstream profiletitle; profiletitle << "truth_fit_" << type[n]; ostringstream crosschecktitle; crosschecktitle << "truth_fit_crosscheck_" << type[n]; h_truth_fit_down->SetName(profiletitle.str().c_str()); h_truth_fit_crosscheck_down->SetName(crosschecktitle.str().c_str()); profiletitle << "_down"; crosschecktitle << "_down"; h_truth_fit_up->SetName(profiletitle.str().c_str()); h_truth_fit_crosscheck_up->SetName(crosschecktitle.str().c_str()); vector<TF1*> sectionFunc; sectionFunc.resize(nSec); vector<TFitResultPtr> sectionFuncPtr; sectionFuncPtr.resize(nSec); ostringstream histotitle; histotitle << ";orbit number; vertex " << type[n] << " position [cm]"; h_length_scale->SetTitle(histotitle.str().c_str()); h_length_scale->SetMarkerSize(0.5); h_length_scale->GetXaxis()->SetNdivisions(505); h_length_scale->GetYaxis()->SetTitleOffset(h_length_scale->GetYaxis()->GetTitleOffset()*0.7); if(type[n]=="X") h_length_scale->GetXaxis()->SetRangeUser(BEGINX,ENDX); else h_length_scale->GetXaxis()->SetRangeUser(BEGINY,ENDY); // if(type[n]=="X") // h_length_scale->GetXaxis()->SetRangeUser(193000000,202000000); // else // h_length_scale->GetXaxis()->SetRangeUser(203000000,211000000); // h_length_scale->GetYaxis()->SetRangeUser(0.00,0.15); h_length_scale->Draw("COLZ"); #ifdef __CINT__ CMSText(1,1,1,string("#Delta")+type[n]+string(" length scale"),"","pp, #sqrt{s}=2.76 TeV"); #endif //FIT EACH SECTION TCanvas* canFit = new TCanvas; canFit->Divide(TMath::Nint(nSec/2.),2); for (int i=0; i<nSec; i++) { int binStartNotSkipped,binStart, binEnd, helper; double x1,x2,xend; h_length_scale->GetBinXYZ(h_length_scale->FindBin(sectionBegin[i]),binStartNotSkipped,helper,helper); binStartNotSkipped++; h_length_scale->GetBinXYZ(h_length_scale->FindBin(sectionBegin[i]+skip),binStart,helper,helper); binStart++; h_length_scale->GetBinXYZ(h_length_scale->FindBin(sectionEnd[i]),binEnd,helper,helper); binEnd--; x1=h_length_scale->GetBinLowEdge(binStartNotSkipped); x2=h_length_scale->GetBinLowEdge(binStart); xend=h_length_scale->GetBinLowEdge(binEnd+1); if(binStart >= binEnd) { cerr << "MAJOR WARNING Chosen skipping value too large for section " << i << "(" << binStart << "," << binEnd << ")" << endl; } ostringstream funcTitle; funcTitle << "section" << type[n] << "Func_" << i; sectionFunc[i] = new TF1(funcTitle.str().c_str(),"gaus"); sectionFunc[i]->SetLineWidth(2); sectionFunc[i]->SetLineColor(kRed); sectionFunc[i]->SetLineStyle(1); funcTitle << "_Prof"; TH1D* helperProfile = h_length_scale->ProjectionY(funcTitle.str().c_str(),binStart,binEnd); canFit->cd(i+1); helperProfile->Draw(); sectionFuncPtr[i] = helperProfile->Fit(sectionFunc[i],"QS"); if(Int_t(sectionFuncPtr[i]) !=0) { cerr << " !!! MAJOR WARNING." << endl << "in section " << i << " fit did not converge: " << gMinuit->fCstatu.Data() << endl; } sectionFunc[i]->SetLineWidth(2); sectionFunc[i]->Draw("SAME"); sectionMean[i] = helperProfile->GetMean(); sectionMeanE[i] = helperProfile->GetMeanError(); if(x1<x2) { //can1->cd(); TBox* box1 = new TBox(x1,0.1,x2,0.105); box1->SetFillColor(kRed); box1->SetFillStyle(3001); box1->DrawClone(); TBox* box2 = new TBox(x2,0.1,xend,0.105); box2->SetFillColor(kGreen); box2->SetFillStyle(3001); box2->DrawClone(); } } // //DETERMINE THE MEAN WHERE TRUTH IS AT NOMINAL POSITION -> now done below // double xw = 0; // double w = 0; // for(int i=0; i<nSec; i++) // { // if(sectionTruth[i]==70 || sectionTruth[i]==-70) // { // double weight = 1./pow(sectionFuncPtr[i]->ParError(1),2); // xw += sectionFuncPtr[i]->Parameter(1) * weight; // w += weight; // //cout << sectionFuncPtr[i]->Parameter(1) << " weight: " << weight << endl; // } // } // double sigma = sqrt(1./w); // double y0 = xw/w; // cout << "y0 = " << y0 << "+-" << sigma << endl; //CHECK CHI2 OPTIMISATION TCanvas* can3 = new TCanvas; sectionChi.resize(nSec); string drawoption("AL"); TLegend* legchi = new TLegend(0.55,0.5,0.85,0.9); for(int i=0; i<nSec; i++) { if(i<1 || i >8) continue; const int nSkipBins=10; ostringstream graphTitle; graphTitle << "section_" << type[n] << "_chi2_Graph_" << i; sectionChi[i] = (new TGraphErrors(0)); sectionChi[i]->SetName(graphTitle.str().c_str()); for (int skipBin=0; skipBin<nSkipBins; skipBin++) { int binStart, binEnd, helper; h_length_scale->GetBinXYZ(h_length_scale->FindBin(sectionBegin[i]),binStart,helper,helper); binStart++; h_length_scale->GetBinXYZ(h_length_scale->FindBin(sectionEnd[i]),binEnd,helper,helper); binEnd--; binStart += skipBin; if(binStart >= binEnd) continue; double x = double(h_length_scale->GetBinLowEdge(binStart) - h_length_scale->GetBinLowEdge(binStart-skipBin)) / 11246.; //cout << "skip bin: " << skipBin << "(" << binStart << ")" << endl; ostringstream funcTitle; funcTitle << "section" << type[n] << "Func_" << i << "_" << skipBin; TF1* helperFunc = new TF1(funcTitle.str().c_str(),"gaus"); funcTitle << "_Prof"; TH1D* helperProfile = h_length_scale->ProjectionY(funcTitle.str().c_str(),binStart,binEnd); TFitResultPtr helperPtr = helperProfile->Fit(helperFunc,"QSN"); if(Int_t(helperPtr) !=0) { cout << "fit failed" << endl; cout << "skip bin: " << skipBin << "(" << binStart << ")" << endl; continue; } double chi2 = helperPtr->Chi2()/double(helperPtr->Ndf()); sectionChi[i]->SetPoint(sectionChi[i]->GetN(),x,chi2); //cout << skipBin << " " << x << " " << chi2 << endl; } //sectionChi[i]->Print("ALL"); sectionChi[i]->SetTitle(";skip interval [s]; #chi^{2}/NDF"); sectionChi[i]->GetYaxis()->SetRangeUser(0,6); sectionChi[i]->GetXaxis()->SetLimits(0,30); sectionChi[i]->SetLineWidth(2); sectionChi[i]->SetLineColor(i); sectionChi[i]->Draw(drawoption.c_str()); drawoption = string("L"); ostringstream legtext ; legtext << "Section " << i << " (" << sectionTruth[i] << " µm)"; legchi->AddEntry(sectionChi[i],legtext.str().c_str(),"l"); } #ifdef __CINT__ CMSText(1,1,1,string("#Delta")+type[n]+string(" length scale"),"","pp, #sqrt{s}=2.76 TeV"); SetLegAtt(legchi); #endif legchi->Draw("SAME"); TLine* line = new TLine(skip/11246.,0,skip/11246.,2.5); line->SetLineWidth(2); line->SetLineStyle(2); line->Draw("SAME"); can3->SaveAs((string("plots/vdm_length_scale_")+type[n]+string("_3_pp.pdf")).c_str()); //Determine reference value y0 to subtract from plotting TGraph helperGraph(nSec); double y0=0; for (int i=0; i<nSec; i++) { double y = sectionFuncPtr[i]->Parameter(1); helperGraph.SetPoint(i,sectionTruth[i]*(type[n]=="X"?-1:1), y); y0 = helperGraph.Eval(0); } cout << "y0 = " << y0 << endl; //TRUTH VS TRACKER PLOT for (int i=0; i<nSec; i++) { ostringstream text; double size = 0.01; double y = sectionFuncPtr[i]->Parameter(1); double y_cc = sectionMean[i]; //just used for cross checking (cc) the gaussian fit double yum = (y-y0)*1e4; //cm -> µm => 1e-2 -> 1e-6 => 1e4 double yum_cc = (y_cc-y0)*1e4; //cm -> µm => 1e-2 -> 1e-6 => 1e4 double yumerror = (sectionFuncPtr[i]->ParError(1))*10000.; double yumerror_cc = sectionMeanE[i] * 10000; text << "#Delta" << type[n] << "_{Fit}=" << fixed << setprecision(1) << yum; TPaveText* txt = new TPaveText(sectionBegin[i],y+1.5*size,sectionEnd[i],y+2.5*size,"b t l"); txt->SetTextFont(62); txt->SetFillStyle(0); txt->SetTextColor(kRed); txt->SetTextSize(0.04); txt->SetBorderSize(0); txt->AddText(text.str().c_str()); txt->Draw("SAME"); if(i>=1 && i<=4) //WARNING also setpoint needs to be changed { cout << "up " << i << " " << sectionTruth[i]*(type[n]=="X"?-1:1) << " " << yum << "+-" << yumerror << endl; h_truth_fit_up->SetPoint(i-1,sectionTruth[i]*(type[n]=="X"?-1:1), yum); // Coordinate Sys different z? X has to be inverted. h_truth_fit_up->SetPointError(i-1,0, yumerror); h_truth_fit_crosscheck_up->SetPoint(i-1,sectionTruth[i]*(type[n]=="X"?-1:1), yum_cc); // Coordinate Sys different z? X has to be inverted. h_truth_fit_crosscheck_up->SetPointError(i-1,0, yumerror_cc); } if(i>=5 && i<=8) //anti hysteresis //WARNING also setpoint needs to be changed { cout << "down " << i << " " << sectionTruth[i]*(type[n]=="X"?-1:1) << " " << yum << "+-" << yumerror << endl; h_truth_fit_down->SetPoint(i-5,sectionTruth[i]*(type[n]=="X"?-1:1), yum); // Coordinate Sys different z? X has to be inverted. h_truth_fit_down->SetPointError(i-5,0, yumerror); h_truth_fit_crosscheck_down->SetPoint(i-5,sectionTruth[i]*(type[n]=="X"?-1:1), yum_cc); // Coordinate Sys different z? X has to be inverted. h_truth_fit_crosscheck_down->SetPointError(i-5,0, yumerror_cc); } } canFit->SaveAs((string("plots/vdm_length_scale_")+type[n]+string("_Fits_pp.pdf")).c_str()); TCanvas* can2 = new TCanvas; ostringstream titleup; titleup << ";#Delta" << type[n] << " (LHC) [#mum]; #Delta" << type[n] << " (CMS) [#mum]"; h_truth_fit_up->SetTitle(titleup.str().c_str()); h_truth_fit_up->SetMarkerSize(1.3); h_truth_fit_up->SetMarkerColor(kRed); h_truth_fit_up->SetLineColor(kRed); h_truth_fit_up->SetLineWidth(2); h_truth_fit_up->GetXaxis()->SetLimits(-400,400); h_truth_fit_up->GetYaxis()->SetRangeUser(-400,400); h_truth_fit_up->Draw("AP"); TFitResultPtr fit_up = h_truth_fit_up->Fit("pol1","QS"); TFitResultPtr fit_crosscheck_up = h_truth_fit_crosscheck_up->Fit("pol1","QNS"); h_truth_fit_up->GetFunction("pol1")->SetLineWidth(2); h_truth_fit_up->GetFunction("pol1")->SetLineColor(kRed); h_truth_fit_down->SetMarkerColor(kBlue); h_truth_fit_down->SetMarkerStyle(25); h_truth_fit_down->SetMarkerSize(1.3); h_truth_fit_down->SetLineColor(kBlue); h_truth_fit_down->SetLineWidth(2); h_truth_fit_down->Draw("P"); TFitResultPtr fit_down = h_truth_fit_down->Fit("pol1","QS"); TFitResultPtr fit_crosscheck_down = h_truth_fit_crosscheck_down->Fit("pol1","QNS"); h_truth_fit_down->GetFunction("pol1")->SetLineWidth(2); h_truth_fit_down->GetFunction("pol1")->SetLineColor(kBlue); TLegend* leg = new TLegend(0.22,0.72,0.6,0.82); ostringstream legup,legdown; legup << "#Delta" << type[n] << " low-to-high (Slope:" << fixed << setprecision(3) << fit_up ->Parameter(1) << " )"; legdown << "#Delta" << type[n] << " high-to-low (Slope:" << fixed << setprecision(3) << fit_down->Parameter(1) << " )"; leg->AddEntry(h_truth_fit_up ,legup .str().c_str(),"lp"); leg->AddEntry(h_truth_fit_down,legdown.str().c_str(),"lp"); #ifdef __CINT__ SetLegAtt(leg); CMSText(1,1,1,"","","pp, #sqrt{s}=2.76 TeV"); #endif leg->Draw("SAME"); can2->SaveAs((string("plots/vdm_length_scale_")+type[n]+string("_2_pp.pdf")).c_str()); double average = (fit_up->Parameter(1) + fit_down->Parameter(1)) / 2.; double average_cc = (fit_crosscheck_up->Parameter(1) + fit_crosscheck_down->Parameter(1)) / 2.; double stat = sqrt( pow(fit_up->Parameter(1)/2.,2) * pow(fit_down->ParError(1),2) + pow(fit_down->Parameter(1)/2.,2) * pow(fit_up->ParError(1),2)); double sysupdown = fabs(fit_up->Parameter(1) - fit_down->Parameter(1))/ 2.; double sysfit = fabs(average_cc - average) / 2.; double sysskip = (type[n]=="X"?0.001:0.003); double sys = sqrt ( sysfit*sysfit + sysupdown*sysupdown + sysskip*sysskip); cout << endl << endl << endl; cout << fixed << setprecision(3) << " Δ" << type[n] << endl << "--Correction Factor: " << average << endl << "up: " << fit_up->Parameter(1) << endl << "down: " << fit_down->Parameter(1) << endl << "--Stat: " << stat << endl << "--Sys Combined: " << sys << endl << "Sys. Up Down: " << sysupdown << endl << "Sys. Fitting: " << sysfit << endl << "Sys. Skipping: " << sysskip << endl; cout << endl << endl << endl; } can1->SaveAs((string("plots/vdm_length_scale")+string("_1_pp.pdf")).c_str()); canFind->SaveAs((string("plots/vdm_length_scale")+string("_sections_pp.pdf")).c_str()); }
int FwBwRatio_rap() { string str_sig[] = {"Inclusive J/#psi", "Prompt J/#psi", "Non-prompt J/#psi"}; string str_sig_filename[] = {"Inclusive_nRap3", "Prompt_nRap3", "Non-prompt_nRap3"}; string str_rap[] = { "[-2.4, -1.757]", "[-1.757, -1.113]", "[-1.113, -0.47]", "[-0.47, 0.173]", "[0.173, 0.817]", "[0.817. 1.46]" }; // string str_sig_filename[] = {"Inclusive_nRap5", "Prompt_nRap5", "Non-prompt_nRap5"}; // string str_rap[] = { // "[-2.4, -2.014]", "[-2.014, -1.628]", "[-1.628, -1.242]", "[-1.242, -0.856]", "[-0.856, -0.47]", "[-0.47, -0.084]", "[-0.084, 0.302]", "[0.302. 0.688]", "[0.688, 1.074]", "[1.074, 1.46]", "[1.46, 1.93]", "[1.93, 2.4]" // }; string str_pt[] = {"6.5-30"}; string str_cent[] = { "50-100","30-50","10-30","0-10" }; const int nBW = 3; // Count number of backward bins // const int nBW = 5; // Count number of backward bins const int nRap = sizeof(str_rap)/sizeof(string); const int nPt = sizeof(str_pt)/sizeof(string); const int nCent = sizeof(str_cent)/sizeof(string); const int nSig = sizeof(str_sig)/sizeof(string); // Number of binary collision is defined with Z raw yields for the moment double Ncoll[nCent] = {1.000, 0.742, 0.457, 0.552}; // 100, 50, 30, 10, 0 for 18.38/nb double NcollErr[nCent] = {0.032, 0.022, 0.014, 0.020}; // 100, 50, 30, 10, 0 for 18.38/nb // raw yields double forward[nSig][nRap][nCent]; double backward[nSig][nRap][nCent]; double forwardErr[nSig][nRap][nCent]; double backwardErr[nSig][nRap][nCent]; // R_cp of raw yields double forwardRcp[nSig][nRap][nCent]; double backwardRcp[nSig][nRap][nCent]; double forwardRcpErr[nSig][nRap][nCent]; double backwardRcpErr[nSig][nRap][nCent]; // Ratio of R_cp (forward/backward) double finalRatio[nSig][nRap][nCent]; double finalRatioErr[nSig][nRap][nCent]; // Get numbers from txt file ifstream finput; finput.open(Form("./fit_short_nRap3")); // finput.open(Form("./fit_short_nRap5_noSingleMuEtaCuts")); if (!finput.good()) { cout << "Cannot open input file: " << Form("./fit_short") << endl; return -1; } for (int rap=0; rap<nBW; rap++) { for (int cent=0; cent<nCent; cent++) { for (int sig=0; sig<nSig; sig++) { finput >> backward[sig][rap][cent] >> backwardErr[sig][rap][cent]; } } // cent ends } // rap ends for (int rap=nBW; rap<nRap; rap++) { for (int cent=0; cent<nCent; cent++) { for (int sig=0; sig<nSig; sig++) { finput >> forward[sig][rap-nBW][cent] >> forwardErr[sig][rap-nBW][cent]; } } // cent ends } // rap ends // Get Rcp and ratio of (forward/backward) for (int sig=0; sig<nSig; sig++) { for (int rap=0; rap<nRap; rap++) { for (int cent=0; cent<nCent; cent++) { forwardRcp[sig][rap][cent] = Ncoll[cent] * forward[sig][rap][cent] / forward[sig][rap][0]; backwardRcp[sig][rap][cent] = Ncoll[cent] * backward[sig][rap][cent] / backward[sig][rap][0]; double f_ncoll = NcollErr[cent]/Ncoll[cent]; double f_central = forwardErr[sig][rap][cent] / forward[sig][rap][cent]; double f_peri = forwardErr[sig][rap][0] / forward[sig][rap][0]; forwardRcpErr[sig][rap][cent] = forwardRcp[sig][rap][cent] * TMath::Sqrt(TMath::Power(f_ncoll,2)+TMath::Power(f_central,2)+TMath::Power(f_peri,2)); double b_central = backwardErr[sig][rap][cent] / backward[sig][rap][cent]; double b_peri = backwardErr[sig][rap][0] / backward[sig][rap][0]; backwardRcpErr[sig][rap][cent] = backwardRcp[sig][rap][cent] * TMath::Sqrt(TMath::Power(f_ncoll,2)+TMath::Power(b_central,2)+TMath::Power(b_peri,2)); // Get Rcp ratio finalRatio[sig][rap][cent] = forwardRcp[sig][rap][cent]/backwardRcp[sig][rap][cent]; double r_forw = forwardRcpErr[sig][rap][cent]/forwardRcp[sig][rap][cent]; double r_back = backwardRcpErr[sig][rap][cent]/backwardRcp[sig][rap][cent]; finalRatioErr[sig][rap][cent] = finalRatio[sig][rap][cent]*TMath::Sqrt(TMath::Power(r_forw,2)+TMath::Power(r_back,2)); } } } double xaxis[nRap-nBW][nCent] = {{0}}; double xaxis2[nCent+1] = {0}; double yaxis[nCent] = {0}; double yaxis2[nCent+1] = {0}; for (int i=0; i<nCent; i++) { for (int j=0; j<nRap-nBW; j++) { xaxis[j][i] = i+0.35+(j*0.05); } yaxis[i] = 1; } for (int i=0; i<nCent+1; i++) { xaxis2[i] = i; yaxis2[i] = 1; } gROOT->Macro("~/JpsiStyle.C"); TCanvas canv; canv.Draw(); TH1D *gr = new TH1D("ghost",";;",nCent,0,nCent); gr->GetYaxis()->SetRangeUser(0.5,3); gr->GetXaxis()->LabelsOption("h"); gr->GetXaxis()->SetLabelSize(0.055); for (int i=0; i<nCent; i++) { gr->GetXaxis()->SetBinLabel(i+1,Form("%s%%",str_cent[i].c_str())); } gr->GetYaxis()->SetTitle("Forward R_{cp}"); TLegend *leg; TLine *gline = new TLine(); gline->SetLineWidth(1.2); gline->SetLineColor(kGray+1); TGraphErrors *gr_forwardRcp[nSig][nRap-nBW]; for (int sig=0; sig<nSig; sig++) { // leg = new TLegend(0.15,0.58,0.93,0.93); leg = new TLegend(0.15,0.7,0.93,0.93); SetLegendStyle(leg); leg->SetHeader(str_sig[sig].c_str()); gr->Draw("l"); gline->DrawLine(0,1,nCent,1); for (int rap=0; rap<nRap-nBW; rap++) { gr_forwardRcp[sig][rap] = new TGraphErrors(nCent,xaxis[rap],forwardRcp[sig][rap],0,forwardRcpErr[sig][rap]); SetGraphStyle(gr_forwardRcp[sig][rap],sig,rap); char name[512]; sprintf(name,"y: %s",str_rap[rap+nBW].c_str()); leg->AddEntry(gr_forwardRcp[sig][rap],name,"lp"); gr_forwardRcp[sig][rap]->Draw("[lp]"); } leg->Draw(); canv.SaveAs(Form("Ratio_Rcp_rap_fw_%s.pdf",str_sig_filename[sig].c_str())); delete leg; canv.Clear(); } gr->GetYaxis()->SetTitle("Backward R_{cp}"); TGraphErrors *gr_backwardRcp[nSig][nBW]; for (int sig=0; sig<nSig; sig++) { // leg = new TLegend(0.15,0.65,0.93,0.93); leg = new TLegend(0.15,0.7,0.93,0.93); SetLegendStyle(leg); leg->SetHeader(str_sig[sig].c_str()); gr->Draw("l"); gline->DrawLine(0,1,nCent,1); for (int rap=0; rap<nBW; rap++) { gr_backwardRcp[sig][rap] = new TGraphErrors(nCent,xaxis[rap],backwardRcp[sig][rap],0,backwardRcpErr[sig][rap]); SetGraphStyle(gr_backwardRcp[sig][rap],sig,(nBW-1)-rap); char name[512]; sprintf(name,"y: %s",str_rap[rap].c_str()); leg->AddEntry(gr_backwardRcp[sig][rap],name,"lp"); gr_backwardRcp[sig][rap]->Draw("[lp]"); } leg->Draw(); canv.SaveAs(Form("Ratio_Rcp_rap_bw_%s.pdf",str_sig_filename[sig].c_str())); canv.Clear(); delete leg; } /* gr->GetYaxis()->SetTitle("Ratio of forward R_{cp}/backward R_{cp}"); TGraphErrors *gr_finalRatio[nSig][nRap]; for (int sig=0; sig<nSig; sig++) { leg = new TLegend(0.3,0.7,0.93,0.9); SetLegendStyle(leg); leg->SetHeader(str_sig[sig].c_str()); gr->Draw("l"); gline->DrawLine(0,1,nCent,1); for (int rap=0; rap<nRap; rap++) { gr_finalRatio[sig][rap]= new TGraphErrors(nCent,xaxis[rap],finalRatio[sig][rap],0,finalRatioErr[sig][rap]); SetGraphStyle(gr_finalRatio[sig][rap],sig,rap); char name[512]; sprintf(name,"%s, y: %s",str_sig[sig].c_str(),str_rap[rap].c_str()); leg->AddEntry(gr_finalRatio[sig][rap],name,"lp"); gr_finalRatio[sig][rap]->Draw("[lp]"); } leg->Draw(); canv.SaveAs(Form("Ratio_Rcp_rap_fwbw_%s.pdf",str_sig_filename[sig].c_str())); canv.Clear(); delete leg; }*/ return 0; }
void raaExpOpen_pt(const char* inputDir = "../macro_raa/outRoot", // the place where the input root files, with the histograms are bool bSavePlots = true, bool bDrawCh = true, double xMax = 30 // x-axis range limit (ALICE D has x-range maximum value at 36, CMS has it at 30) ) { // set the style gSystem->mkdir(Form("./figs/png"), kTRUE); gSystem->mkdir(Form("./figs/pdf"), kTRUE); setTDRStyle(); // read CMS graphs TFile *pgRaaCms_pt = new TFile(Form("%s/makeRaa_pt.root",inputDir)); // ##################### HIGH PT ############################ TGraphErrors *pgCms = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsi"); TGraphErrors *pgCmsP = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsiP"); TGraphErrors *pgCmsSyst = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsiSyst"); pgCmsSyst->SetFillColorAlpha(kOrange-9,0.5); pgCms->SetName("gNonPrJpsi"); TBox *lumi = (TBox*)pgRaaCms_pt->Get("lumi"); lumi->SetFillColor(kOrange-9); lumi->SetFillStyle(1001); lumi->SetX1(xMax-0.75); lumi->SetX2(xMax); TBox *lumi_lowpt = (TBox*)lumi->Clone("lumi_lowpt"); lumi_lowpt->SetFillColor(kViolet-9); lumi_lowpt->SetFillStyle(1001); lumi_lowpt->SetX1(xMax-1.5); lumi_lowpt->SetX2(xMax-0.75); // ##################### LOW PT ############################ TGraphErrors *pgCms_lowpt = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsi_pt365y1624"); TGraphErrors *pgCmsP_lowpt = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsiP_pt365y1624"); TGraphErrors *pgCmsSyst_lowpt = (TGraphErrors *)pgRaaCms_pt->Get("gNonPrJpsiSyst_pt365y1624"); pgCmsSyst_lowpt->SetFillColorAlpha(kViolet-9,0.5); pgCms_lowpt->SetName("gNonPrJpsi_pt365y1624"); //-------------------------------------------------------------------- // *********** CMS Charged particle RAA TGraphAsymmErrors *p8165_d5x1y1 = new TGraphAsymmErrors(p8165_d5x1y1_numpoints, p8165_d5x1y1_xval, p8165_d5x1y1_yval, p8165_d5x1y1_xerrminus, p8165_d5x1y1_xerrplus, p8165_d5x1y1_ystatminus, p8165_d5x1y1_ystatplus); TGraphAsymmErrors *p8165_d5x1y1_syst = new TGraphAsymmErrors(p8165_d5x1y1_numpoints, p8165_d5x1y1_xval, p8165_d5x1y1_yval, p8165_d5x1y1_xerrminus, p8165_d5x1y1_xerrplus, p8165_d5x1y1_yerrminus, p8165_d5x1y1_yerrplus); p8165_d5x1y1->SetName("cms_ch_raa"); // X-axis errors will be discarded for (int i=0; i<p8165_d5x1y1_numpoints; i++) { p8165_d5x1y1->SetPointEXlow(i,0); p8165_d5x1y1->SetPointEXhigh(i,0); p8165_d5x1y1_syst->SetPointEXlow(i,0.5); p8165_d5x1y1_syst->SetPointEXhigh(i,0.5); } // *********** ALICE D RAA vs. pT TGraphAsymmErrors *p9059_d15x1y1 = new TGraphAsymmErrors(p9059_d15x1y1_numpoints, p9059_d15x1y1_xval, p9059_d15x1y1_yval, p9059_d15x1y1_xerrminus, p9059_d15x1y1_xerrplus, p9059_d15x1y1_yerrminus, p9059_d15x1y1_yerrplus); TGraphAsymmErrors *p9059_d15x1y1_syst = new TGraphAsymmErrors(p9059_d15x1y1_numpoints, p9059_d15x1y1_xval, p9059_d15x1y1_yval, p9059_d15x1y1_xerrminus, p9059_d15x1y1_xerrplus, p9059_d15x1y1_yerrminus, p9059_d15x1y1_yerrplus); p9059_d15x1y1->SetName("alice_d_raa"); // X-axis errors will be discarded for (int i=0; i<p9059_d15x1y1_numpoints; i++) { p9059_d15x1y1->SetPointEXlow(i,0); p9059_d15x1y1->SetPointEXhigh(i,0); p9059_d15x1y1_syst->SetPointEXlow(i,0.5); p9059_d15x1y1_syst->SetPointEXhigh(i,0.5); if (xMax<=30 && (i+1)==p9059_d15x1y1_numpoints) { double x,y; p9059_d15x1y1->GetPoint(i,x,y); p9059_d15x1y1->SetPoint(i,x+5,y); p9059_d15x1y1_syst->GetPoint(i,x,y); p9059_d15x1y1_syst->SetPoint(i,x+5,y); } } // Style for graphs p9059_d15x1y1->SetMarkerStyle(kOpenSquare); p9059_d15x1y1->SetMarkerSize(1.3); p9059_d15x1y1->SetMarkerColor(kBlack); p9059_d15x1y1->SetLineColor(kBlack); p9059_d15x1y1_syst->SetFillColorAlpha(kGray+1,0.5); p8165_d5x1y1->SetMarkerStyle(20); p8165_d5x1y1->SetMarkerSize(1.3); p8165_d5x1y1->SetMarkerColor(kTeal+3); p8165_d5x1y1->SetLineColor(kTeal+4); p8165_d5x1y1_syst->SetFillColorAlpha(kTeal-1,0.5); //--------------------------------------------------------- TLine *line = new TLine(0.,1,xMax,1); line->SetLineStyle(1); line->SetLineWidth(1); TCanvas *pc = new TCanvas("pc","pc"); TF1 *f4 = new TF1("f4","1",0,xMax); f4->SetLineWidth(1); f4->GetXaxis()->SetTitle("p_{T} (GeV/c)"); f4->GetYaxis()->SetTitle("R_{AA}"); f4->GetXaxis()->SetRangeUser(0.0,xMax); f4->GetYaxis()->SetRangeUser(0.0,1.5); f4->GetXaxis()->CenterTitle(kTRUE); f4->Draw(); lumi->Draw(); lumi_lowpt->Draw(); pc->Update(); pgCmsSyst->Draw("2"); // for drawing x-axis p9059_d15x1y1_syst->Draw("2"); if (bDrawCh) p8165_d5x1y1_syst->Draw("2"); p9059_d15x1y1->Draw("pz"); if (bDrawCh) p8165_d5x1y1->Draw("pz"); pgCmsSyst->Draw("2"); pgCmsP->Draw("P"); pgCms->Draw("P"); pgCmsSyst_lowpt->Draw("2"); pgCmsP_lowpt->Draw("P"); pgCms_lowpt->Draw("P"); // additional info CMS_lumi(pc,12003000,0); TLegend *leg_cent = new TLegend(0.28,0.77,0.86,0.89,NULL,"brNDC"); // at top center leg_cent->SetMargin(0.12); leg_cent->SetBorderSize(0); leg_cent->SetTextFont(132); leg_cent->SetTextSize(0.03); leg_cent->SetLineColor(1); leg_cent->SetLineStyle(1); leg_cent->SetLineWidth(1); leg_cent->SetFillColor(19); leg_cent->SetFillStyle(0); TLegendEntry *entry_cent; entry_cent=leg_cent->AddEntry("raab","Open beauty: Nonprompt J/#psi",""); entry_cent->SetTextFont(132); entry_cent->SetTextSize(ltxSetTextSize3); entry_cent=leg_cent->AddEntry("gNonPrJpsi_pt365y1624", "1.6 < |y| < 2.4","p"); entry_cent->SetTextFont(42); entry_cent->SetTextSize(entrySize); entry_cent=leg_cent->AddEntry("gNonPrJpsi", "|y| < 2.4","p"); entry_cent->SetTextFont(42); entry_cent->SetTextSize(entrySize); TLegend *leg_ch = new TLegend(0.28,0.685,0.86,0.765,NULL,"brNDC"); leg_ch->SetMargin(0.12); leg_ch->SetBorderSize(0); leg_ch->SetTextFont(132); leg_ch->SetTextSize(0.03); leg_ch->SetLineColor(1); leg_ch->SetLineStyle(1); leg_ch->SetLineWidth(1); leg_ch->SetFillColor(19); leg_ch->SetFillStyle(0); if (bDrawCh) { TLegendEntry *entry_ch; entry_ch=leg_ch->AddEntry("cms_ch","Charged hadron",""); entry_ch->SetTextSize(ltxSetTextSize3); entry_ch->SetTextFont(132); entry_ch=leg_ch->AddEntry("cms_ch_raa","|#eta| < 1, Cent. 0-5%","p"); entry_ch->SetTextSize(entrySize); entry_ch->SetTextFont(42); } TLegend *leg_alice; if (bDrawCh) { leg_alice = new TLegend(0.28,0.60,0.86,0.68,NULL,"brNDC"); } else { leg_alice = new TLegend(0.28,0.685,0.86,0.765,NULL,"brNDC"); } leg_alice->SetMargin(0.12); leg_alice->SetBorderSize(0); leg_alice->SetTextFont(132); leg_alice->SetTextSize(0.03); leg_alice->SetLineColor(1); leg_alice->SetLineStyle(1); leg_alice->SetLineWidth(1); leg_alice->SetFillColor(kWhite); leg_alice->SetFillStyle(1000); TLegendEntry *entry_alice; entry_alice=leg_alice->AddEntry("alice_d","Open charm: Prompt D (ALICE)",""); entry_alice->SetTextSize(ltxSetTextSize3); entry_alice->SetTextFont(132); entry_alice=leg_alice->AddEntry("alice_d_raa","|y| < 0.5, Cent. 0-10%","p"); entry_alice->SetTextSize(entrySize); entry_alice->SetTextFont(42); TLatex *lat = new TLatex(); lat->SetNDC(); lat->SetTextFont(42); lat->SetTextSize(ltxSetTextSize2); if (bDrawCh) lat->DrawLatex(0.63,0.53,"Cent. 0-100%"); else lat->DrawLatex(0.63,0.58,"Cent. 0-100%"); line->Draw(); leg_cent->Draw(); if (bDrawCh) leg_ch->Draw(); leg_alice->Draw(); gPad->RedrawAxis(); if(bSavePlots) { pc->SaveAs(Form("figs/pdf/raaExpOpen_pt_RaaCh%d.pdf",bDrawCh)); pc->SaveAs(Form("figs/png/raaExpOpen_pt_RaaCh%d.png",bDrawCh)); } }
void myRatio(TH1D* h_DY100, TH1D* h_DY200, TH1D* h_DY400, TH1D* h_DY600, TH1D* h_TTbar, TH1D* h_WW, TH1D* h_WZ, TH1D* h_ZZ, TH1D* h_data0, TH1D* h_data1, Double_t scaleDY100, Double_t scaleDY200, Double_t scaleDY400, Double_t scaleDY600, Double_t scaleTTbar, Double_t scaleWW, Double_t scaleWZ, Double_t scaleZZ){ TH1D* h_data = (TH1D*)h_data0->Clone("h_data"); h_data->Reset(); h_data->Add(h_data0); h_data->Add(h_data1); TH1D *h_bkg = (TH1D*)h_data->Clone("h_bkg"); h_bkg->Reset(); h_bkg->Add(h_DY100, scaleDY100); h_bkg->Add(h_DY200, scaleDY200); h_bkg->Add(h_DY400, scaleDY400); h_bkg->Add(h_DY600, scaleDY600); h_bkg->Add(h_TTbar, scaleTTbar); h_bkg->Add(h_WW, scaleWW); h_bkg->Add(h_WZ, scaleWZ); h_bkg->Add(h_ZZ, scaleZZ); TH1D* h_ratio = (TH1D*)h_data->Clone("h_ratio"); h_ratio->Reset(); Int_t nbin = h_ratio->GetNbinsX(); Double_t ratio[nbin]; Double_t error[nbin]; Double_t numer_nbincontent[nbin]; Double_t denom_nbincontent[nbin]; Double_t numer_binerror[nbin]; Double_t denom_binerror[nbin]; for(Int_t i=1; i<=nbin; i++){ numer_nbincontent[i] = h_data->GetBinContent(i); denom_nbincontent[i] = h_bkg->GetBinContent(i); numer_binerror[i] = h_data->GetBinError(i); denom_binerror[i] = h_bkg->GetBinError(i); if( denom_nbincontent[i] <= 0 || numer_nbincontent[i] <= 0 ) continue; if( denom_binerror[i] <= 0 || numer_binerror[i] <= 0 ) continue; ratio[i] = (Double_t)numer_nbincontent[i]/denom_nbincontent[i]; error[i] = (ratio[i])*sqrt(pow(numer_binerror[i]/numer_nbincontent[i],2)+pow(denom_binerror[i]/denom_nbincontent[i],2)); h_ratio->SetBinContent(i,ratio[i]); h_ratio->SetBinError(i,error[i]); } h_ratio->SetLineColor(kBlack); h_ratio->SetTitle(""); h_ratio->GetYaxis()->SetTitle("data/MC"); h_ratio->GetYaxis()->SetTitleOffset(0.3); h_ratio->GetXaxis()->SetLabelSize(0.1); h_ratio->GetXaxis()->SetTitleSize(0.125); h_ratio->GetYaxis()->SetLabelSize(0.1); h_ratio->GetYaxis()->SetTitleSize(0.1); h_ratio->GetYaxis()->SetNdivisions(505); h_ratio->GetYaxis()->SetRangeUser(0,2); h_ratio->Draw(); Double_t x0 = h_bkg->GetXaxis()->GetXmin(); Double_t x1 = h_bkg->GetXaxis()->GetXmax(); Double_t y0 = 1.; Double_t y1 = 1.; TLine* one = new TLine(x0,y0,x1,y1); one->SetLineColor(2); one->SetLineStyle(1); one->SetLineWidth(2); one->Draw("same"); h_ratio->Draw("same"); }
void diphomva_inputs(bool passMVAcut=false, bool equalArea=true) { gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetCanvasColor(0); gStyle->SetFrameBorderMode(0); gStyle->SetPalette(1); gStyle->SetLineColor(1); TString preselNorm_str = ""; if (!equalArea) preselNorm_str = "_preselNorm"; TFile *file = TFile::Open("histograms_CMS-HGG_zeevalidation.root"); file->cd(); txt = new TLatex(); txt->SetNDC(); txt->SetTextSize(0.08); bdtout_cat0_DYJetsToLL->Rebin(2); bdtout_cat1_DYJetsToLL->Rebin(2); bdtout_cat2_DYJetsToLL->Rebin(2); bdtout_cat3_DYJetsToLL->Rebin(2); bdtout_cat4_DYJetsToLL->Rebin(2); bdtoutEB_cat0_DYJetsToLL->Rebin(2); bdtoutEBEE_cat0_DYJetsToLL->Rebin(2); bdtoutEE_cat0_DYJetsToLL->Rebin(2); bdtout_cat0_Data->Rebin(2); bdtout_cat1_Data->Rebin(2); bdtout_cat2_Data->Rebin(2); bdtout_cat3_Data->Rebin(2); bdtout_cat4_Data->Rebin(2); bdtoutEB_cat0_Data->Rebin(2); bdtoutEBEE_cat0_Data->Rebin(2); bdtoutEE_cat0_Data->Rebin(2); bdtout_cat0_Data->GetXaxis()->SetTitle("di-photon BDT output"); bdtout_cat1_Data->GetXaxis()->SetTitle("di-photon BDT output, CiC cat0"); bdtout_cat2_Data->GetXaxis()->SetTitle("di-photon BDT output, CiC cat1"); bdtout_cat3_Data->GetXaxis()->SetTitle("di-photon BDT output, CiC cat2"); bdtout_cat4_Data->GetXaxis()->SetTitle("di-photon BDT output, CiC cat3"); bdtoutEB_cat0_Data->GetXaxis()->SetTitle("di-photon BDT output (both EB)"); bdtoutEBEE_cat0_Data->GetXaxis()->SetTitle("di-photon BDT output (one EB, one EE)"); bdtoutEE_cat0_Data->GetXaxis()->SetTitle("di-photon BDT output (both EE)"); pho1_phoidMva_cat0_Data->GetXaxis()->SetTitle("lead photon ID MVA output"); pho2_phoidMva_cat0_Data->GetXaxis()->SetTitle("sublead photon ID MVA output"); sigmaMOverM_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (right vertex)"); sigmaMOverM_wrongVtx_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (wrong vertex)"); sigmaMOverM_EB_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (right vertex, both EB)"); sigmaMOverM_wrongVtx_EB_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (wrong vertex, both EB)"); sigmaMOverM_EE_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (right vertex, both EE)"); sigmaMOverM_wrongVtx_EE_cat0_Data->GetXaxis()->SetTitle("#sigma_{M}/M_{#gamma#gamma} (wrong vertex, both EE)"); vtxProb_cat0_Data->GetXaxis()->SetTitle("Vertex probabilty"); pho1_ptOverM_cat0_Data->GetXaxis()->SetTitle("lead p_{T}/M_{#gamma#gamma}"); pho2_ptOverM_cat0_Data->GetXaxis()->SetTitle("sublead p_{T}/M_{#gamma#gamma}"); pho1_eta_cat0_Data->GetXaxis()->SetTitle("lead #eta"); pho2_eta_cat0_Data->GetXaxis()->SetTitle("sublead #eta"); cosDeltaPhi_cat0_Data->GetXaxis()->SetTitle("cos(#Delta#phi)"); bdtout_cat0_Data->GetYaxis()->SetTitle(""); bdtout_cat1_Data->GetYaxis()->SetTitle(""); bdtout_cat2_Data->GetYaxis()->SetTitle(""); bdtout_cat3_Data->GetYaxis()->SetTitle(""); bdtout_cat4_Data->GetYaxis()->SetTitle(""); bdtoutEB_cat0_Data->GetYaxis()->SetTitle(""); bdtoutEBEE_cat0_Data->GetYaxis()->SetTitle(""); bdtoutEE_cat0_Data->GetYaxis()->SetTitle(""); pho1_phoidMva_cat0_Data->GetYaxis()->SetTitle(""); pho2_phoidMva_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_wrongVtx_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_EB_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_wrongVtx_EB_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_EE_cat0_Data->GetYaxis()->SetTitle(""); sigmaMOverM_wrongVtx_EE_cat0_Data->GetYaxis()->SetTitle(""); vtxProb_cat0_Data->GetYaxis()->SetTitle(""); pho1_ptOverM_cat0_Data->GetYaxis()->SetTitle(""); pho2_ptOverM_cat0_Data->GetYaxis()->SetTitle(""); pho1_eta_cat0_Data->GetYaxis()->SetTitle(""); pho2_eta_cat0_Data->GetYaxis()->SetTitle(""); cosDeltaPhi_cat0_Data->GetYaxis()->SetTitle(""); bdtout_cat0_Data->GetXaxis()->SetTitleSize(0.05); bdtout_cat1_Data->GetXaxis()->SetTitleSize(0.05); bdtout_cat2_Data->GetXaxis()->SetTitleSize(0.05); bdtout_cat3_Data->GetXaxis()->SetTitleSize(0.05); bdtout_cat4_Data->GetXaxis()->SetTitleSize(0.05); bdtoutEB_cat0_Data->GetXaxis()->SetTitleSize(0.05); bdtoutEBEE_cat0_Data->GetXaxis()->SetTitleSize(0.05); bdtoutEE_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho1_phoidMva_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho2_phoidMva_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_wrongVtx_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_EB_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_wrongVtx_EB_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_EE_cat0_Data->GetXaxis()->SetTitleSize(0.05); sigmaMOverM_wrongVtx_EE_cat0_Data->GetXaxis()->SetTitleSize(0.05); vtxProb_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho1_ptOverM_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho2_ptOverM_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho1_eta_cat0_Data->GetXaxis()->SetTitleSize(0.05); pho2_eta_cat0_Data->GetXaxis()->SetTitleSize(0.05); cosDeltaPhi_cat0_Data->GetXaxis()->SetTitleSize(0.05); bdtout_cat0_DYJetsToLL->SetFillColor(38); bdtout_cat1_DYJetsToLL->SetFillColor(38); bdtout_cat2_DYJetsToLL->SetFillColor(38); bdtout_cat3_DYJetsToLL->SetFillColor(38); bdtout_cat4_DYJetsToLL->SetFillColor(38); bdtoutEB_cat0_DYJetsToLL->SetFillColor(38); bdtoutEBEE_cat0_DYJetsToLL->SetFillColor(38); bdtoutEE_cat0_DYJetsToLL->SetFillColor(38); pho1_phoidMva_cat0_DYJetsToLL->SetFillColor(38); pho2_phoidMva_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_wrongVtx_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_EB_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_EE_cat0_DYJetsToLL->SetFillColor(38); sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->SetFillColor(38); vtxProb_cat0_DYJetsToLL->SetFillColor(38); pho1_ptOverM_cat0_DYJetsToLL->SetFillColor(38); pho2_ptOverM_cat0_DYJetsToLL->SetFillColor(38); pho1_eta_cat0_DYJetsToLL->SetFillColor(38); pho2_eta_cat0_DYJetsToLL->SetFillColor(38); cosDeltaPhi_cat0_DYJetsToLL->SetFillColor(38); bdtout_cat0_DYJetsToLL->SetLineColor(1); bdtoutEB_cat0_DYJetsToLL->SetLineColor(1); bdtoutEBEE_cat0_DYJetsToLL->SetLineColor(1); bdtoutEE_cat0_DYJetsToLL->SetLineColor(1); pho1_phoidMva_cat0_DYJetsToLL->SetLineColor(1); pho2_phoidMva_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_wrongVtx_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_EB_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_EE_cat0_DYJetsToLL->SetLineColor(1); sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->SetLineColor(1); vtxProb_cat0_DYJetsToLL->SetLineColor(1); pho1_ptOverM_cat0_DYJetsToLL->SetLineColor(1); pho2_ptOverM_cat0_DYJetsToLL->SetLineColor(1); pho1_eta_cat0_DYJetsToLL->SetLineColor(1); pho2_eta_cat0_DYJetsToLL->SetLineColor(1); cosDeltaPhi_cat0_DYJetsToLL->SetLineColor(1); bdtout_cat0_Data->SetMarkerStyle(20); bdtout_cat1_Data->SetMarkerStyle(20); bdtout_cat2_Data->SetMarkerStyle(20); bdtout_cat3_Data->SetMarkerStyle(20); bdtout_cat4_Data->SetMarkerStyle(20); bdtoutEB_cat0_Data->SetMarkerStyle(20); bdtoutEBEE_cat0_Data->SetMarkerStyle(20); bdtoutEE_cat0_Data->SetMarkerStyle(20); pho1_phoidMva_cat0_Data->SetMarkerStyle(20); pho2_phoidMva_cat0_Data->SetMarkerStyle(20); sigmaMOverM_cat0_Data->SetMarkerStyle(20); sigmaMOverM_wrongVtx_cat0_Data->SetMarkerStyle(20); sigmaMOverM_EB_cat0_Data->SetMarkerStyle(20); sigmaMOverM_wrongVtx_EB_cat0_Data->SetMarkerStyle(20); sigmaMOverM_EE_cat0_Data->SetMarkerStyle(20); sigmaMOverM_wrongVtx_EE_cat0_Data->SetMarkerStyle(20); vtxProb_cat0_Data->SetMarkerStyle(20); pho1_ptOverM_cat0_Data->SetMarkerStyle(20); pho2_ptOverM_cat0_Data->SetMarkerStyle(20); pho1_eta_cat0_Data->SetMarkerStyle(20); pho2_eta_cat0_Data->SetMarkerStyle(20); cosDeltaPhi_cat0_Data->SetMarkerStyle(20); bdtout_cat0_Data->SetMarkerSize(0.4); bdtout_cat1_Data->SetMarkerSize(0.4); bdtout_cat2_Data->SetMarkerSize(0.4); bdtout_cat3_Data->SetMarkerSize(0.4); bdtout_cat4_Data->SetMarkerSize(0.4); bdtoutEB_cat0_Data->SetMarkerSize(0.4); bdtoutEBEE_cat0_Data->SetMarkerSize(0.4); bdtoutEE_cat0_Data->SetMarkerSize(0.4); pho1_phoidMva_cat0_Data->SetMarkerSize(0.4); pho2_phoidMva_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_wrongVtx_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_EB_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_wrongVtx_EB_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_EE_cat0_Data->SetMarkerSize(0.4); sigmaMOverM_wrongVtx_EE_cat0_Data->SetMarkerSize(0.4); vtxProb_cat0_Data->SetMarkerSize(0.4); pho1_ptOverM_cat0_Data->SetMarkerSize(0.4); pho2_ptOverM_cat0_Data->SetMarkerSize(0.4); pho1_eta_cat0_Data->SetMarkerSize(0.4); pho2_eta_cat0_Data->SetMarkerSize(0.4); cosDeltaPhi_cat0_Data->SetMarkerSize(0.4); bdtout_cat0_Data->SetLineColor(1); bdtout_cat1_Data->SetLineColor(1); bdtout_cat2_Data->SetLineColor(1); bdtout_cat3_Data->SetLineColor(1); bdtout_cat4_Data->SetLineColor(1); bdtoutEB_cat0_Data->SetLineColor(1); bdtoutEBEE_cat0_Data->SetLineColor(1); bdtoutEE_cat0_Data->SetLineColor(1); pho1_phoidMva_cat0_Data->SetLineColor(1); pho2_phoidMva_cat0_Data->SetLineColor(1); sigmaMOverM_cat0_Data->SetLineColor(1); sigmaMOverM_wrongVtx_cat0_Data->SetLineColor(1); sigmaMOverM_EB_cat0_Data->SetLineColor(1); sigmaMOverM_wrongVtx_EB_cat0_Data->SetLineColor(1); sigmaMOverM_EE_cat0_Data->SetLineColor(1); sigmaMOverM_wrongVtx_EE_cat0_Data->SetLineColor(1); vtxProb_cat0_Data->SetLineColor(1); pho1_ptOverM_cat0_Data->SetLineColor(1); pho2_ptOverM_cat0_Data->SetLineColor(1); pho1_eta_cat0_Data->SetLineColor(1); pho2_eta_cat0_Data->SetLineColor(1); cosDeltaPhi_cat0_Data->SetLineColor(1); if (passMVAcut) { bdtout_cat0_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtout_cat1_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtout_cat2_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtout_cat3_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtout_cat4_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtoutEB_cat0_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtoutEBEE_cat0_Data->GetXaxis()->SetRangeUser(-0.05,1.); bdtoutEE_cat0_Data->GetXaxis()->SetRangeUser(-0.05,1.); } TLegend *leg; leg = new TLegend(.6,.65,.87,.87); leg->SetBorderSize(0); leg->SetFillColor(10); leg->SetTextSize(.035); leg->AddEntry(vtxProb_cat0_Data,"Data (19.6fb^{-1})"); leg->AddEntry(vtxProb_cat0_DYJetsToLL,"DYJetsToLL MC","F"); TLegend *leg2; leg2 = new TLegend(.2,.65,.52,.87); leg2->SetBorderSize(0); leg2->SetFillColor(10); leg2->SetTextSize(.035); leg2->AddEntry(vtxProb_cat0_Data,"Data (19.6fb^{-1})"); leg2->AddEntry(vtxProb_cat0_DYJetsToLL,"DYJetsToLL MC","F"); float sf_presel = bdtout_cat0_Data->Integral()/bdtout_cat0_DYJetsToLL->Integral(); cout << "sf_presel " << sf_presel << endl; //------------------------------------------------------------------------------ TCanvas *c_bdtout = new TCanvas("c_bdtout","BDT output",2200,800); c_bdtout->Divide(4,2); c_bdtout->cd(1); float sf; if (passMVAcut) { sf = bdtout_cat0_Data->Integral(48,100)/bdtout_cat0_DYJetsToLL->Integral(48,100); } else { sf = bdtout_cat0_Data->Integral()/bdtout_cat0_DYJetsToLL->Integral(); } bdtout_cat0_DYJetsToLL->Scale(sf); bdtout_cat0_Data->Draw("e"); leg2->Draw(); bdtout_cat0_DYJetsToLL->Draw("hist,same"); bdtout_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout->cd(2); if (passMVAcut) { sf = bdtoutEB_cat0_Data->Integral(48,100)/bdtoutEB_cat0_DYJetsToLL->Integral(48,100); } else { sf = bdtoutEB_cat0_Data->Integral()/bdtoutEB_cat0_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtoutEB_cat0_DYJetsToLL->Scale(sf); bdtoutEB_cat0_Data->Draw("e"); leg2->Draw(); bdtoutEB_cat0_DYJetsToLL->Draw("hist,same"); bdtoutEB_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout->cd(3); if (passMVAcut) { sf = bdtoutEBEE_cat0_Data->Integral(48,100)/bdtoutEBEE_cat0_DYJetsToLL->Integral(48,100); } else { sf = bdtoutEBEE_cat0_Data->Integral()/bdtoutEBEE_cat0_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtoutEBEE_cat0_DYJetsToLL->Scale(sf); bdtoutEBEE_cat0_Data->Draw("e"); leg->Draw(); bdtoutEBEE_cat0_DYJetsToLL->Draw("hist,same"); bdtoutEBEE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout->cd(4); if (passMVAcut) { sf = bdtoutEE_cat0_Data->Integral(48,100)/bdtoutEE_cat0_DYJetsToLL->Integral(48,100); } else { sf = bdtoutEE_cat0_Data->Integral()/bdtoutEE_cat0_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtoutEE_cat0_DYJetsToLL->Scale(sf); bdtoutEE_cat0_Data->Draw("e"); leg->Draw(); bdtoutEE_cat0_DYJetsToLL->Draw("hist,same"); bdtoutEE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); TLine *line; if (passMVAcut) { line = new TLine(-0.06,1.,1.,1.); } else { line = new TLine(-1.,1.,1.,1.); } line->SetLineColor(4); line->SetLineWidth(2); c_bdtout->cd(5); plotRatio(bdtout_cat0_Data,bdtout_cat0_DYJetsToLL); line->Draw(); c_bdtout->cd(6); plotRatio(bdtoutEB_cat0_Data,bdtoutEB_cat0_DYJetsToLL); line->Draw(); c_bdtout->cd(7); plotRatio(bdtoutEBEE_cat0_Data,bdtoutEBEE_cat0_DYJetsToLL); line->Draw(); c_bdtout->cd(8); plotRatio(bdtoutEE_cat0_Data,bdtoutEE_cat0_DYJetsToLL); line->Draw(); c_bdtout->SaveAs("bdtout"+preselNorm_str+".png"); //------------------------------------------------------------------------------ TCanvas *c_bdtout_basecat = new TCanvas("c_bdtout_basecat","BDT output in CiC categories",2200,800); c_bdtout_basecat->Divide(4,2); c_bdtout_basecat->cd(1); if (passMVAcut) { sf = bdtout_cat1_Data->Integral(48,100)/bdtout_cat1_DYJetsToLL->Integral(48,100); } else { sf = bdtout_cat1_Data->Integral()/bdtout_cat1_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtout_cat1_DYJetsToLL->Scale(sf); bdtout_cat1_Data->Draw("e"); leg2->Draw(); bdtout_cat1_DYJetsToLL->Draw("hist,same"); bdtout_cat1_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout_basecat->cd(2); if (passMVAcut) { sf = bdtout_cat2_Data->Integral(48,100)/bdtout_cat2_DYJetsToLL->Integral(48,100); } else { sf = bdtout_cat2_Data->Integral()/bdtout_cat2_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtout_cat2_DYJetsToLL->Scale(sf); bdtout_cat2_Data->Draw("e"); leg2->Draw(); bdtout_cat2_DYJetsToLL->Draw("hist,same"); bdtout_cat2_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout_basecat->cd(3); if (passMVAcut) { sf = bdtout_cat3_Data->Integral(48,100)/bdtout_cat3_DYJetsToLL->Integral(48,100); } else { sf = bdtout_cat3_Data->Integral()/bdtout_cat3_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtout_cat3_DYJetsToLL->Scale(sf); bdtout_cat3_Data->Draw("e"); leg->Draw(); bdtout_cat3_DYJetsToLL->Draw("hist,same"); bdtout_cat3_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout_basecat->cd(4); if (passMVAcut) { sf = bdtout_cat4_Data->Integral(48,100)/bdtout_cat4_DYJetsToLL->Integral(48,100); } else { sf = bdtout_cat4_Data->Integral()/bdtout_cat4_DYJetsToLL->Integral(); if (!equalArea) sf = sf_presel; } bdtout_cat4_DYJetsToLL->Scale(sf); bdtout_cat4_Data->Draw("e"); leg->Draw(); bdtout_cat4_DYJetsToLL->Draw("hist,same"); bdtout_cat4_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtout_basecat->cd(5); plotRatio(bdtout_cat1_Data,bdtout_cat1_DYJetsToLL); line->Draw(); c_bdtout_basecat->cd(6); plotRatio(bdtout_cat2_Data,bdtout_cat2_DYJetsToLL); line->Draw(); c_bdtout_basecat->cd(7); plotRatio(bdtout_cat3_Data,bdtout_cat3_DYJetsToLL); line->Draw(); c_bdtout_basecat->cd(8); plotRatio(bdtout_cat4_Data,bdtout_cat4_DYJetsToLL); line->Draw(); c_bdtout_basecat->SaveAs("bdtout_basecat"+preselNorm_str+".png"); //------------------------------------------------------------------------------ TCanvas *c_bdtin_1 = new TCanvas("c_bdtin_1","BDT input variables",1600,800); c_bdtin_1->Divide(4,2); c_bdtin_1->cd(1); sf = pho1_phoidMva_cat0_Data->Integral()/pho1_phoidMva_cat0_DYJetsToLL->Integral(); pho1_phoidMva_cat0_DYJetsToLL->Scale(sf); pho1_phoidMva_cat0_Data->GetXaxis()->SetRangeUser(-0.3,0.6); pho1_phoidMva_cat0_Data->Draw("e"); pho1_phoidMva_cat0_DYJetsToLL->Draw("hist,same"); pho1_phoidMva_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_1->cd(2); sf = pho2_phoidMva_cat0_Data->Integral()/pho2_phoidMva_cat0_DYJetsToLL->Integral(); pho2_phoidMva_cat0_DYJetsToLL->Scale(sf); pho2_phoidMva_cat0_Data->GetXaxis()->SetRangeUser(-0.3,0.6); pho2_phoidMva_cat0_Data->Draw("e"); pho2_phoidMva_cat0_DYJetsToLL->Draw("hist,same"); pho2_phoidMva_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_1->cd(3); gPad->SetLogy(); sf = vtxProb_cat0_Data->Integral()/vtxProb_cat0_DYJetsToLL->Integral(); vtxProb_cat0_DYJetsToLL->Scale(sf); //vtxProb_cat0_Data->GetXaxis()->SetRangeUser(0.2,1.); vtxProb_cat0_Data->Draw("e"); vtxProb_cat0_DYJetsToLL->Draw("hist,same"); vtxProb_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg2->Draw(); c_bdtin_1->cd(4); gPad->SetLogy(); sf = cosDeltaPhi_cat0_Data->Integral()/cosDeltaPhi_cat0_DYJetsToLL->Integral(); cosDeltaPhi_cat0_DYJetsToLL->Scale(sf); cosDeltaPhi_cat0_Data->Draw("e"); cosDeltaPhi_cat0_DYJetsToLL->Draw("hist,same"); cosDeltaPhi_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_1->cd(5); plotRatio(pho1_phoidMva_cat0_Data,pho1_phoidMva_cat0_DYJetsToLL); line1 = (TLine*)line->Clone(); line1->SetX1(-0.3); line1->SetX2(0.6); line1->Draw(); c_bdtin_1->cd(6); plotRatio(pho2_phoidMva_cat0_Data,pho2_phoidMva_cat0_DYJetsToLL); line1->Draw(); c_bdtin_1->cd(7); plotRatio(vtxProb_cat0_Data,vtxProb_cat0_DYJetsToLL); line->Draw(); c_bdtin_1->cd(8); plotRatio(cosDeltaPhi_cat0_Data,cosDeltaPhi_cat0_DYJetsToLL); line->Draw(); c_bdtin_1->SaveAs("bdtin_1.png"); //------------------------------------------------------------------------------ TCanvas *c_bdtin_2 = new TCanvas("c_bdtin_2","BDT input variables",1500,900); c_bdtin_2->Divide(4,3); c_bdtin_2->cd(1); sf = sigmaMOverM_cat0_Data->Integral()/sigmaMOverM_cat0_DYJetsToLL->Integral(); sigmaMOverM_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_cat0_Data->Draw("e"); sigmaMOverM_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(2); sf = sigmaMOverM_wrongVtx_cat0_Data->Integral()/sigmaMOverM_wrongVtx_cat0_DYJetsToLL->Integral(); sigmaMOverM_wrongVtx_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_wrongVtx_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg2->Draw(); c_bdtin_2->cd(3); sf = pho1_ptOverM_cat0_Data->Integral()/pho1_ptOverM_cat0_DYJetsToLL->Integral(); pho1_ptOverM_cat0_DYJetsToLL->Scale(sf); pho1_ptOverM_cat0_Data->GetXaxis()->SetRangeUser(0.2,1.2); pho1_ptOverM_cat0_Data->Draw("e"); pho1_ptOverM_cat0_DYJetsToLL->Draw("hist,same"); pho1_ptOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(4); sf = pho2_ptOverM_cat0_Data->Integral()/pho2_ptOverM_cat0_DYJetsToLL->Integral(); pho2_ptOverM_cat0_DYJetsToLL->Scale(sf); pho2_ptOverM_cat0_Data->GetXaxis()->SetRangeUser(0.2,.9); pho2_ptOverM_cat0_Data->Draw("e"); pho2_ptOverM_cat0_DYJetsToLL->Draw("hist,same"); pho2_ptOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(5); gPad->SetLogy(); sigmaMOverM_cat0_Data->Draw("e"); sigmaMOverM_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(6); gPad->SetLogy(); sigmaMOverM_wrongVtx_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtin_2->cd(7); gPad->SetLogy(); pho1_ptOverM_cat0_Data->Draw("e"); pho1_ptOverM_cat0_DYJetsToLL->Draw("hist,same"); pho1_ptOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(8); gPad->SetLogy(); pho2_ptOverM_cat0_Data->Draw("e"); pho2_ptOverM_cat0_DYJetsToLL->Draw("hist,same"); pho2_ptOverM_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_bdtin_2->cd(9); plotRatio(sigmaMOverM_cat0_Data,sigmaMOverM_cat0_DYJetsToLL); line3 = (TLine*)line->Clone(); line3->SetX1(0.); line3->SetX2(0.06); line3->Draw(); c_bdtin_2->cd(10); plotRatio(sigmaMOverM_wrongVtx_cat0_Data,sigmaMOverM_wrongVtx_cat0_DYJetsToLL); line3->Draw(); c_bdtin_2->cd(11); plotRatio(pho1_ptOverM_cat0_Data,pho1_ptOverM_cat0_DYJetsToLL); line4 = (TLine*)line->Clone(); line4->SetX1(0.2); line4->SetX2(1.2); line4->Draw(); c_bdtin_2->cd(12); plotRatio(pho2_ptOverM_cat0_Data,pho2_ptOverM_cat0_DYJetsToLL); line5 = (TLine*)line->Clone(); line5->SetX1(0.2); line5->SetX2(0.9); line5->Draw(); c_bdtin_2->SaveAs("bdtin_2.png"); //------------------------------------------------------------------------------ TCanvas *c_bdtin_3 = new TCanvas("c_bdtin_3","BDT input variables",1200,800); c_bdtin_3->Divide(2,2); c_bdtin_3->cd(1); c_bdtin_3->cd(1); sf = pho1_eta_cat0_Data->Integral()/pho1_eta_cat0_DYJetsToLL->Integral(); pho1_eta_cat0_DYJetsToLL->Scale(sf); pho1_eta_cat0_Data->Draw("e"); pho1_eta_cat0_DYJetsToLL->Draw("hist,same"); pho1_eta_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtin_3->cd(2); sf = pho2_eta_cat0_Data->Integral()/pho2_eta_cat0_DYJetsToLL->Integral(); pho2_eta_cat0_DYJetsToLL->Scale(sf); pho2_eta_cat0_Data->Draw("e"); pho2_eta_cat0_DYJetsToLL->Draw("hist,same"); pho2_eta_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_bdtin_3->cd(3); plotRatio(pho1_eta_cat0_Data,pho1_eta_cat0_DYJetsToLL); line6 = (TLine*)line->Clone(); line6->SetX1(-2.5); line6->SetX2(2.5); line6->Draw(); c_bdtin_3->cd(4); plotRatio(pho2_eta_cat0_Data,pho2_eta_cat0_DYJetsToLL); line6->Draw(); c_bdtin_3->SaveAs("bdtin_3.png"); //------------------------------------------------------------------------------ TCanvas *c_sigmam_ebee = new TCanvas("c_sigmam_ebee","BDT input variables",1500,900); c_sigmam_ebee->Divide(4,3); c_sigmam_ebee->cd(1); sf = sigmaMOverM_EB_cat0_Data->Integral()/sigmaMOverM_EB_cat0_DYJetsToLL->Integral(); sigmaMOverM_EB_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_EB_cat0_Data->Draw("e"); sigmaMOverM_EB_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_EB_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_sigmam_ebee->cd(2); sf = sigmaMOverM_wrongVtx_EB_cat0_Data->Integral()/sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->Integral(); sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_wrongVtx_EB_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_EB_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_sigmam_ebee->cd(3); sf = sigmaMOverM_EE_cat0_Data->Integral()/sigmaMOverM_EE_cat0_DYJetsToLL->Integral(); sigmaMOverM_EE_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_EE_cat0_Data->Draw("e"); sigmaMOverM_EE_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_EE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_sigmam_ebee->cd(4); sf = sigmaMOverM_wrongVtx_EE_cat0_Data->Integral()/sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->Integral(); sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->Scale(sf); sigmaMOverM_wrongVtx_EE_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_EE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg2->Draw(); c_sigmam_ebee->cd(5); gPad->SetLogy(); sigmaMOverM_EB_cat0_Data->Draw("e"); sigmaMOverM_EB_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_EB_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_sigmam_ebee->cd(6); gPad->SetLogy(); sigmaMOverM_wrongVtx_EB_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_EB_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_sigmam_ebee->cd(7); gPad->SetLogy(); sigmaMOverM_EE_cat0_Data->Draw("e"); sigmaMOverM_EE_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_EE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_sigmam_ebee->cd(8); gPad->SetLogy(); sigmaMOverM_wrongVtx_EE_cat0_Data->Draw("e"); sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL->Draw("hist,same"); sigmaMOverM_wrongVtx_EE_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); c_sigmam_ebee->cd(9); plotRatio(sigmaMOverM_EB_cat0_Data, sigmaMOverM_EB_cat0_DYJetsToLL); line3->Draw(); c_sigmam_ebee->cd(10); plotRatio(sigmaMOverM_wrongVtx_EB_cat0_Data, sigmaMOverM_wrongVtx_EB_cat0_DYJetsToLL); line3->Draw(); c_sigmam_ebee->cd(11); plotRatio(sigmaMOverM_EE_cat0_Data, sigmaMOverM_EE_cat0_DYJetsToLL); line3->Draw(); c_sigmam_ebee->cd(12); plotRatio(sigmaMOverM_wrongVtx_EE_cat0_Data, sigmaMOverM_wrongVtx_EE_cat0_DYJetsToLL); line3->Draw(); c_sigmam_ebee->SaveAs("sigmam_ebee.png"); }
void myRatio(TH1D* h_data, TH1D *h_bkg,string xtitle="",int option=0){ cout<<h_bkg->Integral()/h_data->Integral()<<endl; TH1D* h_ratio = (TH1D*)h_bkg->Clone("h_ratio"); h_ratio->Reset(); Int_t nbin = h_ratio->GetNbinsX(); Float_t ratio[nbin]; Float_t error[nbin]; Float_t numer_nbincontent[nbin]; Float_t denom_nbincontent[nbin]; Float_t numer_binerror[nbin]; Float_t denom_binerror[nbin]; for(Int_t i = 1; i <= nbin; i++){ numer_nbincontent[i] = h_data->GetBinContent(i); denom_nbincontent[i] = h_bkg ->GetBinContent(i); numer_binerror[i] = h_data->GetBinError(i); denom_binerror[i] = h_bkg ->GetBinError(i); if( denom_nbincontent[i] <= 0 || numer_nbincontent[i] <= 0 ) continue; if( denom_binerror[i] <= 0 || numer_binerror[i] <= 0 ) continue; ratio[i] = (Float_t)numer_nbincontent[i]/denom_nbincontent[i]; error[i] = (ratio[i])*sqrt(pow(numer_binerror[i]/numer_nbincontent[i],2)+pow(denom_binerror[i]/denom_nbincontent[i],2)); h_ratio->SetBinContent(i,ratio[i]); h_ratio->SetBinError(i,error[i]); } h_ratio->SetLineColor(kBlack); h_ratio->SetMarkerStyle(8); h_ratio->SetMarkerSize(1.5); h_ratio->SetTitle(""); h_ratio->SetXTitle(xtitle.data()); h_ratio->GetYaxis()->SetTitle("Data/MC"); h_ratio->GetYaxis()->SetTitleOffset(0.45); h_ratio->GetXaxis()->SetLabelSize(0.125); h_ratio->GetXaxis()->SetLabelOffset(0.005); h_ratio->GetXaxis()->SetTitleSize(0.125); h_ratio->GetXaxis()->SetTitleOffset(0.92); h_ratio->GetYaxis()->SetLabelSize(0.1); h_ratio->GetYaxis()->SetTitleSize(0.1); h_ratio->GetYaxis()->SetNdivisions(505); h_ratio->GetYaxis()->SetRangeUser(0,2); if(option==1){ h_ratio->GetXaxis()->SetLabelSize(0.18); h_ratio->GetXaxis()->SetBinLabel(1,"0b"); h_ratio->GetXaxis()->SetBinLabel(2,"1b"); h_ratio->GetXaxis()->SetBinLabel(3,"2b"); h_ratio->GetXaxis()->SetBinLabel(4,"3b"); h_ratio->GetXaxis()->SetBinLabel(5,"4b"); //h_ratio->GetXaxis()->SetBinLabel(6,"3bHPHP"); } h_ratio->Draw(); Float_t x0 = h_bkg->GetXaxis()->GetXmin(); Float_t x1 = h_bkg->GetXaxis()->GetXmax(); Float_t y0 = 1.; Float_t y1 = 1.; if(isSetRange){ x0=rangeUserDown; x1=rangeUserUp; } TLine* one = new TLine(x0,y0,x1,y1); one->SetLineColor(2); one->SetLineStyle(1); one->SetLineWidth(2); one->Draw("same"); if(isSetRange)h_ratio->GetXaxis()->SetRangeUser(rangeUserDown,rangeUserUp); h_ratio->Draw("same"); }
void vnpt_5panels_ratio() { gROOT->Reset(); gROOT->SetStyle("MyStyle"); // gROOT->LoadMacro("v2pt_12cen_MyDef.C"); // gROOT->LoadMacro("MyDef.C"); gStyle->SetTextFont(43); gStyle->SetLabelFont(43,"x"); gStyle->SetLabelFont(43,"y"); gStyle->SetLabelFont(43,"z"); gStyle->SetTitleFont(43,"x"); gStyle->SetTitleFont(43,"y"); gStyle->SetTitleFont(43,"z"); gStyle->SetEndErrorSize(0); double textsize = 19; //int mcol[8]={kRed,kMagenta,kBlue,kCyan,kGreen,kYellow,kOrange,kGray}; int mcol[8]={kRed,kOrange+1,kBlue,kGreen+1,kCyan,kYellow,kOrange,kGray}; int mcol2[4]={6,2,4,8}; //int msty[8][2]={{20,20},{25,24},{22,22},{28,26},{29,30},{33,27},{34,28},{20,24}}; int msty[8][2]={{20,20},{21,24},{22,29},{23,30},{24,30},{25,27},{28,28},{30,24}}; //float msiz[8]={1.11,0.9,1.2,1.24,1.5,1,1,1}; float msiz[8]={1.11,1.0,1.5,1.2,1.2,1.2,1.2,1.6}; float msiz2[4]={1.5,1.5,1.5,1.5}; // // arrays // const int Mfiles=50; int ndp[Mfiles]; char *cfn[Mfiles]; char *cft[Mfiles]; const int Mpoints=40; double xa[Mfiles][Mpoints],xe[Mfiles][Mpoints],xesys[Mfiles][Mpoints]; double ya[Mfiles][Mpoints],ye[Mfiles][Mpoints],yesys[Mfiles][Mpoints]; double nAxa[Mfiles][Mpoints],nAxe[Mfiles][Mpoints]; double nAya[Mfiles][Mpoints],nAye[Mfiles][Mpoints]; double nBxa[Mfiles][Mpoints],nBxe[Mfiles][Mpoints]; double nBya[Mfiles][Mpoints],nBye[Mfiles][Mpoints]; double nARxa[Mfiles][Mpoints],nARxe[Mfiles][Mpoints]; double nARya[Mfiles][Mpoints],nARye[Mfiles][Mpoints]; double nBRxa[Mfiles][Mpoints],nBRxe[Mfiles][Mpoints]; double nBRya[Mfiles][Mpoints],nBRye[Mfiles][Mpoints]; double xa60[Mfiles][Mpoints],xe60[Mfiles][Mpoints],xesys60[Mfiles][Mpoints]; double ya60[Mfiles][Mpoints],ye60[Mfiles][Mpoints],yesys60[Mfiles][Mpoints]; double nAxa60[Mfiles][Mpoints],nAxe60[Mfiles][Mpoints]; double nAya60[Mfiles][Mpoints],nAye60[Mfiles][Mpoints]; double nBxa60[Mfiles][Mpoints],nBxe60[Mfiles][Mpoints]; double nBya60[Mfiles][Mpoints],nBye60[Mfiles][Mpoints]; double nARxa60[Mfiles][Mpoints],nARxe60[Mfiles][Mpoints]; double nARya60[Mfiles][Mpoints],nARye60[Mfiles][Mpoints]; double nBRxa60[Mfiles][Mpoints],nBRxe60[Mfiles][Mpoints]; double nBRya60[Mfiles][Mpoints],nBRye60[Mfiles][Mpoints]; const int Mpads=14; char *htit[Mpads]; char *htitc2[Mpads]; char *atit[Mpads][3]; double ptit[Mpads][2]; double hxmin[Mpads],hxmax[Mpads]; double hymin[Mpads],hymax[Mpads]; double lxmin[Mpads],lxmax[Mpads]; double lymin[Mpads],lymax[Mpads]; // // Data input // char *cjob="v2pt_12cen_4x3"; int i=-1; // histogram parameter htit[0]="(a) v_{4}{#Psi_{22}}"; htit[1]="(b) v_{5}{#Psi_{23}}"; htit[2]="(c) v_{6}{#Psi_{222}}"; htit[3]="(d) v_{6}{#Psi_{33}}"; htit[4]="(e) v_{7}{#Psi_{223}}"; htit[5]="25-30%"; htit[6]="30-35%"; htit[7]="35-40%"; htit[8]="40-50%"; htit[9]="50-60%"; htit[10]="60-70%"; htit[11]="70-80%"; htitc2[0]="(f) v_{4}{#Psi_{22}}"; htitc2[1]="(g) v_{5}{#Psi_{23}}"; htitc2[2]="(h) v_{6}{#Psi_{222}}"; htitc2[3]="(i) v_{6}{#Psi_{33}}"; htitc2[4]="(j) v_{7}{#Psi_{223}}"; for (int ip=0;ip<Mpads;ip++) { // hxmin[ip]=0.0; hxmax[ip]=11.9; hxmin[ip]=0.0001; hxmax[ip]=4.1; hymin[ip]=-0.003; hymax[ip]=0.0655; lxmin[ip]=0.24; lxmax[ip]=0.88; lymin[ip]=0.65; lymax[ip]=0.94; ptit[ip][0]=0.45; ptit[ip][1]=0.036;// position legends atit[ip][0]="p_{T} (GeV/c)"; atit[ip][1]="v_{n}"; } // // Read data and create vector files // double sysXYZ[5]={6,7,8,8,9}; //double sysXYZ[5]={8,9,12,12,15}; //double sysXYZ[5]={8,9,20,20,20}; double sysEach[5]={0.0002, 0.0002, 0.0002, 0.0003, 0.0002}; double tmp; const int nw=5; const int npt=20; ifstream inEP; inEP.open("./data_vnptcent020_5020gev.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>xa[i][j]; inEP>>tmp; inEP>>ya[i][j]; inEP>>ye[i][j]; if(ye[i][j]<0) ye[i][j]=-ye[i][j]; xe[i][j]=0.0; } } inEP.close(); ifstream inEP; inEP.open("./data_vnptcent020_5020gev_vzA.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>nAxa[i][j]; inEP>>tmp; inEP>>nAya[i][j]; inEP>>nAye[i][j]; if(nAye[i][j]<0) nAye[i][j]=-nAye[i][j]; nAxe[i][j]=0.0; nARxa[i][j]=nAxa[i][j]; nARxe[i][j]=nAxe[i][j]; nARye[i][j]=nAya[i][j]/ya[i][j]*sqrt(ye[i][j]*ye[i][j]/ya[i][j]/ya[i][j] + nAye[i][j]*nAye[i][j]/nAya[i][j]/nAya[i][j] - 2.5*ye[i][j]*ye[i][j]/ya[i][j]/nAya[i][j] ); nARya[i][j]=nAya[i][j]/ya[i][j]; } } inEP.close(); ifstream inEP; inEP.open("./data_vnptcent020_5020gev_vzB.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>nBxa[i][j]; inEP>>tmp; inEP>>nBya[i][j]; inEP>>nBye[i][j]; if(nBye[i][j]<0) nBye[i][j]=-nBye[i][j]; nBxe[i][j]=0.0; nBRxa[i][j]=nBxa[i][j]; nBRxe[i][j]=nBxe[i][j]; nBRye[i][j]=nBya[i][j]/ya[i][j]*sqrt(ye[i][j]*ye[i][j]/ya[i][j]/ya[i][j] + nBye[i][j]*nBye[i][j]/nBya[i][j]/nBya[i][j] - 2.5*ye[i][j]*ye[i][j]/ya[i][j]/nBya[i][j] ); nBRya[i][j]=nBya[i][j]/ya[i][j]; } } inEP.close(); //20-60% ifstream inEP; inEP.open("./data_vnptcent2060_5020gev.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>xa60[i][j]; inEP>>tmp; inEP>>ya60[i][j]; inEP>>ye60[i][j]; if(ye60[i][j]<0) ye60[i][j]=-ye60[i][j]; xe60[i][j]=0.0; } } inEP.close(); ifstream inEP; inEP.open("./data_vnptcent2060_5020gev_vzA.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>nAxa60[i][j]; inEP>>tmp; inEP>>nAya60[i][j]; inEP>>nAye60[i][j]; if(nAye60[i][j]<0) nAye60[i][j]=-nAye60[i][j]; nAxe60[i][j]=0.0; nARxa60[i][j]=nAxa60[i][j]; nARxe60[i][j]=nAxe60[i][j]; nARye60[i][j]=nAya60[i][j]/ya60[i][j]*sqrt(ye60[i][j]*ye60[i][j]/ya60[i][j]/ya60[i][j] + nAye60[i][j]*nAye60[i][j]/nAya60[i][j]/nAya60[i][j] - 2.5*ye60[i][j]*ye60[i][j]/ya60[i][j]/nAya60[i][j] ); nARya60[i][j]=nAya60[i][j]/ya60[i][j]; } } inEP.close(); ifstream inEP; inEP.open("./data_vnptcent2060_5020gev_vzB.txt"); for(int i=0; i<nw; i++){ for(int j=0; j<npt; j++){ inEP>>tmp; inEP>>tmp; inEP>>nBxa60[i][j]; inEP>>tmp; inEP>>nBya60[i][j]; inEP>>nBye60[i][j]; if(nBye60[i][j]<0) nBye60[i][j]=-nBye60[i][j]; nBxe60[i][j]=0.0; nBRxa60[i][j]=nBxa60[i][j]; nBRxe60[i][j]=nBxe60[i][j]; nBRye60[i][j]=nBya60[i][j]/ya60[i][j]*sqrt(ye60[i][j]*ye60[i][j]/ya60[i][j]/ya60[i][j] + nBye60[i][j]*nBye60[i][j]/nBya60[i][j]/nBya60[i][j] - 2.5*ye60[i][j]*ye60[i][j]/ya60[i][j]/nBya60[i][j] ); nBRya60[i][j]=nBya60[i][j]/ya60[i][j]; } } inEP.close(); nBRya60[1][2]=1.06; TCanvas *can=new TCanvas("can","can",10,10,1050*0.8*1.3,800*0.3*1.3*1.8); can->Divide(5,2,0,0); //sticks the pads with no space inbetween TH1D *h1[nw]; for (int iw=0;iw<nw;iw++) { can->cd(iw+1); if(iw==4) gPad->SetRightMargin(0.02); //gPad->SetLogy(); char ch1[8]; sprintf(ch1,"h1_%d",iw); h1[iw] = new TH1D(ch1,"",500,hxmin[iw],hxmax[iw]); h1[iw]->SetMinimum(0.5); h1[iw]->SetMaximum(1.5); h1[iw]->SetXTitle(atit[iw][0]); h1[iw]->SetYTitle("v_{n} ratio"); h1[iw]->GetXaxis()->CenterTitle(1); h1[iw]->GetYaxis()->CenterTitle(1); // futz with the axes h1[iw]->GetYaxis()->SetNdivisions(606); h1[iw]->GetXaxis()->SetNdivisions(606); h1[iw]->GetYaxis()->SetTitleSize(textsize*1.4); h1[iw]->GetYaxis()->SetTitleOffset(2.3); h1[iw]->GetYaxis()->SetLabelSize(textsize); h1[iw]->GetXaxis()->SetTitleSize(textsize*1.4); h1[iw]->GetXaxis()->SetTitleOffset(1.3); h1[iw]->GetXaxis()->SetLabelSize(textsize); // h1[iw]->GetXaxis()->SetLabelOffset(1.2); h1[iw]->Draw(); } TH1D *h2[nw]; for (int iw=0;iw<nw;iw++) { can->cd(iw+1+5); if(iw==4) gPad->SetRightMargin(0.02); //gPad->SetLogy(); char ch2[8]; sprintf(ch2,"h2_%d",iw); h2[iw] = new TH1D(ch2,"",500,hxmin[iw],hxmax[iw]); h2[iw]->SetMinimum(0.5); h2[iw]->SetMaximum(1.5); h2[iw]->SetXTitle(atit[iw][0]); h2[iw]->SetYTitle("v_{n} ratio"); h2[iw]->GetXaxis()->CenterTitle(1); h2[iw]->GetYaxis()->CenterTitle(1); // futz with the axes h2[iw]->GetYaxis()->SetNdivisions(606); h2[iw]->GetXaxis()->SetNdivisions(606); h2[iw]->GetYaxis()->SetTitleSize(textsize*1.4); h2[iw]->GetYaxis()->SetTitleOffset(2.3); h2[iw]->GetYaxis()->SetLabelSize(textsize*1.2); h2[iw]->GetXaxis()->SetTitleSize(textsize*1.4); h2[iw]->GetXaxis()->SetTitleOffset(1.9); h2[iw]->GetXaxis()->SetLabelSize(textsize*1.2); // h2[iw]->GetXaxis()->SetLabelOffset(1.2); h2[iw]->Draw(); } // // Draw! // const int nPlotBin = 40; double ptPlot[nPlotBin]; double vnPlot[nPlotBin]; double errPlot[nPlotBin]; cout << "Now Draw!" << endl; TGraphErrors *ge, *ge2, *ge3, *ge4; for (int iw=0;iw<nw;iw++) { can->cd(iw+1); // if (iw==0) { tex=new TLatex(0.6,0.0235*0.88*1.275*1.47*1.6,"CMS"); tex->SetTextSize(textsize*1.0); //tex->Draw(); tex=new TLatex(2.8,0.0235*0.88*1.275*1.47*1.6,"Preliminary"); tex->SetTextSize(textsize*1.0); //tex->Draw(); } if (iw==0) { tex=new TLatex(1.5,1.18,"0-20%"); tex->SetTextSize(textsize*1.0); tex->Draw(); tex=new TLatex(2.,0.021,"|#eta|<0.8"); tex->SetTextSize(textsize*1.0); //tex->Draw(); tex=new TLatex(0.5,0.02,"0.3<p_{T}<3.0 GeV/c"); tex->SetTextSize(textsize*1.0); //tex->Draw(); } //if (iw < 4) tex=new TLatex(ptit[iw][0]+2,0.27,htit[iw]); tex=new TLatex(2.1,1.4,htit[iw]); if ( iw == 0) tex->SetTextSize(textsize); else if (iw == 8) tex->SetTextSize(textsize); else tex->SetTextSize(textsize); tex->Draw(); // // Legend // TLegend *leg = new TLegend(lxmin[iw]*1.2,lymin[iw]*1.*0.75*0.1,lxmax[iw]*0.8,lymax[iw]*1.02*0.4*0.92); leg->SetFillColor(0); leg->SetTextSize(textsize); TLegend *leg2 = new TLegend(lxmin[iw]*1.2,lymin[iw]*1.*0.75*0.52,lxmax[iw]*0.8,lymax[iw]*1.02*0.56*0.92); leg2->SetFillColor(0); leg2->SetTextSize(textsize); // // Read data // for (int im=0;im<1;im++) { int j=im*5+iw; int col=2; //if (ndp[j]==0) continue; ge=new TGraphErrors(19,&nARxa[j][0],&nARya[j][0],&nARxe[j][0],&nARye[j][0]); ge->SetTitle(""); ge->SetMarkerStyle(24); // ge->SetMarkerStyle(msty[im]); ge->SetMarkerSize(msiz[im]); ge->SetMarkerColor(col); ge->SetLineWidth(1.2); ge->SetLineColor(col); //ge->Draw("pe"); leg->AddEntry(ge,"HF(3,4)/HF(3,5)","pl"); } for (int im=0;im<1;im++) { int j=im*5+iw; int col=4; //if (ndp[j]==0) continue; ge2=new TGraphErrors(19,&nBRxa[j][0],&nBRya[j][0],&nBRxe[j][0],&nBRye[j][0]); ge2->SetTitle(""); ge2->SetMarkerStyle(25); // ge2->SetMarkerStyle(msty[im]); ge2->SetMarkerSize(msiz[im]); ge2->SetMarkerColor(col); ge2->SetLineWidth(1.2); ge2->SetLineColor(col); //ge2->Draw("pe"); leg->AddEntry(ge2,"HF(4,5)/HF(3,5)","pl"); //drawSysBox(ge2,16,0.2, sysXYZ[j]); } ge2->Draw("pe"); ge->Draw("pe"); if (iw==0) leg->Draw(); TLine *lines = new TLine(0,1,4.0,1); lines->SetLineStyle(2); lines->SetLineWidth(1); lines->Draw(); if(iw==0||iw<6){ TF1 *fitFun = new TF1("fitFun","pol1", 0, 4); fitFun->SetLineColor(2); ge->Fit("fitFun","R+"); fitFun->Draw("same"); cout<<fitFun->Eval(0.4)<<", "<<fitFun->Eval(0.9)<<", "<<fitFun->Eval(1.9)<<", "<<fitFun->Eval(3.5)<<endl; double p0 = fitFun->GetParameter(0); double p0Err = fitFun->GetParError(0); double p1 = fitFun->GetParameter(1); double p1Err = fitFun->GetParError(1); //double p2 = fitFun->GetParameter(2); //double p2Err = fitFun->GetParError(2); //TF1 *fitFunE = new TF1("fitFunE","[0]+[1]*x+[2]*x*x", 0, 4); TF1 *fitFunE = new TF1("fitFunE","[0]+[1]*x", 0, 4); //fitFunE->SetParameters(p0+p0Err, p1+p1Err, p2+p2Err); fitFunE->SetParameters(p0+p0Err, p1); for(int ipt=0; ipt<nPlotBin; ipt++){ ptPlot[ipt] = ipt*0.1+0.05; vnPlot[ipt] = fitFun->Eval(ptPlot[ipt]); errPlot[ipt] = fitFunE->Eval(ptPlot[ipt]) - fitFun->Eval(ptPlot[ipt]); } TGraphErrors *graph = new TGraphErrors(nPlotBin,ptPlot,vnPlot,0,errPlot); graph->SetTitle(""); graph->SetMarkerStyle(20); graph->SetMarkerSize(1.0); graph->SetMarkerColor(1); graph->SetLineWidth(2); graph->SetLineColor(2); MyStyle->SetFillColor(kRed+1); graph->SetFillColor(kRed+1); graph->SetFillStyle(3002); graph->Draw("e3same"); } else { TF1 *fitFun = new TF1("fitFun","pol1", 0, 4); fitFun->SetLineColor(4); ge->Fit("fitFun","R+"); fitFun->Draw("same"); cout<<fitFun->Eval(0.4)<<", "<<fitFun->Eval(0.9)<<", "<<fitFun->Eval(1.9)<<", "<<fitFun->Eval(3.5)<<endl; } double chi2 = fitFun->GetChisquare(); double ndf = fitFun->GetNDF(); TLatex *tex = new TLatex(0.6,0.53,Form("#chi^{2}/ndf = %2.1f", chi2/ndf)); tex->SetTextColor(2); tex->SetTextSize(16); tex->Draw("same"); can->cd(iw+1+5); tex=new TLatex(2.1,1.4,htitc2[iw]); if ( iw == 0) tex->SetTextSize(textsize); else if (iw == 8) tex->SetTextSize(textsize); else tex->SetTextSize(textsize); tex->Draw(); for (int im=0;im<1;im++) { int j=im*5+iw; int col=2; //if (ndp[j]==0) continue; ge3=new TGraphErrors(19,&nARxa60[j][0],&nARya60[j][0],&nARxe60[j][0],&nARye60[j][0]); ge3->SetTitle(""); ge3->SetMarkerStyle(24); // ge3->SetMarkerStyle(msty[im]); ge3->SetMarkerSize(msiz[im]); ge3->SetMarkerColor(col); ge3->SetLineWidth(1.2); ge3->SetLineColor(col); //ge3->Draw("pe"); leg2->AddEntry(ge3,"HF(3,4)/HF(3,5)","pl"); } for (int im=0;im<1;im++) { int j=im*5+iw; int col=4; //if (ndp[j]==0) continue; ge4=new TGraphErrors(19,&nBRxa60[j][0],&nBRya60[j][0],&nBRxe60[j][0],&nBRye60[j][0]); ge4->SetTitle(""); ge4->SetMarkerStyle(25); // ge4->SetMarkerStyle(msty[im]); ge4->SetMarkerSize(msiz[im]); ge4->SetMarkerColor(col); ge4->SetLineWidth(1.2); ge4->SetLineColor(col); //ge4->Draw("pe"); leg2->AddEntry(ge4,"HF(4,5)/HF(3,5)","pl"); } ge4->Draw("pe"); ge3->Draw("pe"); TLine *lines = new TLine(0,1,4.0,1); lines->SetLineStyle(2); lines->SetLineWidth(1); lines->Draw(); if(iw==0) leg2->Draw(); if(iw==0||iw<6){ TF1 *fitFun = new TF1("fitFun","pol1", 0, 4); fitFun->SetLineColor(2); ge3->Fit("fitFun","R+"); fitFun->Draw("same"); cout<<fitFun->Eval(2.5)<<", "<<fitFun->Eval(7.5)<<", "<<fitFun->Eval(45)<<", "<<fitFun->Eval(55)<<endl; double p0 = fitFun->GetParameter(0); double p0Err = fitFun->GetParError(0); double p1 = fitFun->GetParameter(1); double p1Err = fitFun->GetParError(1); //double p2 = fitFun->GetParameter(2); //double p2Err = fitFun->GetParError(2); //TF1 *fitFunE = new TF1("fitFunE","[0]+[1]*x+[2]*x*x", 0, 4); TF1 *fitFunE = new TF1("fitFunE","[0]+[1]*x", 0, 4); //fitFunE->SetParameters(p0+p0Err, p1+p1Err, p2+p2Err); fitFunE->SetParameters(p0+p0Err, p1); for(int ipt=0; ipt<nPlotBin; ipt++){ ptPlot[ipt] = ipt*0.1+0.05; vnPlot[ipt] = fitFun->Eval(ptPlot[ipt]); errPlot[ipt] = fitFunE->Eval(ptPlot[ipt]) - fitFun->Eval(ptPlot[ipt]); } TGraphErrors *graph = new TGraphErrors(nPlotBin,ptPlot,vnPlot,0,errPlot); graph->SetTitle(""); graph->SetMarkerStyle(20); graph->SetMarkerSize(1.0); graph->SetMarkerColor(1); graph->SetLineWidth(2); graph->SetLineColor(2); MyStyle->SetFillColor(kRed+1); graph->SetFillColor(kRed+1); graph->SetFillStyle(3002); graph->Draw("e3same"); } else { TF1 *fitFun = new TF1("fitFun","pol1", 0, 4); fitFun->SetLineColor(4); ge3->Fit("fitFun","R+"); fitFun->Draw("same"); cout<<fitFun->Eval(2.5)<<", "<<fitFun->Eval(7.5)<<", "<<fitFun->Eval(45)<<", "<<fitFun->Eval(55)<<endl; } double chi2 = fitFun->GetChisquare(); double ndf = fitFun->GetNDF(); TLatex *tex = new TLatex(0.6,0.53,Form("#chi^{2}/ndf = %2.1f", chi2/ndf)); tex->SetTextColor(2); tex->SetTextSize(16); tex->Draw("same"); if(iw==0){ can->cd(iw+5+1); TLatex *tex=new TLatex(1.5,1.18,"20-60%"); tex->SetTextSize(textsize*1.0); tex->Draw(); } } can->cd(); TLatex * tex = new TLatex(0.06,0.96,"CMS"); tex->SetNDC(); tex->SetTextFont(62); tex->SetTextSize(0.038); tex->SetLineWidth(2); tex->Draw(); TLatex * tex = new TLatex(0.108,0.96,"Preliminary"); tex->SetNDC(); tex->SetTextFont(52); tex->SetTextSize(0.038); tex->SetLineWidth(2); //tex->Draw(); TLatex * tex = new TLatex(0.24,0.963,"|#eta|<0.8"); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.038); tex->SetLineWidth(2); tex->Draw(); cout << "end of process" << endl; can->cd(); can->Print("./figures/plot_vnpt_5panels_hfSys_ratio.png"); can->Print("./figures/plot_vnpt_5panels_hfSys_ratio.pdf"); //can->Print("./figures/plot_vnpt_5panels.gif"); }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // DY // // channel = SF, MuMu, EE // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void DY(Double_t &yield, Double_t &statError, Double_t &systError, Double_t &scaleFactor, Int_t njet, TString channel, TString directory, Bool_t useDataDriven, Int_t printLevel, Bool_t drawR = false) { //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Input files // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TString path = Form("%s/%djet/%s/", directory.Data(), njet, channel.Data()); TFile* inputDYSF = new TFile(path + "DY.root"); TFile* inputZZSF = new TFile(path + "ZZ.root"); TFile* inputWZSF = new TFile(path + "WZ.root"); TFile* inputDataSF = new TFile(path + "DataRun2012_Total.root"); TFile* inputDataOF = new TFile(Form("%s/%djet/OF/DataRun2012_Total.root", directory.Data(), njet)); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Input histograms // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TH1F* hNinDYSF [numberMetCuts]; TH1F* hNinWZSF [numberMetCuts]; TH1F* hNinZZSF [numberMetCuts]; TH1F* hNinDataSF[numberMetCuts]; TH1F* hNinDataOF[numberMetCuts]; TH1F* hNoutDYSF [numberMetCuts]; TH1F* hNoutWZSF [numberMetCuts]; TH1F* hNoutZZSF [numberMetCuts]; TH1F* hNoutDataSF[numberMetCuts]; TH1F* hNoutDataOF[numberMetCuts]; for (UInt_t nC=0; nC<numberMetCuts; nC++) { hNinDYSF [nC] = (TH1F*)inputDYSF ->Get(Form("hNinZevents%.2f", MetCuts[nC])); hNinWZSF [nC] = (TH1F*)inputWZSF ->Get(Form("hNinZevents%.2f", MetCuts[nC])); hNinZZSF [nC] = (TH1F*)inputZZSF ->Get(Form("hNinZevents%.2f", MetCuts[nC])); hNinDataSF[nC] = (TH1F*)inputDataSF->Get(Form("hNinZevents%.2f", MetCuts[nC])); hNinDataOF[nC] = (TH1F*)inputDataOF->Get(Form("hNinZevents%.2f", MetCuts[nC])); hNoutDYSF [nC] = (TH1F*)inputDYSF ->Get(Form("hNoutZevents%.2f", MetCuts[nC])); hNoutWZSF [nC] = (TH1F*)inputWZSF ->Get(Form("hNoutZevents%.2f", MetCuts[nC])); hNoutZZSF [nC] = (TH1F*)inputZZSF ->Get(Form("hNoutZevents%.2f", MetCuts[nC])); hNoutDataSF[nC] = (TH1F*)inputDataSF->Get(Form("hNoutZevents%.2f", MetCuts[nC])); hNoutDataOF[nC] = (TH1F*)inputDataOF->Get(Form("hNoutZevents%.2f", MetCuts[nC])); } // Histogram at analysis level //---------------------------------------------------------------------------- TH1F* hExpectedDYSF = (TH1F*)inputDYSF->Get("hWTopTagging"); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // k estimation // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TFile* inputDYmumu = new TFile(Form("%s/%djet/MuMu/DY.root", directory.Data(), njet)); TFile* inputDYee = new TFile(Form("%s/%djet/EE/DY.root", directory.Data(), njet)); TH1F* hNinDYmumu = (TH1F*)inputDYmumu->Get("hNinLooseZevents20.00"); TH1F* hNinDYee = (TH1F*)inputDYee ->Get("hNinLooseZevents20.00"); Double_t NinDYmumu = hNinDYmumu->GetBinContent(2); Double_t NinDYee = hNinDYee ->GetBinContent(2); Double_t k = 0.5 * (sqrt(NinDYmumu / NinDYee) + sqrt(NinDYee / NinDYmumu)); Double_t errk = errkSF(NinDYmumu, NinDYee); if (channel == "MuMu") { k = 0.5 * sqrt(NinDYmumu / NinDYee); errk = errkFunction(NinDYmumu, NinDYee); } else if (channel == "EE") { k = 0.5 * sqrt(NinDYee / NinDYmumu); errk = errkFunction(NinDYee, NinDYmumu); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // Counters // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Double_t NinDYSF [numberMetCuts]; Double_t NinWZSF [numberMetCuts]; Double_t NinZZSF [numberMetCuts]; Double_t NinDataSF[numberMetCuts]; Double_t NinDataOF[numberMetCuts]; Double_t NoutDYSF [numberMetCuts]; Double_t NoutWZSF [numberMetCuts]; // Not used for now Double_t NoutZZSF [numberMetCuts]; // Not used for now Double_t NoutDataSF[numberMetCuts]; Double_t NoutDataOF[numberMetCuts]; for (UInt_t nC=0; nC<numberMetCuts-1; nC++) { NinDYSF [nC] = hNinDYSF [nC]->GetBinContent(2); NinWZSF [nC] = hNinWZSF [nC]->GetBinContent(2); NinZZSF [nC] = hNinZZSF [nC]->GetBinContent(2); NinDataSF [nC] = hNinDataSF [nC]->GetBinContent(2); NinDataOF [nC] = hNinDataOF [nC]->GetBinContent(2); NoutDYSF [nC] = hNoutDYSF [nC]->GetBinContent(2); NoutWZSF [nC] = hNoutWZSF [nC]->GetBinContent(2); NoutZZSF [nC] = hNoutZZSF [nC]->GetBinContent(2); NoutDataSF[nC] = hNoutDataSF[nC]->GetBinContent(2); NoutDataOF[nC] = hNoutDataOF[nC]->GetBinContent(2); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // // R estimation // //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Double_t R [numberMetCuts]; Double_t RData [numberMetCuts]; Double_t errR [numberMetCuts]; Double_t errRData[numberMetCuts]; // Loop over the met cuts //---------------------------------------------------------------------------- for (UInt_t nC=0; nC<numberMetCuts-1; nC++) { R [nC] = NoutDYSF[nC] / NinDYSF[nC]; errR[nC] = errRFunction(NoutDYSF[nC], NinDYSF[nC]); RData [nC] = RDataFunction (NoutDataSF[nC], NoutDataOF[nC], NinDataSF[nC], NinDataOF[nC], k); errRData[nC] = errRDataFunction(NoutDataSF[nC], NoutDataOF[nC], NinDataSF[nC], NinDataOF[nC], k, errk); if (printLevel > 2) { printf("\n %.0f < mpmet < %.0f GeV\n", MetCuts[nC], MetCuts[nC+1]); printf(" -------------------------------------------------\n"); printf(" N^{MC}_{out,SF} = %6.1f\n", NoutDYSF[nC]); printf(" N^{MC}_{in, SF} = %6.1f\n", NinDYSF[nC]); printf(" N^{data}_{out,SF} = %4.0f\n", NoutDataSF[nC]); printf(" N^{data}_{out,OF} = %4.0f\n", NoutDataOF[nC]); printf(" N^{data}_{in, SF} = %4.0f\n", NinDataSF[nC]); printf(" N^{data}_{in, OF} = %4.0f\n", NinDataOF[nC]); printf(" k = % 5.3f +- %5.3f\n", k, errk); printf(" R^{MC} = % 5.3f +- %5.3f\n", R[nC], errR[nC]); printf(" R^{data} = % 5.3f +- %5.3f\n", RData[nC], errRData[nC]); } } // Estimate the R systematic as the difference between R[2] and R[3] //---------------------------------------------------------------------------- Int_t iMaxR = 0; Int_t iMinR = 0; for (UInt_t nC=0; nC<numberMetCuts-1; nC++) { if (R[nC] > 0 && R[nC] > R[iMaxR]) iMaxR = nC; if (R[nC] > 0 && R[nC] < R[iMinR]) iMinR = nC; } Int_t theR = 2; Int_t sysR = 3; Double_t RelDiffR = (R[theR] > 0) ? fabs(R[theR] - R[sysR]) / R[theR] : -999; if (printLevel > 0) { printf("\n [%s] R systematic uncertainty\n", channel.Data()); printf(" -------------------------------------------------\n"); printf(" min R = %5.3f\n", R[iMinR]); printf(" max R = %5.3f\n", R[iMaxR]); printf(" R[%d] = %5.3f\n", theR, R[theR]); printf(" R[%d] = %5.3f\n", sysR, R[sysR]); printf(" |R[%d]-R[%d]| / R[%d] = %.1f%s\n", theR, sysR, theR, 1e2*RelDiffR, "%"); printf("\n"); } // Estimate Nout //---------------------------------------------------------------------------- Double_t NinCountedSFWZ = NinWZSF [sysR]; Double_t NinCountedSFZZ = NinZZSF [sysR]; Double_t NinCountedSFData = NinDataSF[sysR]; Double_t NinCountedOFData = NinDataOF[sysR]; Double_t NinEstSFFinal = NinCountedSFData - k*NinCountedOFData; Double_t errNinEstSFFinal = errNinEstFunction(NinCountedSFData, NinCountedOFData, k, errk); Double_t NestSFFinal = R[theR] * NinEstSFFinal; Double_t errNestSFFinal = errNestFunction(NestSFFinal, R[theR], errR[theR], NinEstSFFinal, errNinEstSFFinal); Double_t NinEstSFNoDibosonFinal = NinEstSFFinal - NinCountedSFWZ - NinCountedSFZZ; Double_t errNinEstSFNoDibosonFinal = errNinEstNoDibosonFunction(NinCountedSFData, k, errk, NinCountedOFData, NinCountedSFWZ, NinCountedSFZZ); Double_t NestSFNoDibosonFinal = R[theR] * NinEstSFNoDibosonFinal; Double_t errNestSFNoDibosonFinal = errNestFunction(NestSFNoDibosonFinal, R[theR], errR[theR], NinEstSFNoDibosonFinal, errNinEstSFNoDibosonFinal); Double_t totalError = sqrt(errNestSFNoDibosonFinal*errNestSFNoDibosonFinal + (RelDiffR*NestSFNoDibosonFinal)*(RelDiffR*NestSFNoDibosonFinal)); Double_t SFsf = NestSFNoDibosonFinal / hExpectedDYSF->GetBinContent(2); if (printLevel > 1) { printf("\n Analysis results\n"); printf(" -------------------------------------------------\n"); printf(" N^{data}_{in,SF} = %4.0f\n", NinCountedSFData); printf(" N^{data}_{in,OF} = %4.0f\n", NinCountedOFData); printf(" k = %5.3f +- %5.3f\n", k, errk); printf(" R[%d] = %5.3f +- %5.3f\n", theR, R[theR], errR[theR]); printf(" N^{WZ}_{in,SF} = %7.2f +- %6.2f (stat.) +- %6.2f (syst.)\n", NinCountedSFWZ, sqrt(NinCountedSFWZ), 0.1*NinCountedSFWZ); printf(" N^{ZZ}_{in,SF} = %7.2f +- %6.2f (stat.) +- %6.2f (syst.)\n", NinCountedSFZZ, sqrt(NinCountedSFZZ), 0.1*NinCountedSFZZ); printf(" N^{est}_{in, SF} = %7.2f +- %6.2f\n", NinEstSFFinal, errNinEstSFFinal); printf(" N^{est}_{out,SF} = %7.2f +- %6.2f (stat.) +- %6.2f (syst.)\n", NestSFFinal, errNestSFFinal, RelDiffR*NestSFFinal); printf(" -------------------------------------------------\n"); printf(" [no VZ] N^{est}_{out,SF} = %7.2f +- %6.2f (stat.) +- %6.2f (syst.) = %7.2f +- %6.2f (stat. + syst.)\n", NestSFNoDibosonFinal, errNestSFNoDibosonFinal, RelDiffR*NestSFNoDibosonFinal, NestSFNoDibosonFinal, totalError); printf(" N^{MC}_{out,SF} = %7.2f +- %6.2f\n", hExpectedDYSF->GetBinContent(2), hExpectedDYSF->GetBinError(2)); printf(" *** scale factor = %.3f\n\n", SFsf); } // Save the result //---------------------------------------------------------------------------- yield = (useDataDriven) ? NestSFNoDibosonFinal : hExpectedDYSF->GetBinContent(2); statError = errNestSFNoDibosonFinal; systError = RelDiffR*NestSFNoDibosonFinal; scaleFactor = yield / hExpectedDYSF->GetBinContent(2); // For the note //---------------------------------------------------------------------------- if (printLevel > 0) { printf("\n [%s] DY values for the note\n", channel.Data()); printf(" -------------------------------------------------\n"); printf(" final state & R_{MC} & N^{control,data} & N_{DY}^{data} & N_{DY}^{MC} & data/MC\n"); printf(" same flavour & %5.3f $\\pm$ %5.3f & %4.0f & %5.1f $\\pm$ %4.1f & %5.1f $\\pm$ %4.1f & %4.1f\n\n", R[theR], errR[theR], NinCountedSFData, yield, statError, hExpectedDYSF->GetBinContent(2), hExpectedDYSF->GetBinError(2), scaleFactor); printf("\n [%s] DY relative systematic uncertainties\n", channel.Data()); printf(" -------------------------------------------------\n"); printf(" DY normalisation = %.0f (stat.) $\\bigoplus$ %.0f (syst.)\n\n", 1e2*statError/yield, 1e2*systError/yield); } // Check //---------------------------------------------------------------------------- Double_t check = hExpectedDYSF->GetBinContent(2) - NoutDYSF[sysR]; if (check != 0) printf(" WARNING: DY yields do not much by %f\n\n", check); // Draw histograms //---------------------------------------------------------------------------- if (drawR) { Double_t absoluteMin = 999; TGraphErrors* gR = new TGraphErrors(numberMetCuts-1); TGraphErrors* gRdata = new TGraphErrors(numberMetCuts-1); for (UInt_t i=0; i<numberMetCuts-1; i++) { gR->SetPoint (i, 0.5 * (MetDraw[i+1] + MetDraw[i]), R[i]); gR->SetPointError(i, 0.5 * (MetDraw[i+1] - MetDraw[i]), errR[i]); gRdata->SetPoint (i, 0.5 * (MetDraw[i+1] + MetDraw[i]), RData[i]); gRdata->SetPointError(i, 0.5 * (MetDraw[i+1] - MetDraw[i]), errRData[i]); if (absoluteMin > (R[i] - errR[i])) absoluteMin = R[i] - errR[i]; if (absoluteMin > (RData[i] - errRData[i])) absoluteMin = RData[i] - errRData[i]; } if (absoluteMin > 0) absoluteMin = 0; // Cosmetics //-------------------------------------------------------------------------- gR->SetMarkerSize (0.9); gR->SetMarkerStyle(kFullCircle); gRdata->SetLineColor (kRed+1); gRdata->SetMarkerColor(kRed+1); gRdata->SetMarkerSize (0.9); gRdata->SetMarkerStyle(kFullCircle); // Draw //-------------------------------------------------------------------------- canvas = new TCanvas(); TMultiGraph *mgR = new TMultiGraph(); mgR->Add(gRdata); mgR->Add(gR); mgR->Draw("ap"); mgR->GetYaxis()->SetTitle("R^{out/in}"); mgR->GetXaxis()->SetTitle("mpmet (GeV)"); mgR->SetMinimum(absoluteMin - 0.1); mgR->SetMaximum(1.0); // Legend //-------------------------------------------------------------------------- TLegend* lmgR = new TLegend(0.72, 0.68, 0.92, 0.88); lmgR->AddEntry(gR, " DY MC", "lp"); lmgR->AddEntry(gRdata," data", "lp"); lmgR->SetFillColor(0); lmgR->SetTextAlign(12); lmgR->SetTextFont (42); lmgR->SetTextSize (0.04); if (channel == "SF") lmgR->SetHeader("ee + #mu#mu"); else if (channel == "EE") lmgR->SetHeader("ee"); else if (channel == "MuMu") lmgR->SetHeader("#mu#mu"); lmgR->Draw("same"); // Line at zero //-------------------------------------------------------------------------- TLine* zeroLine = new TLine(canvas->GetUxmin(), 0.0, canvas->GetUxmax(), 0.0); zeroLine->SetLineStyle(3); zeroLine->SetLineWidth(2); zeroLine->Draw("same"); mgR->Draw("p,same"); // Save //-------------------------------------------------------------------------- canvas->SaveAs("R_" + channel + ".png"); } }
void QCD_Background_Estimator(bool removeMC = false) { TFile* file1 = TFile::Open("outputFile_Mu_Run2010A_Sep17thReReco.root"); TH2F* histo1 = static_cast<TH2F*>(file1->Get("relIso_Vs_d0")); TH2F* histo2 = static_cast<TH2F*>(file1->Get("relIso_Vs_d0_tagRatePred")); TH2F* histo3 = static_cast<TH2F*>(file1->Get("relIso_Vs_d0_tagRateObs")); TH2F* histo4 = static_cast<TH2F*>(file1->Get("relIso_Vs_d0_tagRatePredLowError")); TH2F* histo5 = static_cast<TH2F*>(file1->Get("relIso_Vs_d0_tagRatePredHighError")); histo1->SetStats(false); histo1->GetXaxis()->SetTitle("d_{0} (cm)"); histo1->GetYaxis()->SetTitle("relIso"); TFile* file2 = TFile::Open("outputFile_Mu_Run2010B_PromptReco_Part1.root"); histo1->Add(static_cast<TH2F*>(file2->Get("relIso_Vs_d0"))); histo2->Add(static_cast<TH2F*>(file2->Get("relIso_Vs_d0_tagRatePred"))); histo3->Add(static_cast<TH2F*>(file2->Get("relIso_Vs_d0_tagRateObs"))); histo4->Add(static_cast<TH2F*>(file2->Get("relIso_Vs_d0_tagRatePredLowError"))); histo5->Add(static_cast<TH2F*>(file2->Get("relIso_Vs_d0_tagRatePredHighError"))); TFile* file3 = TFile::Open("outputFile_Mu_Run2010B_PromptReco_Part2.root"); histo1->Add(static_cast<TH2F*>(file3->Get("relIso_Vs_d0"))); histo2->Add(static_cast<TH2F*>(file3->Get("relIso_Vs_d0_tagRatePred"))); histo3->Add(static_cast<TH2F*>(file3->Get("relIso_Vs_d0_tagRateObs"))); histo4->Add(static_cast<TH2F*>(file3->Get("relIso_Vs_d0_tagRatePredLowError"))); histo5->Add(static_cast<TH2F*>(file3->Get("relIso_Vs_d0_tagRatePredHighError"))); TFile* file4 = TFile::Open("outputFile_Mu_Run2010B_PromptReco_Part3.root"); histo1->Add(static_cast<TH2F*>(file4->Get("relIso_Vs_d0"))); histo2->Add(static_cast<TH2F*>(file4->Get("relIso_Vs_d0_tagRatePred"))); histo3->Add(static_cast<TH2F*>(file4->Get("relIso_Vs_d0_tagRateObs"))); histo4->Add(static_cast<TH2F*>(file4->Get("relIso_Vs_d0_tagRatePredLowError"))); histo5->Add(static_cast<TH2F*>(file4->Get("relIso_Vs_d0_tagRatePredHighError"))); if(removeMC) { TFile* ttbarFile = TFile::Open("old_outputFile_TTbarJets.root"); histo1->Add(static_cast<TH2F*>(ttbarFile->Get("relIso_Vs_d0")), -15.07 / 8978.93); histo2->Add(static_cast<TH2F*>(ttbarFile->Get("relIso_Vs_d0_tagRatePred")), -15.07 / 8978.93); histo3->Add(static_cast<TH2F*>(ttbarFile->Get("relIso_Vs_d0_tagRateObs")), -15.07 / 8978.93); TFile* wFile = TFile::Open("old_outputFile_WJets.root"); histo1->Add(static_cast<TH2F*>(wFile->Get("relIso_Vs_d0")), -15.07 / 241.16); histo2->Add(static_cast<TH2F*>(wFile->Get("relIso_Vs_d0_tagRatePred")), -15.07 / 241.16); histo3->Add(static_cast<TH2F*>(wFile->Get("relIso_Vs_d0_tagRateObs")), -15.07 / 241.16); } double N_ATotal = histo1->Integral(1, 8, 1, 1); std::cout << "N_ATotal = " << N_ATotal << std::endl; double N_B = histo1->Integral(1, 8, 29, 100); std::cout << "N_B = " << N_B << std::endl; double N_C = histo1->Integral(15, 100, 1, 1); std::cout << "N_C = " << N_C << std::endl; double N_D = histo1->Integral(15, 100, 29, 100); std::cout << "N_D = " << N_D << std::endl; double N_ACalc = N_B * N_C / N_D; double N_ACalcError = ABCDError(N_B, N_C, N_D); std::cout << "N_ACalc = " << N_ACalc << " +/- " << N_ACalcError << std::endl; double F_QCD = N_ACalc / N_ATotal; double F_QCD_Error = FQCDError(N_ACalc, N_ACalcError, N_ATotal); std::cout << "F_QCD = " << F_QCD << " +/- " << F_QCD_Error << std::endl; double N_E = histo1->Integral(1, 8, 2, 29); std::cout << "N_E = " << N_E << std::endl; double N_F = histo1->Integral(15, 100, 2, 29); std::cout << "N_F = " << N_F << std::endl; double F_QCD_E = N_B * N_F / (N_E * N_D); std::cout << "F_QCD_E = " << F_QCD_E << std::endl; double N_B_TagPred = histo2->Integral(1, 8, 29, 100); std::cout << "N_B_TagPred = " << N_B_TagPred << std::endl; double N_B_TagObs = histo3->Integral(1, 8, 29, 100); std::cout << "N_B_TagObs = " << N_B_TagObs << std::endl; double k = N_B_TagObs / N_B_TagPred; double N_B_LowError = histo4->Integral(1, 8, 29, 100); double N_B_HighError = histo5->Integral(1, 8, 29, 100); std::pair<double, double> k_error = kerror(N_B_TagObs, N_B_TagPred, N_B_LowError, N_B_HighError); std::cout << "k = " << k << " + " << k_error.second << " - " << k_error.first << std::endl; std::cout << "F_QCD * k = " << F_QCD * k << std::endl; histo1->Draw("box"); TLine* Atop = new TLine(0, 0.05, 0.02, 0.05); Atop->SetLineColor(2); Atop->SetLineWidth(2); Atop->Draw("same"); }
void createWorkspace(const std::string &infilename, int nState, bool correctCtau, bool drawRapPt2D, bool drawPtCPM2D){ gROOT->SetStyle("Plain"); gStyle->SetTitleBorderSize(0); // Set some strings const std::string workspacename = "ws_masslifetime", treename = "selectedData"; // Get the tree from the data file TFile *f = TFile::Open(infilename.c_str()); TTree *tree = (TTree*)f->Get(treename.c_str()); // Set branch addresses in tree to be able to import tree to roofit TLorentzVector* jpsi = new TLorentzVector; tree->SetBranchAddress("JpsiP",&jpsi); double CPMval = 0; tree->SetBranchAddress("CPM",&CPMval); double massErr = 0; tree->SetBranchAddress("JpsiMassErr",&massErr); double Vprob = 0; tree->SetBranchAddress("JpsiVprob",&Vprob); double lifetime = 0; tree->SetBranchAddress("Jpsict",&lifetime); double lifetimeErr = 0; tree->SetBranchAddress("JpsictErr",&lifetimeErr); // define variables necessary for J/Psi(Psi(2S)) mass,lifetime fit RooRealVar* JpsiMass = new RooRealVar("JpsiMass", "M [GeV]", onia::massMin, onia::massMax); RooRealVar* JpsiMassErr = new RooRealVar("JpsiMassErr", "#delta M [GeV]", 0, 5); RooRealVar* JpsiRap = new RooRealVar("JpsiRap", "y", -onia::rap, onia::rap); RooRealVar* JpsiPt = new RooRealVar("JpsiPt", "p_{T} [GeV]", 0. ,100.); RooRealVar* JpsiCPM = new RooRealVar("JpsiCPM", "N_{ch}", 0. ,100.); RooRealVar* Jpsict = new RooRealVar("Jpsict", "lifetime [mm]", -1., 2.5); RooRealVar* JpsictErr = new RooRealVar("JpsictErr", "Error on lifetime [mm]", 0.0001, 1); RooRealVar* JpsiVprob = new RooRealVar("JpsiVprob", "", 0.01, 1.); // Set bins Jpsict->setBins(10000,"cache"); Jpsict->setBins(100); JpsiMass->setBins(100); JpsictErr->setBins(100); // The list of data variables RooArgList dataVars(*JpsiMass,*JpsiMassErr,*JpsiRap,*JpsiPt,*JpsiCPM,*Jpsict,*JpsictErr,*JpsiVprob); // construct dataset to contain events RooDataSet* fullData = new RooDataSet("fullData","The Full Data From the Input ROOT Trees",dataVars); int entries = tree->GetEntries(); cout << "entries " << entries << endl; // loop through events in tree and save them to dataset for (int ientries = 0; ientries < entries; ientries++) { if (ientries%100000==0) std::cout << "event " << ientries << " of " << entries << std::endl; tree->GetEntry(ientries); double M =jpsi->M(); double y=jpsi->Rapidity(); double pt=jpsi->Pt(); double cpm=CPMval; if (M > JpsiMass->getMin() && M < JpsiMass->getMax() && massErr > JpsiMassErr->getMin() && massErr < JpsiMassErr->getMax() && pt > JpsiPt->getMin() && pt < JpsiPt->getMax() && cpm > JpsiCPM->getMin() && cpm < JpsiCPM->getMax() && y > JpsiRap->getMin() && y < JpsiRap->getMax() && lifetime > Jpsict->getMin() && lifetime < Jpsict->getMax() && lifetimeErr > JpsictErr->getMin() && lifetimeErr < JpsictErr->getMax() && Vprob > JpsiVprob->getMin() && Vprob < JpsiVprob->getMax() ){ JpsiPt ->setVal(pt); JpsiCPM ->setVal(cpm); JpsiRap ->setVal(y); JpsiMass ->setVal(M); JpsiMassErr ->setVal(massErr); JpsiVprob ->setVal(Vprob); //cout<<"before lifetime correction \n" // <<"Jpsict: "<<lifetime<<" JpsictErr: "<<lifetimeErr<<endl; if(correctCtau){ lifetime = lifetime * onia::MpsiPDG / M ; lifetimeErr = lifetimeErr * onia::MpsiPDG / M ; Jpsict ->setVal(lifetime); JpsictErr ->setVal(lifetimeErr); //cout<<"MpsiPDG: "<<onia::MpsiPDG<<endl; //cout<<"after lifetime correction \n" // <<"Jpsict: "<<lifetime<<" JpsictErr: "<<lifetimeErr<<endl; } else{ Jpsict ->setVal(lifetime); JpsictErr ->setVal(lifetimeErr); } fullData->add(dataVars); } }//ientries //------------------------------------------------------------------------------------------------------------------ // Define workspace and import datasets ////Get datasets binned in pT, cpm, and y for(int iRap = 1; iRap <= onia::kNbRapForPTBins; iRap++){ Double_t yMin; Double_t yMax; if(iRap==0){ yMin = onia::rapForPTRange[0]; yMax = onia::rapForPTRange[onia::kNbRapForPTBins]; } else{ yMin = onia::rapForPTRange[iRap-1]; yMax = onia::rapForPTRange[iRap]; } for(int iPT = 1; iPT <= onia::kNbPTBins[iRap]; iPT++){ //for(int iPT = 0; iPT <= 0; iPT++) Double_t ptMin; Double_t ptMax; if(iPT==0){ ptMin = onia::pTRange[iRap][0]; ptMax = onia::pTRange[iRap][onia::kNbPTBins[0]]; } else{ ptMin = onia::pTRange[iRap][iPT-1]; ptMax = onia::pTRange[iRap][iPT]; } for(int iCPM = 1; iCPM <= onia::NchBins; iCPM++){ Double_t cpmMin; Double_t cpmMax; if(iCPM==0){ cpmMin = onia::cpmRange[0]; cpmMax = onia::cpmRange[onia::NchBins]; } else{ cpmMin = onia::cpmRange[iCPM-1]; cpmMax = onia::cpmRange[iCPM]; } // output file name and workspace std::stringstream outfilename; outfilename << "tmpFiles/backupWorkSpace/fit_Psi" << nState-3 << "S_rap" << iRap << "_pt" << iPT << "_cpm" << iCPM << ".root"; // outfilename << "tmpFiles/fit_Psi" << nState-3 << "S_rap" << iRap << "_pt" << iPT << ".root"; RooWorkspace* ws = new RooWorkspace(workspacename.c_str()); // define pt and y cuts on dataset std::stringstream cutString; cutString << "(JpsiCPM > " << cpmMin << " && JpsiCPM < "<< cpmMax << ") && " << "(JpsiPt >= " << ptMin << " && JpsiPt < "<< ptMax << ") && " << "(TMath::Abs(JpsiRap) >= " << yMin << " && TMath::Abs(JpsiRap) < " << yMax << ")"; cout << "cutString: " << cutString.str().c_str() << endl; // get the dataset for the fit RooDataSet* binData = (RooDataSet*)fullData->reduce(cutString.str().c_str()); std::stringstream name; name << "data_rap" << iRap << "_pt" << iPT << "_cpm" << iCPM;; binData->SetNameTitle(name.str().c_str(), "Data For Fitting"); // Import variables to workspace ws->import(*binData); ws->writeToFile(outfilename.str().c_str()); }//iCPM }//iPT }//iRap ////--------------------------------------------------------------- ////--Integrating rapidity and pt bins, in +/- 3*sigma mass window ////--------------------------------------------------------------- if(drawRapPt2D){ double yMin = onia::rapForPTRange[0]; double yMax = onia::rapForPTRange[onia::kNbRapForPTBins]; double ptMin = onia::pTRange[0][0]; double ptMax = onia::pTRange[0][onia::kNbPTBins[0]]; double cpmMin = onia::cpmRange[0]; double cpmMax = onia::cpmRange[onia::NchBins]; std::stringstream cutRapPt; cutRapPt << "(JpsiCPM > " << cpmMin << " && JpsiCPM < "<< cpmMax << ") && " << "(JpsiPt > " << ptMin << " && JpsiPt < "<< ptMax << ") && " << "(TMath::Abs(JpsiRap) > " << yMin << " && TMath::Abs(JpsiRap) < " << yMax << ")"; cout<<"cutRapPt: "<<cutRapPt.str().c_str()<<endl; RooDataSet* rapPtData = (RooDataSet*)fullData->reduce(cutRapPt.str().c_str()); std::stringstream nameRapPt; nameRapPt << "data_rap0_pt0_cpm0"; rapPtData->SetNameTitle(nameRapPt.str().c_str(), "Data For full rap and pt"); // output file name and workspace std::stringstream outfilename; outfilename << "tmpFiles/backupWorkSpace/fit_Psi" << nState-3 << "S_rap0_pt0_cpm0.root"; RooWorkspace* ws_RapPt = new RooWorkspace(workspacename.c_str()); //Import variables to workspace ws_RapPt->import(*rapPtData); ws_RapPt->writeToFile(outfilename.str().c_str()); TH2D* rapPt; TH1D* rap1p2; double MassMin; double MassMax; rap1p2 = new TH1D("rap1p2","rap1p2",30,0, 1.8); if(nState==4){ rapPt = new TH2D( "rapPt", "rapPt", 52,-1.3,1.3,144,0,72); MassMin=3.011;//massPsi1S-onia::nSigMass*sigma1S; MassMax=3.174;//massPsi1S+onia::nSigMass*sigma1S; // sigma 27.2 MeV // mean 3.093 GeV } if(nState==5){ rapPt = new TH2D( "rapPt", "rapPt", 64,-1.6,1.6,144,0,72); // rap<1.5 //rapPt = new TH2D( "rapPt", "rapPt", 52,-1.3,1.3,144,0,72); // rap<1.2 MassMin=3.576;//massPsi2S-onia::nSigMass*sigma2S; MassMax=3.786;//massPsi2S+onia::nSigMass*sigma2S; // sigma 34.9 MeV // pT > 7 // sigma 34.3 MeV // pT > 10 // mean 3.681 GeV } cout<<"Plotting rap-Pt for Psi"<<nState-3<<"S"<<endl; cout<<"MassMin for rap-Pt plot = "<<MassMin<<endl; cout<<"MassMax for rap-Pt plot = "<<MassMax<<endl; TTree *rapPtTree = (TTree*)rapPtData->tree(); std::stringstream cutMass; cutMass<<"(JpsiMass > " << MassMin << " && JpsiMass < "<< MassMax << ")"; //following two methods can only be used in root_v30, 34 does not work rapPtTree->Draw("JpsiPt:JpsiRap>>rapPt",cutMass.str().c_str(),"colz"); cout<<"debug"<<endl; rapPtTree->Draw("TMath::Abs(JpsiRap)>>rap1p2",cutMass.str().c_str()); TCanvas* c2 = new TCanvas("c2","c2",1200,1500); rapPt->SetYTitle("p_{T}(#mu#mu) [GeV]"); rapPt->SetXTitle("y(#mu#mu)"); gStyle->SetPalette(1); gPad->SetFillColor(kWhite); rapPt->SetTitle(0); rapPt->SetStats(0); gPad->SetLeftMargin(0.15); gPad->SetRightMargin(0.17); rapPt->GetYaxis()->SetTitleOffset(1.5); rapPt->Draw("colz"); TLine* rapPtLine; for(int iRap=0;iRap<onia::kNbRapForPTBins+1;iRap++){ rapPtLine= new TLine( -onia::rapForPTRange[iRap], onia::pTRange[0][0], -onia::rapForPTRange[iRap], onia::pTRange[0][onia::kNbPTBins[iRap]] ); rapPtLine->SetLineWidth( 2 ); rapPtLine->SetLineStyle( 1 ); rapPtLine->SetLineColor( kWhite ); rapPtLine->Draw(); rapPtLine= new TLine( onia::rapForPTRange[iRap], onia::pTRange[0][0], onia::rapForPTRange[iRap], onia::pTRange[0][onia::kNbPTBins[iRap]] ); rapPtLine->SetLineWidth( 2 ); rapPtLine->SetLineStyle( 1 ); rapPtLine->SetLineColor( kWhite ); rapPtLine->Draw(); int pTBegin = 0; if(nState==5) pTBegin = 1; for(int iPt=pTBegin;iPt<onia::kNbPTBins[iRap]+1;iPt++){ rapPtLine= new TLine( -onia::rapForPTRange[onia::kNbRapForPTBins], onia::pTRange[0][iPt], onia::rapForPTRange[onia::kNbRapForPTBins], onia::pTRange[0][iPt] ); rapPtLine->SetLineWidth( 2 ); rapPtLine->SetLineStyle( 1 ); rapPtLine->SetLineColor( kWhite ); rapPtLine->Draw(); } } char savename[200]; sprintf(savename,"Fit/rapPt_Psi%dS.pdf",nState-3); c2->SaveAs(savename); TCanvas* c3 = new TCanvas("c3","c3",1500,1200); rap1p2->SetYTitle("Events"); rap1p2->SetXTitle("y(#mu#mu)"); rap1p2->SetTitle(0); rap1p2->SetStats(0); rap1p2->GetYaxis()->SetTitleOffset(1.2); rap1p2->Draw(); sprintf(savename,"Fit/rapDimuon_1p2_Psi%dS.pdf",nState-3); c3->SaveAs(savename); } if(drawPtCPM2D){ double yMin = onia::rapForPTRange[0]; double yMax = onia::rapForPTRange[onia::kNbRapForPTBins]; double ptMin = onia::pTRange[0][0]; double ptMax = onia::pTRange[0][onia::kNbPTBins[0]]; double cpmMin = onia::cpmRange[0]; double cpmMax = onia::cpmRange[onia::NchBins]; std::stringstream cutRapPt; cutRapPt << "(JpsiCPM > " << cpmMin << " && JpsiCPM < "<< cpmMax << ") && " << "(JpsiPt > " << ptMin << " && JpsiPt < "<< ptMax << ") && " << "(TMath::Abs(JpsiRap) > " << yMin << " && TMath::Abs(JpsiRap) < " << yMax << ")"; cout<<"cutRapPt: "<<cutRapPt.str().c_str()<<endl; RooDataSet* rapPtData = (RooDataSet*)fullData->reduce(cutRapPt.str().c_str()); std::stringstream nameRapPt; nameRapPt << "data_rap0_pt0_cpm0"; rapPtData->SetNameTitle(nameRapPt.str().c_str(), "Data For full rap and pt"); // output file name and workspace std::stringstream outfilename; outfilename << "tmpFiles/backupWorkSpace/fit_Psi" << nState-3 << "S_rap0_pt0_cpm0.root"; RooWorkspace* ws_RapPt = new RooWorkspace(workspacename.c_str()); //Import variables to workspace ws_RapPt->import(*rapPtData); ws_RapPt->writeToFile(outfilename.str().c_str()); TH2D* PtCPM; double MassMin; double MassMax; if(nState==4){ PtCPM = new TH2D( "PtCPM", "PtCPM", 100,0,50,200,0,100); MassMin=3.011;//massPsi1S-onia::nSigMass*sigma1S; MassMax=3.174;//massPsi1S+onia::nSigMass*sigma1S; // sigma 27.2 MeV // mean 3.093 GeV } if(nState==5){ PtCPM = new TH2D( "PtCPM", "PtCPM", 100,0,50,200,0,100); // rap<1.5 //rapPt = new TH2D( "rapPt", "rapPt", 52,-1.3,1.3,144,0,72); // rap<1.2 MassMin=3.576;//massPsi2S-onia::nSigMass*sigma2S; MassMax=3.786;//massPsi2S+onia::nSigMass*sigma2S; // sigma 34.9 MeV // pT > 7 // sigma 34.3 MeV // pT > 10 // mean 3.681 GeV } cout<<"Plotting Pt-CPM for Psi"<<nState-3<<"S"<<endl; cout<<"MassMin for Pt-CPM plot = "<<MassMin<<endl; cout<<"MassMax for Pt-CPM plot = "<<MassMax<<endl; TTree *rapPtTree = (TTree*)rapPtData->tree(); std::stringstream cutMass; cutMass<<"(JpsiMass > " << MassMin << " && JpsiMass < "<< MassMax << ")"; //following two methods can only be used in root_v30, 34 does not work rapPtTree->Draw("JpsiCPM:JpsiPt>>PtCPM",cutMass.str().c_str(),"colz"); cout<<"debug"<<endl; TCanvas* c2 = new TCanvas("c2","c2",1200,1500); PtCPM->SetYTitle("N_{ch}"); PtCPM->SetXTitle("p_{T}(#mu#mu) [GeV]"); gStyle->SetPalette(1); gPad->SetFillColor(kWhite); PtCPM->SetTitle(0); PtCPM->SetStats(0); gPad->SetLeftMargin(0.15); gPad->SetRightMargin(0.17); PtCPM->GetYaxis()->SetTitleOffset(1.5); PtCPM->Draw("colz"); TLine* PtCPMLine; int iRap=0; for(int iPt=0;iPt<onia::kNbPTMaxBins+1;iPt++){ int cpmBegin = 0; if(nState==5) cpmBegin = 1; for(int icpm=cpmBegin;icpm<onia::NchBins+1;icpm++){ PtCPMLine= new TLine( onia::pTRange[iRap][0], onia::cpmRange[icpm], onia::pTRange[iRap][onia::kNbPTMaxBins], onia::cpmRange[icpm] ); PtCPMLine->SetLineWidth( 2 ); PtCPMLine->SetLineStyle( 1 ); PtCPMLine->SetLineColor( kWhite ); PtCPMLine->Draw(); PtCPMLine= new TLine( onia::pTRange[iRap][iPt], onia::cpmRange[0], onia::pTRange[iRap][iPt], onia::cpmRange[onia::NchBins] ); PtCPMLine->SetLineWidth( 2 ); PtCPMLine->SetLineStyle( 1 ); PtCPMLine->SetLineColor( kWhite ); PtCPMLine->Draw(); // PtCPMLine= new TLine( onia::pTRange[0][onia::kNbPTMaxBins], onia::cpmRange[icpm], onia::pTRange[0][onia::kNbPTMaxBins], onia::cpmRange[icpm] ); // PtCPMLine->SetLineWidth( 2 ); // PtCPMLine->SetLineStyle( 1 ); // PtCPMLine->SetLineColor( kWhite ); // PtCPMLine->Draw(); } } char savename[200]; sprintf(savename,"Fit/PtCPM_Psi%dS.pdf",nState-3); c2->SaveAs(savename); } f->Close(); }
void outputBDTplots(TString setup, TString MVA, TString dir, int MSTOP, int MLSP,bool lineacut,bool logbool){ gStyle->SetOptStat(0); gStyle->SetCanvasColor(0); gStyle->SetPadColor(0); gStyle->SetMarkerStyle(15); gStyle->SetMarkerSize(0.25); gStyle->SetTextFont(42); gStyle->SetMarkerColor(37); std::ostringstream ostr1; ostr1 << MSTOP; std::string stop = ostr1.str(); std::ostringstream ostr2; ostr2 << MLSP; std::string neut = ostr2.str(); TString ntpdir ="ntuples_bestset_t2tt_good"; TString dataset_name; TString datasetnombre; if (dir == "T2bw025") {dataset_name = "t2bw_025";} if (dir == "T2bw050") {dataset_name = "t2bw_050";} if (dir == "T2bw075") {dataset_name = "t2bw_075";} if (dir == "T2tt") {dataset_name = "t2tt_all";} if (dir == "T2tt") {datasetnombre = "t2tt_half";} TFile ttbar(ntpdir+"/"+setup+"/"+dir+"/ttbar/output/ttbar_all_0.root"); TFile wjets(ntpdir+"/"+setup+"/"+dir+"/wjets/output/wjets_all_0.root"); TFile others(ntpdir+"/"+setup+"/"+dir+"/others/output/others_all_0.root"); TFile sig(ntpdir+"/"+setup+"/"+dir+"/signal/"+TString(stop)+"/"+TString(neut)+"/output/"+dataset_name+"_0.root"); TH1D* TTBar= (TH1D*)ttbar.Get(MVA); TH1D* WJets= (TH1D*)wjets.Get(MVA); TH1D* Others= (TH1D*)others.Get(MVA); TH1D* signal= (TH1D*)sig.Get(MVA); TTBar->SetFillColor(40); TTBar->SetFillStyle(3001); TTBar->SetLineWidth(0.); signal->SetLineColor(kRed); signal->SetLineWidth(2.); WJets->SetFillColor(41); Others->SetFillColor(43); THStack *stack= new THStack("stack", ""); stack->Add(Others); stack->Add(WJets); stack->Add(TTBar); int nbins = TTBar->GetNbinsX(); double hmin = TTBar->GetXaxis()->GetBinLowEdge(1); double hmax = TTBar->GetXaxis()->GetBinUpEdge(nbins); TH1D* SoB = new TH1D("","",nbins,hmin,hmax); int max_bin; double cutvalue; double nsignal = signal->Integral(); SoB->SetLineColor(kBlue); SoB->SetLineWidth(2.); for(int b=1; b<=nbins; ++b){ //cout << "Bkg: " << TTBar->Integral(b,nbins+1) << endl; //cout << "Sig: " << signal->Integral(b,nbins+1) << endl; double sig_ = signal->Integral(b,nbins+1); double bkg_ = TTBar->Integral(b,nbins+1) + WJets->Integral(b,nbins+1) + Others->Integral(b,nbins+1); double SoSqrtB = calcSoSqrtB(sig_, bkg_ ); SoB->SetBinContent(b,SoSqrtB); } /* double bkgcut=0.; if (MLSP==150 && (MSTOP ==300 || MSTOP == 400 || MSTOP == 500 || MSTOP == 600 || MSTOP == 700 || MSTOP == 800)){ double binR1=TTBar->FindBin(0.25); double binR2=TTBar->FindBin(0.4); double binR3=TTBar->FindBin(0.5); double binR4=TTBar->FindBin(0.5); double binR5=TTBar->FindBin(0.4); double binR6=TTBar->FindBin(0.1); TH1F *histobackground=(TH1F*)TTBar->Clone(); histobackground->Add(WJets); histobackground->Add(Others); //histobackground->SetAxisRange(0.3,1,"X"); if (MSTOP==300) cout << TTBar->Integral(binR1,nbins+1)+Others->Integral(binR1,nbins+1)+WJets->Integral(binR1,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR1,nbins+1)) << endl; if (MSTOP==400) cout << histobackground->Integral(binR2,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR2,nbins+1)) << endl; if (MSTOP==500) cout << histobackground->Integral(binR3,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR3,nbins+1)) << endl; if (MSTOP==600) cout << histobackground->Integral(binR4,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR4,nbins+1)) << endl; if (MSTOP==700) cout << histobackground->Integral(binR5,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR5,nbins+1)) << endl; if (MSTOP==800) cout << histobackground->Integral(binR6,nbins+1) << " +/- " << sqrt(histobackground->Integral(binR6,nbins+1)) << endl; }*/ max_bin = maxbin(SoB); cutvalue = TTBar->GetBinLowEdge(max_bin); double sob = SoB->GetBinContent(max_bin); char cutval_[32]; snprintf(cutval_, 32, "%.1g", cutvalue); char fom_[32]; snprintf(fom_, 32, "%.2g", sob); char signal_[32]; snprintf(signal_, 32, "%.2g", nsignal); TLegendEntry *legge; TLegend *leg; leg = new TLegend(0.6,0.55,0.9,0.85); leg->SetFillStyle(0); leg->SetBorderSize(0); leg->SetTextSize(0.043); legge = leg->AddEntry(TTBar, "t#bar{t} + Jets", "F"); legge = leg->AddEntry(WJets, "W + Jets", "F"); legge = leg->AddEntry(Others, "Others", "F"); legge = leg->AddEntry(signal, "sig("+TString(stop)+","+TString(neut)+")", "l"); leg->SetFillColor(0); TCanvas c2("c2","c2",800,600); stack->Draw(""); signal->Draw("same"); stack->GetYaxis()->SetTitle("Entries"); stack->GetXaxis()->SetTitle("BDT output"); signal->GetXaxis()->SetRangeUser(-0.4,0.8); stack->GetXaxis()->SetRangeUser(-0.4,0.8); signal->SetMinimum(0.3); stack->SetMinimum(0.3); //signal->GetYaxis()->SetNdivisions(10); //stack->GetYaxis()->SetNdivisions(10); if(logbool) c2.SetLogy(); leg->Draw(); double maximobin=stack->GetMaximum(); double cutvalueplot = atof(TString(cutval_)); TLine *linea = new TLine(cutvalueplot,0,cutvalueplot,maximobin); linea->SetLineWidth(2); linea->SetLineColor(4); if (lineacut) linea->Draw(); TLatex l1; l1.SetTextAlign(12); l1.SetTextSize(0.04); l1.SetNDC(); l1.DrawLatex(0.155, 0.98, "CMS Simulation, 20 fb^{-1}"); l1.DrawLatex(0.7, 0.98, "#sqrt{s} = 8 TeV"); TLatex l2; l2.SetTextAlign(12); l2.SetTextSize(0.04); l2.SetNDC(); l2.DrawLatex(0.22, 0.3, "#color[2]{Optimal cut: \t "+TString(cutval_)+"}"); l2.DrawLatex(0.22, 0.25, "#color[2]{FOM@cut: \t "+TString(fom_)+"}"); l2.DrawLatex(0.22, 0.2, "#color[2]{Tot. N_{Signal}: \t "+TString(signal_)+"}"); if (!logbool) c2.Print("~/www/STOP/BDTTraining/8TeV/"+datasetnombre+"/BestSet/"+TString(MVA)+"/histo_"+TString(stop)+"_"+TString(neut)+"_lineal.png"); if(logbool) c2.Print("~/www/STOP/BDTTraining/8TeV/"+datasetnombre+"/BestSet/"+TString(MVA)+"/histo_"+TString(stop)+"_"+TString(neut)+"_log.png"); }
void fitTF1(TCanvas *canvas, TH1F h, double XMIN_, double XMAX_, double dX_, double params[], Color_t LC_=kBlack) { //double& FWHM_, double& x0_, double& x1_, double& x2_, double& y0_, double& y1_, double& INT_, double& YIELD_) { //TCanvas* fitTF1(TH1F h, double HSCALE_, double XMIN_, double XMAX_) { //TF1* fitTF1(TH1F h, double HSCALE_, double XMIN_, double XMAX_) { gROOT->ForceStyle(); RooMsgService::instance().setSilentMode(kTRUE); for(int i=0;i<2;i++) RooMsgService::instance().setStreamStatus(i,kFALSE); //TCanvas *canvas = new TCanvas(TString::Format("canvas_%s",h.GetName()),TString::Format("canvas_%s",h.GetName()),1800,1200); RooDataHist *RooHistFit = 0; RooAddPdf *model = 0; RooWorkspace w = RooWorkspace("w","workspace"); RooRealVar x("mbbReg","mbbReg",XMIN_,XMAX_); RooRealVar kJES("CMS_scale_j","CMS_scale_j",1,0.9,1.1); RooRealVar kJER("CMS_res_j","CMS_res_j",1,0.8,1.2); kJES.setConstant(kTRUE); kJER.setConstant(kTRUE); TString hname = h.GetName(); RooHistFit = new RooDataHist("fit_"+hname,"fit_"+hname,x,&h); RooRealVar YieldVBF = RooRealVar("yield_"+hname,"yield_"+hname,h.Integral()); RooRealVar m("mean_"+hname,"mean_"+hname,125,100,150); RooRealVar s("sigma_"+hname,"sigma_"+hname,12,3,30); RooFormulaVar mShift("mShift_"+hname,"@0*@1",RooArgList(m,kJES)); RooFormulaVar sShift("sShift_"+hname,"@0*@1",RooArgList(m,kJER)); RooRealVar a("alpha_"+hname,"alpha_"+hname,1,-10,10); RooRealVar n("exp_"+hname,"exp_"+hname,1,0,100); RooRealVar b0("b0_"+hname,"b0_"+hname,0.5,0.,1.); RooRealVar b1("b1_"+hname,"b1_"+hname,0.5,0.,1.); RooRealVar b2("b2_"+hname,"b2_"+hname,0.5,0.,1.); RooRealVar b3("b3_"+hname,"b3_"+hname,0.5,0.,1.); RooBernstein bkg("signal_bkg_"+hname,"signal_bkg_"+hname,x,RooArgSet(b0,b1,b2)); RooRealVar fsig("fsig_"+hname,"fsig_"+hname,0.7,0.0,1.0); RooCBShape sig("signal_gauss_"+hname,"signal_gauss_"+hname,x,mShift,sShift,a,n); model = new RooAddPdf("signal_model_"+hname,"signal_model_"+hname,RooArgList(sig,bkg),fsig); //RooFitResult *res = model->fitTo(*RooHistFit,RooFit::Save(),RooFit::SumW2Error(kFALSE),"q"); model->fitTo(*RooHistFit,RooFit::Save(),RooFit::SumW2Error(kFALSE),"q"); //res->Print(); //model->Print(); canvas->cd(); canvas->SetTopMargin(0.1); RooPlot *frame = x.frame(); // no scale RooHistFit->plotOn(frame); model->plotOn(frame,RooFit::LineColor(LC_),RooFit::LineWidth(2));//,RooFit::LineStyle(kDotted)); model->plotOn(frame,RooFit::Components(bkg),RooFit::LineColor(LC_),RooFit::LineWidth(2),RooFit::LineStyle(kDashed)); // with scale // RooHistFit->plotOn(frame,RooFit::Normalization(HSCALE_,RooAbsReal::NumEvent)); // model->plotOn(frame,RooFit::Normalization(HSCALE_,RooAbsReal::NumEvent),RooFit::LineWidth(1)); // model->plotOn(frame,RooFit::Components(bkg),RooFit::LineColor(kBlue),RooFit::LineWidth(1),RooFit::LineStyle(kDashed),RooFit::Normalization(HSCALE_,RooAbsReal::NumEvent)); frame->GetXaxis()->SetLimits(50,200); frame->GetXaxis()->SetNdivisions(505); frame->GetXaxis()->SetTitle("M_{b#bar{b}} (GeV)"); frame->GetYaxis()->SetTitle("Events"); frame->Draw(); h.SetFillColor(kGray); h.Draw("hist,same"); frame->Draw("same"); gPad->RedrawAxis(); TF1 *tmp = model->asTF(x,fsig,x); //tmp->Print(); double y0_ = tmp->GetMaximum(); double x0_ = tmp->GetMaximumX(); double x1_ = tmp->GetX(y0_/2.,XMIN_,x0_); double x2_ = tmp->GetX(y0_/2.,x0_,XMAX_); double FWHM_ = x2_-x1_; double INT_ = tmp->Integral(XMIN_,XMAX_); double YIELD_= YieldVBF.getVal(); double y1_ = dX_*0.5*y0_*(YieldVBF.getVal()/tmp->Integral(XMIN_,XMAX_)); params[0] = x0_; params[1] = x1_; params[2] = x2_; params[3] = y0_; params[4] = y1_; params[5] = FWHM_; params[6] = INT_; params[7] = YIELD_; //cout<<"Int = "<<tmp->Integral(XMIN_,XMAX_)<<", Yield = "<<YieldVBF.getVal()<<", y0 = "<<y0_<<", y1 = "<<y1_ <<", x0 = "<< x0_ << ", x1 = "<<x1_<<", x2 = "<<x2_<<", FWHM = "<<FWHM_<<endl; TLine ln = TLine(x1_,y1_,x2_,y1_); ln.SetLineColor(kMagenta+3); ln.SetLineStyle(7); ln.SetLineWidth(2); ln.Draw(); canvas->Update(); canvas->SaveAs("testC.png"); // tmp->Delete(); // frame->Delete(); // res->Delete(); // TF1 *f1 = model->asTF(x,fsig,x); // return f1; ////tmp->Delete(); ////ln->Delete(); ////model->Delete(); ////RooHistFit->Delete(); ////w->Delete(); ////YieldVBF->Delete(); ////frame->Delete(); ////res->Delete(); //delete tmp; //delete ln; //delete model; //delete RooHistFit; //delete w; //delete YieldVBF; //delete frame; //delete res; // return canvas; }
void mp3player() { // Drawing a mp3 type music player, using ROOT geometry class. // Name: mp3player.C // Author: Eun Young Kim, Dept. of Physics, Univ. of Seoul // Reviewed by Sunman Kim ([email protected]) // Supervisor: Prof. Inkyu Park ([email protected]) // // How to run: .x mp3player.C in ROOT terminal, then use OpenGL // // This macro was created for the evaluation of Computational Physics course in 2006. // We thank to Prof. Inkyu Park for his special lecture on ROOT and to all of ROOT team // TGeoManager *geom=new TGeoManager("geom","My first 3D geometry"); //materials TGeoMaterial *vacuum=new TGeoMaterial("vacuum",0,0,0); TGeoMaterial *Fe=new TGeoMaterial("Fe",55.845,26,7.87); //create media TGeoMedium *Iron=new TGeoMedium("Iron",1,Fe); TGeoMedium *Air=new TGeoMedium("Vacuum",0,vacuum); //create volume TGeoVolume *top=geom->MakeBox("top",Air,800,800,800); geom->SetTopVolume(top); geom->SetTopVisible(0); // If you want to see the boundary, please input the number, 1 instead of 0. // Like this, geom->SetTopVisible(1); TGeoVolume *b1=geom->MakeBox("b1",Iron,100,200,600); b1->SetLineColor(2); TGeoVolume *b2=geom->MakeTubs("b2",Iron,0,50,200,0,90); b2->SetLineColor(10); TGeoVolume *b3=geom->MakeTubs("b3",Iron,0,50,200,90,180); b3->SetLineColor(10); TGeoVolume *b4=geom->MakeTubs("b4",Iron,0,50,200,180,270); b4->SetLineColor(10); TGeoVolume *b5=geom->MakeTubs("b5",Iron,0,50,200,270,360); b5->SetLineColor(10); TGeoVolume *b6=geom->MakeTubs("b6",Iron,0,50,600,0,90); b6->SetLineColor(10); TGeoVolume *b7=geom->MakeTubs("b7",Iron,0,50,600,90,180); b7->SetLineColor(10); TGeoVolume *b8=geom->MakeTubs("b8",Iron,0,50,600,180,270); b8->SetLineColor(10); TGeoVolume *b9=geom->MakeTubs("b9",Iron,0,50,600,270,360); b9->SetLineColor(10); TGeoVolume *b10=geom->MakeTubs("b10",Iron,0,50,100,0,90); b10->SetLineColor(10); TGeoVolume *b11=geom->MakeTubs("b11",Iron,0,50,100,90,180); b11->SetLineColor(10); TGeoVolume *b12=geom->MakeTubs("b12",Iron,0,50,100,180,270); b12->SetLineColor(10); TGeoVolume *b13=geom->MakeTubs("b13",Iron,0,50,100,270,360); b13->SetLineColor(10); TGeoVolume *b14=geom->MakeBox("b14",Iron,100,50,450); b14->SetLineColor(10); TGeoVolume *b15=geom->MakeBox("b15",Iron,50,200,600); b15->SetLineColor(10); TGeoVolume *b16=geom->MakeSphere("b16",Iron,0,50,0,90,0,90); b16->SetLineColor(10); TGeoVolume *b17=geom->MakeSphere("b17",Iron,0,50,0,90,270,360); b17->SetLineColor(10); TGeoVolume *b18=geom->MakeSphere("b18",Iron,0,50,0,90,180,270); b18->SetLineColor(10); TGeoVolume *b19=geom->MakeSphere("b19",Iron,0,50,0,90,90,180); b19->SetLineColor(10); TGeoVolume *b20=geom->MakeTube("b20",Iron,50,150,150); b20->SetLineColor(17); TGeoVolume *b21=geom->MakeSphere("b21",Iron,0,50,90,180,0,90); b21->SetLineColor(10); TGeoVolume *b22=geom->MakeSphere("b22",Iron,0,50,90,180,270,360); b22->SetLineColor(10); TGeoVolume *b23=geom->MakeSphere("b23",Iron,0,50,90,180,180,270); b23->SetLineColor(10); TGeoVolume *b24=geom->MakeSphere("b24",Iron,0,50,90,180,90,180); b24->SetLineColor(10); TGeoVolume *b25=geom->MakeTube("b25",Iron,51,54,150); b25->SetLineColor(17); TGeoVolume *b26=geom->MakeTube("b26",Iron,56,59,150); b26->SetLineColor(17); TGeoVolume *b27=geom->MakeTube("b27",Iron,61,64,150); b27->SetLineColor(17); TGeoVolume *b28=geom->MakeTube("b28",Iron,66,69,150); b28->SetLineColor(17); TGeoVolume *b29=geom->MakeTube("b29",Iron,71,74,150); b29->SetLineColor(17); TGeoVolume *b30=geom->MakeTube("b30",Iron,76,79,150); b30->SetLineColor(17); TGeoVolume *b31=geom->MakeTube("b31",Iron,81,84,150); b31->SetLineColor(17); TGeoVolume *b32=geom->MakeTube("b32",Iron,86,89,150); b32->SetLineColor(17); TGeoVolume *b33=geom->MakeTube("b33",Iron,91,94,150); b33->SetLineColor(17); TGeoVolume *b34=geom->MakeTube("b34",Iron,96,99,150); b34->SetLineColor(17); TGeoVolume *b35=geom->MakeTube("b35",Iron,101,104,150); b35->SetLineColor(17); TGeoVolume *b36=geom->MakeTube("b36",Iron,106,109,150); b36->SetLineColor(17); TGeoVolume *b37=geom->MakeTube("b37",Iron,111,114,150); b37->SetLineColor(17); TGeoVolume *b38=geom->MakeTube("b38",Iron,116,119,150); b38->SetLineColor(17); TGeoVolume *b39=geom->MakeTube("b39",Iron,121,124,150); b39->SetLineColor(17); TGeoVolume *b40=geom->MakeTube("b40",Iron,126,129,150); b40->SetLineColor(17); TGeoVolume *b41=geom->MakeTube("b41",Iron,131,134,150); b41->SetLineColor(17); TGeoVolume *b42=geom->MakeTube("b42",Iron,136,139,150); b42->SetLineColor(17); TGeoVolume *b43=geom->MakeTube("b43",Iron,141,144,150); b43->SetLineColor(17); TGeoVolume *b44=geom->MakeTube("b44",Iron,146,149,150); b44->SetLineColor(17); TGeoVolume *b45=geom->MakeTube("b45",Iron,0,25,150); b45->SetLineColor(10); TGeoVolume *b46=geom->MakeTube("b46",Iron,25,30,150); b46->SetLineColor(17); TGeoVolume *b47=geom->MakeBox("b47",Iron,140,194,504); b47->SetLineColor(32); TGeoVolume *b48=geom->MakeBox("b48",Iron,150,176,236); b48->SetLineColor(37); TGeoVolume *b49=geom->MakeBox("b49",Iron,150,2,236); b49->SetLineColor(20); top->AddNodeOverlap(b49,49,new TGeoTranslation(-2,179,-150)); TGeoVolume *b50=geom->MakeBox("b50",Iron,150,2,236); b50->SetLineColor(20); top->AddNodeOverlap(b50,50,new TGeoTranslation(-2,-179,-150)); TGeoVolume *b51=geom->MakeBox("b51",Iron,150,176,2); b51->SetLineColor(20); top->AddNodeOverlap(b51,51,new TGeoTranslation(-2,0,89)); TGeoVolume *b52=geom->MakeBox("b52",Iron,150,176,2); b52->SetLineColor(20); top->AddNodeOverlap(b52,52,new TGeoTranslation(-2,0,-389)); TGeoVolume *b53=geom->MakeBox("b53",Iron,150,200,90); b53->SetLineColor(10); top->AddNodeOverlap(b53,53,new TGeoTranslation(0,0,-510)); TGeoVolume *b54=geom->MakeBox("b54",Iron,15,254,600); b54->SetLineColor(37); top->AddNodeOverlap(b54,54,new TGeoTranslation(25,0,0)); TGeoVolume *b55=geom->MakeTubs("b55",Iron,0,54,15,270,360); b55->SetLineColor(37); top->AddNodeOverlap(b55,55,new TGeoCombiTrans(25,200,-600,new TGeoRotation("r1",90,90,0))); TGeoVolume *b56=geom->MakeTubs("b56",Iron,0,54,15,180,270); b56->SetLineColor(37); top->AddNodeOverlap(b56,56,new TGeoCombiTrans(25,-200,-600,new TGeoRotation("r1",90,90,0))); TGeoVolume *b57=geom->MakeTubs("b57",Iron,0,54,15,0,90); b57->SetLineColor(37); top->AddNodeOverlap(b57,57,new TGeoCombiTrans(25,200,600,new TGeoRotation("r1",90,90,0))); TGeoVolume *b58=geom->MakeTubs("b58",Iron,0,54,15,90,180); b58->SetLineColor(37); top->AddNodeOverlap(b58,58,new TGeoCombiTrans(25,-200,600,new TGeoRotation("r1",90,90,0))); //TGeoVolume *b59=geom->MakePgon("b59",Iron,100,100,100,100); //b59->SetLineColor(37); //top->AddNodeOverlap(b59,59,new TGeoCombiTrans(200,200,100,new TGeoRotation("r1",90,90,0))); //IAudid TGeoVolume *b61=geom->MakeBox("b61",Iron,5,19,150); b61->SetLineColor(38); top->AddNodeOverlap(b61,61,new TGeoCombiTrans(-4,-87,-495,new TGeoRotation("r1",90,90,30))); TGeoVolume *b62=geom->MakeBox("b62",Iron,5,19,150); b62->SetLineColor(38); top->AddNodeOverlap(b62,62,new TGeoCombiTrans(-4,-65,-495,new TGeoRotation("r1",90,90,330))); //u TGeoVolume *b63=geom->MakeBox("b63",Iron,5,15,150); b63->SetLineColor(38); top->AddNodeOverlap(b63,63,new TGeoCombiTrans(-4,-40,-497,new TGeoRotation("r1",90,90,0))); TGeoVolume *b64=geom->MakeBox("b64",Iron,5,15,150); b64->SetLineColor(38); top->AddNodeOverlap(b64,64,new TGeoCombiTrans(-4,-10,-497,new TGeoRotation("r1",90,90,0))); TGeoVolume *b65=geom->MakeTubs("b65",Iron,7,17,150,0,180); b65->SetLineColor(38); top->AddNodeOverlap(b65,65,new TGeoCombiTrans(-4,-25,-490,new TGeoRotation("r1",90,90,0))); //D TGeoVolume *b66=geom->MakeBox("b66",Iron,5,19,150); b66->SetLineColor(38); top->AddNodeOverlap(b66,66,new TGeoCombiTrans(-4,10,-495,new TGeoRotation("r1",90,90,0))); TGeoVolume *b67=geom->MakeTubs("b67",Iron,10,20,150,230,480); b67->SetLineColor(38); top->AddNodeOverlap(b67,67,new TGeoCombiTrans(-4,23,-495,new TGeoRotation("r1",90,90,0))); //I TGeoVolume *b68=geom->MakeBox("b68",Iron,5,20,150); b68->SetLineColor(38); top->AddNodeOverlap(b68,68,new TGeoCombiTrans(-4,53,-495,new TGeoRotation("r1",90,90,0))); //O TGeoVolume *b69=geom->MakeTubs("b69",Iron,10,22,150,0,360); b69->SetLineColor(38); top->AddNodeOverlap(b69,69,new TGeoCombiTrans(-4,85,-495,new TGeoRotation("r1",90,90,0))); // I TGeoVolume *b60=geom->MakeTube("b60",Iron,0,10,150); b60->SetLineColor(38); top->AddNodeOverlap(b60,60,new TGeoCombiTrans(-4,-120,-550,new TGeoRotation("r1",90,90,0))); TGeoVolume *b70=geom->MakeBox("b70",Iron,2,19,150); b70->SetLineColor(38); top->AddNodeOverlap(b70,70,new TGeoCombiTrans(-4,-114,-495,new TGeoRotation("r1",90,90,0))); TGeoVolume *b71=geom->MakeBox("b71",Iron,2,19,150); b71->SetLineColor(38); top->AddNodeOverlap(b71,71,new TGeoCombiTrans(-4,-126,-495,new TGeoRotation("r1",90,90,0))); TGeoVolume *b72=geom->MakeBox("b72",Iron,8,2,150); b72->SetLineColor(38); top->AddNodeOverlap(b72,72,new TGeoCombiTrans(-4,-120,-515,new TGeoRotation("r1",90,90,0))); TGeoVolume *b73=geom->MakeBox("b73",Iron,8,2,150); b73->SetLineColor(38); top->AddNodeOverlap(b73,73,new TGeoCombiTrans(-4,-120,-475,new TGeoRotation("r1",90,90,0))); // button TGeoVolume *b74=geom->MakeBox("b74",Iron,35,250,70); b74->SetLineColor(38); top->AddNodeOverlap(b74,74,new TGeoCombiTrans(-25,10,-60,new TGeoRotation("r1",0,0,0))); TGeoVolume *b75=geom->MakeBox("b75",Iron,35,250,35); b75->SetLineColor(38); top->AddNodeOverlap(b75,75,new TGeoCombiTrans(-25,10,-175,new TGeoRotation("r1",0,0,0))); TGeoVolume *b76=geom->MakeBox("b76",Iron,35,250,35); b76->SetLineColor(38); top->AddNodeOverlap(b76,76,new TGeoCombiTrans(-25,10,55,new TGeoRotation("r1",0,0,0))); TGeoVolume *b77=geom->MakeTubs("b77",Iron,0,70,250,180,270); b77->SetLineColor(38); top->AddNodeOverlap(b77,77,new TGeoCombiTrans(10,10,-210,new TGeoRotation("r1",0,90,0))); TGeoVolume *b78=geom->MakeTubs("b78",Iron,0,70,250,90,180); b78->SetLineColor(38); top->AddNodeOverlap(b78,78,new TGeoCombiTrans(10,10,90,new TGeoRotation("r1",0,90,0))); //Hold TGeoVolume *b79=geom->MakeBox("b79",Iron,40,250,150); b79->SetLineColor(10); top->AddNodeOverlap(b79,79,new TGeoCombiTrans(60,0,450,new TGeoRotation("r1",0,0,0))); TGeoVolume *b80=geom->MakeTubs("b80",Iron,50,100,250,180,270); b80->SetLineColor(10); top->AddNodeOverlap(b80,80,new TGeoCombiTrans(10,0,350,new TGeoRotation("r1",0,90,0))); TGeoVolume *b81=geom->MakeTubs("b81",Iron,50,100,250,90,180); b81->SetLineColor(10); top->AddNodeOverlap(b81,81,new TGeoCombiTrans(10,0,400,new TGeoRotation("r1",0,90,0))); TGeoVolume *b82=geom->MakeBox("b82",Iron,30,250,150); b82->SetLineColor(10); top->AddNodeOverlap(b82,82,new TGeoCombiTrans(-70,0,450,new TGeoRotation("r1",0,0,0))); TGeoVolume *b83=geom->MakeBox("b83",Iron,30,250,60); b83->SetLineColor(10); top->AddNodeOverlap(b83,83,new TGeoCombiTrans(-20,0,540,new TGeoRotation("r1",0,0,0))); TGeoVolume *b85=geom->MakeTubs("b85",Iron,0,40,240,180,270); b85->SetLineColor(38); top->AddNodeOverlap(b85,85,new TGeoCombiTrans(10,10,370,new TGeoRotation("r1",0,90,0))); TGeoVolume *b84=geom->MakeTubs("b84",Iron,0,40,240,90,180); b84->SetLineColor(38); top->AddNodeOverlap(b84,84,new TGeoCombiTrans(10,10,400,new TGeoRotation("r1",0,90,0))); TGeoVolume *b86=geom->MakeBox("b86",Iron,20,240,20); b86->SetLineColor(38); top->AddNodeOverlap(b86,86,new TGeoCombiTrans(-10,10,380,new TGeoRotation("r1",0,0,0))); TGeoVolume *b87=geom->MakeBox("b87",Iron,20,250,10); b87->SetLineColor(35); top->AddNodeOverlap(b87,87,new TGeoCombiTrans(-10,20,385,new TGeoRotation("r1",0,0,0))); TGeoVolume *b88=geom->MakeBox("b88",Iron,100,220,600); b88->SetLineColor(10); top->AddNodeOverlap(b88,88,new TGeoCombiTrans(0,-30,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b89=geom->MakeTube("b89",Iron,25,95,650); b89->SetLineColor(10); top->AddNodeOverlap(b89,89,new TGeoCombiTrans(0,-60,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b90=geom->MakeTube("b90",Iron,25,95,650); b90->SetLineColor(10); top->AddNodeOverlap(b90,90,new TGeoCombiTrans(0,60,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b91=geom->MakeBox("b91",Iron,40,200,650); b91->SetLineColor(10); top->AddNodeOverlap(b91,91,new TGeoCombiTrans(70,0,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b92=geom->MakeBox("b92",Iron,100,50,650); b92->SetLineColor(10); top->AddNodeOverlap(b92,92,new TGeoCombiTrans(0,150,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b93=geom->MakeBox("b93",Iron,100,50,650); b93->SetLineColor(10); top->AddNodeOverlap(b93,93,new TGeoCombiTrans(0,-150,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b94=geom->MakeBox("b94",Iron,40,200,650); b94->SetLineColor(10); top->AddNodeOverlap(b94,94,new TGeoCombiTrans(-70,0,0,new TGeoRotation("r1",0,0,0))); TGeoVolume *b95=geom->MakeTube("b95",Iron,25,35,650); b95->SetLineColor(1); top->AddNodeOverlap(b95,95,new TGeoCombiTrans(0,-60,-10,new TGeoRotation("r1",0,0,0))); TGeoVolume *b96=geom->MakeTube("b96",Iron,25,35,650); b96->SetLineColor(1); top->AddNodeOverlap(b96,96,new TGeoCombiTrans(0,60,-10,new TGeoRotation("r1",0,0,0))); //usb TGeoVolume *b97=geom->MakeBox("b97",Iron,70,70,600); b97->SetLineColor(17); top->AddNodeOverlap(b97,97,new TGeoCombiTrans(0,0,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b98=geom->MakeTubs("b98",Iron,0,50,600,0,90); b98->SetLineColor(17); top->AddNodeOverlap(b98,98,new TGeoCombiTrans(20,60,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b99=geom->MakeTubs("b99",Iron,0,50,600,180,270); b99->SetLineColor(17); top->AddNodeOverlap(b99,99,new TGeoCombiTrans(-20,-60,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b100=geom->MakeTubs("b100",Iron,0,50,600,90,180); b100->SetLineColor(17); top->AddNodeOverlap(b100,100,new TGeoCombiTrans(-20,60,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b101=geom->MakeTubs("b101",Iron,0,50,600,270,360); b101->SetLineColor(17); top->AddNodeOverlap(b101,101,new TGeoCombiTrans(20,-60,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b102=geom->MakeBox("b102",Iron,20,110,600); b102->SetLineColor(17); top->AddNodeOverlap(b102,102,new TGeoCombiTrans(0,0,57,new TGeoRotation("r1",0,0,0))); TGeoVolume *b103=geom->MakeBox("b103",Iron,15,200,600); b103->SetLineColor(37); top->AddNodeOverlap(b103,103,new TGeoCombiTrans(25,0,57,new TGeoRotation("r1",0,0,0))); //AddNode top->AddNodeOverlap(b1,1,new TGeoTranslation(0,0,0)); top->AddNodeOverlap(b2,2,new TGeoCombiTrans(100,0,600,new TGeoRotation("r1",0,90,0))); top->AddNodeOverlap(b3,3,new TGeoCombiTrans(-100,0,600,new TGeoRotation("r1",0,90,0))); top->AddNodeOverlap(b4,4,new TGeoCombiTrans(-100,0,-600,new TGeoRotation("r1",0,90,0))); top->AddNodeOverlap(b5,5,new TGeoCombiTrans(100,0,-600,new TGeoRotation("r1",0,90,0))); top->AddNodeOverlap(b6,6,new TGeoCombiTrans(100,200,0,new TGeoRotation("r1",0,0,0))); top->AddNodeOverlap(b7,7,new TGeoCombiTrans(-100,200,0,new TGeoRotation("r1",0,0,0))); top->AddNodeOverlap(b8,8,new TGeoCombiTrans(-100,-200,0,new TGeoRotation("r1",0,0,0))); top->AddNodeOverlap(b9,9,new TGeoCombiTrans(100,-200,0,new TGeoRotation("r1",0,0,0))); top->AddNodeOverlap(b10,10,new TGeoCombiTrans(0,200,600,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b11,11,new TGeoCombiTrans(0,-200,600,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b12,12,new TGeoCombiTrans(0,-200,-600, new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b13,13,new TGeoCombiTrans(0,200,-600,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b14,14,new TGeoTranslation(0,200,-150)); top->AddNodeOverlap(b15,15,new TGeoTranslation(100,0,0)); top->AddNodeOverlap(b16,16,new TGeoCombiTrans(100,200,600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b17,17,new TGeoCombiTrans(100,-200,600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b18,18,new TGeoCombiTrans(-100,-200,600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b19,19,new TGeoCombiTrans(-100,200,600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b20,20,new TGeoCombiTrans(-3,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b21,21,new TGeoCombiTrans(100,200,-600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b22,22,new TGeoCombiTrans(100,-200,-600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b23,23,new TGeoCombiTrans(-100,-200,-600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b24,24,new TGeoCombiTrans(-100,200,-600,new TGeoRotation("r2",0,0,0))); top->AddNodeOverlap(b25,25,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b26,26,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b27,27,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b28,28,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b29,29,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b30,30,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b31,31,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b32,32,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b33,33,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b34,34,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b35,35,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b36,36,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b37,37,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b38,38,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b39,39,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b40,40,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b41,41,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b42,42,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b43,43,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b44,44,new TGeoCombiTrans(-9,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b45,45,new TGeoCombiTrans(-20,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b46,46,new TGeoCombiTrans(-25,0,350,new TGeoRotation("r2",90,90,0))); top->AddNodeOverlap(b47,47,new TGeoTranslation(5,0,85)); top->AddNodeOverlap(b48,48,new TGeoTranslation(-2,0,-150)); geom->CloseGeometry(); TCanvas *can=new TCanvas("can","My virtual laboratory",800,800); //Mp3 TPad *pad=new TPad("pad","Pad",0,0.5,0.5,1); pad->SetFillColor(1); pad->Draw(); pad->cd(); top->Draw(); //Sound can->cd(); TPad *pad2=new TPad("pad2","Pad2",0.5,0.5,1,1); pad2->SetFillColor(10); pad2->Draw(); pad2->cd(); TPaveText *pt = new TPaveText(0.4,0.90,0.6,0.95,"br"); pt->SetFillColor(30); pt->AddText(0.5,0.5,"Musics"); pt->Draw(); TLatex Tex; Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.81,"Mariah Carey - Shake it off"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.71,"Alicia keys - If I ain't got you"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.61,"Michael Jackson - Billie Jean"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.51,"Christina Milian - Am to Pm"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.41,"Zapp&Roger - Slow and Easy"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.31,"Black Eyes Peas - Let's get retarded"); Tex.SetTextSize(0.04); Tex.SetTextColor(31); Tex.DrawLatex(0.3,0.21,"Bosson - One in a Millin"); Tex.SetTextSize(0.04); Tex.SetTextColor(15); Tex.DrawLatex(0.2,0.11,"Click Button!! You Can Listen to Musics"); TButton *but1=new TButton("","Sound(1)",0.2,0.8,0.25,0.85); but1->Draw(); but1->SetFillColor(29); TButton *but2=new TButton("","Sound(2)",0.2,0.7,0.25,.75); but2->Draw(); but2->SetFillColor(29); TButton *but3=new TButton("","Sound(3)",0.2,0.6,0.25,0.65); but3->Draw(); but3->SetFillColor(29); TButton *but4=new TButton("","Sound(4)",0.2,0.5,0.25,0.55); but4->Draw(); but4->SetFillColor(29); TButton *but5=new TButton("","Sound(5)",0.2,0.4,0.25,0.45); but5->Draw(); but5->SetFillColor(29); TButton *but6=new TButton("","Sound(6)",0.2,0.3,0.25,0.35); but6->Draw(); but6->SetFillColor(29); TButton *but7=new TButton("","Sound(7)",0.2,0.2,0.25,0.25); but7->Draw(); but7->SetFillColor(29); pad->cd(); //introduction can->cd(); TPad *pad3=new TPad("pad3","Pad3",0,0,1,0.5); pad3->SetFillColor(10); pad3->Draw(); pad3->cd(); TImage *image=TImage::Open("mp3.jpg"); image->Draw(); TPad *pad4=new TPad("pad4","Pad4",0.6,0.1,0.9,0.9); pad4->SetFillColor(1); pad4->Draw(); pad4->cd(); TLine L; Tex.SetTextSize(0.08); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.85,"IAudio U3 Mp3 Player"); L.SetLineColor(10); L.SetLineWidth(3); L.DrawLine(0.05, 0.83,0.90, 0.83); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.75,"+ Color LCD"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.65,"+ 60mW High Generating Power"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.55,"+ GUI Theme Skin"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.45,"+ Noble White&Black"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.35,"+ Text Viewer+Image Viewer"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.25,"+ 20 Hours Playing"); Tex.SetTextSize(0.06); Tex.SetTextColor(10); Tex.DrawLatex(0.06,0.15,"+ The Best Quality of Sound"); pad->cd(); }
void plot() { TGraph * FWHM = new TGraph( "plot.txt" , "%lg %lg %*lg %*lg" ); TGraph * FWTM = new TGraph( "plot.txt" , "%lg %*lg %lg %*lg" ); TGraph * FWFM = new TGraph( "plot.txt" , "%lg %*lg %*lg %lg" ); TGraph * ratioTH = new TGraph(); TGraph * ratioFH = new TGraph(); ratioTH->SetName("ratioTH"); ratioFH->SetName("ratioFH"); double * x = FWHM->GetX(); double * yH = FWHM->GetY(); double * yT = FWTM->GetY(); double * yF = FWFM->GetY(); for ( int i = 0 ; i < FWHM->GetN() ; i++ ) { ratioTH->SetPoint( i , x[i] , yT[i]/yH[i] ); ratioFH->SetPoint( i , x[i] , yF[i]/yH[i] ); } ratioTH->SetTitle("Gaussianity"); ratioTH->GetXaxis()->SetTitle("Energy Width [us]"); ratioTH->SetMarkerStyle(20); ratioTH->SetMarkerColor(kViolet+2); ratioTH->SetMarkerSize(1.5); ratioTH->SetLineColor(kViolet+2); ratioFH->SetMarkerStyle(29); ratioFH->SetMarkerColor(kYellow+2); ratioFH->SetMarkerSize(1.5); ratioFH->SetLineColor(kYellow+2); ratioTH->GetYaxis()->SetRangeUser(1,6); FWHM->SetTitle("Resolution"); FWHM->GetYaxis()->SetRangeUser(0,17); FWHM->GetYaxis()->SetTitle("[keV]"); FWHM->GetXaxis()->SetTitle("Energy Width [us]"); FWHM->SetMarkerStyle(33); FWHM->SetMarkerColor(kGreen+3); FWHM->SetMarkerSize(1.5); FWHM->SetLineColor(kGreen+3); FWTM->SetMarkerStyle(22); FWTM->SetMarkerColor(kBlue); FWTM->SetMarkerSize(1.5); FWTM->SetLineColor(kBlue); FWFM->SetMarkerStyle(23); FWFM->SetMarkerColor(kRed); FWFM->SetMarkerSize(1.5); FWFM->SetLineColor(kRed); TCanvas * can = new TCanvas("can","can",1); can->Divide(2,1); can->cd(1); gPad->SetGrid(); FWHM->Draw("AP"); FWTM->Draw("PSAME"); FWFM->Draw("PSAME"); TLegend * leg = new TLegend(0.24,0.77,0.42,0.88); leg->SetTextAlign(22); leg->SetTextSize(0.037); leg->AddEntry(FWHM,"FWHM","p"); leg->AddEntry(FWTM,"FWTM","p"); leg->AddEntry(FWFM,"FWFM","p"); leg->Draw(); can->cd(2); gPad->SetGrid(); ratioTH->Draw("AP"); ratioFH->Draw("PSAME"); TLine * lineTH = new TLine( ratioTH->GetXaxis()->GetXmin() , 1.82 , ratioTH->GetXaxis()->GetXmax() , 1.82 ); TLine * lineFH = new TLine( ratioTH->GetXaxis()->GetXmin() , 2.38 , ratioTH->GetXaxis()->GetXmax() , 2.38 ); lineTH->SetLineWidth(2); lineTH->SetLineStyle(9); lineTH->SetLineColor(kViolet+2); lineFH->SetLineWidth(2); lineFH->SetLineStyle(9); lineFH->SetLineColor(kYellow+2); lineTH->Draw(); lineFH->Draw(); TLegend * leg2 = new TLegend(0.14,0.77,0.45,0.88); leg2->SetTextAlign(22); leg2->SetTextSize(0.037); leg2->AddEntry(ratioTH,"FWTM/FWHM","p"); leg2->AddEntry(ratioFH,"FWFM/FWHM","p"); leg2->Draw(); return; }
void TPCompare() { Int_t runn = 204292; Int_t answ; Int_t gainValues[kGains] = {12, 6, 1}; TH1F* hRat126_1 = new TH1F("hRap126_1",Form("EE Ratio 12/6 run %i", runn),100,1.86,2.06); TH1F* hRat121_1 = new TH1F("hRap121_1",Form("EE Ratio 12/1 run %i", runn),100,10.5,11.5); TH1F* hRat126_2 = new TH1F("hRap126_2","EE Ratio 12/6 Reference : run 192043",100,1.86,2.06); TH1F* hRat121_2 = new TH1F("hRap121_2","EE Ratio 12/1 Reference : run 192043",100,10.5,11.5); TH2F* hCorr126 = new TH2F("hCorr126",Form("EE Gain ratio x12/x6 correlation _ run %i", runn), 50,1.86, 2.06,50, 1.86, 2.06); TH1F* hDiff126 = new TH1F("hDiff126",Form("EE Gain ratio x12/x6 difference _ run %i", runn), 50, -0.025, 0.025); TH2F* hCorr121 = new TH2F("hCorr121",Form("EE Gain ratio x12/x1 correlation _ run %i", runn), 50,10.5, 11.5,50, 10.5, 11.5); TH1F* hDiff121 = new TH1F("hDiff121",Form("EE Gain ratio x12/x1 difference _ run %i", runn), 50, -0.025, 0.025); TCanvas cPrint("cPrint"); ifstream fRatio1, fRatio2; fRatio1.open(Form("TP_GainratioEE_%i.txt",runn)); fRatio2.open("TP_GainratioEE_192043.txt"); Int_t ixtal; Double_t Rat126_1, Rat126_2, Rat121_1, Rat121_2; for (int iChannel = 0; iChannel < kEEChannels; iChannel++) { fRatio1 >> ixtal >> Rat121_1 >> Rat126_1; fRatio2 >> ixtal >> Rat121_2 >> Rat126_2; if(iChannel%1000 == 0) cout << " Channel " << ixtal << " Rat 12/6 " << Rat126_1 << " Ref " << Rat126_2 << " Rat 12/1 " << Rat121_1 << " Ref " << Rat121_2 << endl; hRat126_1->Fill(Rat126_1); hRat121_1->Fill(Rat121_1); hRat126_2->Fill(Rat126_2); hRat121_2->Fill(Rat121_2); if(Rat126_1 != 0 && Rat126_2 != 0) { hCorr126->Fill(Rat126_2, Rat126_1); hDiff126->Fill((Rat126_1-Rat126_2)/Rat126_2); } else if(Rat126_1 == 0 || Rat126_2 == 0) cout << " Channel " << ixtal << " Ratio12/6 = 0 " << endl; if(Rat121_1 != 0 && Rat121_2 != 0) { hCorr121->Fill(Rat121_2, Rat121_1); hDiff121->Fill((Rat121_1-Rat121_2)/Rat121_2); } else if(Rat121_1 == 0 || Rat121_2 == 0) cout << " Channel " << ixtal << " Ratio12/1 = 0 " << endl; } fRatio1.close(); fRatio2.close(); TCanvas* cRatio126 = new TCanvas("cRatio126", "Ratio 12/6"); // cRatio126->SetCanvasSize(630,885); cRatio126->Divide(1,2); cRatio126->cd(1); hRat126_1->Draw(); cRatio126->cd(2); hRat126_2->Draw(); cRatio126->Print(Form("EE_Ratio126_%i.gif", runn)); TCanvas* cRatio121 = new TCanvas("cRatio121", "Ratio 12/1"); // cRatio121->SetCanvasSize(630,885); cRatio121->Divide(1,2); cRatio121->cd(1); hRat126_1->Draw(); cRatio121->cd(2); hRat126_2->Draw(); cRatio121->Print(Form("EE_Ratio121_%i.gif", runn)); // cout << "continue? "<< endl; // cin >> answ; TCanvas* cRatioCorr126 = new TCanvas("cRatioCorr126","Corr Gain Ratio 12/6"); // cRatioCorr126->SetCanvasSize(630,885); //cRatioCorr126->Divide(1,1); //cRatioCorr126->cd(1); hCorr126->SetMarkerStyle(20); hCorr126->Draw(); hCorr126->GetXaxis()->SetTitle("run 192043"); hCorr126->GetYaxis()->SetTitle(Form("run %i", runn)); TLine* l = new TLine(1.86,1.86,2.06,2.06); l->SetLineColor(2); l->SetLineWidth(3); l->Draw(); cRatioCorr126->Print(Form("EE_hCorr126_%i.gif", runn)); // cout << "continue? "<< endl; // cin >> answ; TCanvas* cRatioCorr121 = new TCanvas("cRatioCorr121","Corr Gain Ratio 12/1"); // cRatioCorr121->SetCanvasSize(630,885); //cRatioCorr121->Divide(1,1); //cRatioCorr121->cd(1); hCorr121->SetMarkerStyle(20); hCorr121->Draw(); hCorr121->GetXaxis()->SetTitle("run 192043"); hCorr121->GetYaxis()->SetTitle(Form("run %i", runn)); TLine* l = new TLine(10.5,10.5,11.5,11.5); l->SetLineColor(3); l->SetLineWidth(3); l->Draw(); cRatioCorr121->Print(Form("EE_hCorr121_%i.gif", runn)); // cout << "continue? "<< endl; // cin >> answ; TCanvas* cRatioDiff126 = new TCanvas("cRatioDiff126","Diff Gain Ratio 12/6"); // cRatioDiff126->SetCanvasSize(630,885); // cRatioDiff126->Divide(1,1); // cRatioDiff126->cd(1); cRatioDiff126->SetLogy(1); hDiff126->SetMarkerStyle(20); hDiff126->Draw(); hDiff126->GetXaxis()->SetTitle(Form("(run %i - run 192043)/run 192043", runn)); hDiff126->GetYaxis()->SetTitle("# Xtals"); hDiff126->SetFillColor(5); cRatioDiff126->Print(Form("EE_hDiff126_%i.gif", runn)); TCanvas* cRatioDiff121 = new TCanvas("cRatioDiff121","Diff Gain Ratio 12/1"); // cRatioDiff121->SetCanvasSize(630,885); // cRatioDiff121->Divide(1,1); // cRatioDiff121->cd(1); cRatioDiff121->SetLogy(1); hDiff121->SetMarkerStyle(20); hDiff121->Draw(); hDiff121->GetXaxis()->SetTitle(Form("(run %i - run 192043)/run 192043", runn)); hDiff121->GetYaxis()->SetTitle("# Xtals"); hDiff121->SetFillColor(5); cRatioDiff121->Print(Form("EE_hDiff121_%i.gif", runn)); }
void vs_PlotQCDcomp() { Bool_t saveC = false; Bool_t diJets = true; Bool_t isMC = false; TString vsSave; vsSave = "_T07w"; TString jSave; if(diJets) jSave = "2j"; else jSave = "3j"; TString sample; if(diJets) sample = "select_1ph_2jets"; else sample = "select_1ph_3jets"; TString FOtag; if(isMC) FOtag = "_FO_CorrMC"; // else FOtag = "_FO_Corr"; else FOtag = "_FO"; TString sysu = "SYSTUP_"; TString sysd = "SYSTDOWN_"; TString outDir; outDir = "Plots_PhotonSusyAnalysis/QCDweights/"; // string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/Merged_QCD_PhotonJet_T07w_PAT/mergedHistos.root"; // string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/Merged_Data_V05w_PAT/mergedHistos.root"; string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/PhotonHadReReco_22Jan2013_V05_PAT/mergedHistos.root"; setMyTDRStyle(); gROOT->SetStyle("mytdrStyle"); // gStyle->SetHistMinimumZero(); // gStyle->SetPaintTextFormat("4.2f"); gStyle->SetHistLineWidth(2); gStyle->UseCurrentStyle(); // gStyle->SetPadTopMargin(1.0); // gStyle->SetPadLeftMargin(3.2); // gStyle->SetPadRightMargin(4.5); // gStyle->SetPadBottomMargin(3.2); gROOT->ForceStyle(1); static const Int_t nHt = 7; static const Int_t nPt = 13; static const Int_t nMet = 16; static const Int_t nJet = 15; Double_t binPt[nPt+1] = {0.,75.,90.,120.,160.,210.,260.,320.,400.,500.,650.,800.,1000.,1500.}; Double_t binHt[nHt+1] = {0.,400.,450.,550.,700.,900.,1200.,1500.}; Double_t binMet[nMet+1] = {0.,10.,20.,30.,40.,50.,60.,70.,80.,90.,100.,120.,160.,200.,270.,350.,500.}; Double_t binJet[nJet+1] = {0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15}; TLatex *as = new TLatex(); as->SetNDC(true); as->SetTextColor(12); as->SetTextFont(43); as->SetTextSize(19); TLegend *legend = new TLegend(0.60, 0.70, 0.75, 0.85, ""); legend->SetFillColor(10); legend->SetFillStyle(1001); legend->SetTextSize(0.04); legend->SetBorderSize(0); legend->SetShadowColor(0); std::string outLumi = "CMS Work in Progress - QCD MC #sqrt{s} = 8 TeV - #geq 1 #gamma, #geq 2 j"; TFile* f1 = TFile::Open( inputFile1.c_str() ); //photon Pt TCanvas * cPt = new TCanvas("cPt","cPt"); TH1F* hpt = (TH1F*) f1->Get( sample+"/PreselCut_photonPt" ); TH1F* hptFO = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_photonPt" ); TH1F *hptR = (TH1F*) hpt->Rebin(nPt,hpt->GetTitle(),binPt); if (hptR->GetSumw2N() == 0) hptR->Sumw2(); TH1F *hptFOR = (TH1F*) hptFO->Rebin(nPt,hptFO->GetTitle(),binPt); if (hptFOR->GetSumw2N() == 0) hptFOR->Sumw2(); TH1F* hptSU = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_"+sysu+"photonPt" ); TH1F* hptSD = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_"+sysd+"photonPt" ); TH1F *hptSUR = (TH1F*) hptSU->Rebin(nPt,hptSU->GetTitle(),binPt); if (hptSUR->GetSumw2N() == 0) hptSUR->Sumw2(); TH1F *hptSDR = (TH1F*) hptSD->Rebin(nPt,hptSD->GetTitle(),binPt); if (hptSDR->GetSumw2N() == 0) hptSDR->Sumw2(); if ( hptFOR != 0 ) { for (int b = 0; b < hptFOR->GetNbinsX(); b++) { Double_t mainHistoContent = hptFOR->GetBinContent(b); Double_t systUpHistoContent = hptSUR->GetBinContent(b); Double_t systDnHistoContent = hptSDR->GetBinContent(b); Double_t systDiffUp = fabs( (double) systUpHistoContent - mainHistoContent ); Double_t systDiffDn = fabs( (double) mainHistoContent - systDnHistoContent ); // use average error for histogram Double_t systDiff = ( systDiffUp + systDiffDn ) / 2.; Double_t statErr = hptFOR->GetBinError(b); Double_t combError = sqrt( systDiff * systDiff + statErr * statErr ); hptFOR->SetBinError(b, combError); } //for }//if cPt->SetLogy(1); gPad->Update(); cPt->Update(); // hptR->Scale(1,"width"); // hptR->SetMinimum(0.02); // hptR->SetMaximum(1000); hptR->GetXaxis()->SetTitle("1^{st} photon p_{T} [GeV]"); hptR->GetYaxis()->SetTitle("Number of Events / GeV"); if(isMC) hptR->SetMarkerSize(0); if(isMC) hptR->Draw("histE"); else hptR->Draw("E X0"); hptFOR->SetMarkerSize(0); hptFOR->SetLineColor(2); hptFOR->SetFillColor(2); hptFOR->SetFillStyle(3004); hptFOR->Draw("same hist ][ E2"); legend->Clear(); if(isMC) legend->SetHeader("#gamma/QCD (Sim)"); else legend->SetHeader("#gamma/QCD (Data)"); if(isMC) legend->AddEntry(hptR, "#gamma", "l"); else legend->AddEntry(hptR, "#gamma", "p"); legend->AddEntry(hptFOR, "Pred (from #gamma_{jet})", "f"); legend->Draw(); as->DrawLatex(0.17, 0.93, outLumi.c_str() ); cPt->Update(); cPt->SetBottomMargin(0.2 + 0.8 * cPt->GetBottomMargin() - 0.2 * cPt->GetTopMargin()); TPad *ratioPt = new TPad("BottomPad", "", 0, 0, 1, 1); ratioPt->SetTopMargin(0.8 - 0.8 * ratioPt->GetBottomMargin() + 0.2 * ratioPt->GetTopMargin()); ratioPt->SetFillStyle(0); ratioPt->SetFrameFillColor(10); ratioPt->SetFrameBorderMode(0); ratioPt->Draw(); ratioPt->cd(); ratioPt->SetLogy(0); TH1F *hptRat = (TH1F*) divideHistosForRatio(hptR,hptFOR); hptRat->SetMinimum(0.); hptRat->SetMaximum(10.); hptRat->GetXaxis()->SetNdivisions(505); if(isMC) hptRat->GetYaxis()->SetTitle("Sim/Pred"); else hptRat->GetYaxis()->SetTitle("Data/Pred"); hptRat->GetYaxis()->SetTitleSize(0.04); hptRat->GetYaxis()->SetLabelSize(0.03); hptRat->GetYaxis()->SetTitleOffset(1.3); hptRat->GetYaxis()->SetNdivisions(505); hptRat->SetMarkerStyle(20); hptRat->SetMarkerSize(1); hptRat->SetMarkerColor(1); hptRat->SetLineColor(1); hptRat->Draw("E X0"); TH1F *hptFRat = (TH1F*) getSystErrForRatio(hptFOR); hptFRat->SetLineColor(2); hptFRat->SetFillColor(2); hptFRat->SetFillStyle(3004); hptFRat->Draw("same hist ][ E2"); TLine * line = new TLine( hptRat->GetXaxis()->GetXmin(), 1., hptRat->GetXaxis()->GetXmax(), 1. ); line->SetLineColor(1); line->SetLineWidth(0.5); line->SetLineStyle(1); line->Draw("same"); hptR->GetXaxis()->SetLabelSize(0); hptR->GetXaxis()->SetTitle(""); cPt->RedrawAxis(); gPad->Update(); cPt->Update(); return; }
int Colz2() { std::cout << "Lese Files" << std::endl; Files.push_back (new TFile("TTJets.root", "READ")); //Files.push_back (new TFile("LM3.root", "READ")); //Files.push_back (new TFile("LM8.root", "READ")); Files.push_back (new TFile("LM9.root", "READ")); // lumi in fb-1 //double lumi=0.0359; //double lumi=0.25; double lumi=1; // cross-sections double xsecQCDMu=296900000*0.00037; double xsecZjets=3048; double xsecWjets=3131; double xsecTTJets=158; double xsecLM1=4.888; double xsecLM3=3.438; double xsecLM8=0.73; double xsecLM7=1.209; double xsecLM9=7.134; double xsecLM12=4.414; double xsecG400=19.3944; double xsecG450=8.31098; double xsecG500=1.86744; double xsecG550=0.967942; double xsecG600=0.507335; double xsecG650=0.28241; double xsecG700=0.157907; double xsecG750=0.0902996; double xsecG800=0.0526242; // number of events double nQCD=29034562; double nZjets=2543706; double nWjets=10822996; double nTTJets=1286491; double nLM1=219190; double nLM3=220000; double nLM8=220000; double nLM7=220000; double nLM9=220000; double nLM12=219595; double nG400=10000; double nG450=10000; double nG500=10000; double nG550=10000; double nG600=10000; double nG650=10000; double nG700=10000; double nG750=10000; double nG800=10000; // weights double sQCDMu=lumi*1000*xsecQCDMu/(nQCD); //3.72322; double sZjets=lumi*1000*xsecZjets/(nZjets); //1.19824; double sWjets=lumi*1000*xsecWjets/(nWjets); //2.11502; double sTTJets=lumi*1000*xsecTTJets/(nTTJets); //0.13623; double sLM1=lumi*1000*xsecLM1/(nLM1); //0.02230; double sLM3=lumi*1000*xsecLM3/(nLM3); //0.01563; double sLM8=lumi*1000*xsecLM8/(nLM8); //0.00332; double sLM7=lumi*1000*xsecLM7/(nLM7); double sLM9=lumi*1000*xsecLM9/(nLM9); double sLM12=lumi*1000*xsecLM12/(nLM12); double sData=1; double sG400=lumi*1000*xsecG400/(nG400); //0.02230; double sG450=lumi*1000*xsecG450/(nG450); //0.02230; double sG500=lumi*1000*xsecG500/(nG500); //0.01563; double sG550=lumi*1000*xsecG550/(nG550); //0.02230; double sG600=lumi*1000*xsecG600/(nG600); //0.02230; double sG650=lumi*1000*xsecG650/(nG650); //0.01563; double sG700=lumi*1000*xsecG700/(nG700); //0.02230; double sG750=lumi*1000*xsecG750/(nG750); //0.02230; double sG800=lumi*1000*xsecG800/(nG800); //0.01563; //Scales.push_back(sQCDMu); //Scales.push_back(sWjets); //Scales.push_back(sZjets); Scales.push_back(sTTJets); //Scales.push_back(sData); //Scales.push_back(sLM1); // Scales.push_back(sG500); //Scales.push_back(sLM3); //Scales.push_back(sLM8); Scales.push_back(sLM9); //-------------------- // Fuelle Histogramme //-------------------- std::cout << "Fuelle Histogramme" << std::endl; TH2F* hist1=(TH2F*)Files[0]->Get("analyzeSUSY1l_metSelection/mW_MT"); TH2F* hist2=(TH2F*)Files[1]->Get("analyzeSUSY1l_metSelection/mW_MT"); //TH2F* hist3=(TH2F*)Files[2]->Get("analyzeSUSY1b1l_3/mW_nJets"); //TH2F* hist4=(TH2F*)Files[3]->Get("analyzeSUSY1b1l_3/mW_nJets"); //TH2F* hist1=(TH2F*)Files[0]->Get("analyzeEventTopology1b1l_mediumTCHE_3/HT_dPhiLepMETMin"); //TH2F* hist2=(TH2F*)Files[1]->Get("analyzeEventTopology1b1l_mediumTCHE_3/HT_dPhiLepMETMin"); hist1->Scale(Scales[0]); hist2->Scale(Scales[1]); //hist3->Scale(Scales[2]); //hist4->Scale(Scales[3]); //===============================================================define styles: mystyle2================================================== TStyle *mystyle2 = new TStyle("mystyle2","mystyle2"); //canvases // mystyle2->SetCanvasColor(0); // mystyle2->SetPalette (1,0); // mystyle2->SetCanvasBorderMode(1); mystyle2->SetCanvasColor(10); mystyle2->SetPalette(1); //pads mystyle2->SetPadTopMargin (0.03); mystyle2->SetPadBottomMargin(0.15); mystyle2->SetPadLeftMargin (0.14); mystyle2->SetPadRightMargin (0.16); // mystyle2->SetPadBorderMode (0); //options // mystyle2->SetStatBorderSize(3); mystyle2->SetOptStat (0); // mystyle2->SetOptTitle (0); // mystyle2->SetStatW (0.4); // mystyle2->SetStatH (0.4); // mystyle2->SetDrawOption("colz"); //titles mystyle2->SetTitleFillColor (0); //mystyle2->SetTitleBorderSize(3 ); // mystyle2->SetTitleH (0.06); // mystyle2->SetTitleSize (0.06, "X"); // mystyle2->SetTitleSize (0.06, "Y"); // mystyle2->SetTitleSize (0.06, "Z"); // mystyle2->SetTitleOffset (1, "X"); // mystyle2->SetTitleOffset (1, "Y"); // mystyle2->SetTitleOffset (1, "Z"); //mystyle2->SetTitleFont (62, "X"); //mystyle2->SetTitleFont (62, "Y"); //mystyle2->SetTitleFont (62, "Z"); //labels // mystyle2->SetLabelSize(0.05, "X"); // mystyle2->SetLabelSize(0.05, "Y"); // mystyle2->SetLabelSize(0.05, "Z"); // mystyle2->SetLabelOffset(0.01, "X"); // mystyle2->SetLabelOffset(0.01, "Y"); // mystyle2->SetLabelOffset(0.01, "Z"); // mystyle2->SetLabelFont(62, "X"); // mystyle2->SetLabelFont(62, "Y"); // mystyle2->SetLabelFont(62, "Z"); //Frames // mystyle2->SetFrameFillStyle (0); // mystyle2->SetFrameFillColor (kWhite); // mystyle2->SetFrameLineColor (kBlack); // mystyle2->SetFrameLineStyle (0); // mystyle2->SetFrameLineWidth (2); // mystyle2->SetFrameBorderMode(0); //histograms // mystyle2->SetHistFillColor(8); // mystyle2->SetHistFillStyle(5); // mystyle2->SetHistLineColor(kBlack); // mystyle2->SetHistLineStyle(0); // mystyle2->SetHistLineWidth(2); // mystyle2->SetNdivisions (10, "X"); // mystyle2->SetNdivisions (5, "Y"); // mystyle2->SetNdivisions (5, "Z"); // lines // mystyle2->SetLineColor(kBlack); // mystyle2->SetLineStyle(1); // mystyle2->SetLineWidth(2); //markers // mystyle2->SetMarkerStyle(kFullCircle); // mystyle2->SetMarkerStyle(3); // mystyle2->SetMarkerSize (0.5); //functions // mystyle2->SetFuncColor(kBlack); // mystyle2->SetFuncStyle(0); // mystyle2->SetFuncWidth(2); //ticks // mystyle2->SetTickLength(0.03); //statistics box // mystyle2->SetStatFont (62); // mystyle2->SetStatColor(0); // mystyle2->SetStatH (0.20); // mystyle2->SetStatW (0.30); // mystyle2->SetStatX (0.965); // mystyle2->SetStatY (0.95); double A=hist1->Integral(1, 4, 12, hist1->GetNbinsY()); double D=hist1->Integral(1, 4, 1, 11); double B=hist1->Integral(5, 10, 12, hist1->GetNbinsY()); double E=hist1->Integral(5, 10, 1, 11); double C=hist1->Integral(11, hist1->GetNbinsX(), 12, hist1->GetNbinsY()); double F=hist1->Integral(11, hist1->GetNbinsX(), 1, 11); double AD=A/D; double BE=B/E; double CF=C/F; std::cout << "A: " << A << std::endl; std::cout << "B: " << B << std::endl; std::cout << "C: " << C << std::endl; std::cout << "D: " << D << std::endl; std::cout << "E: " << E << std::endl; std::cout << "F: " << F << std::endl; std::cout << "----------" << std::endl; std::cout << "A/D: " << AD << std::endl; std::cout << "B/E: " << BE << std::endl; std::cout << "C/F: " << CF << std::endl; std::cout << "----------" << std::endl; //std::cout << "Estimate: " << Estimate << std::endl; gROOT->SetStyle("mystyle2"); TCanvas *c1 =new TCanvas( "Ttbar" , "Ttbar" ,1); hist1->Draw("colz"); hist1->GetXaxis()->SetTitle("mW [GeV]"); hist1->GetXaxis()->CenterTitle(); hist1->GetYaxis()->SetTitle("HT [GeV]"); hist1->GetYaxis()->CenterTitle(); hist1->GetYaxis()->SetRangeUser(350,2000); hist1->GetZaxis()->SetTitle("# of events"); hist1->GetZaxis()->CenterTitle(); hist1->GetXaxis()->SetTitleSize(0.06); hist1->GetYaxis()->SetTitleSize(0.06); hist1->GetZaxis()->SetTitleSize(0.06); hist1->GetXaxis()->SetTitleOffset(1.1); hist1->GetYaxis()->SetTitleOffset(1); hist1->GetZaxis()->SetTitleOffset(0.8); hist1->SetTitle("Ttbar"); // TLine TLine * line = new TLine(50, 350, 50, 2000); line->SetLineWidth(3); line->SetLineStyle(1); line->SetLineColor(1); line->Draw("same"); TLine * line2 = new TLine(100, 350, 100, 2000); line2->SetLineWidth(3); line2->SetLineStyle(1); line2->SetLineColor(1); line2->Draw("same"); TLine * line3 = new TLine(0, 600, 200, 600); line3->SetLineWidth(3); line3->SetLineStyle(1); line3->SetLineColor(1); line3->Draw("same"); //gPad->SetLogz(); c1->SaveAs("HT_mW_Ttbar.pdf"); TCanvas *c2 =new TCanvas( "LM9" , "LM9" ,1); hist2->Draw("colz"); hist2->GetXaxis()->SetTitle("mW [GeV]"); hist2->GetXaxis()->CenterTitle(); hist2->GetYaxis()->SetTitle("HT [GeV]"); hist2->GetYaxis()->CenterTitle(); hist2->GetYaxis()->SetRangeUser(350,2000); hist2->GetZaxis()->SetTitle("# of events"); hist2->GetZaxis()->CenterTitle(); hist2->GetXaxis()->SetTitleSize(0.06); hist2->GetYaxis()->SetTitleSize(0.06); hist2->GetZaxis()->SetTitleSize(0.06); hist2->GetXaxis()->SetTitleOffset(1.1); hist2->GetYaxis()->SetTitleOffset(1); hist2->GetZaxis()->SetTitleOffset(0.8); hist2->SetTitle("LM9"); line->Draw("same"); line2->Draw("same"); line3->Draw("same"); //gPad->SetLogz(); c2->SaveAs("HT_mW_LM9.pdf"); // TCanvas *c3 =new TCanvas( "LM8" , "LM8" ,1); // hist3->Draw("colz"); // hist3->GetXaxis()->SetTitle("mW [GeV]"); // hist3->GetXaxis()->CenterTitle(); // hist3->GetYaxis()->SetTitle("nJets [GeV]"); // hist3->GetYaxis()->CenterTitle(); // hist3->GetZaxis()->SetTitle("# of events"); // hist3->GetZaxis()->CenterTitle(); // hist3->GetXaxis()->SetTitleSize(0.06); // hist3->GetYaxis()->SetTitleSize(0.06); // hist3->GetZaxis()->SetTitleSize(0.06); // hist3->GetXaxis()->SetTitleOffset(1.1); // hist3->GetYaxis()->SetTitleOffset(1); // hist3->GetZaxis()->SetTitleOffset(0.8); // hist3->SetTitle("LM8"); // //gPad->SetLogz(); // c3->SaveAs("nJets_mW_LM8.pdf"); // TCanvas *c4 =new TCanvas( "LM9" , "LM9" ,1); // hist4->Draw("colz"); // hist4->GetXaxis()->SetTitle("mW [GeV]"); // hist4->GetXaxis()->CenterTitle(); // hist4->GetYaxis()->SetTitle("nJets [GeV]"); // hist4->GetYaxis()->CenterTitle(); // hist4->GetZaxis()->SetTitle("# of events"); // hist4->GetZaxis()->CenterTitle(); // hist4->GetXaxis()->SetTitleSize(0.06); // hist4->GetYaxis()->SetTitleSize(0.06); // hist4->GetZaxis()->SetTitleSize(0.06); // hist4->GetXaxis()->SetTitleOffset(1.1); // hist4->GetYaxis()->SetTitleOffset(1); // hist4->GetZaxis()->SetTitleOffset(0.8); // hist4->SetTitle("LM9"); // //gPad->SetLogz(); // c4->SaveAs("nJets_mW_LM9.pdf"); return 0; }
void PlotPotential2D( const TString &sim, Int_t time, Int_t zoom=2, Int_t Nbins=2, const TString &options="") { #ifdef __CINT__ gSystem->Load("libplasma.so"); #endif PlasmaGlob::Initialize(); // Palettes! gROOT->Macro("PlasmaPalettes.C"); // Init Units table PUnits::UnitsTable::Get(); // Load PData PData *pData = PData::Get(sim.Data()); pData->LoadFileNames(time); if(!pData->IsInit()) return; TString opt = options; // More makeup gStyle->SetPadGridY(0); if(opt.Contains("gridx")) { gStyle->SetPadGridX(1); } if(opt.Contains("gridy")) { gStyle->SetPadGridY(1); } // Some plasma constants Double_t n0 = pData->GetPlasmaDensity(); Double_t omegap = pData->GetPlasmaFrequency(); Double_t timedepth = 1.; if(omegap!=0.0) timedepth = 1/omegap; Double_t kp = pData->GetPlasmaK(); Double_t skindepth = 1.; if(kp!=0.0) skindepth = 1/kp; Double_t E0 = pData->GetPlasmaE0(); // Some beam properties: Double_t Ebeam = pData->GetBeamEnergy(); Double_t gamma = pData->GetBeamGamma(); Double_t vbeam = pData->GetBeamVelocity(); cout << Form(" - Bunch gamma = %8.4f", gamma ) << endl; cout << Form(" - Bunch velocity = %8.4f c", vbeam ) << endl; // Other parameters Float_t trapPotential = 1.0 - (1.0/gamma); cout << Form(" - Trap. potential = %8.4f mc2/e",trapPotential) << endl; cout << endl; // Time in OU Float_t Time = pData->GetRealTime(); // z start of the plasma in normalized units. Float_t zStartPlasma = pData->GetPlasmaStart()*kp; // z start of the beam in normalized units. Float_t zStartBeam = pData->GetBeamStart()*kp; // z start of the neutral in normalized units. Float_t zStartNeutral = pData->GetNeutralStart()*kp; // z end of the neutral in normalized units. Float_t zEndNeutral = pData->GetNeutralEnd()*kp; if(opt.Contains("center")) { Time -= zStartPlasma; if(opt.Contains("comov")) // Centers on the head of the beam. Time += zStartBeam; } Float_t shiftz = pData->Shift(opt); // cout << "Shift = " << shiftz << endl; // Calculate the "axis range" in number of bins. If Nbins==0 a RMS width is taken. Double_t rms0 = pData->GetBeamRmsY() * kp; if(pData->IsCyl()) rms0 = pData->GetBeamRmsR() * kp; Int_t FirstyBin = 0; Int_t LastyBin = 0; if(Nbins==0) { if(rms0>0.0) Nbins = TMath::Nint(rms0 / pData->GetDX(1)); else Nbins = 1; } // Slice width limits. if(!pData->IsCyl()) { FirstyBin = pData->GetNX(1)/2 + 1 - Nbins; LastyBin = pData->GetNX(1)/2 + Nbins; } else { FirstyBin = 1; LastyBin = Nbins; } // ---------------------------------------------------------------------------------- // Get charge density histos Int_t Nspecies = pData->NSpecies(); TH2F **hDen2D = new TH2F*[Nspecies]; // Get charge density on-axis TH1F **hDen1D = new TH1F*[Nspecies]; // And electric current (integrated) TH1F **hCur1D = new TH1F*[Nspecies]; for(Int_t i=0; i<Nspecies; i++) { hDen2D[i] = NULL; if(!pData->GetChargeFileName(i)) continue; cout << Form(" Getting charge density of specie: ") << i << endl; char hName[24]; sprintf(hName,"hDen2D_%i",i); hDen2D[i] = (TH2F*) gROOT->FindObject(hName); if(hDen2D[i]) delete hDen2D[i]; if(!pData->Is3D()) hDen2D[i] = pData->GetCharge(i,opt); else hDen2D[i] = pData->GetCharge2DSliceZY(i,-1,Nbins,opt+"avg"); hDen2D[i]->SetName(hName); hDen2D[i]->GetXaxis()->CenterTitle(); hDen2D[i]->GetYaxis()->CenterTitle(); hDen2D[i]->GetZaxis()->CenterTitle(); if(opt.Contains("comov")) hDen2D[i]->GetXaxis()->SetTitle("k_{p} #zeta"); else hDen2D[i]->GetXaxis()->SetTitle("k_{p} z"); if(pData->IsCyl()) hDen2D[i]->GetYaxis()->SetTitle("k_{p} r"); else hDen2D[i]->GetYaxis()->SetTitle("k_{p} y"); hDen2D[i]->GetZaxis()->SetTitle("n [n_{0}]"); hDen1D[i] = NULL; hCur1D[i] = NULL; if(!pData->GetEfieldFileName(i)) continue; sprintf(hName,"hDen1D_%i",i); hDen1D[i] = (TH1F*) gROOT->FindObject(hName); if(hDen1D[i]) delete hDen1D[i]; // 1D histograms if(pData->Is3D()) { hDen1D[i] = pData->GetH1SliceZ3D(pData->GetChargeFileName(i)->c_str(),"charge",-1,Nbins,-1,Nbins,opt+"avg"); } else if(pData->IsCyl()) { // Cylindrical: The first bin with r>0 is actually the number 1 (not the 0). hDen1D[i] = pData->GetH1SliceZ(pData->GetChargeFileName(i)->c_str(),"charge",1,Nbins,opt+"avg"); } else { // 2D cartesian hDen1D[i] = pData->GetH1SliceZ(pData->GetChargeFileName(i)->c_str(),"charge",-1,Nbins,opt+"avg"); } hDen1D[i]->SetName(hName); // if(hDen1D[i]) delete hDen1D[i]; // hDen1D[i] = (TH1F*) hE2D[i]->ProjectionX(hName,FirstyBin,LastyBin); // hDen1D[i]->Scale(1.0/(LastyBin-FirstyBin+1)); if(opt.Contains("comov")) hDen1D[i]->GetXaxis()->SetTitle("#zeta [c/#omega_{p}]"); else hDen1D[i]->GetXaxis()->SetTitle("z [c/#omega_{p}]"); if(i==0) hDen1D[i]->GetYaxis()->SetTitle("n/n_{0}"); else if(i==1) hDen1D[i]->GetYaxis()->SetTitle("n_{b}/n_{0}"); else hDen1D[i]->GetYaxis()->SetTitle("n_{i}/n_{0}"); // Get the current: if(i==0) continue; sprintf(hName,"hCur1D_%i",i); hCur1D[i] = (TH1F*) gROOT->FindObject(hName); if(hCur1D[i]) delete hCur1D[i]; if(opt.Contains("curr")) { // To get the current is needed to read in a wider transverse range which includes all the charge. Int_t NbinsT = 100; if(pData->Is3D()) { hCur1D[i] = pData->GetH1SliceZ3D(pData->GetChargeFileName(i)->c_str(),"charge",-1,NbinsT,-1,NbinsT,opt+"int"); } else if(pData->IsCyl()) { // Cylindrical: The first bin with r>0 is actually the number 1 (not the 0). hCur1D[i] = pData->GetH1SliceZ(pData->GetChargeFileName(i)->c_str(),"charge",1,NbinsT,opt+"int"); } else { // 2D cartesian hCur1D[i] = pData->GetH1SliceZ(pData->GetChargeFileName(i)->c_str(),"charge",-1,NbinsT,opt+"int"); } hCur1D[i]->SetName(hName); if(opt.Contains("comov")) { hCur1D[i]->GetXaxis()->SetTitle("#zeta [c/#omega_{p}]"); hCur1D[i]->GetYaxis()->SetTitle("dn/d#zeta [(n_{0}/k_{p}^{3}) (#omega_{p}/c)]"); } else { hCur1D[i]->GetXaxis()->SetTitle("z [c/#omega_{p}]"); hCur1D[i]->GetYaxis()->SetTitle("dn/dz [(n_{0}/k_{p}^{3}) (#omega_{p}/c)]"); } Int_t NB = hCur1D[i]->GetNbinsX(); Float_t dx = (hCur1D[i]->GetBinLowEdge(1)-hCur1D[i]->GetBinLowEdge(NB+1))/NB; // hCur1D[i]->Scale(dx); Float_t Charge = hCur1D[i]->Integral() * dx; cout << Form(" Integrated charge of specie %3i = %8.4f n0 * kp^-3",i,Charge) << endl; } } // Get electric fields 2D const Int_t Nfields = 3; TH2F **hE2D = new TH2F*[Nfields]; TH1F **hE1D = new TH1F*[Nfields]; TH2F *hV2D = NULL; TH1F *hV1D = NULL; for(Int_t i=0; i<Nfields; i++) { hE2D[i] = NULL; hE1D[i] = NULL; if(!pData->GetEfieldFileName(i)) continue; cout << Form(" Getting electric field number ") << i+1 << endl; char hName[24]; sprintf(hName,"hE2D_%i",i); hE2D[i] = (TH2F*) gROOT->FindObject(hName); if(hE2D[i]) delete hE2D[i]; if(!pData->Is3D()) hE2D[i] = pData->GetEField(i,opt); else hE2D[i] = pData->GetEField2DSliceZY(i,-1,Nbins,opt+"avg"); hE2D[i]->SetName(hName); hE2D[i]->GetXaxis()->CenterTitle(); hE2D[i]->GetYaxis()->CenterTitle(); hE2D[i]->GetZaxis()->CenterTitle(); if(opt.Contains("comov")) hE2D[i]->GetXaxis()->SetTitle("k_{p} #zeta"); else hE2D[i]->GetXaxis()->SetTitle("k_{p} z"); if(pData->IsCyl()) hE2D[i]->GetYaxis()->SetTitle("k_{p} r"); else hE2D[i]->GetYaxis()->SetTitle("k_{p} y"); if(i==0) hE2D[i]->GetZaxis()->SetTitle("E_{z}/E_{0}"); else if(i==1) hE2D[i]->GetZaxis()->SetTitle("E_{y}/E_{0}"); else if(i==2) hE2D[i]->GetZaxis()->SetTitle("E_{x}/E_{0}"); sprintf(hName,"hE1D_%i",i); hE1D[i] = (TH1F*) gROOT->FindObject(hName); if(hE1D[i]) delete hE1D[i]; // 1D histograms char nam[3]; sprintf(nam,"e%i",i+1); if(pData->Is3D()) { if(i==0) hE1D[i] = pData->GetH1SliceZ3D(pData->GetEfieldFileName(i)->c_str(),nam,-1,Nbins,-1,Nbins,opt+"avg"); else hE1D[i] = pData->GetH1SliceZ3D(pData->GetEfieldFileName(i)->c_str(),nam,-Nbins,Nbins,-Nbins,Nbins,opt+"avg"); } else if(pData->IsCyl()) { // Cylindrical: The first bin with r>0 is actually the number 1 (not the 0). hE1D[i] = pData->GetH1SliceZ(pData->GetEfieldFileName(i)->c_str(),nam,1,Nbins,opt+"avg"); } else { // 2D cartesian if(i==0) hE1D[i] = pData->GetH1SliceZ(pData->GetEfieldFileName(i)->c_str(),nam,-1,Nbins,opt+"avg"); else hE1D[i] = pData->GetH1SliceZ(pData->GetEfieldFileName(i)->c_str(),nam,-Nbins,Nbins,opt+"avg"); } hE1D[i]->SetName(hName); if(opt.Contains("comov")) hE1D[i]->GetXaxis()->SetTitle("#zeta [c/#omega_{p}]"); else hE1D[i]->GetXaxis()->SetTitle("z [c/#omega_{p}]"); if(i==0) hE1D[i]->GetYaxis()->SetTitle("E_{z} [E_{0}]"); else if(i==1) hE1D[i]->GetYaxis()->SetTitle("E_{y} [E_{0}]"); else if(i==2) hE1D[i]->GetYaxis()->SetTitle("E_{x} [E_{0}]"); // Alternative // if(hE1D[i]) delete hE1D[i]; // hE1D[i] = (TH1F*) hE2D[i]->ProjectionX(hName,FirstyBin,LastyBin); // hE1D[i]->Scale(1.0/(LastyBin-FirstyBin+1)); if(i==0) { Int_t NbinsX = hE2D[i]->GetNbinsX(); Int_t NbinsY = hE2D[i]->GetNbinsY(); Float_t dx = pData->GetDX(0); sprintf(hName,"hV2D"); hV2D = (TH2F*) hE2D[i]->Clone(hName); hV2D->Reset(); sprintf(hName,"hV1D"); hV1D = (TH1F*) hE1D[i]->Clone(hName); hV1D->Reset(); for(Int_t j=NbinsY; j>0; j--) { Double_t integral = 0.0; for(Int_t k=NbinsX; k>0; k--) { integral += hE2D[i]->GetBinContent(k,j) * dx; hV2D->SetBinContent(k,j,integral); } } Double_t integral = 0.0; for(Int_t k=NbinsX; k>0; k--) { integral += hE1D[i]->GetBinContent(k) * dx; hV1D->SetBinContent(k,integral); } } } // Now, combine the electric field components into the total |E| // and calculate ionization probability for He: // Outter Helium electron Double_t Eion0 = 24.59 * PUnits::eV; Double_t Z = 1; TH2F *hETotal2D = (TH2F*) hE2D[0]->Clone("hETotal2D"); hETotal2D->Reset(); TH2F *hIonProb2D = (TH2F*) hE2D[0]->Clone("hIonProb2D"); hIonProb2D->Reset(); TH1F *hETotal1D = (TH1F*) hE1D[0]->Clone("hETotal1D"); hETotal1D->Reset(); TH1F *hIonProb1D = (TH1F*) hE1D[0]->Clone("hIonProb1D"); hIonProb1D->Reset(); { Int_t NbinsX = hE2D[0]->GetNbinsX(); Int_t NbinsY = hE2D[0]->GetNbinsY(); for(Int_t j=0; j<NbinsX; j++) { for(Int_t k=0; k<NbinsY; k++) { Double_t E1 = hE2D[0]->GetBinContent(j,k); Double_t E2 = hE2D[1]->GetBinContent(j,k); Double_t E3 = hE2D[2]->GetBinContent(j,k); Double_t E = TMath::Sqrt(E1*E1+E2*E2+E3*E3); hETotal2D->SetBinContent(j,k,E); E *= E0; // Double_t IonProb = (PFunc::ADK(E,Eion0,Z,l,m)/PUnits::atomictime)*PUnits::femtosecond; Double_t IonProb = PFunc::ADK_ENG(E,Eion0,Z) * PUnits::femtosecond; // if(IonProb>1) IonProb = 1.0; // cout << "Ion prob = " << IonProb << endl; hIonProb2D->SetBinContent(j,k,IonProb); } Double_t E1 = hE1D[0]->GetBinContent(j); Double_t E2 = hE1D[1]->GetBinContent(j); Double_t E3 = hE1D[2]->GetBinContent(j); Double_t E = TMath::Sqrt(E1*E1+E2*E2+E3*E3); hETotal1D->SetBinContent(j,E); E *= E0; // Double_t IonProb = (PFunc::ADK(E,Eion0,Z,l,m)/PUnits::atomictime)*PUnits::femtosecond; Double_t IonProb = PFunc::ADK_ENG(E,Eion0,Z) * PUnits::femtosecond; // cout << "Ion prob = " << IonProb << endl; hIonProb1D->SetBinContent(j,IonProb); } } hETotal2D->GetZaxis()->SetTitle("E [E_{0}]"); hIonProb2D->GetZaxis()->SetTitle("W_{ADK} [fs^{-1}]"); hETotal1D->GetYaxis()->SetTitle("E [E_{0}]"); hIonProb1D->GetYaxis()->SetTitle("W_{ADK} [fs^{-1}]"); // Tunning the Histograms // --------------------- // Chaning to user units: // -------------------------- if(opt.Contains("units") && n0) { for(Int_t i=0; i<Nspecies; i++) { if(!hDen2D[i]) continue; Int_t NbinsX = hDen2D[i]->GetNbinsX(); Float_t xMin = skindepth * hDen2D[i]->GetXaxis()->GetXmin() / PUnits::um; Float_t xMax = skindepth * hDen2D[i]->GetXaxis()->GetXmax() / PUnits::um; Int_t NbinsY = hDen2D[i]->GetNbinsY(); Float_t ymin = skindepth * hDen2D[i]->GetYaxis()->GetXmin() / PUnits::um; Float_t ymax = skindepth * hDen2D[i]->GetYaxis()->GetXmax() / PUnits::um; hDen2D[i]->SetBins(NbinsX,xMin,xMax,NbinsY,ymin,ymax); // for(Int_t j=0;j<hDen2D[i]->GetNbinsX();j++) { // for(Int_t k=0;k<hDen2D[i]->GetNbinsY();k++) { // hDen2D[i]->SetBinContent(j,k, hDen2D[i]->GetBinContent(j,k) * n0 / (1e17/PUnits::cm3) ); // } // } if(pData->IsCyl()) hDen2D[i]->GetYaxis()->SetTitle("r [#mum]"); else hDen2D[i]->GetYaxis()->SetTitle("y [#mum]"); if(opt.Contains("comov")) hDen2D[i]->GetXaxis()->SetTitle("#zeta [#mum]"); else hDen2D[i]->GetXaxis()->SetTitle("z [#mum]"); // if(i==0) // hDen2D[i]->GetZaxis()->SetTitle("n_{e} [10^{17}/cm^{3}]"); // else if(i==1) // hDen2D[i]->GetZaxis()->SetTitle("n_{b} [10^{17}/cm^{3}]"); // else // hDen2D[i]->GetZaxis()->SetTitle("n_{i} [10^{17}/cm^{3}]"); hDen1D[i]->SetBins(NbinsX,xMin,xMax); // for(Int_t j=0;j<hDen1D[i]->GetNbinsX();j++) { // hDen1D[i]->SetBinContent(j, hDen1D[i]->GetBinContent(j) * n0 / (1e17/PUnits::cm3) ); // } if(opt.Contains("comov")) hDen1D[i]->GetXaxis()->SetTitle("#zeta [#mum]"); else hDen1D[i]->GetXaxis()->SetTitle("z [#mum]"); if(hCur1D[i]) { hCur1D[i]->SetBins(NbinsX,xMin,xMax); Double_t binSize = (xMax - xMin)/NbinsX; // bin size in um. Double_t dV = skindepth * skindepth * skindepth; Double_t lightspeed = PConst::c_light / (PUnits::um/PUnits::femtosecond); hCur1D[i]->Scale(TMath::Abs(n0 * dV * (PConst::ElectronCharge/PUnits::picocoulomb) * (kp * PConst::c_light * PUnits::femtosecond))); hCur1D[i]->GetYaxis()->SetTitle("I[kA]"); hCur1D[i]->GetYaxis()->SetTitle(""); if(opt.Contains("comov")) hCur1D[i]->GetXaxis()->SetTitle("#zeta [#mum]"); else hCur1D[i]->GetXaxis()->SetTitle("z [#mum]"); Float_t Charge = hCur1D[i]->Integral() * (binSize / lightspeed); cout << Form(" Integrated charge of specie %3i = %8f pC",i,Charge) << endl; } } for(Int_t i=0; i<Nfields; i++) { Int_t NbinsX = hE2D[i]->GetNbinsX(); Float_t xMin = skindepth * hE2D[i]->GetXaxis()->GetXmin() / PUnits::um; Float_t xMax = skindepth * hE2D[i]->GetXaxis()->GetXmax() / PUnits::um; Int_t NbinsY = hE2D[i]->GetNbinsY(); Float_t ymin = skindepth * hE2D[i]->GetYaxis()->GetXmin() / PUnits::um; Float_t ymax = skindepth * hE2D[i]->GetYaxis()->GetXmax() / PUnits::um; hE2D[i]->SetBins(NbinsX,xMin,xMax,NbinsY,ymin,ymax); hE1D[i]->SetBins(NbinsX,xMin,xMax); for(Int_t j=0; j<hE2D[i]->GetNbinsX(); j++) { for(Int_t k=0; k<hE2D[i]->GetNbinsY(); k++) { hE2D[i]->SetBinContent(j,k, hE2D[i]->GetBinContent(j,k) * ( E0 / (PUnits::GV/PUnits::m) ) ); } hE1D[i]->SetBinContent(j, hE1D[i]->GetBinContent(j) * ( E0 / (PUnits::GV/PUnits::m) ) ); } if(pData->IsCyl()) hE2D[i]->GetYaxis()->SetTitle("r [#mum]"); else hE2D[i]->GetYaxis()->SetTitle("y [#mum]"); if(opt.Contains("comov")) hE2D[i]->GetXaxis()->SetTitle("#zeta [#mum]"); else hE2D[i]->GetXaxis()->SetTitle("z [#mum]"); if(i==0) hE2D[i]->GetZaxis()->SetTitle("E_{z} [GV/m]"); else if(i==1) hE2D[i]->GetZaxis()->SetTitle("E_{y} [GV/m]"); else if(i==2) hE2D[i]->GetZaxis()->SetTitle("E_{x} [GV/m]"); if(opt.Contains("comov")) hE1D[i]->GetXaxis()->SetTitle("#zeta [mm]"); else hE1D[i]->GetXaxis()->SetTitle("z [mm]"); if(i==0) hE1D[i]->GetYaxis()->SetTitle("E_{z} [GV/m]"); else if(i==1) hE1D[i]->GetYaxis()->SetTitle("E_{y} [GV/m]"); else if(i==2) hE1D[i]->GetYaxis()->SetTitle("E_{x} [GV/m]"); if(i==0) { hV2D->SetBins(NbinsX,xMin,xMax,NbinsY,ymin,ymax); hETotal2D->SetBins(NbinsX,xMin,xMax,NbinsY,ymin,ymax); hIonProb2D->SetBins(NbinsX,xMin,xMax,NbinsY,ymin,ymax); hV1D->SetBins(NbinsX,xMin,xMax); hETotal1D->SetBins(NbinsX,xMin,xMax); hIonProb1D->SetBins(NbinsX,xMin,xMax); for(Int_t j=0; j<NbinsX; j++) { for(Int_t k=0; k<NbinsY; k++) { hV2D->SetBinContent(j,k, hV2D->GetBinContent(j,k) * E0 * skindepth / (PUnits::MV)); hETotal2D->SetBinContent(j,k, hETotal2D->GetBinContent(j,k) * ( E0 / (PUnits::GV/PUnits::m) ) ); } hV1D->SetBinContent(j, hV1D->GetBinContent(j) * ( E0 * skindepth / (PUnits::MV) ) ); hETotal1D->SetBinContent(j, hETotal1D->GetBinContent(j) * ( E0 / (PUnits::GV/PUnits::m) ) ); } if(pData->IsCyl()) { hV2D->GetYaxis()->SetTitle("r [#mum]"); hETotal2D->GetYaxis()->SetTitle("r [#mum]"); } else { hV2D->GetYaxis()->SetTitle("y [#mum]"); hETotal2D->GetYaxis()->SetTitle("y [#mum]"); } if(opt.Contains("comov")) { hV2D->GetXaxis()->SetTitle("#zeta [#mum]"); hV1D->GetXaxis()->SetTitle("#zeta [#mum]"); hETotal2D->GetXaxis()->SetTitle("#zeta [#mum]"); hETotal1D->GetXaxis()->SetTitle("#zeta [#mum]"); } else { hV2D->GetXaxis()->SetTitle("z [#mum]"); hV2D->GetXaxis()->SetTitle("z [#mum]"); hETotal2D->GetXaxis()->SetTitle("z [#mum]"); hETotal1D->GetXaxis()->SetTitle("z [#mum]"); } hV2D->GetZaxis()->SetTitle("#Psi-#Psi_{t} [MV]"); hV1D->GetYaxis()->SetTitle("#Psi-#Psi_{t} [MV]"); hETotal2D->GetZaxis()->SetTitle("E [GV/m]"); hETotal1D->GetYaxis()->SetTitle("E [GV/m]"); } } } // --------------------------------------------------- Vertical Zoom ------------ Float_t yRange = (hDen2D[0]->GetYaxis()->GetXmax() - hDen2D[0]->GetYaxis()->GetXmin())/zoom; Float_t midPoint = (hDen2D[0]->GetYaxis()->GetXmax() + hDen2D[0]->GetYaxis()->GetXmin())/2.; Float_t yMin = midPoint-yRange/2; Float_t yMax = midPoint+yRange/2; if(pData->IsCyl()) { yMin = pData->GetXMin(1); yMax = yRange; } for(Int_t i=0; i<Nspecies; i++) { if(!hDen2D[i]) continue; hDen2D[i]->GetYaxis()->SetRangeUser(yMin,yMax); } for(Int_t i=0; i<Nfields; i++) { if(!hE2D[i]) continue; hE2D[i]->GetYaxis()->SetRangeUser(yMin,yMax); } hETotal2D->GetYaxis()->SetRangeUser(yMin,yMax); Float_t xMin = hDen2D[0]->GetXaxis()->GetXmin(); Float_t xMax = hDen2D[0]->GetXaxis()->GetXmax(); Float_t xRange = xMax - xMin; // ------------- z Zoom --------------------------------- Plasma palette ----------- // Set the range of the plasma charge density histogram for maximum constrast // using a dynamic palette wich adjust the nominal value to a certain color. Float_t density = 1; Float_t Base = density; Float_t *Max = new Float_t[Nspecies]; Float_t *Min = new Float_t[Nspecies]; for(Int_t i=0; i<Nspecies; i++) { if(!hDen2D[i]) continue; Max[i] = hDen2D[i]->GetMaximum(); Min[i] = 1.01E-1 * Base; if(i==1) Min[i] = 1.01E-1 * Base; if(i==2) Min[i] = 1.01E-4 * Base; hDen2D[i]->GetZaxis()->SetRangeUser(Min[i],Max[i]); } // Dynamic plasma palette const Int_t plasmaDNRGBs = 3; const Int_t plasmaDNCont = 64; Float_t basePos = 0.5; if(Max[0]!=Min[0]) { if(opt.Contains("logz")) { Float_t a = 1.0/(TMath::Log10(Max[0])-TMath::Log10(Min[0])); Float_t b = TMath::Log10(Min[0]); basePos = a*(TMath::Log10(Base) - b); } else { basePos = (1.0/(Max[0]-Min[0]))*(Base - Min[0]); } } Double_t plasmaDStops[plasmaDNRGBs] = { 0.00, basePos, 1.00 }; Double_t plasmaDRed[plasmaDNRGBs] = { 0.99, 0.90, 0.00 }; Double_t plasmaDGreen[plasmaDNRGBs] = { 0.99, 0.90, 0.00 }; Double_t plasmaDBlue[plasmaDNRGBs] = { 0.99, 0.90, 0.00 }; PPalette * plasmaPalette = (PPalette*) gROOT->FindObject("plasma"); plasmaPalette->CreateGradientColorTable(plasmaDNRGBs, plasmaDStops, plasmaDRed, plasmaDGreen, plasmaDBlue, plasmaDNCont); // Change the range of z axis for the fields to be symmetric. Float_t *Emax = new Float_t[Nfields]; Float_t *Emin = new Float_t[Nfields]; for(Int_t i=0; i<Nfields; i++) { Emax[i] = hE2D[i]->GetMaximum(); Emin[i] = hE2D[i]->GetMinimum(); if(Emax[i] > TMath::Abs(Emin[i])) Emin[i] = -Emax[i]; else Emax[i] = -Emin[i]; hE2D[i]->GetZaxis()->SetRangeUser(Emin[i],Emax[i]); } // Potential if(opt.Contains("units")) { trapPotential *= ( E0 * skindepth / (PUnits::MV) ); } Float_t Vmin = hV1D->GetMinimum(); { // Shift potential Int_t NbinsX = hV2D->GetNbinsX(); Int_t NbinsY = hV2D->GetNbinsY(); for(Int_t j=0; j<NbinsX; j++) { for(Int_t k=0; k<NbinsY; k++) { hV2D->SetBinContent(j,k, hV2D->GetBinContent(j,k) - Vmin -trapPotential); } hV1D->SetBinContent(j, hV1D->GetBinContent(j) - Vmin -trapPotential); } } Vmin = hV1D->GetMinimum(); Float_t Vmax = hV1D->GetMaximum(); // Dynamic potential palette const Int_t potPNRGBs = 5; const Int_t potPNCont = 64; Float_t zeroPos = -Vmin/(Vmax-Vmin); Double_t potPStops[potPNRGBs] = { 0.00, zeroPos-3.0/potPNCont,zeroPos, zeroPos+3.0/potPNCont, 1.00 }; Double_t potPRed[potPNRGBs] = { 0.518, 0.965, 0.90, 0.498, 0.106 }; Double_t potPGreen[potPNRGBs] = { 0.078, 0.925, 0.90, 0.718, 0.078 }; Double_t potPBlue[potPNRGBs] = { 0.106, 0.353, 0.90, 0.780, 0.518 }; PPalette * potentialPalette = (PPalette*) gROOT->FindObject("rbow2inv"); potentialPalette->CreateGradientColorTable(potPNRGBs, potPStops, potPRed, potPGreen, potPBlue, potPNCont); // Extract contours TCanvas* c = new TCanvas("c","Contour List",0,0,600,600); c->cd(); // Potential TH2F *hV2Dc = (TH2F*) hV2D->Clone("hV2Dc"); const Int_t Ncontours = 25; Double_t contours[Ncontours]; for(Int_t i=0; i<Ncontours; i++) { contours[i] = i*(trapPotential/5.0) - trapPotential; } hV2Dc->SetContour(Ncontours, contours); hV2Dc->Draw("cont list"); c->Update(); TObjArray *contsV2D = (TObjArray*) gROOT->GetListOfSpecials()->FindObject("contours"); TClonesArray graphsV2D("TGraph",Ncontours); { Int_t ncontours = contsV2D->GetSize(); TList* clist = NULL; Int_t nGraphs = 0; TGraph *gr = NULL; for(Int_t i = 0; i < ncontours; i++) { if(i==0) continue; clist = (TList*) contsV2D->At(i); for(Int_t j = 0 ; j < clist->GetSize(); j++) { gr = (TGraph*) clist->At(j); if(!gr) continue; gr->SetLineWidth(1); gr->SetLineColor(kGray+1); if( !((i)%5) ) { gr->SetLineWidth(2); gr->SetLineColor(kGray+2); } new(graphsV2D[nGraphs]) TGraph(*gr) ; nGraphs++; } } } // Ion probability hIonProb2D->GetZaxis()->SetRangeUser(0.00501,80); TH2F *hIonProb2Dc = (TH2F*) hIonProb2D->Clone("hIonProb2Dc"); const Int_t NcontI = 4; Double_t contI[NcontI] = {0.01,0.1,1.0,10.0}; hIonProb2Dc->SetContour(NcontI, contI); hIonProb2Dc->Draw("cont list"); c->Update(); TObjArray *contsI2D = (TObjArray*) gROOT->GetListOfSpecials()->FindObject("contours"); TClonesArray graphsI2D("TGraph",NcontI); { Int_t ncontours = contsI2D->GetSize(); TList* clist = NULL; Int_t nGraphs = 0; TGraph *gr = NULL; for(Int_t i = 0; i < ncontours; i++) { clist = (TList*) contsI2D->At(i); for(Int_t j = 0 ; j < clist->GetSize(); j++) { gr = (TGraph*) clist->At(j); if(!gr) continue; if( !(i%2) ) { gr->SetLineWidth(1); gr->SetLineStyle(2); gr->SetLineColor(kOrange-3); } else { gr->SetLineWidth(1); gr->SetLineStyle(1); gr->SetLineColor(kOrange-3); } new(graphsI2D[nGraphs]) TGraph(*gr) ; nGraphs++; } } } // "Axis range" in Osiris units: Double_t ylow = hDen2D[0]->GetYaxis()->GetBinLowEdge(FirstyBin); Double_t yup = hDen2D[0]->GetYaxis()->GetBinUpEdge(LastyBin); Double_t xmin = hDen2D[0]->GetXaxis()->GetXmin(); Double_t xmax = hDen2D[0]->GetXaxis()->GetXmax(); TLine *lineYzero = new TLine(xmin,0.0,xmax,0.0); lineYzero->SetLineColor(kGray+2); lineYzero->SetLineStyle(2); TLine *lineYup = new TLine(xmin,yup,xmax,yup); lineYup->SetLineColor(kGray+1); lineYup->SetLineStyle(2); TLine *lineYdown = new TLine(xmin,ylow,xmax,ylow); lineYdown->SetLineColor(kGray+1); lineYdown->SetLineStyle(2); zStartPlasma -= shiftz; zStartNeutral -= shiftz; zEndNeutral -= shiftz; if(opt.Contains("units")) { zStartPlasma *= skindepth / PUnits::um; zStartNeutral *= skindepth / PUnits::um; zEndNeutral *= skindepth / PUnits::um; } // cout << "Start plasma = " << zStartPlasma << endl; TLine *lineStartPlasma = new TLine(zStartPlasma,yMin,zStartPlasma,yMax); lineStartPlasma->SetLineColor(kGray+2); lineStartPlasma->SetLineStyle(2); lineStartPlasma->SetLineWidth(3); // cout << "Start plasma = " << zStartNeutral << endl; TLine *lineStartNeutral = new TLine(zStartNeutral,yMin,zStartNeutral,yMax); lineStartNeutral->SetLineColor(kGray+1); lineStartNeutral->SetLineStyle(2); lineStartNeutral->SetLineWidth(3); // cout << "End plasma = " << zEndNeutral << endl; TLine *lineEndNeutral = new TLine(zEndNeutral,yMin,zEndNeutral,yMax); lineEndNeutral->SetLineColor(kGray+1); lineEndNeutral->SetLineStyle(2); lineEndNeutral->SetLineWidth(3); // Plotting // ----------------------------------------------- // Canvas setup TCanvas *C = new TCanvas("C","2D Charge density and Electric field",750,666); // Palettes setup TExec *exPlasma = new TExec("exPlasma","plasmaPalette->cd();"); TExec *exElec = new TExec("exElec","redelectronPalette->cd();"); TExec *exHot = new TExec("exHot","hotPalette->cd();"); TExec *exField = new TExec("exField","rbow2Palette->cd();"); TExec *exFieldT = new TExec("exFieldT","redPalette->cd();"); TExec *exIonP = new TExec("exIonP","redPalette->cd();"); TExec *exPot = new TExec("exPot","rbow2invPalette->cd();"); // Actual Plotting! // ------------------------------------------------------------ // Output file TString fOutName = Form("./%s/Plots/Potential2D/Potential2D",pData->GetPath().c_str()); fOutName += Form("-%s_%i",pData->GetName(),time); // Setup Pad layout: Float_t lMargin = 0.15; Float_t rMargin = 0.18; Float_t bMargin = 0.15; Float_t tMargin = 0.04; Float_t factor = 1.0; PlasmaGlob::CanvasAsymPartition(C,2,lMargin,rMargin,bMargin,tMargin,factor); TPad *pad[2]; TString sLabels[] = {"(a)","(b)"}; // Text objects TPaveText **textLabel = new TPaveText*[2]; C->cd(0); char pname[16]; sprintf(pname,"pad_%i",1); pad[0] = (TPad*) gROOT->FindObject(pname); pad[0]->Draw(); pad[0]->cd(); // <---------------------------------------------- Top Plot --------- if(opt.Contains("logz")) { pad[0]->SetLogz(1); } else { pad[0]->SetLogz(0); } pad[0]->SetFrameLineWidth(3); pad[0]->SetTickx(1); // Re-range: for(Int_t i=0; i<Nspecies; i++) { if(!hDen2D[i]) continue; hDen2D[i]->GetYaxis()->SetRangeUser(yMin -(factor-1)*yRange, yMax); } TH2F *hFrame = (TH2F*) gROOT->FindObject("hFrame1"); if(hFrame) delete hFrame; hFrame = (TH2F*) hDen2D[0]->Clone("hFrame1"); hFrame->Reset(); hFrame->SetLabelFont(42,"xyz"); hFrame->SetTitleFont(42,"xyz"); hFrame->GetYaxis()->SetNdivisions(505); hFrame->GetYaxis()->SetLabelSize(0.085); hFrame->GetYaxis()->SetTitleSize(0.09); hFrame->GetYaxis()->SetTitleOffset(0.7); hFrame->GetYaxis()->SetTickLength(0.02); hFrame->GetXaxis()->SetLabelOffset(999.); hFrame->GetXaxis()->SetTitleOffset(999.); hFrame->GetXaxis()->SetTickLength(0.04); // Frame asymmetry: hFrame->Draw("col"); // hDen2D[0]->GetZaxis()->SetNdivisions(505); // Injected electrons if any if(Nspecies>=3) { if(hDen2D[2]) { exHot->Draw(); hDen2D[2]->Draw("colz same"); } } // Plasma hDen2D[0]->GetZaxis()->SetTitleFont(42); exPlasma->Draw(); hDen2D[0]->Draw("colz same"); // Beam driver. if(hDen2D[1]) { // hDen2D[1]->GetZaxis()->SetNdivisions(505); exElec->Draw(); hDen2D[1]->Draw("colz same"); } { TGraph *gr = (TGraph*) graphsV2D.At(4); gr->Draw("C"); } { TGraph *gr = (TGraph*) graphsI2D.At(1); gr->Draw("C"); } if(opt.Contains("1dline")) { lineYzero->Draw(); lineYdown->Draw(); lineYup->Draw(); } if(opt.Contains("sline")) { if(zStartPlasma>xmin && zStartPlasma<xmax) lineStartPlasma->Draw(); if(zStartNeutral>xmin && zStartNeutral<xmax) lineStartNeutral->Draw(); if(zEndNeutral>xmin && zEndNeutral<xmax) lineEndNeutral->Draw(); } // lineYdown->Draw(); // lineYup->Draw(); // Palettes re-arrangement pad[0]->Update(); Float_t y1 = pad[0]->GetBottomMargin(); Float_t y2 = 1 - pad[0]->GetTopMargin(); Float_t x1 = pad[0]->GetLeftMargin(); Float_t x2 = 1 - pad[0]->GetRightMargin(); TPaletteAxis *palette = NULL; if(Nspecies>=3) { if(hDen2D[2]) { palette = (TPaletteAxis*)hDen2D[2]->GetListOfFunctions()->FindObject("palette"); } } if(palette) { palette->SetY2NDC(y2 - 0.00); palette->SetY1NDC(0.66*(y1+y2) + 0.00); palette->SetX1NDC(x2 + 0.005); palette->SetX2NDC(x2 + 0.03); // palette->SetTitleFont(42); // palette->SetTitleOffset(0.85); palette->SetTitleOffset(999.9); palette->SetTitleSize(0.075); palette->SetLabelFont(42); palette->SetLabelSize(0.075); palette->SetLabelOffset(0.001); palette->SetBorderSize(2); palette->SetLineColor(1); } palette = (TPaletteAxis*)hDen2D[0]->GetListOfFunctions()->FindObject("palette"); if(palette) { palette->SetY2NDC(0.66*(y1+y2) - 0.00); palette->SetY1NDC(0.33*(y1+y2) + 0.00); palette->SetX1NDC(x2 + 0.005); palette->SetX2NDC(x2 + 0.03); // palette->SetTitleFont(42); palette->SetTitleOffset(0.80); palette->SetTitleSize(0.075); palette->SetLabelFont(42); palette->SetLabelSize(0.075); palette->SetLabelOffset(0.001); palette->SetBorderSize(2); palette->SetLineColor(1); } palette = (TPaletteAxis*)hDen2D[1]->GetListOfFunctions()->FindObject("palette"); if(palette) { palette->SetY2NDC(0.33*(y1+y2) - 0.00); palette->SetY1NDC(y1 + 0.00); palette->SetX1NDC(x2 + 0.005); palette->SetX2NDC(x2 + 0.03); //palette->SetTitleFont(42); //palette->SetTitleOffset(0.85); palette->SetTitleOffset(999.9); palette->SetTitleSize(0.075); palette->SetLabelFont(42); palette->SetLabelSize(0.075); palette->SetLabelOffset(0.001); palette->SetBorderSize(2); palette->SetLineColor(1); } // 1D charge density plots: Float_t yaxismin = pad[0]->GetUymin(); Float_t yaxismax = pad[0]->GetUymin() + 0.33*(pad[0]->GetUymax() - pad[0]->GetUymin()) - 0.00; Float_t denmin = Min[1]; Float_t denmax = Max[1]; if(opt.Contains("logz")) { denmin = TMath::Log10(denmin); denmax = TMath::Log10(denmax); } Float_t curmin = 0.0; Float_t curmax = 0.0; if(opt.Contains("curr")) { curmin = 0.0; curmax = hCur1D[1]->GetMaximum(); cout << Form(" Maximum driver current = %6.2f kA ", curmax) << endl ; if(Nspecies>=3) if(hCur1D[2]) cout << Form(" Maximum witness current = %6.2f kA ", hCur1D[2]->GetMaximum()) << endl ; // Round for better plotting curmax = 0.1*TMath::Nint(curmax*10); } for(Int_t i=0; i<Nspecies; i++) { if(!hDen1D[i]) continue; Float_t slope = (yaxismax - yaxismin)/(denmax - denmin); for(Int_t j=0; j<hDen1D[i]->GetNbinsX(); j++) { Float_t content = hDen1D[i]->GetBinContent(j+1); if(opt.Contains("logz")) content = TMath::Log10(content); if(content<denmin) hDen1D[i]->SetBinContent(j+1,yaxismin); else hDen1D[i]->SetBinContent(j+1,(content - denmin) * slope + yaxismin); } if(hCur1D[i]) { slope = (yaxismax - yaxismin)/(curmax - curmin); for(Int_t j=0; j<hCur1D[i]->GetNbinsX(); j++) { Float_t content = hCur1D[i]->GetBinContent(j+1); if(content<curmin) hCur1D[i]->SetBinContent(j+1,yaxismin); else hCur1D[i]->SetBinContent(j+1,(content - curmin) * slope + yaxismin); } } } // Plasma on-axis density: // hDen1D[0]->SetLineWidth(2); // hDen1D[0]->SetLineColor(kGray+1); // // // PlasmaGlob::SetH1Style(hDen1D[0],1); // hDen1D[0]->Draw("same C"); if(opt.Contains("curr")) { hCur1D[1]->SetLineWidth(2); hCur1D[1]->SetLineColor(PlasmaGlob::elecLine); hCur1D[1]->Draw("same C"); } else { hDen1D[1]->SetLineWidth(2); hDen1D[1]->SetLineColor(PlasmaGlob::elecLine); // hDen1D[1]->Draw("same C"); } if(Nspecies>=3) { if(hDen1D[2]) { if(opt.Contains("curr")) { hCur1D[2]->SetLineWidth(2); hCur1D[2]->SetLineColor(kOrange+8); hCur1D[2]->Draw("same C"); } else { hDen1D[2]->SetLineWidth(2); hDen1D[2]->SetLineColor(kOrange+8); // hDen1D[2]->Draw("same C"); } } } // Current axis TGaxis *axis = NULL; if(opt.Contains("curr")) { axis = new TGaxis(xMax-xRange/6.0,yMin - (factor-1)*yRange, xMax-xRange/6.0,yaxismax, 0.001,curmax,503,"+LS"); axis->SetLineWidth(1); axis->SetLineColor(kGray+3);//PlasmaGlob::elecLine); axis->SetLabelColor(kGray+3);//PlasmaGlob::elecLine); axis->SetLabelSize(0.06); axis->SetLabelOffset(0.01); axis->SetLabelFont(42); axis->SetTitleColor(kGray+3);//PlasmaGlob::elecLine); axis->SetTitleSize(0.06); axis->SetTitleOffset(0.6); axis->SetTitleFont(42); axis->SetTickSize(0.03); axis->SetTitle("I [kA]"); axis->CenterTitle(); axis->SetNdivisions(505); axis->Draw(); } TPaveText *textTime = new TPaveText(xMax - 0.3*xRange, yMax-0.15*yRange, xMax-0.1, yMax-0.05*yRange); //x2-0.17,y2-0.12,x2-0.02,y2-0.02,"NDC"); PlasmaGlob::SetPaveTextStyle(textTime,32); char ctext[128]; if(opt.Contains("units") && n0) sprintf(ctext,"z = %5.1f #mum", Time * skindepth / PUnits::um); else sprintf(ctext,"t = %5.1f #omega_{p}^{-1}",Time); textTime->SetTextFont(42); textTime->AddText(ctext); textTime->Draw(); // textDen->Draw(); // if(opt.Contains("units")) // textWav->Draw(); textLabel[0] = new TPaveText(xMin + 0.02*xRange, yMax-0.2*yRange, xMin+0.30*xRange, yMax-0.05*yRange); PlasmaGlob::SetPaveTextStyle(textLabel[0],12); textLabel[0]->SetTextFont(42); textLabel[0]->AddText(sLabels[0]); textLabel[0]->Draw(); pad[0]->RedrawAxis(); C->cd(0); sprintf(pname,"pad_%i",0); pad[1] = (TPad*) gROOT->FindObject(pname); pad[1]->Draw(); pad[1]->cd(); // <--------------------------------------------------------- Bottom Plot pad[1]->SetFrameLineWidth(3); pad[1]->SetTickx(1); hFrame = (TH2F*) gROOT->FindObject("hFrame2"); if(hFrame) delete hFrame; hFrame = (TH2F*) hDen2D[0]->Clone("hFrame2"); hFrame->Reset(); Float_t yFactor = pad[0]->GetAbsHNDC()/pad[1]->GetAbsHNDC(); hFrame->GetYaxis()->SetLabelSize(yFactor*0.085); hFrame->GetYaxis()->SetTitleSize(yFactor*0.09); hFrame->GetYaxis()->SetTitleOffset(0.7/yFactor); hFrame->GetYaxis()->SetTickLength(0.02/yFactor); hFrame->GetXaxis()->SetTitleSize(0.10); hFrame->GetXaxis()->SetLabelSize(0.08); hFrame->GetXaxis()->SetLabelOffset(0.02); hFrame->GetXaxis()->SetTitleOffset(1.0); hFrame->GetXaxis()->SetTickLength(0.04*yFactor); hFrame->SetLabelFont(42,"xyz"); hFrame->SetTitleFont(42,"xyz"); hFrame->Draw("col"); // hE2D[0]->GetZaxis()->SetNdivisions(505); hV2D->GetZaxis()->SetTitleFont(42); hV2D->GetZaxis()->SetTickLength(0.02/yFactor); exPot->Draw(); hV2D->Draw("col z same"); for(Int_t i=0; i<graphsV2D.GetEntriesFast(); i++) { TGraph *gr = (TGraph*) graphsV2D.At(i); if(!gr) continue; gr->Draw("C"); } for(Int_t i=0; i<graphsI2D.GetEntriesFast(); i++) { //if(i!=2) continue; TGraph *gr = (TGraph*) graphsI2D.At(i); if(!gr) continue; gr->Draw("C"); } if(opt.Contains("1dline")) { lineYzero->Draw(); lineYdown->Draw(); lineYup->Draw(); } if(opt.Contains("sline")) { if(zStartPlasma>xmin && zStartPlasma<xmax) lineStartPlasma->Draw(); if(zStartNeutral>xmin && zStartNeutral<xmax) lineStartNeutral->Draw(); if(zEndNeutral>xmin && zEndNeutral<xmax) lineEndNeutral->Draw(); } pad[1]->Update(); y1 = pad[1]->GetBottomMargin(); y2 = 1 - pad[1]->GetTopMargin(); x1 = pad[1]->GetLeftMargin(); x2 = 1 - pad[1]->GetRightMargin(); palette = (TPaletteAxis*)hV2D->GetListOfFunctions()->FindObject("palette"); if(palette) { palette->SetY2NDC(y2 - 0.00); palette->SetY1NDC(y1 + 0.00); palette->SetX1NDC(x2 + 0.005); palette->SetX2NDC(x2 + 0.03); // palette->SetTitleFont(42); palette->SetTitleSize(yFactor*0.075); palette->SetTitleOffset(0.80/yFactor); palette->SetLabelSize(yFactor*0.075); palette->SetLabelFont(42); palette->SetLabelOffset(0.01/yFactor); palette->SetBorderSize(2); palette->SetLineColor(1); } pad[1]->RedrawAxis(); textLabel[1] = new TPaveText(xMin + 0.02*xRange, yMax-0.2*yRange, xMin+0.30*xRange, yMax-0.05*yRange); PlasmaGlob::SetPaveTextStyle(textLabel[1],12); textLabel[1]->SetTextFont(42); textLabel[1]->AddText(sLabels[1]); textLabel[1]->Draw(); C->cd(); // Print to a file PlasmaGlob::imgconv(C,fOutName,opt); // --------------------------------------------------------- PlasmaGlob::DestroyCanvases(); }
int main (int argc, char *argv[]) { if (argc != 2) { cout << "Usage: " << argv[0] << " INPUT_FILE" << endl; cout << " or: " << argv[0] << " INPUT_LIST" << endl; cout << "" << endl; cout << endl; return 0; } string inputFile = argv[1], upperInputFile; upperInputFile.resize (inputFile.length ()); transform (inputFile.begin (), inputFile.end (), upperInputFile.begin (), ::toupper); // so canvases don't appear on the screen when being created // very useful when running on the OSU T3 from CERN gROOT->SetBatch(); gStyle->SetPadTopMargin(0.1); gStyle->SetPadBottomMargin(0.1); gStyle->SetPadLeftMargin(0.03); gStyle->SetPadRightMargin(0.08); //Create chain of root trees TChain chain("Delphes"); if (upperInputFile.length () < 5 || upperInputFile.substr (upperInputFile.length () - 5, 5) != ".ROOT") { ifstream fin (inputFile); string line; while(getline(fin, line)) { chain.Add(line.c_str()); } fin.close(); } else chain.Add(inputFile.c_str()); // Create object of class ExRootTreeReader ExRootTreeReader *treeReader = new ExRootTreeReader(&chain); // Get pointers to branches used in this analysis TClonesArray *branchTrack = treeReader->UseBranch("Track"); TClonesArray *branchCluster = treeReader->UseBranch("Cluster"); TClonesArray *branchNPU = treeReader->UseBranch("NPU"); //gStyle->SetOptStat(10011); //actually, let's turn this off for now gStyle->SetOptStat(0); TH2D *hist[LEN]; signal (SIGINT, signalHandler); //Loop over a LEN Events for (int event = 0; event < LEN && !interrupted; event++) { //Load Branches treeReader->ReadEntry(event); // N.B. this is a hack put in by Andrew using the ScalarHT class // it's the number of pileup interactions, it's not actually the HT unsigned nInteractions = (unsigned) ((ScalarHT *) branchNPU->At(0))->HT + 1; int nClusters = branchCluster->GetEntries(); // create and format the histogram for this event TString name = "TrackPtVsTrackZ_" + TString(Form("%d",event+1)); TCanvas *can = new TCanvas(name,name,1600,500); TString title = "Event " + TString(Form("%d",event+1)) + ": "; title += TString(Form("%d",nInteractions)) + " Interactions, "; title += TString(Form("%d",nClusters)) + " Clusters"; hist[event] = new TH2D(name, title, X_BIN, X_MIN, X_MAX, Y_BIN, Y_MIN, Y_MAX); hist[event]->GetXaxis()->SetTitle("track z [mm]"); hist[event]->GetXaxis()->SetLabelOffset(0.02); hist[event]->GetXaxis()->SetTitleOffset(1.2); hist[event]->GetYaxis()->SetTitle("track p_{T} [GeV]"); hist[event]->GetYaxis()->SetTitleOffset(0.35); TArrow *genPVArrow = new TArrow(0,0,0,0.01,0.01,"|>"); genPVArrow->SetLineColor(3); genPVArrow->SetFillColor(3); genPVArrow->SetLineWidth(0.1); genPVArrow->SetAngle(40); vector<float> interactionPositions; vector<TLine *> clusterLineVector; Cluster *recoPV = (Cluster *) branchCluster->At(0); TLine *highELine = new TLine(recoPV->Z,0,recoPV->Z,Y_MAX); highELine->SetLineColor(1); highELine->SetLineWidth(0.8); highELine->SetLineStyle(3); // Draw cluster lines // Skip first cluster since we've already drawn it (start from 1) for(int iCluster = 1; iCluster < branchCluster->GetEntries(); iCluster++) { Cluster *cluster = (Cluster *) branchCluster->At(iCluster); TLine *clusterLine = new TLine(cluster->Z,0,cluster->Z,Y_MAX); clusterLine->SetLineWidth(0.5); clusterLineVector.push_back(clusterLine); } for(int iTrack = 0; iTrack < branchTrack->GetEntries(); iTrack++) { Track *track = (Track *) branchTrack->At(iTrack); if (track->PT < Y_MAX) hist[event]->Fill(track->Z, track->PT); else hist[event]->Fill(track->Z, Y_MAX-0.01); // if entry would be off the y-scale, draw it in the last bin if(track->IsPU==0) { // track comes from primary interaction // genPVArrow->SetX1(track->TrueZ); FIXME // genPVArrow->SetX2(track->TrueZ); FIXME } // else if (find(interactionPositions.begin(), interactionPositions.end(), track->TrueZ) == interactionPositions.end()){ FIXME // interactionPositions.push_back(track->TrueZ); FIXME // } FIXME } //create arrows for all the generated pileup interactions vector<TArrow *> interactionArrowVector; for(uint iInteraction = 0; iInteraction < interactionPositions.size() ; iInteraction++) { TArrow *interactionArrow = new TArrow(interactionPositions.at(iInteraction),0,interactionPositions.at(iInteraction),0.01,0.01,"|>"); interactionArrow->SetLineWidth(0.1); interactionArrow->SetAngle(20); interactionArrow->SetLineColor(2); interactionArrow->SetFillColor(2); interactionArrowVector.push_back(interactionArrow); } //Draw and save images hist[event]->Draw("contz"); for(uint iCluster = 0; iCluster < clusterLineVector.size(); iCluster++) { clusterLineVector.at(iCluster)->Draw(); } for(uint iInteraction = 0; iInteraction < interactionArrowVector.size(); iInteraction++) { interactionArrowVector.at(iInteraction)->Draw(); } highELine->Draw(); genPVArrow->Draw(); TLegend *leg = new TLegend(0.07,0.6,0.25,0.89); leg->SetBorderSize(0); leg->SetFillColor(0); leg->SetFillStyle(0); leg->AddEntry(genPVArrow, "Primary Gen. Interaction", ""); if (interactionArrowVector.size() > 0) leg->AddEntry(interactionArrowVector.at(0), "Pileup Interactions", ""); leg->AddEntry(highELine, "Highest #Sigmap_{T}^{2} Cluster", "l"); if (clusterLineVector.size() > 0) leg->AddEntry(clusterLineVector.at(0), "Other Clusters", "l"); leg->Draw(); //hack to get the triangles to draw in the legend double x_left = X_MIN + (X_MAX-X_MIN)/13; double x_right = X_MIN + (X_MAX-X_MIN)/13; if (interactionArrowVector.size() > 0){ TArrow *interactionArrowLabel = new TArrow(x_left,Y_MAX*0.86,x_right,Y_MAX*0.86,0.02,"|>"); interactionArrowLabel->SetLineWidth(1); interactionArrowLabel->SetAngle(20); interactionArrowLabel->SetLineColor(2); interactionArrowLabel->SetFillColor(2); interactionArrowLabel->Draw(); } TArrow *genPVArrowLabel = new TArrow(x_left,Y_MAX*0.94,x_right,Y_MAX*0.94,0.02,"|>"); genPVArrowLabel->SetLineWidth(1); genPVArrowLabel->SetAngle(40); genPVArrowLabel->SetLineColor(3); genPVArrowLabel->SetFillColor(3); genPVArrowLabel->Draw(); can->SaveAs("output/" + name + ".pdf"); //can->Write(); } }
void sysPrior(){ int norder_ = 2; double tkEta = 1.0; double vn2Min = 0.00; double vn2Max = 0.40; double vn4Min = 0.00; double vn4Max = 0.40; double vn6Min = 0.00; double vn6Max = 0.40; double vn8Min = 0.00; double vn8Max = 0.40; double gamma1expMin = -1.0; double gamma1expMax = 0.5; double vn6vn4Min = 0.95; double vn6vn4Max = 1.02; double vn8vn4Min = 0.95; double vn8vn4Max = 1.02; double vn8vn6Min = 0.95; double vn8vn6Max = 1.02; double ratioMin = 0.98; double ratioMax = 1.02; double gamma1ExpRatioMin = 0.9; double gamma1ExpRatioMax = 1.1; TFile * fPriorNom; TFile * fPriorThin; TFile * fPriorWide; TH1D * hPriorNom[NCENT]; TH1D * hPriorThin[NCENT]; TH1D * hPriorWide[NCENT]; //-- Thin Cuts TFile * fUnfThin; TH1D * hUnfoldThin[NCENT][NITER]; TH1D * hRefoldThin[NCENT][NITER]; TFile * fStatThin; TH1D * hVarianceOfMean_Vn2_Thin; TH1D * hVarianceOfMean_Vn4_Thin; TH1D * hVarianceOfMean_Vn6_Thin; TH1D * hVarianceOfMean_Vn8_Thin; TH1D * hVarianceOfMean_Gamma1Exp_Thin; TH1D * hVarianceOfMean_Vn6Vn4_Thin; TH1D * hVarianceOfMean_Vn8Vn4_Thin; TH1D * hVarianceOfMean_Vn8Vn6_Thin; TGraphErrors * grVn2Thin; TGraphErrors * grVn4Thin; TGraphErrors * grVn6Thin; TGraphErrors * grVn8Thin; TGraphErrors * grGamma1ExpThin; TGraphErrors * grVn6Vn4Thin; TGraphErrors * grVn8Vn4Thin; TGraphErrors * grVn8Vn6Thin; double vn2Thin[NCENT]; double vn4Thin[NCENT]; double vn6Thin[NCENT]; double vn8Thin[NCENT]; double gamma1expThin[NCENT]; double vn6vn4Thin[NCENT]; double vn8vn4Thin[NCENT]; double vn8vn6Thin[NCENT]; double vn2Thin_staterr[NCENT]; double vn4Thin_staterr[NCENT]; double vn6Thin_staterr[NCENT]; double vn8Thin_staterr[NCENT]; double gamma1expThin_staterr[NCENT]; double vn6vn4Thin_staterr[NCENT]; double vn8vn4Thin_staterr[NCENT]; double vn8vn6Thin_staterr[NCENT]; TGraphErrors * grVn2Thin_RatiotoNominal; TGraphErrors * grVn4Thin_RatiotoNominal; TGraphErrors * grVn6Thin_RatiotoNominal; TGraphErrors * grVn8Thin_RatiotoNominal; TGraphErrors * grGamma1ExpThin_RatiotoNominal; TGraphErrors * grVn6Vn4Thin_RatiotoNominal; TGraphErrors * grVn8Vn4Thin_RatiotoNominal; TGraphErrors * grVn8Vn6Thin_RatiotoNominal; double vn2Thin_RatiotoNominal[NCENT]; double vn4Thin_RatiotoNominal[NCENT]; double vn6Thin_RatiotoNominal[NCENT]; double vn8Thin_RatiotoNominal[NCENT]; double gamma1expThin_RatiotoNominal[NCENT]; double vn6vn4Thin_RatiotoNominal[NCENT]; double vn8vn4Thin_RatiotoNominal[NCENT]; double vn8vn6Thin_RatiotoNominal[NCENT]; double vn2Thin_RatiotoNominal_staterr[NCENT]; double vn4Thin_RatiotoNominal_staterr[NCENT]; double vn6Thin_RatiotoNominal_staterr[NCENT]; double vn8Thin_RatiotoNominal_staterr[NCENT]; double gamma1expThin_RatiotoNominal_staterr[NCENT]; double vn6vn4Thin_RatiotoNominal_staterr[NCENT]; double vn8vn4Thin_RatiotoNominal_staterr[NCENT]; double vn8vn6Thin_RatiotoNominal_staterr[NCENT]; int iterCutoffThin[NCENT]; //-- Wide Cuts TFile * fUnfWide; TH1D * hUnfoldWide[NCENT][NITER]; TH1D * hRefoldWide[NCENT][NITER]; TFile * fStatWide; TH1D * hVarianceOfMean_Vn2_Wide; TH1D * hVarianceOfMean_Vn4_Wide; TH1D * hVarianceOfMean_Vn6_Wide; TH1D * hVarianceOfMean_Vn8_Wide; TH1D * hVarianceOfMean_Gamma1Exp_Wide; TH1D * hVarianceOfMean_Vn6Vn4_Wide; TH1D * hVarianceOfMean_Vn8Vn4_Wide; TH1D * hVarianceOfMean_Vn8Vn6_Wide; TGraphErrors * grVn2Wide; TGraphErrors * grVn4Wide; TGraphErrors * grVn6Wide; TGraphErrors * grVn8Wide; TGraphErrors * grGamma1ExpWide; TGraphErrors * grVn6Vn4Wide; TGraphErrors * grVn8Vn4Wide; TGraphErrors * grVn8Vn6Wide; double vn2Wide[NCENT]; double vn4Wide[NCENT]; double vn6Wide[NCENT]; double vn8Wide[NCENT]; double gamma1expWide[NCENT]; double vn6vn4Wide[NCENT]; double vn8vn4Wide[NCENT]; double vn8vn6Wide[NCENT]; double vn2Wide_staterr[NCENT]; double vn4Wide_staterr[NCENT]; double vn6Wide_staterr[NCENT]; double vn8Wide_staterr[NCENT]; double gamma1expWide_staterr[NCENT]; double vn6vn4Wide_staterr[NCENT]; double vn8vn4Wide_staterr[NCENT]; double vn8vn6Wide_staterr[NCENT]; TGraphErrors * grVn2Wide_RatiotoNominal; TGraphErrors * grVn4Wide_RatiotoNominal; TGraphErrors * grVn6Wide_RatiotoNominal; TGraphErrors * grVn8Wide_RatiotoNominal; TGraphErrors * grGamma1ExpWide_RatiotoNominal; TGraphErrors * grVn6Vn4Wide_RatiotoNominal; TGraphErrors * grVn8Vn4Wide_RatiotoNominal; TGraphErrors * grVn8Vn6Wide_RatiotoNominal; double vn2Wide_RatiotoNominal[NCENT]; double vn4Wide_RatiotoNominal[NCENT]; double vn6Wide_RatiotoNominal[NCENT]; double vn8Wide_RatiotoNominal[NCENT]; double gamma1expWide_RatiotoNominal[NCENT]; double vn6vn4Wide_RatiotoNominal[NCENT]; double vn8vn4Wide_RatiotoNominal[NCENT]; double vn8vn6Wide_RatiotoNominal[NCENT]; double vn2Wide_RatiotoNominal_staterr[NCENT]; double vn4Wide_RatiotoNominal_staterr[NCENT]; double vn6Wide_RatiotoNominal_staterr[NCENT]; double vn8Wide_RatiotoNominal_staterr[NCENT]; double gamma1expWide_RatiotoNominal_staterr[NCENT]; double vn6vn4Wide_RatiotoNominal_staterr[NCENT]; double vn8vn4Wide_RatiotoNominal_staterr[NCENT]; double vn8vn6Wide_RatiotoNominal_staterr[NCENT]; int iterCutoffWide[NCENT]; //-- Nominal TFile * fAnaNominal; TFile * fUnfNominal; TH1D * hObsNominal[NCENT]; TH1D * hUnfoldNominal[NCENT][NITER]; TH1D * hRefoldNominal[NCENT][NITER]; TFile * fStatNominal; TH1D * hVarianceOfMean_Vn2_Nominal; TH1D * hVarianceOfMean_Vn4_Nominal; TH1D * hVarianceOfMean_Vn6_Nominal; TH1D * hVarianceOfMean_Vn8_Nominal; TH1D * hVarianceOfMean_Gamma1Exp_Nominal; TH1D * hVarianceOfMean_Vn6Vn4_Nominal; TH1D * hVarianceOfMean_Vn8Vn4_Nominal; TH1D * hVarianceOfMean_Vn8Vn6_Nominal; TGraphErrors * grVn2Nominal; TGraphErrors * grVn4Nominal; TGraphErrors * grVn6Nominal; TGraphErrors * grVn8Nominal; TGraphErrors * grGamma1ExpNominal; TGraphErrors * grVn6Vn4Nominal; TGraphErrors * grVn8Vn4Nominal; TGraphErrors * grVn8Vn6Nominal; double vn2Nominal[NCENT]; double vn4Nominal[NCENT]; double vn6Nominal[NCENT]; double vn8Nominal[NCENT]; double gamma1expNominal[NCENT]; double vn6vn4Nominal[NCENT]; double vn8vn4Nominal[NCENT]; double vn8vn6Nominal[NCENT]; double vn2Nominal_staterr[NCENT]; double vn4Nominal_staterr[NCENT]; double vn6Nominal_staterr[NCENT]; double vn8Nominal_staterr[NCENT]; double gamma1expNominal_staterr[NCENT]; double vn6vn4Nominal_staterr[NCENT]; double vn8vn4Nominal_staterr[NCENT]; double vn8vn6Nominal_staterr[NCENT]; int iterCutoffNominal[NCENT]; TLatex latex; // //-- MAIN // setTDRStyle(); latex.SetNDC(); //-- Grab files fPriorNom = new TFile("../../AnalyzerResults/DDResp/dataDrivenResponseAndPriors.root"); fPriorThin = new TFile("newPriors/dataDrivenResponseAndPriors_Thinner.root"); fPriorWide = new TFile("newPriors/dataDrivenResponseAndPriors_Wider.root"); fUnfThin = new TFile( Form("../../UnfoldResults/dataResp/data%i_Thinner.root", norder_) ); fUnfWide = new TFile( Form("../../UnfoldResults/dataResp/data%i_Wider.root", norder_) ); fAnaNominal = new TFile( "../../AnalyzerResults/CastleEbyE.root" ); fUnfNominal = new TFile( Form("../../UnfoldResults/dataResp/data%i.root", norder_) ); //-- Stat Errors fStatThin = new TFile( Form("../../../../statErrorHandle/v%i/eta%.1f/systematicStudies/prior/StatUncertPriorThinner_v%i.root", norder_, tkEta, norder_) ); hVarianceOfMean_Vn2_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn2_PriorThinner" ); hVarianceOfMean_Vn4_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn4_PriorThinner" ); hVarianceOfMean_Vn6_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn6_PriorThinner" ); hVarianceOfMean_Vn8_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn8_PriorThinner" ); hVarianceOfMean_Gamma1Exp_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Gamma1Exp_PriorThinner" ); hVarianceOfMean_Vn6Vn4_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn6Vn4_PriorThinner" ); hVarianceOfMean_Vn8Vn4_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn8Vn4_PriorThinner" ); hVarianceOfMean_Vn8Vn6_Thin = (TH1D*) fStatThin->Get( "hVarianceOfMean_Vn8Vn6_PriorThinner" ); fStatWide = new TFile( Form("../../../../statErrorHandle/v%i/eta%.1f/systematicStudies/prior/StatUncertPriorWider_v%i.root", norder_, tkEta, norder_) ); hVarianceOfMean_Vn2_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn2_PriorWider" ); hVarianceOfMean_Vn4_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn4_PriorWider" ); hVarianceOfMean_Vn6_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn6_PriorWider" ); hVarianceOfMean_Vn8_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn8_PriorWider" ); hVarianceOfMean_Gamma1Exp_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Gamma1Exp_PriorWider" ); hVarianceOfMean_Vn6Vn4_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn6Vn4_PriorWider" ); hVarianceOfMean_Vn8Vn4_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn8Vn4_PriorWider" ); hVarianceOfMean_Vn8Vn6_Wide = (TH1D*) fStatWide->Get( "hVarianceOfMean_Vn8Vn6_PriorWider" ); fStatNominal = new TFile( Form("../../../../statErrorHandle/v%i/eta%.1f/StatisticalUncertainties_v%i.root", norder_, tkEta, norder_) ); hVarianceOfMean_Vn2_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn2" ); hVarianceOfMean_Vn4_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn4" ); hVarianceOfMean_Vn6_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn6" ); hVarianceOfMean_Vn8_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn8" ); hVarianceOfMean_Gamma1Exp_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Gamma1Exp" ); hVarianceOfMean_Vn6Vn4_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn6Vn4" ); hVarianceOfMean_Vn8Vn4_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn8Vn4" ); hVarianceOfMean_Vn8Vn6_Nominal = (TH1D*) fStatNominal->Get( "hVarianceOfMean_Vn8Vn6" ); for(int icent = 0; icent < NCENT; icent++){ hObsNominal[icent] = (TH1D*) fAnaNominal->Get( Form("qwebye/hVnFull_c%i", icent) ); hObsNominal[icent]->SetName( Form("hVnFull_c%i_nominal", icent) ); hPriorNom[icent] = (TH1D*) fPriorNom->Get( Form("hPrior_c%i", icent) ); hPriorNom[icent]->GetXaxis()->SetTitle( Form("v_{%i}", norder_) ); hPriorNom[icent]->GetYaxis()->SetTitle( "Events" ); hPriorNom[icent]->SetLineColor(1); hPriorNom[icent]->SetMarkerColor(1); hPriorNom[icent]->SetMarkerStyle(20); hPriorThin[icent] = (TH1D*) fPriorThin->Get( Form("hPrior_c%i", icent) ); hPriorThin[icent]->GetXaxis()->SetTitle( Form("v_{%i}", norder_) ); hPriorThin[icent]->GetYaxis()->SetTitle( "Events" ); hPriorThin[icent]->SetLineColor(2); hPriorThin[icent]->SetMarkerColor(2); hPriorThin[icent]->SetMarkerStyle(21); hPriorWide[icent] = (TH1D*) fPriorWide->Get( Form("hPrior_c%i", icent) ); hPriorWide[icent]->GetXaxis()->SetTitle( Form("v_{%i}", norder_) ); hPriorWide[icent]->GetYaxis()->SetTitle( "Events" ); hPriorWide[icent]->SetLineColor(4); hPriorWide[icent]->SetMarkerColor(4); hPriorWide[icent]->SetMarkerStyle(22); //-- -------------------- Thin -------------------- //-- Iter loop iterCutoffThin[icent] = 0; for(int i = 0; i < NITER; i++){ //-- Get the unfolded histograms hUnfoldThin[icent][i] = (TH1D*) fUnfThin->Get( Form("hreco%i_c%i", iter[i], icent) ); hUnfoldThin[icent][i]->SetName( Form("hreco%i_c%i_thin", iter[i], icent) ); hUnfoldThin[icent][i]->SetLineColor(col[i]); hUnfoldThin[icent][i]->SetMarkerColor(col[i]); //-- Get the Refolded histograms hRefoldThin[icent][i] = (TH1D*) fUnfThin->Get( Form("hrefold%i_c%i", iter[i], icent) ); hRefoldThin[icent][i]->SetName( Form("hrefold%i_c%i_thin", iter[i], icent) ); hRefoldThin[icent][i]->SetLineWidth(2); hRefoldThin[icent][i]->SetLineColor(col[i]); hRefoldThin[icent][i]->SetMarkerColor(col[i]); //-- Chi squares double chi2NDF_Refold = hRefoldThin[icent][i]->Chi2Test(hObsNominal[icent], "CHI2/NDF"); if( chi2NDF_Refold < 1.2 ){ iterCutoffThin[icent] = i; FixUnfold( hUnfoldThin[icent][i] ); EbyECumu cumu(hUnfoldThin[icent][i]); vn2Thin[icent] = cumu.GetCumu_vn2(); vn4Thin[icent] = cumu.GetCumu_vn4(); vn6Thin[icent] = cumu.GetCumu_vn6(); vn8Thin[icent] = cumu.GetCumu_vn8(); gamma1expThin[icent] = cumu.GetGamma1Exp(); if( vn4Thin[icent] == 0 ){ vn6vn4Thin[icent] = 0; vn8vn4Thin[icent] = 0; } else{ vn6vn4Thin[icent] = vn6Thin[icent] / vn4Thin[icent]; vn8vn4Thin[icent] = vn8Thin[icent] / vn4Thin[icent]; } if( vn6Thin[icent] == 0 ) vn8vn6Thin[icent] = 0; else vn8vn6Thin[icent] = vn8Thin[icent] / vn6Thin[icent]; vn2Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Thin->GetBinContent(icent+1) ); vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Thin->GetBinContent(icent+1) ); vn6Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Thin->GetBinContent(icent+1) ); vn8Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Thin->GetBinContent(icent+1) ); gamma1expThin_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Thin->GetBinContent(icent+1) ); vn6vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Thin->GetBinContent(icent+1) ); vn8vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Thin->GetBinContent(icent+1) ); vn8vn6Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Thin->GetBinContent(icent+1) ); break; } if( i == NITER - 1 ){ iterCutoffThin[icent] = i; FixUnfold( hUnfoldThin[icent][i] ); EbyECumu cumu(hUnfoldThin[icent][i]); vn2Thin[icent] = cumu.GetCumu_vn2(); vn4Thin[icent] = cumu.GetCumu_vn4(); vn6Thin[icent] = cumu.GetCumu_vn6(); vn8Thin[icent] = cumu.GetCumu_vn8(); gamma1expThin[icent] = cumu.GetGamma1Exp(); if( vn4Thin[icent] == 0 ){ vn6vn4Thin[icent] = 0; vn8vn4Thin[icent] = 0; } else{ vn6vn4Thin[icent] = vn6Thin[icent] / vn4Thin[icent]; vn8vn4Thin[icent] = vn8Thin[icent] / vn4Thin[icent]; } if( vn6Thin[icent] == 0 ) vn8vn6Thin[icent] = 0; else vn8vn6Thin[icent] = vn8Thin[icent] / vn6Thin[icent]; vn2Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Thin->GetBinContent(icent+1) ); vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Thin->GetBinContent(icent+1) ); vn6Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Thin->GetBinContent(icent+1) ); vn8Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Thin->GetBinContent(icent+1) ); gamma1expThin_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Thin->GetBinContent(icent+1) ); vn6vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Thin->GetBinContent(icent+1) ); vn8vn4Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Thin->GetBinContent(icent+1) ); vn8vn6Thin_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Thin->GetBinContent(icent+1) ); break; } } //-- End iter loop //-- -------------------- Wide -------------------- //-- Iter loop iterCutoffWide[icent] = 0; for(int i = 0; i < NITER; i++){ //-- Get the unfolded histograms hUnfoldWide[icent][i] = (TH1D*) fUnfWide->Get( Form("hreco%i_c%i", iter[i], icent) ); hUnfoldWide[icent][i]->SetName( Form("hreco%i_c%i_wide", iter[i], icent) ); hUnfoldWide[icent][i]->SetLineColor(col[i]); hUnfoldWide[icent][i]->SetMarkerColor(col[i]); //-- Get the Refolded histograms hRefoldWide[icent][i] = (TH1D*) fUnfWide->Get( Form("hrefold%i_c%i", iter[i], icent) ); hRefoldWide[icent][i]->SetName( Form("hrefold%i_c%i_wide", iter[i], icent) ); hRefoldWide[icent][i]->SetLineWidth(2); hRefoldWide[icent][i]->SetLineColor(col[i]); hRefoldWide[icent][i]->SetMarkerColor(col[i]); //-- Chi squares double chi2NDF_Refold = hRefoldWide[icent][i]->Chi2Test(hObsNominal[icent], "CHI2/NDF"); if( chi2NDF_Refold < 1.2 ){ iterCutoffWide[icent] = i; FixUnfold( hUnfoldWide[icent][i] ); EbyECumu cumu(hUnfoldWide[icent][i]); vn2Wide[icent] = cumu.GetCumu_vn2(); vn4Wide[icent] = cumu.GetCumu_vn4(); vn6Wide[icent] = cumu.GetCumu_vn6(); vn8Wide[icent] = cumu.GetCumu_vn8(); gamma1expWide[icent] = cumu.GetGamma1Exp(); if( vn4Wide[icent] == 0 ){ vn6vn4Wide[icent] = 0; vn8vn4Wide[icent] = 0; } else{ vn6vn4Wide[icent] = vn6Wide[icent] / vn4Wide[icent]; vn8vn4Wide[icent] = vn8Wide[icent] / vn4Wide[icent]; } if( vn6Wide[icent] == 0 ) vn8vn6Wide[icent] = 0; else vn8vn6Wide[icent] = vn8Wide[icent] / vn6Wide[icent]; vn2Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Wide->GetBinContent(icent+1) ); vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Wide->GetBinContent(icent+1) ); vn6Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Wide->GetBinContent(icent+1) ); vn8Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Wide->GetBinContent(icent+1) ); gamma1expWide_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Wide->GetBinContent(icent+1) ); vn6vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Wide->GetBinContent(icent+1) ); vn8vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Wide->GetBinContent(icent+1) ); vn8vn6Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Wide->GetBinContent(icent+1) ); break; } if( i == NITER - 1 ){ iterCutoffWide[icent] = i; FixUnfold( hUnfoldWide[icent][i] ); EbyECumu cumu(hUnfoldWide[icent][i]); vn2Wide[icent] = cumu.GetCumu_vn2(); vn4Wide[icent] = cumu.GetCumu_vn4(); vn6Wide[icent] = cumu.GetCumu_vn6(); vn8Wide[icent] = cumu.GetCumu_vn8(); gamma1expWide[icent] = cumu.GetGamma1Exp(); if( vn4Wide[icent] == 0 ){ vn6vn4Wide[icent] = 0; vn8vn4Wide[icent] = 0; } else{ vn6vn4Wide[icent] = vn6Wide[icent] / vn4Wide[icent]; vn8vn4Wide[icent] = vn8Wide[icent] / vn4Wide[icent]; } if( vn6Wide[icent] == 0 ) vn8vn6Wide[icent] = 0; else vn8vn6Wide[icent] = vn8Wide[icent] / vn6Wide[icent]; vn2Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Wide->GetBinContent(icent+1) ); vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Wide->GetBinContent(icent+1) ); vn6Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Wide->GetBinContent(icent+1) ); vn8Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Wide->GetBinContent(icent+1) ); gamma1expWide_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Wide->GetBinContent(icent+1) ); vn6vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Wide->GetBinContent(icent+1) ); vn8vn4Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Wide->GetBinContent(icent+1) ); vn8vn6Wide_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Wide->GetBinContent(icent+1) ); break; } } //-- End iter loop //-- -------------------- Nominal -------------------- //-- Iter loop iterCutoffNominal[icent] = 0; for(int i = 0; i < NITER; i++){ //-- Get the unfolded histograms hUnfoldNominal[icent][i] = (TH1D*) fUnfNominal->Get( Form("hreco%i_c%i", iter[i], icent) ); hUnfoldNominal[icent][i]->SetName( Form("hreco%i_c%i_nominal", iter[i], icent) ); hUnfoldNominal[icent][i]->SetLineColor(col[i]); hUnfoldNominal[icent][i]->SetMarkerColor(col[i]); //-- Get the Refolded histograms hRefoldNominal[icent][i] = (TH1D*) fUnfNominal->Get( Form("hrefold%i_c%i", iter[i], icent) ); hRefoldNominal[icent][i]->SetName( Form("hrefold%i_c%i_nominal", iter[i], icent) ); hRefoldNominal[icent][i]->SetLineWidth(2); hRefoldNominal[icent][i]->SetLineColor(col[i]); hRefoldNominal[icent][i]->SetMarkerColor(col[i]); //-- Chi squares double chi2NDF_Refold = hRefoldNominal[icent][i]->Chi2Test(hObsNominal[icent], "CHI2/NDF"); if( chi2NDF_Refold < 1.2 ){ iterCutoffNominal[icent] = i; FixUnfold( hUnfoldNominal[icent][i] ); EbyECumu cumu(hUnfoldNominal[icent][i]); vn2Nominal[icent] = cumu.GetCumu_vn2(); vn4Nominal[icent] = cumu.GetCumu_vn4(); vn6Nominal[icent] = cumu.GetCumu_vn6(); vn8Nominal[icent] = cumu.GetCumu_vn8(); gamma1expNominal[icent] = cumu.GetGamma1Exp(); if( vn4Nominal[icent] == 0 ){ vn6vn4Nominal[icent] = 0; vn8vn4Nominal[icent] = 0; } else{ vn6vn4Nominal[icent] = vn6Nominal[icent] / vn4Nominal[icent]; vn8vn4Nominal[icent] = vn8Nominal[icent] / vn4Nominal[icent]; } if( vn6Nominal[icent] == 0 ) vn8vn6Nominal[icent] = 0; else vn8vn6Nominal[icent] = vn8Nominal[icent] / vn6Nominal[icent]; vn2Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Nominal->GetBinContent(icent+1) ); vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Nominal->GetBinContent(icent+1) ); vn6Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Nominal->GetBinContent(icent+1) ); vn8Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Nominal->GetBinContent(icent+1) ); gamma1expNominal_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Nominal->GetBinContent(icent+1) ); vn6vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Nominal->GetBinContent(icent+1) ); vn8vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Nominal->GetBinContent(icent+1) ); vn8vn6Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Nominal->GetBinContent(icent+1) ); break; } if( i == NITER - 1 ){ iterCutoffNominal[icent] = i; FixUnfold( hUnfoldNominal[icent][i] ); EbyECumu cumu(hUnfoldNominal[icent][i]); vn2Nominal[icent] = cumu.GetCumu_vn2(); vn4Nominal[icent] = cumu.GetCumu_vn4(); vn6Nominal[icent] = cumu.GetCumu_vn6(); vn8Nominal[icent] = cumu.GetCumu_vn8(); gamma1expNominal[icent] = cumu.GetGamma1Exp(); if( vn4Nominal[icent] == 0 ){ vn6vn4Nominal[icent] = 0; vn8vn4Nominal[icent] = 0; } else{ vn6vn4Nominal[icent] = vn6Nominal[icent] / vn4Nominal[icent]; vn8vn4Nominal[icent] = vn8Nominal[icent] / vn4Nominal[icent]; } if( vn6Nominal[icent] == 0 ) vn8vn6Nominal[icent] = 0; else vn8vn6Nominal[icent] = vn8Nominal[icent] / vn6Nominal[icent]; vn2Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn2_Nominal->GetBinContent(icent+1) ); vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn4_Nominal->GetBinContent(icent+1) ); vn6Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn6_Nominal->GetBinContent(icent+1) ); vn8Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8_Nominal->GetBinContent(icent+1) ); gamma1expNominal_staterr[icent] = sqrt( hVarianceOfMean_Gamma1Exp_Nominal->GetBinContent(icent+1) ); vn6vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn6Vn4_Nominal->GetBinContent(icent+1) ); vn8vn4Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn4_Nominal->GetBinContent(icent+1) ); vn8vn6Nominal_staterr[icent] = sqrt( hVarianceOfMean_Vn8Vn6_Nominal->GetBinContent(icent+1) ); break; } } //-- End iter loop } //-- End Cent loop //-- Calculate ratios to the nominal case for(int icent = 0; icent < NCENT; icent++){ double vn2T = vn2Thin[icent]; double vn4T = vn4Thin[icent]; double vn6T = vn6Thin[icent]; double vn8T = vn8Thin[icent]; double gamma1expT = gamma1expThin[icent]; double vn6vn4T = vn6vn4Thin[icent]; double vn8vn4T = vn8vn4Thin[icent]; double vn8vn6T = vn8vn6Thin[icent]; double vn2T_e = vn2Thin_staterr[icent]; double vn4T_e = vn4Thin_staterr[icent]; double vn6T_e = vn6Thin_staterr[icent]; double vn8T_e = vn8Thin_staterr[icent]; double gamma1expT_e = gamma1expThin_staterr[icent]; double vn6vn4T_e = vn6vn4Thin_staterr[icent]; double vn8vn4T_e = vn8vn4Thin_staterr[icent]; double vn8vn6T_e = vn8vn6Thin_staterr[icent]; double vn2W = vn2Wide[icent]; double vn4W = vn4Wide[icent]; double vn6W = vn6Wide[icent]; double vn8W = vn8Wide[icent]; double gamma1expW = gamma1expWide[icent]; double vn6vn4W = vn6vn4Wide[icent]; double vn8vn4W = vn8vn4Wide[icent]; double vn8vn6W = vn8vn6Wide[icent]; double vn2W_e = vn2Wide_staterr[icent]; double vn4W_e = vn4Wide_staterr[icent]; double vn6W_e = vn6Wide_staterr[icent]; double vn8W_e = vn8Wide_staterr[icent]; double gamma1expW_e = gamma1expWide_staterr[icent]; double vn6vn4W_e = vn6vn4Wide_staterr[icent]; double vn8vn4W_e = vn8vn4Wide_staterr[icent]; double vn8vn6W_e = vn8vn6Wide_staterr[icent]; double vn2N = vn2Nominal[icent]; double vn4N = vn4Nominal[icent]; double vn6N = vn6Nominal[icent]; double vn8N = vn8Nominal[icent]; double gamma1expN = gamma1expNominal[icent]; double vn6vn4N = vn6vn4Nominal[icent]; double vn8vn4N = vn8vn4Nominal[icent]; double vn8vn6N = vn8vn6Nominal[icent]; double vn2N_e = vn2Nominal_staterr[icent]; double vn4N_e = vn4Nominal_staterr[icent]; double vn6N_e = vn6Nominal_staterr[icent]; double vn8N_e = vn8Nominal_staterr[icent]; double gamma1expN_e = gamma1expNominal_staterr[icent]; double vn6vn4N_e = vn6vn4Nominal_staterr[icent]; double vn8vn4N_e = vn8vn4Nominal_staterr[icent]; double vn8vn6N_e = vn8vn6Nominal_staterr[icent]; double r2T = vn2T / vn2N; double r4T = vn4T / vn4N; double r6T = vn6T / vn6N; double r8T = vn8T / vn8N; double rgamma1expT = gamma1expT / gamma1expN; double r64T = vn6vn4T / vn6vn4N; double r84T = vn8vn4T / vn8vn4N; double r86T = vn8vn6T / vn8vn6N; double r2T_e = sqrt( pow(vn2T_e/vn2N, 2) + pow(vn2T*vn2N_e/vn2N/vn2N, 2) ); double r4T_e = sqrt( pow(vn4T_e/vn4N, 2) + pow(vn4T*vn4N_e/vn4N/vn4N, 2) ); double r6T_e = sqrt( pow(vn6T_e/vn6N, 2) + pow(vn6T*vn6N_e/vn6N/vn6N, 2) ); double r8T_e = sqrt( pow(vn8T_e/vn8N, 2) + pow(vn8T*vn8N_e/vn8N/vn8N, 2) ); double rgamma1expT_e = sqrt( pow(gamma1expT_e/gamma1expN, 2) + pow(gamma1expT*gamma1expN_e/gamma1expN/gamma1expN, 2) ); double r64T_e = sqrt( pow(vn6vn4T_e/vn6vn4N, 2) + pow(vn6vn4T*vn6vn4N_e/vn6vn4N/vn6vn4N, 2) ); double r84T_e = sqrt( pow(vn8vn4T_e/vn8vn4N, 2) + pow(vn8vn4T*vn8vn4N_e/vn8vn4N/vn8vn4N, 2) ); double r86T_e = sqrt( pow(vn8vn6T_e/vn8vn6N, 2) + pow(vn8vn6T*vn8vn6N_e/vn8vn6N/vn8vn6N, 2) ); double r2W = vn2W / vn2N; double r4W = vn4W / vn4N; double r6W = vn6W / vn6N; double r8W = vn8W / vn8N; double rgamma1expW = gamma1expW / gamma1expN; double r64W = vn6vn4W / vn6vn4N; double r84W = vn8vn4W / vn8vn4N; double r86W = vn8vn6W / vn8vn6N; double r2W_e = sqrt( pow(vn2W_e/vn2N, 2) + pow(vn2W*vn2N_e/vn2N/vn2N, 2) ); double r4W_e = sqrt( pow(vn4W_e/vn4N, 2) + pow(vn4W*vn4N_e/vn4N/vn4N, 2) ); double r6W_e = sqrt( pow(vn6W_e/vn6N, 2) + pow(vn6W*vn6N_e/vn6N/vn6N, 2) ); double r8W_e = sqrt( pow(vn8W_e/vn8N, 2) + pow(vn8W*vn8N_e/vn8N/vn8N, 2) ); double rgamma1expW_e = sqrt( pow(gamma1expW_e/gamma1expN, 2) + pow(gamma1expW*gamma1expN_e/gamma1expN/gamma1expN, 2) ); double r64W_e = sqrt( pow(vn6vn4W_e/vn6vn4N, 2) + pow(vn6vn4W*vn6vn4N_e/vn6vn4N/vn6vn4N, 2) ); double r84W_e = sqrt( pow(vn8vn4W_e/vn8vn4N, 2) + pow(vn8vn4W*vn8vn4N_e/vn8vn4N/vn8vn4N, 2) ); double r86W_e = sqrt( pow(vn8vn6W_e/vn8vn6N, 2) + pow(vn8vn6W*vn8vn6N_e/vn8vn6N/vn8vn6N, 2) ); vn2Thin_RatiotoNominal[icent] = r2T; vn4Thin_RatiotoNominal[icent] = r4T; vn6Thin_RatiotoNominal[icent] = r6T; vn8Thin_RatiotoNominal[icent] = r8T; gamma1expThin_RatiotoNominal[icent] = rgamma1expT; vn6vn4Thin_RatiotoNominal[icent] = r64T; vn8vn4Thin_RatiotoNominal[icent] = r84T; vn8vn6Thin_RatiotoNominal[icent] = r86T; vn2Thin_RatiotoNominal_staterr[icent] = r2T_e; vn4Thin_RatiotoNominal_staterr[icent] = r4T_e; vn6Thin_RatiotoNominal_staterr[icent] = r6T_e; vn8Thin_RatiotoNominal_staterr[icent] = r8T_e; gamma1expThin_RatiotoNominal_staterr[icent] = rgamma1expT_e; vn6vn4Thin_RatiotoNominal_staterr[icent] = r64T_e; vn8vn4Thin_RatiotoNominal_staterr[icent] = r84T_e; vn8vn6Thin_RatiotoNominal_staterr[icent] = r86T_e; vn2Wide_RatiotoNominal[icent] = r2W; vn4Wide_RatiotoNominal[icent] = r4W; vn6Wide_RatiotoNominal[icent] = r6W; vn8Wide_RatiotoNominal[icent] = r8W; gamma1expWide_RatiotoNominal[icent] = rgamma1expW; vn6vn4Wide_RatiotoNominal[icent] = r64W; vn8vn4Wide_RatiotoNominal[icent] = r84W; vn8vn6Wide_RatiotoNominal[icent] = r86W; vn2Wide_RatiotoNominal_staterr[icent] = r2W_e; vn4Wide_RatiotoNominal_staterr[icent] = r4W_e; vn6Wide_RatiotoNominal_staterr[icent] = r6W_e; vn8Wide_RatiotoNominal_staterr[icent] = r8W_e; gamma1expWide_RatiotoNominal_staterr[icent] = rgamma1expW_e; vn6vn4Wide_RatiotoNominal_staterr[icent] = r64W_e; vn8vn4Wide_RatiotoNominal_staterr[icent] = r84W_e; vn8vn6Wide_RatiotoNominal_staterr[icent] = r86W_e; } //-- Make sweet, sweet TGraphErrors double cErr[NCENT]; for(int icent = 0; icent < NCENT; icent++) cErr[icent] = 0; //-- Ratios grVn2Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn2Thin_RatiotoNominal, cErr, vn2Thin_RatiotoNominal_staterr); grVn4Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn4Thin_RatiotoNominal, cErr, vn4Thin_RatiotoNominal_staterr); grVn6Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn6Thin_RatiotoNominal, cErr, vn6Thin_RatiotoNominal_staterr); grVn8Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8Thin_RatiotoNominal, cErr, vn8Thin_RatiotoNominal_staterr); grGamma1ExpThin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, gamma1expThin_RatiotoNominal, cErr, gamma1expThin_RatiotoNominal_staterr); grVn6Vn4Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn6vn4Thin_RatiotoNominal, cErr, vn6vn4Thin_RatiotoNominal_staterr); grVn8Vn4Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8vn4Thin_RatiotoNominal, cErr, vn6vn4Thin_RatiotoNominal_staterr); grVn8Vn6Thin_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8vn6Thin_RatiotoNominal, cErr, vn8vn6Thin_RatiotoNominal_staterr); grVn2Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn2Wide_RatiotoNominal, cErr, vn2Wide_RatiotoNominal_staterr); grVn4Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn4Wide_RatiotoNominal, cErr, vn4Wide_RatiotoNominal_staterr); grVn6Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn6Wide_RatiotoNominal, cErr, vn6Wide_RatiotoNominal_staterr); grVn8Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8Wide_RatiotoNominal, cErr, vn8Wide_RatiotoNominal_staterr); grGamma1ExpWide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, gamma1expWide_RatiotoNominal, cErr, gamma1expWide_RatiotoNominal_staterr); grVn6Vn4Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn6vn4Wide_RatiotoNominal, cErr, vn6vn4Wide_RatiotoNominal_staterr); grVn8Vn4Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8vn4Wide_RatiotoNominal, cErr, vn8vn4Wide_RatiotoNominal_staterr); grVn8Vn6Wide_RatiotoNominal = new TGraphErrors(NCENT, centBinCenter, vn8vn6Wide_RatiotoNominal, cErr, vn8vn6Wide_RatiotoNominal_staterr); //-- Cumu Ratio Plots TLine * line = new TLine(cent_min[0], 1.0, grVn2Thin_RatiotoNominal->GetXaxis()->GetXmax(), 1.0); line->SetLineColor(1); line->SetLineStyle(2); line->SetLineWidth(2); TCanvas * cSysCumu = new TCanvas("cSysCumu", "cSysCumu", 1000, 1000); cSysCumu->Divide(2,2); cSysCumu->cd(1); grVn2Thin_RatiotoNominal->Draw("ap"); grVn2Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); cSysCumu->cd(2); grVn4Thin_RatiotoNominal->Draw("ap"); grVn4Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); cSysCumu->cd(3); grVn6Thin_RatiotoNominal->Draw("ap"); grVn6Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); cSysCumu->cd(4); grVn8Thin_RatiotoNominal->Draw("ap"); grVn8Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); formatGraph(grVn2Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{2} Ratio", norder_), 1, 24, "grVn2Thin_RatiotoNominal"); formatGraph(grVn2Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{2} Ratio", norder_), kCyan+2, 24, "grVn2Wide_RatiotoNominal"); formatGraph(grVn4Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{4} Ratio", norder_), kSpring+4, 25, "grVn4Thin_RatiotoNominal"); formatGraph(grVn4Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{4} Ratio", norder_), kViolet-1, 25, "grVn4Wide_RatiotoNominal"); formatGraph(grVn6Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{6} Ratio", norder_), 6, 28, "grVn6Thin_RatiotoNominal"); formatGraph(grVn6Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{6} Ratio", norder_), 4, 28, "grVn6Wide_RatiotoNominal"); formatGraph(grVn8Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} Ratio", norder_), kOrange+7, 27, "grVn8Thin_RatiotoNominal"); formatGraph(grVn8Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} Ratio", norder_), kGray+2, 27, "grVn8Wide_RatiotoNominal"); TLegend * leg31 = new TLegend(0.7000, 0.7034, 0.9456, 0.9449); leg31->SetFillStyle(0); leg31->SetBorderSize(0); leg31->AddEntry(grVn2Thin_RatiotoNominal, "thin/nominal", "lp"); leg31->AddEntry(grVn2Wide_RatiotoNominal, "wide/nominal", "lp"); TLegend * leg32 = new TLegend(0.7000, 0.7034, 0.9456, 0.9449); leg32->SetFillStyle(0); leg32->SetBorderSize(0); leg32->AddEntry(grVn4Thin_RatiotoNominal, "thin/nominal", "lp"); leg32->AddEntry(grVn4Wide_RatiotoNominal, "wide/nominal", "lp"); TLegend * leg33 = new TLegend(0.7000, 0.7034, 0.9456, 0.9449); leg33->SetFillStyle(0); leg33->SetBorderSize(0); leg33->AddEntry(grVn6Thin_RatiotoNominal, "thin/nominal", "lp"); leg33->AddEntry(grVn6Wide_RatiotoNominal, "wide/nominal", "lp"); TLegend * leg34 = new TLegend(0.7000, 0.7034, 0.9456, 0.9449); leg34->SetFillStyle(0); leg34->SetBorderSize(0); leg34->AddEntry(grVn8Thin_RatiotoNominal, "thin/nominal", "lp"); leg34->AddEntry(grVn8Wide_RatiotoNominal, "wide/nominal", "lp"); cSysCumu->cd(1); leg31->Draw("same"); cSysCumu->cd(2); leg32->Draw("same"); cSysCumu->cd(3); leg33->Draw("same"); cSysCumu->cd(4); leg34->Draw("same"); cSysCumu->Update(); cSysCumu->SaveAs("../../plots/systematicStudies/SysPrior_CumuCent.pdf"); //-- Gamma1Exp Ratio Plot TCanvas * cGamma1Exp = new TCanvas("cGamma1Exp", "cGamma1Exp", 500, 500); cGamma1Exp->cd(); grGamma1ExpThin_RatiotoNominal->Draw("ap"); grGamma1ExpWide_RatiotoNominal->Draw("psame"); line->Draw("same"); formatGraph(grGamma1ExpThin_RatiotoNominal, "Centrality %", gamma1ExpRatioMin, gamma1ExpRatioMax, "#gamma_{1}^{exp} Ratio", 2, 28, "grGamma1ExpThin_RatiotoNominal"); formatGraph(grGamma1ExpWide_RatiotoNominal, "Centrality %", gamma1ExpRatioMin, gamma1ExpRatioMax, "#gamma_{1}^{exp} Ratio", 1, 28, "grGamma1ExpWide_RatiotoNominal"); TLegend * leg4 = new TLegend(0.7000, 0.7034, 0.9456, 0.9449); leg4->SetFillStyle(0); leg4->SetBorderSize(0); leg4->AddEntry(grGamma1ExpThin_RatiotoNominal, "thin/nominal", "lp"); leg4->AddEntry(grGamma1ExpWide_RatiotoNominal, "wide/nominal", "lp"); leg4->Draw("same"); cGamma1Exp->Update(); cGamma1Exp->SaveAs("../../plots/systematicStudies/SysPriorGamma1ExpCent.pdf"); //-- Cumu Ratio Plot TCanvas * cCumuRatioSys = new TCanvas("cCumuRatioSys", "cCumuRatioSys", 1500, 500); cCumuRatioSys->Divide(3,1); cCumuRatioSys->cd(1); cCumuRatioSys->cd(1)->SetLeftMargin(0.2); grVn6Vn4Thin_RatiotoNominal->GetYaxis()->SetTitleOffset(1.6); grVn6Vn4Thin_RatiotoNominal->Draw("ap"); grVn6Vn4Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); cCumuRatioSys->cd(2); grVn8Vn4Thin_RatiotoNominal->Draw("ap"); grVn8Vn4Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); cCumuRatioSys->cd(3); grVn8Vn6Thin_RatiotoNominal->Draw("ap"); grVn8Vn6Wide_RatiotoNominal->Draw("psame"); line->Draw("same"); formatGraph(grVn6Vn4Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{6} / v_{%i}{4} Ratio", norder_, norder_), 4, 21, "grVn6Vn4Thin_RatiotoNominal"); formatGraph(grVn6Vn4Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{6} / v_{%i}{4} Ratio", norder_, norder_), 2, 21, "grVn6Vn4Wide_RatiotoNominal"); formatGraph(grVn8Vn4Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} / v_{%i}{4} Ratio", norder_, norder_), kGreen+2, 34, "grVn8Vn4Thin_RatiotoNominal"); formatGraph(grVn8Vn4Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} / v_{%i}{4} Ratio", norder_, norder_), 6, 34, "grVn8Vn4Wide_RatiotoNominal"); formatGraph(grVn8Vn6Thin_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} / v_{%i}{6} Ratio", norder_, norder_), kViolet-1, 33, "grVn8Vn6Thin_RatiotoNominal"); formatGraph(grVn8Vn6Wide_RatiotoNominal, "Centrality %", ratioMin, ratioMax, Form("v_{%i}{8} / v_{%i}{6} Ratio", norder_, norder_), kOrange+7, 33, "grVn8Vn6Wide_RatiotoNominal"); TLegend * leg51 = new TLegend(0.24, 0.20, 0.76, 0.45); leg51->SetFillStyle(0); leg51->SetBorderSize(0); leg51->AddEntry(grVn6Vn4Thin_RatiotoNominal, "thin/nominal", "lp"); leg51->AddEntry(grVn6Vn4Wide_RatiotoNominal, "wide/nominal", "lp"); TLegend * leg52 = new TLegend(0.24, 0.20, 0.76, 0.45); leg52->SetFillStyle(0); leg52->SetBorderSize(0); leg52->AddEntry(grVn8Vn4Thin_RatiotoNominal, "thin/nominal", "lp"); leg52->AddEntry(grVn8Vn4Wide_RatiotoNominal, "wide/nominal", "lp"); TLegend * leg53 = new TLegend(0.24, 0.20, 0.76, 0.45); leg53->SetFillStyle(0); leg53->SetBorderSize(0); leg53->AddEntry(grVn8Vn6Thin_RatiotoNominal, "thin/nominal", "lp"); leg53->AddEntry(grVn8Vn6Wide_RatiotoNominal, "wide/nominal", "lp"); cCumuRatioSys->cd(1); leg51->Draw("same"); cCumuRatioSys->cd(2); leg52->Draw("same"); cCumuRatioSys->cd(3); leg53->Draw("same"); cCumuRatioSys->Update(); cCumuRatioSys->SaveAs("../../plots/systematicStudies/SysPrior_CumuRatioCent.pdf"); //-- Draw Priors TCanvas * cPrior[NCENT]; TLegend * legPrior = new TLegend(0.60, 0.72, 0.99, 0.92); legInit( legPrior ); legPrior->AddEntry(hPriorNom[0], "Default Prior", "lp"); legPrior->AddEntry(hPriorThin[0], "Thin Prior", "lp"); legPrior->AddEntry(hPriorWide[0], "Wide Prior", "lp"); for(int icent = 0; icent < NCENT; icent++){ if( icent != 5 ) continue; cPrior[icent] = new TCanvas( Form("cPrior_c%i", icent), Form("cPrior_c%i", icent), 500, 500); cPrior[icent]->cd(); cPrior[icent]->SetLogy(); hPriorThin[icent]->Draw(); hPriorWide[icent]->Draw("same"); hPriorNom[icent]->Draw("same"); legPrior->Draw("same"); latex.DrawLatex(0.2, 0.2, Form("Cent %i - %i%s", cent_min[icent], cent_max[icent], "%") ); cPrior[icent]->SaveAs( Form("../../plots/systematicStudies/SysPriorComp_c%i.pdf", icent) ); } //---------------------------------------------------------------------------------------------------- //-- Save plots for smoothing TFile * fSave = new TFile("SysPrior.root", "recreate"); fSave->cd(); grVn2Thin_RatiotoNominal->Write("grVn2Thin_RatiotoNominal"); grVn2Wide_RatiotoNominal->Write("grVn2Wide_RatiotoNominal"); grVn4Thin_RatiotoNominal->Write("grVn4Thin_RatiotoNominal"); grVn4Wide_RatiotoNominal->Write("grVn4Wide_RatiotoNominal"); grVn6Thin_RatiotoNominal->Write("grVn6Thin_RatiotoNominal"); grVn6Wide_RatiotoNominal->Write("grVn6Wide_RatiotoNominal"); grVn8Thin_RatiotoNominal->Write("grVn8Thin_RatiotoNominal"); grVn8Wide_RatiotoNominal->Write("grVn8Wide_RatiotoNominal"); grVn6Vn4Thin_RatiotoNominal->Write("grVn6Vn4Thin_RatiotoNominal"); grVn6Vn4Wide_RatiotoNominal->Write("grVn6Vn4Wide_RatiotoNominal"); grVn8Vn4Thin_RatiotoNominal->Write("grVn8Vn4Thin_RatiotoNominal"); grVn8Vn4Wide_RatiotoNominal->Write("grVn8Vn4Wide_RatiotoNominal"); grVn8Vn6Thin_RatiotoNominal->Write("grVn8Vn6Thin_RatiotoNominal"); grVn8Vn6Wide_RatiotoNominal->Write("grVn8Vn6Wide_RatiotoNominal"); grGamma1ExpThin_RatiotoNominal->Write("grGamma1ExpThin_RatiotoNominal"); grGamma1ExpWide_RatiotoNominal->Write("grGamma1ExpWide_RatiotoNominal"); //-- Save the unfolded distns for when the cutoff is chi2=2. for(int icent = 0; icent < NCENT; icent++){ int i = iterCutoffThin[icent]; std::cout<<i<<std::endl; hUnfoldThin[icent][i]->SetLineColor(1); hUnfoldThin[icent][i]->SetMarkerColor(1); hUnfoldThin[icent][i]->Write( Form("hFinalUnfold_ThinSysPrior_c%i", icent) ); i = iterCutoffWide[icent]; std::cout<<i<<std::endl; hUnfoldWide[icent][i]->SetLineColor(1); hUnfoldWide[icent][i]->SetMarkerColor(1); hUnfoldWide[icent][i]->Write( Form("hFinalUnfold_WideSysPrior_c%i", icent) ); } }
void ptRescale(bool setWeights=false) { gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetCanvasColor(0); gStyle->SetFrameBorderMode(0); TFile *file = TFile::Open("histograms_CMS-HGG_zeevalidation.root"); pt_cat0_Data_rebin = (TH1*)pt_cat0_Data->Clone(); pt_cat0_DYJetsToLL_rebin = (TH1*)pt_cat0_DYJetsToLL->Clone(); if (setWeights) { Double_t xbins[21] = {0.,2.,4.,8.,12.,16.,20.,24.,28.,32.,36.,40.,50.,60.,70.,80.,95.,110.,130.,160.,200.}; pt_cat0_Data_rebin->Rebin(20,"pt_cat0_Data_rebin",xbins); pt_cat0_DYJetsToLL_rebin->Rebin(20,"pt_cat0_DYJetsToLL_rebin",xbins); } //pt_cat0_Data_rebin->Rebin(4); //pt_cat0_DYJetsToLL_rebin->Rebin(4); pt_cat0_Data_rebin->GetXaxis()->SetTitleSize(0.05); pt_cat0_Data_rebin->GetYaxis()->SetTitle(""); pt_cat0_Data_rebin->GetXaxis()->SetTitle("p_{T}(e^{+}e^{-}) (GeV)"); pt_cat0_DYJetsToLL_rebin->SetFillColor(38); pt_cat0_DYJetsToLL_rebin->SetLineColor(1); pt_cat0_Data_rebin->SetMarkerStyle(20); pt_cat0_Data_rebin->SetMarkerSize(0.4); pt_cat0_Data_rebin->SetLineColor(1); TLegend *leg; leg = new TLegend(.6,.65,.87,.87); leg->SetBorderSize(0); leg->SetFillColor(10); leg->SetTextSize(.035); leg->AddEntry(pt_cat0_Data_rebin,"Data (19.6fb^{-1})"); leg->AddEntry(pt_cat0_DYJetsToLL_rebin,"DYJetsToLL MC","F"); TLine *line = new TLine(0.,1.,200.,1.); line->SetLineColor(4); line->SetLineWidth(2); TCanvas *c_pt = new TCanvas("c_pt","di-photon p_{T}",600,800); c_pt->Divide(1,2); c_pt->cd(1); gPad->SetLogy(); float sf = pt_cat0_Data_rebin->Integral()/pt_cat0_DYJetsToLL_rebin->Integral(); pt_cat0_DYJetsToLL_rebin->Scale(sf); pt_cat0_Data_rebin->Draw("e"); pt_cat0_DYJetsToLL_rebin->Draw("hist,same"); pt_cat0_Data_rebin->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_pt->cd(2); gPad->SetGrid(); ratio_pt = (TH1*)pt_cat0_Data_rebin->Clone(); ratio_pt->Divide(pt_cat0_DYJetsToLL_rebin); //ratio_pt->SetMaximum(1.8); //ratio_pt->SetMinimum(0.2); ratio_pt->Draw("e"); line->Draw(); if (setWeights) { for (int i=1;i<21;i++) cout << "pt_reweight[" << i-1 << "] = " << ratio_pt->GetBinContent(i) << ";" << endl; cout << endl; for (int i=1;i<21;i++) cout << "pt_reweight_bin[" << i-1 << "] = " << ratio_pt->GetBinLowEdge(i) << ".;" << endl; cout << endl; cout << "zeePtWeight="; for (int i=1;i<21;i++) cout << ratio_pt->GetBinContent(i) << ","; cout << endl; } c_pt->SaveAs("pt.png"); nvtx_cat0_Data->GetXaxis()->SetTitleSize(0.05); nvtx_cat0_Data->GetYaxis()->SetTitle(""); nvtx_cat0_Data->GetXaxis()->SetTitle("number of primary vertices"); nvtx_cat0_Data->GetXaxis()->SetRangeUser(0.,40.); nvtx_cat0_DYJetsToLL->SetFillColor(38); nvtx_cat0_DYJetsToLL->SetLineColor(1); nvtx_cat0_Data->SetMarkerStyle(20); nvtx_cat0_Data->SetMarkerSize(0.4); nvtx_cat0_Data->SetLineColor(1); TLine *line1 = new TLine(0.,1.,40.,1.); line1->SetLineColor(4); line1->SetLineWidth(2); TCanvas *c_nvtx = new TCanvas("c_nvtx","no. of primmary vertices",800,900); c_nvtx->Divide(1,2); c_nvtx->cd(1); sf = nvtx_cat0_Data->Integral()/nvtx_cat0_DYJetsToLL->Integral(); nvtx_cat0_DYJetsToLL->Scale(sf); nvtx_cat0_Data->GetXaxis()->SetRangeUser(0.,39.5); nvtx_cat0_Data->Draw("e"); nvtx_cat0_DYJetsToLL->Draw("hist,same"); nvtx_cat0_Data->Draw("e,same"); gPad->RedrawAxis(); leg->Draw(); c_nvtx->cd(2); gPad->SetGrid(); ratio_nvtx = (TH1*)nvtx_cat0_Data->Clone(); ratio_nvtx->Divide(nvtx_cat0_DYJetsToLL); ratio_nvtx->SetMaximum(1.8); ratio_nvtx->SetMinimum(0.2); ratio_nvtx->Draw("e"); line1->Draw(); //for (int i=1;i<26;i++) cout << "nvtx_reweight[" << i-1 << "] = " << ratio_nvtx->GetBinContent(i) << ";" << endl; //cout << endl; c_nvtx->SaveAs("nvtx.png"); }
pull_Topmass_tWbarChannel() { TCanvas* c = new TCanvas("c","test",570,400); TFile *f0 = new TFile("./Mu_histograms_2J_1TTest_2_new.root"); // Declare observable mtop RooRealVar mtop("mtop","M (GeV/c^{2})",80,360) ; RooDataHist ds("ds","ds",mtop,Import(*Mu_topMass__TbarWChannel)) ; // Print number of events in dataset ds.Print(); // Print binned dataset with default frame RooPlot* frame = mtop.frame(Title("Mu_topMass__TbarWChannel")) ; ds.plotOn(frame) ; RooRealVar mean("mean","mean",167.0,165,170); RooRealVar sigma("sigma","sigma",25.42,18.0,30.0); RooGaussian gtop("gtop","gtop",mtop,mean,sigma); RooRealVar sigma1("sigma1","sigma1",20.5,20.0,30.0); RooRealVar sigma2("sigma2","sigma2",75.5,65.0,75.0); RooBifurGauss bgtop("bgtop","bgtop",mtop,mean,sigma1,sigma2); RooRealVar frac0("frac0","frac0",0.25,0.1,0.6); RooAddPdf pdfg("pdfg","double gaussian Pdf", RooArgList(bgtop,gtop),RooArgList(frac0)); RooRealVar slope("slope","slope",1.0,0.9,1.3); RooChebychev cheb("cheb","cheb",mtop,slope); RooRealVar frac("frac","frac",0.93,0.75,1.0); // RooAddPdf pdf("pdf","total Pdf", RooArgList(gtop,cheb),RooArgList(frac)); RooAddPdf pdf("pdf","total Pdf", RooArgList(pdfg,cheb),RooArgList(frac)); /* gtop.fitTo(ds); gtop.plotOn(frame); gtop.paramOn(frame); */ /* bgtop.fitTo(ds); bgtop.plotOn(frame); bgtop.paramOn(frame); pdf.plotOn(frame,Components(RooArgList(bgtop)), LineColor(kRed),LineStyle(2), LineWidth(4)); frame->Draw(); */ pdf.fitTo(ds); pdf.plotOn(frame); pdf.paramOn(frame); std::cout<<"AMAR CHI^2 ="<<frame->chiSquare()<<std::endl; // pull RooPlot* z1frame = mtop.frame(Title("TTBar_Topmass_SChannel")); RooHist* hpull1 = frame->pullHist(); z1frame->addPlotable(hpull1,"P"); RooPlot* z2frame = mtop.frame(Title("TTBar_Topmass_SChannel")); RooHist* hresid = frame->residHist(); z2frame->addPlotable(hresid,"P") ; TCanvas* c2 = new TCanvas("pull1","pull1",900,300) ; c2->Divide(2,1) ; // column, row double xmin = 80.0; double xmax = 360.0; TLine *line = new TLine(xmin,0.0,xmax,0.0); c2->cd(2); line->SetLineColor(kRed); line->SetLineWidth(2); gPad->SetLeftMargin(0.15); z1frame->GetYaxis()->SetTitleOffset(1.6); z1frame->GetYaxis()->SetRangeUser(-5.0, 5.0); z1frame->Draw(); line->Draw("SAME"); // c2->cd(1); gPad->SetLeftMargin(0.15); z2frame->GetYaxis()->SetTitleOffset(1.6); z2frame->Draw(); line->Draw("SAME"); c2->cd(1); gPad->SetLeftMargin(0.15); frame->GetYaxis()->SetTitleOffset(1.6); frame->Draw(); pdf.plotOn(frame,Components(RooArgList(gtop)), LineColor(kRed),LineStyle(2), LineWidth(4)); pdf.plotOn(frame,Components(RooArgList(cheb)), LineColor(kBlue),LineStyle(2), LineWidth(4)); pdf.plotOn(frame,Components(RooArgList(bgtop)), LineColor(kGreen),LineStyle(2), LineWidth(4)); frame->Draw(); // Double_t signalchi = frame->chiSquare(); c2->SaveAs("TTbar_pull.root"); }