#include #include gROOT->Reset(); // Setup file including parameters #include "plotMk_3D_setup.h" void plotMk_3D_ProjZ_bin_D0KPi() { // Root macro to produce a projection plot of 3D histogram //########################################################### // Change these values to meet your condition //########################################################### TString outPlotName("plot_"+oNameBase+"_"+varz+"_BinByBin_D0KPi.eps"); TString histTitle(varz+"_D0KPi"); int min = zminBin; int max = zmaxBin; //requireSetMax = true; //int min = -100; //int max = 4000; int nTotBins = nbinsx * nbinsy; enum {nbinsTot = 50}; //################################################ 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); } } } } // Sum over componemts cout << "getting combined array" << endl; double num_OnPeak[nbinsx][nbinsy][nbinsz]; double num_OffPeak[nbinsx][nbinsy][nbinsz]; double num_Dlnu[nbinsx][nbinsy][nbinsz]; double num_Dstar[nbinsx][nbinsy][nbinsz]; double num_Ddstar[nbinsx][nbinsy][nbinsz]; double num_DPi[nbinsx][nbinsy][nbinsz]; double num_DiffB[nbinsx][nbinsy][nbinsz]; double num_CascL[nbinsx][nbinsy][nbinsz]; double num_LMisID[nbinsx][nbinsy][nbinsz]; double num_Comb[nbinsx][nbinsy][nbinsz]; double num_RealD[nbinsx][nbinsy][nbinsz]; double num_Cont[nbinsx][nbinsy][nbinsz]; double var_OnPeak[nbinsx][nbinsy][nbinsz]; double var_OffPeak[nbinsx][nbinsy][nbinsz]; double var_Dlnu[nbinsx][nbinsy][nbinsz]; double var_Dstar[nbinsx][nbinsy][nbinsz]; double var_Ddstar[nbinsx][nbinsy][nbinsz]; double var_DPi[nbinsx][nbinsy][nbinsz]; double var_DiffB[nbinsx][nbinsy][nbinsz]; double var_CascL[nbinsx][nbinsy][nbinsz]; double var_LMisID[nbinsx][nbinsy][nbinsz]; double var_Comb[nbinsx][nbinsy][nbinsz]; double var_RealD[nbinsx][nbinsy][nbinsz]; double var_Cont[nbinsx][nbinsy][nbinsz]; double err_OnPeak[nbinsx][nbinsy][nbinsz]; double err_OffPeak[nbinsx][nbinsy][nbinsz]; double err_Dlnu[nbinsx][nbinsy][nbinsz]; double err_Dstar[nbinsx][nbinsy][nbinsz]; double err_Ddstar[nbinsx][nbinsy][nbinsz]; double err_DPi[nbinsx][nbinsy][nbinsz]; double err_DiffB[nbinsx][nbinsy][nbinsz]; double err_CascL[nbinsx][nbinsy][nbinsz]; double err_LMisID[nbinsx][nbinsy][nbinsz]; double err_Comb[nbinsx][nbinsy][nbinsz]; double err_RealD[nbinsx][nbinsy][nbinsz]; double err_Cont[nbinsx][nbinsy][nbinsz]; for (int i=0; iDivide(nbinsy,nbinsx); gStyle->SetOptStat(000000); THStack hAll[nbinsTot]; for (int l=0; lSetMarkerStyle(29); OffPeak[l]->SetMarkerStyle(29); Dlnu[l]->SetFillColor(2); Dstar[l]->SetFillColor(3); Ddstar[l]->SetFillColor(4); DPi[l]->SetFillColor(5); DiffB[l]->SetFillColor(6); CascL[l]->SetFillColor(7) ; LMisID[l]->SetFillColor(8) ; Comb[l]->SetFillColor(21); RealD[l]->SetFillColor(9); Cont[l]->SetFillColor(12); //cout << "stacking\n"; hAll[l] = new THStack("hAll"+l,histTitle); hAll[l].Add(Cont[l]); hAll[l].Add(RealD[l]); hAll[l].Add(Comb[l]); hAll[l].Add(LMisID[l]); hAll[l].Add(CascL[l]); hAll[l].Add(DiffB[l]); hAll[l].Add(DPi[l]); hAll[l].Add(Ddstar[l]); hAll[l].Add(Dstar[l]); hAll[l].Add(Dlnu[l]); hAll[l].SetMinimum(min); if (requireSetMax) hAll[l].SetMaximum(max); else hAll[l].SetMaximum(OnPeak[l]->GetMaximum()*1.2); hAll[l].Draw("hist"); OnPeak[l]->Draw("e1psames"); } cx->Print(outPlotName); }