void DrawStatBox(TObject** Histos, std::vector<char*> legend, bool Mean, double X, double Y, double W, double H) { int N = legend.size(); char buffer[255]; if(Mean)H*=3; for(int i=0;i<N;i++){ TPaveText* stat = new TPaveText(X,Y-(i*H), X+W, Y-(i+1)*H, "NDC"); TH1* Histo = (TH1*)Histos[i]; sprintf(buffer,"Entries : %i\n",(int)Histo->GetEntries()); stat->AddText(buffer); if(Mean){ sprintf(buffer,"Mean : %6.2f\n",Histo->GetMean()); stat->AddText(buffer); sprintf(buffer,"RMS : %6.2f\n",Histo->GetRMS()); stat->AddText(buffer); } stat->SetFillColor(0); stat->SetLineColor(Color[i]); stat->SetTextColor(Color[i]); stat->SetBorderSize(0); stat->SetMargin(0.05); stat->SetTextAlign(12); stat->Draw(); } }
void banner4Plot (){ TPaveText* pt ; pt = new TPaveText(.14,0.91,.25,.94,"NDC"); pt->AddText("Preliminary"); pt->SetFillColor(0); pt->SetTextSize(0.035); pt->SetFillStyle(0); pt->SetLineColor(0); pt->SetLineWidth(0); pt->SetMargin(0); pt->SetShadowColor(0); pt->Draw(); }
//************************************************************* void arrangeCanvas(TCanvas *canv,TH1F* meanplots[100],TH1F* widthplots[100],Int_t nFiles, TString LegLabels[10], bool onlyBias){ //************************************************************* TPaveText *ali = new TPaveText(0.18,0.87,0.50,0.93,"NDC"); ali->SetFillColor(10); ali->SetTextColor(1); ali->SetTextFont(42); ali->SetMargin(0.); ali->SetLineColor(10); ali->SetShadowColor(10); // pt->SetTextAlign(11); TText *alitext = ali->AddText("Alignment: PCL"); //"Preliminary 2015 - 0T collision data"); alitext->SetTextSize(0.04); TLegend *lego = new TLegend(0.18,0.80,0.78,0.92); lego-> SetNColumns(2); //TLegend *lego = new TLegend(0.18,0.77,0.50,0.86); lego->SetFillColor(10); lego->SetTextSize(0.04); lego->SetTextFont(42); lego->SetFillColor(10); lego->SetLineColor(10); lego->SetShadowColor(10); TPaveText *pt = NULL; TPaveText *pt2 = NULL; TPaveText *pt3 = NULL; if(!onlyBias){ pt =new TPaveText(0.179,0.955,0.260,0.985,"NDC"); } else { pt =new TPaveText(0.179,0.955,0.260,0.985,"NDC"); } pt->SetFillColor(10); pt->SetTextColor(1); pt->SetTextFont(61); // pt->SetTextAlign(11); TText *text1 = pt->AddText("CMS"); //"Preliminary 2015 - 0T collision data"); text1->SetTextSize(0.05); float extraOverCmsTextSize = 0.76; if(!onlyBias){ pt2 =new TPaveText(0.3,0.95,0.503,0.98,"NDC"); } else { pt2 =new TPaveText(0.3,0.95,0.503,0.98,"NDC"); } pt2->SetFillColor(10); pt2->SetTextColor(1); pt2->SetTextFont(52); pt2->SetTextAlign(22); TText *text2 = pt2->AddText("work in progress"); text2->SetTextSize(0.05*extraOverCmsTextSize); if(!onlyBias){ pt3 =new TPaveText(0.6,0.95,0.98,0.98,"NDC"); } else { pt3 =new TPaveText(0.6,0.95,0.98,0.98,"NDC"); } pt3->SetFillColor(10); pt3->SetTextColor(1); pt3->SetTextFont(42); // pt2->SetTextAlign(11); TText *text3 = pt3->AddText("3.8T collision data 2015"); text3->SetTextSize(0.05*extraOverCmsTextSize); canv->SetFillColor(10); if(!onlyBias) { canv->Divide(2,1); canv->cd(1)->SetBottomMargin(0.12); canv->cd(1)->SetLeftMargin(0.17); canv->cd(1)->SetRightMargin(0.02); canv->cd(1)->SetTopMargin(0.06); canv->cd(2)->SetBottomMargin(0.12); canv->cd(2)->SetLeftMargin(0.17); canv->cd(2)->SetRightMargin(0.02); canv->cd(2)->SetTopMargin(0.06); canv->cd(1); } else { canv->cd()->SetBottomMargin(0.14); canv->cd()->SetLeftMargin(0.17); canv->cd()->SetRightMargin(0.02); canv->cd()->SetTopMargin(0.06); canv->cd(); } Double_t absmin(999.); Double_t absmax(-999.); for(Int_t i=0; i<nFiles; i++){ if(meanplots[i]->GetMaximum()>absmax) absmax = meanplots[i]->GetMaximum(); if(meanplots[i]->GetMinimum()<absmin) absmin = meanplots[i]->GetMinimum(); } Double_t safeDelta=(absmax-absmin)/2.; Double_t theExtreme=std::max(absmax,TMath::Abs(absmin)); for(Int_t i=0; i<nFiles; i++){ TString myTitle = meanplots[i]->GetName(); float axmin = -999; float axmax = 999.; int ndiv = 510; if(myTitle.Contains("eta")){ axmin = -2.5; axmax = 2.5; ndiv = 505; } else if (myTitle.Contains("phi")){ axmin = -TMath::Pi(); axmax = TMath::Pi(); ndiv = 510; } else { std::cout<<"unrecongnized variable"; } meanplots[i]->GetXaxis()->SetLabelOffset(999); meanplots[i]->GetXaxis()->SetTickLength(0); // Redraw the new axis gPad->Update(); TGaxis *newaxis = new TGaxis(gPad->GetUxmin(),gPad->GetUymin(), gPad->GetUxmax(),gPad->GetUymin(), axmin, axmax, //meanplots[i]->GetXaxis()->GetXmin(), //meanplots[i]->GetXaxis()->GetXmax(), ndiv,"SDH"); TGaxis *newaxisup = new TGaxis(gPad->GetUxmin(),gPad->GetUymax(), gPad->GetUxmax(),gPad->GetUymax(), axmin, axmax, //meanplots[i]->GetXaxis()->GetXmin(), //meanplots[i]->GetXaxis()->GetXmax(), ndiv,"-SDH"); newaxis->SetLabelOffset(0.02); newaxis->SetLabelFont(42); newaxis->SetLabelSize(.05); newaxis->Draw(); newaxisup->SetLabelOffset(-0.02); newaxisup->SetLabelFont(42); newaxisup->SetLabelSize(0); newaxisup->Draw(); if(i==0){ //meanplots[i]->GetYaxis()->SetRangeUser(absmin-safeDelta/2.,absmax+safeDelta); std::cout<<"name is: "<< meanplots[i]->GetName() << " absmin:" <<absmin<<" absmax: "<<absmax<<" safeDelta: "<<safeDelta<<std::endl; TString theTitle = meanplots[i]->GetName(); if( theTitle.Contains("Norm")){ meanplots[i]->GetYaxis()->SetRangeUser(std::min(-0.48,absmin-safeDelta),std::max(0.48,absmax+safeDelta)); } else { if(!onlyBias){ meanplots[i]->GetYaxis()->SetRangeUser(absmin-safeDelta,absmax+safeDelta); } else { meanplots[i]->GetYaxis()->SetRangeUser(-theExtreme-(TMath::Abs(absmin)/10.),theExtreme+(TMath::Abs(absmax/10.))); } //meanplots[i]->GetYaxis()->SetRangeUser(-theExtreme,theExtreme); } meanplots[i]->Draw("e1"); if(onlyBias){ Int_t nbins = meanplots[i]->GetNbinsX(); Double_t lowedge = meanplots[i]->GetBinLowEdge(1); Double_t highedge = meanplots[i]->GetBinLowEdge(nbins+1); TH1F* hzero = DrawZero(meanplots[i],nbins,lowedge,highedge); hzero->Draw("PLsame"); } } else meanplots[i]->Draw("e1sames"); lego->AddEntry(meanplots[i],LegLabels[i]); } //ali->Draw(); lego->Draw(); pt->Draw("same"); pt2->Draw("same"); pt3->Draw("same"); if(!onlyBias){ canv->cd(2); Double_t absmax2(-999.); for(Int_t i=0; i<nFiles; i++){ if(widthplots[i]->GetMaximum()>absmax2) absmax2 = widthplots[i]->GetMaximum(); } Double_t safeDelta2=absmax2/3.; for(Int_t i=0; i<nFiles; i++){ TString myTitle = widthplots[i]->GetName(); float axmin = -999; float axmax = 999.; int ndiv = 510; if(myTitle.Contains("eta")){ axmin = -2.5; axmax = 2.5; ndiv = 505; } else if (myTitle.Contains("phi")){ axmin = -TMath::Pi(); axmax = TMath::Pi(); ndiv = 510; } else { std::cout<<"unrecongnized variable"; } widthplots[i]->GetXaxis()->SetLabelOffset(999); widthplots[i]->GetXaxis()->SetTickLength(0); // Redraw the new axis gPad->Update(); TGaxis *newaxis2 = new TGaxis(gPad->GetUxmin(),gPad->GetUymin(), gPad->GetUxmax(),gPad->GetUymin(), axmin, axmax, //widthplots[i]->GetXaxis()->GetXmin(), //widthplots[i]->GetXaxis()->GetXmax(), ndiv,"SDH"); newaxis2->SetLabelOffset(0.02); newaxis2->SetLabelFont(42); newaxis2->SetLabelSize(.05); newaxis2->Draw(); TGaxis *newaxis2up = new TGaxis(gPad->GetUxmin(),gPad->GetUymax(), gPad->GetUxmax(),gPad->GetUymax(), axmin, axmax, //widthplots[i]->GetXaxis()->GetXmin(), //widthplots[i]->GetXaxis()->GetXmax(), ndiv,"-SDH"); newaxis2up->SetLabelOffset(-0.02); newaxis2up->SetLabelFont(42); newaxis2up->SetLabelSize(0.); newaxis2up->Draw(); if(i==0) widthplots[i]->Draw("e1"); else widthplots[i]->Draw("e1sames"); widthplots[i]->SetMinimum(0.5); widthplots[i]->SetMaximum(absmax2+safeDelta2); } lego->Draw(); pt->Draw("same"); pt2->Draw("same"); pt3->Draw("same"); } }
int stack_upgrade_42X() { //gROOT->ProcessLine(".L ./tdrstyle.C"); //setTDRStyle(); gStyle->SetPadColor(0); gStyle->SetCanvasColor(0); gStyle->SetCanvasBorderMode(0); gStyle->SetCanvasColor(0); gStyle->SetPadBorderMode(0); gStyle->SetStatColor(0); gStyle->SetOptStat(0000000); gStyle->SetOptFit(0111); gStyle->SetOptTitle(0); gStyle->SetTitleStyle(0); gStyle->SetTitleFillColor(0); gStyle->SetPalette(1); const int nFiles = 7; //Int_t r = 4; //DoubleEle + WZ //TString fileNames[nFiles] = {"DoubleEle","TT_42X_TruePU","WZ_42X_TruePU","ZZ_42X_TruePU","DY_42X_TruePU","Htt120_42X_TruePU","Hww120_42X_TruePU"}; //DoubleEle + WZjets TString fileNames[nFiles] = {"DoubleMu","ZZ_42X_TruePU","WZJets_42X_TruePU","TT_42X_TruePU","DY_42X_TruePU","Htt120_42X_TruePU","Hww120_42X_TruePU"}; //DoubleMu + WZ //TString fileNames[nFiles] = {"DoubleMu","TT_42X_TruePU","WZ_42X_TruePU","ZZ_42X_TruePU","DY_42X_TruePU","Htt120_42X_TruePU","Hww120_42X_TruePU"}; //DoubleMu + WZjets //TString fileNames[nFiles] = {"DoubleMu","TT_42X_TruePU","WZjets_42X_TruePU","ZZ_42X_TruePU","DY_42X_TruePU","Htt120_42X_TruePU","Hww120_42X_TruePU"}; //DoubleEle + WZ //Double_t weights[nFiles] = {1.00, 0.01054, 0.0392, 0.00047967, 0.44927,0.0009171,0.000136}; //DoubleEle + WZjets //Double_t weights[nFiles] = {1.00, 0.0004796752, 0.00351, 0.010544, 0.449278,0.00091718,0.000136}; //DoubleMu + WZ //Double_t weights[nFiles] = {1.00, 0.01054, 0.0392, 0.00047967, 0.44927,0.0009171,0.000136}; //DoubleMu + WZjets //Double_t weights[nFiles] = {1.00, 0.01054, 0.003525, 0.00047967, 0.44927,0.0009171,0.000136}; TFile * f[nFiles]; std::stringstream indexes; for(int iFile = 0; iFile < nFiles; iFile++) { indexes.str(""); indexes << fileNames[iFile]; std::string input_file="NewCuts/forPlot/"+indexes.str()+".root"; f[iFile] = TFile::Open(input_file.c_str()); if(!f[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } const int nHist1 = 5; //const int nHist1 = 44; TString histNames1[nHist1] = {"h_Zmass_mumu","h_H_mass_type_1","h_H_mass_type_2","h_H_mass_type_3","h_H_mass_type_4"}; TString histTitles[nHist1] = {"M_{2#mu}[GeV]","M_{#mu#tau}[GeV]","M_{#mue}[GeV]","M_{e#tau}[GeV]","M_{#tau#tau}[GeV]"}; TString PaveText[nHist1] = {"Z#mu#mu","MMMT","MMME","MMET","MMTT"}; //~ //~ TString histNames1[nHist1] = {"h_Zmass","h_Zpt","h_Z_eta","h_PF_MET_selected","h_Tmass","h_nbjets","h_nbjetsVetoed","h_nbjets_afterVeto","h_cut_flow_weight"};//,"h_H_mass_type_5","h_H_mass_type_6","h_H_mass_type_7","h_H_mass_type_8"}; //~ TString histTitles[nHist1] = {"M_{Z}[GeV]","Z p_{T} [GeV]","Z #eta", "PF MET [GeV]", "M_{T} [GeV]", "# b-jets", "# of b-jets causing veto", "# b-jets after the veto", "Cut flow" };//,"M_{#mu#tau}[GeV]","M_{#mue}[GeV]","M_{e#tau}[GeV]","M_{#tau#tau}[GeV]"}; //~ TString PaveText[nHist1] = {"Z all","Z all","Z all","All","All","All","All","All", "All" };//,"EEMT","EEME","EEET","EETT"}; //TString histNames1[nHist1] = {"h_mu1Z_pt", "h_mu2Z_pt", "h_Z_lep1_eta", "h_Z_lep2_eta", "h_Z_lep1_phi", "h_Z_lep2_phi", "h_Zmass_mumu", "h_Zmass_ee","h_Zpt_mumu", "h_Zpt_ee","h_Zmass", "h_Zpt","h_H_mass", "h_H_pt","h_H_eta", "h_H_phi", "h_H_mass_type_1", "h_H_mass_type_2", "h_H_mass_type_3", "h_H_mass_type_4", "h_H_mass_type_5", "h_H_mass_type_6", "h_H_mass_type_7", "h_H_mass_type_8", "h_Tmass","h_H_lep1_eta","h_H_lep2_eta","h_H_lep1_phi","h_H_lep2_phi","h_nbjets","h_nbjets_afterVeto","h_nbjetsVetoed","h_nPU_Info","h_nPU_InfoTrue","h_nPU_Bunch0","h_nPU_Info_W","h_nPU_InfoTrue_W","h_nPU_Bunch0_W","h_Nvertex_NoCut","h_Nvertex_NoCut_W","h_Nvertex_AfterZ","h_Nvertex_AfterZ_W","h_Nvertex_AfterZH","h_Nvertex_AfterZH_W"}; TH1F * h_1d[nHist1][nFiles]; TH1F * signal[nHist1]; Double_t weights[nFiles]; Double_t xsection[nFiles]={1.0, 0.106, 0.868, 17.32, 3048, 0.0184915, 0.0039508088}; const double total_lumi = 4934.0; //1294.0 +2741.0; // pb-1 for(int iFile = 0; iFile < nFiles; iFile++) { TH1D * h_pu = (TH1D*)f[iFile]->Get("h_nPU_raw"); std::cout << h_pu->Integral() << std::endl; double lumi = h_pu->Integral()/xsection[iFile]; if(iFile > 0) weights[iFile]=total_lumi/lumi; else weights[iFile] = 1.0; std::cout << weights[iFile] << std::endl; } for(int iFile = 0; iFile < nFiles; iFile++) { for(int iHist = 0; iHist < nHist1; iHist++) { h_1d[iHist][iFile] = (TH1F*)f[iFile]->Get(histNames1[iHist]); h_1d[iHist][iFile]->Scale(weights[iFile]); if(iHist > 0) h_1d[iHist][iFile]->Rebin(10); } } int ZZ_Color = TColor::GetColor("#99ff99"); int WZ_Color = TColor::GetColor("#660099"); int TTbar_Color = TColor::GetColor("#cc66cc"); int Zjet_Color = TColor::GetColor("#32c3ff"); TCanvas *c1 = new TCanvas("c1","",5,30,650,600); //gPad->SetLogy(); c1->SetGrid(0,0); c1->SetFillStyle(4000); c1->SetFillColor(10); c1->SetTicky(); c1->SetObjectStat(0); for(int iHist = 0; iHist < nHist1; iHist++){ signal[iHist] = (TH1F*)h_1d[iHist][5]->Clone();} for(int iHist = 0; iHist < nHist1; iHist++) { THStack *hs = new THStack("hs","Stacked MC histograms"); for(int iFile=1; iFile < nFiles-1; iFile++) { h_1d[iHist][iFile]->SetLineWidth(0); h_1d[iHist][iFile]->SetFillStyle(3244); if(iFile == 1){ h_1d[iHist][iFile]->SetFillColor(ZZ_Color); } else if(iFile == 2){ h_1d[iHist][iFile]->SetFillColor(WZ_Color); } else if(iFile == 3){ h_1d[iHist][iFile]->SetFillColor(TTbar_Color); } else if(iFile == 4){ h_1d[iHist][iFile]->SetFillColor(Zjet_Color); } else if(iFile == 5){ signal[iHist]->Add(h_1d[iHist][iFile+1]); signal[iHist]->SetLineColor(kRed); signal[iHist]->SetLineWidth(2.0); } if(iFile < 5) hs->Add(h_1d[iHist][iFile],"hist"); } //hs->Add(signal[iHist],"hist"); h_1d[iHist][0]->SetMarkerStyle(21); h_1d[iHist][0]->SetMarkerSize(0.7); TLegend* leg = new TLegend(0.65,0.70,0.88,0.88,NULL,"brNDC"); leg->SetFillColor(0); leg->SetTextSize(0.035); leg->SetBorderSize(0); leg->AddEntry(h_1d[iHist][0],"data 2011","p"); leg->AddEntry(h_1d[iHist][1],"ZZ","f"); leg->AddEntry(h_1d[iHist][2],"WZ","f"); leg->AddEntry(h_1d[iHist][3],"t#bar{t}","f"); leg->AddEntry(h_1d[iHist][4],"Zjet","f"); leg->AddEntry(signal[iHist],"ZH(120)#times 5","f"); TString lumist="4.9 fb^{-1}"; TPaveText *ll = new TPaveText(0.25, 0.95, 0.95, 0.99, "NDC"); ll->SetTextSize(0.03); ll->SetTextFont(62); ll->SetFillColor(0); ll->SetBorderSize(0); ll->SetMargin(0.01); ll->SetTextAlign(12); // align left TString text = PaveText[iHist]; ll->AddText(0.01,0.5,text); text = "#sqrt{s} = 7 TeV L = "; text = text + lumist; // ll->SetTextAlign(32); // align right ll->AddText(0.5, 0.5, text); /*double max_dy = h_1d[iHist][4]->GetMaximum(); double max_data = h_1d[iHist][0]->GetMaximum(); double max = 0; if (max_dy > max_data){ max = max_dy;} else { max = max_data;} if (max != 0) hs->SetMaximum(max); cout << "max data: " << max_data << endl; cout << "max dy: " << max_dy << endl; */ h_1d[iHist][0]->Draw("PE01"); double max = h_1d[iHist][0]->GetMaximum(); h_1d[iHist][0]->GetYaxis()->SetRangeUser(1e-2,200*max); // if(iHist > 0 && iHist < 4) h_1d[iHist][0]->GetXaxis()->SetRangeUser(0,150); h_1d[iHist][0]->GetXaxis()->SetTitle(histTitles[iHist]); hs->Draw("same"); signal[iHist]->Scale(10.); signal[iHist]->Draw("histsame"); h_1d[iHist][0]->Draw("samePE01"); leg->Draw("same"); ll->Draw("same"); gPad->RedrawAxis(); c1->SetLogy(); c1->Print("NewCuts/Mu_"+histNames1[iHist]+"_all.png"); c1->Print("NewCuts/Mu_"+histNames1[iHist]+"_all.eps"); c1->SetLogy(0); h_1d[iHist][0]->GetYaxis()->SetRangeUser(0,1.5*max); c1->Print("NewCuts/Mu_"+histNames1[iHist]+"_all_normal.png"); c1->Print("NewCuts/Mu_"+histNames1[iHist]+"_all_normal.eps"); leg->Clear(); hs->Clear(); } return 0; }
int stack_upgrade() { //gROOT->ProcessLine(".L ./tdrstyle.C"); //setTDRStyle(); gStyle->SetPadColor(0); gStyle->SetCanvasColor(0); gStyle->SetCanvasBorderMode(0); gStyle->SetCanvasColor(0); gStyle->SetPadBorderMode(0); gStyle->SetStatColor(0); gStyle->SetOptStat(0000000); gStyle->SetOptFit(0111); gStyle->SetOptTitle(0); gStyle->SetTitleStyle(0); gStyle->SetTitleFillColor(0); gStyle->SetPalette(1); std::vector<TString> bg_names; std::vector<Double_t> bg_xsec; std::vector<Bool_t> bg_plot; std::vector<Bool_t> bg_save; std::vector<TString> bg_titles; std::ifstream myfile; myfile.open ("BGinput_v22.txt"); if (myfile.is_open()){ while ( myfile.good() ){ TString name; myfile >> name; if(name.Length()==0) continue; bg_names.push_back(name); Double_t xsec; myfile >> xsec; bg_xsec.push_back(xsec); Bool_t plot; myfile >> plot; bg_plot.push_back(plot); Bool_t save; myfile >> save; bg_save.push_back(save); TString title; myfile >> title; bg_titles.push_back(title); std::cout << name << " " << xsec << " " << " " << plot << save << std::endl; } myfile.close(); } for (uint iVec=0; iVec < bg_names.size(); iVec++) { std::cout << iVec << ": " << bg_names[iVec] << " " << bg_xsec[iVec] << " " << " " << bg_plot[iVec] << bg_save[iVec] << std::endl; } std::vector<TString> data_names; std::vector<Double_t> data_lumi; std::ifstream datafile; datafile.open ("Datainput_v22.txt"); if (datafile.is_open()){ while ( datafile.good() ){ TString name; datafile >> name; if(name.Length()==0) continue; data_names.push_back(name); Double_t xsec; datafile >> xsec; data_lumi.push_back(xsec); std::cout << name << " " << xsec << std::endl; } datafile.close(); } std::vector<TString> signal_names; std::vector<TString> signal_titles; std::vector<Double_t> signal_xsec; std::ifstream signalfile; signalfile.open ("Signalinput_v22.txt"); if (signalfile.is_open()){ while ( signalfile.good() ){ TString title; signalfile >> title; if(title.Length()==0) continue; signal_titles.push_back(title); TString name; signalfile >> name; signal_names.push_back(name); Double_t xsec; signalfile >> xsec; signal_xsec.push_back(xsec); std::cout << title << " " << name << " " << xsec << std::endl; } signalfile.close(); } const int nFiles = 7; //Int_t r = 4; //DoubleEle + WZ //TString fileNames[nFiles] = {"DoubleEle","TT_42X_TruePU","WZ_42X_TruePU","ZZ_42X_TruePU","DY_42X_TruePU","Htt120_42X_TruePU","Hww120_42X_TruePU"}; //DoubleEle + WZjets TString fileNames[nFiles] = {"2012", "ZZ", "WZ", "TT", "TTZ", "GG2L2L", "GG4L"}; TString inputDir = "/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/MySummary_v31/"; TString outputDir = "/home/jpavel/analysis/CMS/Plots/Stack/PostMoriond/20130918_v31"; gROOT->ProcessLine(".!mkdir -p "+outputDir+"/png"); gROOT->ProcessLine(".!mkdir -p "+outputDir+"/pdf"); std::vector<TFile*> f_bg; std::vector<TFile*> f_data; std::stringstream indexes; for(int iFile = 0; iFile < data_names.size(); iFile++) { indexes.str(""); indexes << inputDir << data_names[iFile] << "/Summary.root"; std::string input_file=indexes.str(); f_data.push_back(TFile::Open(input_file.c_str())); if(!f_data[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } //f_data.push_back(TFile::Open("/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/PostAnalysisSummary/2012.root")); //~ if(!f_data[0]) { //~ std::cerr << "Error: file " << "/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/PostAnalysisSummary/2012.root" << " could not be opened." << std::endl; //~ return 1; //~ } //~ else std::cout << "File " << "/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/PostAnalysisSummary/2012.root" << " succesfully opened!" << std::endl; //~ for(int iFile = 0; iFile < bg_names.size(); iFile++) { indexes.str(""); indexes << inputDir << bg_names[iFile] << "/Summary.root"; std::string input_file=indexes.str(); f_bg.push_back(TFile::Open(input_file.c_str())); if(!f_bg[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } // tau ES TString tauESplusSuffix= "ESUp"; TString tauESminusSuffix= "ESDown"; std::vector<TFile*> f_bg_ESplus; std::vector<TFile*> f_bg_ESminus; for(int iFile = 0; iFile < bg_names.size(); iFile++) { indexes.str(""); indexes << inputDir << bg_names[iFile] << "_" << tauESplusSuffix << "/Summary.root"; std::string input_file=indexes.str(); f_bg_ESplus.push_back(TFile::Open(input_file.c_str())); if(!f_bg_ESplus[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } for(int iFile = 0; iFile < bg_names.size(); iFile++) { indexes.str(""); indexes << inputDir << bg_names[iFile] << "_" << tauESminusSuffix << "/Summary.root"; std::string input_file=indexes.str(); f_bg_ESminus.push_back(TFile::Open(input_file.c_str())); if(!f_bg_ESminus[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } // signal std::vector<TFile*> f_signal; for(int iFile = 0; iFile < signal_names.size(); iFile++) { indexes.str(""); indexes << inputDir << signal_names[iFile] << "/Summary.root"; std::string input_file=indexes.str(); f_signal.push_back(TFile::Open(input_file.c_str())); if(!f_signal[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } // tau ES std::vector<TFile*> f_signal_ESplus; std::vector<TFile*> f_signal_ESminus; for(int iFile = 0; iFile < signal_names.size(); iFile++) { indexes.str(""); indexes << inputDir << signal_names[iFile] << "_" << tauESplusSuffix << "/Summary.root"; std::string input_file=indexes.str(); f_signal_ESplus.push_back(TFile::Open(input_file.c_str())); if(!f_signal_ESplus[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } for(int iFile = 0; iFile < signal_names.size(); iFile++) { indexes.str(""); indexes << inputDir << signal_names[iFile] << "_" << tauESminusSuffix << "/Summary.root"; std::string input_file=indexes.str(); f_signal_ESminus.push_back(TFile::Open(input_file.c_str())); if(!f_signal_ESminus[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } const int nHist1 = 9; //const int nHist1 = 44; TString histNames1[nHist1] = {"h_svMass","h_H_svMass_type_4","h_H_svMass_type_3","h_H_svMass_type_1","h_H_svMass_type_2","h_H_svMass_type_8","h_H_svMass_type_5","h_H_svMass_type_7","h_H_svMass_type_6"}; TString histBGNames1[nHist1] = {"h_FR_svMass","h_H_FR_svMass_type_4","h_H_FR_svMass_type_3","h_H_FR_svMass_type_1","h_H_FR_svMass_type_2","h_H_FR_svMass_type_8","h_H_FR_svMass_type_5","h_H_FR_svMass_type_7","h_H_FR_svMass_type_6"}; TString histTitles[nHist1] = {"M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]","M_{#tau#tau}[GeV]"}; TString PaveText[nHist1] = {"CMS preliminary 2012","MMTT","MMET","MMMT","MMME","EETT","EEMT","EEET","EEEM"}; std::vector<std::vector<TH1F*>* > h_1d_bg; std::vector<std::vector<TH1F*>* > h_1d_bg_ESplus; std::vector<std::vector<TH1F*>* > h_1d_bg_ESminus; std::vector<std::vector<TH1F*>* > h_1d_signal; std::vector<std::vector<TH1F*>* > h_1d_signal_ESplus; std::vector<std::vector<TH1F*>* > h_1d_signal_ESminus; //std::vector<std::vector<TH1F*>* > h_1d_data; TH1F * h_1d_data[nHist1]; TH1F * h_1BG[nHist1]; // TH1F * signal[nHist1]; std::vector<Double_t> weights; std::vector<Double_t> weight_signal; //Double_t xsection[nFiles]={1.0, 0.130, 1.057, 23.64, 0.208, 0.01203, 0.0048}; // pb //Double_t events[nFiles]={1.0, 4989540, 2979624, 10783509, 210160, 400973, 548760}; // pb Color_t colors[6]={kRed,kYellow,kMagenta,kGreen,kBlack,kBlue}; double total_lumi = 0;// 19711.2250; //// pb-1 for(int iFile = 0; iFile < (data_names.size()/2); iFile++) { total_lumi+=data_lumi[iFile]; } std::cout << "Total lumi is " << total_lumi << std::endl; for(int iFile = 0; iFile < bg_names.size(); iFile++) { TH1D * h_pu = (TH1D*)f_bg[iFile]->Get("AnalysisHistos/h_nPU_raw"); std::cout << h_pu->Integral() << std::endl; double lumi = h_pu->Integral()/bg_xsec[iFile]; weights.push_back(total_lumi/lumi); std::cout << weights[iFile] << std::endl; } for(int iFile = 0; iFile < signal_names.size(); iFile++) { TH1D * h_pu = (TH1D*)f_signal[iFile]->Get("AnalysisHistos/h_nPU_raw"); std::cout << h_pu->Integral() << std::endl; double lumi = h_pu->Integral()/signal_xsec[iFile]; weight_signal.push_back(total_lumi/lumi); std::cout << weight_signal[iFile] << std::endl; } for(int iFile = 0; iFile < bg_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_bg[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weights[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_bg.push_back(temp_vec); } for(int iFile = 0; iFile < bg_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_bg_ESplus[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weights[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_bg_ESplus.push_back(temp_vec); } for(int iFile = 0; iFile < bg_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_bg_ESminus[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weights[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_bg_ESminus.push_back(temp_vec); } // signal for(int iFile = 0; iFile < signal_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_signal[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weight_signal[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_signal.push_back(temp_vec); } for(int iFile = 0; iFile < signal_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_signal_ESplus[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weight_signal[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_signal_ESplus.push_back(temp_vec); } for(int iFile = 0; iFile < signal_names.size(); iFile++) { std::vector<TH1F*>* temp_vec = new std::vector<TH1F*>; for(int iHist = 0; iHist < nHist1; iHist++) { TH1F* test = (TH1F*)f_signal_ESminus[iFile]->Get(histNames1[iHist]); temp_vec->push_back(test); (*temp_vec)[iHist]->Draw(); (*temp_vec)[iHist]->Scale(weight_signal[iFile]); (*temp_vec)[iHist]->Rebin(20); } h_1d_signal_ESminus.push_back(temp_vec); } //data for(int iHist=0; iHist < nHist1; iHist++) { for(int iFile=0; iFile < data_names.size(); iFile++) { TH1F* test =(TH1F*)f_data[iFile]->Get(histNames1[iHist]); if(iFile==0) h_1d_data[iHist]=(TH1F*)test->Clone(); else h_1d_data[iHist]->Add(test); } h_1d_data[iHist]->Rebin(20); if(iHist==1) h_1d_data[0]=(TH1F*)h_1d_data[iHist]->Clone(); if(iHist>1) h_1d_data[0]->Add(h_1d_data[iHist]); } std::vector<double>* BGcounts = EstimateBackground("/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/AnalysisOutput_v31/2012.root", "/home/jpavel/analysis/CMS/histograms/PostMoriod/20130918/AnalysisOutput_v31/2012.root"); //getting histograms for the background for(int iBG=0; iBG < BGcounts->size(); iBG++) { std::cout << BGcounts->at(iBG) << std::endl; } uint MeToULBconv[8] = { 4,3,1,2,8,5,7,6}; // reducible for(int iHist=0; iHist < nHist1; iHist++) { for(int iFile=0; iFile < data_names.size(); iFile++) { TH1F* test =(TH1F*)f_data[iFile]->Get(histBGNames1[iHist]); if(iFile==0) h_1BG[iHist]=(TH1F*)test->Clone(); else h_1BG[iHist]->Add(test); } if(iHist>0) h_1BG[iHist]->Scale(BGcounts->at(MeToULBconv[iHist-1]-1)/h_1BG[iHist]->Integral()); h_1BG[iHist]->Rebin(20); if(iHist==1) h_1BG[0]=(TH1F*)h_1BG[iHist]->Clone(); if(iHist>1) h_1BG[0]->Add(h_1BG[iHist]); } //~ //~ int ZZ_Color = TColor::GetColor("#99ff99"); //~ int WZ_Color = TColor::GetColor("#660099"); //~ int TTbar_Color = TColor::GetColor("#cc66cc"); //~ int Zjet_Color = TColor::GetColor("#32c3ff"); //~ TCanvas *c1 = new TCanvas("c1","",5,30,650,600); //gPad->SetLogy(); c1->SetGrid(0,0); c1->SetFillStyle(4000); c1->SetFillColor(10); c1->SetTicky(); c1->SetObjectStat(0); h_1d_data[0]->Draw(); //~ for(int iHist = 0; iHist < nHist1; iHist++){ //~ signal[iHist] = (TH1F*)h_1d[iHist][5]->Clone();} for(int iHist = 0; iHist < nHist1; iHist++) { THStack *hs = new THStack("hs","Stacked MC histograms"); for(int iFile=0; iFile < bg_names.size(); iFile++) { (*(h_1d_bg[iFile]))[iHist]->SetLineWidth(0); //h_1d[iFile][iHist]->SetFillStyle(3244); (*(h_1d_bg[iFile]))[iHist]->SetFillColor(colors[iFile]); //~ if(iFile == 1){ } //~ else if(iFile == 2){ h_1d[iFile][iHist]->SetFillColor(WZ_Color); } //~ else if(iFile == 3){ h_1d[iFile][iHist]->SetFillColor(TTbar_Color); } //~ else if(iFile == 4){ h_1d[iFile][iHist]->SetFillColor(Zjet_Color); } //~ else if(iFile == 5){ //~ signal[iFile]->Add(h_1d[iFile][iFile+1]); //~ signal[iFile]->SetLineColor(kRed); //~ signal[iFile]->SetLineWidth(2.0); //~ //~ } //if(iFile < 5) //if(iFile!=2 && iFile!=3) if(bg_plot[iFile]) hs->Add((*(h_1d_bg[iFile]))[iHist],"hist"); } hs->Add(h_1BG[iHist],"hist"); //~ //~ //hs->Add(signal[iFile],"hist"); //~ h_1d_data[iHist]->SetMarkerStyle(21); h_1d_data[iHist]->SetMarkerSize(0.7); //~ TLegend* leg = new TLegend(0.65,0.60,0.88,0.88,NULL,"brNDC"); leg->SetFillColor(0); leg->SetTextSize(0.035); leg->SetBorderSize(0); //~ leg->AddEntry(h_1d_data[iHist],"data 2012","p"); for(uint iFile=0; iFile < bg_names.size(); iFile++) { if(bg_plot[iFile]) leg->AddEntry((*(h_1d_bg[iFile]))[iHist],bg_titles[iFile],"f"); } leg->AddEntry(h_1BG[iHist],"reducible","f"); //~ //~ leg->AddEntry(h_1d[iFile][4],"Z+jets","f"); //~ leg->AddEntry(signal[iFile],"ZH(125)","f"); //~ TString lumist="19.7 fb^{-1}"; TPaveText *ll = new TPaveText(0.25, 0.95, 0.95, 0.99, "NDC"); ll->SetTextSize(0.03); ll->SetTextFont(62); ll->SetFillColor(0); ll->SetBorderSize(0); ll->SetMargin(0.01); ll->SetTextAlign(12); // align left TString text = PaveText[iHist]; ll->AddText(0.01,0.5,text); text = "#sqrt{s} = 8 TeV L = "; text = text + lumist; // ll->SetTextAlign(32); // align right ll->AddText(0.5, 0.5, text); //~ h_1d_data[iHist]->Draw("PE01"); //~ double max = h_1d[iFile][0]->GetMaximum(); //~ h_1d[iFile][0]->GetYaxis()->SetRangeUser(1e-2,200*max); //~ // if(iHist > 0 && iHist < 4) h_1d[iFile][0]->GetXaxis()->SetRangeUser(0,150); //~ h_1d_data[iHist]->GetXaxis()->SetTitle(histTitles[iHist]); hs->Draw("same"); //~ // signal[iFile]->Scale(10.); //~ signal[iFile]->Draw("histsame"); h_1d_data[iHist]->Draw("samePE01"); //~ //~ leg->Draw("same"); ll->Draw("same"); gPad->RedrawAxis(); //~ //~ c1->SetLogy(); c1->Print(outputDir+"/png/"+histNames1[iHist]+".png"); c1->Print(outputDir+"/pdf/"+histNames1[iHist]+".pdf"); //~ c1->Print("Moriond/Mu_"+histNames1[iFile]+"_all.eps"); //~ c1->SetLogy(0); //~ h_1d[iFile][0]->GetYaxis()->SetRangeUser(0,1.5*max); //~ //~ c1->Print("Moriond/Mu_"+histNames1[iFile]+"_all_normal.png"); //~ c1->Print("Moriond/Mu_"+histNames1[iFile]+"_all_normal.eps"); //~ //~ //~ // leg->Clear(); // hs->Clear(); } // saving stuff TString outputROOTDir = "/home/jpavel/analysis/CMS/SW/cms-ucl-tau/ZHtautauAnalysis/macros/LimitInput/"; TFile out(outputROOTDir+"vhtt_llLL.inputsArmistice-sm-8TeV.root","RECREATE"); TString dirNames[8] = { "mmtt_zh","mmet_zh","mmmt_zh","mmme_zh","eett_zh","eemt_zh","eeet_zh","eeem_zh"}; TString upNames[8] = { "lltt","llet","llmt","llem","lltt","llmt","llet","llem"}; TString nameES="_CMS_scale_t_"; TString nameUp="Up"; TString nameDown="Down"; TString ZjetsName="Zjets"; TString DataName="data_obs"; for(uint iDir = 0; iDir < 8; iDir++) { out.mkdir(dirNames[iDir]); out.cd(dirNames[iDir]); //signal for(int iFile=0; iFile < signal_titles.size(); iFile++) { TH1D* hist = new TH1D(signal_titles[iFile],"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_signal[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist->SetBinContent(iBin,(*(h_1d_signal[iFile]))[iDir+1]->GetBinContent(iBin)); hist->SetBinError(iBin,(*(h_1d_signal[iFile]))[iDir+1]->GetBinError(iBin)); } hist->Write(); TH1D* hist_Up = new TH1D(signal_titles[iFile]+nameES+upNames[iDir]+nameUp,"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_signal_ESplus[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist_Up->SetBinContent(iBin,(*(h_1d_signal_ESplus[iFile]))[iDir+1]->GetBinContent(iBin)); hist_Up->SetBinError(iBin,(*(h_1d_signal_ESplus[iFile]))[iDir+1]->GetBinError(iBin)); } hist_Up->Write(); TH1D* hist_Down = new TH1D(signal_titles[iFile]+nameES+upNames[iDir]+nameDown,"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_signal_ESminus[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist_Down->SetBinContent(iBin,(*(h_1d_signal_ESminus[iFile]))[iDir+1]->GetBinContent(iBin)); hist_Down->SetBinError(iBin,(*(h_1d_signal_ESminus[iFile]))[iDir+1]->GetBinError(iBin)); } hist_Down->Write(); } // reducible TH1D* hist_Zjets = new TH1D(ZjetsName,"",15,0,300); for(int iBin = 1; iBin <= h_1BG[iDir+1]->GetNbinsX(); iBin++) { hist_Zjets->SetBinContent(iBin,h_1BG[iDir+1]->GetBinContent(iBin)); hist_Zjets->SetBinError(iBin,h_1BG[iDir+1]->GetBinError(iBin)); } hist_Zjets->Write(); // MC backgrounds for(int iFile=0; iFile < bg_titles.size(); iFile++) { if(!bg_save[iFile]) continue; TH1D* hist = new TH1D(bg_titles[iFile],"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_bg[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist->SetBinContent(iBin,(*(h_1d_bg[iFile]))[iDir+1]->GetBinContent(iBin)); hist->SetBinError(iBin,(*(h_1d_bg[iFile]))[iDir+1]->GetBinError(iBin)); } hist->Write(); TH1D* hist_Up = new TH1D(bg_titles[iFile]+nameES+upNames[iDir]+nameUp,"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_bg_ESplus[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist_Up->SetBinContent(iBin,(*(h_1d_bg_ESplus[iFile]))[iDir+1]->GetBinContent(iBin)); hist_Up->SetBinError(iBin,(*(h_1d_bg_ESplus[iFile]))[iDir+1]->GetBinError(iBin)); } hist_Up->Write(); TH1D* hist_Down = new TH1D(bg_titles[iFile]+nameES+upNames[iDir]+nameDown,"",15,0,300); for(int iBin = 1; iBin <= (*(h_1d_bg_ESminus[iFile]))[iDir+1]->GetNbinsX(); iBin++) { hist_Down->SetBinContent(iBin,(*(h_1d_bg_ESminus[iFile]))[iDir+1]->GetBinContent(iBin)); hist_Down->SetBinError(iBin,(*(h_1d_bg_ESminus[iFile]))[iDir+1]->GetBinError(iBin)); } hist_Down->Write(); } //data TH1D* hist_data = new TH1D(DataName,"",15,0,300); for(int iBin = 1; iBin <= h_1d_data[iDir+1]->GetNbinsX(); iBin++) { hist_data->SetBinContent(iBin,h_1d_data[iDir+1]->GetBinContent(iBin)); hist_data->SetBinError(iBin,h_1d_data[iDir+1]->GetBinError(iBin)); } hist_data->Write(); out.cd(); } out.Close(); return 0; }
void MultiHistoOverlap(TString namesandlabels, Int_t nOfFiles, const TString& outDir="./"){ gROOT->Reset(); gROOT->ProcessLine(".L tdrstyle.C"); gROOT->ProcessLine("setTDRStyle()"); // gSystem->Load("libRooFit"); // using namespace RooFit; // preamble TPaveText *cmsprel = new TPaveText(0.19, 0.95, 0.95, 0.99, "NDC"); cmsprel->SetTextSize(0.03); cmsprel->SetTextFont(42); cmsprel->SetFillColor(0); cmsprel->SetBorderSize(0); cmsprel->SetMargin(0.01); cmsprel->SetTextAlign(12); // align left TString text = "CMS Preliminary 2011"; cmsprel->AddText(0.0, 0.5,text); TString text2 = "#sqrt{s} = 7 TeV |#eta_{#mu}|<2.4"; cmsprel->AddText(0.8, 0.5, text2); TList* FileList = new TList(); TList* LabelList = new TList(); TObjArray *nameandlabelpairs = namesandlabels.Tokenize(","); for (Int_t i = 0; i < nameandlabelpairs->GetEntries(); ++i) { TObjArray *aFileLegPair = TString(nameandlabelpairs->At(i)->GetName()).Tokenize("="); if(aFileLegPair->GetEntries() == 2) { FileList->Add( TFile::Open(aFileLegPair->At(0)->GetName()) ); LabelList->Add( aFileLegPair->At(1) ); } else { std::cout << "Please give file name and legend entry in the following form:\n" << " filename1=legendentry1,filename2=legendentry2\n"; } } Int_t NOfFiles = FileList->GetSize(); if ( NOfFiles!=nOfFiles ){ std::cout<<"&MSG-e: NOfFiles = "<<nOfFiles<<std::endl; return; } std::vector<TString> LegLabels; LegLabels.reserve(nOfFiles); for(Int_t j=0; j < nOfFiles; j++) { TObjString* legend = (TObjString*)LabelList->At(j); LegLabels.push_back(legend->String()); std::cout<<"LegLabels["<<j<<"]"<<LegLabels[j]<<std::endl; } TLegend *leg=0; TCanvas* c0 = new TCanvas("c0", "c0",50, 20, 800,600); TCanvas* c1 = new TCanvas("c1", "c1",50, 20, 800,600); TCanvas* c2 = new TCanvas("c2", "c2",50, 20, 800,600); TCanvas* c3 = new TCanvas("c3", "c3",50, 20, 800,600); TCanvas* c4 = new TCanvas("c4", "c4",50, 20, 800,600); TCanvas* c5 = new TCanvas("c5", "c5",50, 20, 1200,800); TCanvas* c6 = new TCanvas("c6", "c6",50, 20, 1200,800); TCanvas* c0s = new TCanvas("c0s", "c0s",50, 20, 800,600); TCanvas* c1s = new TCanvas("c1s", "c1s",50, 20, 800,600); TCanvas* c2s = new TCanvas("c2s", "c2s",50, 20, 800,600); TCanvas* c3s = new TCanvas("c3s", "c3s",50, 20, 800,600); TCanvas* cFit = new TCanvas("cFit", "cFit",50, 20, 1600, 800); //----------------- CANVAS C0 --------------// c0->SetFillColor(0); c0->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon phi plus ------------------------------- TH1D *histoMassVsPhiPlus[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsPhiPlus[j] = (TH1D*)fin->Get("MassVsPhiPlus/allHistos/meanHisto"))){ histoMassVsPhiPlus[j]->SetLineStyle(linestylelist[j]); histoMassVsPhiPlus[j]->SetMarkerColor(colorlist[j]); histoMassVsPhiPlus[j]->SetLineColor(colorlist[j]); histoMassVsPhiPlus[j]->SetMarkerStyle(markerstylelist[j]); // histoMassVsPhiPlus[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoMassVsPhiPlus[j]->GetXaxis()->SetTitle("positive muon #phi (rad)"); histoMassVsPhiPlus[j]->GetYaxis()->SetTitle("M_{#mu#mu} (GeV)"); // histoMassVsPhiPlus[j]->GetYaxis()->SetRangeUser(88.5,93.5); histoMassVsPhiPlus[j]->GetYaxis()->SetRangeUser(90.0,91.5); histoMassVsPhiPlus[j]->GetXaxis()->SetRangeUser(-3.14,3.14); histoMassVsPhiPlus[j]->Draw(); } else { histoMassVsPhiPlus[j]->Draw("SAME"); } leg->AddEntry(histoMassVsPhiPlus[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c0->SaveAs(outDir+"MassVsPhiPlus.png"); //----------------- CANVAS C1 --------------// c1->SetFillColor(0); c1->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon eta plus ------------------------------- TH1D *histoMassVsEtaPlus[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsEtaPlus[j] = (TH1D*)fin->Get("MassVsEtaPlus/allHistos/meanHisto"))){ histoMassVsEtaPlus[j]->SetLineStyle(linestylelist[j]); histoMassVsEtaPlus[j]->SetMarkerColor(colorlist[j]); histoMassVsEtaPlus[j]->SetLineColor(colorlist[j]); histoMassVsEtaPlus[j]->SetMarkerStyle(markerstylelist[j]); // histoMassVsEtaPlus[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoMassVsEtaPlus[j]->GetXaxis()->SetTitle("positive muon #eta"); histoMassVsEtaPlus[j]->GetYaxis()->SetTitle("M_{#mu#mu} (GeV)"); // histoMassVsEtaPlus[j]->GetYaxis()->SetRangeUser(88.5,93.5); histoMassVsEtaPlus[j]->GetYaxis()->SetRangeUser(90.0,91.5); histoMassVsEtaPlus[j]->GetXaxis()->SetRangeUser(-2.41,2.41); histoMassVsEtaPlus[j]->Draw(); } else { histoMassVsEtaPlus[j]->Draw("SAME"); } leg->AddEntry(histoMassVsEtaPlus[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c1->SaveAs(outDir+"MassVsEtaPlus.png"); //----------------- CANVAS C2 --------------// c2->SetFillColor(0); c2->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon eta plus - eta minus ------------------------------- TH1D *histoMassVsEtaPlusMinusDiff[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsEtaPlusMinusDiff[j] = (TH1D*)fin->Get("MassVsEtaPlusMinusDiff/allHistos/meanHisto"))){ histoMassVsEtaPlusMinusDiff[j]->SetLineStyle(linestylelist[j]); histoMassVsEtaPlusMinusDiff[j]->SetMarkerColor(colorlist[j]); histoMassVsEtaPlusMinusDiff[j]->SetLineColor(colorlist[j]); histoMassVsEtaPlusMinusDiff[j]->SetMarkerStyle(markerstylelist[j]); // histoMassVsEtaPlusMinusDiff[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoMassVsEtaPlusMinusDiff[j]->GetXaxis()->SetTitle("#eta pos. muon #eta neg. muon"); histoMassVsEtaPlusMinusDiff[j]->GetYaxis()->SetTitle("M_{#mu#mu} (GeV)"); // histoMassVsEtaPlusMinusDiff[j]->GetYaxis()->SetRangeUser(88.0,96.0); histoMassVsEtaPlusMinusDiff[j]->GetYaxis()->SetRangeUser(90.0,91.5); histoMassVsEtaPlusMinusDiff[j]->GetXaxis()->SetRangeUser(-3,3); histoMassVsEtaPlusMinusDiff[j]->Draw(); } else { histoMassVsEtaPlusMinusDiff[j]->Draw("SAME"); } leg->AddEntry(histoMassVsEtaPlusMinusDiff[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c2->SaveAs(outDir+"MassVsEtaPlusMinusDiff.png"); //----------------- CANVAS C3 --------------// c3->SetFillColor(0); c3->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon phi minus ------------------------------- TH1D *histoMassVsPhiMinus[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsPhiMinus[j] = (TH1D*)fin->Get("MassVsPhiMinus/allHistos/meanHisto"))){ histoMassVsPhiMinus[j]->SetLineStyle(linestylelist[j]); histoMassVsPhiMinus[j]->SetMarkerColor(colorlist[j]); histoMassVsPhiMinus[j]->SetLineColor(colorlist[j]); histoMassVsPhiMinus[j]->SetMarkerStyle(markerstylelist[j]); // histoMassVsPhiMinus[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoMassVsPhiMinus[j]->GetXaxis()->SetTitle("negative muon #phi (rad)"); histoMassVsPhiMinus[j]->GetYaxis()->SetTitle("M_{#mu#mu} (GeV)"); // histoMassVsPhiMinus[j]->GetYaxis()->SetRangeUser(88.5,93.5); histoMassVsPhiMinus[j]->GetYaxis()->SetRangeUser(90.0,91.5); histoMassVsPhiMinus[j]->GetXaxis()->SetRangeUser(-3.14,3.14); histoMassVsPhiMinus[j]->Draw(); } else { histoMassVsPhiMinus[j]->Draw("SAME"); } leg->AddEntry(histoMassVsPhiMinus[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c3->SaveAs(outDir+"MassVsPhiMinus.png"); //----------------- CANVAS C4 --------------// c4->SetFillColor(0); c4->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon eta minus ------------------------------- TH1D *histoMassVsEtaMinus[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsEtaMinus[j] = (TH1D*)fin->Get("MassVsEtaMinus/allHistos/meanHisto"))){ histoMassVsEtaMinus[j]->SetLineStyle(linestylelist[j]); histoMassVsEtaMinus[j]->SetMarkerColor(colorlist[j]); histoMassVsEtaMinus[j]->SetLineColor(colorlist[j]); histoMassVsEtaMinus[j]->SetMarkerStyle(markerstylelist[j]); // histoMassVsEtaMinus[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoMassVsEtaMinus[j]->GetXaxis()->SetTitle("negative muon #eta"); histoMassVsEtaMinus[j]->GetYaxis()->SetTitle("M_{#mu#mu} (GeV)"); // histoMassVsEtaMinus[j]->GetYaxis()->SetRangeUser(88.5,93.5); histoMassVsEtaMinus[j]->GetYaxis()->SetRangeUser(90.0,91.5); histoMassVsEtaMinus[j]->GetXaxis()->SetRangeUser(-2.41,2.41); histoMassVsEtaMinus[j]->Draw(); } else { histoMassVsEtaMinus[j]->Draw("SAME"); } leg->AddEntry(histoMassVsEtaMinus[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c4->SaveAs(outDir+"MassVsEtaMinus.png"); //----------------- CANVAS C5 --------------// c5->SetFillColor(0); c5->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Mass VS muon phi plus ------------------------------- TH2D *histoMassVsEtaPhiPlus[nOfFiles]; TStyle *newStyle; newStyle->SetPalette(1); // newStyle->SetOptTitle(1); Double_t zMin(82.); Double_t zMax(96.); for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoMassVsEtaPhiPlus[j] = (TH2D*)fin->Get("MassVsEtaPhiPlus/allHistos/meanHisto"))){ if ( j == 0 ) { histoMassVsEtaPhiPlus[j]->SetTitle(LegLabels[j]); histoMassVsEtaPhiPlus[j]->GetXaxis()->SetTitle("positive muon #phi (rad)"); histoMassVsEtaPhiPlus[j]->GetYaxis()->SetTitle("positive muon #eta"); zMin = histoMassVsEtaPhiPlus[j]->GetMinimum(); zMax = histoMassVsEtaPhiPlus[j]->GetMaximum(); histoMassVsEtaPhiPlus[j]->Draw("COLZ"); c5->SaveAs(outDir+"MassVsEtaPhiPlus_file0.png"); } else { histoMassVsEtaPhiPlus[j]->SetTitle(LegLabels[j]); histoMassVsEtaPhiPlus[j]->SetMinimum(zMin); histoMassVsEtaPhiPlus[j]->SetMaximum(zMax); histoMassVsEtaPhiPlus[j]->Draw("COLZ"); c5->SaveAs(outDir+"MassVsEtaPhiPlus_file"+(TString)Form("%d",(Int_t)j)+".png"); } } } //cmsprel->Draw("same"); // //----------------- CANVAS C6 --------------// // c6->SetFillColor(0); // c6->cd(); // leg = new TLegend(0.50,0.25,0.90,0.40); // leg->SetBorderSize(1); // leg->SetFillColor(0); // leg->SetTextFont(42); // // Mass VS muon phi minus ------------------------------- // TH2D *histoMassVsEtaPhiMinus[nOfFiles]; // for(Int_t j=0; j < nOfFiles; j++) { // TFile *fin = (TFile*)FileList->At(j); // if (( histoMassVsEtaPhiMinus[j] = (TH2D*)fin->Get("MassVsEtaPhiMinus/allHistos/meanHisto"))){ // if ( j == 0 ) { // histoMassVsEtaPhiMinus[j]->GetXaxis()->SetTitle("negative muon #phi (rad)"); // histoMassVsEtaPhiMinus[j]->GetYaxis()->SetTitle("negative muon #eta"); // zMin = histoMassVsEtaPhiMinus[j]->GetMinimum(); // zMax = histoMassVsEtaPhiMinus[j]->GetMaximum(); // histoMassVsEtaPhiMinus[j]->Draw(); // } else { // histoMassVsEtaPhiMinus[j]->SetMinimum(zMin); // histoMassVsEtaPhiMinus[j]->SetMaximum(zMax); // histoMassVsEtaPhiMinus[j]->Draw("SAME"); // } // leg->AddEntry(histoMassVsEtaPhiMinus[j],LegLabels[j],"PL"); // } // } // //cmsprel->Draw("same"); // leg->Draw("same"); // c6->SaveAs(outDir+"MassVsEtaPhiMinus.png"); // newStyle->SetOptTitle(0); const Color_t colorlist_resol[7]={kBlack,kGreen,kBlue,kMagenta,kCyan,kTeal,kRed}; const Int_t linestylelist_resol[7]={1,1,1,1,1,1,1}; const Int_t stylelist_resol[7]={1,1,1,1,1,1,1}; const Style_t markerstylelist_resol[7]={kOpenCircle,kOpenTriangleUp,kOpenTriangleUp,kOpenCircle,kOpenTriangleUp,kOpenCircle,kOpenTriangleUp}; // //----------------- CANVAS C0S --------------// // c0s->SetFillColor(0); // c0s->cd(); // leg = new TLegend(0.50,0.25,0.90,0.40); // leg->SetBorderSize(1); // leg->SetFillColor(0); // leg->SetTextFont(42); // // Sigma VS muon phi plus ------------------------------- // TH1D *histoSigmaVsPhiPlus[nOfFiles]; // for(Int_t j=0; j < nOfFiles; j++) { // TFile *fin = (TFile*)FileList->At(j); // if (( histoSigmaVsPhiPlus[j] = (TH1D*)fin->Get("MassVsPhiPlus/allHistos/sigmaHisto"))){ // histoSigmaVsPhiPlus[j]->SetLineStyle(linestylelist_resol[j]); // histoSigmaVsPhiPlus[j]->SetMarkerColor(colorlist_resol[j]); // histoSigmaVsPhiPlus[j]->SetLineColor(colorlist_resol[j]); // histoSigmaVsPhiPlus[j]->SetMarkerStyle(markerstylelist_resol[j]); // // histoSigmaVsPhiPlus[j]->SetMarkerSize(0.75); // if ( j == 0 ) { // histoSigmaVsPhiPlus[j]->GetXaxis()->SetTitle("positive muon #phi (rad)"); // histoSigmaVsPhiPlus[j]->GetYaxis()->SetTitle("#sigma(M_{#mu#mu}) (GeV)"); // // histoSigmaVsPhiPlus[j]->GetYaxis()->SetRangeUser(88.5,93.5); // histoSigmaVsPhiPlus[j]->GetYaxis()->SetRangeUser(0.,3.); // histoSigmaVsPhiPlus[j]->GetXaxis()->SetRangeUser(-3.14,3.14); // histoSigmaVsPhiPlus[j]->Draw(); // } else { // histoSigmaVsPhiPlus[j]->Draw("SAME"); // } // leg->AddEntry(histoSigmaVsPhiPlus[j],LegLabels[j],"PL"); // } // } // //cmsprel->Draw("same"); // leg->Draw("same"); // c0s->SaveAs(outDir+"SigmaVsPhiPlus.png"); //----------------- CANVAS C1S --------------// c1s->SetFillColor(0); c1s->cd(); leg = new TLegend(0.50,0.25,0.90,0.40); leg->SetBorderSize(1); leg->SetFillColor(0); leg->SetTextFont(42); // Sigma VS muon eta plus ------------------------------- TH1D *histoSigmaVsEtaPlus[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoSigmaVsEtaPlus[j] = (TH1D*)fin->Get("MassVsEtaPlus/allHistos/sigmaHisto"))){ histoSigmaVsEtaPlus[j]->SetLineStyle(linestylelist_resol[j]); histoSigmaVsEtaPlus[j]->SetMarkerColor(colorlist_resol[j]); histoSigmaVsEtaPlus[j]->SetLineColor(colorlist_resol[j]); histoSigmaVsEtaPlus[j]->SetMarkerStyle(markerstylelist_resol[j]); // histoSigmaVsEtaPlus[j]->SetMarkerSize(0.75); if ( j == 0 ) { histoSigmaVsEtaPlus[j]->GetXaxis()->SetTitle("positive muon #eta"); histoSigmaVsEtaPlus[j]->GetYaxis()->SetTitle("#sigma(M_{#mu#mu}) (GeV)"); // histoSigmaVsEtaPlus[j]->GetYaxis()->SetRangeUser(88.5,93.5); histoSigmaVsEtaPlus[j]->GetYaxis()->SetRangeUser(0.,3.); histoSigmaVsEtaPlus[j]->GetXaxis()->SetRangeUser(-2.41,2.41); histoSigmaVsEtaPlus[j]->Draw(); } else { histoSigmaVsEtaPlus[j]->Draw("SAME"); } leg->AddEntry(histoSigmaVsEtaPlus[j],LegLabels[j],"PL"); } } //cmsprel->Draw("same"); leg->Draw("same"); c1s->SaveAs(outDir+"SigmaVsEtaPlus.png"); // //----------------- CANVAS C2S --------------// // c2s->SetFillColor(0); // c2s->cd(); // leg = new TLegend(0.50,0.25,0.90,0.40); // leg->SetBorderSize(1); // leg->SetFillColor(0); // leg->SetTextFont(42); // // Sigma VS muon eta plus - eta minus ------------------------------- // TH1D *histoSigmaVsEtaPlusMinusDiff[nOfFiles]; // for(Int_t j=0; j < nOfFiles; j++) { // TFile *fin = (TFile*)FileList->At(j); // if (( histoSigmaVsEtaPlusMinusDiff[j] = (TH1D*)fin->Get("MassVsEtaPlusMinusDiff/allHistos/sigmaHisto"))){ // histoSigmaVsEtaPlusMinusDiff[j]->SetLineStyle(linestylelist_resol[j]); // histoSigmaVsEtaPlusMinusDiff[j]->SetMarkerColor(colorlist_resol[j]); // histoSigmaVsEtaPlusMinusDiff[j]->SetLineColor(colorlist_resol[j]); // histoSigmaVsEtaPlusMinusDiff[j]->SetMarkerStyle(markerstylelist_resol[j]); // // histoSigmaVsEtaPlusMinusDiff[j]->SetMarkerSize(0.75); // if ( j == 0 ) { // histoSigmaVsEtaPlusMinusDiff[j]->GetXaxis()->SetTitle("#eta pos. muon - #eta neg. muon"); // histoSigmaVsEtaPlusMinusDiff[j]->GetYaxis()->SetTitle("#sigma(M_{#mu#mu}) (GeV)"); // // histoSigmaVsEtaPlusMinusDiff[j]->GetYaxis()->SetRangeUser(88.0,96.0); // histoSigmaVsEtaPlusMinusDiff[j]->GetYaxis()->SetRangeUser(0.,3.); // //histoSigmaVsEtaPlusMinusDiff[j]->GetYaxis()->SetRangeUser(90.60,90.75); // histoSigmaVsEtaPlusMinusDiff[j]->GetXaxis()->SetRangeUser(-3.2,3.2); // histoSigmaVsEtaPlusMinusDiff[j]->Draw(); // } else { // histoSigmaVsEtaPlusMinusDiff[j]->Draw("SAME"); // } // leg->AddEntry(histoSigmaVsEtaPlusMinusDiff[j],LegLabels[j],"PL"); // } // } // //cmsprel->Draw("same"); // leg->Draw("same"); // c2s->SaveAs(outDir+"SigmaVsEtaPlusMinusDiff.png"); // //----------------- CANVAS C3S --------------// // c3s->SetFillColor(0); // c3s->cd(); // leg = new TLegend(0.35,0.15,0.55,0.35); // leg->SetBorderSize(1); // leg->SetFillColor(0); // leg->SetTextFont(42); // // Sigma VS muon pT ------------------------------- // TH1D *histoSigmaVsPt[nOfFiles]; // for(Int_t j=0; j < nOfFiles; j++) { // TFile *fin = (TFile*)FileList->At(j); // if (( histoSigmaVsPt[j] = (TH1D*)fin->Get("MassVsPt/allHistos/sigmaHisto"))){ // histoSigmaVsPt[j]->SetLineStyle(linestylelist_resol[j]); // histoSigmaVsPt[j]->SetMarkerColor(colorlist_resol[j]); // histoSigmaVsPt[j]->SetLineColor(colorlist_resol[j]); // histoSigmaVsPt[j]->SetMarkerStyle(markerstylelist_resol[j]); // // histoSigmaVsPt[j]->SetMarkerSize(0.75); // if ( j == 0 ) { // histoSigmaVsPt[j]->GetXaxis()->SetTitle("muon p_T (GeV)"); // histoSigmaVsPt[j]->GetYaxis()->SetTitle("#sigma(M_{#mu#mu}) (GeV)"); // // histoSigmaVsPt[j]->GetYaxis()->SetRangeUser(88.0,96.0); // histoSigmaVsPt[j]->GetYaxis()->SetRangeUser(0.,3.); // //histoSigmaVsPt[j]->GetYaxis()->SetRangeUser(90.60,90.75); // histoSigmaVsPt[j]->GetXaxis()->SetRangeUser(15.,105.); // histoSigmaVsPt[j]->Draw(); // } else { // histoSigmaVsPt[j]->Draw("SAME"); // } // leg->AddEntry(histoSigmaVsPt[j],LegLabels[j],"PL"); // } // } // //cmsprel->Draw("same"); // leg->Draw("same"); // c3s->SaveAs(outDir+"SigmaVsPt.png"); //----------------- CANVAS CFIT --------------// cFit->SetFillColor(0); cFit->cd(); Float_t nN = TMath::Sqrt(nOfFiles); Int_t nX = (Int_t)nN; if ( nN-nX > 0.5 ) nX++; Int_t nY = (Int_t)(nOfFiles/nX); std::cout << nX << " ," << nY << std::endl; cFit->Divide(nOfFiles,1); // Mass VS muon phi plus ------------------------------- TFile *ZFitFile = new TFile("ZFitFile.root","RECREATE"); RooPlot *histoLineShape[nOfFiles]; for(Int_t j=0; j < nOfFiles; j++) { TFile *fin = (TFile*)FileList->At(j); if (( histoLineShape[j] = (RooPlot*)fin->Get("hRecBestResAllEvents_Mass_frame"))){ std::cout<<"Writing fit histogrem file n. "<<j<<std::endl; histoLineShape[j]->Write(); cFit->cd(j+1); histoLineShape[j]->SetTitle(LegLabels[j]); histoLineShape[j]->Draw(); histoLineShape[j]->GetXaxis()->SetTitle("M_{#mu#mu} (GeV)"); // TPaveText *cmsprel2 = new TPaveText(0.19, 0.95, 0.95, 0.99, "NDC"); // cmsprel2->SetTextSize(0.03); // cmsprel2->SetTextFont(42); // cmsprel2->SetFillColor(0); // cmsprel2->SetBorderSize(0); // cmsprel2->SetMargin(0.01); // cmsprel2->SetTextAlign(12); // align left // cmsprel2->AddText(0.666666, 0.5, LegLabels[j]); } } ZFitFile->Close(); // cmsprel2->Draw("same"); cFit->SaveAs("ZFitFile.root"); return; };
int CompareAllHistos(TString input1 = "../../QCD_ref.root", TString input2 = "../../QCD_filter.root", TString outdir="../plots/QCD/", TString leg1="no cut", TString leg2="jet filter", TString name="RelValQCD", bool MakeTotal=false) { gROOT->Reset(); //SetAtlasStyle(); setTDRStyle(); gStyle->SetPalette(1); gStyle->SetErrorX(0.5); gROOT->ProcessLine(".!mkdir -p "+outdir); gROOT->ProcessLine(".!mkdir -p "+outdir+"/pdf"); gROOT->ProcessLine(".!mkdir -p "+outdir+"/png"); TString Names[2] = { input1, input2}; // TString outdir = "../plots/QCD/"; const uint nFiles = 2; TFile * f[nFiles]; std::stringstream indexes; for(uint iFile = 0; iFile < nFiles; iFile++) { indexes.str(""); indexes << Names[iFile]; std::string input_file=indexes.str(); f[iFile] = TFile::Open(input_file.c_str()); if(!f[iFile]) { std::cerr << "Error: file " << input_file << " could not be opened." << std::endl; return 1; } else std::cout << "File " << input_file << " succesfully opened!" << std::endl; } // const uint nProfile12=8; const uint nProfile=4; // const uint nWP=3; // const uint n123=3; const uint n12=5; TString dirNames[1] = { "tauDifferenceAnalyzer"}; //"mmet_zh","mmmt_zh","mmme_zh","eett_zh","eemt_zh","eeet_zh","eeem_zh"}; // TString profileNames_12[nProfile12] = {"pt_DM","eta_DM","vx_DM","phi_DM","pt_DMall","eta_DMall","vx_DMall","phi_DMall"}; TString prefix_12 = "h_eff_id_"; TString suffix_12[n12] = {"_DM","_DMall","_loose","_medium","_tight"}; TString profileX[nProfile] = {"pt","eta","vx","phi"}; const uint nTotal=nProfile*n12; //~ TString profile123_prefix="h_eff_id_"; //~ TString profile123_WP[nWP]={"_loose","_medium","_tight"}; //~ TString profile123_suffix[n123]={"","_2","_3"}; //~ TProfile* profileHist1[nTotal][nFiles]; // TProfile* profileHist2[nTotal][nFiles]; //TProfile* profileHist[n123][nProfile*nWP][nFiles]; //~ TProfile* profileHistB[nProfile*nWP][nFiles]; //~ TProfile* profileHistC[nProfile*nWP][nFiles]; //~ // std::stringstream name; for(uint iFile = 0; iFile < nFiles; iFile++) { for(uint iSuff=0; iSuff < n12; iSuff++) { for(uint iProf12=0; iProf12< nProfile; iProf12++) { profileHist1[iProf12+iSuff*nProfile][iFile]=(TProfile*)f[iFile]->Get(TString(dirNames[0]+"/"+prefix_12+profileX[iProf12]+suffix_12[iSuff])); // profileHist2[iProf12+iSuff*nProfile][iFile]=(TProfile*)f[iFile]->Get(TString(dirNames[0]+"/"+prefix_12+profileX[iProf12]+suffix_12[iSuff])); } } } //~ for(uint iFile = 0; iFile < nFiles; iFile++) //~ { //~ for(uint iWP=0; iWP<nWP; iWP++) //~ { //~ for(uint iProf123=0; iProf123< nProfile; iProf123++) //~ { //~ for(uint i123=0; i123 < n123; i123++) //~ { //~ std::cout << dirNames[0]+"/"+profile123_prefix+profileX[iProf123]+profile123_WP[iWP]+profile123_suffix[i123] << std::endl; //~ profileHist[i123][iWP*nProfile+iProf123][iFile]=(TProfile*)f[iFile]->Get(TString(dirNames[0]+"/"+profile123_prefix+profileX[iProf123]+profile123_WP[iWP]+profile123_suffix[i123])); //~ } //~ } //~ } //~ } TCanvas *c1 = new TCanvas("c1","",5,30,1024,1024); c1->SetGrid(0,0); c1->SetFillStyle(4000); c1->SetFillColor(10); c1->SetTicky(); c1->SetObjectStat(0); TPad* histPad = new TPad("histPad","histPad",0.01,0.25,0.99,0.99); histPad->SetBottomMargin(0.02); histPad->Draw(); TPad* diffPad = new TPad("diffPad","diffPad",0.01,0.01,0.99,0.25); diffPad->SetBottomMargin(0.3); diffPad->SetTopMargin(0.0); diffPad->Draw(); // plotting TString XTitle[4] = {"True P_{T} [GeV]","True #eta", "nVx","True #phi"}; // c1->SetLogy(); std::cout << "hej hola " << std::endl; for(uint iProf12=0; iProf12< nTotal; iProf12++) { int title_id=iProf12%4; if(title_id!=2){ profileHist1[iProf12][0]->Rebin(5); profileHist1[iProf12][1]->Rebin(5); } TH1D* baseHist = (TH1D*)profileHist1[iProf12][0]->Clone(); TH1D* overHist = (TH1D*)profileHist1[iProf12][1]->Clone(); if(MakeTotal && iProf12>7){ double binLow = baseHist->GetXaxis()->GetBinLowEdge(baseHist->GetXaxis()->GetFirst()); double binUp = baseHist->GetXaxis()->GetBinUpEdge(baseHist->GetXaxis()->GetLast()); int nBins = baseHist->GetXaxis()->GetNbins(); TH1D* newBaseHist = new TH1D(TString(baseHist->GetName())+"TOT",baseHist->GetTitle(),nBins,binLow,binUp); TH1D* newDMHist = new TH1D("newDMHist","",nBins,binLow,binUp); TH1D* newOverHist = new TH1D(TString(overHist->GetName())+"TOTover",baseHist->GetTitle(),nBins,binLow,binUp); TH1D* newDMHist2 = new TH1D("newDMHist2","",nBins,binLow,binUp); for(int iBin=0; iBin <= baseHist->GetNbinsX(); iBin++) { newBaseHist->SetBinContent(iBin,baseHist->GetBinContent(iBin)); newBaseHist->SetBinError(iBin,baseHist->GetBinError(iBin)); newDMHist->SetBinContent(iBin,profileHist1[title_id][0]->GetBinContent(iBin)); newDMHist->SetBinError(iBin,profileHist1[title_id][0]->GetBinError(iBin)); newOverHist->SetBinContent(iBin,overHist->GetBinContent(iBin)); newOverHist->SetBinError(iBin,overHist->GetBinError(iBin)); newDMHist2->SetBinContent(iBin,profileHist1[title_id][1]->GetBinContent(iBin)); newDMHist2->SetBinError(iBin,profileHist1[title_id][1]->GetBinError(iBin)); } newBaseHist->Multiply(newDMHist); newOverHist->Multiply(newDMHist2); baseHist=newBaseHist; overHist=newOverHist; delete newDMHist; delete newDMHist2; } if(title_id==0) baseHist->GetXaxis()->SetRangeUser(0,100); baseHist->GetXaxis()->SetLabelOffset(0.1); baseHist->GetXaxis()->SetTitle(XTitle[title_id]); baseHist->GetYaxis()->SetTitle("Fake rate"); baseHist->SetMarkerStyle(20); baseHist->SetMarkerSize(2); baseHist->SetLineWidth(2); overHist->SetMarkerColor(kRed); overHist->SetMarkerStyle(25); overHist->SetMarkerSize(2); overHist->SetLineWidth(2); overHist->SetLineStyle(2); overHist->SetLineColor(kRed); int binmax = baseHist->GetMaximumBin(); double max = 1.2*(baseHist->GetBinContent(binmax)+baseHist->GetBinError(binmax)); int binmax2 = overHist->GetMaximumBin(); double max2 = 1.2*(overHist->GetBinContent(binmax2)+overHist->GetBinError(binmax2)); max = max2 > max ? max2 : max; baseHist->SetMaximum(10.0); baseHist->SetMinimum(1e-3); histPad->cd(); histPad->SetLogy(); baseHist->Draw(); overHist->Draw("same"); TLegend* leg = new TLegend(0.8,0.80,0.9,0.9,NULL,"brNDC"); leg->SetFillColor(0); leg->SetTextSize(0.035); leg->SetBorderSize(0); leg->AddEntry(baseHist, leg1, "lp"); leg->AddEntry(overHist, leg2, "lp"); leg->Draw(); //~ TString lumist=""; TPaveText *ll = new TPaveText(0.15, 0.95, 0.95, 0.99, "NDC"); ll->SetTextSize(0.03); ll->SetTextFont(62); ll->SetFillColor(0); ll->SetBorderSize(0); ll->SetMargin(0.01); ll->SetTextAlign(12); // align left TString text = name; ll->AddText(0.01,0.7,text); text = "#sqrt{s} = 13 TeV"; text = text + lumist; // ll->SetTextAlign(32); // align right ll->AddText(0.7, 0.5, text); ll->Draw("same"); c1->Update(); TH1D* h_diff=(TH1D*)baseHist->Clone(); h_diff->Divide(overHist); diffPad->cd(); diffPad->SetGridy(); diffPad->SetGridx(); h_diff->GetYaxis()->SetLabelSize(0.1); h_diff->GetYaxis()->SetTitleOffset(0.55); h_diff->GetYaxis()->SetTitleSize(0.12); h_diff->GetYaxis()->SetTitle("Ratio"); h_diff->GetXaxis()->SetLabelSize(0.12); h_diff->GetXaxis()->SetLabelOffset(0.01); h_diff->GetXaxis()->SetTitleSize(0.15); h_diff->GetYaxis()->SetNdivisions(509); h_diff->SetMinimum(0.9); h_diff->SetMaximum(1.1); h_diff->Draw("hist"); c1->Print(outdir+"/pdf/"+profileHist1[iProf12][0]->GetName()+".pdf"); c1->Print(outdir+"/png/"+profileHist1[iProf12][0]->GetName()+".png"); } return 0; }