#include #include gROOT->Reset(); // Setup file including parameters #include "plotMk_3D_setup.h" void plotMk_3D_ProjZ_D0KPi() { // Root macro to produce a projection plot of 3D histogram //########################################################### // Change these values to meet your condition //########################################################### TString outPlotName("plot_"+oNameBase+"_"+varz+"_D0KPi.eps"); TString histTitle(varz+"_D0KPi"); // Set max value of plot int min = zmin; int max = zmax; //setMax = true; //int min = -100; //int max = 40000; //################################################ cout << "start"; // Open input files and get 3D histos TFile *f[nFiles_D0KPi]; TH3D * inHist[nFiles_D0KPi]; for (int l=0; lls(); inHist[l] = (TH3D *)f[l]->Get("sub;1"); } // Readout 3D histos into arrays cout << "reading histos into arrays" << endl; double num_3D[nFiles_D0KPi][nbinsx][nbinsy][nbinsz]; double err_3D[nFiles_D0KPi][nbinsx][nbinsy][nbinsz]; for (int l=0; lGetBinContent(i+1,j+1,k+1); err_3D[l][i][j][k] = inHist[l]->GetBinError(i+1,j+1,k+1); } } } } // 1D arrays to be projected cout << "define summed 1D arrays" << endl; double num_1D[nFiles_D0KPi][nbinsz]; double var_1D[nFiles_D0KPi][nbinsz]; double err_1D[nFiles_D0KPi][nbinsz]; for (int l=0; lSetBinContent(j+1,num_OnPeak[j]); OnPeak->SetBinError(j+1,err_OnPeak[j]); OffPeak->SetBinContent(j+1,num_OffPeak[j]); OffPeak->SetBinError(j+1,err_OffPeak[j]); Dlnu->SetBinContent(j+1,num_Dlnu[j]); Dlnu->SetBinError(j+1,err_Dlnu[j]); Dstar->SetBinContent(j+1,num_Dstar[j]); Dstar->SetBinError(j+1,err_Dstar[j]); Ddstar->SetBinContent(j+1,num_Ddstar[j]); Ddstar->SetBinError(j+1,err_Ddstar[j]); DPi->SetBinContent(j+1,num_DPi[j]); DPi->SetBinError(j+1,err_DPi[j]); DiffB->SetBinContent(j+1,num_DiffB[j]); DiffB->SetBinError(j+1,err_DiffB[j]); CascL->SetBinContent(j+1,num_CascL[j]); CascL->SetBinError(j+1,err_CascL[j]); LMisID->SetBinContent(j+1,num_LMisID[j]); LMisID->SetBinError(j+1,err_LMisID[j]); Comb->SetBinContent(j+1,num_Comb[j]); Comb->SetBinError(j+1,err_Comb[j]); RealD->SetBinContent(j+1,num_RealD[j]); RealD->SetBinError(j+1,err_RealD[j]); Cont->SetBinContent(j+1,num_Cont[j]); Cont->SetBinError(j+1,err_Cont[j]); } //############################################################# cout << "strt plotting\n"; cout << "setting marker and color\n"; OnPeak->SetMarkerStyle(29); OffPeak->SetFillColor(12); Dlnu->SetFillColor(2); Dstar->SetFillColor(3); Ddstar->SetFillColor(4); DPi->SetFillColor(5); DiffB->SetFillColor(6); CascL->SetFillColor(7) ; LMisID->SetFillColor(8) ; Comb->SetFillColor(21); RealD->SetFillColor(9); Cont->SetFillColor(12); cout << "stacking\n"; THStack hAll("hAll",histTitle); hAll.Add(Cont); hAll.Add(RealD); hAll.Add(Comb); hAll.Add(LMisID); hAll.Add(CascL); hAll.Add(DiffB); hAll.Add(DPi); hAll.Add(Ddstar); hAll.Add(Dstar); hAll.Add(Dlnu); THStack hOffPeak("hOffPeak",histTitle); hOffPeak.Add(OffPeak); hOffPeak.Add(Comb); hOffPeak.Add(LMisID); hOffPeak.Add(CascL); hOffPeak.Add(DiffB); hOffPeak.Add(DPi); hOffPeak.Add(Ddstar); hOffPeak.Add(Dstar); hOffPeak.Add(Dlnu); // Create a canvas and plot cout << "plotting\n"; TCanvas * cx = new TCanvas("cx",histTitle,0,0,800,400); cx->Divide(2,1); gStyle->SetOptStat(000000); cx->cd(1); hAll.SetMinimum(min); if (setMax) { hAll.SetMaximum(max); } else { hAll.SetMaximum(OnPeak->GetMaximum()*1.2); } hAll.Draw("hist"); OnPeak->Draw("e1psames"); TLegend *legendx1 = new TLegend(0.70,0.50,0.90,0.92); legendx1->SetTextSize(.02); legendx1->SetFillColor(0); TLegendEntry *plex1; plex1 = legendx1->AddEntry(OnPeak, "OnPeak data","P"); plex1 = legendx1->AddEntry(Dlnu,"B->Dlnu","F"); plex1 = legendx1->AddEntry(Dstar,"B->D*lnu","F"); plex1 = legendx1->AddEntry(Ddstar,"B->D**lnu","F"); plex1 = legendx1->AddEntry(DPi,"B->D/D* Pilnu","F"); plex1 = legendx1->AddEntry(DiffB,"D l from different B","F"); plex1 = legendx1->AddEntry(CascL,"B->D->l","F"); plex1 = legendx1->AddEntry(LMisID,"lepton Miss ID","F"); plex1 = legendx1->AddEntry(Comb,"combinatrial BB","F"); plex1 = legendx1->AddEntry(RealD,"ccbar with real D","F"); plex1 = legendx1->AddEntry(Cont,"continuum","F"); legendx1->Draw(); cx->cd(2); hOffPeak.SetMinimum(min); if (setMax) { hOffPeak.SetMaximum(max); } else { hOffPeak.SetMaximum(OnPeak->GetMaximum()*1.2); } hOffPeak.Draw("hist"); OnPeak->Draw("e1psames"); TLegend *legendx2 = new TLegend(0.70,0.50,0.90,0.92); legendx2->SetTextSize(.02); legendx2->SetFillColor(0); TLegendEntry *plex2; plex2 = legendx2->AddEntry(OnPeak, "OnPeak data","P"); plex2 = legendx2->AddEntry(Dlnu,"B->Dlnu","F"); plex2 = legendx2->AddEntry(Dstar,"B->D*lnu","F"); plex2 = legendx2->AddEntry(Ddstar,"B->D**lnu","F"); plex2 = legendx2->AddEntry(DPi,"B->D/D* Pilnu","F"); plex2 = legendx2->AddEntry(DiffB,"D l from different B","F"); plex2 = legendx2->AddEntry(CascL,"B->D->l","F"); plex2 = legendx2->AddEntry(LMisID,"lepton Miss ID","F"); plex2 = legendx2->AddEntry(Comb,"combinatrial BB","F"); plex2 = legendx2->AddEntry(OffPeak,"OffPeak data","F"); legendx2->Draw(); cx->Print(outPlotName); }