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; }
TPad* plot_ratio(TCanvas *canv, bool up){ canv->SetFillColor (0); canv->SetBorderMode (0); canv->SetBorderSize (10); // Set margins to reasonable defaults canv->SetLeftMargin (0.18); canv->SetLeftMargin (0.17); canv->SetRightMargin (0.05); canv->SetTopMargin (0.12); canv->SetBottomMargin (0.18); // Setup a frame which makes sense canv->SetFrameFillStyle (0); canv->SetFrameLineStyle (0); canv->SetFrameBorderMode(0); canv->SetFrameBorderSize(10); canv->SetFrameFillStyle (0); canv->SetFrameLineStyle (0); canv->SetFrameBorderMode(0); canv->SetFrameBorderSize(10); canv->cd(); TPad *pad = 0; if (up){ pad = new TPad("upper","pad",0, 0.26 ,1 ,1); pad->SetBottomMargin(0.05); pad->SetTopMargin(0.09); pad->Draw(); pad->cd(); return pad; } else { pad = new TPad("lower","pad",0, 0,1 ,0.26); pad->SetTopMargin(0.05); pad->SetBottomMargin(0.24); pad->Draw(); pad->cd(); return pad; } };
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 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 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 plot2d(int hid) { gStyle->SetOptStat(0); char c[50]; c1->Clear(); if(hid!=2 && hid!=4){ c1->Divide(2,3); for(int disc=0; disc<kFgtNumDiscs; disc++){ TPad *pad = c1->cd(disc+1); pad->SetLogz(1); pad->SetTopMargin(0.01); pad->SetBottomMargin(0.02); sprintf(c,"Disc%1d%s",disc+1,c2dHist[hid]); //printf("Getting %s\n",c); TH2F *h = hist2[disc][hid] = (TH2F*)file->Get(c); h->Draw("COLZ"); } }else if(hid==2){ // special case for timing per APVboard gStyle->SetOptTitle(0); gStyle->SetOptFit(0); c1->Divide(2,1); char txt[100]; //int disc=3; char name[100]="MaxAdc"; int disc=4; char name[100]="LandauMPV"; //int disc=5; char name[100]="LandauMPV-3Sing"; TVirtualPad *pad2 = c1->cd(1); pad2->Divide(1,2); TVirtualPad *pad3=pad2->cd(1); pad3->SetLogz(1); pad2->SetLogz(0); sprintf(c,"Disc%1d%s",disc,c2dHist[hid]); TH2F *h = hist2[disc][hid] = (TH2F*)file->Get(c); h->Draw("COLZ"); TText *tt1= new TText(0.05,0.1,"(RDO-1)*12+ARM*2+GRP"); tt1->SetTextAngle(90); tt1->SetNDC(); tt1->Draw(); sprintf(txt,"Tbin for %s",name); TText *tt2= new TText(0.3,0,txt); tt2->SetNDC(); tt2->Draw(); TVirtualPad* pad4 = c1->cd(2); pad4->SetTopMargin(0.01); pad4->SetBottomMargin(0.1); int maxid=0; float off,max=0; TH1D *h1[24]; float mean[24]; for(int i=0; i<24; i++){ char ccc[10]; sprintf(ccc,"_%d_%d",disc,i); h1[i] = h->ProjectionX(ccc,i+1,i+1); if(h1[i]->GetMaximum() > max && i!=0) {max=h1[i]->GetMaximum(); maxid=i; } } off=max/4.0; printf("max=%f off=%f\n",max,off); for(int i=0; i<24; i++){ h1[i]->GetXaxis()->SetRangeUser(2,11); int res = h1[i]->Fit("gaus","0Q"); TF1* f=h1[i]->GetFunction("gaus"); if(h1[i]->GetMaximum()>max/3 && res==0){ mean[i] = f->GetParameter(1); //mean[i]=h1[i]->GetMean(); }else{mean[i]=0;}; //printf("%d mean=%f\n",i,mean[i]); } //h1[maxid]->SetLineColor(maxid+1); h1[maxid]->SetLineWidth(2); h1[maxid]->Draw("PL"); for(int rdo=1; rdo<=2; rdo++){ for(int arm=0; arm<6; arm++){ for(int grp=0; grp<2; grp++){ i=(rdo-1)*12+arm*2+grp; int nb=h1[i]->GetNbinsX(); for(int t=0; t<nb; t++){ h1[i]->AddBinContent(t+1,off*i); } h1[i]->SetLineColor(i%6+1); h1[i]->SetLineWidth(3); if(i==0) { h1[i]->SetMinimum(0); h1[i]->SetMaximum(max*6.5); h1[i]->Draw("PL"); } else {h1[i]->Draw("PL same");} char name[100]; sprintf(name,"Rdo%1dArm%1dGrp%1d",rdo,arm,grp); TText *tx = new TText(8.5,(max/4.0)*(i+0.2),name); tx->SetTextColor(i%6+1); tx->SetTextSize(0.03); tx->Draw(); } } } // TText *tt3= new TText(0.95,0.1,"offsets added by (RDO-1)*12+ARM*2+GRP"); tt3->SetTextAngle(90); tt3->SetNDC(); tt3->Draw(); TText *tt4= new TText(0.4,0,txt); tt4->SetNDC(); tt4->Draw(); //correlation float t2[24]={-8.47, -5.16, -0.21, -2.23, 1.11, -4.09, -3.13, -9.08, -5.88, -7.01, -6.22, -9.79, 0.75, -8.91, 0.16, 1.12, -0.99, -4.56, 7.57, -3.68, 7.12, -6.54, -4.08, -8.21}; TGraph *g= new TGraph(1); int j=0; for(int i=0; i<24; i++){ if(mean[i]>0) {g->SetPoint(j,(mean[i]-6.0)*27,t2[i]); j++;} } TVirtualPad* pad5=pad2->cd(2); g->SetMarkerStyle(20+i/6); g->SetMarkerSize(1); g->Draw("ap"); for(int i=0; i<24; i++){ TGraph *g2= new TGraph(1); if(mean[i]>0) {g2->SetPoint(j,(mean[i]-6.0)*27,t2[i]); j++;} g2->SetMarkerStyle(20+i/6); g2->SetMarkerSize(2); g2->SetMarkerColor(i%6+1); g2->Draw("p"); } TText *tt5= new TText(0.05,0.1,"(VPHASE_ADC-1.2V)/0.95V*27nsec/2"); tt5->SetTextAngle(90); tt5->SetNDC(); tt5->Draw(); TText *tt6= new TText(0.5,0,"(Tbin-6)*27nsec"); tt6->SetNDC(); tt6->Draw(); }else{ // special case for timing per APVboard gStyle->SetOptTitle(0); gStyle->SetOptFit(0); c1->Divide(4,6); char txt[100]; //int disc=3; char name[100]="MaxAdc"; int disc=4; char name[100]="LandauMPV"; //int disc=5; char name[100]="LandauMPV-3Sing"; sprintf(c,"Disc%1d%s",disc,c2dHist[2]); TH2F *h = hist2[disc][2] = (TH2F*)file->Get(c); TH1D *h1[24]; float mean[24]; for(int rdo=1; rdo<=2; rdo++){ for(int arm=0; arm<6; arm++){ for(int grp=0; grp<2; grp++){ int i=(rdo-1)*12+arm*2+grp; TVirtualPad *pad2 = c1->cd(i+1); pad2->SetTopMargin(0.01); pad2->SetBottomMargin(0.1); char ccc[10]; sprintf(ccc,"_%d_%d",disc,i); h1[i]=h->ProjectionX(ccc,i+1,i+1); h1[i]->GetXaxis()->SetRangeUser(2,12); h1[i]->SetFillColor(4); h1[i]->GetXaxis()->SetLabelSize(0.1); h1[i]->GetYaxis()->SetLabelSize(0.1); h1[i]->Draw(); int res = h1[i]->Fit("gaus","Q"); TF1* f=h1[i]->GetFunction("gaus"); f->SetLineColor(2); f->SetLineWidth(2); if(res==0){ mean[i] = f->GetParameter(1); }else{mean[i]=0;}; char name[100]; sprintf(name,"Rdo%1dArm%1d-%1d",rdo,arm,grp); TText *tx = new TText(0.5,0.85,name); tx->SetTextSize(0.1); tx->SetNDC(); tx->Draw(); if(mean[i]>0){ sprintf(name,"peak=%4.1f",mean[i]); TText *tx2 = new TText(0.55,0.75,name); tx2->SetTextSize(0.12); tx2->SetNDC(); tx2->Draw(); } } } } } c1->Update(); save(c2dHist[hid]); }
void vs_PlotQCDcomp() { Bool_t saveC = false; Bool_t diJets = true; Bool_t isMC = false; TString vsSave; vsSave = "_T07w"; TString jSave; if(diJets) jSave = "2j"; else jSave = "3j"; TString sample; if(diJets) sample = "select_1ph_2jets"; else sample = "select_1ph_3jets"; TString FOtag; if(isMC) FOtag = "_FO_CorrMC"; // else FOtag = "_FO_Corr"; else FOtag = "_FO"; TString sysu = "SYSTUP_"; TString sysd = "SYSTDOWN_"; TString outDir; outDir = "Plots_PhotonSusyAnalysis/QCDweights/"; // string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/Merged_QCD_PhotonJet_T07w_PAT/mergedHistos.root"; // string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/Merged_Data_V05w_PAT/mergedHistos.root"; string inputFile1 = "/data/user/vsola/CMSSW_Releases/CMSSW_5_3_9/src/Plots_PhotonSusyAnalysis/PhotonHadReReco_22Jan2013_V05_PAT/mergedHistos.root"; setMyTDRStyle(); gROOT->SetStyle("mytdrStyle"); // gStyle->SetHistMinimumZero(); // gStyle->SetPaintTextFormat("4.2f"); gStyle->SetHistLineWidth(2); gStyle->UseCurrentStyle(); // gStyle->SetPadTopMargin(1.0); // gStyle->SetPadLeftMargin(3.2); // gStyle->SetPadRightMargin(4.5); // gStyle->SetPadBottomMargin(3.2); gROOT->ForceStyle(1); static const Int_t nHt = 7; static const Int_t nPt = 13; static const Int_t nMet = 16; static const Int_t nJet = 15; Double_t binPt[nPt+1] = {0.,75.,90.,120.,160.,210.,260.,320.,400.,500.,650.,800.,1000.,1500.}; Double_t binHt[nHt+1] = {0.,400.,450.,550.,700.,900.,1200.,1500.}; Double_t binMet[nMet+1] = {0.,10.,20.,30.,40.,50.,60.,70.,80.,90.,100.,120.,160.,200.,270.,350.,500.}; Double_t binJet[nJet+1] = {0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,10.,11.,12.,13.,14.,15}; TLatex *as = new TLatex(); as->SetNDC(true); as->SetTextColor(12); as->SetTextFont(43); as->SetTextSize(19); TLegend *legend = new TLegend(0.60, 0.70, 0.75, 0.85, ""); legend->SetFillColor(10); legend->SetFillStyle(1001); legend->SetTextSize(0.04); legend->SetBorderSize(0); legend->SetShadowColor(0); std::string outLumi = "CMS Work in Progress - QCD MC #sqrt{s} = 8 TeV - #geq 1 #gamma, #geq 2 j"; TFile* f1 = TFile::Open( inputFile1.c_str() ); //photon Pt TCanvas * cPt = new TCanvas("cPt","cPt"); TH1F* hpt = (TH1F*) f1->Get( sample+"/PreselCut_photonPt" ); TH1F* hptFO = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_photonPt" ); TH1F *hptR = (TH1F*) hpt->Rebin(nPt,hpt->GetTitle(),binPt); if (hptR->GetSumw2N() == 0) hptR->Sumw2(); TH1F *hptFOR = (TH1F*) hptFO->Rebin(nPt,hptFO->GetTitle(),binPt); if (hptFOR->GetSumw2N() == 0) hptFOR->Sumw2(); TH1F* hptSU = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_"+sysu+"photonPt" ); TH1F* hptSD = (TH1F*) f1->Get( sample+FOtag+"/PreselCut_"+sysd+"photonPt" ); TH1F *hptSUR = (TH1F*) hptSU->Rebin(nPt,hptSU->GetTitle(),binPt); if (hptSUR->GetSumw2N() == 0) hptSUR->Sumw2(); TH1F *hptSDR = (TH1F*) hptSD->Rebin(nPt,hptSD->GetTitle(),binPt); if (hptSDR->GetSumw2N() == 0) hptSDR->Sumw2(); if ( hptFOR != 0 ) { for (int b = 0; b < hptFOR->GetNbinsX(); b++) { Double_t mainHistoContent = hptFOR->GetBinContent(b); Double_t systUpHistoContent = hptSUR->GetBinContent(b); Double_t systDnHistoContent = hptSDR->GetBinContent(b); Double_t systDiffUp = fabs( (double) systUpHistoContent - mainHistoContent ); Double_t systDiffDn = fabs( (double) mainHistoContent - systDnHistoContent ); // use average error for histogram Double_t systDiff = ( systDiffUp + systDiffDn ) / 2.; Double_t statErr = hptFOR->GetBinError(b); Double_t combError = sqrt( systDiff * systDiff + statErr * statErr ); hptFOR->SetBinError(b, combError); } //for }//if cPt->SetLogy(1); gPad->Update(); cPt->Update(); // hptR->Scale(1,"width"); // hptR->SetMinimum(0.02); // hptR->SetMaximum(1000); hptR->GetXaxis()->SetTitle("1^{st} photon p_{T} [GeV]"); hptR->GetYaxis()->SetTitle("Number of Events / GeV"); if(isMC) hptR->SetMarkerSize(0); if(isMC) hptR->Draw("histE"); else hptR->Draw("E X0"); hptFOR->SetMarkerSize(0); hptFOR->SetLineColor(2); hptFOR->SetFillColor(2); hptFOR->SetFillStyle(3004); hptFOR->Draw("same hist ][ E2"); legend->Clear(); if(isMC) legend->SetHeader("#gamma/QCD (Sim)"); else legend->SetHeader("#gamma/QCD (Data)"); if(isMC) legend->AddEntry(hptR, "#gamma", "l"); else legend->AddEntry(hptR, "#gamma", "p"); legend->AddEntry(hptFOR, "Pred (from #gamma_{jet})", "f"); legend->Draw(); as->DrawLatex(0.17, 0.93, outLumi.c_str() ); cPt->Update(); cPt->SetBottomMargin(0.2 + 0.8 * cPt->GetBottomMargin() - 0.2 * cPt->GetTopMargin()); TPad *ratioPt = new TPad("BottomPad", "", 0, 0, 1, 1); ratioPt->SetTopMargin(0.8 - 0.8 * ratioPt->GetBottomMargin() + 0.2 * ratioPt->GetTopMargin()); ratioPt->SetFillStyle(0); ratioPt->SetFrameFillColor(10); ratioPt->SetFrameBorderMode(0); ratioPt->Draw(); ratioPt->cd(); ratioPt->SetLogy(0); TH1F *hptRat = (TH1F*) divideHistosForRatio(hptR,hptFOR); hptRat->SetMinimum(0.); hptRat->SetMaximum(10.); hptRat->GetXaxis()->SetNdivisions(505); if(isMC) hptRat->GetYaxis()->SetTitle("Sim/Pred"); else hptRat->GetYaxis()->SetTitle("Data/Pred"); hptRat->GetYaxis()->SetTitleSize(0.04); hptRat->GetYaxis()->SetLabelSize(0.03); hptRat->GetYaxis()->SetTitleOffset(1.3); hptRat->GetYaxis()->SetNdivisions(505); hptRat->SetMarkerStyle(20); hptRat->SetMarkerSize(1); hptRat->SetMarkerColor(1); hptRat->SetLineColor(1); hptRat->Draw("E X0"); TH1F *hptFRat = (TH1F*) getSystErrForRatio(hptFOR); hptFRat->SetLineColor(2); hptFRat->SetFillColor(2); hptFRat->SetFillStyle(3004); hptFRat->Draw("same hist ][ E2"); TLine * line = new TLine( hptRat->GetXaxis()->GetXmin(), 1., hptRat->GetXaxis()->GetXmax(), 1. ); line->SetLineColor(1); line->SetLineWidth(0.5); line->SetLineStyle(1); line->Draw("same"); hptR->GetXaxis()->SetLabelSize(0); hptR->GetXaxis()->SetTitle(""); cPt->RedrawAxis(); gPad->Update(); cPt->Update(); return; }
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; }
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); }
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); }
TF1* fit(Double_t ptmin, Double_t ptmax) { TCanvas* c = new TCanvas(Form("c_%.0f_%.0f",ptmin,ptmax),"",600,600); TFile* infile = new TFile(Form("%s_%s_%.0f_%.0f.root",infname.Data(),collisionsystem.Data(),ptmin,ptmax)); TH1D* h = (TH1D*)infile->Get("h"); h->SetName(Form("h_%.0f_%.0f",ptmin,ptmax)); TH1D* hMCSignal = (TH1D*)infile->Get("hMCSignal"); hMCSignal->SetName(Form("hMCSignal_%.0f_%.0f",ptmin,ptmax)); TH1D* hMCSwapped = (TH1D*)infile->Get("hMCSwapped"); hMCSwapped->SetName(Form("hMCSwapped_%.0f_%.0f",ptmin,ptmax)); TF1* f = new TF1(Form("f_%.0f_%.0f",ptmin,ptmax),"[0]*([7]*([9]*Gaus(x,[1],[2])/(sqrt(2*3.14159)*[2])+(1-[9])*Gaus(x,[1],[10])/(sqrt(2*3.14159)*[10]))+(1-[7])*Gaus(x,[1],[8])/(sqrt(2*3.14159)*[8]))+[3]*exp([4]*x)", 1.7, 2.0); f->SetParLimits(10,0.001,0.05); f->SetParLimits(2,0.01,0.1); f->SetParLimits(8,0.02,0.2); f->SetParLimits(7,0,1); f->SetParLimits(9,0,1); f->SetParameter(0,setparam0); f->SetParameter(1,setparam1); f->SetParameter(2,setparam2); f->SetParameter(10,setparam10); f->SetParameter(9,setparam9); f->FixParameter(8,setparam8); f->FixParameter(7,1); f->FixParameter(1,fixparam1); f->FixParameter(3,0); f->FixParameter(4,0); h->GetEntries(); hMCSignal->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"q","",minhisto,maxhisto); hMCSignal->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"q","",minhisto,maxhisto); f->ReleaseParameter(1); hMCSignal->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); hMCSignal->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); hMCSignal->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L m","",minhisto,maxhisto); f->FixParameter(1,f->GetParameter(1)); f->FixParameter(2,f->GetParameter(2)); f->FixParameter(10,f->GetParameter(10)); f->FixParameter(9,f->GetParameter(9)); f->FixParameter(7,0); f->ReleaseParameter(8); f->SetParameter(8,setparam8); hMCSwapped->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); hMCSwapped->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); hMCSwapped->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); hMCSwapped->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L m","",minhisto,maxhisto); f->SetParLimits(0,0,1.e+6); f->FixParameter(7,hMCSignal->Integral(0,1000)/(hMCSwapped->Integral(0,1000)+hMCSignal->Integral(0,1000))); f->FixParameter(8,f->GetParameter(8)); f->ReleaseParameter(3); f->ReleaseParameter(4); f->SetParLimits(3,0,1.e+10); f->SetParameter(3,1.e+3); f->SetLineColor(kRed); h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"q","",minhisto,maxhisto); h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"q","",minhisto,maxhisto); f->ReleaseParameter(1); f->SetParLimits(1,1.85,1.90); //f->ReleaseParameter(2); // you need to release these two parameters if you want to perform studies on the sigma shape //f->ReleaseParameter(10); // you need to release these two parameters if you want to perform studies on the sigma shape h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L q","",minhisto,maxhisto); h->Fit(Form("f_%.0f_%.0f",ptmin,ptmax),"L m","",minhisto,maxhisto); TF1* background = new TF1(Form("background_%.0f_%.0f",ptmin,ptmax),"[0]*exp([1]*x)"); background->SetParameter(0,f->GetParameter(3)); background->SetParameter(1,f->GetParameter(4)); background->SetLineColor(4); background->SetRange(minhisto,maxhisto); background->SetLineStyle(2); TF1* mass = new TF1(Form("fmass_%.0f_%.0f",ptmin,ptmax),"[0]*([3]*([4]*Gaus(x,[1],[2])/(sqrt(2*3.14159)*[2])+(1-[4])*Gaus(x,[1],[5])/(sqrt(2*3.14159)*[5])))"); mass->SetParameters(f->GetParameter(0),f->GetParameter(1),f->GetParameter(2),f->GetParameter(7),f->GetParameter(9),f->GetParameter(10)); mass->SetParError(0,f->GetParError(0)); mass->SetParError(1,f->GetParError(1)); mass->SetParError(2,f->GetParError(2)); mass->SetParError(3,f->GetParError(7)); mass->SetParError(4,f->GetParError(9)); mass->SetParError(5,f->GetParError(10)); mass->SetFillColor(kOrange-3); mass->SetFillStyle(3002); mass->SetLineColor(kOrange-3); mass->SetLineWidth(3); mass->SetLineStyle(2); TF1* massSwap = new TF1(Form("fmassSwap_%.0f_%.0f",ptmin,ptmax),"[0]*(1-[2])*Gaus(x,[1],[3])/(sqrt(2*3.14159)*[3])"); massSwap->SetParameters(f->GetParameter(0),f->GetParameter(1),f->GetParameter(7),f->GetParameter(8)); massSwap->SetParError(0,f->GetParError(0)); massSwap->SetParError(1,f->GetParError(1)); massSwap->SetParError(2,f->GetParError(7)); massSwap->SetParError(3,f->GetParError(8)); massSwap->SetFillColor(kGreen+4); massSwap->SetFillStyle(3005); massSwap->SetLineColor(kGreen+4); massSwap->SetLineWidth(3); massSwap->SetLineStyle(1); h->SetXTitle("m_{#piK} (GeV/c^{2})"); h->SetYTitle("Entries / (5 MeV/c^{2})"); h->GetXaxis()->CenterTitle(); h->GetYaxis()->CenterTitle(); h->SetAxisRange(0,h->GetMaximum()*1.4*1.2,"Y"); h->GetXaxis()->SetTitleOffset(1.3); h->GetYaxis()->SetTitleOffset(1.8); h->GetXaxis()->SetLabelOffset(0.007); h->GetYaxis()->SetLabelOffset(0.007); h->GetXaxis()->SetTitleSize(0.045); h->GetYaxis()->SetTitleSize(0.045); h->GetXaxis()->SetTitleFont(42); h->GetYaxis()->SetTitleFont(42); h->GetXaxis()->SetLabelFont(42); h->GetYaxis()->SetLabelFont(42); h->GetXaxis()->SetLabelSize(0.04); h->GetYaxis()->SetLabelSize(0.04); h->SetMarkerSize(0.8); h->SetMarkerStyle(20); h->SetStats(0); h->Draw("e"); background->Draw("same"); mass->SetRange(minhisto,maxhisto); mass->Draw("same"); massSwap->SetRange(minhisto,maxhisto); massSwap->Draw("same"); f->Draw("same"); Double_t yield = mass->Integral(minhisto,maxhisto)/binwidthmass; Double_t yieldErr = mass->Integral(minhisto,maxhisto)/binwidthmass*mass->GetParError(0)/mass->GetParameter(0); std::cout<<"YIELD="<<yield<<std::endl; TLegend* leg = new TLegend(0.65,0.58,0.82,0.88,NULL,"brNDC"); leg->SetBorderSize(0); leg->SetTextSize(0.04); leg->SetTextFont(42); leg->SetFillStyle(0); leg->AddEntry(h,"Data","pl"); leg->AddEntry(f,"Fit","l"); leg->AddEntry(mass,"D^{0}+#bar{D^{#lower[0.2]{0}}} Signal","f"); leg->AddEntry(massSwap,"K-#pi swapped","f"); leg->AddEntry(background,"Combinatorial","l"); leg->Draw("same"); TLatex* texCms = new TLatex(0.18,0.93, "#scale[1.25]{CMS} Preliminary"); texCms->SetNDC(); texCms->SetTextAlign(12); texCms->SetTextSize(0.04); texCms->SetTextFont(42); texCms->Draw(); TLatex* texCol = new TLatex(0.96,0.93, Form("%s #sqrt{s_{NN}} = 5.02 TeV",collisionsystem.Data())); texCol->SetNDC(); texCol->SetTextAlign(32); texCol->SetTextSize(0.04); texCol->SetTextFont(42); texCol->Draw(); TLatex* texPt = new TLatex(0.22,0.78,Form("%.1f < p_{T} < %.1f GeV/c",ptmin,ptmax)); texPt->SetNDC(); texPt->SetTextFont(42); texPt->SetTextSize(0.04); texPt->SetLineWidth(2); texPt->Draw(); TLatex* texY = new TLatex(0.22,0.83,"|y| < 1.0"); texY->SetNDC(); texY->SetTextFont(42); texY->SetTextSize(0.04); texY->SetLineWidth(2); texY->Draw(); TLatex* texYield = new TLatex(0.22,0.73,Form("N_{D} = %.0f #pm %.0f",yield,yieldErr)); texYield->SetNDC(); texYield->SetTextFont(42); texYield->SetTextSize(0.04); texYield->SetLineWidth(2); texYield->Draw(); c->SaveAs(Form("plotFits/DMass_expo_%s_%.0f_%.0f.pdf",collisionsystem.Data(),ptmin,ptmax)); TCanvas* cPull = new TCanvas(Form("cPull_%.0f_%.0f",ptmin,ptmax),"",600,700); TH1D* hPull = (TH1D*)h->Clone("hPull"); for(int i=0;i<h->GetNbinsX();i++) { Double_t nfit = f->Integral(h->GetBinLowEdge(i+1),h->GetBinLowEdge(i+1)+h->GetBinWidth(i+1))/h->GetBinWidth(i+1); hPull->SetBinContent(i+1,(h->GetBinContent(i+1)-nfit)/h->GetBinError(i+1)); hPull->SetBinError(i+1,0); } hPull->SetMinimum(-4.); hPull->SetMaximum(4.); hPull->SetYTitle("Pull"); hPull->GetXaxis()->SetTitleOffset(1.); hPull->GetYaxis()->SetTitleOffset(0.65); hPull->GetXaxis()->SetLabelOffset(0.007); hPull->GetYaxis()->SetLabelOffset(0.007); hPull->GetXaxis()->SetTitleSize(0.12); hPull->GetYaxis()->SetTitleSize(0.12); hPull->GetXaxis()->SetLabelSize(0.1); hPull->GetYaxis()->SetLabelSize(0.1); hPull->GetYaxis()->SetNdivisions(504); TLine* lPull = new TLine(1.7, 0, 2., 0); lPull->SetLineWidth(1); lPull->SetLineStyle(7); lPull->SetLineColor(1); TPad* pFit = new TPad("pFit","",0,0.3,1,1); pFit->SetBottomMargin(0); pFit->Draw(); pFit->cd(); h->Draw("e"); background->Draw("same"); mass->Draw("same"); massSwap->Draw("same"); f->Draw("same"); leg->Draw("same"); texCms->Draw(); texCol->Draw(); texPt->Draw(); texY->Draw(); texYield->Draw(); cPull->cd(); TPad* pPull = new TPad("pPull","",0,0,1,0.3); pPull->SetTopMargin(0); pPull->SetBottomMargin(0.3); pPull->Draw(); pPull->cd(); hPull->Draw("p"); lPull->Draw(); cPull->cd(); cPull->SaveAs(Form("plotFits/DMass_expo_%s_%.0f_%.0f_Pull.pdf",collisionsystem.Data(),ptmin,ptmax)); return mass; }
bool createPlot(TString hname, TString dirname, TFile *V1file, TString runstring1, TString relstring1, TFile *V2file, TString runstring2, TString relstring2, TCanvas *canvas, int scale) { setTDRStyle(); int SetScale = scale; //IF =0 --> No scale applied ('direct' comparison) //IF =1 --> Scale INDIVIDUALLY (scale histograms individually) //IF =2 --> Scale all GLOBALLY (scale all histograms to #tracks=1) //IF =3 --> Scale all GLOBALLY nEVENTS (scale all histos to nEntries in nTracks per Event) bool DrawRatio = true; canvas->cd(); TPad* mainpad = new TPad("mainpad","mainpad",0.0,0.0,1.0,0.8); mainpad->Draw(); mainpad->cd(); // ************ Get name of histos and get histos ************* // if (dirname.Contains("GeneralProperties/GoodTracks",TString::kExact)){ if ((hname != "FractionOfGoodTracks") && (hname != "NumberOfGoodTracks")){ hname.Prepend("GoodTrack"); } } TString basename1 = "DQMData/Run "; basename1.Append(runstring1); TString hnameV1 = basename1; hnameV1.Append(dirname+"/"); hnameV1.Append(hname); if (hname != "vtxNbr"){ hnameV1.Append("_GenTk"); } TH1F * hBinTempV1 = (TH1F*)V1file->Get(hnameV1); if ( hBinTempV1 == (TH1F*) NULL ) { cout << "histV1 failed on " << hnameV1 << endl << " for file " << V1file->GetName() << endl; exit(1); } TString basename2 = "DQMData/Run "; basename2.Append(runstring2); TString hnameV2 = basename2; hnameV2.Append(dirname+"/"); hnameV2.Append(hname); if (hname != "vtxNbr"){ hnameV2.Append("_GenTk"); } TH1F * hBinTempV2 = (TH1F*)V2file->Get(hnameV2); if ( hBinTempV2 == (TH1F*) NULL ) { cout << "histV2 failed on " << hnameV2 << endl << " for file " << V2file->GetName() << endl; exit(1); } // Check that bins match for ratio plot TH1F * histV1 = 0; TH1F * histV2 = 0; Double_t h1_xlow = hBinTempV1->GetXaxis()->GetBinLowEdge(hBinTempV1->GetXaxis()->GetFirst()); Double_t h2_xlow = hBinTempV2->GetXaxis()->GetBinLowEdge(hBinTempV2->GetXaxis()->GetFirst()); Double_t h1_xup = hBinTempV1->GetXaxis()->GetBinUpEdge(hBinTempV1->GetXaxis()->GetLast()); Double_t h2_xup = hBinTempV2->GetXaxis()->GetBinUpEdge(hBinTempV2->GetXaxis()->GetLast()); Int_t h1_nbins = hBinTempV1->GetNbinsX(); Int_t h2_nbins = hBinTempV2->GetNbinsX(); Double_t h1_binWidth = (h1_xup - h1_xlow) / (Double_t)h1_nbins; Double_t h2_binWidth = (h2_xup - h2_xlow) / (Double_t)h2_nbins; if ((h1_xlow == h2_xlow) && (h1_xup == h2_xup) && (h1_binWidth == h2_binWidth)){ histV1 = (TH1F*)V1file->Get(hnameV1); histV2 = (TH1F*)V2file->Get(hnameV2); } else if((h1_xlow == h2_xlow) && (h1_xup < h2_xup) && (h1_binWidth == h2_binWidth)){ // Fill h1 from h1xlow to h1high with h1 info, and up to h2high, fill zero histV2 = (TH1F*)V2file->Get(hnameV2); // copy histV2 histV1 = new TH1F(hBinTempV1->GetName(),hBinTempV1->GetTitle(),h2_nbins,h2_xlow,h2_xup); histV1->SetXTitle(hBinTempV1->GetXaxis()->GetTitle()); histV1->SetYTitle(hBinTempV1->GetYaxis()->GetTitle()); for (Int_t ibin = 1; ibin <= h2_nbins; ibin++){ if (ibin <= h1_nbins){ histV1->SetBinContent(ibin,hBinTempV1->GetBinContent(ibin)); } else if (ibin > h1_nbins){ histV1->SetBinContent(ibin,0.0); } } } else if((h1_xlow == h2_xlow) && (h1_xup > h2_xup) && (h1_binWidth == h2_binWidth)){ // Fill h1 from h1xlow to h1high with h1 info, and up to h2high, fill zero histV1 = (TH1F*)V1file->Get(hnameV1); // copy histV1 histV2 = new TH1F(hBinTempV2->GetName(),hBinTempV2->GetTitle(),h1_nbins,h1_xlow,h1_xup); histV2->SetXTitle(hBinTempV2->GetXaxis()->GetTitle()); histV2->SetYTitle(hBinTempV2->GetYaxis()->GetTitle()); for (Int_t ibin = 1; ibin <= h1_nbins; ibin++){ if (ibin <= h2_nbins){ histV2->SetBinContent(ibin,hBinTempV2->GetBinContent(ibin)); } else if (ibin > h2_nbins){ histV2->SetBinContent(ibin,0.0); } } } else{ cout << "Bin Check Failed... here's what happened: " << endl; cout << "histV1 failed on " << hnameV1 << endl << " for file " << V1file->GetName() << endl; cout << " bin info: " << h1_xlow << " " << h1_xup << " " << h1_nbins << endl; cout << "histV2 failed on " << hnameV2 << endl << " for file " << V2file->GetName() << endl; cout << " bin info: " << h2_xlow << " " << h2_xup << " " << h2_nbins << endl; exit(1); } // Don't look at zero bin -- > Also could use this for truncation and bin setting -->Range is binlower to upper // Int_t range_upper = histV1->GetXaxis()->GetLast(); // histV1->GetXaxis()->SetRangeUser(1,range_upper); // histV2->GetXaxis()->SetRangeUser(1,range_upper); //******************* Get histo integrals ***********************// double V1_integral = 1.0; double V2_integral = 1.0; TH1F * hNormTempV1 = 0; TH1F * hNormTempV2 = 0; if (SetScale==1){ V1_integral = histV1->Integral(); V2_integral = histV2->Integral(); } else if ( (SetScale==2) || (SetScale==3) ){ if (hname != "NumberOfTracks"){ TString hTempNameV1 = basename1; hTempNameV1.Append("/Tracking/Run summary/TrackParameters/GeneralProperties/NumberOfTracks_GenTk"); hNormTempV1 = (TH1F*)V1file->Get(hTempNameV1); TString hTempNameV2 = basename2; hTempNameV2.Append("/Tracking/Run summary/TrackParameters/GeneralProperties/NumberOfTracks_GenTk"); hNormTempV2 = (TH1F*)V2file->Get(hTempNameV2); } else{ hNormTempV1 = (TH1F*)histV1->Clone("hNormTempV1"); hNormTempV2 = (TH1F*)histV2->Clone("hNormTempV2"); } if (SetScale==2){ V1_integral = hNormTempV1->GetBinContent(2); V2_integral = hNormTempV2->GetBinContent(2); std::cout << "The number of single tracks for V1 is " << V1_integral << std::endl; std::cout << "The number of single tracks for V2 is " << V2_integral << std::endl; } else if (SetScale==3){ V1_integral = hNormTempV1->GetEntries(); V2_integral = hNormTempV2->GetEntries(); std::cout << "The number of events for V1 is " << V1_integral << std::endl; std::cout << "The number of events for V2 is " << V2_integral << std::endl; } } //*****NORMALIZING V1-V2**************************************** if(V1_integral>V2_integral) { histV1->Scale(V2_integral / V1_integral); histV2->Scale(1); } else if(V2_integral>V1_integral){ histV1->Scale(1); histV2->Scale(V1_integral / V2_integral); } //*****NORMALIZING V1-V2*end*************************************** //***Name the files under comparison*** TString V1_V1run = "Run "+runstring1+" ("+relstring1+")"; TString V2_V2run = "Run "+runstring2+" ("+relstring2+")"; histV1->SetName(V1_V1run); histV2->SetName(V2_V2run); double max = 0; double V1max = histV1->GetBinContent(histV1->GetMaximumBin()); double V2max = histV2->GetBinContent(histV2->GetMaximumBin()); max = (V1max>V2max) ? V1max : V2max; histV1->Draw(); histV1->SetLineStyle(1); histV1->GetYaxis()->SetLabelSize(0.038); histV1->SetLineWidth(5); histV1->SetLineColor(kRed); histV1->SetMaximum(max*(1.1)); histV2->Draw(); histV2->SetLineWidth(3); histV2->SetLineStyle(1); histV2->SetLineColor(kBlue); if( hname.Contains("NumberOfTracks",TString::kExact) || hname.Contains("NumberOfGoodTracks",TString::kExact) || hname.Contains("TrackPt",TString::kExact) || hname.Contains("Chi2Prob",TString::kExact) ){ mainpad->SetLogy(1); } else{ mainpad->SetLogy(0); } if (hname.Contains("NumberOfTracks",TString::kExact)){ histV1->GetXaxis()->SetRangeUser(0,500); histV2->GetXaxis()->SetRangeUser(0,500); } if (hname.Contains("NumberOfGoodTracks",TString::kExact)) { histV1->GetXaxis()->SetRangeUser(0,200); histV2->GetXaxis()->SetRangeUser(0,200); } if (hname.Contains("Chi2oNDF",TString::kExact)) { histV1->GetXaxis()->SetRangeUser(0,10); histV2->GetXaxis()->SetRangeUser(0,10); } if (hname.Contains("vtxNbr")){ histV1->GetXaxis()->SetTitle("Number of Primary Vertices per Event"); histV1->GetYaxis()->SetTitle("Number of Events"); } histV1->Draw(); // Draw old histo first, ratio is new/old histV2->Draw("sames"); mainpad->Update(); TPaveStats *st1 = (TPaveStats*)(histV1->GetListOfFunctions()->FindObject("stats")); st1->SetX1NDC(0.77); st1->SetY1NDC(0.80); st1->SetX2NDC(0.98); st1->SetY2NDC(0.97); Double_t defaulth = st1->GetY2NDC() - st1->GetY1NDC(); Double_t gaph = 0.02; TPaveStats *st2 = (TPaveStats*)(histV2->GetListOfFunctions()->FindObject("stats")); st2->SetX1NDC(0.77); st2->SetY1NDC(st1->GetY1NDC() - 1.0*defaulth - gaph); st2->SetX2NDC(0.98); st2->SetY2NDC(st1->GetY1NDC() - gaph); TLegend *leg = new TLegend(0.32,0.86,0.76,0.97); leg->SetTextSize(0.042); leg->SetTextFont(42); leg->SetFillColor(10); leg->SetBorderSize(1); // no frame, no shadow leg->AddEntry(histV1, V1_V1run, "L" ); leg->AddEntry(histV2, V2_V2run, "L" ); leg->Draw("SAME"); // Draw ratio histogram if (DrawRatio){ canvas->cd(); TPad* respad = new TPad("respad","respad",0.0,0.78,1.0,0.95); respad->SetTopMargin(1.05); respad->Draw(); respad->cd(); TH1F* hratio = (TH1F*) histV2->Clone("hratio"); hratio->Divide(histV1); hratio->SetMaximum(hratio->GetMaximum()*1.1); hratio->SetMinimum(hratio->GetMinimum()/1.1); //if (hratio->GetMinimum()==0.0) hratio->SetMinimum(1.0/hratio->GetMaximum()); // hratio->SetMinimum(1.0/hratio->GetMaximum()); hratio->GetYaxis()->SetLabelSize(0.1); // hratio->GetYaxis()->SetRangeUser(0,2); hratio->GetXaxis()->SetLabelSize(0); hratio->GetXaxis()->SetTitleSize(0); hratio->GetYaxis()->SetTitleSize(0.22); hratio->GetYaxis()->SetTitleOffset(0.26); hratio->GetYaxis()->SetLabelSize(0.2); hratio->GetYaxis()->SetNdivisions(5); hratio->GetYaxis()->SetTitle("NEW/REF"); hratio->Draw(); } // Compare parameters of histograms double Entries1 = histV1->GetEntries(); double Entries2 = histV2->GetEntries(); if (Entries1 != Entries2) { std::cout<<" Difference in # of ENTRIES for " <<hname<< std::endl; std::cout<<"\t Entries1 = " << Entries1 << "\t Entries2 = " << Entries2 << std::endl; } double Mean1 = histV1->GetMean(); double Mean2 = histV2->GetMean(); if (Mean1 != Mean2) { std::cout<<" Difference in MEANS for " <<hname<< std::endl; std::cout<<"\t Mean1 = " << Mean1 << "\t Mean2 = " << Mean2 << std::endl; } double RMS1 = histV1->GetRMS(); double RMS2 = histV2->GetRMS(); if (RMS1 != RMS2) { std::cout<<" Difference in RMS for " <<hname<< std::endl; std::cout<<"\t RMS1 = " << RMS1 << "\t RMS2 = " << RMS2 << std::endl; } TString filename = hname; if (hname.Contains("vtxNbr")){ filename = "NumberOfPrimaryVertices"; } if (dirname.Contains("GeneralProperties/GoodTracks",TString::kExact)) filename.Prepend("RunComparison/GoodTracks_"); else filename.Prepend("RunComparison/"); filename.Append(".png"); canvas->Print(filename); if ( histV1 ) {histV1->Delete();} if ( histV2 ) {histV2->Delete();} if ( hNormTempV1 ) {hNormTempV1->Delete();} if ( hNormTempV2 ) {hNormTempV2->Delete();} // if ( hBinTempV1 ) {hBinTempV1->Delete();} // why cant this work?! // if ( hBinTempV2 ) {hBinTempV2->Delete();} return true; }
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); } }
bool createPlot(TString hname, TString dirname, TFile *V1file, TString relstring1, TFile *V2file, TString relstring2, TCanvas *canvas, int scale) { setTDRStyle(); // don't look at non-zero bin Int_t range_upper = histV1->GetXaxis()->GetLast(); histV1->GetXaxis()->SetRangeUser(1,range_upper); histV2->GetXaxis()->SetRangeUser(1,range_upper); int SetScale = scale; //IF =0 --> No scale applied ('direct' comparison) //IF =1 --> Scale INDIVIDUALLY (scale histograms individually) //IF =2 --> Scale all GLOBALLY (scale all histograms to #tracks=1) //IF =3 --> Scale all GLOBALLY nEVENTS (scale all histos to nEntries in nTracks per Event) bool DrawRatio = true; canvas->cd(); TPad* mainpad = new TPad("mainpad","mainpad",0.0,0.0,1.0,0.8); mainpad->Draw(); mainpad->cd(); // ************ Get name of histos and get histos ************* // TString basename1 = "DQMData/Run "; basename1.Append("1"); TString hnameV1 = basename1; hnameV1.Append(dirname+"/"); hnameV1.Append(hname); if (hname != "vtxNbr"){ hnameV1.Append("_GenTk"); } TH1F * histV1 = (TH1F*)V1file->Get(hnameV1); if ( histV1 == (TH1F*) NULL ) { cout << "histV1 failed on " << hnameV1 << endl << " for file " << V1file->GetName() << endl; exit(1); } TString basename2 = "DQMData/Run "; basename2.Append("1"); TString hnameV2 = basename2; hnameV2.Append(dirname+"/"); hnameV2.Append(hname); if (hname != "vtxNbr"){ hnameV2.Append("_GenTk"); } TH1F * histV2 = (TH1F*)V2file->Get(hnameV2); if ( histV2 == (TH1F*) NULL ) { cout << "histV2 failed on " << hnameV2 << endl << " for file " << V2file->GetName() << endl; exit(1); } //******************* Get histo integrals ***********************// double V1_integral = 1.0; double V2_integral = 1.0; TH1F * hTempV1 = 0; TH1F * hTempV2 = 0; if (SetScale==1){ V1_integral = histV1->Integral(); V2_integral = histV2->Integral(); } else if ( (SetScale==2) || (SetScale==3) ){ if (hname != "NumberOfTracks"){ TString hTempNameV1 = basename1; hTempNameV1.Append("/Tracking/Run summary/TrackParameters/generalTracks/GeneralProperties/NumberOfTracks_GenTk"); hTempV1 = (TH1F*)V1file->Get(hTempNameV1); TString hTempNameV2 = basename2; hTempNameV2.Append("/Tracking/Run summary/TrackParameters/generalTracks/GeneralProperties/NumberOfTracks_GenTk"); hTempV2 = (TH1F*)V2file->Get(hTempNameV2); } else{ hTempV1 = (TH1F*)histV1->Clone("hTempV1"); hTempV2 = (TH1F*)histV2->Clone("hTempV2"); } if (SetScale==2){ V1_integral = hTempV1->GetBinContent(2); V2_integral = hTempV2->GetBinContent(2); std::cout << "The number of single tracks for V1 is " << V1_integral << std::endl; std::cout << "The number of single tracks for V2 is " << V2_integral << std::endl; } else if (SetScale==3){ V1_integral = hTempV1->GetEntries(); V2_integral = hTempV2->GetEntries(); std::cout << "The number of events for V1 is " << V1_integral << std::endl; std::cout << "The number of events for V2 is " << V2_integral << std::endl; } } //*****NORMALIZING V1-V2**************************************** if(V1_integral>V2_integral) { histV1->Scale(V2_integral / V1_integral); histV2->Scale(1); } else if(V2_integral>V1_integral){ histV1->Scale(1); histV2->Scale(V1_integral / V2_integral); } //*****NORMALIZING V1-V2*end*************************************** //***Name the files under comparison*** TString V1_V1run = "Run 1 ("+relstring1+")"; TString V2_V2run = "Run 1 ("+relstring2+")"; histV1->SetName(V1_V1run); histV2->SetName(V2_V2run); TString x_title = ""; if( hname.Contains("vtxNbr")) x_title="Number of Primary Vertices per Event"; histV1->SetLineWidth(5); histV1->SetLineStyle(1); histV1->SetLineColor(kRed); histV1->GetYaxis()->SetLabelSize(0.038); histV2->SetLineWidth(3); histV2->SetLineStyle(1); histV2->SetLineColor(kBlue); if ( hname.Contains("NumberOfTracks",TString::kExact) || hname.Contains("NumberOfGoodTracks",TString::kExact) || hname.Contains("TrackPt",TString::kExact) || hname.Contains("Chi2Prob",TString::kExact) ){ mainpad->SetLogy(1); } else { mainpad->SetLogy(0); } if (hname.Contains("NumberOfGoodTracks",TString::kExact)) { histV1->GetXaxis()->SetRangeUser(0,200); histV2->GetXaxis()->SetRangeUser(0,200); } if (hname.Contains("Chi2oNDF",TString::kExact)) { histV1->GetXaxis()->SetRangeUser(0,10); histV2->GetXaxis()->SetRangeUser(0,10); } if (hname.Contains("vtxNbr")){ histV1->GetXaxis()->SetTitle(x_title); histV1->GetYaxis()->SetTitle("Number of Events"); } if ( hname.Contains("NumberOfTracks",TString::kExact)){ histV1->GetXaxis()->SetRangeUser(125,range_upper); histV2->GetXaxis()->SetRangeUser(125,range_upper); } double max = 0; double V1max = histV1->GetBinContent(histV1->GetMaximumBin()); double V2max = histV2->GetBinContent(histV2->GetMaximumBin()); max = (V1max>V2max) ? V1max : V2max; histV1->SetMaximum(max*(1.1)); histV1->Draw(); histV2->Draw("sames"); mainpad->Update(); TPaveStats *st1 = (TPaveStats*)(histV1->GetListOfFunctions()->FindObject("stats")); st1->SetX1NDC(0.77); st1->SetY1NDC(0.80); st1->SetX2NDC(0.98); st1->SetY2NDC(0.97); Double_t defaulth = st1->GetY2NDC() - st1->GetY1NDC(); Double_t gaph = 0.02; TPaveStats *st2 = (TPaveStats*)(histV2->GetListOfFunctions()->FindObject("stats")); st2->SetX1NDC(0.77); st2->SetY1NDC(st1->GetY1NDC() - 1.0*defaulth - gaph); st2->SetX2NDC(0.98); st2->SetY2NDC(st1->GetY1NDC() - gaph); TLegend *leg = new TLegend(0.32,0.86,0.76,0.97); leg->SetTextSize(0.042); leg->SetTextFont(42); leg->SetFillColor(10); leg->SetBorderSize(1); // no frame, no shadow leg->AddEntry(histV1, V1_V1run, "L" ); leg->AddEntry(histV2, V2_V2run, "L" ); leg->Draw("SAME"); // Draw ratio histogram if (DrawRatio){ canvas->cd(); TPad* respad = new TPad("respad","respad",0.0,0.78,1.0,0.95); respad->SetTopMargin(1.05); respad->Draw(); respad->cd(); TH1F* hratio = (TH1F*) histV2->Clone("hratio"); hratio->Divide(histV1); hratio->SetMaximum(hratio->GetMaximum()*1.01); //if (hratio->GetMinimum()==0.0) hratio->SetMinimum(1.0/hratio->GetMaximum()); hratio->SetMinimum(1.0/hratio->GetMaximum()); hratio->GetYaxis()->SetLabelSize(0.1); hratio->GetYaxis()->SetRangeUser(0,2); hratio->GetXaxis()->SetLabelSize(0); hratio->GetXaxis()->SetTitleSize(0); hratio->GetYaxis()->SetTitleSize(0.22); hratio->GetYaxis()->SetTitleOffset(0.26); hratio->GetYaxis()->SetLabelSize(0.2); hratio->GetYaxis()->SetNdivisions(5); hratio->GetYaxis()->SetTitle("PM/SM"); hratio->Draw(); } // Compare parameters of histograms double Entries1 = histV1->GetEntries(); double Entries2 = histV2->GetEntries(); if (Entries1 != Entries2) { std::cout<<" Difference in # of ENTRIES for " <<hname<< std::endl; std::cout<<"\t Entries1 = " << Entries1 << "\t Entries2 = " << Entries2 << std::endl; } double Mean1 = histV1->GetMean(); double Mean2 = histV2->GetMean(); if (Mean1 != Mean2) { std::cout<<" Difference in MEANS for " <<hname<< std::endl; std::cout<<"\t Mean1 = " << Mean1 << "\t Mean2 = " << Mean2 << std::endl; } double RMS1 = histV1->GetRMS(); double RMS2 = histV2->GetRMS(); if (RMS1 != RMS2) { std::cout<<" Difference in RMS for " <<hname<< std::endl; std::cout<<"\t RMS1 = " << RMS1 << "\t RMS2 = " << RMS2 << std::endl; } TString filename = hname; if (hname.Contains("vtxNbr")){ filename = "NumberOfPrimaryVertices"; } if (dirname.Contains("highPurityTracks/pt_1/GeneralProperties",TString::kExact)) filename.Prepend("RunComparison/GoodTracks_"); else filename.Prepend("RunComparison/"); filename.Append(".png"); canvas->Print(filename); if ( histV1 ) {histV1->Delete();} if ( histV2 ) {histV2->Delete();} if ( hTempV1 ) {hTempV1->Delete();} if ( hTempV2 ) {hTempV2->Delete();} return true; }
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 phi2(double pt1min, double pt2min, double METmin){ TLegend* leg = new TLegend(0.13,0.6,0.87,0.87); leg->SetNColumns(3); leg->SetBorderSize(0); leg->SetFillStyle(0); gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); TFile *data = TFile::Open("./25ns_2246inv_v3/DoubleEG.root","READ"); TFile *sig1 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP600.root","READ"); TFile *sig2 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP800.root","READ"); TFile *sig3 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1000.root","READ"); TFile *sig4 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1200.root","READ"); TFile *sig5 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1400.root","READ"); TFile *sig6 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1700.root","READ"); TFile *sig7 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP2500.root","READ"); TFile *bkg1 = TFile::Open("./25ns_2246inv_v3/DiPhoton.root","READ"); TFile *bkg2 = TFile::Open("./25ns_2246inv_v3/DYJetsToLL.root","READ"); TFile *bkg3 = TFile::Open("./25ns_2246inv_v3/GJets.root","READ"); TFile *bkg4 = TFile::Open("./25ns_2246inv_v3/GluGluHToGG.root","READ"); TFile *bkg5 = TFile::Open("./25ns_2246inv_v3/QCD.root","READ"); TFile *bkg6 = TFile::Open("./25ns_2246inv_v3/VH.root","READ"); TFile *bkg7 = TFile::Open("./25ns_2246inv_v3/ttHJetToGG.root","READ"); TFile *bkg8 = TFile::Open("./25ns_2246inv_v3/VBFHToGG.root","READ"); TFile *bkg9 = TFile::Open("./25ns_2246inv_v3/TGJets.root","READ"); TFile *bkg10 = TFile::Open("./25ns_2246inv_v3/TTGJets.root","READ"); TFile *bkg11 = TFile::Open("./25ns_2246inv_v3/WGToLNuG.root","READ"); TFile *bkg12 = TFile::Open("./25ns_2246inv_v3/ZGTo2LG.root","READ"); TTree *tree_data = (TTree*) data->Get("DiPhotonTree"); TTree *tree_sig1 = (TTree*) sig1->Get("DiPhotonTree"); TTree *tree_sig2 = (TTree*) sig2->Get("DiPhotonTree"); TTree *tree_sig3 = (TTree*) sig3->Get("DiPhotonTree"); TTree *tree_sig4 = (TTree*) sig4->Get("DiPhotonTree"); TTree *tree_sig5 = (TTree*) sig5->Get("DiPhotonTree"); TTree *tree_sig6 = (TTree*) sig6->Get("DiPhotonTree"); TTree *tree_sig7 = (TTree*) sig7->Get("DiPhotonTree"); TTree *tree_bkg1 = (TTree*) bkg1->Get("DiPhotonTree"); TTree *tree_bkg2 = (TTree*) bkg2->Get("DiPhotonTree"); TTree *tree_bkg3 = (TTree*) bkg3->Get("DiPhotonTree"); TTree *tree_bkg4 = (TTree*) bkg4->Get("DiPhotonTree"); TTree *tree_bkg5 = (TTree*) bkg5->Get("DiPhotonTree"); TTree *tree_bkg6 = (TTree*) bkg6->Get("DiPhotonTree"); TTree *tree_bkg7 = (TTree*) bkg7->Get("DiPhotonTree"); TTree *tree_bkg8 = (TTree*) bkg8->Get("DiPhotonTree"); TTree *tree_bkg9 = (TTree*) bkg9->Get("DiPhotonTree"); TTree *tree_bkg10 = (TTree*) bkg10->Get("DiPhotonTree"); TTree *tree_bkg11 = (TTree*) bkg11->Get("DiPhotonTree"); TTree *tree_bkg12 = (TTree*) bkg12->Get("DiPhotonTree"); TCanvas *c1 = new TCanvas("c1","",500,600); TPad *mainPad = new TPad("mainPad","",0,0.3,1,1); TPad *smallPad = new TPad("smallPad","",0,0.05,1,0.3); mainPad->SetBottomMargin(0.015); smallPad->SetTopMargin(0.05); smallPad->SetBottomMargin(0.25); c1->cd(); mainPad->Draw(); mainPad->cd(); gPad->SetLogy(); TCut mggmax = "mgg<180"; TCut mggmin = "mgg>100"; TCut pt1Cut = Form("pt1/mgg>%lf",pt1min); TCut pt2Cut = Form("pt2/mgg>%lf",pt2min); TCut METCut = Form("t1pfmet>%lf",METmin); TCut eveto1 = "eleveto1 == 1"; TCut eveto2 = "eleveto2 == 1"; TCut eveto = eveto1 && eveto2; TCut genmatch = "((genmatch1==1 && genmatch2==0)||(genmatch1==0 && genmatch2==1)||(genmatch1==0 && genmatch2==0))"; TCut metF = "((metF_GV==1) && (metF_HBHENoise==1) && (metF_HBHENoiseIso==1) && (metF_CSC==1) && (metF_eeBadSC==1))"; tree_data->Draw("(phi2)>>hdata(20,-4,4)",(mggmax && mggmin && metF&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hdata =(TH1F*)gPad->GetPrimitive("hdata"); tree_sig1->Draw("(phi2)>>h1(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h1 =(TH1F*)gPad->GetPrimitive("h1"); tree_sig2->Draw("(phi2)>>h2(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h2 =(TH1F*)gPad->GetPrimitive("h2"); tree_sig3->Draw("(phi2)>>h3(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h3 =(TH1F*)gPad->GetPrimitive("h3"); tree_sig4->Draw("(phi2)>>h4(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h4 =(TH1F*)gPad->GetPrimitive("h4"); tree_sig5->Draw("(phi2)>>h5(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h5 =(TH1F*)gPad->GetPrimitive("h5"); tree_sig6->Draw("(phi2)>>h6(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h6 =(TH1F*)gPad->GetPrimitive("h6"); tree_sig7->Draw("(phi2)>>h7(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *h7 =(TH1F*)gPad->GetPrimitive("h7"); tree_bkg1->Draw("(phi2)>>hbkg1(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg1 =(TH1F*)gPad->GetPrimitive("hbkg1"); tree_bkg2->Draw("(phi2)>>hbkg2(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg2 =(TH1F*)gPad->GetPrimitive("hbkg2"); tree_bkg3->Draw("(phi2)>>hbkg3(20,-4,4)","weight"*(mggmin && mggmax && genmatch&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg3 =(TH1F*)gPad->GetPrimitive("hbkg3"); tree_bkg4->Draw("(phi2)>>hbkg4(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); //weight also on BR = 0.002 if using the 50ns samples TH1F *hbkg4 =(TH1F*)gPad->GetPrimitive("hbkg4"); tree_bkg5->Draw("(phi2)>>hbkg5(20,-4,4)","weight"*(mggmin && mggmax && genmatch&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg5 =(TH1F*)gPad->GetPrimitive("hbkg5"); tree_bkg6->Draw("(phi2)>>hbkg6(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg6 =(TH1F*)gPad->GetPrimitive("hbkg6"); tree_bkg7->Draw("(phi2)>>hbkg7(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg7 =(TH1F*)gPad->GetPrimitive("hbkg7"); tree_bkg8->Draw("(phi2)>>hbkg8(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg8 =(TH1F*)gPad->GetPrimitive("hbkg8"); tree_bkg9->Draw("(phi2)>>hbkg9(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg9 =(TH1F*)gPad->GetPrimitive("hbkg9"); tree_bkg10->Draw("(phi2)>>hbkg10(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg10 =(TH1F*)gPad->GetPrimitive("hbkg10"); tree_bkg11->Draw("(phi2)>>hbkg11(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg11 =(TH1F*)gPad->GetPrimitive("hbkg11"); tree_bkg12->Draw("(phi2)>>hbkg12(20,-4,4)","weight"*(mggmin && mggmax&& METCut &&pt1Cut && pt2Cut&& eveto)); TH1F *hbkg12 =(TH1F*)gPad->GetPrimitive("hbkg12"); hdata->SetMarkerColor(kBlack); hdata->SetMarkerStyle(20); hdata->SetLineColor(kBlack); h1->SetLineColor(kRed+3); h2->SetLineColor(kRed+1); h3->SetLineColor(kRed); h4->SetLineColor(kPink+2); h5->SetLineColor(kPink+4); h6->SetLineColor(kPink+7); h7->SetLineColor(kMagenta+2); h1->SetLineWidth(2); h2->SetLineWidth(2); h3->SetLineWidth(2); h4->SetLineWidth(2); h5->SetLineWidth(2); h6->SetLineWidth(2); h7->SetLineWidth(2); THStack *hs= new THStack("hs",""); hbkg7->SetFillColor(kGreen+2); hbkg6->SetFillColor(kGreen); hbkg8->SetFillColor(kYellow); hbkg4->SetFillColor(kOrange); hbkg9->SetFillColor(kOrange+7); hbkg10->SetFillColor(kOrange+4); hbkg11->SetFillColor(kCyan); hbkg12->SetFillColor(kCyan+1); hbkg5->SetFillColor(kBlue+2); hbkg2->SetFillColor(kBlue); hbkg3->SetFillColor(kMagenta-2); hbkg1->SetFillColor(kViolet); hbkg1->SetLineColor(kBlack); hbkg2->SetLineColor(kBlack); hbkg3->SetLineColor(kBlack); hbkg4->SetLineColor(kBlack); hbkg5->SetLineColor(kBlack); hbkg6->SetLineColor(kBlack); hbkg7->SetLineColor(kBlack); hbkg8->SetLineColor(kBlack); hbkg9->SetLineColor(kBlack); hbkg10->SetLineColor(kBlack); hbkg11->SetLineColor(kBlack); hbkg12->SetLineColor(kBlack); hs->Add(hbkg7); hs->Add(hbkg6); hs->Add(hbkg8); hs->Add(hbkg4); hs->Add(hbkg9); hs->Add(hbkg10); hs->Add(hbkg11); hs->Add(hbkg12); hs->Add(hbkg2); hs->Add(hbkg5); hs->Add(hbkg3); hs->Add(hbkg1); TH1F *hsum = (TH1F*)hbkg1->Clone("hsum"); hsum->Add(hbkg2); hsum->Add(hbkg3); hsum->Add(hbkg4); hsum->Add(hbkg5); hsum->Add(hbkg6); hsum->Add(hbkg7); hsum->Add(hbkg8); hsum->Add(hbkg9); hsum->Add(hbkg10); hsum->Add(hbkg11); hsum->Add(hbkg12); hs->SetMaximum(1000000); hs->SetMinimum(0.1); hs->SetTitle(""); hs->Draw("HIST"); hsum->SetMarkerStyle(1); hsum->SetFillColor(kGray+3); hsum->SetFillStyle(3002); hsum->Draw("same e2"); h2->Draw("same hist"); h3->Draw("same hist"); h4->Draw("same hist"); h1->Draw("same hist"); h5->Draw("same hist"); h6->Draw("same hist"); h7->Draw("same hist"); hdata->Draw("same E1"); hs->GetXaxis()->SetLabelOffset(999); hs->GetYaxis()->SetTitle("Events/0.4"); hs->GetYaxis()->SetTitleOffset(1.2); gPad->Modified(); leg->AddEntry(hdata,"Data","lep"); leg->AddEntry(hbkg1,"#gamma #gamma","f"); leg->AddEntry(h1,"m_{Z'} = 600 GeV","l"); leg->AddEntry(hbkg2,"Drell Yann","f"); leg->AddEntry(hbkg3,"#gamma + Jets","f"); leg->AddEntry(h2,"m_{Z'} = 800 GeV","l"); leg->AddEntry(hbkg5,"QCD","f"); leg->AddEntry(hbkg4,"ggH","f"); leg->AddEntry(h3,"m_{Z'} = 1000 GeV","l"); leg->AddEntry(hbkg6,"VH","f"); leg->AddEntry(hbkg7,"ttH","f"); leg->AddEntry(h4,"m_{Z'} = 1200 GeV","l"); leg->AddEntry(hbkg8,"VBF H","f"); leg->AddEntry(hbkg9,"t + #gamma + Jets","f"); leg->AddEntry(h5,"m_{Z'} = 1400 GeV","l"); leg->AddEntry(hbkg10,"tt + #gamma +Jets","f"); leg->AddEntry(hbkg11,"#gamma+W","f"); leg->AddEntry(h6,"m_{Z'} = 1700 GeV","l"); leg->AddEntry(hbkg12,"#gamma+Z","f"); leg->AddEntry(hsum,"Bkg uncertainty","f"); leg->AddEntry(h7,"m_{Z'} = 2500 GeV","l"); leg->Draw("same"); c1->cd(); smallPad->Draw(); smallPad->cd(); TGraphErrors *gr = new TGraphErrors(0); double integralData=hdata->Integral(); double integralBKG=hsum->Integral(); double error, ratio; for(int w=1; w<20; w++){ if((hdata->GetBinContent(w)!=0) && (hsum->GetBinContent(w)!=0)){ gr->SetPoint(w, hdata->GetBinCenter(w),(hdata->GetBinContent(w))/(hsum->GetBinContent(w))); ratio= (hdata->GetBinContent(w))/(hsum->GetBinContent(w)); error= (hdata->GetBinContent(w)*sqrt(hsum->GetBinContent(w))/(hsum->GetBinContent(w)*hsum->GetBinContent(w)) + sqrt(hdata->GetBinContent(w))/hsum->GetBinContent(w)); std::cout<<"VALUE: "<<ratio<<" ERROR: "<<error<<std::endl; gr->SetPointError(w, hdata->GetBinWidth(w)/2,error); }else{ gr->SetPoint(w, hdata->GetBinCenter(w),10); } } gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); gr->GetHistogram()->SetMaximum(2); gr->GetHistogram()->SetMinimum(0.1); gStyle->SetTextSize(14); gROOT->ForceStyle(); gr->GetXaxis()->SetLabelFont(43); gr->GetXaxis()->SetLabelSize(15); gr->GetYaxis()->SetLabelFont(43); gr->GetYaxis()->SetLabelSize(15); gr->GetXaxis()->SetLimits(-4,4); gPad->SetGrid(); gStyle->SetStripDecimals(kTRUE); gr->SetMarkerStyle(20); gr->SetMarkerSize(0.7); gr->Draw("AZP"); gr->GetXaxis()->SetTitle("#phi_{2}"); gr->GetXaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetNdivisions(505); gr->GetXaxis()->SetTitleOffset(1); gr->GetYaxis()->SetTitle("Data/MC"); gr->GetYaxis()->SetTitleOffset(0.4); gr->SetTitle(""); smallPad->Update(); TF1* line = new TF1("line","1",-4,4); line->SetLineColor(kRed); line->SetLineWidth(2); line->Draw("L same"); gr->Draw("ZP SAME"); if(pt1min==0 && pt2min == 0 && METmin == 0){ c1->SaveAs("./25ns_2246inv_v3/plots/kinematics/phi2.png"); c1->SaveAs("./25ns_2246inv_v3/plots/kinematics/phi2.pdf"); } if(pt1min==0.65 && pt2min == 0.25){ c1->SaveAs(Form("./25ns_2246inv_v3/plots/kinematics/phi2_optcuts_MET%.0lf.png",METmin)); c1->SaveAs(Form("./25ns_2246inv_v3/plots/kinematics/phi2_optcuts_MET%.0lf.pdf",METmin)); } }
void DeltaPhi(double pt1_cutIN,double pt2_cutIN,double MET_cutIN, double DPHI_cutIN){ cout<<"#### DeltaPhi(MET,H) #####"<<endl; gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); TLegend* leg = new TLegend(0.13,0.6,0.67,0.87); leg->SetNColumns(2); leg->SetBorderSize(0); leg->SetFillStyle(0); TLegend* leg_norm = new TLegend(0.20,0.5,0.74,0.87); leg_norm->SetNColumns(2); leg_norm->SetBorderSize(0); leg_norm->SetFillStyle(0); TCanvas *c1 = new TCanvas("c1","",500,600); TPad *mainPad = new TPad("mainPad","",0,0.3,1,1); TPad *smallPad = new TPad("smallPad","",0,0.05,1,0.3); mainPad->SetBottomMargin(0.015); smallPad->SetTopMargin(0.05); smallPad->SetBottomMargin(0.25); c1->cd(); mainPad->Draw(); mainPad->cd(); TCut mggmax = "mgg<180"; TCut mggmin = "mgg>100"; TCut mggblind = "((mgg<115)||(mgg>135))"; TCut eveto1 = "eleveto1 == 1"; TCut eveto2 = "eleveto2 == 1"; TCut eveto = eveto1 && eveto2; TCut genmatch = "((genmatch1==1 && genmatch2==0)||(genmatch1==0 && genmatch2==1)||(genmatch1==0 && genmatch2==0))"; TCut metF = "((metF_GV==1) && (metF_HBHENoise==1) && (metF_HBHENoiseIso==1) && (metF_CSC==1) && (metF_eeBadSC==1))"; TCut pt1cut = Form("pt1/mgg>%lf",pt1_cutIN); TCut pt2cut = Form("pt2/mgg>%lf",pt2_cutIN); TCut METcutD = Form("t1pfmetCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,1)>%lf",MET_cutIN); TCut METcut = Form("t1pfmetCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0)>%lf",MET_cutIN); TCut DPHIcut = Form("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>%lf",DPHI_cutIN); TCut DPHIcutD = Form("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,1))>%lf",DPHI_cutIN); TFile *data = TFile::Open("./25ns_2246inv_v3/DoubleEG.root","READ"); TFile *sig1 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP600.root","READ"); TFile *sig2 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP800.root","READ"); TFile *sig3 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1000.root","READ"); TFile *sig4 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1200.root","READ"); TFile *sig5 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1400.root","READ"); TFile *sig6 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1700.root","READ"); TFile *sig7 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP2500.root","READ"); TFile *bkg1 = TFile::Open("./25ns_2246inv_v3/DiPhoton.root","READ"); TFile *bkg2 = TFile::Open("./25ns_2246inv_v3/DYJetsToLL.root","READ"); TFile *bkg3 = TFile::Open("./25ns_2246inv_v3/GJets.root","READ"); TFile *bkg4 = TFile::Open("./25ns_2246inv_v3/GluGluHToGG.root","READ"); TFile *bkg5 = TFile::Open("./25ns_2246inv_v3/QCD.root","READ"); TFile *bkg6 = TFile::Open("./25ns_2246inv_v3/VH.root","READ"); TFile *bkg7 = TFile::Open("./25ns_2246inv_v3/ttHJetToGG.root","READ"); TFile *bkg8 = TFile::Open("./25ns_2246inv_v3/VBFHToGG.root","READ"); TFile *bkg9 = TFile::Open("./25ns_2246inv_v3/TGJets.root","READ"); TFile *bkg10 = TFile::Open("./25ns_2246inv_v3/TTGJets.root","READ"); TFile *bkg11 = TFile::Open("./25ns_2246inv_v3/WGToLNuG.root","READ"); TFile *bkg12 = TFile::Open("./25ns_2246inv_v3/ZGTo2LG.root","READ"); cout<<"check1"<<endl; TTree *tree_data = (TTree*) data->Get("DiPhotonTree"); TTree *tree_sig1 = (TTree*) sig1->Get("DiPhotonTree"); TTree *tree_sig2 = (TTree*) sig2->Get("DiPhotonTree"); TTree *tree_sig3 = (TTree*) sig3->Get("DiPhotonTree"); TTree *tree_sig4 = (TTree*) sig4->Get("DiPhotonTree"); TTree *tree_sig5 = (TTree*) sig5->Get("DiPhotonTree"); TTree *tree_sig6 = (TTree*) sig6->Get("DiPhotonTree"); TTree *tree_sig7 = (TTree*) sig7->Get("DiPhotonTree"); TTree *tree_bkg1 = (TTree*) bkg1->Get("DiPhotonTree"); TTree *tree_bkg2 = (TTree*) bkg2->Get("DiPhotonTree"); TTree *tree_bkg3 = (TTree*) bkg3->Get("DiPhotonTree"); TTree *tree_bkg4 = (TTree*) bkg4->Get("DiPhotonTree"); TTree *tree_bkg5 = (TTree*) bkg5->Get("DiPhotonTree"); TTree *tree_bkg6 = (TTree*) bkg6->Get("DiPhotonTree"); TTree *tree_bkg7 = (TTree*) bkg7->Get("DiPhotonTree"); TTree *tree_bkg8 = (TTree*) bkg8->Get("DiPhotonTree"); TTree *tree_bkg9 = (TTree*) bkg9->Get("DiPhotonTree"); TTree *tree_bkg10= (TTree*) bkg10->Get("DiPhotonTree"); TTree *tree_bkg11 = (TTree*) bkg11->Get("DiPhotonTree"); TTree *tree_bkg12 = (TTree*) bkg12->Get("DiPhotonTree"); cout<<"check2"<<endl; tree_data->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,1))>>hdata(15,0,3.5)",(mggmax && mggmin && metF && eveto && pt1cut && pt2cut && METcutD&& DPHIcutD)); TH1F *hdata =(TH1F*)gPad->GetPrimitive("hdata"); hdata->SetMarkerColor(kBlack); hdata->SetMarkerStyle(20); hdata->SetLineColor(kBlack); tree_sig1->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h1(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h1 =(TH1F*)gPad->GetPrimitive("h1"); tree_sig2->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h2(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h2 =(TH1F*)gPad->GetPrimitive("h2"); tree_sig3->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h3(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h3 =(TH1F*)gPad->GetPrimitive("h3"); tree_sig4->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h4(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h4 =(TH1F*)gPad->GetPrimitive("h4"); tree_sig5->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h5(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h5 =(TH1F*)gPad->GetPrimitive("h5"); tree_sig6->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h6(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h6 =(TH1F*)gPad->GetPrimitive("h6"); tree_sig7->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h7(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h7 =(TH1F*)gPad->GetPrimitive("h7"); tree_bkg1->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg1(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg1 =(TH1F*)gPad->GetPrimitive("hbkg1"); tree_bkg2->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg2(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg2 =(TH1F*)gPad->GetPrimitive("hbkg2"); tree_bkg3->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg3(15,0,3.5)","weight"*(mggmax && mggmin && eveto && genmatch && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg3 =(TH1F*)gPad->GetPrimitive("hbkg3"); tree_bkg4->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg4(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg4 =(TH1F*)gPad->GetPrimitive("hbkg4"); tree_bkg5->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg5(15,0,3.5)","weight"*(mggmax && mggmin && eveto && genmatch && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg5 =(TH1F*)gPad->GetPrimitive("hbkg5"); tree_bkg6->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg6(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg6 =(TH1F*)gPad->GetPrimitive("hbkg6"); tree_bkg7->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg7(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg7 =(TH1F*)gPad->GetPrimitive("hbkg7"); tree_bkg8->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg8(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg8 =(TH1F*)gPad->GetPrimitive("hbkg8"); tree_bkg9->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg9(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg9 =(TH1F*)gPad->GetPrimitive("hbkg9"); tree_bkg10->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg10(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg10 =(TH1F*)gPad->GetPrimitive("hbkg10"); tree_bkg11->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg11(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg11 =(TH1F*)gPad->GetPrimitive("hbkg11"); tree_bkg12->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg12(15,0,3.5)","weight*(weight>0.)"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg12 =(TH1F*)gPad->GetPrimitive("hbkg12"); cout<<"check3"<<endl; /* h1->Scale(0.00009338); h2->Scale(0.00010348); h3->Scale(0.00008394); h4->Scale(0.00006352); h5->Scale(0.00004712); h6->Scale(0.00003020); h7->Scale(0.00000972); */ h1->SetLineColor(kRed+3); h2->SetLineColor(kRed+1); h3->SetLineColor(kRed); h4->SetLineColor(kPink+2); h5->SetLineColor(kPink+4); //only for 15ns samples h6->SetLineColor(kPink+7); //only for 15ns samples h7->SetLineColor(kMagenta+2); //only for 15ns samples h1->SetLineWidth(2); h2->SetLineWidth(2); h3->SetLineWidth(2); h4->SetLineWidth(2); h5->SetLineWidth(2); //only for 15ns samples h6->SetLineWidth(2); //only for 15ns samples h7->SetLineWidth(2); //only for 15ns samples THStack *hs=new THStack("hs",""); hbkg7->SetFillColor(kGreen+2); hbkg6->SetFillColor(kGreen); hbkg8->SetFillColor(kYellow); hbkg4->SetFillColor(kOrange); hbkg9->SetFillColor(kOrange+7); hbkg10->SetFillColor(kOrange+4); hbkg11->SetFillColor(kCyan); hbkg12->SetFillColor(kCyan+1); hbkg5->SetFillColor(kBlue+2); hbkg2->SetFillColor(kBlue); hbkg3->SetFillColor(kMagenta-2); hbkg1->SetFillColor(kViolet); hbkg1->SetLineColor(kBlack); hbkg2->SetLineColor(kBlack); hbkg3->SetLineColor(kBlack); hbkg4->SetLineColor(kBlack); hbkg5->SetLineColor(kBlack); hbkg6->SetLineColor(kBlack); hbkg7->SetLineColor(kBlack); hbkg8->SetLineColor(kBlack); hbkg9->SetLineColor(kBlack); hbkg10->SetLineColor(kBlack); hbkg11->SetLineColor(kBlack); hbkg12->SetLineColor(kBlack); hs->Add(hbkg7); hs->Add(hbkg6); hs->Add(hbkg8); hs->Add(hbkg4); hs->Add(hbkg9); hs->Add(hbkg10); hs->Add(hbkg11); hs->Add(hbkg12); hs->Add(hbkg2); hs->Add(hbkg5); hs->Add(hbkg3); hs->Add(hbkg1); cout<<"check4"<<endl; TH1F *hsum = (TH1F*)hbkg1->Clone("hsum"); hsum->Add(hbkg2); hsum->Add(hbkg3); hsum->Add(hbkg4); hsum->Add(hbkg9); hsum->Add(hbkg10); hsum->Add(hbkg11); hsum->Add(hbkg12); hsum->Add(hbkg5); hsum->Add(hbkg6); hsum->Add(hbkg7); hsum->Add(hbkg8); hdata->SetMaximum(5000); // hs->SetMinimum(0.0001); hdata->SetTitle(""); hdata->Draw("e1"); hsum->SetMarkerStyle(1); hsum->SetFillColor(kGray+3); hsum->SetFillStyle(3002); hs->Draw("same hist"); hsum->Draw("same e2"); h2->Draw("same hist"); h3->Draw("same hist"); h4->Draw("same hist"); h1->Draw("same hist"); h5->Draw("same hist"); //only for 15ns samples h6->Draw("same hist"); //only for 15ns samples h7->Draw("same hist"); //only for 15ns samples hdata->Draw("same e1"); hdata->GetXaxis()->SetLabelOffset(999); hdata->GetYaxis()->SetTitle("Events/0.4"); hdata->GetYaxis()->SetTitleOffset(1.6); hdata->GetYaxis()->SetTitle("Events/0.23 GeV"); gPad->Modified(); /*leg->AddEntry(h1,"m_{#chi} = 1 GeV","l"); leg->AddEntry(h2,"m_{#chi} = 10 GeV","l"); leg->AddEntry(h3,"m_{#chi} = 100 GeV","l"); leg->AddEntry(h4,"m_{#chi} = 1000 GeV","l");*/ leg->AddEntry(hdata,"Data","elp"); // leg->AddEntry(h1,"m_{Z'} = 600 GeV","l"); leg->AddEntry(hbkg1,"#gamma #gamma","f"); // leg->AddEntry(h2,"m_{Z'} = 800 GeV","l"); leg->AddEntry(hbkg2,"Drell Yann","f"); // leg->AddEntry(h3,"m_{Z'} = 1000 GeV","l"); leg->AddEntry(hbkg3,"#gamma + Jets","f"); // leg->AddEntry(h4,"m_{Z'} = 1200 GeV","l"); leg->AddEntry(hbkg5,"QCD","f"); // leg->AddEntry(h5,"m_{Z'} = 1400 GeV","l"); //only for 15ns samples leg->AddEntry(hbkg4,"ggH","f"); // leg->AddEntry(h6,"m_{Z'} = 1700 GeV","l"); //only for 15ns samples leg->AddEntry(hbkg6,"VH","f"); // leg->AddEntry(h7,"m_{Z'} = 2500 GeV","l"); //only for 25ns samples leg->AddEntry(hbkg7,"ttH","f"); leg->AddEntry(hbkg8,"VBF H","f"); leg->AddEntry(hbkg9,"t + #gamma + Jets","f"); leg->AddEntry(hbkg10,"tt + #gamma +Jets","f"); leg->AddEntry(hbkg11,"#gamma+W","f"); leg->AddEntry(hbkg12,"#gamma+Z","f"); leg->AddEntry(hsum,"Bkg uncertainty","f"); leg->Draw("same"); cout<<"check5"<<endl; gStyle->SetOptStat(0); c1->cd(); smallPad->Draw(); smallPad->cd(); TGraphErrors *gr = new TGraphErrors(0); double integralData=hdata->Integral(); double integralBKG=hsum->Integral(); double error, ratio; for(int w=1; w<15; w++){ if((hdata->GetBinContent(w)!=0) && (hsum->GetBinContent(w)!=0)){ gr->SetPoint(w, hdata->GetBinCenter(w),(hdata->GetBinContent(w))/(hsum->GetBinContent(w))); ratio= (hdata->GetBinContent(w))/(hsum->GetBinContent(w)); error= (hdata->GetBinContent(w)*sqrt(hsum->GetBinContent(w))/(hsum->GetBinContent(w)*hsum->GetBinContent(w)) + sqrt(hdata->GetBinContent(w))/hsum->GetBinContent(w)); std::cout<<"VALUE: "<<ratio<<" ERROR: "<<error<<std::endl; gr->SetPointError(w, hdata->GetBinWidth(w)/2,error); }else{ gr->SetPoint(w, hdata->GetBinCenter(w),10); } } gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); gr->GetHistogram()->SetMaximum(2); gr->GetHistogram()->SetMinimum(0.1); gStyle->SetTextSize(14); gROOT->ForceStyle(); gr->GetXaxis()->SetLabelFont(43); gr->GetXaxis()->SetLabelSize(15); gr->GetYaxis()->SetLabelFont(43); gr->GetYaxis()->SetLabelSize(15); gr->GetXaxis()->SetLimits(0,3.5); gPad->SetGrid(); gStyle->SetStripDecimals(kTRUE); gr->SetMarkerStyle(20); gr->SetMarkerSize(0.7); gr->Draw("AZP"); gr->GetXaxis()->SetTitle("|#Delta#phi(#gamma#gamma,E^{miss}_{T})|"); gr->GetXaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetNdivisions(505); gr->GetXaxis()->SetTitleOffset(1); gr->GetYaxis()->SetTitle("Data/MC"); gr->GetYaxis()->SetTitleOffset(0.4); gr->SetTitle(""); smallPad->Update(); TF1* line = new TF1("line","1",0,3.5); line->SetLineColor(kRed); line->SetLineWidth(2); line->Draw("L same"); gr->Draw("ZP SAME"); TCanvas *c2 = new TCanvas("c2","",500,500); tree_sig1->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h1_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h1_norm =(TH1F*)gPad->GetPrimitive("h1_norm"); tree_sig2->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h2_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h2_norm =(TH1F*)gPad->GetPrimitive("h2_norm"); tree_sig3->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h3_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h3_norm =(TH1F*)gPad->GetPrimitive("h3_norm"); tree_sig4->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h4_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h4_norm =(TH1F*)gPad->GetPrimitive("h4_norm"); tree_sig5->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h5_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h5_norm =(TH1F*)gPad->GetPrimitive("h5_norm"); tree_sig6->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h6_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h6_norm =(TH1F*)gPad->GetPrimitive("h6_norm"); tree_sig7->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h7_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *h7_norm =(TH1F*)gPad->GetPrimitive("h7_norm"); tree_bkg1->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg1_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg1_norm =(TH1F*)gPad->GetPrimitive("hbkg1_norm"); tree_bkg2->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg2_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg2_norm =(TH1F*)gPad->GetPrimitive("hbkg2_norm"); tree_bkg3->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg3_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && genmatch && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg3_norm =(TH1F*)gPad->GetPrimitive("hbkg3_norm"); tree_bkg4->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg4_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg4_norm =(TH1F*)gPad->GetPrimitive("hbkg4_norm"); tree_bkg5->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg5_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && genmatch && pt1cut && pt2cut && METcut&& DPHIcut)); TH1F *hbkg5_norm =(TH1F*)gPad->GetPrimitive("hbkg5_norm"); tree_bkg6->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg6_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg6_norm =(TH1F*)gPad->GetPrimitive("hbkg6_norm"); tree_bkg7->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg7_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg7_norm =(TH1F*)gPad->GetPrimitive("hbkg7_norm"); tree_bkg8->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg8_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg8_norm =(TH1F*)gPad->GetPrimitive("hbkg8_norm"); tree_bkg9->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg9_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg9_norm =(TH1F*)gPad->GetPrimitive("hbkg9_norm"); tree_bkg10->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg10_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg10_norm =(TH1F*)gPad->GetPrimitive("hbkg10_norm"); tree_bkg11->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg11_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg11_norm =(TH1F*)gPad->GetPrimitive("hbkg11_norm"); tree_bkg12->Draw("FDelta(pt1,eta1,phi1,0.,pt2,eta2,phi2,0.,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg12_norm(15,0,3.5)","weight"*(mggmax && mggmin && eveto && pt1cut && pt2cut && METcut&& DPHIcut)); //weight also on BR = 0.002 if using 50ns samples TH1F *hbkg12_norm =(TH1F*)gPad->GetPrimitive("hbkg12_norm"); for(int i = 0; i<26;i++){ if(hbkg1_norm->GetBinContent(i) < 0.) hbkg1_norm->SetBinContent(i,0.); if(hbkg2_norm->GetBinContent(i) < 0.) hbkg2_norm->SetBinContent(i,0.); if(hbkg3_norm->GetBinContent(i) < 0.) hbkg3_norm->SetBinContent(i,0.); if(hbkg4_norm->GetBinContent(i) < 0.) hbkg4_norm->SetBinContent(i,0.); if(hbkg5_norm->GetBinContent(i) < 0.) hbkg5_norm->SetBinContent(i,0.); if(hbkg6_norm->GetBinContent(i) < 0.) hbkg6_norm->SetBinContent(i,0.); if(hbkg7_norm->GetBinContent(i) < 0.) hbkg7_norm->SetBinContent(i,0.); if(hbkg8_norm->GetBinContent(i) < 0.) hbkg8_norm->SetBinContent(i,0.); if(hbkg9_norm->GetBinContent(i) < 0.) hbkg9_norm->SetBinContent(i,0.); if(hbkg10_norm->GetBinContent(i) < 0.) hbkg10_norm->SetBinContent(i,0.); if(hbkg11_norm->GetBinContent(i) < 0.) hbkg11_norm->SetBinContent(i,0.); if(hbkg12_norm->GetBinContent(i) < 0.) hbkg12_norm->SetBinContent(i,0.); } double norm = 1./h1_norm->Integral(); h1_norm->Scale(norm); norm = 1./h2_norm->Integral(); h2_norm->Scale(norm); norm = 1./h3_norm->Integral(); h3_norm->Scale(norm); norm = 1./h4_norm->Integral(); h4_norm->Scale(norm); norm = 1./h5_norm->Integral(); //only for 50ns samples h5_norm->Scale(norm); //only for 50ns samples norm = 1./h6_norm->Integral(); //only for 50ns samples h6_norm->Scale(norm); //only for 50ns samples norm = 1./h7_norm->Integral(); //only for 50ns samples h7_norm->Scale(norm); //only for 50ns samples norm = 1./hbkg1_norm->Integral(); hbkg1_norm->Scale(norm); norm = 1./hbkg2_norm->Integral(); hbkg2_norm->Scale(norm); norm = 1./hbkg3_norm->Integral(); hbkg3_norm->Scale(norm); norm = 1./hbkg4_norm->Integral(); hbkg4_norm->Scale(norm); norm = 1./hbkg5_norm->Integral(); hbkg5_norm->Scale(norm); norm = 1./hbkg6_norm->Integral(); hbkg6_norm->Scale(norm); norm = 1./hbkg7_norm->Integral(); hbkg7_norm->Scale(norm); norm = 1./hbkg8_norm->Integral(); hbkg8_norm->Scale(norm); norm = 1./hbkg9_norm->Integral(); hbkg9_norm->Scale(norm); norm = 1./hbkg10_norm->Integral(); hbkg10_norm->Scale(norm); norm = 1./hbkg11_norm->Integral(); hbkg11_norm->Scale(norm); norm = 1./hbkg12_norm->Integral(); hbkg12_norm->Scale(norm); h1_norm->SetLineColor(kRed+3); h2_norm->SetLineColor(kRed+1); h3_norm->SetLineColor(kRed); h4_norm->SetLineColor(kPink+2); h5_norm->SetLineColor(kPink+4); //only for 25ns samples h6_norm->SetLineColor(kPink+7); //only for 25ns samples h7_norm->SetLineColor(kMagenta+2); //only for 25ns samples h1_norm->SetLineWidth(2); h2_norm->SetLineWidth(2); h3_norm->SetLineWidth(2); h4_norm->SetLineWidth(2); h5_norm->SetLineWidth(2); //only for 25ns samples h6_norm->SetLineWidth(2); //only for 25ns samples h7_norm->SetLineWidth(2); //only for 25ns samples hbkg7_norm->SetLineColor(kGreen+2); hbkg6_norm->SetLineColor(kGreen); hbkg8_norm->SetLineColor(kYellow); hbkg4_norm->SetLineColor(kOrange); hbkg9_norm->SetLineColor(kOrange+7); hbkg10_norm->SetLineColor(kOrange+4); hbkg11_norm->SetLineColor(kCyan); hbkg12_norm->SetLineColor(kCyan+1); hbkg5_norm->SetLineColor(kBlue+3); hbkg2_norm->SetLineColor(kBlue); hbkg3_norm->SetLineColor(kMagenta-2); hbkg1_norm->SetLineColor(kViolet); hbkg1_norm->SetFillStyle(0); hbkg2_norm->SetFillStyle(0); hbkg3_norm->SetFillStyle(0); hbkg4_norm->SetFillStyle(0); hbkg5_norm->SetFillStyle(0); hbkg6_norm->SetFillStyle(0); hbkg7_norm->SetFillStyle(0); hbkg8_norm->SetFillStyle(0); hbkg9_norm->SetFillStyle(0); hbkg10_norm->SetFillStyle(0); hbkg11_norm->SetFillStyle(0); hbkg12_norm->SetFillStyle(0); h1_norm->SetTitle(""); h1_norm->SetMaximum(1); h1_norm->SetMinimum(0.001); h1_norm->Draw("HIST"); hbkg1_norm->Draw("same HIST"); hbkg2_norm->Draw("same HIST"); hbkg3_norm->Draw("same HIST"); hbkg5_norm->Draw("same HIST"); hbkg4_norm->Draw("same HIST"); hbkg6_norm->Draw("same HIST"); hbkg7_norm->Draw("same HIST"); hbkg8_norm->Draw("same HIST"); hbkg9_norm->Draw("same HIST"); hbkg10_norm->Draw("same HIST"); hbkg11_norm->Draw("same HIST"); hbkg12_norm->Draw("same HIST"); h1_norm->Draw("same hist"); h2_norm->Draw("same hist"); h3_norm->Draw("same hist"); h4_norm->Draw("same hist"); h5_norm->Draw("same hist"); h6_norm->Draw("same hist"); h7_norm->Draw("same hist"); h1_norm->GetXaxis()->SetTitle("|#Delta#phi(#gamma#gamma,E_{T}^{miss})|"); h1_norm->GetYaxis()->SetTitle("Normalized events"); h1_norm->GetYaxis()->SetTitleOffset(1.2); gPad->Modified(); gStyle->SetOptStat(0); //int iPos =0; // CMS_lumi(p1,true,iPos,true); // CMS_lumi(p2,true,iPos,true); leg_norm->AddEntry(h1_norm,"m_{Z'} = 600 GeV","l"); leg_norm->AddEntry(hbkg1_norm,"#gamma #gamma","l"); leg_norm->AddEntry(h2_norm,"m_{Z'} = 800 GeV","l"); leg_norm->AddEntry(hbkg2_norm,"Drell Yann","l"); leg_norm->AddEntry(h3_norm,"m_{Z'} = 1000 GeV","l"); leg_norm->AddEntry(hbkg3_norm,"#gamma + Jets","l"); leg_norm->AddEntry(h4_norm,"m_{Z'} = 1200 GeV","l"); leg_norm->AddEntry(hbkg5_norm,"QCD","l"); leg_norm->AddEntry(h5_norm,"m_{Z'} = 1400 GeV","l"); //only for 25ns samples leg_norm->AddEntry(hbkg4_norm,"ggH","l"); leg_norm->AddEntry(h6_norm,"m_{Z'} = 1700 GeV","l"); //only for 25ns samples leg_norm->AddEntry(hbkg6_norm,"VH","l"); leg_norm->AddEntry(h7_norm,"m_{Z'} = 2500 GeV","l"); //only for 25ns samples leg_norm->AddEntry(hbkg7_norm,"ttH","l"); leg_norm->AddEntry(hbkg8_norm,"VBF H","l"); leg_norm->AddEntry(hbkg9_norm,"t + #gamma + Jets","l"); leg_norm->AddEntry(hbkg10_norm,"tt + #gamma +Jets","l"); leg_norm->AddEntry(hbkg11_norm,"#gamma+W","l"); leg_norm->AddEntry(hbkg12_norm,"#gamma+Z","l"); leg_norm->Draw("same"); if(pt1_cutIN==0. && pt2_cutIN == 0. && MET_cutIN == 0.){ c1->SaveAs("./25ns_2246inv_v3/plots/kinematics/DeltaPhi_H_MET_MET0.png"); c1->SaveAs("./25ns_2246inv_v3/plots/kinematics/DeltaPhi_H_MET_MET0.pdf"); c2->SaveAs("./25ns_2246inv_v3/plots/kinematics/DeltaPhi_H_MET_MET0_norm.png"); c2->SaveAs("./25ns_2246inv_v3/plots/kinematics/DeltaPhi_H_MET_MET0_norm.pdf"); } }
void CreateDataTemplates(double dX,int BRN_ORDER) { gROOT->ForceStyle(); RooMsgService::instance().setSilentMode(kTRUE); for(int i=0;i<2;i++) { RooMsgService::instance().setStreamStatus(i,kFALSE); } double XMIN = 80; double XMAX = 200; const int NSEL(2); const int NCAT[NSEL] = {4,3}; const double MVA_BND[NSEL][NCAT[0]+1] = {{-0.6,0.0,0.7,0.84,1},{-0.1,0.4,0.8,1}}; char name[1000]; TString SELECTION[NSEL] = {"NOM","VBF"}; TString SELTAG[NSEL] = {"NOM","PRK"}; TString MASS_VAR[NSEL] = {"mbbReg[1]","mbbReg[2]"}; TFile *fBKG = TFile::Open("limit_BRN5+4_dX0p1_80-200_CAT0-6/output/bkg_shapes_workspace.root"); RooWorkspace *wBkg = (RooWorkspace*)fBKG->Get("w"); RooWorkspace *w = new RooWorkspace("w","workspace"); //RooRealVar x(*(RooRealVar*)wBkg->var("mbbReg")); TTree *tr; TH1F *h,*hBlind; TCanvas *canFit[5]; RooDataHist *roohist[5],*roohist_blind[5]; TFile *fTransfer = TFile::Open("limit_BRN5+4_dX0p1_80-200_CAT0-6/output/transferFunctions.root"); TF1 *transFunc; int counter(0); int NPAR = BRN_ORDER; for(int isel=0;isel<NSEL;isel++) { TFile *fDATA = TFile::Open("flat/Fit_data_sel"+SELECTION[isel]+".root"); RooRealVar *brn[8]; RooArgSet brn_params; if (isel == 1) { NPAR = 4; } for(int ib=0;ib<=NPAR;ib++) { brn[ib] = new RooRealVar("b"+TString::Format("%d",ib)+"_sel"+SELECTION[isel],"b"+TString::Format("%d",ib)+"_sel"+SELECTION[isel],0.5,0,10.); brn_params.add(*brn[ib]); } for(int icat=0;icat<NCAT[isel];icat++) { RooRealVar x("mbbReg_"+TString::Format("CAT%d",counter),"mbbReg_"+TString::Format("CAT%d",counter),XMIN,XMAX); sprintf(name,"fitRatio_sel%s_CAT%d",SELTAG[isel].Data(),counter); transFunc = (TF1*)fTransfer->Get(name); transFunc->Print(); // --- The error on the tranfer function parameters is shrinked because the correlations are ingored. // --- Must be consistent with TransferFunctions.C float p0 = transFunc->GetParameter(0); float e0 = transFunc->GetParError(0); float p1 = transFunc->GetParameter(1); float e1 = transFunc->GetParError(1); float p2 = transFunc->GetParameter(2); float e2 = transFunc->GetParError(2); RooRealVar trans_p2(TString::Format("trans_p2_CAT%d",counter),TString::Format("trans_p2_CAT%d",counter),p2); RooRealVar trans_p1(TString::Format("trans_p1_CAT%d",counter),TString::Format("trans_p1_CAT%d",counter),p1); RooRealVar trans_p0(TString::Format("trans_p0_CAT%d",counter),TString::Format("trans_p0_CAT%d",counter),p0); printf("%.2f %.2f %.2f\n",p0,p1,p2); RooGenericPdf *transfer; if (isel == 0) { trans_p2.setError(0.5*e2); trans_p1.setError(0.5*e1); trans_p0.setError(0.5*e0); transfer = new RooGenericPdf(TString::Format("transfer_CAT%d",counter),"@2*@0+@1",RooArgList(x,trans_p0,trans_p1)); } else { trans_p2.setError(0.05*e2); trans_p1.setError(0.05*e1); trans_p0.setError(0.05*e0); transfer = new RooGenericPdf(TString::Format("transfer_CAT%d",counter),"@3*@0*@0+@2*@0+@1",RooArgList(x,trans_p0,trans_p1,trans_p2)); } trans_p2.setConstant(kTRUE); trans_p1.setConstant(kTRUE); trans_p0.setConstant(kTRUE); transfer->Print(); sprintf(name,"FitData_sel%s_CAT%d",SELECTION[isel].Data(),icat); canFit[icat] = new TCanvas(name,name,900,600); canFit[icat]->cd(1)->SetBottomMargin(0.4); sprintf(name,"Hbb/events"); tr = (TTree*)fDATA->Get(name); sprintf(name,"hMbb_%s_CAT%d",SELECTION[isel].Data(),icat); int NBINS = (XMAX[isel][icat]-XMIN[isel][icat])/dX; h = new TH1F(name,name,NBINS,XMIN[isel][icat],XMAX[isel][icat]); sprintf(name,"hMbb_blind_%s_CAT%d",SELECTION[isel].Data(),icat); hBlind = new TH1F(name,name,NBINS,XMIN[isel][icat],XMAX[isel][icat]); sprintf(name,"mva%s>%1.2f && mva%s<=%1.2f",SELECTION[isel].Data(),MVA_BND[isel][icat],SELECTION[isel].Data(),MVA_BND[isel][icat+1]); TCut cut(name); sprintf(name,"mva%s>%1.2f && mva%s<=%1.2f && %s>100 && %s<150",SELECTION[isel].Data(),MVA_BND[isel][icat],SELECTION[isel].Data(),MVA_BND[isel][icat+1],MASS_VAR[isel].Data(),MASS_VAR[isel].Data()); TCut cutBlind(name); tr->Draw(MASS_VAR[isel]+">>"+h->GetName(),cut); tr->Draw(MASS_VAR[isel]+">>"+hBlind->GetName(),cutBlind); sprintf(name,"yield_data_CAT%d",counter); RooRealVar *Yield = new RooRealVar(name,name,h->Integral()); sprintf(name,"data_hist_CAT%d",counter); roohist[icat] = new RooDataHist(name,name,x,h); sprintf(name,"data_hist_blind_CAT%d",counter); roohist_blind[icat] = new RooDataHist(name,name,x,hBlind); RooAbsPdf *qcd_pdf; if (icat == 0) { for(int ib=0;ib<=NPAR;ib++) { brn[ib]->setConstant(kFALSE); } sprintf(name,"qcd_model_CAT%d",counter); RooBernstein *qcd_pdf_aux = new RooBernstein(name,name,x,brn_params); qcd_pdf = dynamic_cast<RooAbsPdf*> (qcd_pdf_aux); } else { for(int ib=0;ib<=NPAR;ib++) { brn[ib]->setConstant(kTRUE); } sprintf(name,"qcd_model_aux1_CAT%d",counter); RooBernstein *qcd_pdf_aux1 = new RooBernstein(name,name,x,brn_params); sprintf(name,"qcd_model_CAT%d",counter); RooProdPdf *qcd_pdf_aux2 = new RooProdPdf(name,name,RooArgSet(*transfer,*qcd_pdf_aux1)); qcd_pdf = dynamic_cast<RooAbsPdf*> (qcd_pdf_aux2); } sprintf(name,"Z_model_CAT%d",counter); RooAbsPdf *z_pdf = (RooAbsPdf*)wBkg->pdf(name); sprintf(name,"Top_model_CAT%d",counter); RooAbsPdf *top_pdf = (RooAbsPdf*)wBkg->pdf(name); sprintf(name,"yield_ZJets_CAT%d",counter); RooRealVar *nZ = (RooRealVar*)wBkg->var(name); sprintf(name,"yield_Top_CAT%d",counter); RooRealVar *nT = (RooRealVar*)wBkg->var(name); sprintf(name,"yield_QCD_CAT%d",counter); RooRealVar nQCD(name,name,1000,0,1e+10); nZ->setConstant(kTRUE); nT->setConstant(kTRUE); sprintf(name,"bkg_model_CAT%d",counter); RooAddPdf model(name,name,RooArgList(*z_pdf,*top_pdf,*qcd_pdf),RooArgList(*nZ,*nT,nQCD)); RooFitResult *res = model.fitTo(*roohist[icat],RooFit::Save()); res->Print(); RooPlot* frame = x.frame(); RooPlot* frame1 = x.frame(); roohist[icat]->plotOn(frame); model.plotOn(frame,LineWidth(2)); cout<<"chi2/ndof = "<<frame->chiSquare()<<endl; RooHist *hresid = frame->residHist(); //model.plotOn(frame,RooFit::VisualizeError(*res,1,kFALSE),FillColor(kGray)MoveToBack()); model.plotOn(frame,Components(*qcd_pdf),LineWidth(2),LineColor(kBlack),LineStyle(kDashed)); model.plotOn(frame,Components(*z_pdf),LineWidth(2),LineColor(kBlue)); model.plotOn(frame,Components(*top_pdf),LineWidth(2),LineColor(kGreen+1)); frame->Draw(); gPad->Update(); TPad* pad = new TPad("pad", "pad", 0., 0., 1., 1.); pad->SetTopMargin(0.6); pad->SetFillColor(0); pad->SetFillStyle(0); pad->Draw(); pad->cd(0); frame1->addPlotable(hresid,"p"); frame1->Draw(); for(int ib=0;ib<=NPAR;ib++) { brn[ib]->setConstant(kFALSE); } if (icat > 0) { trans_p2.setConstant(kFALSE); trans_p1.setConstant(kFALSE); trans_p0.setConstant(kFALSE); } if (isel == 0) { w->import(trans_p1); w->import(trans_p0); } else { w->import(trans_p2); w->import(trans_p1); w->import(trans_p0); } w->import(*roohist[icat]); w->import(*roohist_blind[icat]); w->import(model); w->import(*Yield); counter++; }// category loop }// selection loop w->Print(); w->writeToFile("data_shapes_workspace_"+TString::Format("BRN%d",BRN_ORDER)+".root"); }
void t1pfmetPhiwithCorr(double pt1min, double pt2min, double METmin, double DPHImin){ gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); int i = 0; TLegend* leg = new TLegend(0.35,0.65,0.87,0.87); leg->SetNColumns(2); leg->SetBorderSize(0); leg->SetFillStyle(0); TCanvas *canvas = new TCanvas("c1n","",500,600); TPad *mainPad = new TPad("mainPad","",0,0.3,1,1); TPad *smallPad = new TPad("smallPad","",0,0.05,1,0.3); mainPad->SetBottomMargin(0.015); smallPad->SetTopMargin(0.05); smallPad->SetBottomMargin(0.25); canvas->cd(); mainPad->Draw(); mainPad->cd(); // gPad->SetLogy(); TCut mggmax = "mgg<180"; TCut mggmin = "mgg>100"; TCut pt1Cut = Form("pt1/mgg>%lf",pt1min); TCut pt2Cut = Form("pt2/mgg>%lf",pt2min); // TCut METCut = Form("t1pfmetCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0)>%lf",METmin); TCut METCut = ""; TCut DPHICut = Form("Delta(pt1,eta1,phi1,pt2,eta2,phi2,t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>%lf",DPHImin); TCut eveto1 = "eleveto1 == 1"; TCut eveto2 = "eleveto2 == 1"; TCut eveto = eveto1 && eveto2; TCut genmatch = "((genmatch1==1 && genmatch2==0)||(genmatch1==0 && genmatch2==1)||(genmatch1==0 && genmatch2==0))"; TCut metF = "((metF_GV==1) && (metF_HBHENoise==1) && (metF_HBHENoiseIso==1) && (metF_CSC==1) && (metF_eeBadSC==1))"; TCut NegWeight = "weight>0."; /* TFile *M1 = TFile::Open("./50ns_betaV3/NewWeightDMHtoGG_M1.root","READ"); TFile *M10 = TFile::Open("./50ns_betaV3/NewWeightDMHtoGG_M10.root","READ"); TFile *M100 = TFile::Open("./50ns_betaV3/NewWeightDMHtoGG_M100.root","READ"); TFile *M1000 = TFile::Open("./50ns_betaV3/NewWeightDMHtoGG_M1000.root","READ"); */ TFile *data = TFile::Open("./25ns_2246inv_v3/DoubleEG.root","READ"); TFile *sig1 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP600.root","READ"); TFile *sig2 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP800.root","READ"); TFile *sig3 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1000.root","READ"); TFile *sig4 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1200.root","READ"); TFile *sig5 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1400.root","READ"); TFile *sig6 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP1700.root","READ"); TFile *sig7 = TFile::Open("./25ns_2246inv_v3/2HDM_mZP2500.root","READ"); /* TFile *bkg1 = TFile::Open("./50ns_betaV3/DiPhoton.root","READ"); TFile *bkg2 = TFile::Open("./50ns_betaV3/DYJetsToLL.root","READ"); TFile *bkg3 = TFile::Open("./50ns_betaV3/GJets.root","READ"); TFile *bkg4 = TFile::Open("./50ns_betaV3/GluGluHToGG.root","READ"); TFile *bkg5 = TFile::Open("./50ns_betaV3/QCD.root","READ"); TFile *bkg6 = TFile::Open("./50ns_betaV3/VH.root","READ"); */ TFile *bkg1 = TFile::Open("./25ns_2246inv_v3/DiPhoton.root","READ"); TFile *bkg2 = TFile::Open("./25ns_2246inv_v3/DYJetsToLL.root","READ"); TFile *bkg3 = TFile::Open("./25ns_2246inv_v3/GJets.root","READ"); TFile *bkg4 = TFile::Open("./25ns_2246inv_v3/GluGluHToGG.root","READ"); TFile *bkg5 = TFile::Open("./25ns_2246inv_v3/QCD.root","READ"); TFile *bkg6 = TFile::Open("./25ns_2246inv_v3/VH.root","READ"); TFile *bkg7 = TFile::Open("./25ns_2246inv_v3/ttHJetToGG.root","READ"); TFile *bkg8 = TFile::Open("./25ns_2246inv_v3/VBFHToGG.root","READ"); TFile *bkg9 = TFile::Open("./25ns_2246inv_v3/TGJets.root","READ"); TFile *bkg10 = TFile::Open("./25ns_2246inv_v3/TTGJets.root","READ"); TFile *bkg11 = TFile::Open("./25ns_2246inv_v3/WGToLNuG.root","READ"); TFile *bkg12 = TFile::Open("./25ns_2246inv_v3/ZGTo2LG.root","READ"); /* TTree *tree_M1 = (TTree*) M1->Get("DiPhotonTree"); TTree *tree_M10 = (TTree*) M10->Get("DiPhotonTree"); TTree *tree_M100 = (TTree*) M100->Get("DiPhotonTree"); TTree *tree_M1000 = (TTree*) M1000->Get("DiPhotonTree"); */ TTree *tree_data = (TTree*) data->Get("DiPhotonTree"); TTree *tree_sig1 = (TTree*) sig1->Get("DiPhotonTree"); TTree *tree_sig2 = (TTree*) sig2->Get("DiPhotonTree"); TTree *tree_sig3 = (TTree*) sig3->Get("DiPhotonTree"); TTree *tree_sig4 = (TTree*) sig4->Get("DiPhotonTree"); TTree *tree_sig5 = (TTree*) sig5->Get("DiPhotonTree"); TTree *tree_sig6 = (TTree*) sig6->Get("DiPhotonTree"); TTree *tree_sig7 = (TTree*) sig7->Get("DiPhotonTree"); TTree *tree_bkg1 = (TTree*) bkg1->Get("DiPhotonTree"); TTree *tree_bkg2 = (TTree*) bkg2->Get("DiPhotonTree"); TTree *tree_bkg3 = (TTree*) bkg3->Get("DiPhotonTree"); TTree *tree_bkg4 = (TTree*) bkg4->Get("DiPhotonTree"); TTree *tree_bkg5 = (TTree*) bkg5->Get("DiPhotonTree"); TTree *tree_bkg6 = (TTree*) bkg6->Get("DiPhotonTree"); TTree *tree_bkg7 = (TTree*) bkg7->Get("DiPhotonTree"); TTree *tree_bkg8 = (TTree*) bkg8->Get("DiPhotonTree"); TTree *tree_bkg9 = (TTree*) bkg9->Get("DiPhotonTree"); TTree *tree_bkg10 = (TTree*) bkg10->Get("DiPhotonTree"); TTree *tree_bkg11 = (TTree*) bkg11->Get("DiPhotonTree"); TTree *tree_bkg12 = (TTree*) bkg12->Get("DiPhotonTree"); /* tree_M1->Draw("(t1pfmet)>>h1(30,100,200)","weight*10"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && Cut_Jets)); TH1F *h1 =(TH1F*)gPad->GetPrimitive("h1"); tree_M10->Draw("(t1pfmet)>>h2(30,100,200)","weight*10"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && Cut_Jets)); TH1F *h2 =(TH1F*)gPad->GetPrimitive("h2"); tree_M100->Draw("(t1pfmet)>>h3(30,100,200)","weight*10"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && Cut_Jets)); TH1F *h3 =(TH1F*)gPad->GetPrimitive("h3"); tree_M1000->Draw("(t1pfmet)>>h4(30,100,200)","weight*10"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && Cut_Jets)); TH1F *h4 =(TH1F*)gPad->GetPrimitive("h4"); */ tree_data->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,1))>>hdata(10,-4,4)","(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && eveto && METCut && metF&& DPHICut )); TH1F *hdata =(TH1F*)gPad->GetPrimitive("hdata"); tree_sig1->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h1(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h1 =(TH1F*)gPad->GetPrimitive("h1"); tree_sig2->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h2(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h2 =(TH1F*)gPad->GetPrimitive("h2"); tree_sig3->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h3(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h3 =(TH1F*)gPad->GetPrimitive("h3"); tree_sig4->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h4(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h4 =(TH1F*)gPad->GetPrimitive("h4"); tree_sig5->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h5(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h5 =(TH1F*)gPad->GetPrimitive("h5"); tree_sig6->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h6(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h6 =(TH1F*)gPad->GetPrimitive("h6"); tree_sig7->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>h7(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *h7 =(TH1F*)gPad->GetPrimitive("h7"); tree_bkg1->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg1(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg1 =(TH1F*)gPad->GetPrimitive("hbkg1"); tree_bkg2->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg2(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg2 =(TH1F*)gPad->GetPrimitive("hbkg2"); tree_bkg3->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg3(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && genmatch && DPHICut)); TH1F *hbkg3 =(TH1F*)gPad->GetPrimitive("hbkg3"); tree_bkg4->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg4(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg4 =(TH1F*)gPad->GetPrimitive("hbkg4"); tree_bkg5->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg5(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && genmatch && DPHICut)); TH1F *hbkg5 =(TH1F*)gPad->GetPrimitive("hbkg5"); tree_bkg6->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg6(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg6 =(TH1F*)gPad->GetPrimitive("hbkg6"); tree_bkg7->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg7(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg7 =(TH1F*)gPad->GetPrimitive("hbkg7"); tree_bkg8->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg8(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg8 =(TH1F*)gPad->GetPrimitive("hbkg8"); tree_bkg9->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg9(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg9 =(TH1F*)gPad->GetPrimitive("hbkg9"); tree_bkg10->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg10(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg10 =(TH1F*)gPad->GetPrimitive("hbkg10"); tree_bkg11->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg11(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg11 =(TH1F*)gPad->GetPrimitive("hbkg11"); tree_bkg12->Draw("(t1pfmetPhiCorr(t1pfmet,t1pfmetPhi,t1pfmetSumEt,0))>>hbkg12(10,-4,4)","weight*(mgg<115||mgg>135)"*(mggmax && mggmin && pt1Cut && pt2Cut && METCut && eveto && DPHICut)); TH1F *hbkg12 =(TH1F*)gPad->GetPrimitive("hbkg12"); hdata->SetMarkerColor(kBlack); hdata->SetLineColor(kBlack); hdata->SetMarkerStyle(20); h1->SetLineColor(kRed+3); h2->SetLineColor(kRed+1); h3->SetLineColor(kRed); h4->SetLineColor(kPink+2); h5->SetLineColor(kPink+4); h6->SetLineColor(kPink+7); h7->SetLineColor(kMagenta+2); h1->SetLineWidth(2); h2->SetLineWidth(2); h3->SetLineWidth(2); h4->SetLineWidth(2); h5->SetLineWidth(2); h6->SetLineWidth(2); h7->SetLineWidth(2); THStack *hs=new THStack("hs",""); hbkg7->SetFillColor(kGreen+2); hbkg6->SetFillColor(kGreen); hbkg8->SetFillColor(kYellow); hbkg4->SetFillColor(kOrange); hbkg9->SetFillColor(kOrange+7); hbkg10->SetFillColor(kOrange+4); hbkg11->SetFillColor(kCyan); hbkg12->SetFillColor(kCyan+1); hbkg5->SetFillColor(kBlue+2); hbkg2->SetFillColor(kBlue); hbkg3->SetFillColor(kMagenta-2); hbkg1->SetFillColor(kViolet); hbkg1->SetLineColor(kBlack); hbkg2->SetLineColor(kBlack); hbkg3->SetLineColor(kBlack); hbkg4->SetLineColor(kBlack); hbkg5->SetLineColor(kBlack); hbkg6->SetLineColor(kBlack); hbkg7->SetLineColor(kBlack); hbkg8->SetLineColor(kBlack); hbkg9->SetLineColor(kBlack); hbkg10->SetLineColor(kBlack); hbkg11->SetLineColor(kBlack); hbkg12->SetLineColor(kBlack); hs->Add(hbkg7); hs->Add(hbkg6); hs->Add(hbkg8); hs->Add(hbkg4); hs->Add(hbkg9); hs->Add(hbkg10); hs->Add(hbkg11); hs->Add(hbkg12); hs->Add(hbkg2); hs->Add(hbkg5); hs->Add(hbkg3); hs->Add(hbkg1); TH1F *hsum = (TH1F*)hbkg1->Clone("hsum"); hsum->Add(hbkg2); hsum->Add(hbkg3); hsum->Add(hbkg4); hsum->Add(hbkg5); hsum->Add(hbkg6); hsum->Add(hbkg7); hsum->Add(hbkg8); hsum->Add(hbkg9); hsum->Add(hbkg10); hsum->Add(hbkg11); hsum->Add(hbkg12); canvas->SetLeftMargin(0.12); // hs->SetMinimum(0.01); hs->SetMaximum(5700); hs->SetTitle(""); hs->Draw("HIST"); hsum->SetMarkerStyle(1); hsum->SetFillColor(kGray+3); hsum->SetFillStyle(3002); hsum->Draw("same e2"); // h2->Draw("same hist"); // h3->Draw("same hist"); // h4->Draw("same hist"); // h1->Draw("same hist"); //h5->Draw("same hist"); //only for 25ns samples //h7->Draw("same hist"); //only for 25ns samples // h6->Draw("same hist"); //only for 25ns samples hdata->Draw("same E1"); hs->GetXaxis()->SetLabelOffset(999); hs->GetYaxis()->SetTitleOffset(1.5); hs->GetYaxis()->SetTitle("Events/0.8"); //int iPos = 11; // CMS_lumi(canvas,true,iPos,false); gPad->Modified(); leg->AddEntry(hdata,"Data","elp"); /*leg->AddEntry(h1,"m_{#chi} = 1 GeV","l"); leg->AddEntry(h2,"m_{#chi} = 10 GeV","l"); leg->AddEntry(h3,"m_{#chi} = 100 GeV","l"); leg->AddEntry(h4,"m_{#chi} = 1000 GeV","l");*/ // leg->AddEntry(h1,"m_{Z'} = 600 GeV","l"); leg->AddEntry(hbkg1,"#gamma #gamma","f"); // leg->AddEntry(h2,"m_{Z'} = 800 GeV","l"); leg->AddEntry(hbkg2,"Drell Yann","f"); // leg->AddEntry(h3,"m_{Z'} = 1000 GeV","l"); leg->AddEntry(hbkg3,"#gamma + Jets","f"); // leg->AddEntry(h4,"m_{Z'} = 1200 GeV","l"); leg->AddEntry(hbkg5,"QCD","f"); // leg->AddEntry(h5,"m_{Z'} = 1400 GeV","l"); //only for 25ns samples leg->AddEntry(hbkg4,"ggH","f"); //leg->AddEntry(h6,"m_{Z'} = 1700 GeV","l"); //only for 25ns samples leg->AddEntry(hbkg6,"VH","f"); // leg->AddEntry(h7,"m_{Z'} = 2500 GeV","l"); //only for 25ns samples leg->AddEntry(hbkg7,"ttH","f"); leg->AddEntry(hbkg8,"VBF H","f"); leg->AddEntry(hbkg9,"t + #gamma + Jets","f"); leg->AddEntry(hbkg10,"tt + #gamma +Jets","f"); leg->AddEntry(hbkg11,"#gamma+W","f"); leg->AddEntry(hbkg12,"#gamma+Z","f"); leg->AddEntry(hsum,"Bkg uncertainty","f"); leg->Draw("same"); gStyle->SetOptStat(0); canvas->cd(); smallPad->Draw(); smallPad->cd(); TGraphErrors *gr = new TGraphErrors(0); double integralData=hdata->Integral(); double integralBKG=hsum->Integral(); double error, ratio; for(int w=1; w<20; w++){ if((hdata->GetBinContent(w)!=0) && (hsum->GetBinContent(w)!=0)){ gr->SetPoint(w, hdata->GetBinCenter(w),(hdata->GetBinContent(w))/(hsum->GetBinContent(w))); ratio= (hdata->GetBinContent(w))/(hsum->GetBinContent(w)); error= (hdata->GetBinContent(w)*sqrt(hsum->GetBinContent(w))/(hsum->GetBinContent(w)*hsum->GetBinContent(w)) + sqrt(hdata->GetBinContent(w))/hsum->GetBinContent(w)); std::cout<<"VALUE: "<<ratio<<" ERROR: "<<error<<std::endl; gr->SetPointError(w, hdata->GetBinWidth(w)/2,error); }else{ gr->SetPoint(w, hdata->GetBinCenter(w),10); } } gStyle->SetPadTickY(1); gStyle->SetPadTickX(1); gr->GetHistogram()->SetMaximum(2); gr->GetHistogram()->SetMinimum(0.1); gStyle->SetTextSize(14); gROOT->ForceStyle(); gr->GetXaxis()->SetLabelFont(43); gr->GetXaxis()->SetLabelSize(15); gr->GetYaxis()->SetLabelFont(43); gr->GetYaxis()->SetLabelSize(15); gr->GetXaxis()->SetLimits(-4,4); gPad->SetGrid(); gStyle->SetStripDecimals(kTRUE); gr->SetMarkerStyle(20); gr->SetMarkerSize(0.7); gr->Draw("AZP"); gr->GetXaxis()->SetTitle("#phi_{MET}^{corr}"); gr->GetXaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetTitleSize(0.1); gr->GetYaxis()->SetNdivisions(505); gr->GetXaxis()->SetTitleOffset(1); gr->GetYaxis()->SetTitle("Data/MC"); gr->GetYaxis()->SetTitleOffset(0.4); gr->SetTitle(""); smallPad->Update(); TF1* line = new TF1("line","1",-4,4); line->SetLineColor(kRed); line->SetLineWidth(2); line->Draw("L same"); gr->Draw("ZP SAME"); canvas->SaveAs(Form("./25ns_2246inv_v3/plots/kinematics/metphicorr_MET%.0lf.pdf",METmin)); canvas->SaveAs(Form("./25ns_2246inv_v3/plots/kinematics/metphicorr_MET%.0lf.png",METmin)); }
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 plot( TString var, TString data, TString pdf, double low=-1, double high=-1 ) { TFile *tf = TFile::Open( "root/FitOut.root" ); RooWorkspace *w = (RooWorkspace*)tf->Get("w"); TCanvas *canv = new TCanvas("c","c",800,800); TPad *upperPad = new TPad(Form("%s_upper",canv->GetName()),"",0.,0.33,1.,1.); TPad *lowerPad = new TPad(Form("%s_lower",canv->GetName()),"",0.,0.,1.,0.33); canv->cd(); upperPad->Draw(); lowerPad->Draw(); if ( low < 0 ) low = w->var(var)->getMin(); if ( high < 0 ) high = w->var(var)->getMax(); RooPlot *plot = w->var(var)->frame(Range(low,high)); w->data(data)->plotOn(plot); w->pdf(pdf)->plotOn(plot); RooHist *underHist = plot->pullHist(); underHist->GetXaxis()->SetRangeUser(plot->GetXaxis()->GetXmin(), plot->GetXaxis()->GetXmax()); underHist->GetXaxis()->SetTitle(plot->GetXaxis()->GetTitle()); underHist->GetYaxis()->SetTitle("Pull"); underHist->GetXaxis()->SetLabelSize(0.12); underHist->GetYaxis()->SetLabelSize(0.12); underHist->GetXaxis()->SetTitleSize(0.2); underHist->GetXaxis()->SetTitleOffset(0.7); underHist->GetYaxis()->SetTitleSize(0.18); underHist->GetYaxis()->SetTitleOffset(0.38); plot->GetXaxis()->SetTitle(""); upperPad->SetBottomMargin(0.1); upperPad->cd(); plot->Draw(); canv->cd(); lowerPad->SetTopMargin(0.05); lowerPad->SetBottomMargin(0.35); lowerPad->cd(); underHist->Draw("AP"); double ymin = underHist->GetYaxis()->GetXmin(); double ymax = underHist->GetYaxis()->GetXmax(); double yrange = Max( Abs( ymin ), Abs( ymax ) ); underHist->GetYaxis()->SetRangeUser( -1.*yrange, 1.*yrange ); double xmin = plot->GetXaxis()->GetXmin(); double xmax = plot->GetXaxis()->GetXmax(); TColor *mycol3sig = gROOT->GetColor( kGray ); mycol3sig->SetAlpha(0.5); TColor *mycol2sig = gROOT->GetColor( kGray+1 ); mycol2sig->SetAlpha(0.5); TColor *mycol1sig = gROOT->GetColor( kGray+2 ); mycol1sig->SetAlpha(0.5); TBox box3sig; box3sig.SetFillColor( mycol3sig->GetNumber() ); //box3sig.SetFillColorAlpha( kGray, 0.5 ); box3sig.SetFillStyle(1001); box3sig.DrawBox( xmin, -3., xmax, 3.); TBox box2sig; box2sig.SetFillColor( mycol2sig->GetNumber() ); //box2sig.SetFillColorAlpha( kGray+1, 0.5 ); box2sig.SetFillStyle(1001); box2sig.DrawBox( xmin, -2., xmax, 2.); TBox box1sig; box1sig.SetFillColor( mycol1sig->GetNumber() ); //box1sig.SetFillColorAlpha( kGray+2, 0.5 ); box1sig.SetFillStyle(1001); box1sig.DrawBox( xmin, -1., xmax, 1.); TLine lineErr; lineErr.SetLineWidth(1); lineErr.SetLineColor(kBlue-9); lineErr.SetLineStyle(2); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),1.,plot->GetXaxis()->GetXmax(),1.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-1.,plot->GetXaxis()->GetXmax(),-1.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),2.,plot->GetXaxis()->GetXmax(),2.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-2.,plot->GetXaxis()->GetXmax(),-2.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),3.,plot->GetXaxis()->GetXmax(),3.); lineErr.DrawLine(plot->GetXaxis()->GetXmin(),-3.,plot->GetXaxis()->GetXmax(),-3.); TLine line; line.SetLineWidth(3); line.SetLineColor(kBlue); line.DrawLine(plot->GetXaxis()->GetXmin(),0.,plot->GetXaxis()->GetXmax(),0.); underHist->Draw("Psame"); RooHist *redPull = new RooHist(); int newp=0; for (int p=0; p<underHist->GetN(); p++) { double x,y; underHist->GetPoint(p,x,y); if ( TMath::Abs(y)>3 ) { redPull->SetPoint(newp,x,y); redPull->SetPointError(newp,0.,0.,underHist->GetErrorYlow(p),underHist->GetErrorYhigh(p)); newp++; } } redPull->SetLineWidth(underHist->GetLineWidth()); redPull->SetMarkerStyle(underHist->GetMarkerStyle()); redPull->SetMarkerSize(underHist->GetMarkerSize()); redPull->SetLineColor(kRed); redPull->SetMarkerColor(kRed); redPull->Draw("Psame"); canv->Print(Form("tmp/%s.pdf",var.Data())); tf->Close(); }
void plottingmacro_IVF() { double fa = 0.46502; double fb = 0.53498; bool debug_ = true; // std::string path("Nov10thFall11Plots/"); // std::string path("Nov10Fall1160MTopSlimPlots/"); std::string path("Nov10Fall1160MTopIVFPlots_b/"); if(debug_) std::cout << "Init the style form setTDRStyle" << std::endl; setTDRStyle(); gStyle->SetErrorX(0.5); gROOT->ForceStyle(); initOptions(); if(debug_) std::cout << "Init the sample" << std::endl; // std::vector<Sample> s = Nov10thDiJetPtUpdatedSlimHistos(); //std::vector<Sample> s = Nov10Fall1160MTopSlimHistos(); std::vector<Sample> s = Nov10Fall1160MTopIVFHistos(); Sample data(1,"fake data","S1.root",0,true,1000); if(debug_) std::cout << "Init the data sample" << std::endl; for(size_t i=0;i< s.size();i++) if(s[i].data) {data=s[i];break;} if(debug_) std::cout << "Ls data sample" << std::endl; data.file()->ls(); if(debug_) std::cout << "Init the mc sample" << std::endl; for(size_t i=0;i< s.size();i++) s[i].dump(1,fa,fb); std::vector<std::string> names; if(debug_) std::cout << "Get List of Keys" << std::endl; TList * subs = data.file()->GetListOfKeys(); for(size_t i=0;i< subs->GetSize();i++) { TString nn = subs->At(i)->GetName(); if( nn.Contains(TRegexp("Count*")) ) continue; if(debug_) std::cout << "Get List of Keys in subdirs" << std::endl; TList * objs = ((TDirectoryFile *)data.file()->Get(subs->At(i)->GetName()))->GetListOfKeys(); for(size_t j=0;j< objs->GetSize();j++) { if(debug_) std::cout << "Name = " << subs->At(i)->GetName()+std::string("/") + objs->At(j)->GetName() << std::endl; names.push_back(subs->At(i)->GetName()+std::string("/") + objs->At(j)->GetName()); // std::cout << subs->At(i)->GetName() << "/" << objs->At(j)->GetName() << std::endl; //TODO: select plots via regexp } } if(debug_) std::cout << "Starting plotting" << std::endl; std::string process; for(size_t i = 0 ; i < names.size() ; i++) { std::map<std::string,TH1F *> grouped; TString n=names[i]; // if(!n.Contains(TRegexp("VlightRegionHZee/HiggsPtVlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("VlightRegionHZee/ZPtVlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("VlightRegionHZee"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZmmSV"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZeeSV"))) continue; // if(!n.Contains(TRegexp("ZSVRegionZcombSV"))) continue; // if(!n.Contains(TRegexp("ZSVPureRegionZcombSV"))) continue; // if(!n.Contains(TRegexp("ZSVTTbarPureRegionZcombSV"))) continue; if(!n.Contains(TRegexp("TTbarRegionZeeSVJets"))) continue; if(n.Contains(TRegexp("RegionHZcomb"))) process = "Z(l^{+}l^{-})H(b#bar{b})"; if(n.Contains(TRegexp("RegionHZmm"))) process = "Z(#mu^{+}#mu^{-})H(b#bar{b})"; if(n.Contains(TRegexp("RegionHZee"))) process = "Z(e^{+}e^{-})H(b#bar{b})"; if(debug_) std::cout << "Creating the Canvas" << std::endl; TCanvas *c = new TCanvas(); c->SetLogy(false); c->SetTitle(names[i].c_str()); if(debug_) std::cout << "Creating histograms" << std::endl; TH1F *hd = ((TH1F*)data.file()->Get(names[i].c_str())); hd->Sumw2(); Options o=options[names[i]]; // hd->Rebin(o.rebin); hd->SetMarkerStyle(20); hd->GetXaxis()->SetLabelOffset(99); hd->SetYTitle(o.yaxis.c_str()); double nbin = hd->GetNbinsX(); double min_bin = hd->GetXaxis()->GetXmin(); double max_bin = hd->GetXaxis()->GetXmax(); TH1F *hmc = new TH1F("hmc","hmc", nbin, min_bin, max_bin); hmc->SetFillColor(kWhite); hmc->Sumw2(); // hmc->Rebin(o.rebin); if(debug_) std::cout << "Creating the THStack and Legend" << std::endl; THStack * sta = new THStack("sta",hd->GetTitle()); TLegend * l = new TLegend(o.legendx1,o.legendy1,o.legendx2,o.legendy2); //0.7,0.1,0.9,0.6); l->SetFillColor(kWhite); l->SetBorderSize(0); l->SetTextFont(62); l->SetTextSize(0.03); if(debug_) std::cout << "Adding data to the legend" << std::endl; l->AddEntry(hd, "Data","P"); if(debug_) std::cout << "Adding MC to the THStack" << std::endl; //with the proper trigger eff // double SF[] = {1.01,1.03,1.00}; // double SF[] = {1.03,1.054,1.032}; double SF[] = {1.0,1.0,1.0}; if(debug_){ for(int i = 0; i< 3; ++i) std::cout << "SF [" << i << "] = " << SF[i] << std::endl; } double mcIntegral=0; for(size_t j=0;j< s.size() ;j++) { if(!s[j].data) { if(debug_) std::cout << "Creating TH1F from file " << s[j].name << std::endl; TH1F * h = ((TH1F*)s[j].file()->Get(names[i].c_str())); h->Sumw2(); if(debug_){ std::cout << "TH1F created from file " << s[j].name << std::endl; std::cout << "Scaling : " << s[j].scale(data.lumi(),fa,fb) << std::endl; std::cout << "Scaling with SF : " << s[j].scale(data.lumi(),fa,fb,SF) << std::endl; std::cout << "Histo integral before scaling = " << h->Integral() << std::endl; } h->Scale(s[j].scale(data.lumi(),fa,fb,SF)); if(debug_){ std::cout << "Histo integral after scaling = " << h->Integral() << std::endl; std::cout << "Managing style... " << std::endl; } h->SetLineWidth(1.); h->SetFillColor(s[j].color); h->SetLineColor(s[j].color); // h->Rebin(options[names[i]].rebin); if(debug_) std::cout << "Cloning and update legend " << std::endl; if(grouped.find(s[j].name) == grouped.end()){ l->AddEntry(h,s[j].name.c_str(),"F"); } std::cout << "Sample : " << s[j].name << " - Integral for plot " << names[i] << " = " << h->Integral(-10000,10000) << std::endl; mcIntegral += h->Integral(); sta->Add(h); hmc->Add(h); //TO FIX grouped map // sovrascrive histo con lo stesso nome tipo VV o ST etc... grouped[s[j].name]=(TH1F *)h->Clone(("_"+names[i]).c_str()); } } if(debug_){ std::cout << "Data total = " << hd->Integral() << std::endl; std::cout << "MC = " << mcIntegral << std::endl; std::cout << "Data/MC = " << hd->Integral()/mcIntegral << std::endl; } TPad * TopPad = new TPad("TopPad","Top Pad",0.,0.3,1.,1. ) ; TPad * BtmPad = new TPad("BtmPad","Bottom Pad",0.,0.,1.,0.313 ) ; TopPad->SetBottomMargin(0.02); BtmPad->SetTopMargin(0.0); BtmPad->SetFillStyle(4000); TopPad->SetFillStyle(4000); BtmPad->SetFillColor(0); BtmPad->SetBottomMargin(0.35); TopPad->Draw() ; BtmPad->Draw() ; std::cout << "hd maximum = " << hd->GetMaximum() << " sta maximum = " << sta->GetMaximum() << std::endl; double maxY; if(hd->GetMaximum() > sta->GetMaximum()) maxY = (hd->GetMaximum())*1.5; else maxY = (sta->GetMaximum())*1.5; TopPad->cd(); hd->Draw("E1X0"); sta->Draw("sameHIST"); hmc->Draw("sameE2"); hmc->SetFillColor(2); hmc->SetMarkerSize(0); hmc->SetFillStyle(3013); hd->Draw("E1X0same"); l->Draw("same"); std::cout << "Set Maximum to = " << maxY << std::endl; hd->GetYaxis()->SetRangeUser(0.,maxY); hd->GetXaxis()->SetRangeUser(options[names[i]].min,options[names[i]].max); BtmPad->cd(); std::cout << "Division" << std::endl; TH1D * divisionErrorBand = (TH1D*)(hmc)->Clone("divisionErrorBand"); divisionErrorBand->Sumw2(); divisionErrorBand->Divide(hmc); divisionErrorBand->Draw("E2"); divisionErrorBand->SetMaximum(2.49); divisionErrorBand->SetMinimum(0); divisionErrorBand->SetMarkerStyle(20); divisionErrorBand->SetMarkerSize(0.55); divisionErrorBand->GetXaxis()->SetTitleOffset(1.12); divisionErrorBand->GetXaxis()->SetLabelSize(0.12); divisionErrorBand->GetXaxis()->SetTitleSize(0.5); divisionErrorBand->GetYaxis()->SetTitle("Data/MC"); divisionErrorBand->GetYaxis()->SetLabelSize(0.12); divisionErrorBand->GetYaxis()->SetTitleSize(0.12); divisionErrorBand->GetYaxis()->SetTitleOffset(0.40); divisionErrorBand->GetYaxis()->SetNdivisions(505); //divisionErrorBand->UseCurrentStyle(); divisionErrorBand->SetFillColor(2); divisionErrorBand->SetFillStyle(3001); divisionErrorBand->SetMarkerSize(0.); TH1D * division = (TH1D*)(hd)->Clone("division"); division->Sumw2(); division->Divide(hmc); // division->SetMaximum(2.5); // division->SetMinimum(0); // division->SetMarkerStyle(20); // division->SetMarkerSize(0.55); // division->GetXaxis()->SetLabelSize(0.12); // division->GetXaxis()->SetTitleSize(0.14); // division->GetYaxis()->SetLabelSize(0.10); // division->GetYaxis()->SetTitleSize(0.10); // division->GetYaxis()->SetTitle("Data/MC"); Double_t min = division->GetXaxis()->GetXmin(); Double_t max = division->GetXaxis()->GetXmax(); division->Draw("E1X0same"); TLine *line = new TLine(min, 1.0, max, 1.0); line->SetLineColor(kRed); line->Draw("same"); TLegend * leg3 =new TLegend(0.50,0.86,0.69,0.96); leg3->AddEntry(divisionErrorBand,"MC uncert. (stat.)","f"); leg3->SetFillColor(0); leg3->SetLineColor(0); leg3->SetShadowColor(0); leg3->SetTextFont(62); leg3->SetTextSize(0.06); leg3->Draw(); TPaveText *pave = new TPaveText(0.15,0.85,0.32,0.96,"brNDC"); pave->SetTextAlign(12); pave->SetLineColor(0); pave->SetFillColor(0); pave->SetShadowColor(0); //TText *text = pave->AddText(Form("#chi_{#nu}^{2} = %.3f, K_{s} = %.3f",histDt->Chi2Test(histCopyMC5,"UWCHI2/NDF"),histDt->KolmogorovTest(histCopyMC5))); // stat + sys TText *text = pave->AddText(Form("#chi_{#nu}^{2} = %.3f, K_{s} = %.3f",hd->Chi2Test(hmc,"UWCHI2/NDF"),hd->KolmogorovTest(hmc))); // stat only text->SetTextFont(62); text->SetTextSize(0.08); pave->Draw(); TopPad->cd(); TLatex latex; latex.SetNDC(); latex.SetTextAlign(12); latex.SetTextSize(0.052); latex.DrawLatex(0.17,0.89,"CMS Preliminary"); latex.SetTextSize(0.04); latex.DrawLatex(0.17,0.84,"#sqrt{s} = 7 TeV, L = 4.7 fb^{-1}"); // latex.DrawLatex(0.17,0.79,"Z(e^{+}e^{-})H(b#bar{b})"); latex.DrawLatex(0.17,0.79,process.c_str()); c->Update(); std::string cName= hd->GetName(); cName += "_bare.pdf"; cName = path+cName; c->Print(cName.c_str(),"pdf"); // std::cout << names[i] << " d: " << hd->Integral() << " "; // THStack * sta2 = new THStack("sta2",hd->GetTitle()); // float tot=0; // float toterr2=0; // if(debug_) // std::cout << "Putting the iterator in the for loop" << std::endl; // for(std::map<std::string,TH1F *>::reverse_iterator it=grouped.rbegin(); it!=grouped.rend();++it) // { // if(debug_) // std::cout << "Using the iterator" << std::endl; // std::cout << (*it).first << " " << (*it).second->Integral() << " | " << std::endl ; // if((*it).second->GetEntries() > 0) { // float er=1.*sqrt((*it).second->GetEntries())/(*it).second->GetEntries()*(*it).second->Integral(); // toterr2+=er*er; // } // tot+=(*it).second->Integral(); // sta2->Add(it->second); // } // std::cout << " Tot: " << tot << "+-" << sqrt(toterr2) << " SF: " << hd->Integral()/tot << std::endl; // TCanvas *c2 = new TCanvas(); // c2->SetTitle(names[i].c_str()); // std::cout << "hd maximum = " << hd->GetMaximum() << " sta2 maximum = " << sta2->GetMaximum() << std::endl; // if(hd->GetMaximum() > sta2->GetMaximum()) maxY = hd->GetBinContent(hd->GetMaximumBin()) * 1.5; // else maxY = ( sta2->GetMaximum())*1.5; // // hd->Draw("E1"); // sta2->Draw("PADSHIST"); // // hd->Draw("E1same"); // // l->Draw("same"); // std::cout << "Set Maximum to = " << maxY << std::endl; // hd->GetYaxis()->SetRangeUser(0.,maxY); // hd->GetXaxis()->SetRangeUser(options[names[i]].min,options[names[i]].max); // c2->Update(); // std::string c2Name = hd->GetName(); // c2Name = path+c2Name; // c2Name += "_norm.pdf"; // c2->Print(c2Name.c_str(),"pdf"); } }
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; }
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 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); }
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 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 ; }
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 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"); } }