#include "TFile.h" #include "TGraphAsymmErrors.h" #include "TLegend.h" #include "TCanvas.h" #include "TAxis.h" #include #include #include #include "AtlasUtils.h" #include "AtlasStyle.C" #include "AtlasLabels.C" #include "ComputeTotalCrossSection.C" #define saveAsRoot true void MPIsystFromData(std::string hname="j_bjet_Pt_binned") { if (hname=="XXX"){ std::cout<<"No histogram selected - possible choices are: \n"; std::cout<<"\"j_bjet_Pt_binned\""<Get(hname.c_str()); std::string hnameMPI="XXX"; std::string hnameMCFM="XXX"; if (hname=="j_bjet_Pt_binned") { hnameMPI="zb_jet_pT_MPI"; hnameMCFM= "Pt_gae_"; } else if (hname=="j_bjet_Y_binned") { hnameMPI="zb_jet_y_MPI"; scaleF = 2.*scaleF; hnameMCFM= "Y_gae_"; } else if (hname=="j_bjet_Yboost_binned") { hnameMPI="zb_yboost_MPI"; hnameMCFM="Yboost_gae_"; } // else if (hname=="j_bjet_DY20_binned") { hnameMPI="zb_dy_MPI"; hnameMCFM = "ZdY_gae_"; } else if (hname=="j_bjet_ZdPhiF20_binned") { hnameMPI="zb_dphi_MPI"; scaleF = 2.*scaleF; hnameMCFM = "ZdPhi_gae_"; } else if (hname=="j_bjet_ZdR620_binned") { hnameMPI="zb_dR_MPI"; hnameMCFM = "ZdR_gae_"; } // else if (hname=="j_bjet_ZPt_binned") { hnameMPI="zb_Z_pT_MPI"; hnameMCFM = "ZPt_gae_"; } else if (hname=="j_bjet_ZY_binned") { scaleF = 2.*scaleF; hnameMPI="zb_Z_y_MPI"; hnameMCFM = "ZY_gae_"; } // else if (hname=="j_2bjet_ZPtv3_binned") { hnameMPI="zbb_Z_pT_MPI"; hnameMCFM = "ZPT_gae_"; } //else if (hname=="j_2bjet_ZPt_binned") hnameMPI="zbb_Z_pT_MPI"; else if (hname=="j_2bjet_ZY_binned") { scaleF = 2.*scaleF; hnameMPI="zbb_Z_y_MPI"; hnameMCFM = "ZY_gae_"; } else if (hname=="j_2bjet_dR_binned") { hnameMPI="zbb_dR_MPI"; hnameMCFM = "bbdR_gae_"; } else if (hname=="j_2bjet_Mbb_binned") { hnameMPI="zbb_M_MPI"; hnameMCFM = "bbM_gae_"; } std::cout<<"**************************** Trying to add "<Get(hnameMPI.c_str()); if (htmp != NULL) gr1 = new TGraphAsymmErrors(htmp); else gr1=NULL; if (gr0==NULL || gr1==NULL) { std::cout<<" some histogram / graph not found for hname=<"< hnameMPI=<"<"<ls(); return; } hnameMCFM=hnameMCFM+"stat"; std::cout<<" looking for gr with name <"<"<Get(hnameMCFM.c_str()); if (grMCFM==NULL) return; Double_t yn[100]; Double_t eupyn[100]; Double_t edwyn[100]; Double_t ys[100]; Double_t eys[100]; int Npoints=gr0->GetN(); for (int k=0; kGetX()[k]); yn[k] = 0.*gr0->GetY()[k]; yn[k] += 1000.*scaleF*gr1->GetY()[k]; Double_t ey0=gr0->GetEYhigh()[k]; Double_t ey1=scaleF*gr1->GetEYhigh()[k]; eupyn[k]=1000.*ey1; ey1=scaleF*gr1->GetEYlow()[k]; edwyn[k]=1000.*ey1; ys[k] = 0.5 * yn[k]/(grMCFM->GetY()[k]); eys[k] = 0.; } TFile* foutRoot; if (saveAsRoot) { std::string fn = "MergedHistos.root"; foutRoot = new TFile(fn.c_str(),"UPDATE"); } TGraphAsymmErrors* grnMCFM = new TGraphAsymmErrors(Npoints, gr0->GetX(), grMCFM->GetY(), gr0->GetEXlow(), gr0->GetEXhigh(), grMCFM->GetEYlow(), grMCFM->GetEYhigh()); TGraphAsymmErrors* mergedGr = new TGraphAsymmErrors(Npoints, gr0->GetX(), yn, gr0->GetEXlow(), gr0->GetEXhigh(), edwyn, eupyn); TGraphAsymmErrors* systMPIDataComp = new TGraphAsymmErrors(Npoints, gr0->GetX(), ys, gr0->GetEXlow(), gr0->GetEXhigh(), eys, eys); std::cout<<"Merged "<Draw("AC"); TCanvas* c2 = new TCanvas("merging mpi","Mering MPI"); mergedGr->Draw("APE"); // gr0->Draw("PECSAME"); // gr1->Draw("PESAME"); TCanvas* c3 = new TCanvas("mpi syst"," MPI syst"); systMPIDataComp->Draw("APE"); if (saveAsRoot) { mergedGr->Write(hname.c_str()); systMPIDataComp->Write(("MPIsyst_"+hname).c_str()); } if (saveAsRoot) { foutRoot->Close(); } }