/** * Draw the Poisson estimate of the occupancy in a given ring. * * @param p List * @param d Detector * @param r Ring * * @return The occupancy (in percent) * * @deprecated Use QATrender instead * @ingroup pwglf_forward_scripts_qa */ Double_t DrawRingOccupancy(TList* p, UShort_t d, Char_t r) { if (!p) return 0; TList* ring = static_cast<TList*>(p->FindObject(Form("FMD%d%c",d,r))); if (!ring) { Error("DrawOccupancy", "List FMD%d%c not found in %s",d,r,p->GetName()); return 0; } TH1* corr = static_cast<TH1*>(ring->FindObject("occupancy")); if (!corr) { Error("DrawRingOccupancy", "Histogram occupancy not found in FMD%d%c", d, r); return 0; } corr->Rebin(4); TPad* pad = static_cast<TPad*>(gPad); pad->SetGridy(); pad->SetGridx(); pad->SetLogy(); pad->SetFillColor(0); pad->SetRightMargin(0.01); #if 0 if (d == 3) { pad->SetPad(pad->GetXlowNDC(), pad->GetYlowNDC(), .99, pad->GetYlowNDC()+pad->GetHNDC()); pad->SetRightMargin(0.15); } #endif corr->Draw("hist"); TLatex* ltx = new TLatex(.95, .95, Form("FMD%d%c", d, r)); ltx->SetNDC(); ltx->SetTextAlign(33); ltx->SetTextSize(.08); ltx->Draw(); return corr->GetMean(); }
void InitSubPad(TPad* pad, int i) { //printf("Pad: %p, index: %d\n",pad,i); pad->cd(i); TPad *tmpPad = (TPad*) pad->GetPad(i); tmpPad->SetLeftMargin (0.20); tmpPad->SetTopMargin (0.05); tmpPad->SetRightMargin (0.07); tmpPad->SetBottomMargin(0.15); return; }
void ALICEWorkInProgress(TCanvas *c,TString today){ //date must be in the form: 04/05/2010 if(today=="today"){ TDatime startt; int date=startt.GetDate(); int y=date/10000; int m=(date%10000)/100; int d=date%100; today=""; today+=d; if(m<10) today.Append("/0"); else today.Append("/"); today+=m; today.Append("/"); today+=y; } TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo",0.67,0.65,0.82,0.89); // myPadLogo->SetFillColor(2); myPadLogo->SetBorderMode(0); myPadLogo->SetBorderSize(2); myPadLogo->SetFrameBorderMode(0); myPadLogo->SetLeftMargin(0.0); myPadLogo->SetTopMargin(0.0); myPadLogo->SetBottomMargin(0.0); myPadLogo->SetRightMargin(0.0); myPadLogo->Draw(); myPadLogo->cd(); TASImage *myAliceLogo = new TASImage("/u/mfasel/work/electron/Spectrum/alice_logo.png"); myAliceLogo->Draw(); c->cd(); TPaveText* t1=new TPaveText(0.59,0.59,0.89,0.66,"NDC"); t1->SetFillStyle(0); t1->SetBorderSize(0); t1->AddText(0.,0.,"ALICE Performance"); t1->SetTextColor(kRed); t1->SetTextFont(42); t1->Draw(); TPaveText* t2=new TPaveText(0.59,0.54,0.89,0.60,"NDC"); t2->SetFillStyle(0); t2->SetBorderSize(0); t2->SetTextColor(kRed); t2->SetTextFont(52); t2->AddText(0.,0.,today.Data()); t2->Draw(); }
void DrawALICELogo(Bool_t prel, Float_t x1, Float_t y1, Float_t x2, Float_t y2) { // correct for aspect ratio of figure plus aspect ratio of pad (coordinates are NDC!) x2 = x1 + (y2 - y1) * (466. / 523) * gPad->GetWh() * gPad->GetHNDC() / (gPad->GetWNDC() * gPad->GetWw()); // Printf("%f %f %f %f", x1, x2, y1, y2); TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo", x1, y1, x2, y2); myPadLogo->SetLeftMargin(0); myPadLogo->SetTopMargin(0); myPadLogo->SetRightMargin(0); myPadLogo->SetBottomMargin(0); myPadLogo->Draw(); myPadLogo->cd(); TASImage *myAliceLogo = new TASImage((prel) ? "~/alice_logo_preliminary.eps" : "~/alice_logo_performance.eps"); myAliceLogo->Draw(); }
void DrawALICELogo(Float_t x1, Float_t y1, Float_t x2, Float_t y2) { // Correct for aspect ratio of figure plus aspect ratio of pad. // Coordinates are NDC! x2 = x1 + (y2 - y1)*0.891*gPad->GetCanvas()->GetWindowHeight()*gPad->GetHNDC() / (gPad->GetWNDC() * gPad->GetCanvas()->GetWindowWidth()); TPad *myPadLogo = new TPad("myPadLogo","Pad for ALICE Logo", x1, y1, x2, y2); myPadLogo->SetLeftMargin(0); myPadLogo->SetTopMargin(0); myPadLogo->SetRightMargin(0); myPadLogo->SetBottomMargin(0); myPadLogo->Draw(); myPadLogo->cd(); TASImage *myAliceLogo = new TASImage("alice_logo_preliminary.eps"); myAliceLogo->Draw("same"); }
void test3() { //=========Macro generated from canvas: default_Canvas/defaultCanvas //========= (Fri May 6 10:50:13 2016) by ROOT version6.04/10 TCanvas *default_Canvas = new TCanvas("default_Canvas", "defaultCanvas",0,0,700,500); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); default_Canvas->SetHighLightColor(2); default_Canvas->Range(0,0,1,1); default_Canvas->SetFillColor(0); default_Canvas->SetBorderMode(0); default_Canvas->SetBorderSize(2); default_Canvas->SetTickx(1); default_Canvas->SetTicky(1); default_Canvas->SetLeftMargin(0.14); default_Canvas->SetRightMargin(0.05); default_Canvas->SetTopMargin(0.05); default_Canvas->SetBottomMargin(0.16); default_Canvas->SetFrameLineWidth(2); default_Canvas->SetFrameBorderMode(0); // ------------>Primitives in pad: upperPad TPad *upperPad = new TPad("upperPad", "upperPad",0.005,0.05,0.995,0.995); upperPad->Draw(); upperPad->cd(); upperPad->Range(1.567901,0.02811051,4.654321,0.1367104); upperPad->SetFillColor(0); upperPad->SetFillStyle(4000); upperPad->SetBorderMode(0); upperPad->SetBorderSize(2); upperPad->SetTickx(1); upperPad->SetTicky(1); upperPad->SetLeftMargin(0.14); upperPad->SetRightMargin(0.05); upperPad->SetTopMargin(0.05); upperPad->SetBottomMargin(0.14); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); TH1F *test3_red_0_0_norm__1 = new TH1F("test3_red_0_0_norm__1","ETA",10,2,4.5); test3_red_0_0_norm__1->SetBinContent(1,0.1040398); test3_red_0_0_norm__1->SetBinContent(2,0.1186439); test3_red_0_0_norm__1->SetBinContent(3,0.1256071); test3_red_0_0_norm__1->SetBinContent(4,0.1229555); test3_red_0_0_norm__1->SetBinContent(5,0.118442); test3_red_0_0_norm__1->SetBinContent(6,0.1127067); test3_red_0_0_norm__1->SetBinContent(7,0.09951538); test3_red_0_0_norm__1->SetBinContent(8,0.08332527); test3_red_0_0_norm__1->SetBinContent(9,0.06651872); test3_red_0_0_norm__1->SetBinContent(10,0.0482457); test3_red_0_0_norm__1->SetBinError(1,0.001708584); test3_red_0_0_norm__1->SetBinError(2,0.001736969); test3_red_0_0_norm__1->SetBinError(3,0.001484444); test3_red_0_0_norm__1->SetBinError(4,0.001426268); test3_red_0_0_norm__1->SetBinError(5,0.001336676); test3_red_0_0_norm__1->SetBinError(6,0.00122978); test3_red_0_0_norm__1->SetBinError(7,0.00125216); test3_red_0_0_norm__1->SetBinError(8,0.00113555); test3_red_0_0_norm__1->SetBinError(9,0.0009819959); test3_red_0_0_norm__1->SetBinError(10,0.0009418311); test3_red_0_0_norm__1->SetEntries(58129); test3_red_0_0_norm__1->SetStats(0); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm__1->SetFillColor(ci); test3_red_0_0_norm__1->SetFillStyle(0); ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm__1->SetLineColor(ci); test3_red_0_0_norm__1->SetLineWidth(2); ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm__1->SetMarkerColor(ci); test3_red_0_0_norm__1->SetMarkerStyle(20); test3_red_0_0_norm__1->GetXaxis()->SetTitle("#eta"); test3_red_0_0_norm__1->GetXaxis()->SetNdivisions(1005); test3_red_0_0_norm__1->GetXaxis()->SetLabelFont(132); test3_red_0_0_norm__1->GetXaxis()->SetLabelOffset(0.02); test3_red_0_0_norm__1->GetXaxis()->SetLabelSize(0.05); test3_red_0_0_norm__1->GetXaxis()->SetTitleSize(0.06); test3_red_0_0_norm__1->GetXaxis()->SetTitleFont(132); test3_red_0_0_norm__1->GetYaxis()->SetNdivisions(505); test3_red_0_0_norm__1->GetYaxis()->SetLabelFont(132); test3_red_0_0_norm__1->GetYaxis()->SetLabelSize(0.05); test3_red_0_0_norm__1->GetYaxis()->SetTitleSize(0.06); test3_red_0_0_norm__1->GetYaxis()->SetTitleFont(132); test3_red_0_0_norm__1->GetZaxis()->SetLabelFont(132); test3_red_0_0_norm__1->GetZaxis()->SetLabelSize(0.05); test3_red_0_0_norm__1->GetZaxis()->SetTitleSize(0.06); test3_red_0_0_norm__1->GetZaxis()->SetTitleFont(132); test3_red_0_0_norm__1->Draw(""); Double_t xAxis1[11] = {2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.25, 4.5}; TH1F *test3_green_0_1_norm__2 = new TH1F("test3_green_0_1_norm__2","ETA",10, xAxis1); test3_green_0_1_norm__2->SetBinContent(1,0.1214835); test3_green_0_1_norm__2->SetBinContent(2,0.1235428); test3_green_0_1_norm__2->SetBinContent(3,0.1252758); test3_green_0_1_norm__2->SetBinContent(4,0.1207572); test3_green_0_1_norm__2->SetBinContent(5,0.1150848); test3_green_0_1_norm__2->SetBinContent(6,0.1056844); test3_green_0_1_norm__2->SetBinContent(7,0.09450962); test3_green_0_1_norm__2->SetBinContent(8,0.07910584); test3_green_0_1_norm__2->SetBinContent(9,0.06467657); test3_green_0_1_norm__2->SetBinContent(10,0.04987957); test3_green_0_1_norm__2->SetEntries(10); test3_green_0_1_norm__2->SetStats(0); ci = TColor::GetColor("#00ff00"); test3_green_0_1_norm__2->SetFillColor(ci); test3_green_0_1_norm__2->SetFillStyle(0); ci = TColor::GetColor("#00ff00"); test3_green_0_1_norm__2->SetLineColor(ci); test3_green_0_1_norm__2->SetLineWidth(2); ci = TColor::GetColor("#00ff00"); test3_green_0_1_norm__2->SetMarkerColor(ci); test3_green_0_1_norm__2->SetMarkerStyle(20); test3_green_0_1_norm__2->GetXaxis()->SetTitle("#eta"); test3_green_0_1_norm__2->GetXaxis()->SetNdivisions(1005); test3_green_0_1_norm__2->GetXaxis()->SetLabelFont(132); test3_green_0_1_norm__2->GetXaxis()->SetLabelOffset(0.02); test3_green_0_1_norm__2->GetXaxis()->SetLabelSize(0.05); test3_green_0_1_norm__2->GetXaxis()->SetTitleSize(0.06); test3_green_0_1_norm__2->GetXaxis()->SetTitleFont(132); test3_green_0_1_norm__2->GetYaxis()->SetNdivisions(505); test3_green_0_1_norm__2->GetYaxis()->SetLabelFont(132); test3_green_0_1_norm__2->GetYaxis()->SetLabelSize(0.05); test3_green_0_1_norm__2->GetYaxis()->SetTitleSize(0.06); test3_green_0_1_norm__2->GetYaxis()->SetTitleFont(132); test3_green_0_1_norm__2->GetZaxis()->SetLabelFont(132); test3_green_0_1_norm__2->GetZaxis()->SetLabelSize(0.05); test3_green_0_1_norm__2->GetZaxis()->SetTitleSize(0.06); test3_green_0_1_norm__2->GetZaxis()->SetTitleFont(132); test3_green_0_1_norm__2->Draw("same"); TLegend *leg = new TLegend(0.2,0.7,0.4,0.85,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextFont(132); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(2); leg->SetFillColor(10); leg->SetFillStyle(0); TLegendEntry *entry=leg->AddEntry("MuonTrackingMC2015RW_Sim09/ETA_tot","T&P","lep"); ci = TColor::GetColor("#ff0000"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); ci = TColor::GetColor("#ff0000"); entry->SetMarkerColor(ci); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("MuonUbsTrackingMC2015/ETA_tot","Truth","lep"); ci = TColor::GetColor("#00ff00"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); ci = TColor::GetColor("#00ff00"); entry->SetMarkerColor(ci); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(132); leg->Draw(); TH1F *test3_red_0_0_norm_copy__3 = new TH1F("test3_red_0_0_norm_copy__3","ETA",10,2,4.5); test3_red_0_0_norm_copy__3->SetBinContent(1,0.1040398); test3_red_0_0_norm_copy__3->SetBinContent(2,0.1186439); test3_red_0_0_norm_copy__3->SetBinContent(3,0.1256071); test3_red_0_0_norm_copy__3->SetBinContent(4,0.1229555); test3_red_0_0_norm_copy__3->SetBinContent(5,0.118442); test3_red_0_0_norm_copy__3->SetBinContent(6,0.1127067); test3_red_0_0_norm_copy__3->SetBinContent(7,0.09951538); test3_red_0_0_norm_copy__3->SetBinContent(8,0.08332527); test3_red_0_0_norm_copy__3->SetBinContent(9,0.06651872); test3_red_0_0_norm_copy__3->SetBinContent(10,0.0482457); test3_red_0_0_norm_copy__3->SetBinError(1,0.001708584); test3_red_0_0_norm_copy__3->SetBinError(2,0.001736969); test3_red_0_0_norm_copy__3->SetBinError(3,0.001484444); test3_red_0_0_norm_copy__3->SetBinError(4,0.001426268); test3_red_0_0_norm_copy__3->SetBinError(5,0.001336676); test3_red_0_0_norm_copy__3->SetBinError(6,0.00122978); test3_red_0_0_norm_copy__3->SetBinError(7,0.00125216); test3_red_0_0_norm_copy__3->SetBinError(8,0.00113555); test3_red_0_0_norm_copy__3->SetBinError(9,0.0009819959); test3_red_0_0_norm_copy__3->SetBinError(10,0.0009418311); test3_red_0_0_norm_copy__3->SetEntries(58129); test3_red_0_0_norm_copy__3->SetDirectory(0); test3_red_0_0_norm_copy__3->SetStats(0); ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm_copy__3->SetFillColor(ci); test3_red_0_0_norm_copy__3->SetFillStyle(0); ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm_copy__3->SetLineColor(ci); test3_red_0_0_norm_copy__3->SetLineWidth(2); ci = TColor::GetColor("#ff0000"); test3_red_0_0_norm_copy__3->SetMarkerColor(ci); test3_red_0_0_norm_copy__3->SetMarkerStyle(20); test3_red_0_0_norm_copy__3->GetXaxis()->SetTitle("#eta"); test3_red_0_0_norm_copy__3->GetXaxis()->SetNdivisions(1005); test3_red_0_0_norm_copy__3->GetXaxis()->SetLabelFont(132); test3_red_0_0_norm_copy__3->GetXaxis()->SetLabelOffset(0.02); test3_red_0_0_norm_copy__3->GetXaxis()->SetLabelSize(0.05); test3_red_0_0_norm_copy__3->GetXaxis()->SetTitleSize(0.06); test3_red_0_0_norm_copy__3->GetXaxis()->SetTitleFont(132); test3_red_0_0_norm_copy__3->GetYaxis()->SetNdivisions(505); test3_red_0_0_norm_copy__3->GetYaxis()->SetLabelFont(132); test3_red_0_0_norm_copy__3->GetYaxis()->SetLabelSize(0.05); test3_red_0_0_norm_copy__3->GetYaxis()->SetTitleSize(0.06); test3_red_0_0_norm_copy__3->GetYaxis()->SetTitleFont(132); test3_red_0_0_norm_copy__3->GetZaxis()->SetLabelFont(132); test3_red_0_0_norm_copy__3->GetZaxis()->SetLabelSize(0.05); test3_red_0_0_norm_copy__3->GetZaxis()->SetTitleSize(0.06); test3_red_0_0_norm_copy__3->GetZaxis()->SetTitleFont(132); test3_red_0_0_norm_copy__3->Draw("sameaxis"); upperPad->Modified(); default_Canvas->cd(); default_Canvas->Modified(); default_Canvas->cd(); default_Canvas->SetSelected(default_Canvas); }
void DrawVariable(TString DIR,TString VAR,float LUMI,bool LOG,int REBIN,float XMIN,float XMAX,TString XTITLE,bool isINT,int XNDIV,bool PRINT) { gROOT->ForceStyle(); const int N = 14; TString SAMPLE[N] = { "JetHT", "TT_TuneCUETP8M1_13TeV-powheg-pythia8", "WJetsToQQ_HT180_13TeV-madgraphMLM-pythia8", "DYJetsToQQ_HT180_13TeV-madgraphMLM-pythia8", "ST_t-channel_top_4f_inclusiveDecays_13TeV-powhegV2-madspin-pythia8_TuneCUETP8M1", "ST_t-channel_antitop_4f_inclusiveDecays_13TeV-powhegV2-madspin-pythia8_TuneCUETP8M1", "ST_tW_top_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1", "ST_tW_antitop_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1", "QCD_HT300to500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT500to700_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT700to1000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT1000to1500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT1500to2000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT2000toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8" }; float XSEC[N] = {1.0,0.5*832,3539,1460.,136.02,80.95,35.6,35.6,3.67e+5,2.94e+4,6.524e+03,1.064e+03,121.5,2.542e+01}; TFile *inf[N]; TH1F *h[N]; TCanvas *can = new TCanvas("DataVsMC_"+DIR+"_"+VAR,"DataVsMC_"+DIR+"_"+VAR,900,600); can->SetRightMargin(0.15); for(int i=0;i<N;i++) { inf[i] = TFile::Open("Histo_"+SAMPLE[i]+".root"); h[i] = (TH1F*)inf[i]->Get(DIR+"/hWt_"+VAR); if (!h[i]) { cout<<"Histogram "<<"hWt_"+VAR<<" does not exist !!!"<<endl; break; } h[i]->SetDirectory(0); h[i]->Sumw2(); h[i]->Rebin(REBIN); h[i]->SetLineWidth(1); h[i]->SetLineColor(kBlack); if (i>0) { float norm = ((TH1F*)inf[i]->Get("eventCounter/GenEventWeight"))->GetSumOfWeights(); //cout<<SAMPLE[i]<<" "<<norm<<endl; h[i]->Scale(LUMI*XSEC[i]/norm); } inf[i]->Close(); } TH1F *hQCD = (TH1F*)h[8]->Clone("hQCD"); for(int i=9;i<N;i++) { hQCD->Add(h[i]); } TH1F *hST = (TH1F*)h[4]->Clone("hST"); hST->Add(h[5]); hST->Add(h[6]); hST->Add(h[7]); h[0]->SetLineWidth(2);//data hQCD->SetFillColor(kBlue-10);//QCD h[1]->SetFillColor(kOrange);//ttbar h[2]->SetFillColor(kGreen-10);//WJets h[3]->SetFillColor(kGreen-8);//ZJets hST->SetFillColor(kOrange-1);//ST float kfactor = 1.0; if (hQCD->Integral() > 0) { kfactor = (h[0]->Integral()-h[1]->Integral()-h[2]->Integral()-h[3]->Integral()-hST->Integral())/hQCD->Integral(); } hQCD->Scale(kfactor); TH1F *hBkg = (TH1F*)hQCD->Clone("hBkg"); hBkg->Add(h[1]); hBkg->Add(h[2]); hBkg->Add(h[3]); hBkg->Add(h[4]); hBkg->Add(hST); //hBkg->SetFillColor(kGray); cout<<"======== "<<VAR<<"====================="<<endl; cout<<"Data events: "<<h[0]->Integral()<<endl; cout<<"QCD events: "<<hQCD->Integral()<<endl; cout<<"WJets events: "<<h[2]->Integral()<<endl; cout<<"ZJets events: "<<h[3]->Integral()<<endl; cout<<"ST events: "<<hST->Integral()<<endl; cout<<"TTbar events: "<<h[1]->Integral()<<endl; cout<<"kfactor: "<<kfactor<<endl; THStack *hs = new THStack("hs","hs"); if (LOG) { hs->Add(h[2]); hs->Add(h[3]); hs->Add(hST); hs->Add(hQCD); hs->Add(h[1]); } else { hs->Add(h[3]); hs->Add(hST); hs->Add(h[2]); hs->Add(hQCD); hs->Add(h[1]); } TH1F *hRatio = (TH1F*)h[0]->Clone("Ratio"); hRatio->SetLineWidth(2); hRatio->Divide(hBkg); TLegend *leg = new TLegend(0.86,0.7,0.99,0.9); leg->SetFillColor(0); leg->SetTextFont(42); leg->SetTextSize(0.03); leg->AddEntry(hQCD,"QCD","F"); leg->AddEntry(h[1],"TTbar","F"); leg->AddEntry(hST,"ST","F"); leg->AddEntry(h[2],"WJets","F"); leg->AddEntry(h[3],"ZJets","F"); can->SetBottomMargin(0.25); TH1F *hAux = (TH1F*)h[0]->Clone("aux"); hAux->Reset(); hAux->GetXaxis()->SetNdivisions(XNDIV); if (isINT) { hAux->GetXaxis()->CenterLabels(); } hAux->GetYaxis()->SetRangeUser(0.5,1.1*TMath::Max(hBkg->GetBinContent(hBkg->GetMaximumBin()),h[0]->GetBinContent(h[0]->GetMaximumBin()))); if (LOG) { gPad->SetLogy(); hAux->GetYaxis()->SetRangeUser(0.5,2*TMath::Max(hBkg->GetBinContent(hBkg->GetMaximumBin()),h[0]->GetBinContent(h[0]->GetMaximumBin()))); } hAux->GetXaxis()->SetRangeUser(XMIN,XMAX); hAux->GetYaxis()->SetTitle(TString::Format("Number of events / %1.2f fb^{-1}",LUMI/1000)); hAux->GetXaxis()->SetTitle(""); hAux->GetXaxis()->SetLabelSize(0.0); hAux->Draw(); hs->Draw("hist same"); //hBkg->Draw("sames hist"); h[0]->Draw("sames E"); leg->Draw(); gPad->RedrawAxis(); TPad *pad = new TPad("pad","pad",0.,0.,1.,1.); pad->SetTopMargin(0.77); pad->SetRightMargin(0.15); pad->SetFillColor(0); pad->SetFillStyle(0); pad->Draw(); pad->cd(0); pad->SetGridy(); hRatio->GetXaxis()->SetTitleOffset(0.95); hRatio->GetYaxis()->SetTitleOffset(1.5); hRatio->GetYaxis()->SetTickLength(0.06); hRatio->GetYaxis()->SetTitleSize(0.03); hRatio->GetYaxis()->SetLabelSize(0.03); hRatio->GetYaxis()->SetTitle("Data/MC"); hRatio->GetXaxis()->SetTitle(XTITLE); hRatio->GetXaxis()->SetRangeUser(XMIN,XMAX); hRatio->GetYaxis()->SetRangeUser(0.5,1.5); hRatio->GetYaxis()->SetNdivisions(505); hRatio->GetXaxis()->SetNdivisions(XNDIV); if (isINT) { hRatio->GetXaxis()->CenterLabels(); } hRatio->Draw(); if (PRINT) { can->Print("plots/"+TString(can->GetName())+".pdf"); can->Print("plots/"+TString(can->GetName())+".png"); } }
void zj_ptj_8TeV() { //=========Macro generated from canvas: default_Canvas/defaultCanvas //========= (Thu Apr 28 10:19:34 2016) by ROOT version6.04/10 TCanvas *default_Canvas = new TCanvas("default_Canvas", "defaultCanvas",0,0,800,800); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); default_Canvas->SetHighLightColor(2); default_Canvas->Range(0,0,1,1); default_Canvas->SetFillColor(0); default_Canvas->SetBorderMode(0); default_Canvas->SetBorderSize(2); default_Canvas->SetTickx(1); default_Canvas->SetTicky(1); default_Canvas->SetLeftMargin(0.14); default_Canvas->SetRightMargin(0.05); default_Canvas->SetTopMargin(0.05); default_Canvas->SetBottomMargin(0.16); default_Canvas->SetFrameLineWidth(2); default_Canvas->SetFrameBorderMode(0); // ------------>Primitives in pad: bottomPad TPad *bottomPad = new TPad("bottomPad", "bottomPad",0.005,0.05,0.995,0.995); bottomPad->Draw(); bottomPad->cd(); bottomPad->Range(0,0,1,1); bottomPad->SetFillColor(0); bottomPad->SetFillStyle(4000); bottomPad->SetBorderMode(0); bottomPad->SetBorderSize(2); bottomPad->SetTickx(1); bottomPad->SetTicky(1); bottomPad->SetLeftMargin(0.14); bottomPad->SetRightMargin(0.05); bottomPad->SetTopMargin(0.05); bottomPad->SetBottomMargin(0.16); bottomPad->SetFrameLineWidth(2); bottomPad->SetFrameBorderMode(0); bottomPad->Modified(); default_Canvas->cd(); // ------------>Primitives in pad: upperPad TPad *upperPad = new TPad("upperPad", "upperPad",0.005,0.05,0.995,0.995); upperPad->Draw(); upperPad->cd(); upperPad->Range(6.172839,-0.2132695,104.9383,0.4330016); upperPad->SetFillColor(0); upperPad->SetFillStyle(4000); upperPad->SetBorderMode(0); upperPad->SetBorderSize(2); upperPad->SetTickx(1); upperPad->SetTicky(1); upperPad->SetLeftMargin(0.14); upperPad->SetRightMargin(0.05); upperPad->SetTopMargin(0.05); upperPad->SetBottomMargin(0.33); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); Double_t xAxis19[6] = {20, 25, 30, 40, 50, 100}; TH1F *z_ptj_toterr__19 = new TH1F("z_ptj_toterr__19","z_ptj",5, xAxis19); z_ptj_toterr__19->SetBinContent(1,0.3608738); z_ptj_toterr__19->SetBinContent(2,0.225932); z_ptj_toterr__19->SetBinContent(3,0.1253807); z_ptj_toterr__19->SetBinContent(4,0.06703913); z_ptj_toterr__19->SetBinContent(5,0.01561868); z_ptj_toterr__19->SetBinContent(6,0.780934); z_ptj_toterr__19->SetBinError(1,0.02073388); z_ptj_toterr__19->SetBinError(2,0.01400757); z_ptj_toterr__19->SetBinError(3,0.009350811); z_ptj_toterr__19->SetBinError(4,0.004623786); z_ptj_toterr__19->SetBinError(5,0.001395185); z_ptj_toterr__19->SetBinError(6,0.06975923); z_ptj_toterr__19->SetEntries(12); z_ptj_toterr__19->SetStats(0); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#ffff00"); z_ptj_toterr__19->SetFillColor(ci); ci = TColor::GetColor("#ffff00"); z_ptj_toterr__19->SetLineColor(ci); z_ptj_toterr__19->SetLineWidth(2); ci = TColor::GetColor("#ffff00"); z_ptj_toterr__19->SetMarkerColor(ci); z_ptj_toterr__19->SetMarkerStyle(0); z_ptj_toterr__19->GetXaxis()->SetNdivisions(4); z_ptj_toterr__19->GetXaxis()->SetLabelFont(132); z_ptj_toterr__19->GetXaxis()->SetLabelOffset(999); z_ptj_toterr__19->GetXaxis()->SetLabelSize(0); z_ptj_toterr__19->GetXaxis()->SetTitleSize(0.06); z_ptj_toterr__19->GetXaxis()->SetTitleFont(132); z_ptj_toterr__19->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); z_ptj_toterr__19->GetYaxis()->SetLabelFont(132); z_ptj_toterr__19->GetYaxis()->SetLabelSize(0.05); z_ptj_toterr__19->GetYaxis()->SetTitleSize(0.06); z_ptj_toterr__19->GetYaxis()->SetTitleOffset(1.3); z_ptj_toterr__19->GetYaxis()->SetTitleFont(132); z_ptj_toterr__19->GetZaxis()->SetLabelFont(132); z_ptj_toterr__19->GetZaxis()->SetLabelSize(0.05); z_ptj_toterr__19->GetZaxis()->SetTitleSize(0.06); z_ptj_toterr__19->GetZaxis()->SetTitleFont(132); z_ptj_toterr__19->Draw("e2"); Double_t xAxis20[6] = {20, 25, 30, 40, 50, 100}; TH1F *z_ptj_staterr__20 = new TH1F("z_ptj_staterr__20","z_ptj",5, xAxis20); z_ptj_staterr__20->SetBinContent(1,0.3608738); z_ptj_staterr__20->SetBinContent(2,0.225932); z_ptj_staterr__20->SetBinContent(3,0.1253807); z_ptj_staterr__20->SetBinContent(4,0.06703913); z_ptj_staterr__20->SetBinContent(5,0.01561868); z_ptj_staterr__20->SetBinContent(6,0.780934); z_ptj_staterr__20->SetBinError(1,0.007287406); z_ptj_staterr__20->SetBinError(2,0.005663236); z_ptj_staterr__20->SetBinError(3,0.002951952); z_ptj_staterr__20->SetBinError(4,0.002192817); z_ptj_staterr__20->SetBinError(5,0.0004728113); z_ptj_staterr__20->SetBinError(6,0.02364057); z_ptj_staterr__20->SetEntries(12); z_ptj_staterr__20->SetStats(0); ci = TColor::GetColor("#ff9933"); z_ptj_staterr__20->SetFillColor(ci); ci = TColor::GetColor("#ff9933"); z_ptj_staterr__20->SetLineColor(ci); z_ptj_staterr__20->SetLineWidth(2); ci = TColor::GetColor("#ff9933"); z_ptj_staterr__20->SetMarkerColor(ci); z_ptj_staterr__20->SetMarkerStyle(0); z_ptj_staterr__20->GetXaxis()->SetNdivisions(4); z_ptj_staterr__20->GetXaxis()->SetLabelFont(132); z_ptj_staterr__20->GetXaxis()->SetLabelOffset(999); z_ptj_staterr__20->GetXaxis()->SetLabelSize(0); z_ptj_staterr__20->GetXaxis()->SetTitleSize(0.06); z_ptj_staterr__20->GetXaxis()->SetTitleFont(132); z_ptj_staterr__20->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); z_ptj_staterr__20->GetYaxis()->SetLabelFont(132); z_ptj_staterr__20->GetYaxis()->SetLabelSize(0.05); z_ptj_staterr__20->GetYaxis()->SetTitleSize(0.06); z_ptj_staterr__20->GetYaxis()->SetTitleFont(132); z_ptj_staterr__20->GetZaxis()->SetLabelFont(132); z_ptj_staterr__20->GetZaxis()->SetLabelSize(0.05); z_ptj_staterr__20->GetZaxis()->SetTitleSize(0.06); z_ptj_staterr__20->GetZaxis()->SetTitleFont(132); z_ptj_staterr__20->Draw("e2same"); Double_t ptj_toterrs_fx3022[5] = { 23.25, 28.25, 36.5, 46.5, 82.5}; Double_t ptj_toterrs_fy3022[5] = { 0.3671394, 0.2404275, 0.1334798, 0.06537649, 0.01594908}; Double_t ptj_toterrs_felx3022[5] = { 0, 0, 0, 0, 0}; Double_t ptj_toterrs_fely3022[5] = { 0.02997783, 0.02293181, 0.009217184, 0.004503167, 0.001643067}; Double_t ptj_toterrs_fehx3022[5] = { 0, 0, 0, 0, 0}; Double_t ptj_toterrs_fehy3022[5] = { 0.02512764, 0.01751375, 0.008693834, 0.005222099, 0.001753864}; TGraphAsymmErrors *grae = new TGraphAsymmErrors(5,ptj_toterrs_fx3022,ptj_toterrs_fy3022,ptj_toterrs_felx3022,ptj_toterrs_fehx3022,ptj_toterrs_fely3022,ptj_toterrs_fehy3022); grae->SetName("ptj_toterrs"); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(24); TH1F *Graph_Graph_ptj_toterrs30153022 = new TH1F("Graph_Graph_ptj_toterrs30153022","",100,17.325,88.425); Graph_Graph_ptj_toterrs30153022->SetMinimum(0.01287542); Graph_Graph_ptj_toterrs30153022->SetMaximum(0.4300631); Graph_Graph_ptj_toterrs30153022->SetDirectory(0); Graph_Graph_ptj_toterrs30153022->SetStats(0); Graph_Graph_ptj_toterrs30153022->SetLineWidth(2); Graph_Graph_ptj_toterrs30153022->SetMarkerStyle(0); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetNdivisions(4); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetLabelOffset(999); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetLabelSize(0); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30153022->GetXaxis()->SetTitleFont(132); Graph_Graph_ptj_toterrs30153022->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); Graph_Graph_ptj_toterrs30153022->GetYaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30153022->GetYaxis()->SetLabelSize(0.05); Graph_Graph_ptj_toterrs30153022->GetYaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30153022->GetYaxis()->SetTitleFont(132); Graph_Graph_ptj_toterrs30153022->GetZaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30153022->GetZaxis()->SetLabelSize(0.05); Graph_Graph_ptj_toterrs30153022->GetZaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30153022->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_ptj_toterrs30153022); grae->Draw("p1p"); Double_t _fx3023[5] = { 23.25, 28.25, 36.5, 46.5, 82.5}; Double_t _fy3023[5] = { 0.3671394, 0.2404275, 0.1334798, 0.06537649, 0.01594908}; Double_t _felx3023[5] = { 0, 0, 0, 0, 0}; Double_t _fely3023[5] = { 0.01985385, 0.01348796, 0.006928003, 0.003412992, 0.001084033}; Double_t _fehx3023[5] = { 0, 0, 0, 0, 0}; Double_t _fehy3023[5] = { 0.01921597, 0.01338518, 0.006596172, 0.003531927, 0.001381032}; grae = new TGraphAsymmErrors(5,_fx3023,_fy3023,_felx3023,_fehx3023,_fely3023,_fehy3023); grae->SetName(""); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(24); TH1F *Graph_Graph_Graph30163023 = new TH1F("Graph_Graph_Graph30163023","",100,17.325,88.425); Graph_Graph_Graph30163023->SetMinimum(0.01337855); Graph_Graph_Graph30163023->SetMaximum(0.4235044); Graph_Graph_Graph30163023->SetDirectory(0); Graph_Graph_Graph30163023->SetStats(0); Graph_Graph_Graph30163023->SetLineWidth(2); Graph_Graph_Graph30163023->SetMarkerStyle(0); Graph_Graph_Graph30163023->GetXaxis()->SetNdivisions(4); Graph_Graph_Graph30163023->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph30163023->GetXaxis()->SetLabelOffset(999); Graph_Graph_Graph30163023->GetXaxis()->SetLabelSize(0); Graph_Graph_Graph30163023->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph30163023->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph30163023->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); Graph_Graph_Graph30163023->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph30163023->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph30163023->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph30163023->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph30163023->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph30163023->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph30163023->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph30163023->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_Graph30163023); grae->Draw("p1p"); Double_t ptj_toterrs_fx3024[5] = { 21.75, 26.75, 33.5, 43.5, 67.5}; Double_t ptj_toterrs_fy3024[5] = { 0.389299, 0.2509263, 0.1443755, 0.07365244, 0.01874484}; Double_t ptj_toterrs_felx3024[5] = { 0, 0, 0, 0, 0}; Double_t ptj_toterrs_fely3024[5] = { 0.0283978, 0.01982285, 0.01219084, 0.00636368, 0.001684181}; Double_t ptj_toterrs_fehx3024[5] = { 0, 0, 0, 0, 0}; Double_t ptj_toterrs_fehy3024[5] = { 0.03041728, 0.02088176, 0.0127053, 0.007720362, 0.001934453}; grae = new TGraphAsymmErrors(5,ptj_toterrs_fx3024,ptj_toterrs_fy3024,ptj_toterrs_felx3024,ptj_toterrs_fehx3024,ptj_toterrs_fely3024,ptj_toterrs_fehy3024); grae->SetName("ptj_toterrs"); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(20); TH1F *Graph_Graph_ptj_toterrs30173024 = new TH1F("Graph_Graph_ptj_toterrs30173024","",100,17.175,72.075); Graph_Graph_ptj_toterrs30173024->SetMinimum(0.01535459); Graph_Graph_ptj_toterrs30173024->SetMaximum(0.4599818); Graph_Graph_ptj_toterrs30173024->SetDirectory(0); Graph_Graph_ptj_toterrs30173024->SetStats(0); Graph_Graph_ptj_toterrs30173024->SetLineWidth(2); Graph_Graph_ptj_toterrs30173024->SetMarkerStyle(0); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetNdivisions(4); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetLabelOffset(999); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetLabelSize(0); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30173024->GetXaxis()->SetTitleFont(132); Graph_Graph_ptj_toterrs30173024->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); Graph_Graph_ptj_toterrs30173024->GetYaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30173024->GetYaxis()->SetLabelSize(0.05); Graph_Graph_ptj_toterrs30173024->GetYaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30173024->GetYaxis()->SetTitleFont(132); Graph_Graph_ptj_toterrs30173024->GetZaxis()->SetLabelFont(132); Graph_Graph_ptj_toterrs30173024->GetZaxis()->SetLabelSize(0.05); Graph_Graph_ptj_toterrs30173024->GetZaxis()->SetTitleSize(0.06); Graph_Graph_ptj_toterrs30173024->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_ptj_toterrs30173024); grae->Draw("p1p"); Double_t _fx3025[5] = { 21.75, 26.75, 33.5, 43.5, 67.5}; Double_t _fy3025[5] = { 0.389299, 0.2509263, 0.1443755, 0.07365244, 0.01874484}; Double_t _felx3025[5] = { 0, 0, 0, 0, 0}; Double_t _fely3025[5] = { 0.02243218, 0.01539977, 0.009090877, 0.00492242, 0.001303763}; Double_t _fehx3025[5] = { 0, 0, 0, 0, 0}; Double_t _fehy3025[5] = { 0.02411537, 0.01689699, 0.0100922, 0.005544287, 0.001554499}; grae = new TGraphAsymmErrors(5,_fx3025,_fy3025,_felx3025,_fehx3025,_fely3025,_fehy3025); grae->SetName(""); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(20); TH1F *Graph_Graph_Graph30183025 = new TH1F("Graph_Graph_Graph30183025","",100,17.175,72.075); Graph_Graph_Graph30183025->SetMinimum(0.01569697); Graph_Graph_Graph30183025->SetMaximum(0.4530117); Graph_Graph_Graph30183025->SetDirectory(0); Graph_Graph_Graph30183025->SetStats(0); Graph_Graph_Graph30183025->SetLineWidth(2); Graph_Graph_Graph30183025->SetMarkerStyle(0); Graph_Graph_Graph30183025->GetXaxis()->SetNdivisions(4); Graph_Graph_Graph30183025->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph30183025->GetXaxis()->SetLabelOffset(999); Graph_Graph_Graph30183025->GetXaxis()->SetLabelSize(0); Graph_Graph_Graph30183025->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph30183025->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph30183025->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); Graph_Graph_Graph30183025->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph30183025->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph30183025->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph30183025->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph30183025->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph30183025->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph30183025->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph30183025->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_Graph30183025); grae->Draw("p1p"); TLegend *leg = new TLegend(0.65,0.57,0.95,0.82,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextFont(132); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(2); leg->SetFillColor(10); leg->SetFillStyle(0); TLegendEntry *entry=leg->AddEntry("data_stat","Data_{stat}","f"); ci = TColor::GetColor("#ff9933"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("data_tot","Data_{tot}","f"); ci = TColor::GetColor("#ffff00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("powheg_temp","POWHEG","p"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("amcatnlo_temp","aMC@NLO","p"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(24); entry->SetMarkerSize(1); entry->SetTextFont(132); leg->Draw(); TPaveText *pt = new TPaveText(0.5,0.85,0.85,0.94,"brNDC"); pt->SetBorderSize(0); pt->SetFillStyle(0); pt->SetLineWidth(2); pt->SetTextFont(132); TText *AText = pt->AddText("LHCb, #sqrt{s} = 8 TeV"); pt->Draw(); Double_t xAxis21[6] = {20, 25, 30, 40, 50, 100}; TH1F *z_ptj_toterr_copy__21 = new TH1F("z_ptj_toterr_copy__21","z_ptj",5, xAxis21); z_ptj_toterr_copy__21->SetBinContent(1,0.3608738); z_ptj_toterr_copy__21->SetBinContent(2,0.225932); z_ptj_toterr_copy__21->SetBinContent(3,0.1253807); z_ptj_toterr_copy__21->SetBinContent(4,0.06703913); z_ptj_toterr_copy__21->SetBinContent(5,0.01561868); z_ptj_toterr_copy__21->SetBinContent(6,0.780934); z_ptj_toterr_copy__21->SetBinError(1,0.02073388); z_ptj_toterr_copy__21->SetBinError(2,0.01400757); z_ptj_toterr_copy__21->SetBinError(3,0.009350811); z_ptj_toterr_copy__21->SetBinError(4,0.004623786); z_ptj_toterr_copy__21->SetBinError(5,0.001395185); z_ptj_toterr_copy__21->SetBinError(6,0.06975923); z_ptj_toterr_copy__21->SetEntries(12); z_ptj_toterr_copy__21->SetDirectory(0); z_ptj_toterr_copy__21->SetStats(0); ci = TColor::GetColor("#ffff00"); z_ptj_toterr_copy__21->SetFillColor(ci); ci = TColor::GetColor("#ffff00"); z_ptj_toterr_copy__21->SetLineColor(ci); z_ptj_toterr_copy__21->SetLineWidth(2); ci = TColor::GetColor("#ffff00"); z_ptj_toterr_copy__21->SetMarkerColor(ci); z_ptj_toterr_copy__21->SetMarkerStyle(0); z_ptj_toterr_copy__21->GetXaxis()->SetNdivisions(4); z_ptj_toterr_copy__21->GetXaxis()->SetLabelFont(132); z_ptj_toterr_copy__21->GetXaxis()->SetLabelOffset(999); z_ptj_toterr_copy__21->GetXaxis()->SetLabelSize(0); z_ptj_toterr_copy__21->GetXaxis()->SetTitleSize(0.06); z_ptj_toterr_copy__21->GetXaxis()->SetTitleFont(132); z_ptj_toterr_copy__21->GetYaxis()->SetTitle("d#sigma(#it{Zj})/d#it{p}_{T}^{jet} [pb/GeV]"); z_ptj_toterr_copy__21->GetYaxis()->SetLabelFont(132); z_ptj_toterr_copy__21->GetYaxis()->SetLabelSize(0.05); z_ptj_toterr_copy__21->GetYaxis()->SetTitleSize(0.06); z_ptj_toterr_copy__21->GetYaxis()->SetTitleOffset(1.3); z_ptj_toterr_copy__21->GetYaxis()->SetTitleFont(132); z_ptj_toterr_copy__21->GetZaxis()->SetLabelFont(132); z_ptj_toterr_copy__21->GetZaxis()->SetLabelSize(0.05); z_ptj_toterr_copy__21->GetZaxis()->SetTitleSize(0.06); z_ptj_toterr_copy__21->GetZaxis()->SetTitleFont(132); z_ptj_toterr_copy__21->Draw("sameaxis"); upperPad->Modified(); default_Canvas->cd(); // ------------>Primitives in pad: lowerPad TPad *lowerPad = new TPad("lowerPad", "lowerPad",0.005,0.05,0.995,0.995); lowerPad->Draw(); lowerPad->cd(); lowerPad->Range(6.172839,-0.1935898,104.9383,4.832052); lowerPad->SetFillColor(0); lowerPad->SetFillStyle(4000); lowerPad->SetBorderMode(0); lowerPad->SetBorderSize(2); lowerPad->SetTickx(1); lowerPad->SetTicky(1); lowerPad->SetLeftMargin(0.14); lowerPad->SetRightMargin(0.05); lowerPad->SetTopMargin(0.665); lowerPad->SetBottomMargin(0.14); lowerPad->SetFrameLineWidth(2); lowerPad->SetFrameBorderMode(0); lowerPad->SetFrameLineWidth(2); lowerPad->SetFrameBorderMode(0); Double_t xAxis22[6] = {20, 25, 30, 40, 50, 100}; TH1F *zj_ptj_8TeV_400_1001_0ratiocomp0__22 = new TH1F("zj_ptj_8TeV_400_1001_0ratiocomp0__22","z_ptj",5, xAxis22); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(1,1); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(2,1); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(3,1); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(4,1); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(5,1); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinContent(6,0.780934); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(1,0.05745466); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(2,0.06199906); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(3,0.07457933); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(4,0.06897145); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(5,0.08932795); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetBinError(6,0.06975923); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetMinimum(0.51); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetMaximum(1.49); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetEntries(17); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetStats(0); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetFillColor(ci); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetLineColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetLineWidth(2); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetMarkerColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp0__22->SetMarkerStyle(0); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetNdivisions(4); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetLabelOffset(0.02); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetXaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetTitle("Ratio"); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->CenterTitle(true); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetNdivisions(505); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetTickLength(0.12325); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetTitleOffset(1.3); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetYaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetZaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetZaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetZaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0__22->GetZaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0__22->Draw("e2"); Double_t xAxis23[6] = {20, 25, 30, 40, 50, 100}; TH1F *zj_ptj_8TeV_400_1001_0ratiocomp1__23 = new TH1F("zj_ptj_8TeV_400_1001_0ratiocomp1__23","z_ptj",5, xAxis23); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(1,1); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(2,1); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(3,1); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(4,1); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(5,1); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinContent(6,0.780934); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(1,0.02019378); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(2,0.02506611); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(3,0.02354391); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(4,0.03270951); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(5,0.03027217); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetBinError(6,0.02364057); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetMinimum(0.51); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetMaximum(1.49); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetEntries(17); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetStats(0); ci = TColor::GetColor("#ff9933"); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetFillColor(ci); ci = TColor::GetColor("#ff9933"); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetLineColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetLineWidth(2); ci = TColor::GetColor("#ff9933"); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetMarkerColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp1__23->SetMarkerStyle(0); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetNdivisions(4); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetLabelOffset(0.02); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetXaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetTitle("Ratio"); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->CenterTitle(true); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetNdivisions(505); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetTickLength(0.12325); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetYaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetZaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetZaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetZaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp1__23->GetZaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp1__23->Draw("e2same"); Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_fx3026[5] = { 23.25, 28.25, 36.5, 46.5, 82.5}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_fy3026[5] = { 1.017362, 1.064159, 1.064596, 0.9751989, 1.021154}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_felx3026[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_fely3026[5] = { 0.08307013, 0.1014988, 0.07351357, 0.06717222, 0.1051988}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_fehx3026[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp2_fehy3026[5] = { 0.06962999, 0.07751779, 0.06933948, 0.07789628, 0.1122927}; grae = new TGraphAsymmErrors(5,zj_ptj_8TeV_400_1001_0ratiocomp2_fx3026,zj_ptj_8TeV_400_1001_0ratiocomp2_fy3026,zj_ptj_8TeV_400_1001_0ratiocomp2_felx3026,zj_ptj_8TeV_400_1001_0ratiocomp2_fehx3026,zj_ptj_8TeV_400_1001_0ratiocomp2_fely3026,zj_ptj_8TeV_400_1001_0ratiocomp2_fehy3026); grae->SetName("zj_ptj_8TeV_400_1001_0ratiocomp2"); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(24); TH1F *Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026 = new TH1F("Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026","",100,17.325,88.425); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetMinimum(0.51); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetMaximum(1.49); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetDirectory(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetStats(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetLineWidth(2); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->SetMarkerStyle(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetNdivisions(4); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetLabelOffset(0.02); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetXaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetTitle("Ratio"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->CenterTitle(true); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetNdivisions(505); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetYaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetZaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetZaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetZaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_zj_ptj_8TeV_400_1001_0ratiocomp23026); grae->Draw("p1"); Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_fx3027[5] = { 23.25, 28.25, 36.5, 46.5, 82.5}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_fy3027[5] = { 1.017362, 1.064159, 1.064596, 0.9751989, 1.021154}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_felx3027[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_fely3027[5] = { 0.05501606, 0.05969921, 0.05525572, 0.05091044, 0.06940621}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_fehx3027[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp3_fehy3027[5] = { 0.05324843, 0.05924428, 0.05260914, 0.05268456, 0.08842185}; grae = new TGraphAsymmErrors(5,zj_ptj_8TeV_400_1001_0ratiocomp3_fx3027,zj_ptj_8TeV_400_1001_0ratiocomp3_fy3027,zj_ptj_8TeV_400_1001_0ratiocomp3_felx3027,zj_ptj_8TeV_400_1001_0ratiocomp3_fehx3027,zj_ptj_8TeV_400_1001_0ratiocomp3_fely3027,zj_ptj_8TeV_400_1001_0ratiocomp3_fehy3027); grae->SetName("zj_ptj_8TeV_400_1001_0ratiocomp3"); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(24); TH1F *Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027 = new TH1F("Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027","",100,17.325,88.425); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetMinimum(0.51); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetMaximum(1.49); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetDirectory(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetStats(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetLineWidth(2); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->SetMarkerStyle(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetNdivisions(4); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetLabelOffset(0.02); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetXaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetTitle("Ratio"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->CenterTitle(true); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetNdivisions(505); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetYaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetZaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetZaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetZaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_zj_ptj_8TeV_400_1001_0ratiocomp33027); grae->Draw("p1"); Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_fx3028[5] = { 21.75, 26.75, 33.5, 43.5, 67.5}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_fy3028[5] = { 1.078768, 1.110628, 1.151497, 1.098648, 1.200155}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_felx3028[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_fely3028[5] = { 0.07869176, 0.08773815, 0.0972306, 0.09492486, 0.1078312}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_fehx3028[5] = { 0, 0, 0, 0, 0}; Double_t zj_ptj_8TeV_400_1001_0ratiocomp4_fehy3028[5] = { 0.08428785, 0.09242501, 0.1013337, 0.115162, 0.1238551}; grae = new TGraphAsymmErrors(5,zj_ptj_8TeV_400_1001_0ratiocomp4_fx3028,zj_ptj_8TeV_400_1001_0ratiocomp4_fy3028,zj_ptj_8TeV_400_1001_0ratiocomp4_felx3028,zj_ptj_8TeV_400_1001_0ratiocomp4_fehx3028,zj_ptj_8TeV_400_1001_0ratiocomp4_fely3028,zj_ptj_8TeV_400_1001_0ratiocomp4_fehy3028); grae->SetName("zj_ptj_8TeV_400_1001_0ratiocomp4"); grae->SetTitle(""); grae->SetFillColor(1); grae->SetLineWidth(2); grae->SetMarkerStyle(20); TH1F *Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028 = new TH1F("Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028","",100,17.175,72.075); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetMinimum(0.51); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetMaximum(1.49); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetDirectory(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetStats(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetLineWidth(2); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->SetMarkerStyle(0); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetNdivisions(4); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetLabelOffset(0.02); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetXaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetTitle("Ratio"); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->CenterTitle(true); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetNdivisions(505); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetYaxis()->SetTitleFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetZaxis()->SetLabelFont(132); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetZaxis()->SetLabelSize(0.05); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetZaxis()->SetTitleSize(0.06); Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_zj_ptj_8TeV_400_1001_0ratiocomp43028); grae->Draw("p1"); Double_t xAxis24[6] = {20, 25, 30, 40, 50, 100}; TH1F *zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24 = new TH1F("zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24","z_ptj",5, xAxis24); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(1,1); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(2,1); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(3,1); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(4,1); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(5,1); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinContent(6,0.780934); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(1,0.05745466); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(2,0.06199906); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(3,0.07457933); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(4,0.06897145); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(5,0.08932795); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetBinError(6,0.06975923); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetMinimum(0.51); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetMaximum(1.49); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetEntries(17); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetDirectory(0); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetStats(0); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetFillColor(ci); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetLineColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetLineWidth(2); ci = TColor::GetColor("#ffff00"); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetMarkerColor(ci); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->SetMarkerStyle(0); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetTitle("#it{p}_{T}^{jet} [GeV]"); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetNdivisions(4); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetLabelOffset(0.02); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetXaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetTitle("Ratio"); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->CenterTitle(true); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetNdivisions(505); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetTickLength(0.12325); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetTitleOffset(1.3); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetYaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetZaxis()->SetLabelFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetZaxis()->SetLabelSize(0.05); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetZaxis()->SetTitleSize(0.06); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->GetZaxis()->SetTitleFont(132); zj_ptj_8TeV_400_1001_0ratiocomp0_copy__24->Draw("sameaxis"); lowerPad->Modified(); default_Canvas->cd(); default_Canvas->Modified(); default_Canvas->cd(); default_Canvas->SetSelected(default_Canvas); }
void CrossSectionRatio(TString inputFONLL="ROOTfiles/output_inclusiveDd0meson_5TeV_y1.root", TString input="ROOTfiles/hPtSpectrumDzeroPP.root", TString efficiency="test.root", TString inputprescales="prescalePP.root",int usePrescaleCorr=1,TString outputplot="myplot.root",int usePbPb=1,TString label="PbPb",double lumi=1.,Float_t centMin=0., Float_t centMax=100.) { gStyle->SetOptTitle(0); gStyle->SetOptStat(0); gStyle->SetEndErrorSize(0); gStyle->SetMarkerStyle(20); TFile* fileReference = new TFile(inputFONLL.Data()); TGraphAsymmErrors* gaeBplusReference = (TGraphAsymmErrors*)fileReference->Get("gaeSigmaDzero"); if (!(usePbPb==1||usePbPb==0)) std::cout<<"ERROR!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!, you are using a non valid isPbPb option"<<std::endl; bool isPbPb=(bool)(usePbPb); TFile* file = new TFile(input.Data()); TH1F* hYieldTriggerCorrected = (TH1F*)file->Get("hPt"); hYieldTriggerCorrected->SetName("hYieldTriggerCorrected"); TH1F* hYieldNoTriggerCorrected = (TH1F*)file->Get("hPt"); hYieldNoTriggerCorrected->SetName("hYieldNoTriggerCorrected"); TH1F* hYieldTriggerCorrectedFONLLnorm = (TH1F*)file->Get("hPt"); hYieldTriggerCorrectedFONLLnorm->SetName("hYieldTriggerCorrectedFONLLnorm"); TH1F* hDcandidatesTriggerCorrectedFONLLnorm = (TH1F*)file->Get("hDcandidates"); hDcandidatesTriggerCorrectedFONLLnorm->SetName("hDcandidatesTriggerCorrectedFONLLnorm"); TH1F* hYieldNoTriggerCorrectedFONLLnorm = (TH1F*)file->Get("hPt"); hYieldNoTriggerCorrectedFONLLnorm->SetName("hYieldNoTriggerCorrectedFONLLnorm"); TH1F* hDcandidatesNoTriggerCorrectedFONLLnorm = (TH1F*)file->Get("hDcandidates"); hDcandidatesNoTriggerCorrectedFONLLnorm->SetName("hDcandidatesNoTriggerCorrectedFONLLnorm"); TFile* fileeff = new TFile(efficiency.Data()); TH1F* hEff = (TH1F*)fileeff->Get("hEff"); TH1F* hfprompt = new TH1F("hfprompt","",nBins,ptBins); TH1F*hPrescalesPtBins; TH1F*hTriggerEfficiencyPtBins; TH1F* hPtSigma = (TH1F*)hYieldTriggerCorrected->Clone("hPtSigma"); hPtSigma->Divide(hEff); hPtSigma->Scale(1./(2*lumi*BRchain)); hPtSigma->SetName("hPtSigma"); /* TH1F* hPtSigma = (TH1F*)file->Get("hPtSigma"); hPtSigma->Scale(1./lumi); */ hYieldTriggerCorrected->Scale(1./lumi); hYieldNoTriggerCorrected->Scale(1./lumi); hYieldTriggerCorrectedFONLLnorm->Scale(1./lumi); hYieldNoTriggerCorrectedFONLLnorm->Scale(1./lumi); hDcandidatesTriggerCorrectedFONLLnorm->Scale(1./lumi); hDcandidatesNoTriggerCorrectedFONLLnorm->Scale(1./lumi); for (int i=0;i<nBins;i++) { double prompt=bFeedDownCorrection(hPtSigma->GetBinCenter(i+1),isPbPb,1); hfprompt->SetBinContent(i+1,prompt); hPtSigma->SetBinContent(i+1,hPtSigma->GetBinContent(i+1)*prompt); hPtSigma->SetBinError(i+1,hPtSigma->GetBinError(i+1)*prompt); std::cout<<"pt center="<<hPtSigma->GetBinCenter(i+1)<<", prompt fraction="<<prompt<<std::endl; } if (usePrescaleCorr==1){ TFile*fprescales=new TFile(inputprescales.Data()); hPrescalesPtBins=(TH1F*)fprescales->Get("hPrescalesPtBins"); hTriggerEfficiencyPtBins=(TH1F*)fprescales->Get("hTriggerEfficiencyPtBins"); for (int i=0;i<nBins;i++) { hPtSigma->SetBinContent(i+1,hPtSigma->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hPtSigma->SetBinError(i+1,hPtSigma->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hYieldTriggerCorrected->SetBinContent(i+1,hYieldTriggerCorrected->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hYieldTriggerCorrected->SetBinError(i+1,hYieldTriggerCorrected->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hYieldNoTriggerCorrected->SetBinContent(i+1,hYieldNoTriggerCorrected->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)); hYieldNoTriggerCorrected->SetBinError(i+1,hYieldNoTriggerCorrected->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)); hYieldTriggerCorrectedFONLLnorm->SetBinContent(i+1,hYieldTriggerCorrectedFONLLnorm->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hYieldTriggerCorrectedFONLLnorm->SetBinError(i+1,hYieldTriggerCorrectedFONLLnorm->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hDcandidatesTriggerCorrectedFONLLnorm->SetBinContent(i+1,hDcandidatesTriggerCorrectedFONLLnorm->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hDcandidatesTriggerCorrectedFONLLnorm->SetBinError(i+1,hDcandidatesTriggerCorrectedFONLLnorm->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)/hTriggerEfficiencyPtBins->GetBinContent(i+1)); hYieldNoTriggerCorrectedFONLLnorm->SetBinContent(i+1,hYieldNoTriggerCorrectedFONLLnorm->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)); hYieldNoTriggerCorrectedFONLLnorm->SetBinError(i+1,hYieldNoTriggerCorrectedFONLLnorm->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)); hDcandidatesNoTriggerCorrectedFONLLnorm->SetBinContent(i+1,hDcandidatesNoTriggerCorrectedFONLLnorm->GetBinContent(i+1)/hPrescalesPtBins->GetBinContent(i+1)); hDcandidatesNoTriggerCorrectedFONLLnorm->SetBinError(i+1,hDcandidatesNoTriggerCorrectedFONLLnorm->GetBinError(i+1)/hPrescalesPtBins->GetBinContent(i+1)); } } Double_t xr[nBins], xrlow[nBins], xrhigh[nBins], ycross[nBins],ycrossstat[nBins],ycrosssysthigh[nBins],ycrosssystlow[nBins], yFONLL[nBins]; Double_t yratiocrossFONLL[nBins], yratiocrossFONLLstat[nBins], yratiocrossFONLLsysthigh[nBins], yratiocrossFONLLsystlow[nBins]; Double_t yFONLLrelunclow[nBins], yFONLLrelunchigh[nBins], yunity[nBins]; for(int i=0;i<nBins;i++) { gaeBplusReference->GetPoint(i,xr[i],yFONLL[i]); xrlow[i] = gaeBplusReference->GetErrorXlow(i); xrhigh[i] = gaeBplusReference->GetErrorXhigh(i); ycross[i] = hPtSigma->GetBinContent(i+1); ycrossstat[i] = hPtSigma->GetBinError(i+1); double systematic=0.; if (!isPbPb) systematic=0.01*systematicsPP(xr[i],0.); else systematic=0.01*systematicsPbPb(xr[i],centMin,centMax,0.); ycrosssysthigh[i]= hPtSigma->GetBinContent(i+1)*systematic; ycrosssystlow[i]= hPtSigma->GetBinContent(i+1)*systematic; yratiocrossFONLL[i] = ycross[i]/yFONLL[i]; yratiocrossFONLLstat[i] = ycrossstat[i]/yFONLL[i]; yratiocrossFONLLsysthigh[i] = ycrosssysthigh[i]/yFONLL[i]; yratiocrossFONLLsystlow[i] = ycrosssystlow[i]/yFONLL[i]; yFONLLrelunclow[i] = gaeBplusReference->GetErrorYlow(i)/yFONLL[i]; yFONLLrelunchigh[i] = gaeBplusReference->GetErrorYhigh(i)/yFONLL[i]; yunity[i] = yFONLL[i]/yFONLL[i]; hYieldTriggerCorrectedFONLLnorm->SetBinContent(i+1,hYieldTriggerCorrectedFONLLnorm->GetBinContent(i+1)/yFONLL[i]); hYieldTriggerCorrectedFONLLnorm->SetBinError(i+1,hYieldTriggerCorrectedFONLLnorm->GetBinError(i+1)/yFONLL[i]); hDcandidatesTriggerCorrectedFONLLnorm->SetBinContent(i+1,hDcandidatesTriggerCorrectedFONLLnorm->GetBinContent(i+1)/yFONLL[i]); hDcandidatesTriggerCorrectedFONLLnorm->SetBinError(i+1,hDcandidatesTriggerCorrectedFONLLnorm->GetBinError(i+1)/yFONLL[i]); hYieldNoTriggerCorrectedFONLLnorm->SetBinContent(i+1,hYieldNoTriggerCorrectedFONLLnorm->GetBinContent(i+1)/yFONLL[i]); hYieldNoTriggerCorrectedFONLLnorm->SetBinError(i+1,hYieldNoTriggerCorrectedFONLLnorm->GetBinError(i+1)/yFONLL[i]); hDcandidatesNoTriggerCorrectedFONLLnorm->SetBinContent(i+1,hDcandidatesNoTriggerCorrectedFONLLnorm->GetBinContent(i+1)/yFONLL[i]); hDcandidatesNoTriggerCorrectedFONLLnorm->SetBinError(i+1,hDcandidatesNoTriggerCorrectedFONLLnorm->GetBinError(i+1)/yFONLL[i]); } TGraphAsymmErrors* gaeCrossSyst = new TGraphAsymmErrors(nBins,xr,ycross,xrlow,xrhigh,ycrosssystlow,ycrosssysthigh); gaeCrossSyst->SetName("gaeCrossSyst"); gaeCrossSyst->SetMarkerStyle(20); gaeCrossSyst->SetMarkerSize(0.8); TGraphAsymmErrors* gaeRatioCrossFONLLstat = new TGraphAsymmErrors(nBins,xr,yratiocrossFONLL,xrlow,xrhigh,yratiocrossFONLLstat,yratiocrossFONLLstat); gaeRatioCrossFONLLstat->SetName("gaeRatioCrossFONLLstat"); gaeRatioCrossFONLLstat->SetMarkerStyle(20); gaeRatioCrossFONLLstat->SetMarkerSize(0.8); TGraphAsymmErrors* gaeRatioCrossFONLLsyst= new TGraphAsymmErrors(nBins,xr,yratiocrossFONLL,xrlow,xrhigh,yratiocrossFONLLsystlow,yratiocrossFONLLsysthigh); gaeRatioCrossFONLLsyst->SetName("gaeRatioCrossFONLLsyst"); gaeRatioCrossFONLLsyst->SetLineWidth(2); gaeRatioCrossFONLLsyst->SetLineColor(1); gaeRatioCrossFONLLsyst->SetFillColor(2); gaeRatioCrossFONLLsyst->SetFillStyle(0); TGraphAsymmErrors* gaeRatioCrossFONLLunity = new TGraphAsymmErrors(nBins,xr,yunity,xrlow,xrhigh,yFONLLrelunclow,yFONLLrelunchigh); gaeRatioCrossFONLLunity->SetName("gaeRatioCrossFONLLunity"); gaeRatioCrossFONLLunity->SetLineWidth(2); gaeRatioCrossFONLLunity->SetLineColor(2); gaeRatioCrossFONLLunity->SetFillColor(2); gaeRatioCrossFONLLunity->SetFillStyle(3002); TCanvas* cSigma = new TCanvas("cSigma","",600,750); cSigma->SetFrameBorderMode(0); cSigma->SetFrameBorderMode(0); cSigma->Range(-1.989924,-0.2917772,25.49622,2.212202); cSigma->SetFillColor(0); cSigma->SetBorderMode(0); cSigma->SetBorderSize(2); cSigma->SetLeftMargin(0.1451613); cSigma->SetRightMargin(0.05443548); cSigma->SetTopMargin(0.08474576); cSigma->SetBottomMargin(0.1165254); cSigma->SetFrameBorderMode(0); cSigma->SetFrameBorderMode(0); cSigma->cd(); TPad* pSigma = new TPad("pSigma","",0,0.25,1,1); pSigma->SetFillColor(0); pSigma->SetBorderMode(0); pSigma->SetBorderSize(2); pSigma->SetLeftMargin(0.1451613); pSigma->SetRightMargin(0.05443548); pSigma->SetTopMargin(0.08474576); pSigma->SetBottomMargin(0); pSigma->SetLogy(); pSigma->Draw(); pSigma->cd(); Float_t yaxisMin=1.1,yaxisMax=1.e+9; if(label=="PPMB"||label=="PbPbMB") { yaxisMin=1.e+4; yaxisMax=1.e+13; } TH2F* hemptySigma=new TH2F("hemptySigma","",50,ptBins[0]-5.,ptBins[nBins]+5.,10.,yaxisMin,yaxisMax); hemptySigma->GetXaxis()->CenterTitle(); hemptySigma->GetYaxis()->CenterTitle(); hemptySigma->GetYaxis()->SetTitle("d#sigma / dp_{T}( pb GeV^{-1}c)"); if(isPbPb) hemptySigma->GetYaxis()->SetTitle("1/T_{AA} * dN / dp_{T}( pb GeV^{-1}c)"); hemptySigma->GetXaxis()->SetTitleOffset(1.); hemptySigma->GetYaxis()->SetTitleOffset(1.3); hemptySigma->GetXaxis()->SetTitleSize(0.045); hemptySigma->GetYaxis()->SetTitleSize(0.045); hemptySigma->GetXaxis()->SetTitleFont(42); hemptySigma->GetYaxis()->SetTitleFont(42); hemptySigma->GetXaxis()->SetLabelFont(42); hemptySigma->GetYaxis()->SetLabelFont(42); hemptySigma->GetXaxis()->SetLabelSize(0.04); hemptySigma->GetYaxis()->SetLabelSize(0.04); hemptySigma->SetMaximum(2); hemptySigma->SetMinimum(0.); hemptySigma->Draw(); gaeBplusReference->SetFillColor(2); gaeBplusReference->SetFillStyle(3001); gaeBplusReference->SetLineWidth(3); gaeBplusReference->SetLineColor(2); gaeBplusReference->Draw("5same"); hPtSigma->SetLineColor(1); hPtSigma->SetLineWidth(2); hPtSigma->Draw("epsame"); gaeCrossSyst->SetFillColor(1); gaeCrossSyst->SetFillStyle(0); gaeCrossSyst->SetLineWidth(2); gaeCrossSyst->SetLineColor(1); gaeCrossSyst->Draw("5same"); TLatex* texCms = new TLatex(0.16,0.95, "#scale[1.25]{CMS} Preliminary"); texCms->SetNDC(); texCms->SetTextAlign(12); texCms->SetTextSize(0.04); texCms->SetTextFont(42); texCms->Draw(); TLatex* texCol = new TLatex(0.94,0.95, Form("%s #sqrt{s_{NN}} = 5.02 TeV",label.Data())); texCol->SetNDC(); texCol->SetTextAlign(32); texCol->SetTextSize(0.04); texCol->SetTextFont(42); texCol->Draw(); TString texper="%"; TLatex* texCent = new TLatex(0.53,0.815,Form("Centrality %.0f - %.0f%s",centMin,centMax,texper.Data())); texCent->SetNDC(); texCent->SetTextFont(42); texCent->SetTextSize(0.04); if(isPbPb) texCent->Draw(); TLatex* texY = new TLatex(0.53,0.77,"|y| < 1.0"); texY->SetNDC(); texY->SetTextFont(42); texY->SetTextSize(0.04); texY->SetLineWidth(2); texY->Draw(); TLegend* leg_CS = new TLegend(0.52,0.64,0.85,0.75); leg_CS->SetBorderSize(0); leg_CS->SetFillStyle(0); leg_CS->AddEntry(hPtSigma,"data","pf"); leg_CS->AddEntry(gaeBplusReference,"FONLL pp ref.","f"); leg_CS->Draw("same"); /* TLatex * tlatexlumi=new TLatex(0.671371,0.7801268,"L = 9.97 pb^{-1}"); tlatexlumi->SetNDC(); tlatexlumi->SetTextColor(1); tlatexlumi->SetTextFont(42); tlatexlumi->SetTextSize(0.045); */ cSigma->cd(); TPad* pRatio = new TPad("pRatio","",0,0,1,0.25); pRatio->SetLeftMargin(0.1451613); pRatio->SetRightMargin(0.05443548); pRatio->SetTopMargin(0); pRatio->SetBottomMargin(0.25); pRatio->Draw(); pRatio->cd(); TH2F* hemptyRatio=new TH2F("hemptyRatio","",50,ptBins[0]-5.,ptBins[nBins]+5.,10.,0.,3.1); hemptyRatio->GetXaxis()->SetTitle("p_{T} (GeV/c)"); hemptyRatio->GetYaxis()->CenterTitle(); hemptyRatio->GetYaxis()->SetTitle("Data / FONLL"); hemptyRatio->GetXaxis()->SetTitleOffset(0.9); hemptyRatio->GetYaxis()->SetTitleOffset(0.5); hemptyRatio->GetXaxis()->SetTitleSize(0.12); hemptyRatio->GetYaxis()->SetTitleSize(0.12); hemptyRatio->GetXaxis()->SetTitleFont(42); hemptyRatio->GetYaxis()->SetTitleFont(42); hemptyRatio->GetXaxis()->SetLabelFont(42); hemptyRatio->GetYaxis()->SetLabelFont(42); hemptyRatio->GetXaxis()->SetLabelSize(0.1); hemptyRatio->GetYaxis()->SetLabelSize(0.1); hemptyRatio->Draw(); TLine* l = new TLine(ptBins[0]-5.,1,ptBins[nBins]+5.,1); l->SetLineWidth(1); l->SetLineStyle(2); gaeRatioCrossFONLLunity->Draw("5same"); gaeRatioCrossFONLLstat->Draw("epsame"); gaeRatioCrossFONLLsyst->Draw("5same"); l->Draw("same"); if(!isPbPb) cSigma->SaveAs(Form("plotCrossSection/canvasSigmaDzeroRatio%s.pdf",label.Data())); else cSigma->SaveAs(Form("plotCrossSection/canvasSigmaDzeroRatio%s_%.0f_%.0f.pdf",label.Data(),centMin,centMax)); TCanvas* cEff = new TCanvas("cEff","",550,500); TH2F* hemptyEff=new TH2F("hemptyEff","",50,0.,110.,10.,0,1.); hemptyEff->GetXaxis()->CenterTitle(); hemptyEff->GetYaxis()->CenterTitle(); hemptyEff->GetYaxis()->SetTitle("#alpha x #epsilon_{reco} x #epsilon_{sel} "); hemptyEff->GetXaxis()->SetTitle("p_{T} (GeV/c)"); hemptyEff->GetXaxis()->SetTitleOffset(0.9); hemptyEff->GetYaxis()->SetTitleOffset(1.05); hemptyEff->GetXaxis()->SetTitleSize(0.045); hemptyEff->GetYaxis()->SetTitleSize(0.045); hemptyEff->GetXaxis()->SetTitleFont(42); hemptyEff->GetYaxis()->SetTitleFont(42); hemptyEff->GetXaxis()->SetLabelFont(42); hemptyEff->GetYaxis()->SetLabelFont(42); hemptyEff->GetXaxis()->SetLabelSize(0.04); hemptyEff->GetYaxis()->SetLabelSize(0.04); hemptyEff->SetMaximum(2); hemptyEff->SetMinimum(0.); hemptyEff->Draw(); cEff->cd(); hemptyEff->Draw(); hEff->SetLineWidth(2); hEff->SetLineColor(1); hEff->Draw("same"); TString text; TString sample; if (label=="PbPb") { text="CMS Preliminary PbPb #sqrt{s}= 5.02 TeV"; sample="Pythia8+Hydjet MC simulation, prompt D^{0}";} else {text="CMS Preliminary pp #sqrt{s}= 5.02 TeV"; sample="Pythia8 MC simulation, prompt D^{0}";} TLatex * tlatexeff=new TLatex(0.1612903,0.8525793,text.Data()); tlatexeff->SetNDC(); tlatexeff->SetTextColor(1); tlatexeff->SetTextFont(42); tlatexeff->SetTextSize(0.04); tlatexeff->Draw(); TLatex * tlatexeff2=new TLatex(0.1612903,0.7925793,sample.Data()); tlatexeff2->SetNDC(); tlatexeff2->SetTextColor(1); tlatexeff2->SetTextFont(42); tlatexeff2->SetTextSize(0.04); tlatexeff2->Draw(); if(!isPbPb) cEff->SaveAs(Form("plotOthers/efficiency%s.pdf",label.Data())); else cEff->SaveAs(Form("plotOthers/efficiency%s_%.0f_%.0f.pdf",label.Data(),centMin,centMax)); TCanvas* cFprompt = new TCanvas("cFprompt","",550,500); TH2F* hemptyPrompt=new TH2F("hemptyPrompt","",50,0.,110.,10.,0,1.); hemptyPrompt->GetXaxis()->CenterTitle(); hemptyPrompt->GetYaxis()->CenterTitle(); hemptyPrompt->GetYaxis()->SetTitle("f_{prompt}"); hemptyPrompt->GetXaxis()->SetTitle("p_{T} (GeV/c)"); hemptyPrompt->GetXaxis()->SetTitleOffset(0.9); hemptyPrompt->GetYaxis()->SetTitleOffset(1.05); hemptyPrompt->GetXaxis()->SetTitleSize(0.045); hemptyPrompt->GetYaxis()->SetTitleSize(0.045); hemptyPrompt->GetXaxis()->SetTitleFont(42); hemptyPrompt->GetYaxis()->SetTitleFont(42); hemptyPrompt->GetXaxis()->SetLabelFont(42); hemptyPrompt->GetYaxis()->SetLabelFont(42); hemptyPrompt->GetXaxis()->SetLabelSize(0.04); hemptyPrompt->GetYaxis()->SetLabelSize(0.04); hemptyPrompt->SetMaximum(2); hemptyPrompt->SetMinimum(0.); hemptyPrompt->Draw(); cFprompt->cd(); hemptyPrompt->Draw(); hfprompt->SetLineWidth(2); hfprompt->SetLineColor(1); hfprompt->Draw("same"); if(!isPbPb) cFprompt->SaveAs(Form("plotOthers/cFprompt%s.pdf",label.Data())); else cFprompt->SaveAs(Form("plotOthers/cFprompt%s_%.0f_%.0f.pdf",label.Data(),centMin,centMax)); TFile *outputfile=new TFile(outputplot.Data(),"recreate"); outputfile->cd(); gaeCrossSyst->Write(); gaeRatioCrossFONLLstat->Write(); gaeBplusReference->Write(); hPtSigma->Write(); gaeRatioCrossFONLLstat->Write(); gaeRatioCrossFONLLsyst->Write(); gaeRatioCrossFONLLunity->Write(); hEff->Write(); hfprompt->Write(); hYieldTriggerCorrected->Write(); hYieldNoTriggerCorrected->Write(); hDcandidatesTriggerCorrectedFONLLnorm->Write(); hYieldTriggerCorrectedFONLLnorm->Write(); hDcandidatesNoTriggerCorrectedFONLLnorm->Write(); hYieldNoTriggerCorrectedFONLLnorm->Write(); if (usePrescaleCorr==1){ hPrescalesPtBins->Write(); hTriggerEfficiencyPtBins->Write(); } }
void doComparisonPlots_Et(){ // gROOT->ProcessLine(".x /Users/Arabella/Public/style.C"); std::string plotDir = "../../NonGlobe/PLOTS_vsEt"; std::string plotDirOut = "2011vs2012_vsEt"; std::cout << " ci sono " << std::endl; // std::string plotDir = "PLOTS_false_Sh"; // std::string plotDirOut = "2011vs2012_false_Sh"; for(int ii=0; ii<4; ++ii){ std::string category; if(ii == 0) category = "EB_HIGH_scE_reg"; if(ii == 1) category = "EB_LOW_scE_reg"; if(ii == 2) category = "EE_HIGH_scE_reg"; if(ii == 3) category = "EE_LOW_scE_reg"; std::string file2011 = plotDir+"/results_"+category+"_2011.root"; std::string file2012 = plotDir+"/results_"+category+"_2012.root"; TFile f2012(file2012.c_str(),"read"); TFile f2011(file2011.c_str(),"read"); TGraphErrors* graph2012 = (TGraphErrors*)f2012.Get("finalGraph"); TGraphErrors* graph2011 = (TGraphErrors*)f2011.Get("finalGraph"); graph2012->SetMarkerColor(kGreen+2); graph2011->SetMarkerColor(kRed+2); if(ii == 0 || ii == 2){ graph2012->SetMarkerStyle(20); graph2011->SetMarkerStyle(20); } if(ii == 1 || ii == 3){ graph2012->SetMarkerStyle(21); graph2011->SetMarkerStyle(21); } TCanvas* cplot = new TCanvas("gplot", "gplot",100,100,725,500); cplot->cd(); TPad *cLeft = new TPad("pad_0","pad_0",0.00,0.00,1.00,1.00); cLeft->SetLeftMargin(0.17); cLeft->SetRightMargin(0.025); cLeft->SetBottomMargin(0.17); cLeft->Draw(); float tYoffset = 1.75; float tXoffset = 1.6; float labSize = 0.04; float labSize2 = 0.07; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); // pad settings TH1F *hPad = (TH1F*)gPad->DrawFrame(20.,-0.02,120.,0.02); hPad->GetXaxis()->SetTitle("E_{T}"); hPad->GetYaxis()->SetTitle("E/p_{data}-E/p_{mc}"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetTitleOffset(tXoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize); TLegend *tspec = new TLegend(0.64,0.80,0.99,0.99); tspec->SetFillColor(0); tspec->SetTextFont(42); if(ii == 0){ tspec->AddEntry(graph2012,"2012 EB hR9","PL"); tspec->AddEntry(graph2011,"2011 EB hR9","PL"); } if(ii == 1){ tspec->AddEntry(graph2012,"2012 EB lR9","PL"); tspec->AddEntry(graph2011,"2011 EB lR9","PL"); } if(ii == 2){ tspec->AddEntry(graph2012,"2012 EE hR9","PL"); tspec->AddEntry(graph2011,"2011 EE hR9","PL"); } if(ii == 3){ tspec->AddEntry(graph2012,"2012 EE lR9","PL"); tspec->AddEntry(graph2011,"2011 EE lR9","PL"); } graph2012->Draw("P"); graph2011->Draw("P,same"); tspec->Draw("same"); cplot->Print( (plotDirOut+"/EoP_vs_Et_"+category+".png").c_str(),".png"); // cplot->Print( (plotDirOut+"/"+histoName+".png").c_str(),".png"); } // tutto EB in 1 plot std::string f11_h = plotDir+"/results_EB_HIGH_scE_reg_2011.root"; std::string f12_h = plotDir+"/results_EB_HIGH_scE_reg_2012.root"; std::string f11_l = plotDir+"/results_EB_LOW_scE_reg_2011.root"; std::string f12_l = plotDir+"/results_EB_LOW_scE_reg_2012.root"; TFile F12_h(f12_h.c_str(),"read"); TFile F11_h(f11_h.c_str(),"read"); TFile F12_l(f12_l.c_str(),"read"); TFile F11_l(f11_l.c_str(),"read"); TGraphErrors* g2012_h = (TGraphErrors*)F12_h.Get("finalGraph"); TGraphErrors* g2011_h = (TGraphErrors*)F11_h.Get("finalGraph"); TGraphErrors* g2012_l = (TGraphErrors*)F12_l.Get("finalGraph"); TGraphErrors* g2011_l = (TGraphErrors*)F11_l.Get("finalGraph"); g2012_h->SetMarkerColor(kGreen+2); g2012_l->SetMarkerColor(kGreen+2); g2011_h->SetMarkerColor(kRed+2); g2011_l->SetMarkerColor(kRed+2); g2012_h->SetMarkerStyle(20); g2011_h->SetMarkerStyle(20); g2012_l->SetMarkerStyle(21); g2011_l->SetMarkerStyle(21); TCanvas* c = new TCanvas("g", "g",100,100,725,500); c->cd(); TPad *cLeft = new TPad("pad_0","pad_0",0.00,0.00,1.00,1.00); cLeft->SetLeftMargin(0.17); cLeft->SetRightMargin(0.025); cLeft->SetBottomMargin(0.17); cLeft->Draw(); float tYoffset = 1.75; float tXoffset = 1.6; float labSize = 0.04; float labSize2 = 0.07; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); // pad settings TH1F *hPad = (TH1F*)gPad->DrawFrame(20,-0.02,100,0.02); hPad->GetXaxis()->SetTitle("E_{T}"); hPad->GetYaxis()->SetTitle("E/p_{data}-E/p_{mc}"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetTitleOffset(tXoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize); TLegend *tspec = new TLegend(0.64,0.80,0.99,0.99); tspec->SetFillColor(0); tspec->SetTextFont(42); tspec->AddEntry(g2012_h,"2012 EB hR9","PL"); tspec->AddEntry(g2011_h,"2011 EB hR9","PL"); tspec->AddEntry(g2012_l,"2012 EB lR9","PL"); tspec->AddEntry(g2011_l,"2011 EB lR9","PL"); g2012_h->Draw("p"); g2011_h->Draw("p, same"); g2012_l->Draw("p, same"); g2011_l->Draw("p, same"); tspec->Draw("same"); c->Print( (plotDirOut+"/EoP_vs_Et_EB.png").c_str(),".png"); /////////////////////////////////////////////////////// // tutto EE in 1 plot std::string f11_hE = plotDir+"/results_EE_HIGH_scE_reg_2011.root"; std::string f12_hE = plotDir+"/results_EE_HIGH_scE_reg_2012.root"; std::string f11_lE = plotDir+"/results_EE_LOW_scE_reg_2011.root"; std::string f12_lE = plotDir+"/results_EE_LOW_scE_reg_2012.root"; TFile F12_hE(f12_hE.c_str(),"read"); TFile F11_hE(f11_hE.c_str(),"read"); TFile F12_lE(f12_lE.c_str(),"read"); TFile F11_lE(f11_lE.c_str(),"read"); TGraphErrors* g2012_hE = (TGraphErrors*)F12_hE.Get("finalGraph"); TGraphErrors* g2011_hE = (TGraphErrors*)F11_hE.Get("finalGraph"); TGraphErrors* g2012_lE = (TGraphErrors*)F12_lE.Get("finalGraph"); TGraphErrors* g2011_lE = (TGraphErrors*)F11_lE.Get("finalGraph"); g2012_hE->SetMarkerColor(kGreen+2); g2012_lE->SetMarkerColor(kGreen+2); g2011_hE->SetMarkerColor(kRed+2); g2011_lE->SetMarkerColor(kRed+2); g2012_hE->SetMarkerStyle(20); g2011_hE->SetMarkerStyle(20); g2012_lE->SetMarkerStyle(21); g2011_lE->SetMarkerStyle(21); TCanvas* cE = new TCanvas("gE", "gE",100,100,725,500); cE->cd(); TPad *cLeft = new TPad("pad_0","pad_0",0.00,0.00,1.00,1.00); cLeft->SetLeftMargin(0.17); cLeft->SetRightMargin(0.025); cLeft->SetBottomMargin(0.17); cLeft->Draw(); float tYoffset = 1.75; float tXoffset = 1.6; float labSize = 0.04; float labSize2 = 0.07; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); // pad settings TH1F *hPad = (TH1F*)gPad->DrawFrame(20,-0.02,100,0.02); hPad->GetXaxis()->SetTitle("E_{T}"); hPad->GetYaxis()->SetTitle("E/p_{data}-E/p_{mc}"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetTitleOffset(tXoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize); TLegend *tspecE = new TLegend(0.64,0.80,0.99,0.99); tspecE->SetFillColor(0); tspecE->SetTextFont(42); tspecE->AddEntry(g2012_hE,"2012 EE hR9","PL"); tspecE->AddEntry(g2011_hE,"2011 EE hR9","PL"); tspecE->AddEntry(g2012_lE,"2012 EE lR9","PL"); tspecE->AddEntry(g2011_lE,"2011 EE lR9","PL"); g2012_hE->Draw("p"); g2011_hE->Draw("p, same"); g2012_lE->Draw("p, same"); g2011_lE->Draw("p, same"); tspecE->Draw("same"); cE->Print( (plotDirOut+"/EoP_vs_Et_EE.png").c_str(),".png"); }
void limit() { //=========Macro generated from canvas: limit/limit //========= (Thu Apr 27 14:38:33 2017) by ROOT version6.02/05 TCanvas *limit = new TCanvas("limit", "limit",0,0,600,600); gStyle->SetOptFit(1); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); limit->SetHighLightColor(2); limit->Range(0,0,1,1); limit->SetFillColor(0); limit->SetBorderMode(0); limit->SetBorderSize(2); limit->SetLeftMargin(0.16); limit->SetRightMargin(0.04); limit->SetTopMargin(0.06); limit->SetBottomMargin(0.12); limit->SetFrameFillStyle(0); limit->SetFrameBorderMode(0); // ------------>Primitives in pad: pad TPad *pad = new TPad("pad", "pad",0,0,1,1); pad->Draw(); pad->cd(); pad->Range(-59.99999,-2.046818,1565,15.01); pad->SetFillColor(0); pad->SetBorderMode(0); pad->SetLogy(); pad->SetBorderSize(2); pad->SetTickx(1); pad->SetTicky(1); pad->SetLeftMargin(0.16); pad->SetRightMargin(0.04); pad->SetTopMargin(0.06); pad->SetBottomMargin(0.12); pad->SetFrameFillStyle(0); pad->SetFrameBorderMode(0); pad->SetFrameFillStyle(0); pad->SetFrameBorderMode(0); TH1F *tmp01 = new TH1F("tmp01","Graph",100,200,1500); tmp01->SetMinimum(0.); tmp01->SetMaximum(13.98659); tmp01->SetStats(0); tmp01->SetLineStyle(0); tmp01->SetMarkerStyle(20); tmp01->GetXaxis()->SetTitle("m_{H} (GeV)"); tmp01->GetXaxis()->SetLabelFont(42); tmp01->GetXaxis()->SetLabelOffset(0.01); tmp01->GetXaxis()->SetTitleSize(0.05); tmp01->GetXaxis()->SetTickLength(0.02); tmp01->GetXaxis()->SetTitleOffset(1.08); tmp01->GetXaxis()->SetTitleFont(42); tmp01->GetYaxis()->SetTitle("95% CL limit on #sigma/#sigma_{SM}"); tmp01->GetYaxis()->SetLabelFont(42); tmp01->GetYaxis()->SetLabelOffset(0.007); tmp01->GetYaxis()->SetTitleSize(0.05); tmp01->GetYaxis()->SetTickLength(0.02); tmp01->GetYaxis()->SetTitleOffset(1.56); tmp01->GetYaxis()->SetTitleFont(42); tmp01->GetZaxis()->SetLabelFont(42); tmp01->GetZaxis()->SetLabelOffset(0.007); tmp01->GetZaxis()->SetTitleSize(0.05); tmp01->GetZaxis()->SetTickLength(0.02); tmp01->GetZaxis()->SetTitleFont(42); tmp01->Draw("AXIS"); TH1F *tmp02 = new TH1F("tmp02","Graph",100,200,1500); tmp02->SetMinimum(0); tmp02->SetMaximum(13.98659); tmp02->SetStats(0); tmp02->SetLineStyle(0); tmp02->SetMarkerStyle(20); tmp02->GetXaxis()->SetTitle("m_{H} (GeV)"); tmp02->GetXaxis()->SetLabelFont(42); tmp02->GetXaxis()->SetLabelOffset(0.01); tmp02->GetXaxis()->SetTitleSize(0.05); tmp02->GetXaxis()->SetTickLength(0.02); tmp02->GetXaxis()->SetTitleOffset(1.08); tmp02->GetXaxis()->SetTitleFont(42); tmp02->GetYaxis()->SetTitle("95% CL limit on #sigma/#sigma_{SM}"); tmp02->GetYaxis()->SetLabelFont(42); tmp02->GetYaxis()->SetLabelOffset(0.007); tmp02->GetYaxis()->SetTitleSize(0.05); tmp02->GetYaxis()->SetTickLength(0.02); tmp02->GetYaxis()->SetTitleOffset(1.56); tmp02->GetYaxis()->SetTitleFont(42); tmp02->GetZaxis()->SetLabelFont(42); tmp02->GetZaxis()->SetLabelOffset(0.007); tmp02->GetZaxis()->SetTitleSize(0.05); tmp02->GetZaxis()->SetTickLength(0.02); tmp02->GetZaxis()->SetTitleFont(42); tmp02->Draw("AXIGSAME"); Double_t Graph0_fx3001[27] = { 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500}; Double_t Graph0_fy3001[27] = { 4.796875, 2.148438, 0.8398438, 0.3857422, 0.2001953, 0.1088867, 0.06591797, 0.04736328, 0.03564453, 0.02783203, 0.02294922, 0.01806641, 0.01513672, 0.01220703, 0.01123047, 0.009277344, 0.008300781, 0.007324219, 0.007324219, 0.006347656, 0.006347656, 0.005371094, 0.005371094, 0.004394531, 0.004394531, 0.004394531, 0.004394531}; Double_t Graph0_felx3001[27] = { 4.032346e-316, 0, 0, 0, 6.906313e-310, 4.032343e-316, 2.121996e-314, 4.032582e-316, 0, 4.032588e-316, 4.032343e-316, 0, 4.032584e-316, 1.508018e-316, 1.508219e-316, 4.032589e-316, 2.124327e-314, 4.032593e-316, 5.582942e-322, 6.906313e-310, 0, 4.032344e-316, 4.032583e-316, 4.032588e-316, 1.58101e-322, 4.032293e-316, 5.582942e-322}; Double_t Graph0_fely3001[27] = { 2.370331, 1.057434, 0.405159, 0.1845837, 0.09618759, 0.05231667, 0.03192902, 0.02331161, 0.01754379, 0.01435089, 0.01183319, 0.009315491, 0.008041382, 0.006484985, 0.005966187, 0.004928589, 0.00440979, 0.004119873, 0.004119873, 0.003570557, 0.003570557, 0.00302124, 0.00302124, 0.002471924, 0.002471924, 0.002471924, 0.002471924}; Double_t Graph0_fehx3001[27] = { 4.031643e-316, 0, 0, 0, 6.906313e-310, 4.032106e-316, 2.121996e-314, 4.032349e-316, 0, 4.032354e-316, 4.032106e-316, 0, 4.032351e-316, 1.508018e-316, 1.508219e-316, 4.032356e-316, 2.124327e-314, 4.03236e-316, 5.582942e-322, 6.906313e-310, 0, 4.032107e-316, 4.03235e-316, 4.032354e-316, 1.58101e-322, 4.032222e-316, 5.582942e-322}; Double_t Graph0_fehy3001[27] = { 5.693069, 2.47175, 0.8989364, 0.4081147, 0.2108151, 0.1170805, 0.07362081, 0.05438244, 0.04146756, 0.03243252, 0.02825768, 0.02361592, 0.01990321, 0.01752287, 0.01712826, 0.0153559, 0.01456667, 0.01341494, 0.01192601, 0.0124739, 0.01149977, 0.01055484, 0.01051202, 0.008670811, 0.008670811, 0.008635777, 0.008635777}; TGraphAsymmErrors *grae = new TGraphAsymmErrors(27,Graph0_fx3001,Graph0_fy3001,Graph0_felx3001,Graph0_fehx3001,Graph0_fely3001,Graph0_fehy3001); grae->SetName("Graph0"); grae->SetTitle("Graph"); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#ffff00"); grae->SetFillColor(ci); grae->SetMarkerStyle(20); TH1F *Graph_Graph3001 = new TH1F("Graph_Graph3001","Graph",100,70,1630); Graph_Graph3001->SetMinimum(0); Graph_Graph3001->SetMaximum(11.53875); Graph_Graph3001->SetDirectory(0); Graph_Graph3001->SetStats(0); Graph_Graph3001->SetLineStyle(0); Graph_Graph3001->SetMarkerStyle(20); Graph_Graph3001->GetXaxis()->SetLabelFont(42); Graph_Graph3001->GetXaxis()->SetTitleSize(0.05); Graph_Graph3001->GetXaxis()->SetTickLength(0.02); Graph_Graph3001->GetXaxis()->SetTitleOffset(1.08); Graph_Graph3001->GetXaxis()->SetTitleFont(42); Graph_Graph3001->GetYaxis()->SetLabelFont(42); Graph_Graph3001->GetYaxis()->SetLabelOffset(0.007); Graph_Graph3001->GetYaxis()->SetTitleSize(0.05); Graph_Graph3001->GetYaxis()->SetTickLength(0.02); Graph_Graph3001->GetYaxis()->SetTitleOffset(1.56); Graph_Graph3001->GetYaxis()->SetTitleFont(42); Graph_Graph3001->GetZaxis()->SetLabelFont(42); Graph_Graph3001->GetZaxis()->SetLabelOffset(0.007); Graph_Graph3001->GetZaxis()->SetTitleSize(0.05); Graph_Graph3001->GetZaxis()->SetTickLength(0.02); Graph_Graph3001->GetZaxis()->SetTitleFont(42); grae->SetHistogram(Graph_Graph3001); grae->Draw("3"); Double_t Graph1_fx3002[27] = { 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500}; Double_t Graph1_fy3002[27] = { 4.796875, 2.148438, 0.8398438, 0.3857422, 0.2001953, 0.1088867, 0.06591797, 0.04736328, 0.03564453, 0.02783203, 0.02294922, 0.01806641, 0.01513672, 0.01220703, 0.01123047, 0.009277344, 0.008300781, 0.007324219, 0.007324219, 0.006347656, 0.006347656, 0.005371094, 0.005371094, 0.004394531, 0.004394531, 0.004394531, 0.004394531}; Double_t Graph1_felx3002[27] = { 4.028644e-316, 2.608667e-321, 4.022558e-316, 0, 2.420922e-322, 4.028601e-316, 0, 2.11372e-314, 0, 4.940656e-323, 8.744962e-322, 0, 0, 4.940656e-323, 0, 6.906314e-310, 5.33769e+160, 0, 4.021573e-316, 6.906314e-310, 0, 1.188318e-312, 4.027998e-316, 0, 1.58101e-322, 4.027629e-316, 1.630417e-322}; Double_t Graph1_fely3002[27] = { 1.490716, 0.6650269, 0.2516418, 0.1146438, 0.05974151, 0.03228919, 0.01945674, 0.01420552, 0.01069075, 0.009417772, 0.007765532, 0.006113291, 0.005277157, 0.003647804, 0.00335598, 0.002772331, 0.002480507, 0.002317429, 0.002832413, 0.002231598, 0.002231598, 0.001888275, 0.001888275, 0.001544952, 0.001544952, 0.001544952, 0.002162933}; Double_t Graph1_fehx3002[27] = { 1.179415e-312, 2.608667e-321, 4.022558e-316, 0, 2.420922e-322, 4.028634e-316, 0, 2.113722e-314, 0, 4.940656e-323, 8.744962e-322, 0, 0, 4.940656e-323, 0, 6.906314e-310, 2.139459e+161, 0, 4.021573e-316, 6.906314e-310, 0, 1.188318e-312, 4.027998e-316, 0, 1.58101e-322, 4.027675e-316, 1.630417e-322}; Double_t Graph1_fehy3002[27] = { 2.351828, 1.053343, 0.3849801, 0.1768222, 0.09017253, 0.05078118, 0.03126747, 0.02303264, 0.01790216, 0.012869, 0.0113431, 0.009505779, 0.008205643, 0.007395977, 0.0068043, 0.006212621, 0.006088058, 0.005138258, 0.004204029, 0.005262822, 0.003643492, 0.004453157, 0.003768056, 0.004204029, 0.004204029, 0.003643492, 0.003643492}; grae = new TGraphAsymmErrors(27,Graph1_fx3002,Graph1_fy3002,Graph1_felx3002,Graph1_fehx3002,Graph1_fely3002,Graph1_fehy3002); grae->SetName("Graph1"); grae->SetTitle("Graph"); ci = TColor::GetColor("#00ff00"); grae->SetFillColor(ci); grae->SetMarkerStyle(20); TH1F *Graph_Graph3002 = new TH1F("Graph_Graph3002","Graph",100,-8.010917e+160,2.406781e+161); Graph_Graph3002->SetMinimum(0); Graph_Graph3002->SetMaximum(7.86335); Graph_Graph3002->SetDirectory(0); Graph_Graph3002->SetStats(0); Graph_Graph3002->SetLineStyle(0); Graph_Graph3002->SetMarkerStyle(20); Graph_Graph3002->GetXaxis()->SetLabelFont(42); Graph_Graph3002->GetXaxis()->SetTitleSize(0.05); Graph_Graph3002->GetXaxis()->SetTickLength(0.02); Graph_Graph3002->GetXaxis()->SetTitleOffset(1.08); Graph_Graph3002->GetXaxis()->SetTitleFont(42); Graph_Graph3002->GetYaxis()->SetLabelFont(42); Graph_Graph3002->GetYaxis()->SetLabelOffset(0.007); Graph_Graph3002->GetYaxis()->SetTitleSize(0.05); Graph_Graph3002->GetYaxis()->SetTickLength(0.02); Graph_Graph3002->GetYaxis()->SetTitleOffset(1.56); Graph_Graph3002->GetYaxis()->SetTitleFont(42); Graph_Graph3002->GetZaxis()->SetLabelFont(42); Graph_Graph3002->GetZaxis()->SetLabelOffset(0.007); Graph_Graph3002->GetZaxis()->SetTitleSize(0.05); Graph_Graph3002->GetZaxis()->SetTickLength(0.02); Graph_Graph3002->GetZaxis()->SetTitleFont(42); grae->SetHistogram(Graph_Graph3002); grae->Draw("3"); Double_t Graph2_fx1[27] = { 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500}; Double_t Graph2_fy1[27] = { 4.796875, 2.148438, 0.8398438, 0.3857422, 0.2001953, 0.1088867, 0.06591797, 0.04736328, 0.03564453, 0.02783203, 0.02294922, 0.01806641, 0.01513672, 0.01220703, 0.01123047, 0.009277344, 0.008300781, 0.007324219, 0.007324219, 0.006347656, 0.006347656, 0.005371094, 0.005371094, 0.004394531, 0.004394531, 0.004394531, 0.004394531}; TGraph *graph = new TGraph(27,Graph2_fx1,Graph2_fy1); graph->SetName("Graph2"); graph->SetTitle("Graph"); graph->SetFillColor(1); ci = TColor::GetColor("#ff0000"); graph->SetLineColor(ci); graph->SetLineWidth(2); graph->SetMarkerStyle(20); TH1F *Graph_Graph1 = new TH1F("Graph_Graph1","Graph",100,70,1630); Graph_Graph1->SetMinimum(0); Graph_Graph1->SetMaximum(5.276123); Graph_Graph1->SetDirectory(0); Graph_Graph1->SetStats(0); Graph_Graph1->SetLineStyle(0); Graph_Graph1->SetMarkerStyle(20); Graph_Graph1->GetXaxis()->SetLabelFont(42); Graph_Graph1->GetXaxis()->SetTitleSize(0.05); Graph_Graph1->GetXaxis()->SetTickLength(0.02); Graph_Graph1->GetXaxis()->SetTitleOffset(1.08); Graph_Graph1->GetXaxis()->SetTitleFont(42); Graph_Graph1->GetYaxis()->SetLabelFont(42); Graph_Graph1->GetYaxis()->SetLabelOffset(0.007); Graph_Graph1->GetYaxis()->SetTitleSize(0.05); Graph_Graph1->GetYaxis()->SetTickLength(0.02); Graph_Graph1->GetYaxis()->SetTitleOffset(1.56); Graph_Graph1->GetYaxis()->SetTitleFont(42); Graph_Graph1->GetZaxis()->SetLabelFont(42); Graph_Graph1->GetZaxis()->SetLabelOffset(0.007); Graph_Graph1->GetZaxis()->SetTitleSize(0.05); Graph_Graph1->GetZaxis()->SetTickLength(0.02); Graph_Graph1->GetZaxis()->SetTitleFont(42); graph->SetHistogram(Graph_Graph1); graph->Draw("l"); Double_t Graph3_fx2[27] = { 200, 250, 300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450, 1500}; Double_t Graph3_fy2[27] = { 4.79203, 2.152691, 0.8377939, 0.3861777, 0.1995838, 0.1090425, 0.0660598, 0.04759021, 0.03596779, 0.02751563, 0.02238263, 0.01815241, 0.01512282, 0.01228406, 0.01162986, 0.009836298, 0.008643669, 0.007866618, 0.007089044, 0.006702567, 0.005960677, 0.005744891, 0.005145786, 0.004956617, 0.004917011, 0.004476165, 0.004343825}; graph = new TGraph(27,Graph3_fx2,Graph3_fy2); graph->SetName("Graph3"); graph->SetTitle("Graph"); graph->SetFillColor(1); graph->SetLineWidth(2); graph->SetMarkerStyle(20); TH1F *Graph_Graph2 = new TH1F("Graph_Graph2","Graph",100,70,1630); Graph_Graph2->SetMinimum(0); Graph_Graph2->SetMaximum(5.270799); Graph_Graph2->SetDirectory(0); Graph_Graph2->SetStats(0); Graph_Graph2->SetLineStyle(0); Graph_Graph2->SetMarkerStyle(20); Graph_Graph2->GetXaxis()->SetLabelFont(42); Graph_Graph2->GetXaxis()->SetTitleSize(0.05); Graph_Graph2->GetXaxis()->SetTickLength(0.02); Graph_Graph2->GetXaxis()->SetTitleOffset(1.08); Graph_Graph2->GetXaxis()->SetTitleFont(42); Graph_Graph2->GetYaxis()->SetLabelFont(42); Graph_Graph2->GetYaxis()->SetLabelOffset(0.007); Graph_Graph2->GetYaxis()->SetTitleSize(0.05); Graph_Graph2->GetYaxis()->SetTickLength(0.02); Graph_Graph2->GetYaxis()->SetTitleOffset(1.56); Graph_Graph2->GetYaxis()->SetTitleFont(42); Graph_Graph2->GetZaxis()->SetLabelFont(42); Graph_Graph2->GetZaxis()->SetLabelOffset(0.007); Graph_Graph2->GetZaxis()->SetTitleSize(0.05); Graph_Graph2->GetZaxis()->SetTickLength(0.02); Graph_Graph2->GetZaxis()->SetTitleFont(42); graph->SetHistogram(Graph_Graph2); graph->Draw("pl"); TH1F *tmp0_copy3 = new TH1F("tmp0_copy3","Graph",100,200,1500); tmp0_copy3->SetMinimum(0); tmp0_copy3->SetMaximum(11.53875); tmp0_copy3->SetDirectory(0); tmp0_copy3->SetStats(0); tmp0_copy3->SetLineStyle(0); tmp0_copy3->SetMarkerStyle(20); tmp0_copy3->GetXaxis()->SetLabelFont(42); tmp0_copy3->GetXaxis()->SetTitleSize(0.05); tmp0_copy3->GetXaxis()->SetTickLength(0.02); tmp0_copy3->GetXaxis()->SetTitleOffset(1.08); tmp0_copy3->GetXaxis()->SetTitleFont(42); tmp0_copy3->GetYaxis()->SetLabelFont(42); tmp0_copy3->GetYaxis()->SetLabelOffset(0.007); tmp0_copy3->GetYaxis()->SetTitleSize(0.05); tmp0_copy3->GetYaxis()->SetTickLength(0.02); tmp0_copy3->GetYaxis()->SetTitleOffset(1.56); tmp0_copy3->GetYaxis()->SetTitleFont(42); tmp0_copy3->GetZaxis()->SetLabelFont(42); tmp0_copy3->GetZaxis()->SetLabelOffset(0.007); tmp0_copy3->GetZaxis()->SetTitleSize(0.05); tmp0_copy3->GetZaxis()->SetTickLength(0.02); tmp0_copy3->GetZaxis()->SetTitleFont(42); tmp0_copy3->Draw("sameaxis"); TH1F *tmp0_copy4 = new TH1F("tmp0_copy4","Graph",100,200,1500); tmp0_copy4->SetMinimum(0); tmp0_copy4->SetMaximum(11.53875); tmp0_copy4->SetDirectory(0); tmp0_copy4->SetStats(0); tmp0_copy4->SetLineStyle(0); tmp0_copy4->SetMarkerStyle(20); tmp0_copy4->GetXaxis()->SetLabelFont(42); tmp0_copy4->GetXaxis()->SetTitleSize(0.05); tmp0_copy4->GetXaxis()->SetTickLength(0.02); tmp0_copy4->GetXaxis()->SetTitleOffset(1.08); tmp0_copy4->GetXaxis()->SetTitleFont(42); tmp0_copy4->GetYaxis()->SetLabelFont(42); tmp0_copy4->GetYaxis()->SetLabelOffset(0.007); tmp0_copy4->GetYaxis()->SetTitleSize(0.05); tmp0_copy4->GetYaxis()->SetTickLength(0.02); tmp0_copy4->GetYaxis()->SetTitleOffset(1.56); tmp0_copy4->GetYaxis()->SetTitleFont(42); tmp0_copy4->GetZaxis()->SetLabelFont(42); tmp0_copy4->GetZaxis()->SetLabelOffset(0.007); tmp0_copy4->GetZaxis()->SetTitleSize(0.05); tmp0_copy4->GetZaxis()->SetTickLength(0.02); tmp0_copy4->GetZaxis()->SetTitleFont(42); tmp0_copy4->Draw("sameaxig"); TLegend *leg = new TLegend(0.495,0.825,0.945,0.925,NULL,"NBNDC"); leg->SetBorderSize(0); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(1); leg->SetFillColor(0); leg->SetFillStyle(1001); TLegendEntry *entry=leg->AddEntry("Graph3","Observed","LP"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph2","Expected","L"); ci = TColor::GetColor("#ff0000"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph1","#pm1#sigma Expected","F"); ci = TColor::GetColor("#00ff00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph0","#pm2#sigma Expected","F"); ci = TColor::GetColor("#ffff00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); leg->Draw(); TPave *pave = new TPave(0.16,0.81,0.96,0.94,1,"brNDC"); pave->SetFillColor(0); pave->Draw(); leg = new TLegend(0.495,0.825,0.945,0.925,NULL,"NBNDC"); leg->SetBorderSize(0); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(1); leg->SetFillColor(0); leg->SetFillStyle(1001); entry=leg->AddEntry("Graph3","Observed","LP"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph2","Expected","L"); ci = TColor::GetColor("#ff0000"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph1","#pm1#sigma Expected","F"); ci = TColor::GetColor("#00ff00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); entry=leg->AddEntry("Graph0","#pm2#sigma Expected","F"); ci = TColor::GetColor("#ffff00"); entry->SetFillColor(ci); entry->SetFillStyle(1001); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(1); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(42); leg->Draw(); TLatex * tex = new TLatex(0.196,0.9113,"CMS"); tex->SetNDC(); tex->SetTextAlign(13); tex->SetTextSize(0.048); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.196,0.8537,"Internal"); tex->SetNDC(); tex->SetTextAlign(13); tex->SetTextFont(52); tex->SetTextSize(0.03648); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.96,0.952,""); tex->SetNDC(); tex->SetTextAlign(31); tex->SetTextFont(42); tex->SetTextSize(0.036); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.16,0.952,""); tex->SetNDC(); tex->SetTextFont(42); tex->SetTextSize(0.036); tex->SetLineWidth(2); tex->Draw(); pad->Modified(); limit->cd(); limit->Modified(); limit->cd(); limit->SetSelected(limit); }
void DrawVariable(TString VAR,bool SHAPE,int REBIN,float XMIN,float XMAX,TString XTITLE,bool PRINT,bool BLIND=false,float BLIND_MIN=0,float BLIND_MAX=0) { gROOT->ForceStyle(); const int N = 20; TString SAMPLE[N] = { "JetHT", "ttHJetTobb_M125_13TeV_amcatnloFXFX_madspin_pythia8", "ttHJetToNonbb_M125_13TeV_amcatnloFXFX_madspin_pythia8_mWCutfix", "QCD_HT300to500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT500to700_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT700to1000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT1000to1500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT1500to2000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "QCD_HT2000toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8", "DYJetsToQQ_HT180_13TeV-madgraphMLM-pythia8", "WJetsToQQ_HT180_13TeV-madgraphMLM-pythia8", "TT_TuneCUETP8M1_13TeV-powheg-pythia8", "ST_t-channel_antitop_4f_inclusiveDecays_13TeV-powhegV2-madspin-pythia8_TuneCUETP8M1", "ST_tW_top_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1", "ST_tW_antitop_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1", "TTWJetsToQQ_TuneCUETP8M1_13TeV-amcatnloFXFX-madspin-pythia8", "TTZToQQ_TuneCUETP8M1_13TeV-amcatnlo-pythia8", "WZ_TuneCUETP8M1_13TeV-pythia8", "WWTo4Q_13TeV-powheg", "ZZTo4Q_13TeV_amcatnloFXFX_madspin_pythia8" }; float XSEC[N] = { 1.0, 0.2934, 0.2151, 347700, 32100, 6831, 1207, 119.9, 25.24, 1460, 3539, 832, 217, 35.6, 35.6, 0.4062, 0.5297, 47.13, 51.723, 22.29 }; float LUMI(5760); TFile *inf[N]; TH1F *h[N]; TCanvas *can = new TCanvas("can_"+VAR,"can_"+VAR,900,600); can->SetRightMargin(0.15); for(int i=0;i<N;i++) { inf[i] = TFile::Open("Histo_"+SAMPLE[i]+".root"); //cout<<inf[i]->GetName()<<" "<<VAR<<endl; h[i] = (TH1F*)inf[i]->Get("ttH/h_"+VAR); h[i]->SetDirectory(0); h[i]->Rebin(REBIN); h[i]->Sumw2(); h[i]->SetLineWidth(1); h[i]->SetLineColor(kBlack); if (i>0) { float norm = ((TH1F*)inf[i]->Get("eventCounter/GenEventWeight"))->GetSumOfWeights(); //cout<<inf[i]->GetName()<<" "<<norm<<endl; h[i]->Scale(LUMI*XSEC[i]/norm); } else { h[i]->SetLineWidth(2); } inf[i]->Close(); } TH1F *hQCD = (TH1F*)h[3]->Clone("hQCD"); hQCD->Add(h[4]); hQCD->Add(h[5]); hQCD->Add(h[6]); hQCD->Add(h[7]); hQCD->Add(h[8]); TH1F *hVV = (TH1F*)h[17]->Clone("hVV"); hVV->Add(h[18]); hVV->Add(h[19]); TH1F *hST = (TH1F*)h[12]->Clone("hST"); hST->Add(h[13]); hST->Add(h[14]); h[1]->SetLineColor(kRed);//ttHbb h[1]->SetFillColor(kRed-9); h[1]->SetLineWidth(2); h[2]->SetLineColor(kRed);//ttHNobb h[2]->SetFillColor(kRed-10); h[2]->SetLineWidth(2); TH1F *hTT = (TH1F*)h[11]->Clone("TTbar"); TH1F *hTTZ = (TH1F*)h[16]->Clone("TTZ"); TH1F *hTTW = (TH1F*)h[15]->Clone("TTW"); TH1F *hWJets = (TH1F*)h[10]->Clone("WJets"); TH1F *hDYJets = (TH1F*)h[9]->Clone("DYJets"); hQCD->SetFillColor(kBlue-10);//QCD hTT->SetFillColor(kOrange); hST->SetFillColor(kOrange-1);//ST hVV->SetFillColor(kMagenta-10);//VV hTTZ->SetFillColor(kYellow-10);//ttZ hTTW->SetFillColor(kYellow-9);//ttW hWJets->SetFillColor(kGreen-10);//WJets hDYJets->SetFillColor(kGreen-8);//ZJets float kfactor = 1.0; if (hQCD->Integral() > 0) { kfactor = (h[0]->Integral()-hTT->Integral()-hWJets->Integral()-hDYJets->Integral()-hST->Integral())/hQCD->Integral(); } hQCD->Scale(kfactor); TH1F *hBkg = (TH1F*)hQCD->Clone("hBkg"); hBkg->Add(hTT); hBkg->Add(hST); hBkg->Add(hTTW); hBkg->Add(hTTZ); hBkg->Add(hWJets); hBkg->Add(hDYJets); hBkg->Add(hVV); hBkg->SetFillColor(kGray); cout<<"Data events: "<<h[0]->Integral()<<endl; cout<<"ttHJetTobb: "<<h[1]->Integral()<<endl; cout<<"ttHJetToNonbb:"<<h[2]->Integral()<<endl; cout<<"QCD events: "<<hQCD->Integral()<<endl; cout<<"TTbar events: "<<hTT->Integral()<<endl; cout<<"ST events: "<<hST->Integral()<<endl; cout<<"TTZ events: "<<hTTZ->Integral()<<endl; cout<<"TTW events: "<<hTTW->Integral()<<endl; cout<<"WJets events: "<<hWJets->Integral()<<endl; cout<<"DYJets events:"<<hDYJets->Integral()<<endl; cout<<"VV events: "<<hVV->Integral()<<endl; cout<<"kfactor: "<<kfactor<<endl; THStack *hs = new THStack("hs","hs"); hs->Add(hVV); hs->Add(hTTW); hs->Add(hTTZ); hs->Add(hWJets); hs->Add(hDYJets); hs->Add(hST); hs->Add(hTT); hs->Add(hQCD); if (BLIND) { for(int i=0;i<h[0]->GetNbinsX();i++) { if (h[0]->GetBinCenter(i+1) > BLIND_MIN && h[0]->GetBinCenter(i+1) < BLIND_MAX) { h[0]->SetBinContent(i+1,0); h[0]->SetBinError(i+1,0); } } } TH1F *hRatio = (TH1F*)h[0]->Clone("Ratio"); hRatio->SetLineWidth(2); hRatio->Divide(hBkg); TLegend *leg = new TLegend(0.86,0.55,0.99,0.9); leg->SetFillColor(0); leg->SetTextFont(42); leg->SetTextSize(0.03); leg->AddEntry(hQCD,"QCD","F"); leg->AddEntry(hTT,"TTbar","F"); leg->AddEntry(hST,"ST","F"); leg->AddEntry(hTTZ,"ttZ","F"); leg->AddEntry(hTTW,"ttW","F"); leg->AddEntry(hWJets,"WJets","F"); leg->AddEntry(hDYJets,"ZJets","F"); leg->AddEntry(hVV,"Diboson","F"); leg->AddEntry(h[1],"ttHbb","L"); leg->AddEntry(h[2],"ttHNonbb","L"); if (SHAPE) { h[1]->SetFillStyle(3001); h[2]->SetFillStyle(3001); h[0]->Scale(1./h[0]->Integral()); h[1]->Scale(1./h[1]->Integral()); h[2]->Scale(1./h[2]->Integral()); hQCD->Scale(1./hQCD->Integral()); hBkg->Scale(1./hBkg->Integral()); double max = TMath::Max(h[0]->GetBinContent(h[0]->GetMaximumBin()),hBkg->GetBinContent(hBkg->GetMaximumBin())); hBkg->SetMaximum(1.1*max); hBkg->GetXaxis()->SetTitle(XTITLE); hBkg->GetXaxis()->SetRangeUser(XMIN,XMAX); hBkg->Draw("hist"); h[0]->Draw("same E"); //h[1]->Draw("same hist"); leg->Draw(); gPad->RedrawAxis(); can->Print("can_"+VAR+"_norm.pdf"); } else { can->SetBottomMargin(0.25); gPad->SetLogy(); //h[1]->Scale(h[0]->Integral()/h[1]->Integral()); h[1]->SetFillColor(0); TH1F *hAux = (TH1F*)h[0]->Clone("aux"); hAux->Reset(); hAux->GetYaxis()->SetRangeUser(0.5,1.1*TMath::Max(h[1]->GetBinContent(h[1]->GetMaximumBin()),h[0]->GetBinContent(h[0]->GetMaximumBin()))); hAux->GetXaxis()->SetRangeUser(XMIN,XMAX); hAux->GetYaxis()->SetTitle(TString::Format("Number of events / %1.2f fb^{-1}",LUMI/1000)); hAux->GetXaxis()->SetTitle(""); hAux->GetXaxis()->SetLabelSize(0.0); hAux->Draw(); hs->Draw("hist same"); h[0]->Draw("same E"); h[1]->Draw("same hist"); h[2]->Draw("same hist"); leg->Draw(); gPad->RedrawAxis(); TPad *pad = new TPad("pad","pad",0.,0.,1.,1.); pad->SetTopMargin(0.77); pad->SetRightMargin(0.15); pad->SetFillColor(0); pad->SetFillStyle(0); pad->Draw(); pad->cd(0); pad->SetGridy(); hRatio->GetXaxis()->SetTitleOffset(0.95); hRatio->GetYaxis()->SetTitleOffset(1.5); hRatio->GetYaxis()->SetTickLength(0.06); hRatio->GetYaxis()->SetTitleSize(0.03); hRatio->GetYaxis()->SetLabelSize(0.03); hRatio->GetYaxis()->SetTitle("Data/MC"); hRatio->GetXaxis()->SetTitle(XTITLE); hRatio->GetXaxis()->SetRangeUser(XMIN,XMAX); hRatio->GetYaxis()->SetRangeUser(0.5,1.5); hRatio->GetYaxis()->SetNdivisions(505); hRatio->Draw(); if (PRINT) { can->Print("plots/can_"+VAR+"_abs.pdf"); can->Print("plots/can_"+VAR+"_abs.png"); } } }
void macro_MakeQcdClosureTest() { // parameters ////////////////////////////////////////////////////////////// //TFile input("./emuSpec_19619pb-1.root", "open"); TFile input("test_19619pb-1.root", "open"); input.cd(); TParameter<float> *lumi = (TParameter<float> *)input.Get("lumi"); const int nBins = 75; const bool usePu = 1; const bool useWeight = 1; const int qcdEst = 1; // estimation method of QCD contribution. none(0), from SS spectrum(1), from fake rate(2) int eRegion = 2; // electron region EB(0), EE(1), EB+EE(2) bool plotSign[3]; plotSign[0] = 1; // all plotSign[1] = 1; // SS same sign plotSign[2] = 1; // OS opposite sign bool plotType[2]; plotType[0] = 1; // emu spectrum plotType[1] = 1; // cumulative emu spectrum const bool plotPull = 0; // plot (data-bkg)/bkg const bool plotPullBelowSpec = 0; // plot (data-bkg)/bkg below spectrum const bool logPlotX = 0; const bool logPlotY = 1; const bool prelim = 1; const bool groupedPlot = 0; const bool overflowBin = 1; float xRangeMin = 60.; float xRangeMax = 1200.; //float xRangeMin = 0.; //float xRangeMax = 1500.; float yRangeMin[6] = {0.002, 0.002, 0.002, 0.4, 0.4, 0.4}; float yRangeMax[6] = {30, 10, 30, 3000, 1000, 3000}; float yRangeMinRatio[3] = {-0.7, -0.7, -0.7}; float yRangeMaxRatio[3] = {0.7, 0.7, 0.7}; float fitMin = xRangeMin; float fitMax = 1100.; // set to highest bin with a data point float xRangeMinRatio = fitMin; float xRangeMaxRatio = fitMax; // output file formats const bool savePull = 0; const bool saveSpec = 0; const bool saveCumSpec = 0; const bool saveAsPdf = 0; const bool saveAsPng = 1; const bool saveAsRoot = 0; const char *fileNameExtra = ""; //const char *fileNameExtra = "madgraphTTbar_"; const char *plotDir = "./plottemp/"; // plot style int wjetColour= TColor::GetColor("#ffd324"); int jetBkgColour = TColor::GetColor("#ffff66"); int font = 42; //62 //////////////////////////////////////////////////////////////////////////// // systematic errors float systErrLumi = ((TParameter<float> *)input.Get("systErrLumi"))->GetVal(); systErrLumi = 0.; // since we normalize to the Z peak float systErrEff = ((TParameter<float> *)input.Get("systErrEff"))->GetVal(); // muon err & ele err THashList *systErrMCs = (THashList *)input.Get("systErrMCs"); vector<float> systErrMC; systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcTtbar"))->GetVal()); // NNLO ttbar //systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcTtbar700to1000"))->GetVal()); // NLO ttbar700to1000 //systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcTtbar1000up"))->GetVal()); // NLO ttbar1000up systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcDyTauTau"))->GetVal()); //z->tt systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcWW"))->GetVal()); //WW systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcWZ"))->GetVal()); //WZ systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcZZ"))->GetVal()); //ZZ systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcTW"))->GetVal()); //tW systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcDyMuMu"))->GetVal()); //Z->mm systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcDyEE"))->GetVal()); //Z->ee if (qcdEst == 2) systErrMC.push_back(0.4); // qcd error else systErrMC.push_back(((TParameter<float> *)systErrMCs->FindObject("systErrMcWJets"))->GetVal()); //WJets // to keep the histogram when the file is closed TH1::AddDirectory(kFALSE); TH1::SetDefaultSumw2(kTRUE); TString histoSign[3] = {"", "SS_", "OS_"}; TString xAxisTitle[3] = {"m(e#mu)", "m(e^{#pm}#mu^{#pm})", "m(e^{#pm}#mu^{#mp})"}; TString nameSuffix[2] = {"", "cumul"}; TString titleSuffix[2] = {"", " - Cumulative"}; vector<TH1F *> emuMass_wjets; vector<TH1F *> emuMass_qcd; vector<TH1F *> emuMass_qcdFromFake; // define the binning vector<float> binning; if (logPlotX) { //for (float bin = 0.; bin < 100.; bin += 5.) // binning.push_back(bin); for (float bin = 0.; bin < 200.; bin += 10.) binning.push_back(bin); for (float bin = 200.; bin < 400.; bin += 20.) binning.push_back(bin); for (float bin = 400.; bin < 500.; bin += 25.) binning.push_back(bin); for (float bin = 500.; bin <= 620.; bin += 40.) binning.push_back(bin); binning.push_back(670.); binning.push_back(720.); binning.push_back(780.); binning.push_back(840.); binning.push_back(920.); binning.push_back(1000.); binning.push_back(1100.); binning.push_back(1220.); binning.push_back(1380.); binning.push_back(1500.); } else { //for (float bin = 0.; bin <= 1500.; bin += 20.) // binning.push_back(bin); for (float bin = 0.; bin < 200.; bin += 20.) binning.push_back(bin); for (float bin = 200.; bin < 400.; bin += 40.) binning.push_back(bin); for (float bin = 400.; bin < 700.; bin += 50.) binning.push_back(bin); for (float bin = 700.; bin < 1000.; bin += 75.) binning.push_back(bin); for (float bin = 1000.; bin < 1200.; bin += 100.) binning.push_back(bin); for (float bin = 1200.; bin <= 1500.; bin += 150.) binning.push_back(bin); } THashList *mcWeights = (THashList *)input.Get("mcWeights"); TParameter<float> *mcWeight = (TParameter<float> *)mcWeights->FindObject("ttbar"); TParameter<float> *mcWeight700to1000 = (TParameter<float> *)mcWeights->FindObject("ttbar700to1000"); TParameter<float> *mcWeight1000up = (TParameter<float> *)mcWeights->FindObject("ttbar1000up"); float totMcWeight = 1.; // determine qcd contribution TH1F *qcdContrib; TH1F *ssData = MakeHistoFromBranch(&input, "emuTree_data", "mass", SS, eRegion, "", 0., 0., binning, 0x100); TH1F *ssBg = MakeHistoFromBranch(&input, "emuTree_ttbar", "mass", SS, eRegion, "genMTtbar", 0., 700., binning, 0x1DF); totMcWeight = 1. / (1 / mcWeight->GetVal() + 1 / mcWeight700to1000->GetVal()); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ttbar", "mass", SS, eRegion, "genMTtbar", 700., 1000., binning, 0x19F), totMcWeight); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ttbar700to1000", "mass", SS, eRegion, "genMTtbar", 700., 1000., binning, 0x19F), totMcWeight); totMcWeight = 1. / (1 / mcWeight->GetVal() + 1 / mcWeight1000up->GetVal()); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ttbar", "mass", SS, eRegion, "genMTtbar", 1000., 1000000000., binning, 0x19F), totMcWeight); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ttbar1000up", "mass", SS, eRegion, "genMTtbar", 1000., 1000000000., binning, 0x19F), totMcWeight); //TH1F *ssBg = MakeHistoFromBranch(&input, "emuTree_ttbar", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF); //TH1F *ssBg = MakeHistoFromBranch(&input, "emuTree_ttbarto2l", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ztautau", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_ww", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_wz", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_zz", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_tw", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_zmumu", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_zee", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); ssBg->Add(MakeHistoFromBranch(&input, "emuTree_wjets", "mass", SS, eRegion, "", 0., 0., binning, 0x1DF)); qcdContrib = (TH1F *)ssData->Clone("qcdContrib_SS"); qcdContrib->Add(ssBg, -1); for (int i = 0; i < qcdContrib->GetNbinsX() + 2; ++i) { if (qcdContrib->GetBinContent(i) < 0) qcdContrib->SetBinContent(i, 0.); } cout << "expected SS QCD events: " << ssData->Integral() - ssBg->Integral() << endl; cout << "derived SS QCD events: " << qcdContrib->Integral() << endl; cout << "scale factor: " << (ssData->Integral() - ssBg->Integral()) / qcdContrib->Integral()<< endl; qcdContrib->Scale((ssData->Integral() - ssBg->Integral()) / qcdContrib->Integral()); // loop over full spectrum, SS and OS for (int k = 0; k < 3; ++k) { // loop to get normal and cumulated spectrum for (unsigned int j = 0; j < 2; ++j) { input.cd(); bool normToBin = true; if (j > 0) normToBin = false; if (k == 2) k = -1; // make the histograms emuMass_wjets.push_back(MakeHistoFromBranch(&input, "emuTree_wjets", "mass", k, eRegion, "", 0., 0., binning, 0x1DF, normToBin)); if (k == -1) k = 2; emuMass_wjets.back()->SetName("emuMass_" + histoSign[k] + "wjets" + nameSuffix[j]); // qcd contribution if (k == 2) k = -1; emuMass_qcdFromFake.push_back((TH1F *)MakeHistoFromBranch(&input, "frEmuTree_data", "mass", k, eRegion, "", 0., 0., binning, 0x300)); emuMass_qcd.push_back((TH1F *)qcdContrib->Clone("emuMass_" + histoSign[k] + "qcd")); if (k == ALL) emuMass_qcd.back()->Scale(2.); // normalize to bin width if (j < 1) { for (int i = 1; i < emuMass_qcd.back()->GetNbinsX() + 1; ++i) { emuMass_qcd.back()->SetBinContent(i, emuMass_qcd.back()->GetBinContent(i) / emuMass_qcd.back()->GetBinWidth(i)); emuMass_qcd.back()->SetBinError(i, emuMass_qcd.back()->GetBinError(i) / emuMass_qcd.back()->GetBinWidth(i)); emuMass_qcdFromFake.back()->SetBinContent(i, emuMass_qcdFromFake.back()->GetBinContent(i) / emuMass_qcdFromFake.back()->GetBinWidth(i)); emuMass_qcdFromFake.back()->SetBinError(i, emuMass_qcdFromFake.back()->GetBinError(i) / emuMass_qcdFromFake.back()->GetBinWidth(i)); } } if (k == -1) k = 2; // add overflow in last bin if (j == 0 && overflowBin) { emuMass_wjets.back()->SetBinContent(emuMass_wjets.back()->GetNbinsX(), emuMass_wjets.back()->GetBinContent(emuMass_wjets.back()->GetNbinsX()) + emuMass_wjets.back()->GetBinContent(emuMass_wjets.back()->GetNbinsX() + 1)); emuMass_qcd.back()->SetBinContent(emuMass_qcd.back()->GetNbinsX(), emuMass_qcd.back()->GetBinContent(emuMass_qcd.back()->GetNbinsX()) + emuMass_qcd.back()->GetBinContent(emuMass_qcd.back()->GetNbinsX() + 1)); emuMass_qcdFromFake.back()->SetBinContent(emuMass_qcdFromFake.back()->GetNbinsX(), emuMass_qcdFromFake.back()->GetBinContent(emuMass_qcdFromFake.back()->GetNbinsX()) + emuMass_qcdFromFake.back()->GetBinContent(emuMass_qcdFromFake.back()->GetNbinsX() + 1)); } // integrate from the right side if (j == 1) { // loop over bins double error; for (int i = 1; i < nBins + 1; ++i) { emuMass_wjets.back()->SetBinContent(i, emuMass_wjets.back()->IntegralAndError(i, nBins, error)); emuMass_wjets.back()->SetBinError(i, error); emuMass_qcd.back()->SetBinContent(i, emuMass_qcd.back()->IntegralAndError(i, nBins, error)); emuMass_qcd.back()->SetBinError(i, error); emuMass_qcdFromFake.back()->SetBinContent(i, emuMass_qcdFromFake.back()->IntegralAndError(i, nBins, error)); emuMass_qcdFromFake.back()->SetBinError(i, error); } } if (!plotSign[k]) continue; if (!plotType[j]) continue; TCanvas *emuPlot; TPad *specPad; if (plotPullBelowSpec && j == 0) { emuPlot = new TCanvas("emuPlot" + histoSign[k] + nameSuffix[j], "emu Spectrum" + titleSuffix[j], 100, 100, 900, 900); specPad = new TPad("specPad" + histoSign[k] + nameSuffix[j], "emu Spectrum" + titleSuffix[j], 0., 0.33, 1., 1.); specPad->SetBottomMargin(0.06); } else { emuPlot = new TCanvas("emuPlot" + histoSign[k] + nameSuffix[j], "emu Spectrum" + titleSuffix[j], 100, 100, 900, 600); specPad = new TPad("specPad" + histoSign[k] + nameSuffix[j], "emu Spectrum" + titleSuffix[j], 0., 0., 1., 1.); specPad->SetBottomMargin(0.12); } specPad->SetBorderMode(0); specPad->SetBorderSize(2); specPad->SetFrameBorderMode(0); specPad->SetFillColor(0); specPad->SetFrameFillColor(0); if (logPlotX) specPad->SetLogx(); if (logPlotY) specPad->SetLogy(); specPad->SetLeftMargin(0.11); specPad->SetRightMargin(0.09); specPad->SetTopMargin(0.08); specPad->SetTickx(1); specPad->SetTicky(1); specPad->Draw(); specPad->cd(); gStyle->SetTitleFont(font); gStyle->SetLabelFont(font); gStyle->SetLegendFont(font); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetTitleXOffset(1.); gStyle->SetTitleYOffset(1.3); gPad->SetTicks(1, 1); // make a histogram stack with the bg THStack *bgStack = new THStack("bgStack" + histoSign[k] + nameSuffix[j], "Invariant Mass" + titleSuffix[j]); bgStack->Add(emuMass_qcd.back()); bgStack->Add(emuMass_wjets.back()); // plot spectrum emuMass_wjets.back()->SetFillColor(wjetColour); emuMass_wjets.back()->SetMarkerColor(wjetColour); emuMass_wjets.back()->SetLineColor(kBlack); emuMass_wjets.back()->SetLineWidth(2); //emuMass_wjets.back()->Draw("HISTsames"); emuMass_qcd.back()->SetFillColor(jetBkgColour); emuMass_qcd.back()->SetMarkerColor(jetBkgColour); emuMass_qcd.back()->SetLineColor(kBlack); emuMass_qcd.back()->SetLineWidth(2); //emuMass_qcd.back()->Draw("HISTsames"); bgStack->Draw("hist"); emuMass_qcdFromFake.back()->SetLineColor(kRed); emuMass_qcdFromFake.back()->SetLineWidth(2); emuMass_qcdFromFake.back()->Draw("esame"); if (plotPullBelowSpec && j == 0) { bgStack->GetXaxis()->SetTitle(""); } else { bgStack->GetXaxis()->SetTitle(xAxisTitle[k] + " [GeV]"); } bgStack->GetXaxis()->SetTitleFont(font); bgStack->GetXaxis()->SetTitleSize(0.047); bgStack->GetXaxis()->SetTitleOffset(0.9); bgStack->GetXaxis()->SetLabelFont(font); bgStack->GetXaxis()->SetLabelSize(0.05); bgStack->GetXaxis()->SetMoreLogLabels(); bgStack->GetXaxis()->SetNoExponent(); //bgStack->GetXaxis()->SetRangeUser(xRangeMin, xRangeMax); bgStack->GetXaxis()->SetLimits(xRangeMin, xRangeMax); if (j == 1) bgStack->GetYaxis()->SetTitle("Events #geq " + xAxisTitle[k]); else bgStack->GetYaxis()->SetTitle("Events / GeV"); bgStack->GetYaxis()->SetTitleFont(font); bgStack->GetYaxis()->SetTitleSize(0.047); bgStack->GetYaxis()->SetTitleOffset(1.1); bgStack->GetYaxis()->SetLabelFont(font); bgStack->GetYaxis()->SetLabelSize(0.05); bgStack->SetMinimum(yRangeMin[k + j * 3]); bgStack->SetMaximum(yRangeMax[k + j * 3]); // redraw axis emuMass_qcd.back()->Draw("sameaxis"); // legend and labels TLegend legend(0.710, 0.646, 0.901, 0.885); legend.SetTextFont(font); legend.SetTextSize(0.03); legend.SetBorderSize(0); legend.SetLineColor(1); legend.SetLineStyle(1); legend.SetLineWidth(1); legend.SetFillColor(19); legend.SetFillStyle(0); legend.AddEntry(emuMass_wjets.back(), "W+jets (MC)" ,"F"); legend.AddEntry(emuMass_qcd.back(), "jets (SS data)" ,"F"); legend.AddEntry(emuMass_qcdFromFake.back(), "jets (Fake Rate)" ,"le"); legend.DrawClone("sames"); TLatex *tex = new TLatex(); tex->SetNDC(); tex->SetTextFont(font); tex->SetLineWidth(2); tex->SetTextSize(0.042); if (prelim) tex->DrawLatex(0.325, 0.853, "CMS Preliminary, 8 TeV, 19.6 fb^{-1}"); else tex->DrawLatex(0.405, 0.853, "CMS, 8 TeV, 19.6 fb^{-1}"); if (eRegion == 0) tex->DrawLatex(0.325, 0.775, "e in barrel"); if (eRegion == 1) tex->DrawLatex(0.325, 0.775, "e in endcap"); // safe in various file formats stringstream sStream; if (!plotPullBelowSpec || j > 0) { sStream << plotDir << "qcdClosureTestSpec"; if (k == 0) sStream << "_"; sStream << histoSign[k]; if (eRegion == 0) sStream << "EB_"; if (eRegion == 1) sStream << "EE_"; sStream << fileNameExtra << nameSuffix[j]; if (j > 0) sStream << "_"; if (groupedPlot) sStream << "grouped_"; if (!logPlotY) sStream << "lin_"; sStream << lumi->GetVal() << "pb-1"; TString saveFileName = sStream.str(); if ((j == 0 && saveSpec) || (j > 0 && saveCumSpec)) { if (saveAsPdf) emuPlot->Print(saveFileName + ".pdf", "pdf"); if (saveAsPng) emuPlot->Print(saveFileName + ".png", "png"); if (saveAsRoot) emuPlot->Print(saveFileName + ".root", "root"); } } } // end loop over normal or cumulated } // end loop over full, SS and OS // generate one object containing everything vector<vector<TH1F *> > emuMasses; emuMasses.push_back(emuMass_wjets); emuMasses.push_back(emuMass_qcd); // // define groups of MC samples // vector<bool> ttLikeSamples(6, true); // vector<bool> contamSamples(6, false); // contamSamples.push_back(true); // Zmm // contamSamples.push_back(true); // Zee // contamSamples.push_back(true); // WJets or QCD // vector<bool> contamSamplesNoQcd(contamSamples); // vector<bool> allSamples(9, true); // vector<bool> onlyQCD(emuMasses.size() - 1, false); // if (qcdEst > 0) { // onlyQCD.back() = true; // if (qcdEst != 2) { // allSamples.push_back(true); // contamSamples.push_back(true); // contamSamplesNoQcd.push_back(false); // systErrMC.push_back(0.); // QCD error will be calculated later // } else { // contamSamplesNoQcd.back() = false; // } // } // vector<bool> allSamplesNoQcd(allSamples); // if (qcdEst > 0) allSamplesNoQcd.back() = false; // unsigned int qcdInd = onlyQCD.size(); // unsigned int qcdErrInd = qcdInd - 1; // // // calculate rate of syst errors // float systErrLuEff = sqrt(systErrLumi*systErrLumi + systErrEff*systErrEff); // vector<float> systErrMCLuEff; // for (unsigned int it = 0; it < systErrMC.size(); ++it) // systErrMCLuEff.push_back(sqrt(systErrMC[it]*systErrMC[it] + systErrLuEff*systErrLuEff)); // // bool calcQcdErr = false; // if (qcdEst == 1) calcQcdErr = true; // // //cout << "qcdInd " << qcdInd << ", emuMasses.size() " << emuMasses.size() << ", systErrMC.size() " << systErrMC.size() // // << ", systErrMCLuEff.size() " << systErrMCLuEff.size() << ", allSamples.size() " << allSamples.size() // // << ", allSamplesNoQcd.size() " << allSamplesNoQcd.size() << ", contamSamplesNoQcd.size() " << contamSamplesNoQcd.size() // // << ", contamSamples.size() " << contamSamples.size() << ", onlyQCD.size() " << onlyQCD.size() << endl; // //for (unsigned int sIt = 0; sIt < emuMasses.size() - 1; ++sIt) { // // cout << "allSamples " << allSamples[sIt] << ", allSamplesNoQcd " << allSamplesNoQcd[sIt] // // << ", contamSamples " << contamSamples[sIt] << ", contamSamplesNoQcd " << contamSamplesNoQcd[sIt] // // << ", onlyQCD " << onlyQCD[sIt] << ", systErrMC " << systErrMC[sIt] << ", systErrMCLuEff " << systErrMCLuEff[sIt] << endl; // //} // // // define special bins corresponding to specific masses // int bin60 = emuMass_data.at(ALL)->FindBin(60.); // int bin120 = emuMass_data.at(ALL)->FindBin(120.); // int bin200 = emuMass_data.at(ALL)->FindBin(200.); // int bin400 = emuMass_data.at(ALL)->FindBin(400.); // int bin500 = emuMass_data.at(ALL)->FindBin(500.); // // vector<const char *> sampleNames; // sampleNames.push_back("data "); // sampleNames.push_back("ttbar "); // sampleNames.push_back("Ztautau"); // sampleNames.push_back("WW "); // sampleNames.push_back("WZ "); // sampleNames.push_back("ZZ "); // sampleNames.push_back("tW "); // sampleNames.push_back("Zmumu "); // sampleNames.push_back("Zee "); // if (qcdEst != 2) sampleNames.push_back("WJets "); // if (qcdEst > 0) sampleNames.push_back("QCD "); // // // write numbers // cout << endl; // cout << "-----------------------------------------------------------------------------------------------------------" << endl; // cout << "HEEP - TIGHT MU Lumi = " << lumi->GetVal() << "pb-1" << endl; // //cout << " e pT EB > " << bar_et << "GeV/c" << endl; // //cout << " e pT EE > " << end_et << "GeV/c" << endl; // //cout << " mu pT > " << muon_et << "GeV/c" << endl; // //cout << " mu |eta| < " << muon_etaMax << endl; // cout << endl; // cout << "Systematic errors" << endl; // cout << " Luminosity: " << systErrLumi * 100 << "%" << endl; // cout << " Efficiency: " << systErrEff * 100 << "%" << endl; // cout << " ttbar: " << systErrMC[TTBAR-1] * 100 << "%" << endl; // cout << " Z->tautau: " << systErrMC[ZTT-1] * 100 << "%" << endl; // cout << " WW: " << systErrMC[WW-1] * 100 << "%" << endl; // cout << " WZ: " << systErrMC[WZ-1] * 100 << "%" << endl; // cout << " ZZ: " << systErrMC[ZZ-1] * 100 << "%" << endl; // cout << " tW, tbarW: " << systErrMC[TW-1] * 100 << "%" << endl; // cout << " Z->mumu: " << systErrMC[ZMM-1] * 100 << "%" << endl; // cout << " Z->ee: " << systErrMC[ZEE-1] * 100 << "%" << endl; // if (qcdEst != 2) cout << " W+Jets: " << systErrMC[WJET-1] * 100 << "%" << endl; // else cout << " QCD: " << systErrMC.back() * 100 << "%" << endl; // cout << "-----------------------------------------------------------------------------------------------------------" << endl; // for (unsigned int signIt = 1; signIt < 6; signIt += 2) { // if (signIt == 3) cout << "-SS--------------------------------------------------------------------------------------------------------" << endl; // if (signIt == 5) cout << "-OS--------------------------------------------------------------------------------------------------------" << endl; // cout << "-----------------------------------------------------------------------------------------------------------------------------------------" << endl; // cout << "M_emu | > 60GeV/c^2 | > 120GeV/c^2 | > 200GeV/c^2 | > 400GeV/c^2 |" << endl; // cout << "-----------------------------------------------------------------------------------------------------------------------------------------" << endl; // // printf("nb data | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) |\n", // emuMass_data.at(signIt)->GetBinContent(bin60), sqrt(emuMass_data.at(signIt)->GetBinContent(bin60)), // emuMass_data.at(signIt)->GetBinContent(bin120), sqrt(emuMass_data.at(signIt)->GetBinContent(bin120)), // emuMass_data.at(signIt)->GetBinContent(bin200), sqrt(emuMass_data.at(signIt)->GetBinContent(bin200)), // emuMass_data.at(signIt)->GetBinContent(bin400), sqrt(emuMass_data.at(signIt)->GetBinContent(bin400))); // cout << "----------------------------------------------------------------------------------------------------------------------------------------" << endl; // for (unsigned int sampleIt = 1; sampleIt < sampleNames.size(); ++sampleIt) { // if (sampleIt == 7) cout << "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" << endl; // if (qcdEst == 1 && sampleIt == sampleNames.size() - 1) { // printf("nb %7s | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", sampleNames[sampleIt], // emuMass_qcd.at(signIt)->GetBinContent(bin60), emuMass_qcd.at(signIt)->GetBinContent(bin60) * CalcSSQcdErr(emuMasses, systErrMCLuEff, bin60), // emuMass_qcd.at(signIt)->GetBinContent(bin120), emuMass_qcd.at(signIt)->GetBinContent(bin120) * CalcSSQcdErr(emuMasses, systErrMCLuEff, bin120), // emuMass_qcd.at(signIt)->GetBinContent(bin200), emuMass_qcd.at(signIt)->GetBinContent(bin200) * CalcSSQcdErr(emuMasses, systErrMCLuEff, bin200), // emuMass_qcd.at(signIt)->GetBinContent(bin400), emuMass_qcd.at(signIt)->GetBinContent(bin400) * CalcSSQcdErr(emuMasses, systErrMCLuEff, bin400)); // } else { // printf("nb %7s | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", sampleNames[sampleIt], // emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin60), emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin60) * systErrMCLuEff[sampleIt-1], // emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin120), emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin120) * systErrMCLuEff[sampleIt-1], // emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin200), emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin200) * systErrMCLuEff[sampleIt-1], // emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin400), emuMasses.at(sampleIt).at(signIt)->GetBinContent(bin400) * systErrMCLuEff[sampleIt-1]); // } // } // cout << endl; // cout << "----------------------------------------------------------------------------------------------------------------------------------------" << endl; // printf("TOT ttlike | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, ttLikeSamples, signIt, bin60), CalcSystErr(emuMasses, systErrMCLuEff, ttLikeSamples, signIt, bin60), // CalcBgSum(emuMasses, ttLikeSamples, signIt, bin120), CalcSystErr(emuMasses, systErrMCLuEff, ttLikeSamples, signIt, bin120), // CalcBgSum(emuMasses, ttLikeSamples, signIt, bin200), CalcSystErr(emuMasses, systErrMCLuEff, ttLikeSamples, signIt, bin200), // CalcBgSum(emuMasses, ttLikeSamples, signIt, bin400), CalcSystErr(emuMasses, systErrMCLuEff, ttLikeSamples, signIt, bin400)); // printf("TOT contam | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, contamSamples, signIt, bin60), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, contamSamples, signIt, bin60, -1, calcQcdErr), // CalcBgSum(emuMasses, contamSamples, signIt, bin120), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, contamSamples, signIt, bin120, -1, calcQcdErr), // CalcBgSum(emuMasses, contamSamples, signIt, bin200), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, contamSamples, signIt, bin200, -1, calcQcdErr), // CalcBgSum(emuMasses, contamSamples, signIt, bin400), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, contamSamples, signIt, bin400, -1, calcQcdErr)); // cout << "----------------------------------------------------------------------------------------------------------------------------------------" << endl; // // printf("TOT Bkg | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, allSamples, signIt, bin60), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin60, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin120), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin120, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin200), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin200, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin400), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin400, -1, calcQcdErr)); // cout << "----------------------------------------------------------------------------------------------------------------------------------------" << endl; // cout << endl << endl; // } // cout << endl; // // cout << "--Without adding QCD contribution:--------------------------------------------------------------------------------------------------------" << endl; // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // cout << "M_emu | > 60GeV/c^2 | > 120GeV/c^2 | > 200GeV/c^2 | > 400GeV/c^2 |" << endl; // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // for (unsigned int signIt = 1; signIt < 6; signIt += 2) { // if (signIt == 3) cout << "-SS-------------------------------------------------------------------------------------------------------------------------------------" << endl; // if (signIt == 5) cout << "-OS-------------------------------------------------------------------------------------------------------------------------------------" << endl; // printf("nb data | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) |\n", // emuMasses.at(DATA).at(signIt)->GetBinContent(bin60), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin60)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin120), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin120)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin200), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin200)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin400), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin400))); // printf("nb MC | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, allSamplesNoQcd, signIt, bin60), CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, signIt, bin60), // CalcBgSum(emuMasses, allSamplesNoQcd, signIt, bin120), CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, signIt, bin120), // CalcBgSum(emuMasses, allSamplesNoQcd, signIt, bin200), CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, signIt, bin200), // CalcBgSum(emuMasses, allSamplesNoQcd, signIt, bin400), CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, signIt, bin400)); // } // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // // if (qcdEst == 1) { // //systErrMC.back() = 2 * sqrt(emuMasses.at(DATA).at(SS)->Integral() + pow(CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, SS, 1), 2)) / emuMasses.at(qcdInd).at(ALL)->Integral(); // //systErrMC.back() = CalcSystErr(emuMasses, systErrMCLuEff, allSamplesNoQcd, SSCUM, 1) / emuMass_qcd.at(SSCUM)->GetBinContent(1); // //systErrMCLuEff.back() = systErrMC[qcdErrInd]; // // cout << endl; // cout << "---QCD events from SS spectrum:----------------------------------------------------------------------------------------------------------------------------------" << endl; // cout << "-----------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl; // printf("nb QCD SS+OS | %9.3f +- %8.3f (%.1f%%) (syst) | %9.3f +- %8.3f (%.1f%%) (syst) | %9.3f +- %8.3f (%.1f%%) (syst) | %9.3f +- %8.3f (%.1f%%) (syst) |\n", // emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin60), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin60, -1, calcQcdErr), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin60, -1, calcQcdErr) / emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin60), // emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin120), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin120, -1, calcQcdErr), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin120, -1, calcQcdErr) / emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin120), // emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin200), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin200, -1, calcQcdErr), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin200, -1, calcQcdErr) / emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin200), // emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin400), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin400, -1, calcQcdErr), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin400, -1, calcQcdErr) / emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin400)); // printf("%% of total MC | %7.3f%% +- %7.3f%% (syst) | %7.3f%% +- %7.3f%% (syst) | %7.3f%% +- %7.3f%% (syst) | %7.3f%% +- %7.3f%% (syst) |\n", // 100 * emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin60) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin60), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin60, -1, calcQcdErr) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin60), // 100 * emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin120) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin120), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin120, -1, calcQcdErr) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin120), // 100 * emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin200) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin200), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin200, -1, calcQcdErr) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin200), // 100 * emuMasses.at(qcdInd).at(ALLCUM)->GetBinContent(bin400) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin400), // 100 * CalcSystErrWithQCD(emuMasses, systErrMCLuEff, onlyQCD, ALLCUM, bin400, -1, calcQcdErr) / CalcBgSum(emuMasses, allSamplesNoQcd, ALLCUM, bin400)); // cout << "-----------------------------------------------------------------------------------------------------------------------------------------------------------------" << endl; // } // // // top up bg contribution with qcd // if (qcdEst > 0) { // cout << endl; // cout << "--After adding QCD contribution:----------------------------------------------------------------------------------------------------------" << endl; // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // cout << "M_emu | > 60GeV/c^2 | > 120GeV/c^2 | > 200GeV/c^2 | > 400GeV/c^2 |" << endl; // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // for (unsigned int signIt = 1; signIt < 6; signIt += 2) { // if (signIt == 3) cout << "-SS-------------------------------------------------------------------------------------------------------------------------------------" << endl; // if (signIt == 5) cout << "-OS-------------------------------------------------------------------------------------------------------------------------------------" << endl; // printf("nb data | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) |\n", // emuMasses.at(DATA).at(signIt)->GetBinContent(bin60), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin60)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin120), sqrt((emuMasses.at(DATA).at(signIt))->GetBinContent(bin120)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin200), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin200)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin400), sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin400))); // printf("nb MC | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, allSamples, signIt, bin60), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin60, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin120), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin120, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin200), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin200, -1, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin400), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin400, -1, calcQcdErr)); // } // cout << "------------------------------------------------------------------------------------------------------------------------------------------" << endl; // } // // cout << endl; // cout << "-----------------------------------------------------------------------------------------------------------" << endl; // cout << "M_emu | 60 - 120GeV/c^2 | 120 - 200GeV/c^2 | 200 - 400GeV/c^2 |" << endl; // cout << "-----------------------------------------------------------------------------------------------------------" << endl; // for (unsigned int signIt = 1; signIt < 6; signIt += 2) { // printf("nb data | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) | %5.0f +- %-.3f (stat) |\n", // emuMasses.at(DATA).at(signIt)->GetBinContent(bin60) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin120), // sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin60) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin120)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin120) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin200), // sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin120) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin200)), // emuMasses.at(DATA).at(signIt)->GetBinContent(bin200) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin400), // sqrt(emuMasses.at(DATA).at(signIt)->GetBinContent(bin200) - emuMasses.at(DATA).at(signIt)->GetBinContent(bin400))); // printf("nb MC | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) | %9.3f +- %8.3f (syst) |\n", // CalcBgSum(emuMasses, allSamples, signIt, bin60, bin120), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin60, bin120, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin120, bin200), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin120, bin200, calcQcdErr), // CalcBgSum(emuMasses, allSamples, signIt, bin200, bin400), CalcSystErrWithQCD(emuMasses, systErrMCLuEff, allSamples, signIt, bin200, bin400, calcQcdErr)); // cout << "-----------------------------------------------------------------------------------------------------------" << endl; // } }
void makePlot(double canvasSizeX, double canvasSizeY, TH1* histogramTTH, TH1* histogramData, TH1* histogramTT, TH1* histogramTTV, TH1* histogramEWK, TH1* histogramRares, TH1* histogramBgrSum, TH1* histogramBgrUncertainty, const std::string& xAxisTitle, double xAxisOffset, bool useLogScale, double yMin, double yMax, const std::string& yAxisTitle, double yAxisOffset, const std::string& outputFileName) { TH1* histogramTTH_density = 0; if ( histogramTTH ) { if ( histogramData ) checkCompatibleBinning(histogramTTH, histogramData); histogramTTH_density = divideHistogramByBinWidth(histogramTTH); } TH1* histogramData_density = 0; if ( histogramData ) { histogramData_density = divideHistogramByBinWidth(histogramData); } TH1* histogramTT_density = 0; if ( histogramTT ) { if ( histogramData ) checkCompatibleBinning(histogramTT, histogramData); histogramTT_density = divideHistogramByBinWidth(histogramTT); } TH1* histogramTTV_density = 0; if ( histogramTTV ) { if ( histogramData ) checkCompatibleBinning(histogramTTV, histogramData); histogramTTV_density = divideHistogramByBinWidth(histogramTTV); } TH1* histogramEWK_density = 0; if ( histogramEWK ) { if ( histogramData ) checkCompatibleBinning(histogramEWK, histogramData); histogramEWK_density = divideHistogramByBinWidth(histogramEWK); } TH1* histogramRares_density = 0; if ( histogramRares ) { if ( histogramData ) checkCompatibleBinning(histogramRares, histogramData); histogramRares_density = divideHistogramByBinWidth(histogramRares); } TH1* histogramBgrSum_density = 0; if ( histogramBgrSum ) { if ( histogramData ) checkCompatibleBinning(histogramBgrSum, histogramData); histogramBgrSum_density = divideHistogramByBinWidth(histogramBgrSum); } TH1* histogramBgrUncertainty_density = 0; if ( histogramBgrUncertainty ) { if ( histogramData ) checkCompatibleBinning(histogramBgrUncertainty, histogramData); histogramBgrUncertainty_density = divideHistogramByBinWidth(histogramBgrUncertainty); } TCanvas* canvas = new TCanvas("canvas", "", canvasSizeX, canvasSizeY); canvas->SetFillColor(10); canvas->SetFillStyle(4000); canvas->SetFillColor(10); canvas->SetTicky(); canvas->SetBorderSize(2); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.12); TPad* topPad = new TPad("topPad", "topPad", 0.00, 0.35, 1.00, 1.00); topPad->SetFillColor(10); topPad->SetTopMargin(0.065); topPad->SetLeftMargin(0.15); topPad->SetBottomMargin(0.03); topPad->SetRightMargin(0.05); topPad->SetLogy(useLogScale); TPad* bottomPad = new TPad("bottomPad", "bottomPad", 0.00, 0.00, 1.00, 0.35); bottomPad->SetFillColor(10); bottomPad->SetTopMargin(0.02); bottomPad->SetLeftMargin(0.15); bottomPad->SetBottomMargin(0.31); bottomPad->SetRightMargin(0.05); bottomPad->SetLogy(false); canvas->cd(); topPad->Draw(); topPad->cd(); TAxis* xAxis_top = histogramData_density->GetXaxis(); xAxis_top->SetTitle(xAxisTitle.data()); xAxis_top->SetTitleOffset(xAxisOffset); xAxis_top->SetLabelColor(10); xAxis_top->SetTitleColor(10); TAxis* yAxis_top = histogramData_density->GetYaxis(); yAxis_top->SetTitle(yAxisTitle.data()); yAxis_top->SetTitleOffset(yAxisOffset); yAxis_top->SetTitleSize(0.085); yAxis_top->SetLabelSize(0.05); yAxis_top->SetTickLength(0.04); TLegend* legend = new TLegend(0.66, 0.45, 0.94, 0.92, NULL, "brNDC"); legend->SetFillStyle(0); legend->SetBorderSize(0); legend->SetFillColor(10); legend->SetTextSize(0.055); histogramData_density->SetTitle(""); histogramData_density->SetStats(false); histogramData_density->SetMaximum(yMax); histogramData_density->SetMinimum(yMin); histogramData_density->SetMarkerStyle(20); histogramData_density->SetMarkerSize(2); histogramData_density->SetMarkerColor(kBlack); histogramData_density->SetLineColor(kBlack); legend->AddEntry(histogramData_density, "Observed", "p"); histogramData_density->Draw("ep"); legend->AddEntry(histogramTTH_density, "t#bar{t}H", "l"); histogramTT_density->SetTitle(""); histogramTT_density->SetStats(false); histogramTT_density->SetMaximum(yMax); histogramTT_density->SetMinimum(yMin); histogramTT_density->SetFillColor(kMagenta - 10); legend->AddEntry(histogramTT_density, "t#bar{t}+jets", "f"); histogramTTV_density->SetFillColor(kOrange - 4); legend->AddEntry(histogramTTV_density, "t#bar{t}+V", "f"); histogramEWK_density->SetFillColor(kRed + 2); legend->AddEntry(histogramEWK_density, "EWK", "f"); histogramRares_density->SetFillColor(kBlue - 8); legend->AddEntry(histogramRares_density, "Rares", "f"); THStack* histogramStack_density = new THStack("stack", ""); histogramStack_density->Add(histogramRares_density); histogramStack_density->Add(histogramEWK_density); histogramStack_density->Add(histogramTTV_density); histogramStack_density->Add(histogramTT_density); histogramStack_density->Draw("histsame"); histogramBgrUncertainty_density->SetFillColor(kBlack); histogramBgrUncertainty_density->SetFillStyle(3344); histogramBgrUncertainty_density->Draw("e2same"); legend->AddEntry(histogramBgrUncertainty_density, "Uncertainty", "f"); histogramTTH_density->SetLineWidth(2); histogramTTH_density->SetLineStyle(1); histogramTTH_density->SetLineColor(kBlue); histogramTTH_density->Draw("histsame"); histogramData_density->Draw("epsame"); histogramData_density->Draw("axissame"); legend->Draw(); addLabel_CMS_luminosity(0.2050, 0.9225, 0.6850); canvas->cd(); bottomPad->Draw(); bottomPad->cd(); TH1* histogramRatio = (TH1*)histogramData->Clone("histogramRatio"); histogramRatio->Reset(); if ( !histogramRatio->GetSumw2N() ) histogramRatio->Sumw2(); checkCompatibleBinning(histogramRatio, histogramBgrSum); histogramRatio->Divide(histogramData, histogramBgrSum); int numBins_bottom = histogramRatio->GetNbinsX(); for ( int iBin = 1; iBin <= numBins_bottom; ++iBin ) { double binContent = histogramRatio->GetBinContent(iBin); if ( histogramData && histogramData->GetBinContent(iBin) >= 0. ) histogramRatio->SetBinContent(iBin, binContent - 1.0); else histogramRatio->SetBinContent(iBin, -10.); } histogramRatio->SetTitle(""); histogramRatio->SetStats(false); histogramRatio->SetMinimum(-0.50); histogramRatio->SetMaximum(+0.50); histogramRatio->SetMarkerStyle(histogramData_density->GetMarkerStyle()); histogramRatio->SetMarkerSize(histogramData_density->GetMarkerSize()); histogramRatio->SetMarkerColor(histogramData_density->GetMarkerColor()); histogramRatio->SetLineColor(histogramData_density->GetLineColor()); histogramRatio->Draw("ep"); TAxis* xAxis_bottom = histogramRatio->GetXaxis(); xAxis_bottom->SetTitle(xAxis_top->GetTitle()); xAxis_bottom->SetLabelColor(1); xAxis_bottom->SetTitleColor(1); xAxis_bottom->SetTitleOffset(1.20); xAxis_bottom->SetTitleSize(0.13); xAxis_bottom->SetLabelOffset(0.02); xAxis_bottom->SetLabelSize(0.10); xAxis_bottom->SetTickLength(0.055); TAxis* yAxis_bottom = histogramRatio->GetYaxis(); yAxis_bottom->SetTitle("#frac{Data - Simulation}{Simulation}"); yAxis_bottom->SetTitleOffset(0.80); yAxis_bottom->SetNdivisions(505); yAxis_bottom->CenterTitle(); yAxis_bottom->SetTitleSize(0.09); yAxis_bottom->SetLabelSize(0.10); yAxis_bottom->SetTickLength(0.04); TH1* histogramRatioUncertainty = (TH1*)histogramBgrUncertainty->Clone("histogramRatioUncertainty"); if ( !histogramRatioUncertainty->GetSumw2N() ) histogramRatioUncertainty->Sumw2(); checkCompatibleBinning(histogramRatioUncertainty, histogramBgrUncertainty); histogramRatioUncertainty->Divide(histogramBgrSum); int numBins = histogramRatioUncertainty->GetNbinsX(); for ( int iBin = 1; iBin <= numBins; ++iBin ) { double binContent = histogramRatioUncertainty->GetBinContent(iBin); histogramRatioUncertainty->SetBinContent(iBin, binContent - 1.0); } histogramRatioUncertainty->SetFillColor(histogramBgrUncertainty_density->GetFillColor()); //histogramRatioUncertainty->SetFillStyle(histogramBgrUncertainty_density->GetFillStyle()); histogramRatioUncertainty->SetFillStyle(3644); TF1* line = new TF1("line","0", xAxis_bottom->GetXmin(), xAxis_bottom->GetXmax()); line->SetLineStyle(3); line->SetLineWidth(1); line->SetLineColor(kBlack); line->Draw("same"); histogramRatioUncertainty->Draw("e2same"); histogramRatio->Draw("epsame"); canvas->Update(); size_t idx = outputFileName.find("."); std::string outputFileName_plot(outputFileName, 0, idx); if ( useLogScale ) outputFileName_plot.append("_log"); else outputFileName_plot.append("_linear"); if ( idx != std::string::npos ) canvas->Print(std::string(outputFileName_plot).append(std::string(outputFileName, idx)).data()); canvas->Print(std::string(outputFileName_plot).append(".png").data()); canvas->Print(std::string(outputFileName_plot).append(".pdf").data()); canvas->Print(std::string(outputFileName_plot).append(".root").data()); delete histogramTTH_density; delete histogramData_density; delete histogramTT_density; delete histogramTTV_density; delete histogramEWK_density; delete histogramRares_density; delete histogramBgrSum_density; //delete histogramBgrUncertainty_density; delete histogramStack_density; delete legend; delete topPad; delete histogramRatio; delete histogramRatioUncertainty; delete line; delete bottomPad; delete canvas; }
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- int main (int argc, char ** argv) { // check number of inpt parameters if(argc < 2){ cerr<<"Forgot to parse the cfg file --> exit "<<endl; return -1; } // Set Root style from global enviroment path string ROOTStyle; if(getenv ("ROOTStyle")!=NULL){ ROOTStyle = getenv ("ROOTStyle"); gROOT->ProcessLine((".x "+ROOTStyle+"/setTDRStyle.C").c_str()); } gStyle->SetOptStat(0); gStyle->SetPadTopMargin(0.09); gStyle->SetPadLeftMargin(0.13); gStyle->SetErrorX(0.5); // parse config file parameter if (gConfigParser) return 1 ; gConfigParser = new ConfigParser(); TString config ; config.Form("%s",argv[1]); if(!(gConfigParser->init(config))){ cout << ">>> parseConfigFile::Could not open configuration file " << config << endl; return -1; } // import base directory where samples are located and txt file with the directory name + other info string InputBaseDirectory = gConfigParser -> readStringOption("Input::InputBaseDirectory"); // import from cfg file the cross section value for this sample float CrossSection = gConfigParser -> readFloatOption("Input::CrossSection"); // total number of events int maxEventNumber = gConfigParser -> readFloatOption("Input::EventsNumber"); // treeName string treeName = gConfigParser -> readStringOption("Input::TreeName"); // take the cut list string InputCutList = gConfigParser -> readStringOption("Input::InputCutList"); // Read the cut file vector <cutContainer> CutList; if(ReadInputCutFile(InputCutList,CutList) <= 0){ cerr<<" Empty Cut List File or not Exisisting --> Exit "<<endl; return -1;} // take the variable list to be plotted string InputVariableList = gConfigParser -> readStringOption("Input::InputVariableList"); vector<variableContainer> variableList; if(ReadInputVariableFile(InputVariableList,variableList) <= 0 ){ cerr<<" Empty Variable List File or not Exisisting --> Exit "<<endl; return -1;} // take lumi and other parameters float lumi = gConfigParser -> readFloatOption("Option::Lumi"); // fb^(-1) lumi *= 1000. ; // transform into pb^(-1) finalStateString = gConfigParser -> readStringOption("Option::finalStateString"); matchingCone = gConfigParser -> readFloatOption("Option::matchingCone"); minLeptonCleaningPt = gConfigParser -> readFloatOption("Option::minLeptonCleaningPt"); minLeptonCutPt = gConfigParser -> readFloatOption("Option::minLeptonCutPt"); minJetCutPt = gConfigParser -> readFloatOption("Option::minJetCutPt"); usePuppiAsDefault = gConfigParser -> readBoolOption("Option::usePuppiAsDefault"); leptonIsoCut_mu = gConfigParser -> readFloatOption("Option::leptonIsoCutMu"); leptonIsoCut_el = gConfigParser -> readFloatOption("Option::leptonIsoCutEl"); leptonIsoCutLoose = gConfigParser -> readFloatOption("Option::leptonIsoCutLoose"); // output directory string outputPlotDirectory = gConfigParser -> readStringOption("Output::outputPlotDirectory"); system(("mkdir -p output/"+outputPlotDirectory).c_str()); system(("rm -r output/"+outputPlotDirectory+"/*").c_str()); system(("mkdir -p output/"+outputPlotDirectory+"/xs").c_str()); system(("mkdir -p output/"+outputPlotDirectory+"/norm").c_str()); ///// Start the analysis map<string,TH1F*> histoCutEff ; TChain* chain = new TChain (treeName.c_str()) ; chain->Add ((InputBaseDirectory+"/*.root").c_str()) ; int totEvent = chain->GetEntries(); readTree* reader = new readTree((TTree*)(chain)); cout<<"Lumi (fb-1) "<<lumi/1000<<" entries before "<<totEvent<<" cross section "<<CrossSection<<" Nevents before selections "<<lumi*CrossSection<<" weight "<<lumi*CrossSection/float(totEvent)<<endl; float weight = 1.0*lumi*CrossSection/float(totEvent) ; // make the plot container vector<histoContainer> plotVector; for(size_t iCut = 0; iCut < CutList.size(); iCut++){ histoCutEff["WW_EWK_pos_"+to_string(iCut)+"_"+CutList.at(iCut).cutLayerName] = new TH1F(("WW_EWK_pos_"+to_string(iCut)+"_"+CutList.at(iCut).cutLayerName).c_str(),"",15,0,15); for(size_t iVar = 0; iVar < variableList.size(); iVar++){ plotVector.push_back(histoContainer(CutList.at(iCut).cutLayerName,variableList.at(iVar))); } } int passingLHEFilter = 0 ; int maximumEvents = chain->GetEntries () ; if (maxEventNumber > 0 && maxEventNumber < maximumEvents) maximumEvents = maxEventNumber ; // Loop on the events for(int iEvent = 0; iEvent < maximumEvents ; iEvent++){ reader->fChain->GetEntry(iEvent) ; if (iEvent % 100000 == 0) cout << "reading event " << iEvent << "\n" ; // filter LHE level leptons if(TString(finalStateString).Contains("UU")){ if(fabs(reader->leptonLHEpid1) != 13 or fabs(reader->leptonLHEpid2) != 13) continue; } else if(TString(finalStateString).Contains("EE")){ if(fabs(reader->leptonLHEpid1) != 11 or fabs(reader->leptonLHEpid2) != 11) continue; } else if(TString(finalStateString).Contains("EU")){ if(fabs(reader->leptonLHEpid1) != 11 or fabs(reader->leptonLHEpid2) !=13) continue ; } else if(TString(finalStateString).Contains("UE")){ if(fabs(reader->leptonLHEpid1) != 13 or fabs(reader->leptonLHEpid2) !=11) continue ; } else{ cerr<<"problem with lhe level filter definition --> skip event"<<endl; continue; } passingLHEFilter++; // if an event pass the cut, fill the associated map leptonContainer lepton1,lepton2,parton1,parton2,neutrino1,neutrino2,vboson1,vboson2; lepton1.lepton4V_.SetPtEtaPhiM(reader->leptonLHEpt1,reader->leptonLHEeta1,reader->leptonLHEphi1,reader->leptonLHEm1); lepton1.charge_ = reader->leptonLHEch1; lepton1.flavour_ = reader->leptonLHEpid1; lepton2.lepton4V_.SetPtEtaPhiM(reader->leptonLHEpt2,reader->leptonLHEeta2,reader->leptonLHEphi2,reader->leptonLHEm2); lepton2.charge_ = reader->leptonLHEch2; lepton2.flavour_ = reader->leptonLHEpid2; parton1.lepton4V_.SetPtEtaPhiM(reader->jetLHEPartonpt1,reader->jetLHEPartoneta1,reader->jetLHEPartonphi1,0.); parton2.lepton4V_.SetPtEtaPhiM(reader->jetLHEPartonpt2,reader->jetLHEPartoneta2,reader->jetLHEPartonphi2,0.); neutrino1.lepton4V_.SetPtEtaPhiM(reader->neutrinoLHEpt1,reader->neutrinoLHEeta1,reader->neutrinoLHEphi1,0.); neutrino1.charge_ = 0.; neutrino1.flavour_ = reader->neutrinoLHEpid1; neutrino2.lepton4V_.SetPtEtaPhiM(reader->neutrinoLHEpt2,reader->neutrinoLHEeta2,reader->neutrinoLHEphi2,0.); neutrino2.charge_ = 0.; neutrino2.flavour_ = reader->neutrinoLHEpid2; vboson1.lepton4V_.SetPtEtaPhiM(reader->vbosonLHEpt1,reader->vbosonLHEeta1,reader->vbosonLHEphi1,reader->vbosonLHEm1); vboson1.charge_ = reader->vbosonLHEch1; vboson1.flavour_ = reader->vbosonLHEpid1; vboson2.lepton4V_.SetPtEtaPhiM(reader->vbosonLHEpt2,reader->vbosonLHEeta2,reader->vbosonLHEphi2,reader->vbosonLHEm2); vboson2.charge_ = reader->vbosonLHEch2; vboson2.flavour_ = reader->vbosonLHEpid2; float minDR_1 = 999; float minDR_2 = 999; vector<leptonContainer> lepton, neutrino; lepton.push_back(lepton1); lepton.push_back(lepton2); neutrino.push_back(neutrino1); neutrino.push_back(neutrino2); leptonContainer leptFromV1, leptFromV2, neuFromV1, neuFromV2; for(size_t iLep= 0; iLep < lepton.size(); iLep++){ for(size_t iNeu = 0; iNeu < neutrino.size(); iNeu++){ if((lepton.at(iLep).lepton4V_+neutrino.at(iNeu).lepton4V_).DeltaR(vboson1.lepton4V_) < minDR_1 ){ minDR_1 = (lepton.at(iLep).lepton4V_+neutrino.at(iNeu).lepton4V_).DeltaR(vboson1.lepton4V_); leptFromV1 = lepton.at(iLep); neuFromV1 = neutrino.at(iNeu); } if((lepton.at(iLep).lepton4V_+neutrino.at(iNeu).lepton4V_).DeltaR(vboson2.lepton4V_) < minDR_2){ minDR_2 = (lepton.at(iLep).lepton4V_+neutrino.at(iNeu).lepton4V_).DeltaR(vboson2.lepton4V_); leptFromV2 = lepton.at(iLep); neuFromV2 = neutrino.at(iNeu); } } } if(leptFromV1.lepton4V_ == leptFromV2.lepton4V_ or neuFromV1.lepton4V_ == neuFromV2.lepton4V_){ cerr<<" bad matching with gen W "<<endl; continue; } double costheta1 = 0; double costheta2 = 0; double Phi = 0; double costhetastar = 0; double Phi1 = 0; double costheta1_vbf = 0; double costheta2_vbf = 0; double Phi_vbf = 0; double costhetastar_vbf = 0; double Phi1_vbf = 0; TLorentzVector VV = vboson1.lepton4V_ + vboson2.lepton4V_; if(leptFromV1.charge_ > 0 and leptFromV2.charge_ > 0){ computeAnglesResonance(VV,vboson1.lepton4V_,neuFromV1.lepton4V_,leptFromV1.lepton4V_,vboson2.lepton4V_,neuFromV2.lepton4V_,leptFromV2.lepton4V_, costheta1,costheta2,Phi,costhetastar,Phi1); computeAnglesVBF(VV,vboson1.lepton4V_,neuFromV1.lepton4V_,leptFromV1.lepton4V_,vboson2.lepton4V_,neuFromV2.lepton4V_,leptFromV2.lepton4V_,parton1.lepton4V_, parton2.lepton4V_,costheta1_vbf,costheta2_vbf,Phi_vbf,costhetastar_vbf,Phi1_vbf); } else if(leptFromV1.charge_ < 0 and leptFromV2.charge_ < 0){ computeAnglesResonance(VV,vboson1.lepton4V_,leptFromV1.lepton4V_,neuFromV1.lepton4V_,vboson2.lepton4V_,leptFromV2.lepton4V_,neuFromV2.lepton4V_, costheta1,costheta2,Phi,costhetastar,Phi1); computeAnglesVBF(VV,vboson1.lepton4V_,leptFromV1.lepton4V_,neuFromV1.lepton4V_,vboson2.lepton4V_,leptFromV2.lepton4V_,neuFromV2.lepton4V_,parton1.lepton4V_, parton2.lepton4V_,costheta1_vbf,costheta2_vbf,Phi_vbf,costhetastar_vbf,Phi1_vbf); } else if(leptFromV1.charge_ < 0 and leptFromV2.charge_ > 0){ computeAnglesResonance(VV,vboson1.lepton4V_,leptFromV1.lepton4V_,neuFromV1.lepton4V_,vboson2.lepton4V_,neuFromV2.lepton4V_,leptFromV2.lepton4V_, costheta1,costheta2,Phi,costhetastar,Phi1); computeAnglesVBF(VV,vboson1.lepton4V_,leptFromV1.lepton4V_,neuFromV1.lepton4V_,vboson2.lepton4V_,neuFromV2.lepton4V_,leptFromV2.lepton4V_,parton1.lepton4V_, parton2.lepton4V_,costheta1_vbf,costheta2_vbf,Phi_vbf,costhetastar_vbf,Phi1_vbf); } else if(leptFromV1.charge_ > 0 and leptFromV2.charge_ < 0){ computeAnglesResonance(VV,vboson1.lepton4V_,neuFromV1.lepton4V_,leptFromV1.lepton4V_,vboson2.lepton4V_,leptFromV2.lepton4V_,neuFromV2.lepton4V_, costheta1,costheta2,Phi,costhetastar,Phi1); computeAnglesVBF(VV,vboson1.lepton4V_,neuFromV1.lepton4V_,leptFromV1.lepton4V_,vboson2.lepton4V_,leptFromV2.lepton4V_,neuFromV2.lepton4V_,parton1.lepton4V_, parton2.lepton4V_,costheta1_vbf,costheta2_vbf,Phi_vbf,costhetastar_vbf,Phi1_vbf); } else{ cerr<<" wrong charge composition "<<endl; continue; } float mTR = 0; float mR = 0; TLorentzVector L_met ,L_dijet, L_dilepton, L_LLmet; L_met = neutrino1.lepton4V_ + neutrino2.lepton4V_; L_dijet = parton1.lepton4V_ + parton2.lepton4V_; L_dilepton = lepton1.lepton4V_ + lepton2.lepton4V_; L_LLmet = L_dilepton + L_met ; computeRazor(lepton1.lepton4V_,lepton2.lepton4V_,L_met,mTR,mR); if(lepton1.lepton4V_.Pt() < minLeptonCutPt or lepton2.lepton4V_.Pt() < minLeptonCutPt) continue; // Loop on the cut list --> one cut for each polarization for(size_t iCut = 0; iCut < CutList.size(); iCut++){ // cut the events string name = "WW_EWK"; if(!passCutContainerSelection(reader, CutList.at(iCut), name, int(iCut), usePuppiAsDefault, minLeptonCutPt, minLeptonCleaningPt, leptonIsoCut_mu, leptonIsoCut_el, leptonIsoCutLoose, matchingCone, minJetCutPt, histoCutEff, finalStateString)) continue; float asimL = (lepton1.lepton4V_.Pt()-lepton2.lepton4V_.Pt())/(lepton1.lepton4V_.Pt()+lepton2.lepton4V_.Pt()) ; float asimJ = (parton1.lepton4V_.Pt()-parton2.lepton4V_.Pt())/(parton1.lepton4V_.Pt()+parton2.lepton4V_.Pt()) ; float Rvar = (lepton1.lepton4V_.Pt()*lepton2.lepton4V_.Pt())/(parton1.lepton4V_.Pt()*parton2.lepton4V_.Pt()) ; // loop on variables for(size_t iVar = 0; iVar < variableList.size(); iVar++){ histoContainer tmpPlot; tmpPlot.cutName = CutList.at(iCut).cutLayerName; tmpPlot.varName = variableList.at(iVar).variableName; vector<histoContainer>::iterator itVec ; itVec = find(plotVector.begin(),plotVector.end(),tmpPlot); if(itVec == plotVector.end()){ cerr<<"Problem -->plot not found for "<<CutList.at(iCut).cutLayerName<<" "<<variableList.at(iVar).variableName<<endl; continue ; } // vector boson info if(variableList.at(iVar).variableName == "ptV1"){ itVec->histogram->Fill(vboson1.lepton4V_.Pt(),1.*weight) ; } else if(variableList.at(iVar).variableName == "ptV2"){ itVec->histogram->Fill(vboson2.lepton4V_.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "etaV1"){ itVec->histogram->Fill(vboson1.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "etaV2"){ itVec->histogram->Fill(vboson2.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "ptVV"){ itVec->histogram->Fill(L_dijet.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "mVV"){ itVec->histogram->Fill(L_dijet.M(),weight) ; } // decay information if(variableList.at(iVar).variableName == "costheta1"){ itVec->histogram->Fill(fabs(costheta1),1.*weight) ; } else if(variableList.at(iVar).variableName == "costheta2"){ itVec->histogram->Fill(fabs(costheta2),weight) ; } if(variableList.at(iVar).variableName == "costheta1_vbf"){ itVec->histogram->Fill(fabs(costheta1_vbf),1.*weight) ; } else if(variableList.at(iVar).variableName == "costheta2_vbf"){ itVec->histogram->Fill(fabs(costheta2_vbf),weight) ; } if(variableList.at(iVar).variableName == "Phi"){ itVec->histogram->Fill(fabs(Phi),1.*weight) ; } else if(variableList.at(iVar).variableName == "Phi1"){ itVec->histogram->Fill(fabs(Phi1),weight) ; } if(variableList.at(iVar).variableName == "Phi_vbf"){ itVec->histogram->Fill(fabs(Phi_vbf),1.*weight) ; } else if(variableList.at(iVar).variableName == "Phi1_vbf"){ itVec->histogram->Fill(fabs(Phi1_vbf),weight) ; } else if(variableList.at(iVar).variableName == "costhetastar"){ itVec->histogram->Fill(fabs(costhetastar),weight) ; } else if(variableList.at(iVar).variableName == "costhetastar_vbf"){ itVec->histogram->Fill(fabs(costhetastar_vbf),weight) ; } else if(variableList.at(iVar).variableName == "mTR"){ itVec->histogram->Fill(mTR,weight) ; } else if(variableList.at(iVar).variableName == "mR"){ itVec->histogram->Fill(mR,weight) ; } // jet info if(variableList.at(iVar).variableName == "ptj1"){ itVec->histogram->Fill(parton1.lepton4V_.Pt(),1.*weight) ; } else if(variableList.at(iVar).variableName == "ptj2"){ itVec->histogram->Fill(parton2.lepton4V_.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "etaj1"){ itVec->histogram->Fill(parton1.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "etaj2"){ itVec->histogram->Fill(parton2.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "detajj"){ itVec->histogram->Fill(fabs(parton1.lepton4V_.Eta()-parton2.lepton4V_.Eta()),weight) ; } else if(variableList.at(iVar).variableName == "ptjj"){ itVec->histogram->Fill(L_dijet.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "mjj"){ itVec->histogram->Fill(L_dijet.M(),weight) ; } else if(variableList.at(iVar).variableName == "Asim_j"){ itVec->histogram->Fill(asimJ,weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_JJ"){ itVec->histogram->Fill(fabs(parton1.lepton4V_.DeltaPhi(parton2.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "ptl1"){ itVec->histogram->Fill(lepton1.lepton4V_.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "ptl2"){ itVec->histogram->Fill(lepton2.lepton4V_.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "etal1"){ itVec->histogram->Fill(lepton1.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "etal2"){ itVec->histogram->Fill(lepton2.lepton4V_.Eta(),weight) ; } else if(variableList.at(iVar).variableName == "mll"){ itVec->histogram->Fill(L_dilepton.M(),weight) ; } else if(variableList.at(iVar).variableName == "ptll"){ itVec->histogram->Fill(L_dilepton.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LL"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(lepton2.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "Asim_l"){ itVec->histogram->Fill(asimL,weight) ; } else if(variableList.at(iVar).variableName == "met"){ itVec->histogram->Fill(L_met.Pt(),weight) ; } else if(variableList.at(iVar).variableName == "R"){ itVec->histogram->Fill(Rvar,weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LMet"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptLMet"){ itVec->histogram->Fill((lepton1.lepton4V_ + L_met).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_TLMet"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptTLMet"){ itVec->histogram->Fill((lepton2.lepton4V_ + L_met).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LLMet"){ itVec->histogram->Fill(fabs(L_dilepton.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptLLMet"){ itVec->histogram->Fill((L_dilepton + L_met).Pt(),weight) ; } /// else if(variableList.at(iVar).variableName == "DeltaPhi_LJL"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(parton1.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "ptLJL"){ itVec->histogram->Fill((lepton1.lepton4V_+parton1.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_TJL"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(parton2.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "ptTJL"){ itVec->histogram->Fill((lepton1.lepton4V_+parton2.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_JJL"){ itVec->histogram->Fill(fabs(lepton1.lepton4V_.DeltaPhi(L_dijet)),weight) ; } else if(variableList.at(iVar).variableName == "ptJJL"){ itVec->histogram->Fill((lepton1.lepton4V_+L_dijet).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LJTL"){ itVec->histogram->Fill(fabs(lepton2.lepton4V_.DeltaPhi(parton1.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_TJTL"){ itVec->histogram->Fill(fabs(lepton2.lepton4V_.DeltaPhi(parton2.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_JJTL"){ itVec->histogram->Fill(fabs(lepton2.lepton4V_.DeltaPhi(L_dijet)),weight) ; } else if(variableList.at(iVar).variableName == "ptLJTL"){ itVec->histogram->Fill((lepton2.lepton4V_+parton1.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "ptTJTL"){ itVec->histogram->Fill((lepton2.lepton4V_+parton2.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "ptJJTL"){ itVec->histogram->Fill((lepton2.lepton4V_+L_dijet).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LJLL"){ itVec->histogram->Fill(fabs(L_dilepton.DeltaPhi(parton1.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_TJLL"){ itVec->histogram->Fill(fabs(L_dilepton.DeltaPhi(parton2.lepton4V_)),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_JJLL"){ itVec->histogram->Fill(fabs(L_dilepton.DeltaPhi(L_dijet)),weight) ; } else if(variableList.at(iVar).variableName == "ptLJLL"){ itVec->histogram->Fill((L_dilepton+parton1.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "ptTJLL"){ itVec->histogram->Fill((L_dilepton+parton2.lepton4V_).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "ptJJLL"){ itVec->histogram->Fill((L_dilepton+L_dijet).Pt(),weight) ; } /// else if(variableList.at(iVar).variableName == "DeltaPhi_JJMet"){ itVec->histogram->Fill(fabs(L_dijet.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptJJMet"){ itVec->histogram->Fill((L_dijet+L_met).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_LJMet"){ itVec->histogram->Fill(fabs(parton1.lepton4V_.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptLJMet"){ itVec->histogram->Fill((parton1.lepton4V_+L_met).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "DeltaPhi_TJMet"){ itVec->histogram->Fill(fabs(parton2.lepton4V_.DeltaPhi(L_met)),weight) ; } else if(variableList.at(iVar).variableName == "ptTJMet"){ itVec->histogram->Fill((parton2.lepton4V_+L_met).Pt(),weight) ; } else if(variableList.at(iVar).variableName == "mlljj"){ itVec->histogram->Fill((L_dilepton+L_dijet).M(),weight) ; } else if(variableList.at(iVar).variableName == "mlljjmet"){ itVec->histogram->Fill((L_dilepton+L_dijet+L_met).M(),weight) ; } else if(variableList.at(iVar).variableName == "mTH"){ itVec->histogram->Fill(sqrt(2*L_dilepton.Pt()*L_met.Pt()*(1-TMath::Cos(L_dilepton.DeltaPhi(L_met)))),weight) ; } } // loop on variables } // Loop on the cut list } // Loop on the events TFile* outputEfficiency = new TFile(("output/"+outputPlotDirectory+"/outputEfficiency.root").c_str(),"RECREATE"); for(map<string,TH1F*>::const_iterator itMap = histoCutEff.begin(); itMap != histoCutEff.end(); itMap++){ itMap->second->Scale(1./itMap->second->GetBinContent(1)); itMap->second->Write(); } outputEfficiency->Close(); // make the canvas and basic banners TCanvas *cCanvas = new TCanvas("cCanvas","",1,52,550,550); cCanvas->SetTicks(); cCanvas->SetFillColor(0); cCanvas->SetBorderMode(0); cCanvas->SetBorderSize(2); cCanvas->SetTickx(1); cCanvas->SetTicky(1); cCanvas->SetRightMargin(0.05); cCanvas->SetBottomMargin(0.12); cCanvas->SetFrameBorderMode(0); cCanvas->cd(); TPad* upperPad = new TPad("upperPad", "upperPad", .005, .180, .995, .980); TPad* lowerPad = new TPad("lowerPad", "lowerPad", .005, .005, .995, .18); lowerPad->SetGridx(); lowerPad->SetGridy(); upperPad->SetLeftMargin(0.12); upperPad->SetRightMargin(0.1); lowerPad->SetLeftMargin(0.12); lowerPad->SetRightMargin(0.1); lowerPad->SetTopMargin(0.002); lowerPad->Draw(); upperPad->Draw(); TCanvas *cCanvasNorm = new TCanvas("cCanvasNorm","",1,52,550,550); cCanvasNorm->SetTicks(); cCanvasNorm->SetFillColor(0); cCanvasNorm->SetBorderMode(0); cCanvasNorm->SetBorderSize(2); cCanvasNorm->SetTickx(1); cCanvasNorm->SetTicky(1); cCanvasNorm->SetRightMargin(0.05); cCanvasNorm->SetBottomMargin(0.12); cCanvasNorm->SetFrameBorderMode(0); TLatex * tex = new TLatex(0.88,0.92," 14 TeV"); tex->SetNDC(); tex->SetTextAlign(31); tex->SetTextFont(42); tex->SetTextSize(0.045); tex->SetLineWidth(2); TLatex * tex2 = new TLatex(0.14,0.92,"Delphes"); tex2->SetNDC(); tex2->SetTextFont(61); tex2->SetTextSize(0.045); tex2->SetLineWidth(2); TLatex * tex3 = new TLatex(0.295,0.92,"Simulation Preliminary"); tex3->SetNDC(); tex3->SetTextFont(52); tex3->SetTextSize(0.04); tex3->SetLineWidth(2); TLegend* legend = new TLegend(0.55,0.75,0.85,0.89); legend->SetBorderSize(0); legend->SetFillColor(0); legend->SetFillStyle(0); legend->SetTextSize(0.04); legend->SetTextFont(42); legend->SetNColumns (3) ; // make the plot on the same canvas for each variable (legend entry is the cut layer name) vector<TH1F*> numerator ; vector<TH1F*> denominator ; for(size_t iVar = 0; iVar < variableList.size(); iVar++){ // loop on var numerator.clear(); denominator.clear(); for(size_t iCut = 0; iCut < CutList.size(); iCut++){ // loop on cuts histoContainer tmpPlot; tmpPlot.cutName = CutList.at(iCut).cutLayerName; tmpPlot.varName = variableList.at(iVar).variableName; vector<histoContainer>::iterator itVec ; itVec = find(plotVector.begin(),plotVector.end(),tmpPlot); if(itVec == plotVector.end()){ cerr<<"Problem -->plot not found for "<<CutList.at(iCut).cutLayerName<<" "<<variableList.at(iVar).variableName<<endl; } itVec->histogram->GetXaxis()->SetTitleSize(0.04); itVec->histogram->GetXaxis()->SetTitleOffset(1.16); itVec->histogram->GetXaxis()->SetLabelSize(0.04); itVec->histogram->GetYaxis()->SetRangeUser(0.001,itVec->histogram->GetMaximum()*1.25); itVec->histogram->GetYaxis()->SetTitleSize(0.05); itVec->histogram->GetYaxis()->SetTitleOffset(1.20); itVec->histogram->GetYaxis()->SetLabelSize(0.04); itVec->histogram->SetLineColor(iCut+1); if(iCut %2 == 0) itVec->histogram->SetLineStyle(1); else itVec->histogram->SetLineStyle(2); itVec->histogram->SetLineWidth(2); itVec->histogram->GetYaxis()->SetTitle("#sigma x lumi"); upperPad->cd(); if(iCut == 0) itVec->histogram->Draw("hist"); else itVec->histogram->Draw("hist same"); legend->AddEntry(itVec->histogram,CutList.at(iCut).cutLayerName.c_str(),"l"); if(itVec->findCutByLabel("LL")) numerator.push_back(itVec->histogram); denominator.push_back(itVec->histogram); cCanvasNorm->cd(); TH1F* htempNorm = (TH1F*) itVec->histogram->Clone((string(itVec->histogram->GetName())+"_norm").c_str()); htempNorm->Scale(1./itVec->histogram->Integral()); htempNorm->GetYaxis()->SetRangeUser(0.,htempNorm->GetMaximum()*1.5); if(iCut == 0) htempNorm->Draw("hist"); else htempNorm->Draw("hist same"); } // make ratio plot lowerPad->cd(); TH1F* numTotal = 0; TH1F* denTotal = 0; TH1F* ratio = 0; TH1F* ratioW = 0; for(size_t itNum = 0; itNum < numerator.size(); itNum ++){ if(itNum == 0 and ratio == 0) numTotal = (TH1F*) numerator.at(itNum)->Clone(("Num_"+string(numerator.at(itNum)->GetName())).c_str()); else if(ratio !=0) numTotal->Add(numerator.at(itNum)); } for(size_t itDen = 0; itDen < denominator.size(); itDen ++){ if(itDen == 0 and denTotal == 0 ) { denTotal = (TH1F*) denominator.at(itDen)->Clone(("Den_"+string(denominator.at(itDen)->GetName())).c_str()); } else if(denTotal !=0){ denTotal->Add(denominator.at(itDen)); } } ratio = new TH1F(("Ratio_"+string(denominator.at(0)->GetName())).c_str(),"",numTotal->GetNbinsX(),numTotal->GetBinLowEdge(1),numTotal->GetBinLowEdge(numTotal->GetNbinsX()+1)); ratio->GetYaxis()->SetTitle("S/(#sqrt{S+B})"); ratio->SetMarkerSize(1.1); ratioW = new TH1F(("ratioW_"+string(denominator.at(0)->GetName())).c_str(),"",numTotal->GetNbinsX(),numTotal->GetBinLowEdge(1),numTotal->GetBinLowEdge(numTotal->GetNbinsX()+1)); ratioW->GetYaxis()->SetTitle("weighted S/(#sqrt{S+B})"); ratioW->SetMarkerSize(1.1); TString name = "norm_" ; name += denTotal->GetName () ; TH1F * norm_denTotal = (TH1F *) denTotal->Clone (name) ; norm_denTotal->Scale (1. / norm_denTotal->GetMaximum ()) ; // weight the S/sqrt (B) by the shape of the total, // so that only bins with a lot of stats become visibly significant for(int iBin = 0; iBin < ratio->GetNbinsX()+1; iBin++){ if(denTotal->GetBinContent(iBin) !=0){ ratioW->SetBinContent(iBin, norm_denTotal->GetBinContent (iBin) * numTotal->GetBinContent(iBin) / sqrt(denTotal->GetBinContent(iBin))); ratio->SetBinContent(iBin, numTotal->GetBinContent(iBin) / sqrt(denTotal->GetBinContent(iBin))); } else ratio->SetBinContent(iBin,0.); } ratio->GetXaxis()->SetTitle(""); ratio->SetLineColor(kBlue); ratio->SetLineStyle(2); ratio->SetLineWidth(2); ratio->GetXaxis()->SetLabelOffset(999); ratio->GetXaxis()->SetLabelSize(0); ratio->GetYaxis()->SetLabelSize(0.15); ratio->GetYaxis()->SetTitleSize(0.15); ratio->GetYaxis()->SetTitleOffset(0.30); ratio->GetYaxis()->SetNdivisions(504); ratioW->GetXaxis()->SetTitle(""); ratioW->SetLineColor(kBlack); ratioW->SetLineWidth(2); ratioW->GetXaxis()->SetLabelOffset(999); ratioW->GetXaxis()->SetLabelSize(0); ratioW->GetYaxis()->SetLabelSize(0.15); ratioW->GetYaxis()->SetTitleSize(0.15); ratioW->GetYaxis()->SetTitleOffset(0.30); ratioW->GetYaxis()->SetNdivisions(504); ratio->GetYaxis()->SetRange(min(ratio->GetMinimum(),ratioW->GetMinimum())*0.9,max(ratio->GetMaximum(),ratioW->GetMaximum())*1.1); TH1F * frame = lowerPad->DrawFrame (ratio->GetXaxis ()->GetXmin (), 0., ratio->GetXaxis ()->GetXmax (), 2.) ; frame->GetXaxis()->SetTitle (ratio->GetXaxis ()->GetTitle ()) ; frame->GetYaxis()->SetTitle (ratio->GetYaxis ()->GetTitle ()) ; frame->GetXaxis()->SetLabelOffset(999); frame->GetXaxis()->SetLabelSize(0); frame->GetYaxis()->SetLabelSize(0.15); frame->GetYaxis()->SetTitleSize(0.15); frame->GetYaxis()->SetTitleOffset(0.30); frame->GetYaxis()->SetNdivisions(504); ratio->Draw("P"); ratioW->Draw("Lsame"); upperPad->cd(); tex->Draw("same"); tex2->Draw("same"); tex3->Draw("same"); legend->Draw("same"); cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".pdf").c_str(),"pdf"); cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".png").c_str(),"png"); cCanvas->SaveAs(string("output/"+outputPlotDirectory+"/xs/"+variableList.at(iVar).variableName+".root").c_str(),"root"); cCanvasNorm->cd(); tex->Draw("same"); tex2->Draw("same"); tex3->Draw("same"); legend->Draw("same"); cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".pdf").c_str(),"pdf"); cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".png").c_str(),"png"); cCanvasNorm->SaveAs(string("output/"+outputPlotDirectory+"/norm/"+variableList.at(iVar).variableName+".root").c_str(),"root"); legend->Clear(); } // loop on var cout<<"LHE filter efficiency : "<<passingLHEFilter<<" totEvent "<<totEvent<<" efficiency "<<float(passingLHEFilter)/float(totEvent)*100<<" % "<<endl; //Normalize histograms for(size_t ihisto = 0; ihisto < plotVector.size(); ihisto++){ if(plotVector.at(ihisto).varName == "DeltaPhi_LL") cout<<"Events Histo "<<plotVector.at(ihisto).histogram->GetName()<<" unweighted "<<plotVector.at(ihisto).histogram->GetEntries()<<" weighted "<<plotVector.at(ihisto).histogram->Integral(0,plotVector.at(ihisto).histogram->GetNbinsX()+1)<<endl; } return 0 ; }
int main(int argc, char** argv) { // Set style options setTDRStyle(); gStyle->SetPadTickX(1); gStyle->SetPadTickY(1); gStyle->SetOptTitle(0); gStyle->SetOptStat(1110); gStyle->SetOptFit(1); // Set fitting options TVirtualFitter::SetDefaultFitter("Fumili2"); //----------------- // Input parameters std::cout << "\n***************************************************************************************************************************" << std::endl; std::cout << "arcg: " << argc << std::endl; char* EBEE = argv[1]; int evtsPerPoint = atoi(argv[2]); int useRegression = atoi(argv[3]); std::string dayMin = ""; std::string dayMax = ""; std::string dayMinLabel = ""; std::string dayMaxLabel = ""; float absEtaMin = -1.; float absEtaMax = -1.; int IetaMin = -1; int IetaMax = -1; int IphiMin = -1; int IphiMax = -1; if(argc >= 5) { dayMin = std::string(argv[4])+" "+std::string(argv[5])+" "+std::string(argv[6]); dayMax = std::string(argv[7])+" "+std::string(argv[8])+" "+std::string(argv[9]); dayMinLabel = std::string(argv[4])+"_"+std::string(argv[5])+"_"+std::string(argv[6]); dayMaxLabel = std::string(argv[7])+"_"+std::string(argv[8])+"_"+std::string(argv[9]); t1 = dateToInt(dayMin); t2 = dateToInt(dayMax); } if(argc >= 11) { yMIN = atof(argv[10]); yMAX = atof(argv[11]); } if(argc >= 13) { absEtaMin = atof(argv[12]); absEtaMax = atof(argv[13]); } if(argc >= 15) { IetaMin = atoi(argv[14]); IetaMax = atoi(argv[15]); IphiMin = atoi(argv[16]); IphiMax = atoi(argv[17]); } std::cout << "EBEE: " << EBEE << std::endl; std::cout << "evtsPerPoint: " << evtsPerPoint << std::endl; std::cout << "useRegression: " << useRegression << std::endl; std::cout << "dayMin: " << dayMin << std::endl; std::cout << "dayMax: " << dayMax << std::endl; std::cout << "yMin: " << yMIN << std::endl; std::cout << "yMax: " << yMAX << std::endl; std::cout << "absEtaMin: " << absEtaMin << std::endl; std::cout << "absEtaMax: " << absEtaMax << std::endl; std::cout << "IetaMin: " << IetaMin << std::endl; std::cout << "IetaMax: " << IetaMax << std::endl; std::cout << "IphiMin: " << IphiMin << std::endl; std::cout << "IphiMax: " << IphiMax << std::endl; //------------------- // Define in/outfiles std::string folderName = std::string(EBEE) + "_" + dayMinLabel + "_" + dayMaxLabel; if( (absEtaMin != -1.) && (absEtaMax != -1.) ) { char absEtaBuffer[50]; sprintf(absEtaBuffer,"_%.2f-%.2f",absEtaMin,absEtaMax); folderName += std::string(absEtaBuffer); } if( (IetaMin != -1.) && (IetaMax != -1.) && (IphiMin != -1.) && (IphiMax != -1.) ) { char absEtaBuffer[50]; sprintf(absEtaBuffer,"_Ieta_%d-%d_Iphi_%d-%d",IetaMin,IetaMax,IphiMin,IphiMax); folderName += std::string(absEtaBuffer); } gSystem->mkdir(folderName.c_str()); TFile* o = new TFile((folderName+"/"+folderName+"_histos.root").c_str(),"RECREATE"); // Get trees std::cout << std::endl; TChain* ntu_DA = new TChain("simpleNtupleEoverP/SimpleNtupleEoverP"); FillChain(ntu_DA,"inputDATA.txt"); std::cout << " DATA: " << std::setw(8) << ntu_DA->GetEntries() << " entries" << std::endl; TChain* ntu_MC = new TChain("simpleNtupleEoverP/SimpleNtupleEoverP"); FillChain(ntu_MC,"inputMC.txt"); std::cout << "REFERENCE: " << std::setw(8) << ntu_MC->GetEntries() << " entries" << std::endl; if (ntu_DA->GetEntries() == 0 || ntu_MC->GetEntries() == 0 ) { std::cout << "Error: At least one file is empty" << std::endl; return -1; } // Set branch addresses int runId; int timeStampHigh; int PV_n; float scLaserCorr, seedLaserAlpha, EoP, scEta, scPhi, scE, ES, P; int seedIeta, seedIphi, seedIx, seedIy, seedZside; ntu_DA->SetBranchStatus("*",0); ntu_DA->SetBranchStatus("runId",1); ntu_DA->SetBranchStatus("timeStampHigh",1); ntu_DA->SetBranchStatus("PV_n",1); ntu_DA->SetBranchStatus("ele1_scLaserCorr",1); ntu_DA->SetBranchStatus("ele1_seedLaserAlpha",1); ntu_DA->SetBranchStatus("ele1_EOverP",1); ntu_DA->SetBranchStatus("ele1_scEta",1); ntu_DA->SetBranchStatus("ele1_scPhi",1); ntu_DA->SetBranchStatus("ele1_scE",1); ntu_DA->SetBranchStatus("ele1_scE_regression",1); ntu_DA->SetBranchStatus("ele1_scE",1); ntu_DA->SetBranchStatus("ele1_es",1); ntu_DA->SetBranchStatus("ele1_tkP",1); ntu_DA->SetBranchStatus("ele1_seedIeta",1); ntu_DA->SetBranchStatus("ele1_seedIphi",1); ntu_DA->SetBranchStatus("ele1_seedIx",1); ntu_DA->SetBranchStatus("ele1_seedIy",1); ntu_DA->SetBranchStatus("ele1_seedZside",1); ntu_DA->SetBranchAddress("runId", &runId); ntu_DA->SetBranchAddress("timeStampHigh", &timeStampHigh); ntu_DA->SetBranchAddress("PV_n", &PV_n); ntu_DA->SetBranchAddress("ele1_scLaserCorr", &scLaserCorr); ntu_DA->SetBranchAddress("ele1_seedLaserAlpha", &seedLaserAlpha); ntu_DA->SetBranchAddress("ele1_EOverP", &EoP); ntu_DA->SetBranchAddress("ele1_scEta", &scEta); ntu_DA->SetBranchAddress("ele1_scPhi", &scPhi); if( useRegression < 1 ) ntu_DA->SetBranchAddress("ele1_scE", &scE); else ntu_DA->SetBranchAddress("ele1_scE_regression", &scE); ntu_DA->SetBranchAddress("ele1_scE", &scE); ntu_DA->SetBranchAddress("ele1_es", &ES); ntu_DA->SetBranchAddress("ele1_tkP", &P); ntu_DA->SetBranchAddress("ele1_seedIeta", &seedIeta); ntu_DA->SetBranchAddress("ele1_seedIphi", &seedIphi); ntu_DA->SetBranchAddress("ele1_seedIx", &seedIx); ntu_DA->SetBranchAddress("ele1_seedIy", &seedIy); ntu_DA->SetBranchAddress("ele1_seedZside", &seedZside); ntu_MC->SetBranchStatus("*",0); ntu_MC->SetBranchStatus("runId",1); ntu_MC->SetBranchStatus("PV_n",1); ntu_MC->SetBranchStatus("ele1_scEta",1); ntu_MC->SetBranchStatus("ele1_EOverP",1); ntu_MC->SetBranchStatus("ele1_scE",1); ntu_MC->SetBranchStatus("ele1_scE_regression",1); ntu_MC->SetBranchStatus("ele1_es",1); ntu_MC->SetBranchStatus("ele1_tkP",1); ntu_MC->SetBranchStatus("ele1_seedIeta",1); ntu_MC->SetBranchStatus("ele1_seedIphi",1); ntu_MC->SetBranchStatus("ele1_seedIx",1); ntu_MC->SetBranchStatus("ele1_seedIy",1); ntu_MC->SetBranchStatus("ele1_seedZside",1); ntu_MC->SetBranchAddress("runId", &runId); ntu_MC->SetBranchAddress("PV_n", &PV_n); ntu_MC->SetBranchAddress("ele1_scEta", &scEta); ntu_MC->SetBranchAddress("ele1_EOverP", &EoP); if( useRegression < 1 ) ntu_MC->SetBranchAddress("ele1_scE", &scE); else ntu_MC->SetBranchAddress("ele1_scE_regression", &scE); ntu_MC->SetBranchAddress("ele1_es", &ES); ntu_MC->SetBranchAddress("ele1_tkP", &P); ntu_MC->SetBranchAddress("ele1_seedIeta", &seedIeta); ntu_MC->SetBranchAddress("ele1_seedIphi", &seedIphi); ntu_MC->SetBranchAddress("ele1_seedIx", &seedIx); ntu_MC->SetBranchAddress("ele1_seedIy", &seedIy); ntu_MC->SetBranchAddress("ele1_seedZside", &seedZside); //-------------------------------------------------------- // Define PU correction (to be used if useRegression == 0) // corr = p0 + p1 * PV_n float p0_EB; float p1_EB; float p0_EE; float p1_EE; if( useRegression == 0 ) { //2012 EB p0_EB = 0.9991; p1_EB = 0.0001635; //2012 EE p0_EE = 0.9968; p1_EE = 0.001046; } else { //2012 EB p0_EB = 1.001; p1_EB = -0.000143; //2012 EE p0_EE = 1.00327; p1_EE = -0.000432; } float p0 = -1.; float p1 = -1.; if( strcmp(EBEE,"EB") == 0 ) { p0 = p0_EB; p1 = p1_EB; } else { p0 = p0_EE; p1 = p1_EE; } //--------------------------------- // Build the reference distribution std::cout << std::endl; std::cout << "***** Build reference for " << EBEE << " *****" << std::endl; TH1F* h_template = new TH1F("template", "", 2000, 0., 5.); for(int ientry = 0; ientry < ntu_MC->GetEntries(); ++ientry) { if( (ientry%100000 == 0) ) std::cout << "reading MC entry " << ientry << "\r" << std::flush; ntu_MC->GetEntry(ientry); // selections if( (strcmp(EBEE,"EB") == 0) && (fabs(scEta) > 1.45) ) continue; // barrel if( (strcmp(EBEE,"EE") == 0) && (fabs(scEta) < 1.47 || fabs(scEta)>2.7) ) continue; // endcap if( (absEtaMin != -1.) && (absEtaMax != -1.) ) { if( (fabs(scEta) < absEtaMin) || (fabs(scEta) > absEtaMax) ) continue; } if( (IetaMin != -1.) && (IetaMax != -1.) && (IphiMin != -1.) && (IphiMax != -1.) ) { if( (seedIeta < IetaMin) || (seedIeta > IetaMax) ) continue; if( (seedIphi < IphiMin) || (seedIphi > IphiMax) ) continue; } // PU correction float PUCorr = (p0 + p1*PV_n); //std::cout << "p0: " << p0 << " p1: " << p1 << " PV_n: " << PV_n << std::endl; // fill the template histogram h_template -> Fill( (scE-ES)/(P-ES) / PUCorr ); } std::cout << "Reference built for " << EBEE << " - " << h_template->GetEntries() << " events" << std::endl; //--------------------- // Loop and sort events std::cout << std::endl; std::cout << "***** Sort events and define bins *****" << std::endl; int nEntries = ntu_DA -> GetEntriesFast(); int nSavePts = 0; std::vector<bool> isSavedEntries(nEntries); std::vector<Sorter> sortedEntries; std::vector<int> timeStampFirst; for(int ientry = 0; ientry < nEntries; ++ientry) { ntu_DA -> GetEntry(ientry); isSavedEntries.at(ientry) = false; // selections if( (strcmp(EBEE,"EB") == 0) && (fabs(scEta) > 1.45) ) continue; // barrel if( (strcmp(EBEE,"EE") == 0) && (fabs(scEta) < 1.47 || fabs(scEta)>2.7) ) continue; // endcap if( (absEtaMin != -1.) && (absEtaMax != -1.) ) { if( (fabs(scEta) < absEtaMin) || (fabs(scEta) > absEtaMax) ) continue; } if( (IetaMin != -1.) && (IetaMax != -1.) && (IphiMin != -1.) && (IphiMax != -1.) ) { if( (seedIeta < IetaMin) || (seedIeta > IetaMax) ) continue; if( (seedIphi < IphiMin) || (seedIphi > IphiMax) ) continue; } if( timeStampHigh < t1 ) continue; if( timeStampHigh > t2 ) continue; if( scLaserCorr <= 0. ) continue; isSavedEntries.at(ientry) = true; // fill sorter Sorter dummy; dummy.time = timeStampHigh; dummy.entry = ientry; sortedEntries.push_back(dummy); ++nSavePts; } // sort events std::sort(sortedEntries.begin(),sortedEntries.end(),Sorter()); std::cout << "Data sorted in " << EBEE << " - " << nSavePts << " events" << std::endl; std::map<int,int> antiMap; for(unsigned int iSaved = 0; iSaved < sortedEntries.size(); ++iSaved) antiMap[sortedEntries.at(iSaved).entry] = iSaved; //--------------------- // Loop and define bins // "wide" bins - find events with time separation bigger than 1 day int nWideBins = 1; std::vector<int> wideBinEntryMax; int timeStampOld = -1; wideBinEntryMax.push_back(0); for(int iSaved = 0; iSaved < nSavePts; ++iSaved) { if( iSaved%100000 == 0 ) std::cout << "reading saved entry " << iSaved << "\r" << std::flush; ntu_DA->GetEntry(sortedEntries[iSaved].entry); if( iSaved == 0 ) { timeStampOld = timeStampHigh; continue; } if( (timeStampHigh-timeStampOld)/3600. > timeLapse ) { ++nWideBins; wideBinEntryMax.push_back(iSaved-1); } timeStampOld = timeStampHigh; } std::cout << std::endl; wideBinEntryMax.push_back(nSavePts); // bins with approximatively evtsPerPoint events per bin int nBins = 0; std::vector<int> binEntryMax; binEntryMax.push_back(0); for(int wideBin = 0; wideBin < nWideBins; ++wideBin) { int nTempBins = std::max(1,int( (wideBinEntryMax.at(wideBin+1)-wideBinEntryMax.at(wideBin))/evtsPerPoint )); int nTempBinEntries = int( (wideBinEntryMax.at(wideBin+1)-wideBinEntryMax.at(wideBin))/nTempBins ); for(int tempBin = 0; tempBin < nTempBins; ++tempBin) { ++nBins; if( tempBin < nTempBins - 1 ) binEntryMax.push_back( wideBinEntryMax.at(wideBin) + (tempBin+1)*nTempBinEntries ); else binEntryMax.push_back( wideBinEntryMax.at(wideBin+1) ); } } std::cout << "nBins = " << nBins << std::endl; //for(int bin = 0; bin < nBins; ++bin) // std::cout << "bin: " << bin // << " entry min: " << setw(6) << binEntryMax.at(bin) // << " entry max: " << setw(6) << binEntryMax.at(bin+1) // << " events: " << setw(6) << binEntryMax.at(bin+1)-binEntryMax.at(bin) // << std::endl; //--------------------- // histogram definition TH1F* h_scOccupancy_eta = new TH1F("h_scOccupancy_eta","", 298, -2.6, 2.6); TH1F* h_scOccupancy_phi = new TH1F("h_scOccupancy_phi","", 363, -3.1765, 3.159); SetHistoStyle(h_scOccupancy_eta); SetHistoStyle(h_scOccupancy_phi); TH2F* h_seedOccupancy_EB = new TH2F("h_seedOccupancy_EB","", 171, -85., 86., 361, 0.,361.); TH2F* h_seedOccupancy_EEp = new TH2F("h_seedOccupancy_EEp","", 101, 0.,101., 100, 0.,101.); TH2F* h_seedOccupancy_EEm = new TH2F("h_seedOccupancy_EEm","", 101, 0.,101., 100, 0.,101.); SetHistoStyle(h_seedOccupancy_EB); SetHistoStyle(h_seedOccupancy_EEp); SetHistoStyle(h_seedOccupancy_EEm); TH1F* h_EoP_spread = new TH1F("h_EoP_spread","",100,yMIN,yMAX); TH1F* h_EoC_spread = new TH1F("h_EoC_spread","",100,yMIN,yMAX); TH1F* h_EoP_spread_run = new TH1F("h_EoP_spread_run","",100,yMIN,yMAX); TH1F* h_EoC_spread_run = new TH1F("h_EoC_spread_run","",100,yMIN,yMAX); SetHistoStyle(h_EoP_spread,"EoP"); SetHistoStyle(h_EoC_spread,"EoC"); SetHistoStyle(h_EoP_spread_run,"EoP"); SetHistoStyle(h_EoC_spread_run,"EoC"); TH1F* h_EoP_chi2 = new TH1F("h_EoP_chi2","",50,0.,5.); TH1F* h_EoC_chi2 = new TH1F("h_EoC_chi2","",50,0.,5.); SetHistoStyle(h_EoP_chi2,"EoP"); SetHistoStyle(h_EoC_chi2,"EoC"); TH1F** h_EoP = new TH1F*[nBins]; TH1F** h_EoC = new TH1F*[nBins]; TH1F** h_Las = new TH1F*[nBins]; TH1F** h_Tsp = new TH1F*[nBins]; TH1F** h_Cvl = new TH1F*[nBins]; for(int i = 0; i < nBins; ++i) { char histoName[80]; sprintf(histoName, "EoP_%d", i); h_EoP[i] = new TH1F(histoName, histoName, 2000, 0., 5.); SetHistoStyle(h_EoP[i],"EoP"); sprintf(histoName, "EoC_%d", i); h_EoC[i] = new TH1F(histoName, histoName, 2000, 0., 5.); SetHistoStyle(h_EoC[i],"EoC"); sprintf(histoName, "Las_%d", i); h_Las[i] = new TH1F(histoName, histoName, 500, 0.5, 1.5); sprintf(histoName, "Tsp_%d", i); h_Tsp[i] = new TH1F(histoName, histoName, 500, 0.5, 1.5); } // function definition TF1** f_EoP = new TF1*[nBins]; TF1** f_EoC = new TF1*[nBins]; // graphs definition TGraphAsymmErrors* g_fit = new TGraphAsymmErrors(); TGraphAsymmErrors* g_c_fit = new TGraphAsymmErrors(); TGraphAsymmErrors* g_fit_run = new TGraphAsymmErrors(); TGraphAsymmErrors* g_c_fit_run = new TGraphAsymmErrors(); TGraph* g_las = new TGraph(); TGraphErrors* g_LT = new TGraphErrors(); g_fit->GetXaxis()->SetTimeFormat("%d/%m%F1970-01-01 00:00:00"); g_fit->GetXaxis()->SetTimeDisplay(1); g_c_fit->GetXaxis()->SetTimeFormat("%d/%m%F1970-01-01 00:00:00"); g_c_fit->GetXaxis()->SetTimeDisplay(1); g_las->GetXaxis()->SetTimeFormat("%d/%m%F1970-01-01 00:00:00"); g_las->GetXaxis()->SetTimeDisplay(1); g_LT->GetXaxis()->SetTimeFormat("%d/%m%F1970-01-01 00:00:00"); g_LT->GetXaxis()->SetTimeDisplay(1); //------------------------------------ // loop on the saved and sorted events std::cout << std::endl; std::cout << "***** Fill and fit histograms *****" << std::endl; std::vector<int> Entries(nBins); std::vector<double> AveTime(nBins); std::vector<int> MinTime(nBins); std::vector<int> MaxTime(nBins); std::vector<double> AveRun(nBins); std::vector<int> MinRun(nBins); std::vector<int> MaxRun(nBins); std::vector<double> AveLT(nBins); std::vector<double> AveLT2(nBins); int iSaved = -1; for(int ientry = 0; ientry < nEntries; ++ientry) { if( (ientry%100000 == 0) ) std::cout << "reading entry " << ientry << "\r" << std::flush; if( isSavedEntries.at(ientry) == false ) continue; ++iSaved; int iSaved = antiMap[ientry]; int bin = -1; for(bin = 0; bin < nBins; ++bin) if( iSaved >= binEntryMax.at(bin) && iSaved < binEntryMax.at(bin+1) ) break; //std::cout << "bin = " << bin << " iSaved = "<< iSaved << std::endl; ntu_DA->GetEntry(ientry); Entries[bin] += 1; if( iSaved == binEntryMax.at(bin)+1 ) MinTime[bin] = timeStampHigh; if( iSaved == binEntryMax.at(bin+1)-1 ) MaxTime[bin] = timeStampHigh; AveTime[bin] += timeStampHigh; if( iSaved == binEntryMax.at(bin)+1 ) MinRun[bin] = runId; if( iSaved == binEntryMax.at(bin+1)-1 ) MaxRun[bin] = runId; AveRun[bin] += runId; float LT = (-1. / seedLaserAlpha * log(scLaserCorr)); AveLT[bin] += LT; AveLT2[bin] += LT*LT; // PU correction float PUCorr = (p0 + p1*PV_n); // fill the histograms (h_EoP[bin]) -> Fill( (scE-ES)/(P-ES) / scLaserCorr / PUCorr); (h_EoC[bin]) -> Fill( (scE-ES)/(P-ES) / PUCorr ); (h_Las[bin]) -> Fill(scLaserCorr); (h_Tsp[bin]) -> Fill(1./scLaserCorr); h_scOccupancy_eta -> Fill(scEta); h_scOccupancy_phi -> Fill(scPhi); if(seedZside == 0) h_seedOccupancy_EB -> Fill(seedIeta,seedIphi); if(seedZside > 0) h_seedOccupancy_EEp -> Fill(seedIx,seedIy); if(seedZside < 0) h_seedOccupancy_EEm -> Fill(seedIx,seedIy); } for(int bin = 0; bin < nBins; ++bin) { AveTime[bin] = 1. * AveTime[bin] / (binEntryMax.at(bin+1)-binEntryMax.at(bin)); AveRun[bin] = 1. * AveRun[bin] / (binEntryMax.at(bin+1)-binEntryMax.at(bin)); AveLT[bin] = 1. * AveLT[bin] / (binEntryMax.at(bin+1)-binEntryMax.at(bin)); AveLT2[bin] = 1. * AveLT2[bin] / (binEntryMax.at(bin+1)-binEntryMax.at(bin)); //std::cout << date << " " << AveTime[i] << " " << MinTime[i] << " " << MaxTime[i] << std::endl; } int rebin = 2; if( strcmp(EBEE,"EE") == 0 ) rebin *= 2; h_template -> Rebin(rebin); float EoP_scale = 0.; float EoP_err = 0.; int EoP_nActiveBins = 0; float EoC_scale = 0.; float EoC_err = 0.; int EoC_nActiveBins = 0; float LCInv_scale = 0; std::vector<int> validBins; for(int i = 0; i < nBins; ++i) { bool isValid = true; h_EoP[i] -> Rebin(rebin); h_EoC[i] -> Rebin(rebin); //------------------------------------ // Fill the graph for uncorrected data // define the fitting function // N.B. [0] * ( [1] * f( [1]*(x-[2]) ) ) //o -> cd(); char convolutionName[50]; sprintf(convolutionName,"h_convolution_%d",i); //h_Cvl[i] = ConvoluteTemplate(std::string(convolutionName),h_template,h_Las[i],32768,-5.,5.); h_Cvl[i] = MellinConvolution(std::string(convolutionName),h_template,h_Tsp[i]); histoFunc* templateHistoFunc = new histoFunc(h_template); histoFunc* templateConvolutedHistoFunc = new histoFunc(h_Cvl[i]); char funcName[50]; sprintf(funcName,"f_EoP_%d",i); if( strcmp(EBEE,"EB") == 0 ) f_EoP[i] = new TF1(funcName, templateConvolutedHistoFunc, 0.8*(h_Tsp[i]->GetMean()), 1.4*(h_Tsp[i]->GetMean()), 3, "histoFunc"); else f_EoP[i] = new TF1(funcName, templateConvolutedHistoFunc, 0.75*(h_Tsp[i]->GetMean()), 1.5*(h_Tsp[i]->GetMean()), 3, "histoFunc"); f_EoP[i] -> SetParName(0,"Norm"); f_EoP[i] -> SetParName(1,"Scale factor"); f_EoP[i] -> SetLineWidth(1); f_EoP[i] -> SetNpx(10000); double xNorm = h_EoP[i]->GetEntries()/h_template->GetEntries() * h_EoP[i]->GetBinWidth(1)/h_template->GetBinWidth(1); f_EoP[i] -> FixParameter(0, xNorm); f_EoP[i] -> SetParameter(1, 1.); f_EoP[i] -> FixParameter(2, 0.); f_EoP[i] -> SetLineColor(kRed+2); int fStatus = 0; int nTrials = 0; TFitResultPtr rp; rp = h_EoP[i] -> Fit(funcName, "QERLS+"); while( (fStatus != 0) && (nTrials < 10) ) { rp = h_EoP[i] -> Fit(funcName, "QERLS+"); fStatus = rp; if(fStatus == 0) break; ++nTrials; } // fill the graph double eee = f_EoP[i]->GetParError(1); //float k = f_EoP[i]->GetParameter(1); float k = f_EoP[i]->GetParameter(1) / h_Tsp[i]->GetMean(); //needed when using mellin's convolution if( (h_EoP[i]->GetEntries() > 3) && (fStatus == 0) && (eee > 0.05*h_template->GetRMS()/sqrt(evtsPerPoint)) ) { float date = (float)AveTime[i]; float dLow = (float)(AveTime[i]-MinTime[i]); float dHig = (float)(MaxTime[i]-AveTime[i]); float run = (float)AveRun[i]; float rLow = (float)(AveRun[i]-MinRun[i]); float rHig = (float)(MaxRun[i]-AveRun[i]); g_fit -> SetPoint(i, date , 1./k); g_fit -> SetPointError(i, dLow , dHig, eee/k/k, eee/k/k); g_fit_run -> SetPoint(i, run , 1./k); g_fit_run -> SetPointError(i, rLow , rHig, eee/k/k, eee/k/k); h_EoP_chi2 -> Fill(f_EoP[i]->GetChisquare()/f_EoP[i]->GetNDF()); EoP_scale += 1./k; EoP_err += eee/k/k; ++EoP_nActiveBins; } else { std::cout << "Fitting uncorrected time bin: " << i << " Fail status: " << fStatus << " sigma: " << eee << std::endl; isValid = false; } //---------------------------------- // Fill the graph for corrected data // define the fitting function // N.B. [0] * ( [1] * f( [1]*(x-[2]) ) ) sprintf(funcName,"f_EoC_%d",i); if( strcmp(EBEE,"EB") == 0 ) f_EoC[i] = new TF1(funcName, templateHistoFunc, 0.8, 1.4, 3, "histoFunc"); else f_EoC[i] = new TF1(funcName, templateHistoFunc, 0.75, 1.5, 3, "histoFunc"); f_EoC[i] -> SetParName(0,"Norm"); f_EoC[i] -> SetParName(1,"Scale factor"); f_EoC[i] -> SetLineWidth(1); f_EoC[i] -> SetNpx(10000); xNorm = h_EoC[i]->GetEntries()/h_template->GetEntries() * h_EoC[i]->GetBinWidth(1)/h_template->GetBinWidth(1); f_EoC[i] -> FixParameter(0, xNorm); f_EoC[i] -> SetParameter(1, 0.99); f_EoC[i] -> FixParameter(2, 0.); f_EoC[i] -> SetLineColor(kGreen+2); rp = h_EoC[i] -> Fit(funcName, "QERLS+"); fStatus = rp; nTrials = 0; while( (fStatus != 0) && (nTrials < 10) ) { rp = h_EoC[i] -> Fit(funcName, "QERLS+"); fStatus = rp; if(fStatus == 0) break; ++nTrials; } // fill the graph k = f_EoC[i]->GetParameter(1); eee = f_EoC[i]->GetParError(1); if( (h_EoC[i]->GetEntries() > 10) && (fStatus == 0) && (eee > 0.05*h_template->GetRMS()/sqrt(evtsPerPoint)) ) { float date = (float)AveTime[i]; float dLow = (float)(AveTime[i]-MinTime[i]); float dHig = (float)(MaxTime[i]-AveTime[i]); float run = (float)AveRun[i]; float rLow = (float)(AveRun[i]-MinRun[i]); float rHig = (float)(MaxRun[i]-AveRun[i]); g_c_fit -> SetPoint(i, date , 1./k); g_c_fit -> SetPointError(i, dLow , dHig , eee/k/k, eee/k/k); g_c_fit_run -> SetPoint(i, run , 1./k); g_c_fit_run -> SetPointError(i, rLow , rHig, eee/k/k, eee/k/k); h_EoC_chi2 -> Fill(f_EoC[i]->GetChisquare()/f_EoP[i]->GetNDF()); EoC_scale += 1./k; EoC_err += eee/k/k; ++EoC_nActiveBins; } else { std::cout << "Fitting corrected time bin: " << i << " Fail status: " << fStatus << " sigma: " << eee << std::endl; isValid = false; } if( isValid == true ) validBins.push_back(i); } EoP_scale /= EoP_nActiveBins; EoP_err /= EoP_nActiveBins; EoC_scale /= EoC_nActiveBins; EoC_err /= EoC_nActiveBins; //---------------------------------------- // Fill the graph for avg laser correction //fede for(unsigned int itr = 0; itr < validBins.size(); ++itr) { int i = validBins.at(itr); g_las -> SetPoint(itr, (float)AveTime[i], h_Tsp[i]->GetMean() ); g_LT -> SetPoint(itr, (float)AveTime[i], AveLT[i] ); g_LT -> SetPointError(itr, 0., sqrt(AveLT2[i]-AveLT[i]*AveLT[i]) / sqrt(Entries[i]) ); LCInv_scale += h_Tsp[i]->GetMean(); } LCInv_scale /= validBins.size(); //--------------- // Rescale graphs float yscale = 1.; //float yscale = 1./EoC_scale; for(unsigned int itr = 0; itr < validBins.size(); ++itr) { double x,y; g_fit -> GetPoint(itr,x,y); g_fit -> SetPoint(itr,x,y*yscale); if ( (x > t1) && (x < t2) ) h_EoP_spread -> Fill(y*yscale); g_c_fit -> GetPoint(itr,x,y); g_c_fit -> SetPoint(itr,x,y*yscale); if ( (x > t1) && (x < t2) ) h_EoC_spread -> Fill(y*yscale); g_fit_run -> GetPoint(itr,x,y); g_fit_run -> SetPoint(itr,x,y*yscale); if ( (x > t1) && (x < t2) ) h_EoP_spread_run -> Fill(y*yscale); g_c_fit_run -> GetPoint(itr,x,y); g_c_fit_run -> SetPoint(itr,x,y*yscale); if ( (x > t1) && (x < t2) ) h_EoC_spread_run -> Fill(y*yscale); g_las -> GetPoint(itr,x,y); g_las -> SetPoint(itr,x,y*yscale*EoP_scale/LCInv_scale); } TF1 EoC_pol0("EoC_pol0","pol0",t1,t2); EoC_pol0.SetLineColor(kGreen+2); EoC_pol0.SetLineWidth(2); EoC_pol0.SetLineStyle(2); g_c_fit -> Fit("EoC_pol0","QNR"); //---------------------------- // Print out global quantities std::cout << std::endl; std::cout << "***** Mean scales and errors *****" << std::endl; std::cout << std::fixed; std::cout << std::setprecision(4); std::cout << "Mean EoP scale: " << std::setw(6) << EoP_scale << " mean EoP error: " << std::setw(8) << EoP_err << std::endl; std::cout << "Mean EoC scale: " << std::setw(6) << EoC_scale << " mean EoC error: " << std::setw(8) << EoC_err << std::endl; std::cout << "Mean 1/LC scale: " << std::setw(6) << LCInv_scale << std::endl; //----------------- // Occupancy plots //----------------- TCanvas* c_scOccupancy = new TCanvas("c_scOccupancy","SC occupancy",0,0,1000,500); c_scOccupancy -> Divide(2,1); c_scOccupancy -> cd(1); h_scOccupancy_eta -> GetXaxis() -> SetTitle("sc #eta"); h_scOccupancy_eta -> GetYaxis() -> SetTitle("events"); h_scOccupancy_eta -> Draw(); c_scOccupancy -> cd(2); h_scOccupancy_phi -> GetXaxis() -> SetTitle("sc #phi"); h_scOccupancy_phi -> GetYaxis() -> SetTitle("events"); h_scOccupancy_phi -> Draw(); TCanvas* c_seedOccupancy = new TCanvas("c_seedOccupancy","seed occupancy",0,0,1500,500); c_seedOccupancy -> Divide(3,1); c_seedOccupancy -> cd(1); h_seedOccupancy_EB -> GetXaxis() -> SetTitle("seed i#eta"); h_seedOccupancy_EB -> GetYaxis() -> SetTitle("seed i#phi"); h_seedOccupancy_EB -> Draw("COLZ"); c_seedOccupancy -> cd(2); h_seedOccupancy_EEp -> GetXaxis() -> SetTitle("seed ix"); h_seedOccupancy_EEp -> GetYaxis() -> SetTitle("seed iy"); h_seedOccupancy_EEp -> Draw("COLZ"); c_seedOccupancy -> cd(3); h_seedOccupancy_EEm -> GetXaxis() -> SetTitle("seed ix"); h_seedOccupancy_EEm -> GetYaxis() -> SetTitle("seed iy"); h_seedOccupancy_EEm -> Draw("COLZ"); //----------- // Chi2 plots //----------- TCanvas* c_chi2 = new TCanvas("c_chi2","fit chi2",0,0,500,500); c_chi2 -> cd(); h_EoC_chi2 -> GetXaxis() -> SetTitle("#chi^{2}/N_{dof}"); h_EoC_chi2 -> Draw(""); gPad -> Update(); TPaveStats* s_EoC = new TPaveStats; s_EoC = (TPaveStats*)(h_EoC_chi2->GetListOfFunctions()->FindObject("stats")); s_EoC -> SetStatFormat("1.4g"); s_EoC -> SetTextColor(kGreen+2); s_EoC->SetY1NDC(0.59); s_EoC->SetY2NDC(0.79); s_EoC -> Draw("sames"); gPad -> Update(); h_EoP_chi2 -> GetXaxis() -> SetTitle("#chi^{2}/N_{dof}"); h_EoP_chi2 -> Draw("sames"); gPad -> Update(); TPaveStats* s_EoP = new TPaveStats; s_EoP = (TPaveStats*)(h_EoP_chi2->GetListOfFunctions()->FindObject("stats")); s_EoP -> SetStatFormat("1.4g"); s_EoP -> SetTextColor(kRed+2); s_EoP->SetY1NDC(0.79); s_EoP->SetY2NDC(0.99); s_EoP -> Draw("sames"); gPad -> Update(); //------------------- // Final plot vs date //------------------- TCanvas* cplot = new TCanvas("cplot", "history plot vs date",100,100,1000,500); cplot->cd(); TPad *cLeft = new TPad("pad_0","pad_0",0.00,0.00,0.75,1.00); TPad *cRight = new TPad("pad_1","pad_1",0.75,0.00,1.00,1.00); cLeft->SetLeftMargin(0.15); cLeft->SetRightMargin(0.025); cRight->SetLeftMargin(0.025); cLeft->Draw(); cRight->Draw(); float tYoffset = 1.0; float labSize = 0.05; float labSize2 = 0.06; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); TH1F *hPad = (TH1F*)gPad->DrawFrame(t1,0.9,t2,1.05); hPad->GetXaxis()->SetTimeFormat("%d/%m%F1970-01-01 00:00:00"); hPad->GetXaxis()->SetTimeDisplay(1); hPad->GetXaxis() -> SetRangeUser(MinTime[0]-43200,MaxTime[nBins-1]+43200); hPad->GetXaxis()->SetTitle("date (day/month)"); if( strcmp(EBEE,"EB") == 0 ) hPad->GetYaxis()->SetTitle("Relative E/p scale"); else hPad->GetYaxis()->SetTitle("Relative E/p scale"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize2); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize2); hPad -> SetMinimum(yMIN); hPad -> SetMaximum(yMAX); // draw history plot g_fit -> SetMarkerStyle(24); g_fit -> SetMarkerSize(0.7); g_fit -> SetMarkerColor(kRed+2); g_fit -> SetLineColor(kRed+2); g_fit -> Draw("P"); g_c_fit -> SetMarkerStyle(20); g_c_fit -> SetMarkerColor(kGreen+2); g_c_fit -> SetLineColor(kGreen+2); g_c_fit -> SetMarkerSize(0.7); g_c_fit -> Draw("P,same"); g_las -> SetLineColor(kAzure-2); g_las -> SetLineWidth(2); g_las -> Draw("L,same"); TLegend* legend = new TLegend(0.60,0.78,0.90,0.94); legend -> SetLineColor(kWhite); legend -> SetLineWidth(0); legend -> SetFillColor(kWhite); legend -> SetFillStyle(0); legend -> SetTextFont(42); legend -> SetTextSize(0.04); legend -> AddEntry(g_c_fit,"with LM correction","PL"); legend -> AddEntry(g_fit, "without LM correction","PL"); legend -> AddEntry(g_las, "1 / LM correction","L"); legend -> Draw("same"); char latexBuffer[250]; sprintf(latexBuffer,"CMS 2012 Preliminary"); TLatex* latex = new TLatex(0.18,0.89,latexBuffer); latex -> SetNDC(); latex -> SetTextFont(62); latex -> SetTextSize(0.05); latex -> Draw("same"); //sprintf(latexBuffer,"#sqrt{s} = 8 TeV L = 3.95 fb^{-1}"); sprintf(latexBuffer,"#sqrt{s} = 8 TeV"); TLatex* latex2 = new TLatex(0.18,0.84,latexBuffer); latex2 -> SetNDC(); latex2 -> SetTextFont(42); latex2 -> SetTextSize(0.05); latex2 -> Draw("same"); if( strcmp(EBEE,"EB") == 0 ) sprintf(latexBuffer,"ECAL Barrel"); else sprintf(latexBuffer,"ECAL Endcap"); TLatex* latex3 = new TLatex(0.18,0.19,latexBuffer); latex3 -> SetNDC(); latex3 -> SetTextFont(42); latex3 -> SetTextSize(0.05); latex3 -> Draw("same"); //sprintf(latexBuffer,"%.2E events",1.*nSavePts); //TLatex* latex4 = new TLatex(0.18,0.24,latexBuffer); //latex4 -> SetNDC(); //latex4 -> SetTextFont(42); //latex4 -> SetTextSize(0.04); //latex4 -> Draw("same"); // //sprintf(latexBuffer,"%d events/bin - %d bins",evtsPerPoint,nBins); //TLatex* latex5 = new TLatex(0.18,0.19,latexBuffer); //latex5 -> SetNDC(); //latex5 -> SetTextFont(42); //latex5 -> SetTextSize(0.04); //latex5 -> Draw("same"); cRight -> cd(); TPaveStats* s_EoP_spread = new TPaveStats(); TPaveStats* s_EoC_spread = new TPaveStats(); h_EoC_spread -> SetFillStyle(3001); h_EoC_spread -> SetFillColor(kGreen+2); h_EoC_spread->GetYaxis()->SetLabelSize(0.09); h_EoC_spread->GetYaxis()->SetLabelOffset(-0.03); h_EoC_spread->GetYaxis()->SetTitleSize(0.08); h_EoC_spread->GetYaxis()->SetNdivisions(505); h_EoC_spread->GetXaxis()->SetLabelOffset(1000); h_EoC_spread -> Draw("hbar"); gPad -> Update(); s_EoC_spread = (TPaveStats*)(h_EoC_spread->GetListOfFunctions()->FindObject("stats")); s_EoC_spread -> SetStatFormat("1.4g"); s_EoC_spread->SetX1NDC(0.06); //new x start position s_EoC_spread->SetX2NDC(0.71); //new x end position s_EoC_spread->SetY1NDC(0.93); //new x start position s_EoC_spread->SetY2NDC(0.84); //new x end position s_EoC_spread -> SetOptStat(1100); s_EoC_spread ->SetTextColor(kGreen+2); s_EoC_spread ->SetTextSize(0.08); s_EoC_spread -> Draw("sames"); h_EoP_spread -> SetFillStyle(3001); h_EoP_spread -> SetFillColor(kRed+2); h_EoP_spread -> Draw("hbarsames"); gPad -> Update(); s_EoP_spread = (TPaveStats*)(h_EoP_spread->GetListOfFunctions()->FindObject("stats")); s_EoP_spread -> SetStatFormat("1.4g"); s_EoP_spread->SetX1NDC(0.06); //new x start position s_EoP_spread->SetX2NDC(0.71); //new x end position s_EoP_spread->SetY1NDC(0.83); //new x start position s_EoP_spread->SetY2NDC(0.74); //new x end position s_EoP_spread ->SetOptStat(1100); s_EoP_spread ->SetTextColor(kRed+2); s_EoP_spread ->SetTextSize(0.08); s_EoP_spread -> Draw("sames"); /* h_EoP_spread -> SetFillStyle(3001); h_EoP_spread -> SetFillColor(kRed+2); h_EoP_spread -> Draw("hbarsame"); gPad -> Update(); */ //------------------ // Final plot vs run //------------------ TCanvas* cplot_run = new TCanvas("cplot_run", "history plot vs run",100,100,1000,500); cplot_run->cd(); cLeft = new TPad("pad_0_run","pad_0_run",0.00,0.00,0.75,1.00); cRight = new TPad("pad_1_run","pad_1_run",0.75,0.00,1.00,1.00); cLeft->SetLeftMargin(0.15); cLeft->SetRightMargin(0.025); cRight->SetLeftMargin(0.025); cLeft->Draw(); cRight->Draw(); tYoffset = 1.5; labSize = 0.04; labSize2 = 0.07; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); hPad = (TH1F*)gPad->DrawFrame(MinRun[0]-1000,0.9,MaxRun[nBins-1]+1000,1.05); hPad->GetXaxis()->SetTitle("run"); if( strcmp(EBEE,"EB") == 0 ) hPad->GetYaxis()->SetTitle("Relative E/p scale"); else hPad->GetYaxis()->SetTitle("Relative E/p scale"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize); hPad -> SetMinimum(yMIN); hPad -> SetMaximum(yMAX); // draw history plot g_fit_run -> SetMarkerStyle(20); g_fit_run -> SetMarkerSize(0.7); g_fit_run -> SetMarkerColor(kRed+2); g_fit_run -> SetLineColor(kRed+2); g_fit_run -> Draw("P"); g_c_fit_run -> SetMarkerStyle(20); g_c_fit_run -> SetMarkerColor(kGreen+2); g_c_fit_run -> SetLineColor(kGreen+2); g_c_fit_run -> SetMarkerSize(0.7); g_c_fit_run -> Draw("P,same"); cRight -> cd(); s_EoP_spread = new TPaveStats(); s_EoC_spread = new TPaveStats(); h_EoC_spread_run -> SetFillStyle(3001); h_EoC_spread_run -> SetFillColor(kGreen+2); h_EoC_spread_run->GetYaxis()->SetLabelSize(labSize2); h_EoC_spread_run->GetYaxis()->SetTitleSize(labSize2); h_EoC_spread_run->GetYaxis()->SetNdivisions(505); h_EoC_spread_run->GetYaxis()->SetLabelOffset(-0.02); h_EoC_spread_run->GetXaxis()->SetLabelOffset(1000); h_EoC_spread_run -> Draw("hbar"); gPad -> Update(); s_EoC_spread = (TPaveStats*)(h_EoC_spread_run->GetListOfFunctions()->FindObject("stats")); s_EoC_spread ->SetTextColor(kGreen+2); s_EoC_spread ->SetTextSize(0.06); s_EoC_spread->SetX1NDC(0.49); //new x start position s_EoC_spread->SetX2NDC(0.99); //new x end position s_EoC_spread->SetY1NDC(0.875); //new x start position s_EoC_spread->SetY2NDC(0.990); //new x end position s_EoC_spread -> SetOptStat(1100); s_EoC_spread -> Draw("sames"); h_EoP_spread_run -> SetFillStyle(3001); h_EoP_spread_run -> SetFillColor(kRed+2); h_EoP_spread_run -> Draw("hbarsames"); gPad -> Update(); s_EoP_spread = (TPaveStats*)(h_EoP_spread_run->GetListOfFunctions()->FindObject("stats")); s_EoP_spread->SetX1NDC(0.49); //new x start position s_EoP_spread->SetX2NDC(0.99); //new x end position s_EoP_spread->SetY1NDC(0.750); //new x start position s_EoP_spread->SetY2NDC(0.875); //new x end position s_EoP_spread ->SetOptStat(1100); s_EoP_spread ->SetTextColor(kRed+2); s_EoP_spread ->SetTextSize(0.06); s_EoP_spread -> Draw("sames"); c_chi2 -> Print((folderName+"/"+folderName+"_fitChi2.png").c_str(),"png"); c_scOccupancy -> Print((folderName+"/"+folderName+"_scOccupancy.png").c_str(),"png"); c_seedOccupancy -> Print((folderName+"/"+folderName+"_seedOccupancy.png").c_str(),"png"); cplot -> Print((folderName+"/"+folderName+"_history_vsTime.png").c_str(),"png"); cplot_run -> Print((folderName+"/"+folderName+"_history_vsRun.png").c_str(),"png"); c_chi2 -> Print((folderName+"/"+folderName+"_fitChi2.pdf").c_str(),"pdf"); c_scOccupancy -> Print((folderName+"/"+folderName+"_scOccupancy.pdf").c_str(),"pdf"); c_seedOccupancy -> Print((folderName+"/"+folderName+"_seedOccupancy.pdf").c_str(),"pdf"); cplot -> Print((folderName+"/"+folderName+"_history_vsTime.pdf").c_str(),"pdf"); cplot_run -> Print((folderName+"/"+folderName+"_history_vsRun.pdf").c_str(),"pdf"); cplot -> SaveAs((folderName+"/"+folderName+"_history_vsTime.C").c_str()); cplot_run -> SaveAs((folderName+"/"+folderName+"_history_vsRun.C").c_str()); o -> cd(); h_template -> Write(); h_scOccupancy_eta -> Write(); h_scOccupancy_phi -> Write(); h_seedOccupancy_EB -> Write(); h_seedOccupancy_EEp -> Write(); h_seedOccupancy_EEm -> Write(); g_fit -> Write("g_fit"); g_c_fit -> Write("g_c_fit"); g_fit_run -> Write("g_fit_run"); g_c_fit_run -> Write("g_c_fit_run"); g_las -> Write("g_las"); g_LT -> Write("g_LT"); h_EoP_chi2 -> Write(); h_EoC_chi2 -> Write(); //for(int i = 0; i < nBins; ++i) //{ // h_EoP[i] -> GetXaxis() -> SetTitle("E/p"); // h_EoP[i] -> Write(); // // h_EoC[i] -> GetXaxis() -> SetTitle("E/p"); // h_EoC[i] -> Write(); // // h_Tsp[i] -> Write(); // // h_Cvl[i] -> Write(); //} o -> Close(); }
void plot(int mass) { double myQCDRelUncert = 0.038; double myEWKRelUncert = 0.131; double myFakesRelUncert = 0.238; double delta = 1.4; double br = 0.05; bool debug = false; bool log = false; double ymin = 0.001; double ymax = 48; static bool bMessage = false; if (!bMessage) { cout << "Values used as relative uncertainty (please check):" << endl; cout << " QCD: " << myQCDRelUncert << endl; cout << " EWK genuine tau: " << myEWKRelUncert << endl; cout << " EWK fake tau: " << myFakesRelUncert << endl << endl; bMessage = true; } cout << "Processing mass point: " << mass << " GeV/c2" << endl; gStyle->SetOptFit(1); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetTitleFont(43, "xyz"); gStyle->SetTitleSize(33, "xyz"); gStyle->SetLabelFont(43, "xyz"); gStyle->SetLabelSize(27, "xyz"); //std::string infile = "EPS_data_nodeltaphi/hplus_100.root"; //std::string infile = "EPS_data_deltaphi160/hplus_100.root"; std::stringstream s; s << "lands_histograms_hplushadronic_m" << mass << ".root"; std::string infile = s.str(); // Canvas TCanvas *myCanvas = new TCanvas("myCanvas", "",0,0,600,600); myCanvas->SetHighLightColor(2); myCanvas->Range(0,0,1,1); myCanvas->SetFillColor(0); myCanvas->SetBorderMode(0); myCanvas->SetBorderSize(2); if (log) myCanvas->SetLogy(); myCanvas->SetTickx(1); myCanvas->SetTicky(1); myCanvas->SetLeftMargin(0.16); myCanvas->SetRightMargin(0.05); myCanvas->SetTopMargin(0.05); myCanvas->SetBottomMargin(0.08); myCanvas->SetFrameFillStyle(0); myCanvas->SetFrameBorderMode(0); myCanvas->SetFrameFillStyle(0); myCanvas->SetFrameBorderMode(0); myCanvas->cd(); Int_t ci; TFile* f = TFile::Open(infile.c_str()); s.str(""); s << "HW" << mass << "_1"; TH1* hw = (TH1*)f->Get(s.str().c_str()); s.str(""); s << "HH" << mass << "_1"; TH1* hh = (TH1*)f->Get(s.str().c_str()); TH1* data = (TH1*)f->Get("data_obs"); data->SetLineWidth(2); data->SetMarkerStyle(20); data->SetMarkerSize(1.2); TH1* ewktau = (TH1*)f->Get("EWK_Tau"); ci = TColor::GetColor("#993399"); ewktau->SetFillColor(ci); ewktau->SetLineWidth(0); TH1* ewkDY = (TH1*)f->Get("EWK_DYx"); TH1* ewkVV = (TH1*)f->Get("EWK_VVx"); ewktau->Add(ewkDY); ewktau->Add(ewkVV); //TH1* qcd = (TH1*)f->Get("QCDInv"); TH1* qcd = (TH1*)f->Get("QCD"); ci = TColor::GetColor("#ffcc33"); qcd->SetFillColor(ci); qcd->SetLineWidth(0); TH1* fakett = (TH1*)f->Get("fake_tt"); ci = TColor::GetColor("#669900"); fakett->SetFillColor(ci); fakett->SetLineWidth(0); TH1* fakeW = (TH1*)f->Get("fake_W"); ci = TColor::GetColor("#cc3300"); fakeW->SetFillColor(ci); fakeW->SetLineWidth(0); TH1* faket = (TH1*)f->Get("fake_t"); TH1F *hFrame = new TH1F("hFrame","",20,0,400); hFrame->SetMinimum(ymin); if (log) hFrame->SetMaximum(ymax*1.5); else hFrame->SetMaximum(ymax); hFrame->SetDirectory(0); hFrame->SetStats(0); hFrame->SetLineStyle(0); hFrame->SetMarkerStyle(20); hFrame->SetXTitle("Transverse mass (#tau jet, E_{T}^{miss}), (GeV/c^{2})"); if (paperStatus) hFrame->SetXTitle("Transverse mass (#tau_{h}, E_{T}^{miss}), (GeV/c^{2})"); hFrame->SetYTitle("Events / 20 GeV/c^{2}"); hFrame->GetXaxis()->SetTitleSize(0); hFrame->GetXaxis()->SetLabelSize(0); hFrame->GetYaxis()->SetTitleFont(43); hFrame->GetYaxis()->SetTitleSize(27); hFrame->GetYaxis()->SetTitleOffset(1.3); // signal hh->Scale(br*br); hw->Scale(2*br*(1.0-br)); TH1* signal = (TH1*)hh->Clone(); signal->Add(hw); ci = TColor::GetColor("#ff3399"); signal->SetLineColor(ci); signal->SetLineStyle(2); signal->SetLineWidth(2); // Fakes TH1* fakes = (TH1*)(fakett->Clone()); fakes->Add(fakeW); fakes->Add(faket); // stacked backgrounds THStack *exp = new THStack(); exp->SetName("exp"); exp->SetTitle("exp"); exp->Add(fakes); exp->Add(ewktau); exp->Add(qcd); exp->Add(signal); TH1* hExpBkg = (TH1*)fakes->Clone(); hExpBkg->Add(ewktau); hExpBkg->Add(qcd); // uncertainty TH1* uncert = (TH1*)fakeW->Clone(); uncert->Add(fakett); uncert->Add(ewktau); uncert->Add(qcd); uncert->SetFillColor(1); uncert->SetFillStyle(3344); uncert->SetLineColor(0); uncert->SetLineStyle(0); uncert->SetLineWidth(0); TH1* hExpBkgTotalUncert = (TH1*)uncert->Clone(); hExpBkgTotalUncert->SetFillStyle(3354); TH1* hAgreement = (TH1*)data->Clone(); hAgreement->Divide(hExpBkg); TGraphErrors* hAgreementRelUncert = new TGraphErrors(hAgreement->GetNbinsX()); hAgreementRelUncert->SetLineWidth(2); hAgreementRelUncert->SetLineColor(kBlack); for (int i = 1; i <= hFrame->GetNbinsX(); ++i) { double myQCDTotalUncert = TMath::Power(qcd->GetBinError(i), 2) + TMath::Power(qcd->GetBinContent(i)*myQCDRelUncert, 2); double myEWKTotalUncert = TMath::Power(ewktau->GetBinError(i), 2) + TMath::Power(ewktau->GetBinContent(i)*myEWKRelUncert, 2); double myFakesTotalUncert = TMath::Power(fakes->GetBinError(i), 2) + TMath::Power(fakes->GetBinContent(i)*myFakesRelUncert, 2); hExpBkgTotalUncert->SetBinError(i, TMath::Sqrt(myQCDTotalUncert + myEWKTotalUncert + myFakesTotalUncert)); if (hExpBkg->GetBinContent(i) > 0) { hAgreementRelUncert->SetPoint(i-1, hExpBkg->GetBinCenter(i), data->GetBinContent(i) / hExpBkg->GetBinContent(i)); double myUncertData = 0; if (data->GetBinContent(i) > 0) myUncertData = TMath::Power(data->GetBinError(i) / data->GetBinContent(i), 2); double myUncertBkg = (myQCDTotalUncert + myEWKTotalUncert + myFakesTotalUncert) / TMath::Power(hExpBkg->GetBinContent(i), 2); hAgreementRelUncert->SetPointError(i-1, 0, data->GetBinContent(i) / hExpBkg->GetBinContent(i) * TMath::Sqrt(myUncertData + myUncertBkg)); } else { hAgreementRelUncert->SetPoint(i-1, hExpBkg->GetBinCenter(i), 0); hAgreementRelUncert->SetPointError(i-1, 0, 0); } if (debug) { cout << "Point: " << hAgreementRelUncert->GetX()[i-1]-10 << "-" << hAgreementRelUncert->GetX()[i-1]+10 << " GeV/c2, agreement: " << hAgreementRelUncert->GetY()[i-1] << ", uncert: " << hAgreement->GetBinError(i) << ", " << hAgreementRelUncert->GetErrorY(i-1) << endl; cout << " bkg. stat. uncert. " << hExpBkg->GetBinError(i) << " (i.e. " << hExpBkg->GetBinError(i) / hExpBkg->GetBinContent(i) * 100.0 << " %)" << ", stat+syst uncert. " << TMath::Sqrt(myQCDTotalUncert + myEWKTotalUncert + myFakesTotalUncert) << " (i.e. " << TMath::Sqrt(myQCDTotalUncert + myEWKTotalUncert + myFakesTotalUncert) / hExpBkg->GetBinContent(i) * 100.0 << " %)" << endl; } } // Agreement pad TPad* pad = new TPad("ratiopad","ratiopad",0.,0.,1.,.3); pad->Draw(); pad->cd(); pad->Range(0,0,1,1); pad->SetFillColor(0); pad->SetFillStyle(4000); pad->SetBorderMode(0); pad->SetBorderSize(2); pad->SetTickx(1); pad->SetTicky(1); pad->SetLeftMargin(0.16); pad->SetRightMargin(0.05); pad->SetTopMargin(0); pad->SetBottomMargin(0.34); pad->SetFrameFillStyle(0); pad->SetFrameBorderMode(0); // Plot here ratio if (1.0-delta > 0) hAgreement->SetMinimum(1.0-delta); else hAgreement->SetMinimum(0.); hAgreement->SetMaximum(1.0+delta); hAgreement->GetXaxis()->SetLabelOffset(0.007); hAgreement->GetXaxis()->SetLabelFont(43); hAgreement->GetXaxis()->SetLabelSize(27); hAgreement->GetYaxis()->SetLabelFont(43); hAgreement->GetYaxis()->SetLabelSize(27); hAgreement->GetYaxis()->SetLabelOffset(0.007); hAgreement->GetYaxis()->SetNdivisions(505); hAgreement->GetXaxis()->SetTitleFont(43); hAgreement->GetYaxis()->SetTitleFont(43); hAgreement->GetXaxis()->SetTitleSize(33); hAgreement->GetYaxis()->SetTitleSize(33); hAgreement->SetTitleSize(27, "xyz"); hAgreement->GetXaxis()->SetTitleOffset(3.2); hAgreement->GetYaxis()->SetTitleOffset(1.3); hAgreement->SetXTitle(hFrame->GetXaxis()->GetTitle()); hAgreement->SetYTitle("Data/#Sigmabkg"); hAgreement->Draw("e2"); // Plot line at zero TH1* hAgreementLine = dynamic_cast<TH1*>(hAgreement->Clone()); for (int i = 1; i <= hAgreementLine->GetNbinsX(); ++i) { hAgreementLine->SetBinContent(i,1.0); hAgreementLine->SetBinError(i,0.0); } hAgreementLine->SetLineColor(kRed); hAgreementLine->SetLineWidth(2); hAgreementLine->SetLineStyle(3); hAgreementLine->Draw("hist same"); hAgreement->Draw("same"); hAgreementRelUncert->Draw("[]"); pad->RedrawAxis(); myCanvas->cd(); TPad* plotpad = new TPad("plotpad", "plotpad",0,0.3,1.,1.); plotpad->Draw(); plotpad->cd(); plotpad->Range(0,0,1,1); plotpad->SetFillColor(0); plotpad->SetFillStyle(4000); plotpad->SetBorderMode(0); plotpad->SetBorderSize(2); //if (logy) // plotpad->SetLogy(); plotpad->SetTickx(1); plotpad->SetTicky(1); plotpad->SetLeftMargin(0.16); plotpad->SetRightMargin(0.05); plotpad->SetTopMargin(0.065); plotpad->SetBottomMargin(0.0); plotpad->SetFrameFillStyle(0); plotpad->SetFrameBorderMode(0); hFrame->GetXaxis()->SetTitleSize(0); hFrame->GetXaxis()->SetLabelSize(0); hFrame->GetYaxis()->SetTitleFont(43); hFrame->GetYaxis()->SetTitleSize(33); hFrame->GetYaxis()->SetTitleOffset(1.3); // Draw objects hFrame->Draw(); exp->Draw("hist same"); uncert->Draw("E2 same"); hExpBkgTotalUncert->Draw("E2 same"); // Data data->Draw("same"); //signal->Draw("same"); TLegend *leg = new TLegend(0.53,0.6,0.87,0.91,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextFont(63); leg->SetTextSize(18); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(1); leg->SetFillColor(kWhite); //leg->SetFillStyle(4000); // enabling this will cause the plot to be erased from the pad TLegendEntry* entry = leg->AddEntry(data, "Data", "P"); s.str(""); s << "with H^{#pm}#rightarrow#tau^{#pm}#nu"; entry = leg->AddEntry(signal, s.str().c_str(), "L"); entry = leg->AddEntry(qcd, "QCD (meas.)", "F"); entry = leg->AddEntry(ewktau, "EWK genuine #tau (meas.)", "F"); entry = leg->AddEntry(fakes, "EWK fake #tau (MC)", "F"); entry = leg->AddEntry(uncert, "stat. uncert.", "F"); entry = leg->AddEntry(hExpBkgTotalUncert, "stat. #oplus syst. uncert.", "F"); leg->Draw(); string myTitle = "CMS Preliminary"; if (paperStatus) myTitle = "CMS"; TLatex *tex = new TLatex(0.62,0.945,myTitle.c_str()); tex->SetNDC(); tex->SetTextFont(43); tex->SetTextSize(27); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.2,0.945,"#sqrt{s} = 7 TeV"); tex->SetNDC(); tex->SetTextFont(43); tex->SetTextSize(27); tex->SetLineWidth(2); tex->Draw(); tex = new TLatex(0.43,0.945,"2.2 fb^{-1}"); tex->SetNDC(); tex->SetTextFont(43); tex->SetTextSize(27); tex->SetLineWidth(2); tex->Draw(); s.str(""); s << "m_{H^{#pm}} = " << mass << " GeV/c^{2}"; tex = new TLatex(0.28,0.865,s.str().c_str()); tex->SetNDC(); tex->SetTextFont(63); tex->SetTextSize(20); tex->SetLineWidth(2); tex->Draw(); s.str(""); s << "BR(t#rightarrowbH^{#pm})=" << setprecision(2) << br; tex = new TLatex(0.28,0.805,s.str().c_str()); tex->SetNDC(); tex->SetTextFont(63); tex->SetTextSize(20); tex->SetLineWidth(2); tex->Draw(); plotpad->RedrawAxis(); plotpad->Modified(); s.str(""); s << "mT_datadriven_m" << mass << ".png"; myCanvas->Print(s.str().c_str()); s.str(""); s << "mT_datadriven_m" << mass << ".C"; myCanvas->Print(s.str().c_str()); s.str(""); s << "mT_datadriven_m" << mass << ".eps"; myCanvas->Print(s.str().c_str()); }
void AccTimesEff::Loop() { TStopwatch timer; timer.Start(); // parameters ///////////////////////////////////////////////////////////// vector<TString> files; files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-500_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9999ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-750_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_10000ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-1000_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9998ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-1250_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9998ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-1500_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9997ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-1750_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9997ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-2000_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9999ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-2500_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9999ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-3000_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_10000ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-3500_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9898ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-4000_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9998ev.root"); files.push_back("file:////user/treis/mcsamples/ZprimeToEMu_M-5000_noAccCuts_TuneZ2star_8TeV_madgraph_treis-Summer12_DR53X_PU_S10_START53_V7C1-v1_9966ev.root"); string outfileName = "accTimesEffHistos"; // output file formats const bool saveSpec = 0; const bool saveAsPdf = 0; const bool saveAsPng = 1; const bool saveAsRoot = 0; TString plotDir = "./plots/"; int font = 42; //62 // selection cuts ///////////////////////////////////////////////////////// float elePtCut = 35.; float muPtCut = 35.; float minInvMass = 0.; TH1::SetDefaultSumw2(kTRUE); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// TH1F *hGenEvts = new TH1F("hGenEvts", "hGenEvts", 145, 0., 5010.); hGenEvts->GetXaxis()->SetTitle("M_{Z'}^{truth}"); hGenEvts->GetXaxis()->SetTitleFont(font); hGenEvts->GetXaxis()->SetLabelFont(font); hGenEvts->GetYaxis()->SetTitle("Events"); hGenEvts->GetYaxis()->SetTitleFont(font); hGenEvts->GetYaxis()->SetLabelFont(font); hGenEvts->GetYaxis()->SetTitleOffset(1.2); hGenEvts->SetLineColor(kBlack); hGenEvts->SetLineWidth(2); hGenEvts->SetMarkerStyle(20); hGenEvts->SetMarkerColor(kBlack); TH1F *hGenEvtsEleInAcc = (TH1F*)hGenEvts->Clone("hGenEvtsEleInAcc"); TH1F *hGenEvtsEleInAccEB = (TH1F*)hGenEvts->Clone("hGenEvtsEleInAccEB"); TH1F *hGenEvtsEleInAccEE = (TH1F*)hGenEvts->Clone("hGenEvtsEleInAccEE"); TH1F *hGenEvtsMuInAcc = (TH1F*)hGenEvts->Clone("hGenEvtsMuInAcc"); TH1F *hGenEvtsInAcc = (TH1F*)hGenEvts->Clone("hGenEvtsInAcc"); TH1F *hTrgEvts = (TH1F*)hGenEvts->Clone("hTrgEvts"); hTrgEvts->SetTitle("hTrgEvts"); TH1F *hRecoEvts = (TH1F*)hGenEvts->Clone("hRecoEvts"); hRecoEvts->SetTitle("hRecoEvts"); TH1F *hRecoEvtsEB = (TH1F*)hRecoEvts->Clone("hRecoEvtsEB"); TH1F *hRecoEvtsEE = (TH1F*)hRecoEvts->Clone("hRecoEvtsEE"); TH1F *hRecoEleEvts = (TH1F*)hRecoEvts->Clone("hRecoEleEvts"); TH1F *hRecoEleEvtsEB = (TH1F*)hRecoEvts->Clone("hRecoEleEvtsEB"); TH1F *hRecoEleEvtsEE = (TH1F*)hRecoEvts->Clone("hRecoEleEvtsEE"); TH1F *hRecoMuEvts = (TH1F*)hRecoEvts->Clone("hRecoMuEvts"); TH1F *hRecoNoTrgEvts = (TH1F*)hGenEvts->Clone("hRecoNoTrgEvts"); hRecoNoTrgEvts->SetTitle("hRecoNoTrgEvts"); TH1F *hRecoNoTrgEvtsEB = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgEvtsEB"); TH1F *hRecoNoTrgEvtsEE = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgEvtsEE"); TH1F *hRecoNoTrgEleEvts = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgEleEvts"); TH1F *hRecoNoTrgEleEvtsEB = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgEleEvtsEB"); TH1F *hRecoNoTrgEleEvtsEE = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgEleEvtsEE"); TH1F *hRecoNoTrgMuEvts = (TH1F*)hRecoNoTrgEvts->Clone("hRecoNoTrgMuEvts"); TH1F* hAcc; TH1F* hAccEle; TH1F* hAccEleEB; TH1F* hAccEleEE; TH1F* hAccMu; TH1F* hAccTimesTrgEff; TH1F* hTrgEff; TH1F* hAccTimesEff; TH1F* hAccTimesEffEB; TH1F* hAccTimesEffEE; TH1F* hAccTimesEffEle; TH1F* hAccTimesEffEleEB; TH1F* hAccTimesEffEleEE; TH1F* hAccTimesEffMu; TH1F* hAccTimesEffNoTrg; //TH1F* hAccTimesEffNoTrgEB; //TH1F* hAccTimesEffNoTrgEE; TH1F* hAccTimesEffNoTrgEle; TH1F* hAccTimesEffNoTrgEleEB; TH1F* hAccTimesEffNoTrgEleEE; TH1F* hAccTimesEffNoTrgMu; TH1F* hEffAftTrg; TH1F* hEffAftTrgEle; TH1F* hEffAftTrgEleEB; TH1F* hEffAftTrgEleEE; TH1F* hEffAftTrgMu; TH1F* hTrgRecoVsReco; //TH1F* hTrgRecoVsRecoEB; //TH1F* hTrgRecoVsRecoEE; TH1F* hTrgRecoVsRecoEle; TH1F* hTrgRecoVsRecoEleEB; TH1F* hTrgRecoVsRecoEleEE; TH1F* hTrgRecoVsRecoMu; // output file stringstream ssOutfile; ssOutfile << outfileName << ".root"; TFile *output = new TFile(ssOutfile.str().c_str(), "recreate"); /////////////////////////////////////////////////////////////////////////// //LOOP OVER FILES /////////////////////////////////////////////////////////////////////////// for (unsigned int p = 0; p < files.size(); ++p) { TFile* input = new TFile(files[p]); TTree *thetree = (TTree*)input->Get("gsfcheckerjob/tree"); Init(thetree); Long64_t nentries = fChain->GetEntriesFast(); cout << nentries << " events" << endl; unsigned int evCounter = 0; ///////////////////////////////////////////////////////////////////////////////////////////// //LOOP OVER EVENTS ///////////////////////////////////////////////////////////////////////////////////////////// //nentries = 10000; for (Long64_t jentry = 0; jentry < nentries; ++jentry) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; fChain->GetEntry(jentry); // if (Cut(ientry) < 0) continue; //if (jentry % 50000 == 0) cout << "Processing event " << jentry << endl; thetree->GetEntry(jentry); // fill the gen histograms hGenEvts->Fill(genelemom_mass[0]); // fill the acc histograms if (hardGenEle_pt[0] > elePtCut) { if (fabs(hardGenEle_eta[0]) < 1.442) { hGenEvtsEleInAcc->Fill(genelemom_mass[0]); hGenEvtsEleInAccEB->Fill(genelemom_mass[0]); } else if (fabs(hardGenEle_eta[0]) > 1.56 && fabs(hardGenEle_eta[0]) < 2.5) { hGenEvtsEleInAcc->Fill(genelemom_mass[0]); hGenEvtsEleInAccEE->Fill(genelemom_mass[0]); } } if (hardGenMu_pt[0] > muPtCut && fabs(hardGenMu_eta[0]) < 2.4) { hGenEvtsMuInAcc->Fill(genelemom_mass[0]); if (fabs(hardGenEle_eta[0]) < 1.442 || (fabs(hardGenEle_eta[0]) > 1.56 && fabs(hardGenEle_eta[0]) < 2.5)) { if (hardGenEle_pt[0] > elePtCut) hGenEvtsInAcc->Fill(genelemom_mass[0]); } } // trigger? if (HLT_Mu22_Photon22_CaloIdL) hTrgEvts->Fill(genelemom_mass[0]); // at least one gsf electron and one muon above the threshold if (gsf_size < 1 || muon_size < 1) continue; vector<int> GSF_passHEEP; vector<int> MU_passGOOD; ///////////////////////////////////////////////////////////////////////////////////////////// //loop over electrons for (int j = 0; j < gsf_size; ++j) { //cleaning: fake electrons from muons bool fakeEle = false; for (int k = 0; k < muon_size; ++k) { float DeltaR = deltaR(gsf_eta[j], gsf_phi[j], muon_eta[k], muon_phi[k]); if (DeltaR < 0.1) { fakeEle = true; break; } } if (fakeEle) continue; if (PassHEEP(j)) GSF_passHEEP.push_back(j); } //loop over muons for (int j = 0; j < muon_size; ++j) { if (PassHighPtMu(j)) MU_passGOOD.push_back(j); } if (GSF_passHEEP.size() == 1) { if (HLT_Mu22_Photon22_CaloIdL) { hRecoEleEvts->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) < 1.5) hRecoEleEvtsEB->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) > 1.5) hRecoEleEvtsEE->Fill(genelemom_mass[0]); } hRecoNoTrgEleEvts->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) < 1.5) hRecoNoTrgEleEvtsEB->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) > 1.5) hRecoNoTrgEleEvtsEE->Fill(genelemom_mass[0]); } if (MU_passGOOD.size() == 1) { if (HLT_Mu22_Photon22_CaloIdL) hRecoMuEvts->Fill(genelemom_mass[0]); hRecoNoTrgMuEvts->Fill(genelemom_mass[0]); } // veto when there are more than one good candidates if (GSF_passHEEP.size() != 1 || MU_passGOOD.size() != 1) continue; //HEEP ele + GOOD muon TLorentzVector ele1; TLorentzVector mu1; ele1.SetPtEtaPhiM(gsf_gsfet[GSF_passHEEP[0]], gsf_eta[GSF_passHEEP[0]], gsf_phi[GSF_passHEEP[0]], 0.000511); mu1.SetPtEtaPhiM(muon_pt[MU_passGOOD[0]], muon_eta[MU_passGOOD[0]], muon_phi[MU_passGOOD[0]], 0.10566); double invMass = (ele1 + mu1).M(); //MASS CUT if (invMass < minInvMass) continue; if (HLT_Mu22_Photon22_CaloIdL) { hRecoEvts->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) < 1.5) hRecoEvtsEB->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) > 1.5) hRecoEvtsEE->Fill(genelemom_mass[0]); } hRecoNoTrgEvts->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) < 1.5) hRecoNoTrgEvtsEB->Fill(genelemom_mass[0]); if (fabs(gsfsc_eta[GSF_passHEEP[0]]) > 1.5) hRecoNoTrgEvtsEE->Fill(genelemom_mass[0]); ++evCounter; /////////////////////////////////////////////////////////////////////// } //END LOOP OVER EVENTS ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// } //END LOOP OVER FILES ////////////////////////////////////////////////////////////////////////// hAcc = (TH1F*)hGenEvtsInAcc->Clone("hAcc"); hAccEle = (TH1F*)hGenEvtsEleInAcc->Clone("hAccEle"); hAccEleEB = (TH1F*)hGenEvtsEleInAccEB->Clone("hAccEleEB"); hAccEleEE = (TH1F*)hGenEvtsEleInAccEE->Clone("hAccEleEE"); hAccMu = (TH1F*)hGenEvtsMuInAcc->Clone("hAccMu"); hAccTimesTrgEff = (TH1F*)hTrgEvts->Clone("hAccTimesTrgEff"); hTrgEff = (TH1F*)hTrgEvts->Clone("hTrgEff"); hAccTimesEff = (TH1F*)hRecoEvts->Clone("hAccTimesEff"); hAccTimesEffEB = (TH1F*)hRecoEvtsEB->Clone("hAccTimesEffEB"); hAccTimesEffEE = (TH1F*)hRecoEvtsEE->Clone("hAccTimesEffEE"); hAccTimesEffEle = (TH1F*)hRecoEleEvts->Clone("hAccTimesEffEle"); hAccTimesEffEleEB = (TH1F*)hRecoEleEvtsEB->Clone("hAccTimesEffEleEB"); hAccTimesEffEleEE = (TH1F*)hRecoEleEvtsEE->Clone("hAccTimesEffEleEE"); hAccTimesEffMu = (TH1F*)hRecoMuEvts->Clone("hAccTimesEffMu"); hAccTimesEffNoTrg = (TH1F*)hRecoNoTrgEvts->Clone("hAccTimesEffNoTrg"); //hAccTimesEffNoTrgEB = (TH1F*)hRecoNoTrgEvtsEB->Clone("hAccTimesEffNoTrgEB"); //hAccTimesEffNoTrgEE = (TH1F*)hRecoNoTrgEvtsEE->Clone("hAccTimesEffNoTrgEE"); hAccTimesEffNoTrgEle = (TH1F*)hRecoNoTrgEleEvts->Clone("hAccTimesEffNoTrgEle"); hAccTimesEffNoTrgEleEB = (TH1F*)hRecoNoTrgEleEvtsEB->Clone("hAccTimesEffNoTrgEleEB"); hAccTimesEffNoTrgEleEE = (TH1F*)hRecoNoTrgEleEvtsEE->Clone("hAccTimesEffNoTrgEleEE"); hAccTimesEffNoTrgMu = (TH1F*)hRecoNoTrgMuEvts->Clone("hAccTimesEffNoTrgMu"); hEffAftTrg = (TH1F*)hRecoEvts->Clone("hAccTimesEff"); hEffAftTrgEle = (TH1F*)hRecoEleEvts->Clone("hAccTimesEffEle"); hEffAftTrgEleEB = (TH1F*)hRecoEleEvtsEB->Clone("hAccTimesEffEleEB"); hEffAftTrgEleEE = (TH1F*)hRecoEleEvtsEE->Clone("hAccTimesEffEleEE"); hEffAftTrgMu = (TH1F*)hRecoMuEvts->Clone("hAccTimesEffMu"); hTrgRecoVsReco = (TH1F*)hRecoEvts->Clone("hTrgRecoVsReco"); //hTrgRecoVsRecoEB = (TH1F*)hRecoEvtsEB->Clone("hTrgRecoVsRecoEB"); //hTrgRecoVsRecoEE = (TH1F*)hRecoEvtsEE->Clone("hTrgRecoVsRecoEE"); hTrgRecoVsRecoEle = (TH1F*)hRecoEleEvts->Clone("hTrgRecoVsRecoEle"); hTrgRecoVsRecoEleEB = (TH1F*)hRecoEleEvtsEB->Clone("hTrgRecoVsRecoEleEB"); hTrgRecoVsRecoEleEE = (TH1F*)hRecoEleEvtsEE->Clone("hTrgRecoVsRecoEleEE"); hTrgRecoVsRecoMu = (TH1F*)hRecoMuEvts->Clone("hTrgRecoVsRecoMu"); hAcc->Divide(hGenEvts); hAccEle->Divide(hGenEvts); hAccEleEB->Divide(hGenEvts); hAccEleEE->Divide(hGenEvts); hAccMu->Divide(hGenEvts); hAccTimesTrgEff->Divide(hGenEvts); hTrgEff->Divide(hGenEvtsInAcc); hAccTimesEff->Divide(hGenEvts); hAccTimesEffEB->Divide(hGenEvts); hAccTimesEffEE->Divide(hGenEvts); hAccTimesEffEle->Divide(hGenEvts); hAccTimesEffEleEB->Divide(hGenEvts); hAccTimesEffEleEE->Divide(hGenEvts); hAccTimesEffMu->Divide(hGenEvts); hAccTimesEffNoTrg->Divide(hGenEvts); //hAccTimesEffNoTrgEB->Divide(hGenEvts); //hAccTimesEffNoTrgEE->Divide(hGenEvts); hAccTimesEffNoTrgEle->Divide(hGenEvts); hAccTimesEffNoTrgEleEB->Divide(hGenEvts); hAccTimesEffNoTrgEleEE->Divide(hGenEvts); hAccTimesEffNoTrgMu->Divide(hGenEvts); hEffAftTrg->Divide(hTrgEvts); hEffAftTrgEle->Divide(hTrgEvts); hEffAftTrgEleEB->Divide(hTrgEvts); hEffAftTrgEleEE->Divide(hTrgEvts); hEffAftTrgMu->Divide(hTrgEvts); hTrgRecoVsReco->Divide(hRecoNoTrgEvts); //hTrgRecoVsRecoEB->Divide(hRecoNoTrgEvtsEB); //hTrgRecoVsRecoEE->Divide(hRecoNoTrgEvtsEE); hTrgRecoVsRecoEle->Divide(hRecoNoTrgEleEvts); hTrgRecoVsRecoEleEB->Divide(hRecoNoTrgEleEvtsEB); hTrgRecoVsRecoEleEE->Divide(hRecoNoTrgEleEvtsEE); hTrgRecoVsRecoMu->Divide(hRecoNoTrgMuEvts); // plot TCanvas *accTimesEffPlot = new TCanvas("accTimesEffPlot", "acc x eff", 100, 100, 600, 600); TPad *accTimesEffPad = new TPad("accTimesEffPad", "acc x eff pad", 0., 0., 1., 1.); accTimesEffPad->SetBottomMargin(0.12); accTimesEffPad->SetBorderMode(0); accTimesEffPad->SetBorderSize(2); accTimesEffPad->SetFrameBorderMode(0); accTimesEffPad->SetFillColor(0); accTimesEffPad->SetFrameFillColor(0); accTimesEffPad->SetLeftMargin(0.11); accTimesEffPad->SetRightMargin(0.09); accTimesEffPad->SetTopMargin(0.08); accTimesEffPad->SetTickx(1); accTimesEffPad->SetTicky(1); accTimesEffPad->Draw(); accTimesEffPad->cd(); gStyle->SetTitleFont(font); gStyle->SetLabelFont(font); gStyle->SetLegendFont(font); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetOptFit(1111); gStyle->SetTitleXOffset(1.); gStyle->SetTitleYOffset(1.3); gPad->SetTicks(1, 1); gPad->SetGrid(1, 1); TH1F* hAccTimesEff2 = (TH1F*)hAccTimesEff->Clone("hAccTimesEff2"); TF1 *fitFunc = new TF1("fitFunc", "[0] + [1]/ (x + [2]) + [3]*x", 10., 5010.); //TF1 *fitFuncEB = new TF1("fitFuncEB", "[0] + [1]/ (x + [2])", 10., 5010.); TF1 *fitFuncEB = new TF1("fitFuncEB", "[0] + [1]/ (x + [2]) + [3]*x", 10., 5010.); TF1 *fitFuncEE = new TF1("fitFuncEE", "[0] + [1]/ (x*x + [2])", 10., 5010.); fitFunc->SetLineColor(kBlue); fitFuncEB->SetLineColor(kBlue); fitFuncEE->SetLineColor(kBlue); hAccTimesEff->Fit("fitFunc", "", "", 480., 5010.); hAccTimesEffEB->Fit("fitFuncEB", "", "", 480., 5010.); hAccTimesEffEE->Fit("fitFuncEE", "", "", 480., 5010.); cout << "Chi^2 / NDF: " << fitFunc->GetChisquare() << " / " << fitFunc->GetNDF() << ", prob: " << fitFunc->GetProb() << endl; cout << "Chi^2 / NDF EB: " << fitFuncEB->GetChisquare() << " / " << fitFuncEB->GetNDF() << ", prob: " << fitFuncEB->GetProb() << endl; cout << "Chi^2 / NDF EE: " << fitFuncEE->GetChisquare() << " / " << fitFuncEE->GetNDF() << ", prob: " << fitFuncEE->GetProb() << endl; hAccTimesEff->GetYaxis()->SetTitle("acc x eff"); hAccTimesEff->GetYaxis()->SetRangeUser(0., 1.); hAccTimesEff->Draw(); TLatex *tex = new TLatex(0.22, 0.21, "P(M|p0,p1,p2,p3) = p0 + #frac{p1}{M+p2} + p3*M"); tex->SetNDC(); tex->SetTextFont(font); tex->SetLineWidth(2); tex->SetTextSize(0.03); tex->Draw(); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); tex->DrawLatex(0.17, 0.85, "trg + electron + muon"); TCanvas *accTimesEffPlotEB = new TCanvas("accTimesEffPlotEB", "acc x eff, barrel electron + muon", 100, 100, 600, 600); TPad *accTimesEffPadEB = (TPad*)accTimesEffPad->Clone("accTimesEffPadEB"); accTimesEffPadEB->Draw(); accTimesEffPadEB->cd(); hAccTimesEffEB->GetYaxis()->SetTitle("acc x eff"); hAccTimesEffEB->GetYaxis()->SetRangeUser(0., 1.); hAccTimesEffEB->Draw(); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); //tex->DrawLatex(0.46, 0.21, "P(M|p0,p1,p2) = p0 + #frac{p1}{M+p2}"); tex->DrawLatex(0.22, 0.21, "P(M|p0,p1,p2,p3) = p0 + #frac{p1}{M+p2} + p3*M"); tex->DrawLatex(0.17, 0.85, "trg + barrel electron + muon"); TCanvas *accTimesEffPlotEE = new TCanvas("accTimesEffPlotEE", "acc x eff, endcap electron + muon", 100, 100, 600, 600); TPad *accTimesEffPadEE = (TPad*)accTimesEffPad->Clone("accTimesEffPadEE"); accTimesEffPadEE->Draw(); accTimesEffPadEE->cd(); hAccTimesEffEE->GetYaxis()->SetTitle("acc x eff"); hAccTimesEffEE->GetYaxis()->SetRangeUser(0., 1.); hAccTimesEffEE->Draw(); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); tex->DrawLatex(0.45, 0.38, "P(M|p0,p1,p2) = p0 + #frac{p1}{M^{2}+p2}"); tex->DrawLatex(0.17, 0.85, "trg + endcap electron + muon"); TCanvas *accTimesEffObjPlot = new TCanvas("accTimesEffObjPlot", "acc x eff, objects", 100, 100, 600, 600); TPad *accTimesEffObjPad = (TPad*)accTimesEffPad->Clone("accTimesEffObjPad"); accTimesEffObjPad->Draw(); accTimesEffObjPad->cd(); hAccTimesEffEle->GetYaxis()->SetTitle("acc x eff"); hAccTimesEffEle->GetYaxis()->SetRangeUser(0., 1.); hAccTimesEffEle->SetMarkerStyle(kFullSquare); hAccTimesEffEle->SetMarkerColor(kViolet); hAccTimesEffEle->SetLineColor(kViolet); hAccTimesEffEle->Draw(); hAccTimesEffEleEB->SetMarkerStyle(kFullTriangleUp); hAccTimesEffEleEB->SetMarkerColor(kRed); hAccTimesEffEleEB->SetLineColor(kRed); hAccTimesEffEleEB->Draw("same"); hAccTimesEffEleEE->SetMarkerStyle(kFullTriangleDown); hAccTimesEffEleEE->SetMarkerColor(kBlue); hAccTimesEffEleEE->SetLineColor(kBlue); hAccTimesEffEleEE->Draw("same"); hAccTimesEffMu->SetMarkerStyle(34); hAccTimesEffMu->SetMarkerColor(kGreen+1); hAccTimesEffMu->SetLineColor(kGreen+1); hAccTimesEffMu->Draw("same"); hAccTimesEff2->Draw("same"); TLegend* legend = new TLegend(0.592, 0.279, 0.881, 0.467); legend->SetTextFont(font); legend->SetTextSize(0.03); legend->SetBorderSize(0); legend->SetLineColor(1); legend->SetLineStyle(1); legend->SetLineWidth(1); legend->SetFillColor(19); legend->SetFillStyle(0); legend->AddEntry(hAccTimesEff, "total acc x eff"); legend->AddEntry(hAccTimesEffMu, "muons"); legend->AddEntry(hAccTimesEffEle, "all electrons"); legend->AddEntry(hAccTimesEffEleEB, "barrel electrons"); legend->AddEntry(hAccTimesEffEleEE, "endcap electrons"); legend->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); tex->DrawLatex(0.17, 0.85, "trg: HLT_Mu22_Photon22_CaloIdL"); // acc x eff with no trg applied TCanvas *accTimesEffNoTrgObjPlot = new TCanvas("accTimesEffNoTrgObjPlot", "acc x eff, no trigger, objects", 100, 100, 600, 600); TPad *accTimesEffNoTrgObjPad = (TPad*)accTimesEffPad->Clone("accTimesEffNoTrgObjPad"); accTimesEffNoTrgObjPad->Draw(); accTimesEffNoTrgObjPad->cd(); hAccTimesEffNoTrgEle->GetYaxis()->SetTitle("acc x eff"); hAccTimesEffNoTrgEle->GetYaxis()->SetRangeUser(0., 1.); hAccTimesEffNoTrgEle->SetMarkerStyle(kFullSquare); hAccTimesEffNoTrgEle->SetMarkerColor(kViolet); hAccTimesEffNoTrgEle->SetLineColor(kViolet); hAccTimesEffNoTrgEle->Draw(); hAccTimesEffNoTrgEleEB->SetMarkerStyle(kFullTriangleUp); hAccTimesEffNoTrgEleEB->SetMarkerColor(kRed); hAccTimesEffNoTrgEleEB->SetLineColor(kRed); hAccTimesEffNoTrgEleEB->Draw("same"); hAccTimesEffNoTrgEleEE->SetMarkerStyle(kFullTriangleDown); hAccTimesEffNoTrgEleEE->SetMarkerColor(kBlue); hAccTimesEffNoTrgEleEE->SetLineColor(kBlue); hAccTimesEffNoTrgEleEE->Draw("same"); hAccTimesEffNoTrgMu->SetMarkerStyle(34); hAccTimesEffNoTrgMu->SetMarkerColor(kGreen+1); hAccTimesEffNoTrgMu->SetLineColor(kGreen+1); hAccTimesEffNoTrgMu->Draw("same"); hAccTimesEffNoTrg->Draw("same"); TLegend* accXeffNoTrg = (TLegend*)legend->Clone("effAftTrgLegend"); accXeffNoTrg->Clear(); accXeffNoTrg->AddEntry(hAccTimesEffNoTrg, "total acc x eff"); accXeffNoTrg->AddEntry(hAccTimesEffNoTrgMu, "muons"); accXeffNoTrg->AddEntry(hAccTimesEffNoTrgEle, "all electrons"); accXeffNoTrg->AddEntry(hAccTimesEffNoTrgEleEB, "barrel electrons"); accXeffNoTrg->AddEntry(hAccTimesEffNoTrgEleEE, "endcap electrons"); accXeffNoTrg->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); tex->DrawLatex(0.17, 0.85, "trg: none"); // efficiency on triggered events TCanvas *effAftTrgPlot = new TCanvas("effAftTrgPlot", "efficiency after trigger", 100, 100, 600, 600); TPad *effAftTrgPad = (TPad*)accTimesEffPad->Clone("effAftTrgPad"); effAftTrgPad->Draw(); effAftTrgPad->cd(); hEffAftTrgEle->GetYaxis()->SetTitle("eff"); hEffAftTrgEle->GetYaxis()->SetRangeUser(0., 1.); hEffAftTrgEle->SetMarkerStyle(kFullSquare); hEffAftTrgEle->SetMarkerColor(kViolet); hEffAftTrgEle->SetLineColor(kViolet); hEffAftTrgEle->Draw(); hEffAftTrgEleEB->SetMarkerStyle(kFullTriangleUp); hEffAftTrgEleEB->SetMarkerColor(kRed); hEffAftTrgEleEB->SetLineColor(kRed); hEffAftTrgEleEB->Draw("same"); hEffAftTrgEleEE->SetMarkerStyle(kFullTriangleDown); hEffAftTrgEleEE->SetMarkerColor(kBlue); hEffAftTrgEleEE->SetLineColor(kBlue); hEffAftTrgEleEE->Draw("same"); hEffAftTrgMu->SetMarkerStyle(34); hEffAftTrgMu->SetMarkerColor(kGreen+1); hEffAftTrgMu->SetLineColor(kGreen+1); hEffAftTrgMu->Draw("same"); hEffAftTrg->Draw("same"); TLegend* effAftTrgLegend = (TLegend*)legend->Clone("effAftTrgLegend"); effAftTrgLegend->Clear(); effAftTrgLegend->AddEntry(hEffAftTrg, "total eff after trigger"); effAftTrgLegend->AddEntry(hEffAftTrgMu, "muons"); effAftTrgLegend->AddEntry(hEffAftTrgEle, "all electrons"); effAftTrgLegend->AddEntry(hEffAftTrgEleEB, "barrel electrons"); effAftTrgLegend->AddEntry(hEffAftTrgEleEE, "endcap electrons"); effAftTrgLegend->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); tex->DrawLatex(0.14, 0.15, "trg: HLT_Mu22_Photon22_CaloIdL"); // acceptance TCanvas *accPlot = new TCanvas("accPlot", "acc", 100, 100, 600, 600); TPad *accPad = (TPad*)accTimesEffPad->Clone("accPad"); accPad->Draw(); accPad->cd(); hAcc->GetYaxis()->SetTitle("acc"); hAcc->GetYaxis()->SetRangeUser(0., 1.); hAccEle->SetMarkerStyle(kFullSquare); hAccEle->SetMarkerColor(kViolet); hAccEle->SetLineColor(kViolet); hAccEle->Draw(); hAccEleEB->SetMarkerStyle(kFullTriangleUp); hAccEleEB->SetMarkerColor(kRed); hAccEleEB->SetLineColor(kRed); hAccEleEB->Draw("same"); hAccEleEE->SetMarkerStyle(kFullTriangleDown); hAccEleEE->SetMarkerColor(kBlue); hAccEleEE->SetLineColor(kBlue); hAccEleEE->Draw("same"); hAccMu->SetMarkerStyle(34); hAccMu->SetMarkerColor(kGreen+1); hAccMu->SetLineColor(kGreen+1); hAccMu->Draw("same"); hAcc->Draw("same"); TLegend* accLegend = (TLegend*)legend->Clone("accLegend"); accLegend->Clear(); accLegend->AddEntry(hAcc, "total acceptance"); accLegend->AddEntry(hAccMu, "muons"); accLegend->AddEntry(hAccEle, "all electrons"); accLegend->AddEntry(hAccEleEB, "barrel electrons"); accLegend->AddEntry(hAccEleEE, "endcap electrons"); accLegend->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); // reco with trg vs. reco TCanvas *trgRecoVsRecoPlot = new TCanvas("trgRecoVsRecoPlot", "reco with trg vs. reco", 100, 100, 600, 600); TPad *trgRecoVsRecoPad = (TPad*)accTimesEffPad->Clone("trgRecoVsRecoPad"); trgRecoVsRecoPad->Draw(); trgRecoVsRecoPad->cd(); hTrgRecoVsRecoEle->GetYaxis()->SetTitle("eff"); hTrgRecoVsRecoEle->GetYaxis()->SetRangeUser(0., 1.); hTrgRecoVsRecoEle->SetMarkerStyle(kFullSquare); hTrgRecoVsRecoEle->SetMarkerColor(kViolet); hTrgRecoVsRecoEle->SetLineColor(kViolet); hTrgRecoVsRecoEle->Draw(); //hTrgRecoVsRecoEleEB->SetMarkerStyle(kFullTriangleUp); //hTrgRecoVsRecoEleEB->SetMarkerColor(kRed); //hTrgRecoVsRecoEleEB->SetLineColor(kRed); //hTrgRecoVsRecoEleEB->Draw("same"); //hTrgRecoVsRecoEleEE->SetMarkerStyle(kFullTriangleDown); //hTrgRecoVsRecoEleEE->SetMarkerColor(kBlue); //hTrgRecoVsRecoEleEE->SetLineColor(kBlue); //hTrgRecoVsRecoEleEE->Draw("same"); hTrgRecoVsRecoMu->SetMarkerStyle(34); hTrgRecoVsRecoMu->SetMarkerColor(kGreen+1); hTrgRecoVsRecoMu->SetLineColor(kGreen+1); hTrgRecoVsRecoMu->Draw("same"); hTrgRecoVsReco->Draw("same"); TLegend* trgRecoVsRecoLegend = (TLegend*)legend->Clone("trgRecoVsRecoLegend"); trgRecoVsRecoLegend->Clear(); trgRecoVsRecoLegend->AddEntry(hTrgRecoVsReco, "total"); trgRecoVsRecoLegend->AddEntry(hTrgRecoVsRecoMu, "muons"); trgRecoVsRecoLegend->AddEntry(hTrgRecoVsRecoEle, "electrons"); //trgRecoVsRecoLegend->AddEntry(hTrgRecoVsRecoEleEB, "barrel electrons"); //trgRecoVsRecoLegend->AddEntry(hTrgRecoVsRecoEleEE, "endcap electrons"); trgRecoVsRecoLegend->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); TCanvas *accTimesTrgEffPlot = new TCanvas("accTimesTrgEffPlot", "acc x trigger eff", 100, 100, 600, 600); TPad *accTimesTrgEffPad = (TPad*)accTimesEffPad->Clone("accTimesTrgEffPad"); accTimesTrgEffPad->Draw(); accTimesTrgEffPad->cd(); hAccTimesTrgEff->GetYaxis()->SetTitle("acc x trg eff"); hAccTimesTrgEff->GetYaxis()->SetRangeUser(0., 1.); hAccTimesTrgEff->SetMarkerStyle(20); hAccTimesTrgEff->SetMarkerColor(kCyan); hAccTimesTrgEff->SetLineColor(kCyan); hAccTimesTrgEff->Draw(); hTrgEff->SetMarkerStyle(21); hTrgEff->SetMarkerColor(kMagenta); hTrgEff->SetLineColor(kMagenta); hTrgEff->Draw("same"); TLegend* trgLegend = (TLegend*)legend->Clone("trgLegend"); trgLegend->Clear(); trgLegend->AddEntry(hTrgEff, "trigger eff in acc"); trgLegend->AddEntry(hAccTimesTrgEff, "acc x trigger eff"); trgLegend->Draw("same"); tex->DrawLatex(0.109, 0.935, "CMS Simulation, 8 TeV"); // safe in various file formats if (saveSpec) { if (saveAsPdf) { accTimesTrgEffPlot->Print(plotDir + accTimesTrgEffPlot->GetName() + ".pdf", "pdf"); accTimesEffPlot->Print(plotDir + accTimesEffPlot->GetName() + ".pdf", "pdf"); accTimesEffPlotEB->Print(plotDir + accTimesEffPlotEB->GetName() + ".pdf", "pdf"); accTimesEffPlotEE->Print(plotDir + accTimesEffPlotEE->GetName() + ".pdf", "pdf"); accTimesEffObjPlot->Print(plotDir + accTimesEffObjPlot->GetName() + ".pdf", "pdf"); accTimesEffNoTrgObjPlot->Print(plotDir + accTimesEffNoTrgObjPlot->GetName() + ".pdf", "pdf"); effAftTrgPlot->Print(plotDir + effAftTrgPlot->GetName() + ".pdf", "pdf"); trgRecoVsRecoPlot->Print(plotDir + trgRecoVsRecoPlot->GetName() + ".pdf", "pdf"); accPlot->Print(plotDir + accPlot->GetName() + ".pdf", "pdf"); } if (saveAsPng) { accTimesTrgEffPlot->Print(plotDir + accTimesTrgEffPlot->GetName() + ".png", "png"); accTimesEffPlot->Print(plotDir + accTimesEffPlot->GetName() + ".png", "png"); accTimesEffPlotEB->Print(plotDir + accTimesEffPlotEB->GetName() + ".png", "png"); accTimesEffPlotEE->Print(plotDir + accTimesEffPlotEE->GetName() + ".png", "png"); accTimesEffObjPlot->Print(plotDir + accTimesEffObjPlot->GetName() + ".png", "png"); accTimesEffNoTrgObjPlot->Print(plotDir + accTimesEffNoTrgObjPlot->GetName() + ".png", "png"); effAftTrgPlot->Print(plotDir + effAftTrgPlot->GetName() + ".png", "png"); trgRecoVsRecoPlot->Print(plotDir + trgRecoVsRecoPlot->GetName() + ".png", "png"); accPlot->Print(plotDir + accPlot->GetName() + ".png", "png"); } if (saveAsRoot) { accTimesTrgEffPlot->Print(plotDir + accTimesTrgEffPlot->GetName() + ".root", "root"); accTimesEffPlot->Print(plotDir + accTimesEffPlot->GetName() + ".root", "root"); accTimesEffPlotEB->Print(plotDir + accTimesEffPlotEB->GetName() + ".root", "root"); accTimesEffPlotEE->Print(plotDir + accTimesEffPlotEE->GetName() + ".root", "root"); accTimesEffObjPlot->Print(plotDir + accTimesEffObjPlot->GetName() + ".root", "root"); accTimesEffNoTrgObjPlot->Print(plotDir + accTimesEffNoTrgObjPlot->GetName() + ".root", "root"); effAftTrgPlot->Print(plotDir + effAftTrgPlot->GetName() + ".root", "root"); trgRecoVsRecoPlot->Print(plotDir + trgRecoVsRecoPlot->GetName() + ".root", "root"); accPlot->Print(plotDir + accPlot->GetName() + ".root", "root"); } } // write histos to file output->cd(); hGenEvts->Write(); hGenEvtsEleInAcc->Write(); hGenEvtsEleInAccEB->Write(); hGenEvtsEleInAccEE->Write(); hGenEvtsMuInAcc->Write(); hGenEvtsInAcc->Write(); hTrgEvts->Write(); hRecoEvts->Write(); hRecoEvtsEB->Write(); hRecoEvtsEE->Write(); hRecoEleEvts->Write(); hRecoEleEvtsEB->Write(); hRecoEleEvtsEE->Write(); hRecoMuEvts->Write(); hAccEle->Write(); hAccEleEB->Write(); hAccEleEE->Write(); hAccMu->Write(); hAccTimesTrgEff->Write(); hTrgEff->Write(); hAccTimesEff->Write(); hAccTimesEffEB->Write(); hAccTimesEffEE->Write(); hAccTimesEffEle->Write(); hAccTimesEffEleEB->Write(); hAccTimesEffEleEE->Write(); hAccTimesEffMu->Write(); hEffAftTrg->Write(); hEffAftTrgEle->Write(); hEffAftTrgEleEB->Write(); hEffAftTrgEleEE->Write(); hEffAftTrgMu->Write(); fitFunc->Write(); fitFuncEB->Write(); fitFuncEE->Write(); output->Close(); timer.Stop(); timer.Print(); }
void trisCheckCorrection_unbinnedfit(Char_t* EBEE = 0, Int_t evtsPerPoint = 0, float laserCorrMin = -1., float laserCorrMax = -1.) { // Set style options gROOT->Reset(); gROOT->SetStyle("Plain"); gStyle->SetPadTickX(1); gStyle->SetPadTickY(1); gStyle->SetOptTitle(0); gStyle->SetOptStat(1110); gStyle->SetOptFit(1); // Check qualifiers if ( strcmp(EBEE,"EB")!=0 && strcmp(EBEE,"EE")!=0 ) { std::cout << "CHK-STB Error: unknown partition " << EBEE << std::endl; std::cout << "CHK-STB Select either EB or EE ! " << std::endl; return; } if ( strcmp(EBEE,"EB") == 0 ) { lcMin = 0.99; lcMax = 1.05; } else { lcMin = 0.99; lcMax = 1.11; } if( (laserCorrMin != -1.) && (laserCorrMax != -1.) ) { lcMin = laserCorrMin; lcMax = laserCorrMax; } // Get trees std::cout << std::endl; TChain* ntu_DA = new TChain("ntu"); FillChain(ntu_DA,"inputDATA.txt"); std::cout << " DATA: " << std::setw(8) << ntu_DA->GetEntries() << " entries" << std::endl; TChain* ntu_MC = new TChain("ntu"); FillChain(ntu_MC,"inputMC.txt"); std::cout << "REFERENCE: " << std::setw(8) << ntu_MC->GetEntries() << " entries" << std::endl; if (ntu_DA->GetEntries() == 0 || ntu_MC->GetEntries() == 0 ) { std::cout << "CHK-STB Error: At least one file is empty" << std::endl; return; } // Set branch addresses int runId; int isW, isZ; int timeStampHigh; float seedLaserAlpha; float avgLaserCorrection, scCrackCorrection; float EoP; float scE, scERaw, scEta, scEtaWidth, scPhiWidth; int seedIeta,seedIphi; int seedIx,seedIy,seedZside; float esE; float seedLaserCorrection; int iPhi,iEta; ntu_DA->SetBranchAddress("runId", &runId); ntu_DA->SetBranchAddress("isW", &isW); //ntu_DA->SetBranchAddress("isZ", &isZ); ntu_DA->SetBranchAddress("timeStampHigh", &timeStampHigh); ntu_DA->SetBranchAddress("ele1_scCrackCorr", &scCrackCorrection); ntu_DA->SetBranchAddress("ele1_scLaserCorr", &avgLaserCorrection); ntu_DA->SetBranchAddress("ele1_seedLaserCorr", &seedLaserCorrection); ntu_DA->SetBranchAddress("ele1_seedLaserAlpha", &seedLaserAlpha); ntu_DA->SetBranchAddress("ele1_es", &esE); ntu_DA->SetBranchAddress("ele1_scE", &scE); ntu_DA->SetBranchAddress("ele1_scERaw", &scERaw); ntu_DA->SetBranchAddress("ele1_scEta", &scEta); ntu_DA->SetBranchAddress("ele1_scEtaWidth", &scEtaWidth); ntu_DA->SetBranchAddress("ele1_scPhiWidth", &scPhiWidth); ntu_DA->SetBranchAddress("ele1_EOverP", &EoP); ntu_DA->SetBranchAddress("ele1_seedIphi", &iPhi); ntu_DA->SetBranchAddress("ele1_seedIeta", &iEta); ntu_DA->SetBranchAddress("ele1_seedIeta", &seedIeta); ntu_DA->SetBranchAddress("ele1_seedIphi", &seedIphi); ntu_DA->SetBranchAddress("ele1_seedIx", &seedIx); ntu_DA->SetBranchAddress("ele1_seedIy", &seedIy); ntu_DA->SetBranchAddress("ele1_seedZside", &seedZside); ntu_MC->SetBranchAddress("isW", &isW); ntu_MC->SetBranchAddress("isZ", &isZ); ntu_MC->SetBranchAddress("ele1_scEta", &scEta); ntu_MC->SetBranchAddress("ele1_EOverP", &EoP); float params[42]; InitializeParams(params); // Build the reference from 'infile2' std::cout << std::endl; std::cout << "***** Build reference for " << EBEE << " *****" << std::endl; templateHisto = new TH1F("templateHisto", "", 1200, 0., 5.); for(int ientry = 0; ientry < ntu_MC->GetEntries(); ++ientry) { if( (ientry%100000 == 0) ) std::cout << "reading MC entry " << ientry << std::endl; ntu_MC->GetEntry(ientry); if (strcmp(EBEE,"EB")==0 && fabs(scEta) > 1.4442) continue; // barrel if (strcmp(EBEE,"EE")==0 && (fabs(scEta) < 1.56 || fabs(scEta) > 2.5 )) continue; // endcap //if( seedLaserAlpha > 1.5 ) continue; //if( fabs(scEta) > 0.44 ) continue; //if( fabs(scEta) < 0.44 || fabs(scEta) > 0.77 ) continue; //if( fabs(scEta) < 0.77 || fabs(scEta) > 1.10 ) continue; //if( fabs(scEta) < 1.10 || fabs(scEta) > 1.56 ) continue; //if( fabs(scEta) < 1.56 || fabs(scEta) > 2.00 ) continue; //if( fabs(scEta) < 2.00 ) continue; templateHisto -> Fill(EoP); } int rebin = 4; if (strcmp(EBEE,"EB")==0) rebin = 2; templateHisto -> Rebin(rebin); FitTemplate(); std::cout << "Reference built for " << EBEE << " - " << templateHisto->GetEntries() << " events" << std::endl; // Loop and sort events std::cout << std::endl; std::cout << "***** Sort events and define bins *****" << std::endl; int nEntries = ntu_DA -> GetEntriesFast(); int nSavePts = 0; std::vector<bool> isSavedEntries(nEntries); std::vector<SorterLC> sortedEntries; for(int ientry = 0; ientry < nEntries; ++ientry) { ntu_DA -> GetEntry(ientry); isSavedEntries.at(ientry) = false; // save only what is needed for the analysis!!! if (strcmp(EBEE,"EB")==0 && fabs(scEta) > 1.4442) continue; // barrel if (strcmp(EBEE,"EE")==0 && (fabs(scEta) < 1.56 || fabs(scEta) > 2.5 )) continue; // endcap //if( fabs(scEta) > 0.44 ) continue; //if( fabs(scEta) < 0.44 || fabs(scEta) > 0.77 ) continue; //if( fabs(scEta) < 0.77 || fabs(scEta) > 1.10 ) continue; //if( fabs(scEta) < 1.10 || fabs(scEta) > 1.56 ) continue; //if( fabs(scEta) < 1.56 || fabs(scEta) > 2.00 ) continue; //if( fabs(scEta) < 2.00 ) continue; if( seedLaserCorrection <= 1.) continue; if( seedLaserAlpha < 1.5 ) continue; //if( timeStampHigh > 1303862400 ) continue; if( seedZside < 0 ) if( (seedIx > 20 ) && (seedIx < 50) && (seedIy > 85) && (seedIy < 92) ) continue; if( seedZside == -1 ) if( (seedIx > 35 ) && (seedIx < 55) && (seedIy > 80) && (seedIy < 87) ) continue; if( seedZside > 0 ) if( (seedIx > 65 ) && (seedIx < 77) && (seedIy > 33) && (seedIy < 57) ) continue; if( seedZside > 0 ) if( (seedIx > 75 ) && (seedIx < 93) && (seedIy > 18) && (seedIy < 37) ) continue; //if ( runId < 163045 ) continue; //if ( runId >= 163232 ) continue; //if ( runId < 163232 ) continue; //*********************** CLUSTER CORR ***************************** //if( (ientry%1 == 0) ) std::cout << "\n\n\nreading entry " << ientry << std::endl; //Ediff -> Fill( ( (scCrackCorrection*fClusterCorrections(scERaw+esE,scEta,scPhiWidth/scEtaWidth,params))-scE)/scE ); //Ediff_vsEta -> Fill( scEta, ( (esE+scCrackCorrection*fClusterCorrections(scERaw,scEta,scPhiWidth/scEtaWidth,params))-scE)/scE ); //if( fabs(fClusterCorrections(scERaw,scEta,scPhiWidth/scEtaWidth,params)-scE) > 0.001 ) //{ // std::cout << "\n\n" << std::endl; // std::cout << "scEta = " << scEta << " scE = " << scE << " scERaw = " << scERaw << std::endl; // std::cout << "scERaw_corr = " << fClusterCorrections(scERaw,scEta,scPhiWidth/scEtaWidth,params) << std::endl; //} //*********************** CLUSTER CORR ***************************** isSavedEntries.at(ientry) = true; SorterLC dummy; dummy.laserCorr = avgLaserCorrection; dummy.entry = ientry; sortedEntries.push_back(dummy); nSavePts++; } std::sort(sortedEntries.begin(),sortedEntries.end(),SorterLC()); std::cout << "Data sorted in " << EBEE << " - " << nSavePts << " events" << std::endl; //TCanvas* c_diff = new TCanvas("c_diff","c_diff"); //c_diff -> cd(); //Ediff -> Draw(); // //TCanvas* c_diff_vsEta = new TCanvas("c_diff_vsEta","c_diff"); //c_diff_vsEta -> cd(); //Ediff_vsEta -> Draw("colz"); // bins with evtsPerPoint events per bin int nBins = std::max(1,int(nSavePts/evtsPerPoint)); int nBinPts = int( nSavePts/nBins ); int nBinTempPts = 0; std::vector<int> binEntryMax; binEntryMax.push_back(0); for(int iSaved = 0; iSaved < nSavePts; ++iSaved) { ++nBinTempPts; if( nBinTempPts == nBinPts ) { binEntryMax.push_back( iSaved ); nBinTempPts = 0; } } binEntryMax.at(nBins) = nSavePts; std::cout << "nBins = " << nBins << std::endl; for(int bin = 0; bin < nBins; ++bin) std::cout << "bin: " << bin << " entry min: " << setw(6) << binEntryMax.at(bin) << " entry max: " << setw(6) << binEntryMax.at(bin+1) << " events: " << setw(6) << binEntryMax.at(bin+1)-binEntryMax.at(bin) << std::endl; TVirtualFitter::SetDefaultFitter("Fumili2"); // histogram definition TH1F* h_EoP_spread; TH1F* h_EoC_spread; TH2F* h_LC_map = new TH2F("h_LC_map","",360,0.,360,170,-85,85); if ( strcmp(EBEE,"EB")==0 ) { h_EoP_spread = new TH1F("h_EoP_spread","",100,0.95,1.01); h_EoC_spread = new TH1F("h_EoC_spread","",100,0.95,1.01); } else { h_EoP_spread = new TH1F("h_EoP_spread","",100,0.91,1.03); h_EoC_spread = new TH1F("h_EoC_spread","",100,0.91,1.03); } h_EoP_spread -> SetLineColor(kRed+2); h_EoP_spread -> SetLineWidth(2); h_EoP_spread -> GetXaxis() -> SetTitle("Relative E/p scale"); h_EoC_spread -> SetLineColor(kGreen+2); h_EoC_spread -> SetLineWidth(2); h_EoC_spread -> GetXaxis() -> SetTitle("Relative E/p scale"); TH1F** h_EoP = new TH1F*[nBins]; TH1F** h_EoC = new TH1F*[nBins]; TH1F** h_Las = new TH1F*[nBins]; for(int i = 0; i < nBins; ++i) { char histoName[80]; sprintf(histoName, "EoP_%d", i); h_EoP[i] = new TH1F(histoName, histoName, 1200, 0., 3.); h_EoP[i] -> SetFillColor(kRed+2); h_EoP[i] -> SetFillStyle(3004); h_EoP[i] -> SetMarkerStyle(7); h_EoP[i] -> SetMarkerColor(kRed+2); h_EoP[i] -> SetLineColor(kRed+2); sprintf(histoName, "EoC_%d", i); h_EoC[i] = new TH1F(histoName, histoName, 1200, 0., 3.); h_EoC[i] -> SetFillColor(kGreen+2); h_EoC[i] -> SetFillStyle(3004); h_EoC[i] -> SetMarkerStyle(7); h_EoC[i] -> SetMarkerColor(kGreen+2); h_EoC[i] -> SetLineColor(kGreen+2); sprintf(histoName, "Las_%d", i); h_Las[i] = new TH1F(histoName, histoName, 100, 0.5, 1.5); } // data definition std::vector< std::vector<double>* > dataEoP; std::vector< std::vector<double>* > dataEoC; for (int jbin = 0; jbin< nBins; jbin++){ dataEoP.push_back(new std::vector<double>); dataEoC.push_back(new std::vector<double>); } // function definition TF1** f_EoP = new TF1*[nBins]; TF1** f_EoC = new TF1*[nBins]; // loop on the saved and sorted events std::cout << std::endl; std::cout << "***** Fill and fit histograms *****" << std::endl; for(int ientry = 0; ientry < nEntries; ++ientry) { if( (ientry%10000 == 0) ) std::cout << "reading entry " << ientry << std::endl; if( isSavedEntries.at(ientry) == false ) continue; int iSaved = -1; for(iSaved = 0; iSaved < nSavePts; ++iSaved) if( ientry == sortedEntries[iSaved].entry ) break; int bin = -1; for(bin = 0; bin < nBins; ++bin) if( iSaved >= binEntryMax.at(bin) && iSaved < binEntryMax.at(bin+1) ) break; //std::cout << "ientry = " << ientry << " iSaved: " << iSaved << " bin: " << bin << std::endl; ntu_DA->GetEntry(ientry); float scale = 1.; //scale = sqrt( pow(avgLaserCorrection,((1.52-0.7843)/1.52)-1.) ); //scale = 1. / (0.1811 + 0.7843*avgLaserCorrection); //// fill the bins (h_Las[bin]) -> Fill(avgLaserCorrection); (h_EoP[bin]) -> Fill(EoP/avgLaserCorrection); (h_EoC[bin]) -> Fill(EoP * scale); h_LC_map->Fill(iPhi,iEta,seedLaserCorrection); // fill te vectors data E/p dataEoP[bin]->push_back(EoP/avgLaserCorrection); dataEoC[bin]->push_back(EoP); } // Define graph and histograms TGraphAsymmErrors* g_fit = new TGraphAsymmErrors(); TGraphAsymmErrors* g_c_fit = new TGraphAsymmErrors(); // define the fitting function // N.B. [0] * ( [1] * f( [1]*(x-[2]) ) ) histoFunc* templateHistoFunc = new histoFunc(templateHisto); //templateFunc = new TF1("templateFunc", templateHistoFunc, 0., 5., 3, "histoFunc"); //templateFunc -> SetParName(0,"Norm"); //templateFunc -> SetParName(1,"Scale factor"); //templateFunc -> SetLineWidth(1); //templateFunc -> SetNpx(10000); //templateFunc -> SetParameter(0, 1 ); //templateFunc -> SetParameter(1, 1); //templateFunc -> FixParameter(2, 0.); //templateFunc -> FixParameter(0, 1./templateFunc ->Integral(0.,5.) ); // normalized to 1. BUT will be renormalized to 1 at each iteration! TFitterMinuit* myfit = new TFitterMinuit(1); myfit->SetFCN(mylike); myfit->SetPrintLevel(-1); for(int i = 0; i < nBins; ++i) { h_EoP[i] -> Rebin(rebin*4); h_EoC[i] -> Rebin(rebin*4); //------------------------------------ // Fill the graph for uncorrected data // fit uncorrected data mydata = dataEoP.at(i); myfit->Clear(); myfit->SetParameter(0, "scale", 1.,0.0005,0.50,1.50); double arglist[2]; arglist[0] = 10000; // Max number of function calls arglist[1] = 1e-5; // Tolerance on likelihood ????????? int fStatus = myfit->ExecuteCommand("MIGRAD",arglist,2); double amin,edm,errdef; int nvpar,nparx; myfit->GetStats(amin, edm, errdef, nvpar, nparx); double bestScale = myfit->GetParameter(0); double eee = myfit->GetParError(0); char funcName[50]; sprintf(funcName,"f_EoP_%d",i); f_EoP[i] = (TF1*)(templateFunc->Clone()); f_EoP[i] -> SetParameter(0,h_EoP[i]->GetEntries()); f_EoP[i] -> SetParameter(7,1.5); f_EoP[i] -> SetParName(0,"Norm"); f_EoP[i] -> SetParName(1,"Scale factor"); f_EoP[i] -> SetLineWidth(1); f_EoP[i] -> SetNpx(10000); double xNorm = h_EoP[i]->GetEntries()/templateHisto->GetEntries() * h_EoP[i]->GetBinWidth(1)/templateHisto->GetBinWidth(1); //f_EoP[i] -> FixParameter(0, xNorm); //f_EoP[i] -> SetParameter(1, bestScale); //f_EoP[i] -> FixParameter(2, 0.); f_EoP[i] -> SetLineColor(kRed+2); // Fill the graph if( fStatus == 0 && eee > 0. ) { g_fit -> SetPoint(i, h_Las[i]->GetMean() , 1./bestScale); g_fit -> SetPointError(i, h_Las[i]->GetRMS(), h_Las[i]->GetRMS(), eee, eee); h_EoP_spread -> Fill(1./bestScale); } else std::cout << "Fitting uncorrected time bin: " << i << " Fail status: " << fStatus << " sigma: " << eee << endl; //---------------------------------- // Fill the graph for corrected data // fit uncorrected data mydata = dataEoC.at(i); myfit->Clear(); myfit->SetParameter(0, "scale", 1.,0.0005,0.50,1.50); arglist[0] = 10000; // Max number of function calls arglist[1] = 1e-5; // Tolerance on likelihood ????????? fStatus = myfit->ExecuteCommand("MIGRAD",arglist,2); myfit->GetStats(amin, edm, errdef, nvpar, nparx); bestScale = myfit->GetParameter(0); eee = myfit->GetParError(0); sprintf(funcName,"f_EoC_%d",i); f_EoC[i] = (TF1*)(templateFunc->Clone()); f_EoC[i] -> SetParameter(0,h_EoC[i]->GetEntries()); f_EoC[i] -> SetParameter(7,bestScale); f_EoC[i] -> SetParName(0,"Norm"); f_EoC[i] -> SetParName(1,"Scale factor"); f_EoC[i] -> SetLineWidth(1); f_EoC[i] -> SetNpx(10000); xNorm = h_EoC[i]->GetEntries()/templateHisto->GetEntries() * h_EoC[i]->GetBinWidth(1)/templateHisto->GetBinWidth(1); // //f_EoC[i] -> SetParameter(1, bestScale); //f_EoC[i] -> FixParameter(2, 0.); f_EoC[i] -> SetLineColor(kGreen+2); // fill the graph if( fStatus == 0 && eee > 0. ) { g_c_fit -> SetPoint(i, h_Las[i]->GetMean() , 1./bestScale); g_c_fit -> SetPointError(i, h_Las[i]->GetRMS() , h_Las[i]->GetRMS() , eee, eee); h_EoC_spread -> Fill(1./bestScale); } else std::cout << "Fitting corrected time bin: " << i << " Fail status: " << fStatus << " sigma: " << eee << endl; } TF1* pol0 = new TF1("pol0","pol0"); pol0 -> SetLineColor(kGreen+2); pol0 -> SetLineWidth(3); pol0 -> SetLineStyle(2); g_c_fit -> Fit("pol0","Q+"); // Drawings TPaveStats** s_EoP = new TPaveStats*[nBins]; TPaveStats** s_EoC = new TPaveStats*[nBins]; TCanvas *c1[100]; for(int i = 0; i < nBins; ++i) { char canvasName[50]; if (i%2==0) { sprintf(canvasName, "Fits-%0d", i/2); c1[i/2] = new TCanvas(canvasName, canvasName); c1[i/2] -> Divide(2,1); } c1[i/2] -> cd (i%2+1); h_EoP[i] -> GetXaxis() -> SetTitle("E/p"); h_EoP[i] -> GetXaxis() -> SetRangeUser(0.5,1.5); h_EoP[i] -> Draw("e"); gPad->Update(); s_EoP[i]= (TPaveStats*)(h_EoP[i]->GetListOfFunctions()->FindObject("stats")); s_EoP[i]->SetTextColor(kRed+2); h_EoC[i] -> Draw("esames"); gPad->Update(); s_EoC[i]= (TPaveStats*)(h_EoC[i]->GetListOfFunctions()->FindObject("stats")); s_EoC[i]->SetY1NDC(0.59); //new x start position s_EoC[i]->SetY2NDC(0.79); //new x end position s_EoC[i]->SetTextColor(kGreen+2); s_EoC[i]->Draw(); f_EoP[i]->Draw("same"); f_EoC[i]->Draw("same"); } /* TCanvas *c2[100]; for(int i = 0; i < nBins; ++i) { char canvasName[50]; if (i%6==0) { sprintf(canvasName, "LaserCorr-%0d", i/6); c2[i/6] = new TCanvas(canvasName, canvasName); c2[i/6] -> Divide(3,2); } c2[i/6] -> cd (i%6+1); h_Las[i] -> GetXaxis() -> SetTitle("laser correction"); h_Las[i] -> GetXaxis() -> SetRangeUser(0.5,1.5); h_Las[i] -> Draw(""); gPad->Update(); s_Las[i]= (TPaveStats*)(h_Las[i]->GetListOfFunctions()->FindObject("stats")); s_Las[i]->SetTextColor(kBlack); } */ /* TCanvas *cmap = new TCanvas("cmap","cmap"); cmap->cd(); gStyle->SetPalette(1); h_LC_map->Draw("colz"); */ // Final plots TCanvas* cplot = new TCanvas("gplot", "gplot",100,100,725,500); cplot->cd(); TPad *cLeft = new TPad("pad_0","pad_0",0.00,0.00,0.64,1.00); TPad *cRight = new TPad("pad_1","pad_1",0.64,0.00,1.00,1.00); cLeft->SetLeftMargin(0.15); cLeft->SetRightMargin(0.025); cRight->SetLeftMargin(0.025); cLeft->Draw(); cRight->Draw(); float tYoffset = 1.5; float labSize = 0.04; float labSize2 = 0.07; cLeft->cd(); cLeft->SetGridx(); cLeft->SetGridy(); // pad settings TH1F *hPad = (TH1F*)gPad->DrawFrame(lcMin,0.9,lcMax,1.05); hPad->GetXaxis()->SetTitle("Laser correction"); hPad->GetYaxis()->SetTitle("Relative E/p scale"); hPad->GetYaxis()->SetTitleOffset(tYoffset); hPad->GetXaxis()->SetLabelSize(labSize); hPad->GetXaxis()->SetTitleSize(labSize); hPad->GetYaxis()->SetLabelSize(labSize); hPad->GetYaxis()->SetTitleSize(labSize); if ( strcmp(EBEE,"EB")==0 ) { hPad -> SetMinimum(0.950); hPad -> SetMaximum(1.010); } else { hPad -> SetMinimum(0.910); hPad -> SetMaximum(1.030); } // draw trend plot g_fit -> SetMarkerStyle(20); g_fit -> SetMarkerSize(0.75); g_fit -> SetMarkerColor(kRed+2); g_fit -> SetLineColor(kRed+2); g_fit -> Draw("P"); g_c_fit -> SetMarkerStyle(20); g_c_fit -> SetMarkerColor(kGreen+2); g_c_fit -> SetLineColor(kGreen+2); g_c_fit -> SetMarkerSize(0.75); g_c_fit -> Draw("P,same"); cRight -> cd(); TPaveStats* s_EoP_spread = new TPaveStats(); TPaveStats* s_EoC_spread = new TPaveStats(); h_EoC_spread -> SetFillStyle(3001); h_EoC_spread -> SetFillColor(kGreen+2); h_EoC_spread->GetYaxis()->SetLabelSize(labSize2); h_EoC_spread->GetYaxis()->SetTitleSize(labSize2); h_EoC_spread->GetYaxis()->SetNdivisions(505); h_EoC_spread->GetYaxis()->SetLabelOffset(-0.02); h_EoC_spread->GetXaxis()->SetLabelOffset(1000); h_EoC_spread -> Draw("hbar"); gPad -> Update(); s_EoC_spread = (TPaveStats*)(h_EoC_spread->GetListOfFunctions()->FindObject("stats")); s_EoC_spread ->SetTextColor(kGreen+2); s_EoC_spread ->SetTextSize(0.06); s_EoC_spread->SetX1NDC(0.49); //new x start position s_EoC_spread->SetX2NDC(0.99); //new x end position s_EoC_spread->SetY1NDC(0.875); //new x start position s_EoC_spread->SetY2NDC(0.990); //new x end position s_EoC_spread -> SetOptStat(1100); s_EoC_spread -> Draw("sames"); h_EoP_spread -> SetFillStyle(3001); h_EoP_spread -> SetFillColor(kRed+2); h_EoP_spread -> Draw("hbarsames"); gPad -> Update(); s_EoP_spread = (TPaveStats*)(h_EoP_spread->GetListOfFunctions()->FindObject("stats")); s_EoP_spread->SetX1NDC(0.49); //new x start position s_EoP_spread->SetX2NDC(0.99); //new x end position s_EoP_spread->SetY1NDC(0.750); //new x start position s_EoP_spread->SetY2NDC(0.875); //new x end position s_EoP_spread ->SetOptStat(1100); s_EoP_spread ->SetTextColor(kRed+2); s_EoP_spread ->SetTextSize(0.06); s_EoP_spread -> Draw("sames"); }
void Plot_muons(){ gStyle->SetOptStat(0); gStyle->SetOptDate(0); gStyle->SetOptFit(0111); int ChComb=1;// 0=Same-charge, 1=Mixed-charge int kTbin_L=5, kTbin_H=6; int binKT3=1;//1-2 //TFile *_file0= new TFile("Results/PDC_12a17a_muons_R6.root","READ"); //TFile *_file0= new TFile("Results/PDC_13b2_efix_p1_muons_R2.root","READ"); TFile *_file0= new TFile("Results/PDC_12a17e_muons_R4.root","READ"); TList *MyList=(TList*)_file0->Get("MyList"); _file0->Close(); TH1D *PionCandidates=(TH1D*)MyList->FindObject("fPionCandidates"); PionCandidates->GetXaxis()->SetTitle("PDG code"); //PionCandidates->Draw(); // TH1D *MuonParentsPrimary=(TH1D*)MyList->FindObject("fMuonParents"); MuonParentsPrimary->GetXaxis()->SetTitle("PDG code"); MuonParentsPrimary->SetFillColor(1); //MuonParentsPrimary->Draw(); // TH1D *MuonParentsSecondary=(TH1D*)MyList->FindObject("fSecondaryMuonParents"); MuonParentsSecondary->GetXaxis()->SetTitle("PDG code"); MuonParentsSecondary->SetFillColor(1); //MuonParentsSecondary->Draw(); // // M0 R10-R6, M6 for R4, M17 for R2 TH3D *PurityNum_3D = (TH3D*)MyList->FindObject("Explicit2_Charge1_1_Charge2_1_SC_0_M_6_ED_0_Term_1_PIDpurityNum"); TH2D *PurityDen_2D = (TH2D*)MyList->FindObject("Explicit2_Charge1_1_Charge2_1_SC_0_M_6_ED_0_Term_1_PIDpurityDen"); TH1D *PurityNum=PurityNum_3D->ProjectionX("PurityNum",kTbin_L,kTbin_H,1,20); double PurityNorm=PurityDen_2D->Integral(kTbin_L,kTbin_H,1,20); PurityNum->Scale(1/PurityNorm); char *namesAxis[15]={"e-e","e-mu","e-pi","e-k","e-p","mu-mu","mu-pi","mu-k","mu-p","pi-pi","pi-k","pi-p","k-k","k-p","p-p"}; for(int i=1; i<=15; i++) PurityNum->GetXaxis()->SetBinLabel(i, namesAxis[i-1]); PurityNum->GetXaxis()->SetRange(1,15); PurityNum->GetYaxis()->SetTitle("Probability"); PurityNum->Draw(); // // TCanvas *can = new TCanvas("can", "can",800,0,800,800);// 11,53,700,500 can->SetHighLightColor(2); gStyle->SetOptFit(0111); can->SetFillColor(10);//10 can->SetBorderMode(0); can->SetBorderSize(2); can->SetFrameFillColor(0); can->SetFrameBorderMode(0); can->SetFrameBorderMode(0); can->cd(); TPad *pad = new TPad("pad","pad",0.,0.,1.,1.); gPad->SetTickx(); gPad->SetTicky(); pad->SetGridx(); pad->SetGridy(); pad->SetTopMargin(0.02);//0.05 pad->SetRightMargin(0.02);//3e-2 pad->SetBottomMargin(0.1);//0.12 pad->SetLeftMargin(0.1); pad->Draw(); pad->cd(); TLegend *legend = new TLegend(.5,.65, .9,.95,NULL,"brNDC");//.45 or .4 for x1 legend->SetBorderSize(0); legend->SetFillColor(0); legend->SetTextFont(42); legend->SetTextSize(0.03); // TH3D *MuonSmearedNum2_3=(TH3D*)MyList->FindObject("fMuonContamSmearedNum2"); TH3D *MuonSmearedDen2_3=(TH3D*)MyList->FindObject("fMuonContamSmearedDen2"); TH3D *PionNum2_3=(TH3D*)MyList->FindObject("fMuonContamIdealNum2"); TH3D *PionDen2_3=(TH3D*)MyList->FindObject("fMuonContamIdealDen2"); TH3D *PionPionK2_3=(TH3D*)MyList->FindObject("fPionPionK2"); // TH3D *MuonSmearedNum3_3=(TH3D*)MyList->FindObject("fMuonContamSmearedNum3"); TH3D *MuonSmearedDen3_3=(TH3D*)MyList->FindObject("fMuonContamSmearedDen3"); TH3D *PionNum3_3=(TH3D*)MyList->FindObject("fMuonContamIdealNum3"); TH3D *PionDen3_3=(TH3D*)MyList->FindObject("fMuonContamIdealDen3"); TH3D *PionPionK3_3=(TH3D*)MyList->FindObject("fPionPionK3"); TH3D *MuonPionK3_3=(TH3D*)MyList->FindObject("fMuonPionK3"); TH1D *MuonSmearedNum2[2];// SC/MC TH1D *MuonSmearedDen2[2]; TH1D *PionNum2[2]; TH1D *PionDen2[2]; TH1D *PionPionK2[2]; // TH1D *MuonSmearedNum3[2];// SC/MC TH1D *MuonSmearedDen3[2]; TH1D *PionNum3[2]; TH1D *PionDen3[2]; TH1D *PionPionK3[2]; // TH1D *C2muonSmeared[2]; TH1D *C2pion[2]; TH1D *C3muonSmeared[2]; TH1D *C3pion[2]; // for(int chtype=0; chtype<2; chtype++){ TString *names[10]; for(int i=0; i<10; i++) {names[i]=new TString("name_"); *names[i] += i; *names[i] += chtype;} MuonSmearedNum2[chtype]=(TH1D*)MuonSmearedNum2_3->ProjectionZ(names[0]->Data(),chtype+1,chtype+1,kTbin_L,kTbin_H); MuonSmearedDen2[chtype]=(TH1D*)MuonSmearedDen2_3->ProjectionZ(names[1]->Data(),chtype+1,chtype+1,kTbin_L,kTbin_H); PionNum2[chtype]=(TH1D*)PionNum2_3->ProjectionZ(names[2]->Data(),chtype+1,chtype+1,kTbin_L,kTbin_H); PionDen2[chtype]=(TH1D*)PionDen2_3->ProjectionZ(names[3]->Data(),chtype+1,chtype+1,kTbin_L,kTbin_H); PionPionK2[chtype]=(TH1D*)PionPionK2_3->ProjectionZ(names[4]->Data(),chtype+1,chtype+1,kTbin_L,kTbin_H); PionPionK2[chtype]->Divide(PionDen2[chtype]); //////////////// MuonSmearedNum3[chtype]=(TH1D*)MuonSmearedNum3_3->ProjectionZ(names[5]->Data(),chtype+1,chtype+1,binKT3,binKT3); MuonSmearedDen3[chtype]=(TH1D*)MuonSmearedDen3_3->ProjectionZ(names[6]->Data(),chtype+1,chtype+1,binKT3,binKT3); PionNum3[chtype]=(TH1D*)PionNum3_3->ProjectionZ(names[7]->Data(),chtype+1,chtype+1,binKT3,binKT3); PionDen3[chtype]=(TH1D*)PionDen3_3->ProjectionZ(names[8]->Data(),chtype+1,chtype+1,binKT3,binKT3); PionPionK3[chtype]=(TH1D*)PionPionK3_3->ProjectionZ(names[9]->Data(),chtype+1,chtype+1,binKT3,binKT3); PionPionK3[chtype]->Divide(PionDen3[chtype]); // C2muonSmeared[chtype]=(TH1D*)MuonSmearedNum2[chtype]->Clone(); C2pion[chtype]=(TH1D*)PionNum2[chtype]->Clone(); C2muonSmeared[chtype]->Divide(MuonSmearedDen2[chtype]); C2pion[chtype]->Divide(PionDen2[chtype]); // C3muonSmeared[chtype]=(TH1D*)MuonSmearedNum3[chtype]->Clone(); C3pion[chtype]=(TH1D*)PionNum3[chtype]->Clone(); C3muonSmeared[chtype]->Divide(MuonSmearedDen3[chtype]); C3pion[chtype]->Divide(PionDen3[chtype]); // // C2pion[chtype]->SetLineColor(4); C2muonSmeared[chtype]->SetLineColor(2); C2pion[chtype]->GetXaxis()->SetRangeUser(0,0.15); C2pion[chtype]->SetMinimum(0.98); C2pion[chtype]->SetMaximum(1.35); C2pion[chtype]->GetYaxis()->SetTitleOffset(1.5); C2pion[chtype]->GetXaxis()->SetTitle("q_{inv} (GeV/c)"); C2pion[chtype]->GetYaxis()->SetTitle("C_{2}K_{2}"); // C3pion[chtype]->SetLineColor(4); C3muonSmeared[chtype]->SetLineColor(2); C3pion[chtype]->GetXaxis()->SetRangeUser(0,0.15); C3pion[chtype]->SetMinimum(0.90); C3pion[chtype]->SetMaximum(2.0); C3pion[chtype]->GetYaxis()->SetTitleOffset(1.5); C3pion[chtype]->GetXaxis()->SetTitle("Q_{3} (GeV/c)"); C3pion[chtype]->GetYaxis()->SetTitle("C_{3}K_{3}"); } // // C2pion[ChComb]->Draw(); C2muonSmeared[ChComb]->Draw("same"); legend->AddEntry(C2pion[ChComb],"Input Pion-Pion, C_{2}^{#pi-#pi,QS}K_{2}^{#pi-#pi,QS}","l"); legend->AddEntry(C2muonSmeared[ChComb],"Pion-Muon residual, C_{2}^{#mu-#pi,QS}K_{2}^{#mu-#pi,QS}","l"); legend->Draw("same"); //PionPionK2->Draw("same"); // // // //C3pion[ChComb]->Draw(); //C3muonSmeared[ChComb]->Draw("same"); //PionPionK3[0]->Draw("same"); //legend->AddEntry(C3pion[ChComb],"Input Pion-Pion-Pion, C_{3}^{#pi-#pi-#pi,QS}K_{3}^{#pi-#pi-#pi,QS}","l"); //legend->AddEntry(C3muonSmeared[ChComb],"Muon-Pion-Pion residual, C_{3}^{#mu-#pi-#pi,QS}K_{3}^{#mu-#pi-#pi,QS}","l"); //legend->Draw("same"); // corrections TFile *fout=new TFile("MuonCorrection_temp.root","RECREATE"); TH1D *C2muonCorrection[2]; C2muonCorrection[0] = new TH1D("C2muonCorrection_SC","",100,0,0.5); C2muonCorrection[1] = new TH1D("C2muonCorrection_MC","",100,0,0.5); TH1D *WeightmuonCorrection = new TH1D("WeightmuonCorrection","",100,0,0.5); TH1D *C3muonCorrection[2]; C3muonCorrection[0] = new TH1D("C3muonCorrection_SC","",50,0,0.5); C3muonCorrection[1] = new TH1D("C3muonCorrection_MC","",50,0,0.5); // C2muonCorrection[0]->GetXaxis()->SetTitle("q_{inv} (GeV/c)"); C2muonCorrection[0]->GetYaxis()->SetTitle("x_{2}"); C2muonCorrection[1]->GetXaxis()->SetTitle("q_{inv} (GeV/c)"); C2muonCorrection[1]->GetYaxis()->SetTitle("x_{2}"); C3muonCorrection[0]->GetXaxis()->SetTitle("Q_{3} (GeV/c)"); C3muonCorrection[0]->GetYaxis()->SetTitle("x_{3}"); C3muonCorrection[1]->GetXaxis()->SetTitle("Q_{3} (GeV/c)"); C3muonCorrection[1]->GetYaxis()->SetTitle("x_{3}"); WeightmuonCorrection->GetXaxis()->SetTitle("q_{inv} (GeV/c)"); WeightmuonCorrection->GetYaxis()->SetTitle("x_{2}^{w}"); // 0.944 and 0.959 float GoodPairFraction=1-0.93*(1-PurityNum->GetBinContent(10)); cout<<"Pion Pair Purity = "<<PurityNum->GetBinContent(10)<<endl; cout<<"Effective Pion Pair Purity = "<<GoodPairFraction<<endl; float pionPurity=pow(GoodPairFraction,0.5); float muonPurity=1-pionPurity; for(int chtype=0; chtype<2; chtype++){ for(int bin=1; bin<=100; bin++){ bool emptybin2=kFALSE, emptybin3=kFALSE; if(PionPionK2[chtype]->GetBinContent(bin)==0) {PionPionK2[chtype]->SetBinContent(bin, 1.00001);} if(PionPionK3[chtype]->GetBinContent(bin)==0) {PionPionK3[chtype]->SetBinContent(bin, 1.00001);} if(bin > C2pion[chtype]->GetNbinsX()) emptybin2=kTRUE; if(bin > C3pion[chtype]->GetNbinsX()) emptybin3=kTRUE; double value = C2pion[chtype]->GetBinContent(bin)/PionPionK2[chtype]->GetBinContent(bin); double den = (GoodPairFraction*C2pion[chtype]->GetBinContent(bin) + (1-GoodPairFraction)*C2muonSmeared[chtype]->GetBinContent(bin))/PionPionK2[chtype]->GetBinContent(bin); if(den > 0 && !emptybin2) C2muonCorrection[chtype]->SetBinContent(bin,value/den); else C2muonCorrection[chtype]->SetBinContent(bin, 1); // if(chtype==0){ value = C2pion[chtype]->GetBinContent(bin)/PionPionK2[chtype]->GetBinContent(bin) - 1.0; den = ((GoodPairFraction*C2pion[chtype]->GetBinContent(bin) + (1-GoodPairFraction)*C2muonSmeared[chtype]->GetBinContent(bin))/PionPionK2[chtype]->GetBinContent(bin)) - 1.0; if(den > 0 && !emptybin2) WeightmuonCorrection->SetBinContent(bin,value/den); } // value = C3pion[chtype]->GetBinContent(bin)/PionPionK3[chtype]->GetBinContent(bin); den = (pow(pionPurity,3)*C3pion[chtype]->GetBinContent(bin) + (3*pow(pionPurity,2)*muonPurity)*C3muonSmeared[chtype]->GetBinContent(bin))/PionPionK3[chtype]->GetBinContent(bin); if(den > 0 && !emptybin3) C3muonCorrection[chtype]->SetBinContent(bin,value/den); else C3muonCorrection[chtype]->SetBinContent(bin, 1); } //C2muonCorrection[chtype]->SetBinContent(1, C2muonCorrection[chtype]->GetBinContent(2)); //C3muonCorrection[chtype]->SetBinContent(1, C3muonCorrection[chtype]->GetBinContent(2)); C2muonCorrection[chtype]->Write(); C3muonCorrection[chtype]->Write(); if(chtype==0) { //WeightmuonCorrection->SetBinContent(1, WeightmuonCorrection->GetBinContent(2)); WeightmuonCorrection->Write(); } } // //C3muonCorrection[0]->SetMinimum(0.99); //C3muonCorrection[0]->SetMaximum(1.05); //C3muonCorrection[0]->GetYaxis()->SetTitleOffset(1.3); //C3muonCorrection[0]->Draw(); //WeightmuonCorrection->GetYaxis()->SetTitleOffset(1.3); //WeightmuonCorrection->Draw(); fout->Close(); }
void plot1d(int hid) { gStyle->SetOptStat(0); char c[50]; c1->Clear(); if(m1dHist[hid]==0){ c1->Divide(2,2); for(int quad=0; quad<kFgtNumQuads; quad++){ TVirtualPad* pad1 = c1->cd(quad+1); pad1->SetLogy(l1dHist[hid]); double xmin, xmax, ymin=0.0, ymax=0.0; if(l1dHist[hid]==1) ymin=0.1; for(int disc=0; disc<kFgtNumDiscs; disc++){ sprintf(c,"%1d%1s-%s",disc+1,cquad[quad],c1dHist[hid]); //printf("Getting %s\n",c); TH1F *h = hist1[disc][quad][hid] = (TH1F*)file->Get(c); xmin=h->GetXaxis()->GetXmin(); xmax=h->GetXaxis()->GetXmax(); double m=h->GetMaximum(); if(ymax<m) ymax=m; printf("disc=%d max=%6.1f ymax=%6.1f xmin=%6.1f xmax=%6.1f\n",disc+1,m,ymax,xmin,xmax); } sprintf(c,"Quad%1s-%s",cquad[quad],c1dHist[hid]); TH2F *frame = new TH2F(c,c,1,xmin,xmax,1,ymin,ymax*1.2); frame->SetStats(0); frame->Draw(); for(int disc=0; disc<kFgtNumDiscs; disc++){ TH1F *h=hist1[disc][quad][hid]; h->SetLineColor(color[disc]); h->SetLineWidth(3); h->Draw("SAME"); if(f1dHist[hid]==0){ float mean=h->GetMean(); sprintf(c,"%1d%s mean=%6.2f",disc+1,cquad[quad],mean); }else if(f1dHist[hid]==1){ int res = h->Fit("gaus","0Q"); TF1 *f = h->GetFunction("gaus"); float sig = f->GetParameter(2); if(res==0 && sig>0.0001 && h->GetEntries()>5){ f->SetLineColor(color[disc]); f->SetLineWidth(2); f->Draw("SAME"); sprintf(c,"%1d%s sig=%6.3f",disc+1,cquad[quad],sig); }else{ sprintf(c,"%1d%s",disc+1,cquad[quad]); } }else if(f1dHist[hid]==2){ int res = h->Fit("landau","0Q"); TF1 *f = h->GetFunction("landau"); float peak = f->GetParameter(1); if(res==0 && peak>0 && h->GetEntries()>5){ f->SetLineColor(color[disc]); f->SetLineWidth(2); f->Draw("SAME"); sprintf(c,"%1d%s mpv=%6.0f",disc+1,cquad[quad],peak); }else{ sprintf(c,"%1d%s",disc+1,cquad[quad]); } } TText *t1; float x1= 0.2, x2= 0.55; float y1=0.8 - 0.07*disc; float y2=0.8 - 0.07*(disc-3); if(disc<3) { t1 = new TText(x1,y1,c); } else { t1 = new TText(x2,y2,c); } t1->SetNDC(); t1->SetTextSize(0.04); t1->SetTextColor(color[disc]); t1->Draw(); } } }else{ c1->Divide(4,6); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); gStyle->SetOptFit(0); for(int disc=0; disc<kFgtNumDiscs; disc++){ for(int quad=0; quad<kFgtNumQuads; quad++){ TPad* pad = c1->cd(disc*4+quad+1); pad->SetRightMargin(0.01); pad->SetLeftMargin(0.1); pad->SetTopMargin(0.01); pad->SetBottomMargin(0.1); pad->SetLogy(l1dHist[hid]); sprintf(c,"%1d%1s-%s",disc+1,cquad[quad],c1dHist[hid]); TH1F *h = hist1[disc][quad][hid] = (TH1F*)file->Get(c); h->SetFillColor(color[disc]); h->GetXaxis()->SetLabelSize(0.1); h->GetYaxis()->SetLabelSize(0.1); h->GetXaxis()->SetNdivisions(205); h->Draw(); if(f1dHist[hid]==0){ float mean=h->GetMean(); sprintf(c,"%1d%s mean=%6.2f",disc+1,cquad[quad],mean); }else if(f1dHist[hid]==1){ int res = h->Fit("gaus","0Q"); TF1 *f = h->GetFunction("gaus"); float sig = f->GetParameter(2); if(res==0 && sig>0.0001 && h->GetEntries()>5){ f->SetLineColor(color[disc]); f->SetLineWidth(2); f->Draw("SAME"); sprintf(c,"%1d%s sig=%6.3f",disc+1,cquad[quad],sig); }else{ sprintf(c,"%1d%s",disc+1,cquad[quad]); } }else if(f1dHist[hid]==2){ int res = h->Fit("landau","0Q"); TF1 *f = h->GetFunction("landau"); float peak = f->GetParameter(1); if(res==0 && peak>0 && h->GetEntries()>5){ f->SetLineColor(1); f->SetLineWidth(2); f->Draw("SAME"); sprintf(c,"%1d%s mpv=%6.0f",disc+1,cquad[quad],peak); }else{ sprintf(c,"%1d%s",disc+1,cquad[quad]); } if(hid==8) {mPeakC[disc][quad]=peak;} if(hid==9) { mPeakA[disc][quad]=peak; int n=h->GetEntries(); if(n>0){ float cut=2800; int bin=h->FindBin(cut); int nbin=h->GetNbinsX(); float sat=h->Integral(bin,nbin+1); //printf("bin=%d nbin=%d sat=%f\n",bin,nbin,sat); mFracA[disc][quad]=sat/float(n); } } if(hid==11) {mPeakL[disc][quad]=peak;} // printf("LandauPeak=%f\n",peak);} } TText *t1 = new TText(0.3,0.85,c); t1->SetNDC(); t1->SetTextSize(0.15); t1->SetTextColor(color[disc]); t1->Draw(); } } } c1->Update(); save(c1dHist[hid]); }
void makePlot(const TString& title, TGraphAsymmErrors* graph_Data_passed, TF1* fit_Data_passed, const TString& legendEntry_Data_passed, TGraphAsymmErrors* graph_mcSum_passed, TF1* fit_mcSum_passed, const TString& legendEntry_mcSum_passed, TGraphAsymmErrors* graph_Data_failed, TF1* fit_Data_failed, const TString& legendEntry_Data_failed, TGraphAsymmErrors* graph_mcSum_failed, TF1* fit_mcSum_failed, const TString& legendEntry_mcSum_failed, const TString& outputFileName) { TCanvas* canvas = new TCanvas("canvas", "canvas", 800, 900); canvas->SetFillColor(10); canvas->SetBorderSize(2); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.12); //TPad* topPad = new TPad("topPad", "topPad", 0.00, 0.35, 1.00, 1.00); TPad* topPad = new TPad("topPad", "topPad", 0.00, 1.00 - 0.65*(0.93/0.84), 1.00, 1.00); topPad->SetFillColor(10); topPad->SetTopMargin(0.04); topPad->SetLeftMargin(0.15); //topPad->SetBottomMargin(0.03); topPad->SetBottomMargin(0.12); topPad->SetRightMargin(0.05); topPad->SetGridx(); topPad->SetGridy(); canvas->cd(); topPad->Draw(); topPad->cd(); TH1* dummyHistogram_top = new TH1D("dummyHistogram_top", "dummyHistogram_top", 10, 0., 100.); dummyHistogram_top->SetTitle(""); dummyHistogram_top->SetStats(false); dummyHistogram_top->SetMaximum(1.2); dummyHistogram_top->SetMinimum(0.); TAxis* xAxis_top = dummyHistogram_top->GetXaxis(); xAxis_top->SetTitle("calo-E_{T}^{miss} / GeV"); xAxis_top->SetTitleOffset(1.15); //xAxis_top->SetLabelColor(10); //xAxis_top->SetTitleColor(10); TAxis* yAxis_top = dummyHistogram_top->GetYaxis(); yAxis_top->SetTitle("#varepsilon"); yAxis_top->SetTitleOffset(1.2); dummyHistogram_top->Draw(); //dummyHistogram_top->Draw("axis"); //graph_Data_passed->SetLineColor(4); //graph_Data_passed->SetMarkerColor(4); //graph_Data_passed->SetMarkerStyle(20); //graph_Data_passed->Draw("p"); //fit_Data_passed->SetLineColor(graph_Data_passed->GetLineColor()); //fit_Data_passed->SetLineWidth(2); //fit_Data_passed->Draw("same"); graph_mcSum_passed->SetLineColor(7); graph_mcSum_passed->SetMarkerColor(7); graph_mcSum_passed->SetMarkerStyle(24); graph_mcSum_passed->Draw("p"); fit_mcSum_passed->SetLineColor(graph_mcSum_passed->GetLineColor()); fit_mcSum_passed->SetLineWidth(2); fit_mcSum_passed->Draw("same"); graph_Data_failed->SetLineColor(2); graph_Data_failed->SetMarkerColor(2); graph_Data_failed->SetMarkerStyle(21); //graph_Data_failed->Draw("p"); fit_Data_failed->SetLineColor(graph_Data_failed->GetLineColor()); fit_Data_failed->SetLineWidth(2); //fit_Data_failed->Draw("same"); graph_mcSum_failed->SetLineColor(6); graph_mcSum_failed->SetMarkerColor(6); graph_mcSum_failed->SetMarkerStyle(25); graph_mcSum_failed->Draw("p"); fit_mcSum_failed->SetLineColor(graph_mcSum_failed->GetLineColor()); fit_mcSum_failed->SetLineWidth(2); fit_mcSum_failed->Draw("same"); TLegend* legend = new TLegend(0.61, 0.16, 0.89, 0.47, "", "brNDC"); legend->SetBorderSize(0); legend->SetFillColor(0); //legend->AddEntry(graph_Data_passed, legendEntry_Data_passed.Data(), "p"); legend->AddEntry(graph_mcSum_passed, legendEntry_mcSum_passed.Data(), "p"); //legend->AddEntry(graph_Data_failed, legendEntry_Data_failed.Data(), "p"); legend->AddEntry(graph_mcSum_failed, legendEntry_mcSum_failed.Data(), "p"); legend->Draw(); TPaveText* label = 0; if ( title.Length() > 0 ) { label = new TPaveText(0.175, 0.89, 0.48, 0.94, "NDC"); label->AddText(title.Data()); label->SetTextAlign(13); label->SetTextSize(0.045); label->SetFillStyle(0); label->SetBorderSize(0); label->Draw(); } TPad* bottomPad = new TPad("bottomPad", "bottomPad", 0.00, 0.00, 1.00, 0.35); bottomPad->SetFillColor(10); bottomPad->SetTopMargin(0.02); bottomPad->SetLeftMargin(0.15); bottomPad->SetBottomMargin(0.24); bottomPad->SetRightMargin(0.05); bottomPad->SetGridx(); bottomPad->SetGridy(); canvas->cd(); bottomPad->Draw(); bottomPad->cd(); TH1* dummyHistogram_bottom = new TH1D("dummyHistogram_bottom", "dummyHistogram_bottom", 10, 0., 100.); dummyHistogram_bottom->SetMinimum(-1.0); dummyHistogram_bottom->SetMaximum(+1.0); TAxis* xAxis_bottom = dummyHistogram_bottom->GetXaxis(); xAxis_bottom->SetTitle("calo-E_{T}^{miss} / GeV"); xAxis_bottom->SetTitleOffset(1.20); xAxis_bottom->SetLabelColor(1); xAxis_bottom->SetTitleColor(1); xAxis_bottom->SetTitleSize(0.08); xAxis_bottom->SetLabelOffset(0.02); xAxis_bottom->SetLabelSize(0.08); xAxis_bottom->SetTickLength(0.055); TAxis* yAxis_bottom = dummyHistogram_bottom->GetYaxis(); yAxis_bottom->SetTitle("#frac{Data-Simulation}{Simulation}"); yAxis_bottom->SetTitleOffset(0.85); yAxis_bottom->SetNdivisions(505); yAxis_bottom->CenterTitle(); yAxis_bottom->SetTitleSize(0.08); yAxis_bottom->SetLabelSize(0.08); yAxis_bottom->SetTickLength(0.04); dummyHistogram_bottom->SetTitle(""); dummyHistogram_bottom->SetStats(false); dummyHistogram_bottom->Draw("axis"); TGraphAsymmErrors* graph_Data_div_mc_passed = makeGraph_data_div_mc(graph_Data_passed, graph_mcSum_passed); graph_Data_div_mc_passed->SetLineColor(graph_Data_passed->GetLineColor()); graph_Data_div_mc_passed->SetMarkerColor(graph_Data_passed->GetMarkerColor()); graph_Data_div_mc_passed->SetMarkerStyle(graph_Data_passed->GetMarkerStyle()); graph_Data_div_mc_passed->Draw("p"); TF1* fit_Data_div_mc_passed = new TF1("fit_Data_div_mc_passed", &integralCrystalBall_f_div_f, fit_mcSum_passed->GetMinimumX(), fit_mcSum_passed->GetMaximumX(), 2*fit_mcSum_passed->GetNpar()); for ( int iPar = 0; iPar < fit_mcSum_passed->GetNpar(); ++iPar ) { fit_Data_div_mc_passed->SetParameter(iPar, fit_Data_passed->GetParameter(iPar)); fit_Data_div_mc_passed->SetParameter(iPar + fit_mcSum_passed->GetNpar(), fit_mcSum_passed->GetParameter(iPar)); } fit_Data_div_mc_passed->SetLineColor(graph_Data_div_mc_passed->GetLineColor()); fit_Data_div_mc_passed->SetLineWidth(2); fit_Data_div_mc_passed->Draw("same"); TGraphAsymmErrors* graph_Data_div_mc_failed = makeGraph_data_div_mc(graph_Data_failed, graph_mcSum_failed); graph_Data_div_mc_failed->SetLineColor(graph_Data_failed->GetLineColor()); graph_Data_div_mc_failed->SetMarkerColor(graph_Data_failed->GetMarkerColor()); graph_Data_div_mc_failed->SetMarkerStyle(graph_Data_failed->GetMarkerStyle()); graph_Data_div_mc_failed->Draw("p"); TF1* fit_Data_div_mc_failed = new TF1("fit_Data_div_mc_failed", &integralCrystalBall_f_div_f, fit_mcSum_failed->GetMinimumX(), fit_mcSum_failed->GetMaximumX(), 2*fit_mcSum_failed->GetNpar()); for ( int iPar = 0; iPar < fit_mcSum_failed->GetNpar(); ++iPar ) { fit_Data_div_mc_failed->SetParameter(iPar, fit_Data_failed->GetParameter(iPar)); fit_Data_div_mc_failed->SetParameter(iPar + fit_mcSum_failed->GetNpar(), fit_mcSum_failed->GetParameter(iPar)); } fit_Data_div_mc_failed->SetLineColor(graph_Data_div_mc_failed->GetLineColor()); fit_Data_div_mc_failed->SetLineWidth(2); fit_Data_div_mc_failed->Draw("same"); topPad->RedrawAxis(); bottomPad->RedrawAxis(); canvas->Update(); size_t idx = outputFileName.Last('.'); std::string outputFileName_plot = std::string(outputFileName.Data(), 0, idx); if ( idx != std::string::npos ) canvas->Print(std::string(outputFileName_plot).append(std::string(outputFileName.Data(), idx)).data()); //canvas->Print(std::string(outputFileName_plot).append(".png").data()); //canvas->Print(std::string(outputFileName_plot).append(".pdf").data()); topPad->Print(std::string(outputFileName_plot).append(".png").data()); topPad->Print(std::string(outputFileName_plot).append(".pdf").data()); delete legend; delete label; delete dummyHistogram_top; delete topPad; delete dummyHistogram_bottom; delete bottomPad; delete canvas; }
makeLTauStack(TString name,TString file,TString dir,int s,TString labelX,TString units = "GeV",bool left=false,TString channel = "",bool log = false,bool dndm=false,bool doRatio = false) { setStyle(); float xR=0.45; if(left) xR=0.2; if(doRatio){ TCanvas * c = new TCanvas(name,name,600,600); } else{ TCanvas * c = new TCanvas(name,name,600,600); c->SetLeftMargin (0.18); c->SetRightMargin (0.05); c->SetTopMargin (0.08); c->SetBottomMargin (0.15); } c->cd(); if(doRatio){ TPad * plotPad = new TPad("pad1","",0.0,0.3,1.0,1.0); plotPad->SetLeftMargin (0.18); plotPad->SetTopMargin (0.10); plotPad->SetRightMargin (0.07); plotPad->SetBottomMargin(0.03); TPad * ratioPad = new TPad("pad2","",0.0,0.0,1.0,0.3); ratioPad->SetLeftMargin (0.18); ratioPad->SetTopMargin (0.00); ratioPad->SetRightMargin (0.07); ratioPad->SetBottomMargin(0.30); ratioPad->SetGridy(1); } else{ TPad * plotPad = new TPad("pad1","",0.0,0.0,1.0,1.0); plotPad->SetLeftMargin (0.18); plotPad->SetRightMargin (0.05); plotPad->SetTopMargin (0.08); plotPad->SetBottomMargin (0.15); } plotPad->Draw(); plotPad->cd(); TFile *f = new TFile(file); TH1F * data = (TH1F*)(f->Get(dir+"/data_obs")); if (dndm) convertToDNDM(data); applyDATAStyle(data); TH1F * QCD = (TH1F*)(f->Get(dir+"/QCD")); if (dndm) convertToDNDM(QCD); applyStyle(QCD,kMagenta-10,1,1001); TH1F * ttbar = (TH1F*)(f->Get(dir+"/TT")); if (dndm) convertToDNDM(ttbar); applyStyle(ttbar,kBlue-8,1,1001); if(channel == "#tau_{e}#tau_{h}"){ TH1F * EWK = (TH1F*)(f->Get(dir+"/W")); EWK->Add((TH1F*)(f->Get(dir+"/VV"))); if (dndm) convertToDNDM(EWK); applyStyle(EWK,kRed+2,1,1001); if(f->Get(dir+"/ZL")!=0) TH1F * ZEE = (TH1F*)(f->Get(dir+"/ZL")); if(f->Get(dir+"/ZJ")!=0) ZEE->Add((TH1F*)(f->Get(dir+"/ZJ"))); if(f->Get(dir+"/ZLL")!=0) TH1F * ZEE = (TH1F*)(f->Get(dir+"/ZLL"))); if (dndm) convertToDNDM(ZEE); applyStyle(ZEE,kAzure+2,1,1001); }
void DrawQCDClosure(TString VAR,TString XTITLE) { gROOT->ForceStyle(); TString FileName[7] = {"QCD_HT200to300","QCD_HT300to500","QCD_HT500to700","QCD_HT700to1000","QCD_HT1000to1500","QCD_HT1500to2000","QCD_HT2000toInf"}; float XSEC[7] = {1.74e+6,3.67e+5,2.94e+4,6.524e+03,1.064e+03,121.5,2.542e+01}; TFile *inf[7]; TH1F *h[7],*h1[7]; TCanvas *can = new TCanvas("can_QCDClosure_"+VAR,"can_QCDClosure_"+VAR,900,600); can->cd(1); can->SetBottomMargin(0.3); can->SetRightMargin(0.15); for(int i=0;i<7;i++) { inf[i] = TFile::Open("Histo_"+FileName[i]+".root"); TH1F *hTriggerPass = (TH1F*)inf[i]->Get("hadtopL/TriggerPass"); h[i] = (TH1F*)inf[i]->Get("hadtopL/h_"+VAR); h1[i] = (TH1F*)inf[i]->Get("hadtop/h_"+VAR); h[i]->Sumw2(); h1[i]->Sumw2(); h[i]->Rebin(5); h1[i]->Rebin(5); h[i]->Scale(XSEC[i]/hTriggerPass->GetBinContent(1)); h1[i]->Scale(XSEC[i]/hTriggerPass->GetBinContent(1)); cout<<hTriggerPass->GetBinContent(1)<<endl; } TH1F *hQCD = (TH1F*)h[0]->Clone("hQCD"); TH1F *hQCD1 = (TH1F*)h1[0]->Clone("hQCD1"); for(int i=0;i<7;i++) { hQCD->Add(h[i]); hQCD1->Add(h1[i]); } hQCD->SetFillColor(kGray); hQCD->Scale(1./hQCD->Integral()); hQCD1->Scale(1./hQCD1->Integral()); hQCD->GetXaxis()->SetLabelSize(0.0); double max = 1.1*TMath::Max(hQCD->GetBinContent(hQCD->GetMaximumBin()),hQCD1->GetBinContent(hQCD1->GetMaximumBin())); hQCD->SetMinimum(1e-5); hQCD->SetMaximum(max); hQCD->Draw("hist"); hQCD1->Draw("sameE"); gPad->RedrawAxis(); TLegend *leg = new TLegend(0.86,0.65,0.99,0.9); leg->SetFillColor(0); leg->SetTextFont(42); leg->SetTextSize(0.03); leg->AddEntry(hQCD,"Control","F"); leg->AddEntry(hQCD1,"Signal","LP"); leg->Draw(); TH1F *hRatio = (TH1F*)hQCD1->Clone("Ratio"); hRatio->Divide(hQCD); TPad* pad = new TPad("pad", "pad", 0., 0., 1., 1.); pad->SetTopMargin(0.7); pad->SetRightMargin(0.15); pad->SetFillColor(0); pad->SetFillStyle(0); pad->Draw(); pad->cd(0); gPad->SetGridy(); hRatio->GetXaxis()->SetTitle(XTITLE); hRatio->GetYaxis()->SetNdivisions(505); hRatio->GetYaxis()->SetRangeUser(0,2); hRatio->GetYaxis()->SetLabelSize(0.04); hRatio->Draw(); }
void compareplots_noRatio(){ vector<TFile*> files; files.push_back(new TFile("/storage/9/schweiger/analyseFxFx/pythia8/100kEvents/ttbarMergedFxFx8TeVCTEQ6M-extracted.root")); files.push_back(new TFile("/storage/9/schweiger/analyseFxFx/pythia8/100kEvents/mergingscale_30/ttbarMergedFxFxMS30GeVMECut10GeV8TeVCTEQ6M-extracted.root")); files.push_back(new TFile("/storage/9/schweiger/analyseFxFx/pythia8/100kEvents/mergingscale_100/ttbarMergedMS100GeV8TeVCTEQ6M-extracted.root")); files.push_back(new TFile("/storage/9/schweiger/analyseFxFx/pythia8/100kEvents/mergingscale_100/ttbarMergedMS100GeVMCCut50GeV8TeVCTEQ6M-extracted.root")); vector<TString> names; names.push_back("ttbar +0/1 Jet, #mu_{Q}=10 GeV #mu_{ME} = 10 GeV"); names.push_back("ttbar +0/1 Jet, #mu_{Q}=30 GeV #mu_{ME} = 10 GeV"); names.push_back("ttbar +0/1 Jet, #mu_{Q}=100 GeV #mu_{ME} = 10 GeV"); names.push_back("ttbar +0/1 Jet, #mu_{Q}=100 GeV #mu_{ME} = 50 GeV"); vector<TString> titles; titles.push_back("Gen-Jet p_{T} with pos weights (GeV)"); titles.push_back("Gen-Jet p_{T} with neg weights (GeV)"); titles.push_back("Gen-Jet p_{T} (GeV)"); titles.push_back("Gen_Jet #phi with pos. weights"); titles.push_back("Gen_Jet #phi with neg. weights"); titles.push_back("Gen_Jet #phi"); titles.push_back("Gen Jet #theta with pos weights"); titles.push_back("Gen Jet #theta with neg weights"); titles.push_back("Gen Jet #theta"); titles.push_back("Gen Jet Energy with pos weights (GeV) "); titles.push_back("Gen Jet Energy with neg weights (GeV)"); titles.push_back("Gen Jet Energy (GeV)"); titles.push_back("p_{T} of hardest Gen-Jet with pos weights (GeV)"); titles.push_back("p_{T} of hardest Gen-Jet with neg weights (GeV)"); titles.push_back("p_{T} of hardest Gen-Jet (GeV)"); titles.push_back("p_{T} of 2nd hardest Gen-Jet with pos weights (GeV)"); titles.push_back("p_{T} of 2nd hardest Gen-Jet with neg weights (GeV)"); titles.push_back("p_{T} of 2nd hardest Gen-Jet (GeV)"); titles.push_back("#eta of hardest Gen-Jets with pos weights"); titles.push_back("#eta of hardest Gen-Jets with neg weights"); titles.push_back("#eta of hardest Gen-Jets"); titles.push_back("Number of Gen-Jets with pos. weights"); titles.push_back("Number of Gen-Jets with neg. weights"); titles.push_back("Number of Gen-Jets"); TFile *vergleich = new TFile("vergleich_ttbar_0Jet.root","RECREATE"); // Show no statistics box gStyle->SetOptStat(0); TH1::SetDefaultSumw2(); // Main program part TIter nextkey(files.at(0)->GetListOfKeys()); TKey *key; bool first=true; TCanvas* c = new TCanvas(); c->Print("plots.pdf["); // Save also as pictures int pictureNumber = 0; int run = 0; while (key = (TKey*)nextkey()) { pictureNumber++; TString pictureName = TString::Format("%d.png",pictureNumber); vector<TH1F*> histos; histos.push_back((TH1F*)key->ReadObj()); for(size_t i=1;i<files.size();i++){ histos.push_back((TH1F*)files.at(i)->Get(histos.at(0)->GetName())); } for(size_t i=0;i<histos.size();i++){ if(i == 0){ histos.at(i)->SetLineColor(kBlack); } if(i == 1){ histos.at(i)->SetLineColor(kRed); } if(i == 2){ histos.at(i)->SetLineColor(kBlue); } if(i == 3){ histos.at(i)->SetLineColor(kGreen+2); } if(i == 4){ histos.at(i)->SetLineColor(kMagenta-7); } if(i == 5){ histos.at(i)->SetLineColor(kOrange+7); } } for(size_t i=0;i<histos.size();i++){ histos.at(i)->Sumw2(); histos.at(i)->Scale(1./histos.at(i)->Integral(),"width"); } // Set axis title histos.at(0)->GetYaxis()->SetTitle("Normalized units"); std::string const histogramName = histos.at(1)->GetName(); histos.at(0)->GetXaxis()->SetLabelSize(0.05); histos.at(0)->GetXaxis()->SetLabelOffset(0.006); histos.at(0)->GetYaxis()->SetLabelSize(0.05); histos.at(0)->GetYaxis()->SetLabelOffset(0.006); histos.at(0)->GetXaxis()->SetTitleSize(0.06); histos.at(0)->GetXaxis()->SetTitleOffset(1.1); histos.at(0)->GetYaxis()->SetTitleSize(0.06); histos.at(0)->GetYaxis()->SetTitleOffset(1.15); histos.at(0)->GetXaxis()->SetTitle(titles.at(run)); run = run+1; if(run == (3*8)){ run = 0; } // If only two histograms per plot make a ratio plot if(histos.size() == 2) { //create main pad TPad *mainPad = new TPad("","",0.0,0.0,1.0,1.0); mainPad->SetNumber(1); mainPad->SetBottomMargin(0.15); mainPad->SetRightMargin(0.04); mainPad->SetLeftMargin(0.13); mainPad->Draw(); gStyle->SetOptTitle(0); //create ratio pad /*TPad *ratioPad = new TPad("","",0.0,0.0,1.0,0.3); ratioPad->SetTopMargin(0.0); ratioPad->SetBottomMargin(0.4); ratioPad->SetLeftMargin(0.13); ratioPad->SetRightMargin(0.04); gStyle->SetOptTitle(0); ratioPad->SetFillColor(0); ratioPad->SetNumber(2); ratioPad->SetGridy(); ratioPad->Draw();*/ // Draw both histograms first c->cd(1); histos.at(0)->Draw("histo E"); histos.at(1)->Draw("histo same E"); // Show legend and statistical tests in first pad for(size_t i=0;i<histos.size()-1;i=i+2){ double ksresult = histos.at(i)->KolmogorovTest(histos.at(i+1)); ksresult=floor(ksresult*1000+0.5)/1000; double chi2result =histos.at(i)->Chi2Test(histos.at(i+1),"WW"); chi2result=floor(chi2result*1000+0.5)/1000; stringstream ss; //ss << " KS: " <<std::setprecision(3) << ksresult << " chi2: " <<std::setprecision(3) << chi2result << " Private Work"; ss << " Private Work"; const char * ch = & ss.str().c_str();; TLatex * ks = new TLatex(0.1, 0.9-0.03*i, ch ); ks->SetTextColor(histos.at(i)->GetLineColor()); ks->SetNDC(); ks->Draw(""); } TLegend* l = new TLegend(0.40,0.9,0.69,0.99); // Options for legend l->SetBorderSize(0); l->SetLineStyle(0); l->SetTextSize(0.049); l->SetFillStyle(0); for(size_t i=0;i<names.size();i++){ l->AddEntry(histos.at(i),names.at(i),"L"); } l->Draw("same"); /* // Clone histograms and draw ratio plot c->cd(2); TH1F* ratioHisto = (TH1F*)histos.at(0)->Clone(); ratioHisto->Divide(histos.at(1)); ratioHisto->SetLineColor(kBlue); ratioHisto->SetStats(false); ratioHisto->GetYaxis()->SetTitle("Ratio #frac{noFxFx}{FxFx}"); // Same Size like in histogram ratioHisto->SetLabelSize(histos.at(0)->GetLabelSize() * 0.7 / 0.3); ratioHisto->SetTitleOffset((histos.at(0)->GetTitleOffset("Y") * 0.3 / 0.7), "Y"); ratioHisto->SetTitleSize((histos.at(0)->GetTitleSize("Y") * 0.7 / 0.3), "Y"); ratioHisto->SetTitleOffset((histos.at(0)->GetTitleOffset("X")), "X"); ratioHisto->SetTitleSize((histos.at(0)->GetTitleSize("X") * 0.7 / 0.3), "X"); // Use nicer range ratioHisto->GetYaxis()->SetRangeUser(0, 2.2); ratioHisto->GetYaxis()->SetNdivisions(503); ratioHisto->GetYaxis()->SetLabelSize(0.06 * 0.7 / 0.3); ratioHisto->Draw();*/ } else { TPad *mainPad = new TPad("","",0.0,0.0,1.0,1.0); mainPad->SetNumber(1); mainPad->SetBottomMargin(0.15); mainPad->SetRightMargin(0.04); mainPad->SetLeftMargin(0.13); mainPad->Draw(); gStyle->SetOptTitle(0); //mainPad->SetLogx(1); c->cd(1); histos.at(0)->Draw("histo E"); for(size_t i=0;i<histos.size();i++){ histos.at(i)->Draw("histo same E"); } for(size_t i=0;i<histos.size()-1;i=i+2){ /* double ksresult = histos.at(i)->KolmogorovTest(histos.at(i+1)); ksresult=floor(ksresult*1000+0.5)/1000; double chi2result =histos.at(i)->Chi2Test(histos.at(i+1),"WW"); chi2result=floor(chi2result*1000+0.5)/1000; stringstream ss; ss << "KS: " <<std::setprecision(3) << ksresult << " chi2: " <<std::setprecision(3) << chi2result; const char * ch = & ss.str().c_str();; TText * ks = new TText(0.1, 0.9-0.03*i, ch ); ks->SetTextColor(histos.at(i)->GetLineColor()); ks->SetNDC(); ks->Draw(""); */ } TLegend* l = new TLegend(0.65,0.5,0.9,0.7); l->SetBorderSize(0); l->SetLineStyle(0); // l->SetTextSize(0.039); l->SetFillStyle(0); for(size_t i=0;i<names.size();i++){ l->AddEntry(histos.at(i),names.at(i),"L"); } l->Draw("same"); } c->Print("plots.pdf"); c->SaveAs(pictureName); vergleich->WriteTObject(c); } c->Print("plots.pdf]"); }
void markerwarning() { const int Nph = 14; double np_ph[Nph] = {353.4,300.2,254.3,215.2,181.0,151.3,125.2,102.7, 83.3, 66.7, 52.5, 40.2, 30.2, 22.0}; double nc_ph[Nph] = {3.890,3.734,3.592,3.453,3.342,3.247,3.151,3.047,2.965,2.858,2.701,2.599,2.486,2.328}; double npe_ph[Nph] = {10.068,9.004,8.086,7.304,6.620,6.026,5.504,5.054,4.666,4.334,4.050,3.804,3.604,3.440}; double nce_ph[Nph] = {0.235,0.217,0.210,0.206,0.213,0.223,0.239,0.260,0.283,0.318,0.356,0.405,0.465,0.545}; const int Nbr = 6; double np_br[Nbr] = {357.0,306.0,239.0,168.0,114.0, 73.0}; double nc_br[Nbr] = {3.501,3.275,3.155,3.060,3.053,3.014}; double npe_br[Nbr] = {8.000,11.000,10.000,9.000,9.000,8.000}; double nce_br[Nbr] = {0.318,0.311,0.306,0.319,0.370,0.429}; TGraphErrors *phUP = new TGraphErrors(Nph,np_ph,nc_ph,npe_ph,nce_ph); TGraphErrors *phDN = new TGraphErrors(Nph,np_ph,nc_ph,npe_ph,nce_ph); TGraphErrors *brUP = new TGraphErrors(Nbr,np_br,nc_br,npe_br,nce_br); TGraphErrors *brDN = new TGraphErrors(Nbr,np_br,nc_br,npe_br,nce_br); float Top_margin = 0.; float Left_margin = 0.025; float Right_margin = 0.005; float maxPlotPart = 395; float Marker_Size = 1.3; int Marker_Style = 8; float Et_200_Min = 0.71; float Et_200_Max = 3.80; float Et_130_Min = 1.21; float Et_130_Max = 3.29; float Nc_200_Min = 1.31; float Nc_200_Max = 4.30; float Nc_130_Min = 1.51; float Nc_130_Max = 3.89; TCanvas *canvasNc = new TCanvas("canvasNc", "Multiplicity",630,10,600,500); gStyle->SetOptStat(0); canvasNc->SetFillColor(10); canvasNc->SetBorderSize(0); // Primitives in Nc200 pad TPad *padNcUP = new TPad("padNcUP","200 GeV",0.07,0.60,1.,1.00); padNcUP->Draw(); padNcUP->cd(); padNcUP->SetFillColor(10); padNcUP->SetFrameFillColor(10); padNcUP->SetBorderSize(0); padNcUP->SetLeftMargin(Left_margin); padNcUP->SetRightMargin(Right_margin); padNcUP->SetTopMargin(Top_margin+0.005); padNcUP->SetBottomMargin(0.00); TH1F* frameNcUP = new TH1F("frameNcUP","",100,0,maxPlotPart); frameNcUP->GetYaxis()->SetLabelOffset(0.005); frameNcUP->GetYaxis()->SetLabelSize(0.10); frameNcUP->SetMinimum(Nc_200_Min); frameNcUP->SetMaximum(Nc_200_Max); frameNcUP->SetNdivisions(505,"Y"); frameNcUP->SetNdivisions(505,"X"); frameNcUP->Draw(); brUP->SetMarkerStyle(22); brUP->SetMarkerSize (2.0); brUP->Draw("P"); phDN->SetMarkerStyle(23); phDN->SetMarkerSize (2); phDN->Draw("P"); canvasNc->cd(); // Primitives in Nc130 pad TPad *padNcDN = new TPad("padNcDN","130 GeV",0.07,0.02,1.,0.60); padNcDN->Draw(); padNcDN->cd(); padNcDN->SetFillColor(10); padNcDN->SetFrameFillColor(10); padNcDN->SetBorderSize(0); padNcDN->SetLeftMargin(Left_margin); padNcDN->SetRightMargin(Right_margin); padNcDN->SetTopMargin(Top_margin+0.005); padNcDN->SetBottomMargin(0.30); TH1F* frameNcDN = new TH1F("frameNcDN","",100,0,maxPlotPart); frameNcDN->GetYaxis()->SetLabelOffset(0.005); frameNcDN->GetYaxis()->SetLabelSize(0.07); frameNcDN->GetXaxis()->SetLabelOffset(0.005); frameNcDN->GetXaxis()->SetLabelSize(0.07); frameNcDN->SetMinimum(Nc_200_Min); frameNcDN->SetMaximum(Nc_200_Max); frameNcDN->SetNdivisions(505,"Y"); frameNcDN->SetNdivisions(505,"X"); frameNcDN->Draw(); brDN->SetMarkerStyle(23); brDN->SetMarkerSize (2.0); brDN->Draw("P"); phUP->SetMarkerStyle(22); phUP->SetMarkerSize (2); phUP->Draw("P"); TLatex t1; t1.SetTextFont(12); t1.SetTextSize(0.0525); t1.DrawLatex(-5,0.6,"Non-symmetric symbols should be used carefully in plotting.�These two graphs show how misleading"); t1.DrawLatex(-5,0.4,"a careless use of symbols can be.�The two plots represent the same data sets but because of a bad"); t1.DrawLatex(-5,0.2,"symbol choice, the two plots on the top appear further apart than for the bottom example."); canvasNc->cd(); }
void SingleAnalysis::DrawGraphs() { std::cout << "Drawing graphs" << std::endl; // special case for erec and deviation m_pERecCanvas->cd(); TPad *pERecPad = new TPad("ERecPad", "ERecPad", 0.02, 0.37, 0.95, 0.99); pERecPad->Draw(); pERecPad->cd(); pERecPad->Range(-19.23077,0.01,96.15385,1428.571); pERecPad->SetFillColor(0); pERecPad->SetBorderMode(0); pERecPad->SetBorderSize(2); pERecPad->SetTickx(1); pERecPad->SetTicky(1); pERecPad->SetLeftMargin(0.1666667); pERecPad->SetRightMargin(0.01); pERecPad->SetTopMargin(0.02); pERecPad->SetBottomMargin(0.0); pERecPad->SetFrameLineWidth(1); pERecPad->SetFrameBorderMode(0); m_canvasMultiGraphMap[E_REC].second->Draw("ap"); this->PostDrawMultiGraph(E_REC, m_canvasMultiGraphMap[E_REC].second); TLegend *pLegend = pERecPad->BuildLegend(); pLegend->SetBorderSize(0); pLegend->SetLineColor(0); pLegend->SetLineStyle(0); pLegend->SetLineWidth(1); pLegend->SetFillColor(0); pLegend->SetFillStyle(0); pLegend->SetTextSize(0.04); pERecPad->Modified(); m_pERecCanvas->cd(); TPad *pERecDeviationPad = new TPad("ERecDeviationPad", "ERecDeviationPad", 0.02, 0, 0.95, 0.37); pERecDeviationPad->Draw(); pERecDeviationPad->cd(); pERecDeviationPad->Range(-19.23077,-0.3993507,96.15385,0.25); pERecDeviationPad->SetFillColor(0); pERecDeviationPad->SetBorderMode(0); pERecDeviationPad->SetBorderSize(2); pERecDeviationPad->SetTickx(1); pERecDeviationPad->SetTicky(1); pERecDeviationPad->SetLeftMargin(0.1666667); pERecDeviationPad->SetRightMargin(0.01); pERecDeviationPad->SetTopMargin(0); pERecDeviationPad->SetBottomMargin(0.23); pERecDeviationPad->SetFrameLineWidth(1); pERecDeviationPad->SetFrameBorderMode(0); m_canvasMultiGraphMap[E_REC_DEVIATION].second->Draw("ap"); TF1 *pLin = new TF1("lin", "0", 0, 90); pLin->SetLineColor(kBlack); pLin->SetLineWidth(1); pLin->SetLineStyle(2); pLin->Draw("same"); this->PostDrawMultiGraph(E_REC_DEVIATION, m_canvasMultiGraphMap[E_REC_DEVIATION].second); pERecDeviationPad->Modified(); for(CanvasMultiGraphMap::iterator graphIter = m_canvasMultiGraphMap.begin(), graphEndIter = m_canvasMultiGraphMap.end() ; graphEndIter != graphIter ; ++graphIter) { if(graphIter->first == E_REC || graphIter->first == E_REC_DEVIATION) continue; graphIter->second.first->cd(); graphIter->second.second->Draw("ap"); this->PostDrawMultiGraph(graphIter->first, graphIter->second.second); TLegend *pLegend = graphIter->second.first->BuildLegend(); pLegend->SetBorderSize(0); pLegend->SetLineColor(0); pLegend->SetLineStyle(1); pLegend->SetLineWidth(1); pLegend->SetFillColor(0); pLegend->SetFillStyle(0); pLegend->SetTextSize(0.04); } }
void wmj_fit_stack() { //=========Macro generated from canvas: default_Canvas/defaultCanvas //========= (Tue May 3 07:35:30 2016) by ROOT version6.04/10 TCanvas *default_Canvas = new TCanvas("default_Canvas", "defaultCanvas",0,0,700,500); gStyle->SetOptStat(0); gStyle->SetOptTitle(0); default_Canvas->SetHighLightColor(2); default_Canvas->Range(0,0,1,1); default_Canvas->SetFillColor(0); default_Canvas->SetBorderMode(0); default_Canvas->SetBorderSize(2); default_Canvas->SetTickx(1); default_Canvas->SetTicky(1); default_Canvas->SetLeftMargin(0.14); default_Canvas->SetRightMargin(0.05); default_Canvas->SetTopMargin(0.05); default_Canvas->SetBottomMargin(0.16); default_Canvas->SetFrameLineWidth(2); default_Canvas->SetFrameBorderMode(0); // ------------>Primitives in pad: upperPad TPad *upperPad = new TPad("upperPad", "upperPad",0.005,0.05,0.995,0.995); upperPad->Draw(); upperPad->cd(); upperPad->Range(-0.1730123,-5358.989,1.06279,32919.5); upperPad->SetFillColor(0); upperPad->SetFillStyle(4000); upperPad->SetBorderMode(0); upperPad->SetBorderSize(2); upperPad->SetTickx(1); upperPad->SetTicky(1); upperPad->SetLeftMargin(0.14); upperPad->SetRightMargin(0.05); upperPad->SetTopMargin(0.05); upperPad->SetBottomMargin(0.14); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); upperPad->SetFrameLineWidth(2); upperPad->SetFrameBorderMode(0); Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fx3005[20] = { 0.025, 0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475, 0.525, 0.575, 0.625, 0.675, 0.725, 0.775, 0.825, 0.875, 0.925, 0.975}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fy3005[20] = { 0, 0, 9, 26, 118, 315, 881, 1812, 3086, 4575, 5856, 6537, 6824, 6348, 5662, 4769, 4941, 6726, 13179, 28019}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_felx3005[20] = { 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fely3005[20] = { 0, 0, 2.943461, 5.066015, 10.37428, 17.25528, 29.18586, 42.07053, 55.05403, 67.14059, 76.02614, 80.35326, 82.10902, 79.17591, 74.74792, 68.55976, 69.79403, 81.51372, 114.3009, 166.8895}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehx3005[20] = { 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehy3005[20] = { 1.147874, 1.147874, 4.110204, 6.164324, 11.37428, 18.25528, 30.18586, 43.07053, 56.05403, 68.14059, 77.02614, 81.35326, 83.10902, 80.17591, 75.74792, 69.55976, 70.79403, 82.51372, 115.3009, 167.8895}; TGraphAsymmErrors *grae = new TGraphAsymmErrors(20,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fx3005,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fy3005,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_felx3005,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehx3005,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fely3005,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehy3005); grae->SetName("h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]"); grae->SetTitle("Histogram of combData_plot__muminus_ISO_"); grae->SetFillColor(1); grae->SetFillStyle(0); grae->SetLineWidth(2); grae->SetMarkerStyle(20); TH1F *Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005 = new TH1F("Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005","Histogram of combData_plot__muminus_ISO_",100,0,1.1); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetMinimum(0); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetMaximum(31005.58); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetDirectory(0); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetStats(0); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetLineWidth(2); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->SetMarkerStyle(0); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetRange(1,91); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetNdivisions(1005); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetLabelOffset(0.02); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetTitle("Events / (0.05)"); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetTitleOffset(1.1); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]56300130023005); grae->Draw("e1pa"); Double_t h5_fx7[47] = { -0.02439024, -0.02439024, 0, 1.0201e-08, 0.04999999, 0.05000001, 0.09999999, 0.1, 0.15, 0.15, 0.2, 0.2, 0.25, 0.25, 0.3, 0.3, 0.35, 0.35, 0.4, 0.4, 0.45, 0.45, 0.5, 0.5, 0.55, 0.55, 0.6, 0.6, 0.65, 0.65, 0.7, 0.7, 0.75, 0.75, 0.8, 0.8, 0.85, 0.85, 0.9, 0.9, 0.95, 0.95, 1, 1, 1, 1.02439, 1.02439}; Double_t h5_fy7[47] = { 0, 0, 0, 8.630173e-06, 8.630173e-06, 8.630173e-06, 8.630173e-06, 8.630173e-06, 8.630173e-06, 3.789762, 3.789762, 71.12063, 71.12063, 211.4394, 211.4394, 857.7007, 857.7007, 1798.534, 1798.534, 3099.609, 3099.609, 4425.901, 4425.901, 5601.584, 5601.584, 6533.687, 6533.687, 6910.208, 6910.208, 6392.171, 6392.171, 5777.193, 5777.193, 5020.919, 5020.919, 5207.834, 5207.834, 6798.159, 6798.159, 13033.98, 13033.98, 27939.27, 27939.27, 0, 0, 0, 0}; TGraph *graph = new TGraph(47,h5_fx7,h5_fy7); graph->SetName("h5"); graph->SetTitle("Projection of "); Int_t ci; // for color index setting TColor *color; // for color definition with alpha ci = TColor::GetColor("#3333ff"); graph->SetFillColor(ci); ci = TColor::GetColor("#3333ff"); graph->SetLineColor(ci); graph->SetLineWidth(2); ci = TColor::GetColor("#3333ff"); graph->SetMarkerColor(ci); graph->SetMarkerStyle(0); TH1F *Graph_h57 = new TH1F("Graph_h57","Projection of ",100,-0.1292683,1.129268); Graph_h57->SetMinimum(0); Graph_h57->SetMaximum(30733.2); Graph_h57->SetDirectory(0); Graph_h57->SetStats(0); Graph_h57->SetLineWidth(2); Graph_h57->SetMarkerStyle(0); Graph_h57->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_h57->GetXaxis()->SetRange(11,90); Graph_h57->GetXaxis()->SetNdivisions(1005); Graph_h57->GetXaxis()->SetLabelFont(132); Graph_h57->GetXaxis()->SetLabelOffset(0.02); Graph_h57->GetXaxis()->SetLabelSize(0.05); Graph_h57->GetXaxis()->SetTitleSize(0.06); Graph_h57->GetXaxis()->SetTitleFont(132); Graph_h57->GetYaxis()->SetTitle("Events / (0.05)"); Graph_h57->GetYaxis()->SetLabelFont(132); Graph_h57->GetYaxis()->SetLabelSize(0.05); Graph_h57->GetYaxis()->SetTitleSize(0.06); Graph_h57->GetYaxis()->SetTitleFont(132); Graph_h57->GetZaxis()->SetLabelFont(132); Graph_h57->GetZaxis()->SetLabelSize(0.05); Graph_h57->GetZaxis()->SetTitleSize(0.06); Graph_h57->GetZaxis()->SetTitleFont(132); graph->SetHistogram(Graph_h57); graph->Draw("f"); Double_t sumBkgPdf_totbkg_fitW_fx8[47] = { -0.02439024, -0.02439024, 0, 1.0201e-08, 0.04999999, 0.05000001, 0.09999999, 0.1, 0.15, 0.15, 0.2, 0.2, 0.25, 0.25, 0.3, 0.3, 0.35, 0.35, 0.4, 0.4, 0.45, 0.45, 0.5, 0.5, 0.55, 0.55, 0.6, 0.6, 0.65, 0.65, 0.7, 0.7, 0.75, 0.75, 0.8, 0.8, 0.85, 0.85, 0.9, 0.9, 0.95, 0.95, 1, 1, 1, 1.02439, 1.02439}; Double_t sumBkgPdf_totbkg_fitW_fy8[47] = { 0, 0, 0, 2.878569e-06, 2.878569e-06, 2.878569e-06, 2.878569e-06, 2.878569e-06, 2.878569e-06, 3.789757, 3.789757, 71.12063, 71.12063, 211.4394, 211.4394, 855.0132, 855.0132, 1794.513, 1794.513, 3088.88, 3088.88, 4399.772, 4399.772, 5568.272, 5568.272, 6460.972, 6460.972, 6790.725, 6790.725, 6142.168, 6142.168, 5333.208, 5333.208, 4062.953, 4062.953, 3103.771, 3103.771, 2394.858, 2394.858, 1734.507, 1734.507, 1650.883, 1650.883, 0, 0, 0, 0}; graph = new TGraph(47,sumBkgPdf_totbkg_fitW_fx8,sumBkgPdf_totbkg_fitW_fy8); graph->SetName("sumBkgPdf_totbkg_fitW"); graph->SetTitle("Projection of "); ci = TColor::GetColor("#ffff66"); graph->SetFillColor(ci); ci = TColor::GetColor("#ffff66"); graph->SetLineColor(ci); graph->SetLineWidth(2); ci = TColor::GetColor("#ffff66"); graph->SetMarkerColor(ci); graph->SetMarkerStyle(0); TH1F *Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618 = new TH1F("Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618","Projection of ",100,-0.1292683,1.129268); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetMinimum(0); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetMaximum(7469.797); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetDirectory(0); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetStats(0); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetLineWidth(2); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->SetMarkerStyle(0); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetRange(11,90); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetNdivisions(1005); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetLabelOffset(0.02); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetYaxis()->SetTitle("Events / (0.05)"); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618->GetZaxis()->SetTitleFont(132); graph->SetHistogram(Graph_Graph_Graph_Graph_sumBkgPdf_totbkg_fitW131618); graph->Draw("f"); Double_t sumPdf_Norm[muminus_ISO_]_fx9[47] = { -0.02439024, -0.02439024, 0, 1.0201e-08, 0.04999999, 0.05000001, 0.09999999, 0.1, 0.15, 0.15, 0.2, 0.2, 0.25, 0.25, 0.3, 0.3, 0.35, 0.35, 0.4, 0.4, 0.45, 0.45, 0.5, 0.5, 0.55, 0.55, 0.6, 0.6, 0.65, 0.65, 0.7, 0.7, 0.75, 0.75, 0.8, 0.8, 0.85, 0.85, 0.9, 0.9, 0.95, 0.95, 1, 1, 1, 1.02439, 1.02439}; Double_t sumPdf_Norm[muminus_ISO_]_fy9[47] = { 0, 0, 0, 8.630165e-06, 8.630165e-06, 8.630165e-06, 8.630165e-06, 8.630165e-06, 8.630165e-06, 3.789756, 3.789756, 71.12054, 71.12054, 211.4391, 211.4391, 857.6998, 857.6998, 1798.532, 1798.532, 3099.606, 3099.606, 4425.897, 4425.897, 5601.578, 5601.578, 6533.68, 6533.68, 6910.201, 6910.201, 6392.164, 6392.164, 5777.187, 5777.187, 5020.914, 5020.914, 5207.829, 5207.829, 6798.152, 6798.152, 13033.97, 13033.97, 27939.24, 27939.24, 0, 0, 0, 0}; graph = new TGraph(47,sumPdf_Norm[muminus_ISO_]_fx9,sumPdf_Norm[muminus_ISO_]_fy9); graph->SetName("sumPdf_Norm[muminus_ISO_]"); graph->SetTitle("Projection of "); ci = TColor::GetColor("#ff0000"); graph->SetFillColor(ci); graph->SetFillStyle(0); ci = TColor::GetColor("#ff0000"); graph->SetLineColor(ci); graph->SetLineWidth(2); ci = TColor::GetColor("#ff0000"); graph->SetMarkerColor(ci); graph->SetMarkerStyle(0); TH1F *Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839 = new TH1F("Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839","Projection of ",100,-0.1292683,1.129268); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetMinimum(0); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetMaximum(30733.17); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetDirectory(0); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetStats(0); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetLineWidth(2); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->SetMarkerStyle(0); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetRange(11,90); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetNdivisions(1005); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetLabelOffset(0.02); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetYaxis()->SetTitle("Events / (0.05)"); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839->GetZaxis()->SetTitleFont(132); graph->SetHistogram(Graph_Graph_Graph_Graph_sumPdf_Norm[muminus_ISO_]151839); graph->Draw(""); Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fx3006[20] = { 0.025, 0.075, 0.125, 0.175, 0.225, 0.275, 0.325, 0.375, 0.425, 0.475, 0.525, 0.575, 0.625, 0.675, 0.725, 0.775, 0.825, 0.875, 0.925, 0.975}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fy3006[20] = { 0, 0, 9, 26, 118, 315, 881, 1812, 3086, 4575, 5856, 6537, 6824, 6348, 5662, 4769, 4941, 6726, 13179, 28019}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_felx3006[20] = { 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fely3006[20] = { 0, 0, 2.943461, 5.066015, 10.37428, 17.25528, 29.18586, 42.07053, 55.05403, 67.14059, 76.02614, 80.35326, 82.10902, 79.17591, 74.74792, 68.55976, 69.79403, 81.51372, 114.3009, 166.8895}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehx3006[20] = { 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025}; Double_t h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehy3006[20] = { 1.147874, 1.147874, 4.110204, 6.164324, 11.37428, 18.25528, 30.18586, 43.07053, 56.05403, 68.14059, 77.02614, 81.35326, 83.10902, 80.17591, 75.74792, 69.55976, 70.79403, 82.51372, 115.3009, 167.8895}; grae = new TGraphAsymmErrors(20,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fx3006,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fy3006,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_felx3006,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehx3006,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fely3006,h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]_fehy3006); grae->SetName("h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]"); grae->SetTitle("Histogram of combData_plot__muminus_ISO_"); grae->SetFillColor(1); grae->SetFillStyle(0); grae->SetLineWidth(2); grae->SetMarkerStyle(20); TH1F *Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006 = new TH1F("Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006","Histogram of combData_plot__muminus_ISO_",100,0,1.1); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetMinimum(0); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetMaximum(31005.58); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetDirectory(0); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetStats(0); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetLineWidth(2); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->SetMarkerStyle(0); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetRange(1,91); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetNdivisions(1005); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetLabelOffset(0.02); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetTitle("Events / (0.05)"); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetTitleOffset(1.1); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006->GetZaxis()->SetTitleFont(132); grae->SetHistogram(Graph_Graph_Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]563001300230053006); grae->Draw("e1p"); TLegend *leg = new TLegend(0.2,0.53,0.6,0.78,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextFont(132); leg->SetLineColor(1); leg->SetLineStyle(1); leg->SetLineWidth(2); leg->SetFillColor(10); leg->SetFillStyle(0); TLegendEntry *entry=leg->AddEntry("h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]","Data, #sqrt{s}=8 TeV","lep"); entry->SetLineColor(1); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(20); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("h5","Electroweak","f"); ci = TColor::GetColor("#3333ff"); entry->SetFillColor(ci); entry->SetFillStyle(1001); ci = TColor::GetColor("#3333ff"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("sumBkgPdf_totbkg_fitW","QCD","f"); ci = TColor::GetColor("#ffff66"); entry->SetFillColor(ci); entry->SetFillStyle(1001); ci = TColor::GetColor("#ffff66"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(132); entry=leg->AddEntry("sumPdf_Norm[muminus_ISO_]","Fit","l"); ci = TColor::GetColor("#ff0000"); entry->SetLineColor(ci); entry->SetLineStyle(1); entry->SetLineWidth(2); entry->SetMarkerColor(1); entry->SetMarkerStyle(21); entry->SetMarkerSize(1); entry->SetTextFont(132); leg->Draw(); TPaveText *pt = new TPaveText(0.2,0.8,0.4,0.87,"brNDC"); pt->SetBorderSize(0); pt->SetFillStyle(0); pt->SetLineWidth(2); pt->SetTextFont(132); TText *AText = pt->AddText("LHCb"); pt->Draw(); TH1F *Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy = new TH1F("Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy","Histogram of combData_plot__muminus_ISO_",100,0,1.1); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetMinimum(0); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetMaximum(31005.58); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetDirectory(0); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetStats(0); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetLineWidth(2); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->SetMarkerStyle(0); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetTitle("#it{p}_{T}^{#it{#mu}} / #it{p}_{T}^{#it{#mu}-jet} "); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetRange(1,91); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetNdivisions(1005); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetLabelOffset(0.02); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetXaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetTitle("Events / (0.05)"); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetTitleOffset(1.1); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetYaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetZaxis()->SetLabelFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetZaxis()->SetLabelSize(0.05); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetZaxis()->SetTitleSize(0.06); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->GetZaxis()->SetTitleFont(132); Graph_Graph_Graph_Graph_h_combData_Cut[samples == samples::fitW_etam_0 || samples == samples::fitW_etam_1 || samples == samples::fitW_etam_2 || samples == samples::fitW_etam_3]5630013002_copy->Draw("sameaxis"); upperPad->Modified(); default_Canvas->cd(); default_Canvas->Modified(); default_Canvas->cd(); default_Canvas->SetSelected(default_Canvas); }
void showHistograms(double canvasSizeX, double canvasSizeY, TH1* histogram_ref, const std::string& legendEntry_ref, double integral_ref, TH1* histogram2, const std::string& legendEntry2, double integral2, TH1* histogram3, const std::string& legendEntry3, double integral3, TH1* histogram4, const std::string& legendEntry4, double integral4, TH1* histogram5, const std::string& legendEntry5, double integral5, TH1* histogram6, const std::string& legendEntry6, double integral6, const std::string& xAxisTitle, double xAxisOffset, bool useLogScale, double yMin, double yMax, const std::string& yAxisTitle, double yAxisOffset, double legendX0, double legendY0, const std::string& outputFileName) { if ( !(histogram_ref && histogram2) ) return; TCanvas* canvas = new TCanvas("canvas", "canvas", canvasSizeX, canvasSizeY); canvas->SetFillColor(10); canvas->SetBorderSize(2); canvas->SetLeftMargin(0.12); canvas->SetBottomMargin(0.12); TPad* topPad = new TPad("topPad", "topPad", 0.00, 0.35, 1.00, 1.00); topPad->SetFillColor(10); topPad->SetTopMargin(0.04); topPad->SetLeftMargin(0.15); topPad->SetBottomMargin(0.03); topPad->SetRightMargin(0.05); topPad->SetLogy(useLogScale); TPad* bottomPad = new TPad("bottomPad", "bottomPad", 0.00, 0.00, 1.00, 0.35); bottomPad->SetFillColor(10); bottomPad->SetTopMargin(0.02); bottomPad->SetLeftMargin(0.15); bottomPad->SetBottomMargin(0.24); bottomPad->SetRightMargin(0.05); bottomPad->SetLogy(false); canvas->cd(); topPad->Draw(); topPad->cd(); //int colors[6] = { kBlack, kGreen - 6, kBlue - 7, kMagenta - 7, kCyan - 6, kRed - 6 }; int colors[6] = { kBlack, kRed, kBlue - 7, kMagenta - 7, kCyan - 6, kRed - 6 }; int markerStyles[6] = { 24, 25, 20, 21, 22, 23 }; int markerSizes[6] = { 1, 1, 1, 1, 1, 1 }; TLegend* legend = new TLegend(legendX0, legendY0, legendX0 + 0.61, legendY0 + 0.21, "", "brNDC"); legend->SetBorderSize(0); legend->SetFillColor(0); histogram_ref->SetTitle(""); histogram_ref->SetStats(false); histogram_ref->SetMinimum(yMin); histogram_ref->SetMaximum(yMax); histogram_ref->SetLineColor(colors[0]); histogram_ref->SetLineWidth(2); histogram_ref->SetMarkerColor(colors[0]); histogram_ref->SetMarkerStyle(markerStyles[0]); histogram_ref->SetMarkerSize(markerSizes[0]); histogram_ref->Draw("e1p"); //if ( integral_ref >= 0. ) legend->AddEntry(histogram_ref, Form("%s: %1.2f", legendEntry_ref.data(), integral_ref), "p"); //else legend->AddEntry(histogram_ref, legendEntry_ref.data(), "p"); legend->AddEntry(histogram_ref, Form("%s: %1.2f", legendEntry_ref.data(), integral_ref), "p"); TAxis* xAxis_top = histogram_ref->GetXaxis(); xAxis_top->SetTitle(xAxisTitle.data()); xAxis_top->SetTitleOffset(xAxisOffset); xAxis_top->SetLabelColor(10); xAxis_top->SetTitleColor(10); TAxis* yAxis_top = histogram_ref->GetYaxis(); yAxis_top->SetTitle(yAxisTitle.data()); yAxis_top->SetTitleOffset(yAxisOffset); if ( histogram2 ) { histogram2->SetLineColor(colors[1]); histogram2->SetLineWidth(2); histogram2->SetMarkerColor(colors[1]); histogram2->SetMarkerStyle(markerStyles[1]); histogram2->SetMarkerSize(markerSizes[1]); histogram2->Draw("e1psame"); //if ( integral2 >= 0. ) legend->AddEntry(histogram2, Form("%s: %1.2f", legendEntry2.data(), integral2), "p"); //else legend->AddEntry(histogram2, legendEntry2.data(), "p"); legend->AddEntry(histogram2, Form("%s: %1.2f", legendEntry2.data(), integral2), "p"); } if ( histogram3 ) { histogram3->SetLineColor(colors[2]); histogram3->SetLineWidth(2); histogram3->SetMarkerColor(colors[2]); histogram3->SetMarkerStyle(markerStyles[2]); histogram3->SetMarkerSize(markerSizes[2]); histogram3->Draw("e1psame"); //if ( integral3 >= 0. ) legend->AddEntry(histogram3, Form("%s: %1.2f", legendEntry3.data(), integral3), "p"); //else legend->AddEntry(histogram3, legendEntry3.data(), "p"); legend->AddEntry(histogram3, Form("%s: %1.2f", legendEntry3.data(), integral3), "p"); } if ( histogram4 ) { histogram4->SetLineColor(colors[3]); histogram4->SetLineWidth(2); histogram4->SetMarkerColor(colors[3]); histogram4->SetMarkerStyle(markerStyles[3]); histogram4->SetMarkerSize(markerSizes[3]); histogram4->Draw("e1psame"); if ( integral4 >= 0. ) legend->AddEntry(histogram4, Form("%s: %1.2f", legendEntry4.data(), integral4), "p"); else legend->AddEntry(histogram4, legendEntry4.data(), "p"); } if ( histogram5 ) { histogram5->SetLineColor(colors[4]); histogram5->SetLineWidth(2); histogram5->SetMarkerColor(colors[4]); histogram5->SetMarkerStyle(markerStyles[4]); histogram5->SetMarkerSize(markerSizes[4]); histogram5->Draw("e1psame"); if ( integral5 >= 0. ) legend->AddEntry(histogram5, Form("%s: %1.2f", legendEntry5.data(), integral5), "p"); else legend->AddEntry(histogram5, legendEntry5.data(), "p"); } if ( histogram6 ) { histogram6->SetLineColor(colors[5]); histogram6->SetLineWidth(2); histogram6->SetMarkerColor(colors[5]); histogram6->SetMarkerStyle(markerStyles[5]); histogram6->SetMarkerSize(markerSizes[5]); histogram6->Draw("e1psame"); if ( integral6 >= 0. ) legend->AddEntry(histogram6, Form("%s: %1.2f", legendEntry6.data(), integral6), "p"); else legend->AddEntry(histogram6, legendEntry6.data(), "p"); } legend->Draw(); canvas->cd(); bottomPad->Draw(); bottomPad->cd(); TH1* histogram2_div_ref = 0; if ( histogram2 ) { std::string histogramName2_div_ref = std::string(histogram2->GetName()).append("_div_").append(histogram_ref->GetName()); histogram2_div_ref = compRatioHistogram(histogramName2_div_ref, histogram2, histogram_ref); if ( histogram2_div_ref ) { histogram2_div_ref->SetTitle(""); histogram2_div_ref->SetStats(false); histogram2_div_ref->SetMinimum(-0.50); histogram2_div_ref->SetMaximum(+0.50); TAxis* xAxis_bottom = histogram2_div_ref->GetXaxis(); xAxis_bottom->SetTitle(xAxis_top->GetTitle()); xAxis_bottom->SetLabelColor(1); xAxis_bottom->SetTitleColor(1); xAxis_bottom->SetTitleOffset(1.20); xAxis_bottom->SetTitleSize(0.08); xAxis_bottom->SetLabelOffset(0.02); xAxis_bottom->SetLabelSize(0.08); xAxis_bottom->SetTickLength(0.055); TAxis* yAxis_bottom = histogram2_div_ref->GetYaxis(); yAxis_bottom->SetTitle(Form("#frac{%s - %s}{%s}", legendEntry2.data(), legendEntry_ref.data(), legendEntry_ref.data())); yAxis_bottom->SetTitleOffset(0.85); yAxis_bottom->SetNdivisions(505); yAxis_bottom->CenterTitle(); yAxis_bottom->SetTitleSize(0.08); yAxis_bottom->SetLabelSize(0.08); yAxis_bottom->SetTickLength(0.04); histogram2_div_ref->Draw("e1p"); } } TH1* histogram3_div_ref = 0; if ( histogram3 ) { std::string histogramName3_div_ref = std::string(histogram3->GetName()).append("_div_").append(histogram_ref->GetName()); histogram3_div_ref = compRatioHistogram(histogramName3_div_ref, histogram3, histogram_ref); if ( histogram3_div_ref ) { histogram3_div_ref->SetTitle(""); histogram3_div_ref->SetStats(false); histogram3_div_ref->SetMinimum(-0.50); histogram3_div_ref->SetMaximum(+0.50); TAxis* xAxis_bottom = histogram3_div_ref->GetXaxis(); xAxis_bottom->SetTitle(xAxis_top->GetTitle()); xAxis_bottom->SetLabelColor(1); xAxis_bottom->SetTitleColor(1); xAxis_bottom->SetTitleOffset(1.20); xAxis_bottom->SetTitleSize(0.08); xAxis_bottom->SetLabelOffset(0.02); xAxis_bottom->SetLabelSize(0.08); xAxis_bottom->SetTickLength(0.055); TAxis* yAxis_bottom = histogram3_div_ref->GetYaxis(); yAxis_bottom->SetTitle(Form("#frac{%s - %s}{%s}", legendEntry3.data(), legendEntry_ref.data(), legendEntry_ref.data())); yAxis_bottom->SetTitleOffset(0.85); yAxis_bottom->SetNdivisions(505); yAxis_bottom->CenterTitle(); yAxis_bottom->SetTitleSize(0.08); yAxis_bottom->SetLabelSize(0.08); yAxis_bottom->SetTickLength(0.04); if ( histogram2 ) histogram3_div_ref->Draw("e1psame"); else histogram3_div_ref->Draw("e1p"); } } TGraph* graph_line = new TGraph(2); graph_line->SetPoint(0, xAxis_top->GetXmin(), 0.); graph_line->SetPoint(1, xAxis_top->GetXmax(), 0.); graph_line->SetLineColor(8); graph_line->SetLineWidth(1); graph_line->Draw("L"); if ( histogram2_div_ref ) histogram2_div_ref->Draw("e1psame"); if ( histogram3_div_ref ) histogram3_div_ref->Draw("e1psame"); TH1* histogram4_div_ref = 0; if ( histogram4 ) { std::string histogramName4_div_ref = std::string(histogram4->GetName()).append("_div_").append(histogram_ref->GetName()); histogram4_div_ref = compRatioHistogram(histogramName4_div_ref, histogram4, histogram_ref); if ( histogram4_div_ref ) { histogram4_div_ref->Draw("e1psame"); } } TH1* histogram5_div_ref = 0; if ( histogram5 ) { std::string histogramName5_div_ref = std::string(histogram5->GetName()).append("_div_").append(histogram_ref->GetName()); histogram5_div_ref = compRatioHistogram(histogramName5_div_ref, histogram5, histogram_ref); if ( histogram5_div_ref ) { histogram5_div_ref->Draw("e1psame"); } } TH1* histogram6_div_ref = 0; if ( histogram6 ) { std::string histogramName6_div_ref = std::string(histogram6->GetName()).append("_div_").append(histogram_ref->GetName()); histogram6_div_ref = compRatioHistogram(histogramName6_div_ref, histogram6, histogram_ref); if ( histogram6_div_ref ) { histogram6_div_ref->Draw("e1psame"); } } canvas->Update(); size_t idx = outputFileName.find_last_of('.'); std::string outputFileName_plot = std::string(outputFileName, 0, idx); if ( useLogScale ) outputFileName_plot.append("_log"); else outputFileName_plot.append("_linear"); if ( idx != std::string::npos ) canvas->Print(std::string(outputFileName_plot).append(std::string(outputFileName, idx)).data()); canvas->Print(std::string(outputFileName_plot).append(".png").data()); //canvas->Print(std::string(outputFileName_plot).append(".pdf").data()); //canvas->Print(std::string(outputFileName_plot).append(".root").data()); delete legend; delete histogram2_div_ref; delete histogram3_div_ref; delete histogram4_div_ref; delete histogram5_div_ref; delete histogram6_div_ref; delete topPad; delete bottomPad; delete canvas; }
void rulevisHists( TDirectory *rfdir, TDirectory *vardir, TDirectory *corrdir, TMVAGlob::TypeOfPlot type) { // if (rfdir==0) return; if (vardir==0) return; if (corrdir==0) return; // const TString rfName = rfdir->GetName(); const TString maintitle = rfName + " : Rule Importance"; const TString rfNameOpt = "_RF2D_"; const TString outfname[TMVAGlob::kNumOfMethods] = { "rulevisHists", "rulevisHists_decorr", "rulevisCorr_pca", "rulevisCorr_gaussdecorr" }; const TString outputName = outfname[type]+"_"+rfdir->GetName(); // TIter rfnext(rfdir->GetListOfKeys()); TKey *rfkey; Double_t rfmax; Double_t rfmin; Bool_t allEmpty=kTRUE; Bool_t first=kTRUE; while ((rfkey = (TKey*)rfnext())) { // make sure, that we only look at histograms TClass *cl = gROOT->GetClass(rfkey->GetClassName()); if (!cl->InheritsFrom("TH2F")) continue; TH2F *hrf = (TH2F*)rfkey->ReadObj(); TString hname= hrf->GetName(); if (hname.Contains("__RF_")){ // found a new RF plot Double_t valmin = hrf->GetMinimum(); Double_t valmax = hrf->GetMaximum(); if (first) { rfmin=valmin; rfmax=valmax; first = kFALSE; } else { if (valmax>rfmax) rfmax=valmax; if (valmin<rfmin) rfmin=valmin; } if (hrf->GetEntries()>0) allEmpty=kFALSE; } } if (first) { cout << "ERROR: no RF plots found..." << endl; return; } const Int_t nContours = 100; Double_t contourLevels[nContours]; Double_t dcl = (rfmax-rfmin)/Double_t(nContours-1); // for (Int_t i=0; i<nContours; i++) { contourLevels[i] = rfmin+dcl*Double_t(i); } /////////////////////////// vardir->cd(); // how many plots are in the directory? Int_t noPlots = ((vardir->GetListOfKeys())->GetEntries()) / 2; // define Canvas layout here! // default setting Int_t xPad; // no of plots in x Int_t yPad; // no of plots in y Int_t width; // size of canvas Int_t height; switch (noPlots) { case 1: xPad = 1; yPad = 1; width = 500; height = 0.7*width; break; case 2: xPad = 2; yPad = 1; width = 600; height = 0.7*width; break; case 3: xPad = 3; yPad = 1; width = 900; height = 0.4*width; break; case 4: xPad = 2; yPad = 2; width = 600; height = width; break; default: xPad = 3; yPad = 2; width = 800; height = 0.7*width; break; } Int_t noPad = xPad * yPad ; // this defines how many canvases we need const Int_t noCanvas = 1 + (Int_t)((noPlots - 0.001)/noPad); TCanvas **c = new TCanvas*[noCanvas]; for (Int_t ic=0; ic<noCanvas; ic++) c[ic] = 0; // counter variables Int_t countCanvas = 0; Int_t countPad = 1; // loop over all objects in directory TIter next(vardir->GetListOfKeys()); TKey *key; TH1F *sigCpy=0; TH1F *bgdCpy=0; // Bool_t first = kTRUE; while ((key = (TKey*)next())) { // make sure, that we only look at histograms TClass *cl = gROOT->GetClass(key->GetClassName()); if (!cl->InheritsFrom("TH1")) continue; sig = (TH1F*)key->ReadObj(); TString hname= sig->GetName(); // check for all signal histograms if (hname.Contains("__S")){ // found a new signal plot // sigCpy = new TH1F(*sig); // create new canvas if ((c[countCanvas]==NULL) || (countPad>noPad)) { char cn[20]; sprintf( cn, "rulehist%d_", countCanvas+1 ); TString cname(cn); cname += rfdir->GetName(); c[countCanvas] = new TCanvas( cname, maintitle, countCanvas*50+200, countCanvas*20, width, height ); // style c[countCanvas]->Divide(xPad,yPad); countPad = 1; } // save canvas to file TPad *cPad = (TPad *)(c[countCanvas]->GetPad(countPad)); c[countCanvas]->cd(countPad); countPad++; // find the corredponding background histo TString bgname = hname; bgname.ReplaceAll("__S","__B"); hkey = vardir->GetKey(bgname); bgd = (TH1F*)hkey->ReadObj(); if (bgd == NULL) { cout << "ERROR!!! couldn't find backgroung histo for" << hname << endl; exit; } TString rfname = hname; rfname.ReplaceAll("__S","__RF"); TKey *hrfkey = rfdir->GetKey(rfname); TH2F *hrf = (TH2F*)hrfkey->ReadObj(); Double_t wv = hrf->GetMaximum(); // if (rfmax>0.0) // hrf->Scale(1.0/rfmax); hrf->SetMinimum(rfmin); // make sure it's zero -> for palette axis hrf->SetMaximum(rfmax); // make sure max is 1.0 -> idem hrf->SetContour(nContours,&contourLevels[0]); // this is set but not stored during plot creation in MVA_Factory // TMVAGlob::SetSignalAndBackgroundStyle( sigK, bgd ); sig->SetFillStyle(3002); sig->SetFillColor(1); sig->SetLineColor(1); sig->SetLineWidth(2); bgd->SetFillStyle(3554); bgd->SetFillColor(1); bgd->SetLineColor(1); bgd->SetLineWidth(2); // chop off "signal" TString title(hrf->GetTitle()); title.ReplaceAll("signal",""); // finally plot and overlay Float_t sc = 1.1; if (countPad==2) sc = 1.3; sig->SetMaximum( TMath::Max( sig->GetMaximum(), bgd->GetMaximum() )*sc ); Double_t smax = sig->GetMaximum(); if (first) { hrf->SetTitle( maintitle ); first = kFALSE; } else { hrf->SetTitle( "" ); } hrf->Draw("colz ah"); TMVAGlob::SetFrameStyle( hrf, 1.2 ); sig->Draw("same ah"); bgd->Draw("same ah"); // draw axis using range [0,smax] hrf->GetXaxis()->SetTitle( title ); hrf->GetYaxis()->SetTitleOffset( 1.30 ); hrf->GetYaxis()->SetTitle("Events"); hrf->GetYaxis()->SetLimits(0,smax); hrf->Draw("same axis"); cPad->SetRightMargin(0.13); cPad->Update(); // Draw legend if (countPad==2){ TLegend *legend= new TLegend( cPad->GetLeftMargin(), 1-cPad->GetTopMargin()-.18, cPad->GetLeftMargin()+.4, 1-cPad->GetTopMargin() ); legend->AddEntry(sig,"Signal","F"); legend->AddEntry(bgd,"Background","F"); legend->Draw("same"); legend->SetBorderSize(1); legend->SetMargin( 0.3 ); legend->SetFillColor(19); legend->SetFillStyle(1); } // save canvas to file if (countPad > noPad) { c[countCanvas]->Update(); TString fname = Form( "plots/%s_c%i", outputName.Data(), countCanvas+1 ); TMVAGlob::imgconv( c[countCanvas], fname ); // TMVAGlob::plot_logo(); // don't understand why this doesn't work ... :-( countCanvas++; } } } if (countPad <= noPad) { c[countCanvas]->Update(); TString fname = Form( "plots/%s_c%i", outputName.Data(), countCanvas+1 ); TMVAGlob::imgconv( c[countCanvas], fname ); } }