ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/cbrown/Development/Plotting/Modules/Plotting_Functions.C
(Generate patch)

Comparing UserCode/cbrown/Development/Plotting/Modules/Plotting_Functions.C (file contents):
Revision 1.41 by fronga, Wed Jul 25 14:38:04 2012 UTC vs.
Revision 1.47 by buchmann, Tue Aug 14 09:32:53 2012 UTC

# Line 196 | Line 196 | void make_special_obs_pred_mll_plot(stri
196    }
197    
198    // Separate predictions
199 <  TH1F* Zpred = (TH1F*)LcorrJZBeemm->Clone("Zpred");
200 <  TH1F* OSpred = (TH1F*)RcorrJZBem->Clone("OSpred");
201 <  if(PlottingSetup::RestrictToMassPeak) {
202 <    OSpred->Scale(1.0/3.0);
203 <    OSpred->Add(RcorrJZBSBem,1.0/3.);
204 <    OSpred->Add(RcorrJZBSBeemm,1.0/3.);
205 <    Zpred->Add(LcorrJZBem,-1.0/3.);
206 <    Zpred->Add(LcorrJZBSBem,-1.0/3.);
207 <    Zpred->Add(LcorrJZBSBeemm,-1.0/3.);
208 <  } else {
209 <    Zpred->Add(LcorrJZBem,-1.0);
210 <  }
211 <
212 <  TH1F* Bpred = (TH1F*)Zpred->Clone("Bpred");
213 <  Bpred->Add(OSpred);
199 >  TH1F* SFN = (TH1F*)LcorrJZBeemm->Clone("SFN");
200 >  TH1F* OFP = (TH1F*)RcorrJZBem->Clone("OFP");
201 >  TH1F* OFN = (TH1F*)LcorrJZBem->Clone("OFN");
202 >  if(PlottingSetup::RestrictToMassPeak) {
203 >    OFP->Scale(1.0/3.0);
204 >    OFP->Add(RcorrJZBSBem,1.0/3.);
205 >    OFP->Add(RcorrJZBSBeemm,1.0/3.);
206 >    OFN->Scale(1.0/3.0);
207 >    OFN->Add(LcorrJZBSBem,1.0/3.);
208 >    OFN->Add(LcorrJZBSBeemm,1.0/3.);
209 >  }
210 >
211 >  TH1F* Bpred = (TH1F*)SFN->Clone("Bpred");
212 >  Bpred->Add(OFP);
213 >  Bpred->Add(OFN,-1);
214    Bpred->SetLineColor(kRed);
215    
216  // Problem with negative bins: add contents to OSpred
217  for ( unsigned int i=0; i<=Zpred->GetNbinsX(); ++i ) {
218    if ( Zpred->GetBinContent(i)<0 ) {
219      OSpred->SetBinContent(i,OSpred->GetBinContent(i)+Zpred->GetBinContent(i));
220      Zpred->SetBinContent(i,0);
221    }
222  }
223
216    RcorrJZBeemm->SetTitleOffset(1.3,"y");
217    RcorrJZBeemm->Draw();
218    mcRcorrJZBeemm.Draw("same");
# Line 238 | Line 230 | void make_special_obs_pred_mll_plot(stri
230    CompleteSave(ckin,saveas.str());
231    
232    // Draw all predictions overlayed
233 <  Zpred->SetLineColor(kGreen+1);
234 <  Zpred->SetLineStyle(2);
235 <  OSpred->SetLineColor(kBlue-2);
236 <  OSpred->SetLineStyle(3);
233 >  unsigned int w = gStyle->GetHistLineWidth()+1; // Make line a bit wider, since we dash it
234 >  SFN->SetLineColor(kGreen+2);
235 >  SFN->SetLineStyle(2);
236 >  SFN->SetLineWidth(w);
237 >  OFP->SetLineColor(kBlue+2);
238 >  OFP->SetLineStyle(2);
239 >  OFP->SetLineWidth(w);
240 >  OFN->SetLineColor(kMagenta+2);
241 >  OFN->SetLineStyle(3);
242 >  OFN->SetLineWidth(w);
243    
244    RcorrJZBeemm->Draw();
245 <  OSpred->Draw("histo,same");
246 <  Zpred->Draw("histo,same");
245 >  SFN->Draw("histo,same");
246 >  OFP->Draw("histo,same");
247 >  OFN->Draw("histo,same");
248    Bpred->Draw("histo,same");
249    RcorrJZBeemm->Draw("same");
250    
251    TLegend *leg2 = make_legend("",0.52,0.7);
252    leg2->AddEntry(RcorrJZBeemm,"observed (data)","lp");
253    leg2->AddEntry(Bpred,"predicted (data)","l");
254 <  leg2->AddEntry(Zpred, "  bkgd w/Z (data)","l");
255 <  leg2->AddEntry(OSpred,"  bkgd w/o Z (data)","l");
254 >  leg2->AddEntry(SFN,  "  SF JZB<0","l");
255 >  leg2->AddEntry(OFN,  "  OF JZB<0","l");
256 >  leg2->AddEntry(OFP,  "  OF JZB>0","l");
257    leg2->Draw("same");
258    
259    saveas.str("");
260    saveas << "kin/Mll_After_Cut/Cut_At" << jzbthreshold << "_nomc";
261    CompleteSave(ckin,saveas.str());
262    
263  
264
263    delete RcorrJZBeemm;
264    delete LcorrJZBeemm;
265    delete RcorrJZBem;
# Line 360 | Line 358 | void draw_ratio_plot(TH1* hdata, THStack
358    oneline->Draw("same");
359   }
360  
361 + void make_OFSF_plot(string variable, string addcut, string legendTitle, int nbins, float min, float max, bool logscale,
362 +                   string xlabel, string filename, bool isPF=true, bool plotratio=true, bool loadlastminmax=false, float legendPosition=0.3) {
363 +
364 +  TCut ibasiccut=basiccut;
365 +  bool draw_separation_lines=false;
366 +
367 +  if(isPF) ibasiccut=basiccut&&"pfjzb[0]>-998";
368 +
369 +  if(addcut != "") ibasiccut = ibasiccut && addcut.c_str();
370 +
371 +  TCut cutSF;
372 +  TCut cutOF;
373 +
374 +  cutOF=cutOSOF&&cutnJets&&ibasiccut;
375 +  cutSF=cutOSSF&&cutnJets&&ibasiccut;
376 +
377 +
378 +  TCanvas *ckin = new TCanvas("ckin","Kinematic Plots (in the making)",600,600);
379 +  ckin->SetLogy(logscale);
380 +  TH1F *datahistoSF = allsamples.Draw("datahistoSF",variable,nbins,min,max, xlabel, "events",cutSF,data,luminosity);
381 +  TH1F *datahistoOF = allsamples.Draw("datahistoOF",variable,nbins,min,max, xlabel, "events",cutOF,data,luminosity);
382 +  string signal("LM3");
383 +  TH1F* signalhisto = new TH1F("signalhisto",signal.c_str(),nbins,min,max);
384 +  int idx = signalsamples.FindSample(signal)[0];
385 +  (signalsamples.collection)[idx].events->Project("signalhisto",variable.c_str(),cutSF);
386 +  signalhisto->Scale((signalsamples.collection)[idx].weight*luminosity);
387 +  signalhisto->SetLineColor((signalsamples.collection)[idx].samplecolor);
388 +  datahistoSF->SetMarkerSize(DataMarkerSize);
389 +  datahistoOF->SetLineColor(kRed);
390 +
391 +  if ( !logscale ) {
392 +    datahistoSF->SetMinimum(0); // Defaults
393 +    datahistoOF->SetMinimum(0); // Defaults
394 +  } else {
395 +    datahistoSF->SetMinimum(0.5);
396 +    datahistoOF->SetMinimum(0.5);
397 +  }
398 +  if (logscale) {
399 +    datahistoSF->SetMaximum(5.3*datahistoSF->GetMaximum());
400 +    datahistoOF->SetMaximum(5.3*datahistoSF->GetMaximum());
401 +  } else {
402 +    datahistoSF->SetMaximum(2.0*datahistoSF->GetMaximum());
403 +    datahistoOF->SetMaximum(2.0*datahistoOF->GetMaximum());
404 +  }
405 +
406 +  datahistoSF->GetXaxis()->SetTitle(xlabel.c_str());
407 +  datahistoOF->GetXaxis()->SetTitle(xlabel.c_str());
408 +  signalhisto->GetXaxis()->SetTitle(xlabel.c_str());
409 +  datahistoSF->GetYaxis()->SetTitle("N. Events");
410 +  datahistoOF->GetYaxis()->SetTitle("N. Events");
411 +  signalhisto->GetYaxis()->SetTitle("N. Events");
412 +  datahistoSF->GetXaxis()->CenterTitle();
413 +  datahistoOF->GetXaxis()->CenterTitle();
414 +  signalhisto->GetXaxis()->CenterTitle();
415 +  datahistoSF->GetYaxis()->CenterTitle();
416 +  datahistoOF->GetYaxis()->CenterTitle();
417 +  signalhisto->GetYaxis()->CenterTitle();
418 +
419 +  TLegend *mleg = new TLegend(0.2+legendPosition, 0.72, 0.55+legendPosition, 0.87, legendTitle.c_str());
420 +  mleg->SetFillColor(kWhite);
421 +  mleg->SetTextFont(42);
422 +  mleg->SetTextSize(0.048);
423 +  mleg->SetLineWidth(0);
424 +  mleg->SetBorderSize(0);
425 +  mleg->AddEntry(datahistoSF, "S. Flavor", "PL");
426 +  mleg->AddEntry(datahistoOF, "O. Flavor", "L");
427 +  mleg->AddEntry(signalhisto, "LM3", "L");
428 +
429 +  datahistoSF->Draw("E1");
430 +  datahistoOF->Draw("HIST,SAMES");
431 +  signalhisto->Draw("HIST,SAMES");
432 +  mleg->Draw();
433 +  DrawPrelim();
434 +  CompleteSave(ckin, "./SFOF/" + filename);
435 +
436 +  datahistoSF->Delete();
437 +  datahistoOF->Delete();
438 +  signalhisto->Delete();
439 +  delete mleg;
440 +  delete ckin;
441 +
442 + }
443 +
444 +
445 +
446   float lastrange_min=0;
447   float lastrange_max=0;
448  
# Line 444 | Line 527 | void make_kin_plot(string variable, stri
527    int idx = signalsamples.FindSample(signal)[0];
528    (signalsamples.collection)[idx].events->Project("signalhisto",variable.c_str(),cut);
529    signalhisto->Scale((signalsamples.collection)[idx].weight*luminosity);
530 <  signalhisto->SetLineColor((signalsamples.collection)[idx].samplecolor);
530 >  signalhisto->SetLineColor(kOrange);
531  
532    THStack mcstack   = allsamples.DrawStack("mcstack",  variable,nbins,min,max,xlabel,"events",cut,mc,luminosity);
533    datahisto->Draw("e1");
# Line 501 | Line 584 | void make_kin_plot(string variable, stri
584            upperboundary->Draw("same");
585          }
586            
587 <        kinleg->AddEntry("signalihisto",signal.c_str(),"l");
587 >        kinleg->AddEntry("signalhisto",signal.c_str(),"l");
588          kinleg->Draw();
589          write_cut->Draw();
590          DrawPrelim();
# Line 576 | Line 659 | void do_kinematic_plots(string mcjzb, st
659          mll_hi=300;
660    }
661  
662 +  make_OFSF_plot("pfJetGoodNum40", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 5, 3, 8, true, "N. jets", "njetsLow", false, false, false, 0.2);
663 +  make_OFSF_plot("pfJetGoodNum40", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 5, 3, 8, true, "N. jets", "njetsMed", false, false, false, 0.2);
664 +  make_OFSF_plot("pfJetGoodPt[0]/pfJetGoodPt[1]", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 20, 1, 10, true, "pt_{j}^{1}/pt_{j}^{2}", "jpt1pt2Low", false, false, false, 0.2);
665 +  make_OFSF_plot("pfJetGoodPt[0]/pfJetGoodPt[1]", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 20, 1, 10, true, "pt_{j}^{1}/pt_{j}^{2}", "jpt1pt2Med", false, false, false, 0.2);
666 +  make_OFSF_plot("TMath::Abs(pfJetDphiMet[0])", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "|#Delta#phi(jet1,MET)|", "dphijetmetLow", false, false, false, 0.0);
667 +  make_OFSF_plot("TMath::Abs(pfJetDphiMet[0])", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "|#Delta#phi(jet1,MET)|", "dphijetmetMed", false, false, false, 0.0);
668 +  make_OFSF_plot("TMath::Abs(dphi)", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "|#Delta#phi(l1,l2)|", "dphiLow", false, false, false, 0.2);
669 +  make_OFSF_plot("TMath::Abs(dphi)", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "|#Delta#phi(l1,l2)|", "dphiMed", false, false, false, 0.2);
670 +  make_OFSF_plot("TMath::Abs(dphiMet1)", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "|#Delta#phi(l1,MET)|", "dphiMet1Low", false, false, false, 0.2);
671 +  make_OFSF_plot("TMath::Abs(dphiMet1)", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "|#Delta#phi(l1,MET)|", "dphiMet1Med", false, false, false, 0.2);
672 +  make_OFSF_plot("TMath::Abs(dphiMet2)", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "|#Delta#phi(l2,MET)|", "dphiMet2Low", false, false, false, 0.2);
673 +  make_OFSF_plot("TMath::Abs(dphiMet2)", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "|#Delta#phi(l2,MET)|", "dphiMet2Med", false, false, false, 0.2);
674 +  make_OFSF_plot("TMath::Min(TMath::Abs(dphiMet1), TMath::Abs(dphiMet2))", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "Min(|#Delta#phi(l,MET)|)", "dphilcLow", false, false, false, 0.2);
675 +  make_OFSF_plot("TMath::Min(TMath::Abs(dphiMet1), TMath::Abs(dphiMet2))", "mll>40&&mll<70&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "Min(|#Delta#phi(l,MET)|)", "dphilcMed", false, false, false, 0.2);
676 +  make_OFSF_plot("TMath::Min(TMath::Abs(pfJetDphiMet[0]), TMath::Min(TMath::Abs(pfJetDphiMet[1]), TMath::Abs(pfJetDphiMet[2])))", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "Min(|#Delta#phi(jet,MET)|)", "dphijcLow", false, false, false, 0.2);
677 +  make_OFSF_plot("TMath::Min(TMath::Abs(pfJetDphiMet[0]), TMath::Min(TMath::Abs(pfJetDphiMet[1]), TMath::Abs(pfJetDphiMet[2])))", "mll>20&&mll<40&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "Min(|#Delta#phi(jet,MET)|)", "dphijcMed", false, false, false, 0.2);
678 +  make_OFSF_plot("TMath::Min((TMath::Pi()-TMath::Abs(dphiMet1)), (TMath::Pi() - TMath::Abs(dphiMet2)))", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "Min(#Pi - |#Delta#phi(l,MET)|)", "dphilcoLow", false, false, false, 0.2);
679 +  make_OFSF_plot("TMath::Min((TMath::Pi()-TMath::Abs(dphiMet1)), (TMath::Pi() - TMath::Abs(dphiMet2)))", "mll>20&&mll<40&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "Min(#Pi - |#Delta#phi(l,MET)|)", "dphilcoMed", false, false, false, 0.2);
680 +  make_OFSF_plot("TMath::Min((TMath::Pi()-TMath::Abs(pfJetDphiMet[0])), TMath::Min( (TMath::Pi()-TMath::Abs(pfJetDphiMet[1])), (TMath::Pi() - TMath::Abs(pfJetDphiMet[2]))))", "mll>20&&mll<40&&met[4]>100", "20 GeV < mll < 40 GeV", 16, 0, 3.2, false, "Min(#Pi - |#Delta#phi(jet,MET)|)", "dphijcoLow", false, false, false, 0.2);
681 +  make_OFSF_plot("TMath::Min((TMath::Pi()-TMath::Abs(pfJetDphiMet[0])), TMath::Min( (TMath::Pi()-TMath::Abs(pfJetDphiMet[1])), (TMath::Pi() - TMath::Abs(pfJetDphiMet[2]))))", "mll>20&&mll<40&&met[4]>100", "40 GeV < mll < 70 GeV", 16, 0, 3.2, false, "Min(#Pi - |#Delta#phi(jet,MET)|)", "dphijcoMed", false, false, false, 0.2);
682 +
683 +
684 +
685    make_kin_plot("met[4]","",70,0,350,dolog,"MET [GeV]","met",doPF,true);
686  
687    make_kin_plot("mll","",(int)((mll_hi-mll_low)/5),mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll",doPF,true);
# Line 3486 | Line 3592 | void do_mlls_plot(string mcjzb) {
3592    }
3593   }
3594  
3595 < void met_vs_jzb_plots() {
3595 > void met_vs_jzb_plots(string datajzb, string mcjzb) {
3596    
3597    TCanvas *canmetjzb = new TCanvas("canmet","MET vs JZB canvas");
3598    canmetjzb->SetRightMargin(0.16);
# Line 3500 | Line 3606 | void met_vs_jzb_plots() {
3606      vector<int> selsamples = allsamples.FindSample(findme[ifind]);
3607      TH2F *metvsjzb = new TH2F("metvsjzb","metvsjzb",200,0,100,400,-100,100);
3608      for(int isel=0;isel<(int)selsamples.size();isel++) {
3609 <      cout << "Producing MET:JZB plot ... working on sample: " << allsamples.collection[selsamples[isel]].filename << endl;
3610 <      allsamples.collection[selsamples[isel]].events->Draw("jzb[1]:met[4]>>+metvsjzb",cutmass&&cutOSSF);
3609 >      dout << "Producing MET:JZB plot ... working on sample: " << allsamples.collection[selsamples[isel]].filename << endl;
3610 >      allsamples.collection[selsamples[isel]].events->Draw("jzb[1]:met[4]>>+metvsjzb",cutmass&&cutOSSF&&cutnJets);
3611      }
3612      metvsjzb->Scale(allsamples.collection[selsamples[0]].weight);
3613      metvsjzb->SetStats(0);
# Line 3515 | Line 3621 | void met_vs_jzb_plots() {
3621      title->Draw();
3622      CompleteSave(canmetjzb,(string)"METvsJZBplots/"+findme[ifind]);
3623    }
3624 +  
3625 +  
3626 +  dout << "About to produce MET plot for DY split up by JZB" << endl;
3627 +  
3628 +  int nbins=14;
3629 +  float low=0;
3630 +  float high=140;
3631 +  
3632 +  stringstream sLEFT;
3633 +  sLEFT << "((" << mcjzb << ")<0)";
3634 +  TCut LEFT(sLEFT.str().c_str());
3635 +  stringstream sRIGHT;
3636 +  sRIGHT << "((" << mcjzb << ")>0)";
3637 +  TCut RIGHT(sRIGHT.str().c_str());
3638 +  
3639 +  TH1F *metleft   = allsamples.Draw("metleft","met[4]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&LEFT,mc, luminosity, allsamples.FindSample("DYJets"));
3640 +  TH1F *metleftO  = allsamples.Draw("metleftO","met[4]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSOF&&cutnJets&&LEFT,mc, luminosity, allsamples.FindSample("DYJets"));
3641 +  TH1F *metright  = allsamples.Draw("metright","met[4]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&RIGHT,mc, luminosity, allsamples.FindSample("DYJets"));
3642 +  TH1F *metrightO = allsamples.Draw("metrightO","met[4]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSOF&&cutnJets&&RIGHT,mc, luminosity, allsamples.FindSample("DYJets"));
3643 +  
3644 +  metleft->Add(metleftO,-1);
3645 +  metright->Add(metrightO,-1);
3646 +  
3647 +  metleft->SetLineColor(kRed);
3648 +  metright->SetLineColor(kBlack);
3649 +  TPad *metpad = new TPad("metpad","metpad",0,0,1,1);
3650 +  metpad->cd();
3651 +  metpad->SetLogy(1);
3652 +  metleft->Draw("histo");
3653 +  metright->Draw("same");
3654 +  TLegend *lg = make_legend();
3655 +  lg->SetX1(0.5);
3656 +  lg->AddEntry(metright,"JZB>0 (OSOF corrected)","P");
3657 +  lg->AddEntry(metleft,"JZB<0 (OSOF corrected)","L");
3658 +  lg->Draw();
3659 +  save_with_ratio(metright,metleft,metpad->cd(),"METvsJZBplots/ComparingLeftToRightinMETspectrum");
3660 +  TPad *metpad2 = new TPad("metpad2","metpad2",0,0,1,1);
3661 +  
3662 +  TH1F *metlefta   = allsamples.Draw("metlefta","met[2]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&LEFT,mc, luminosity, allsamples.FindSample("DYJets"));
3663 +  TH1F *metleftOa  = allsamples.Draw("metleftOa","met[2]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSOF&&cutnJets&&LEFT,mc, luminosity, allsamples.FindSample("DYJets"));
3664 +  TH1F *metrighta  = allsamples.Draw("metrighta","met[2]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&RIGHT,mc, luminosity, allsamples.FindSample("DYJets"));
3665 +  TH1F *metrightOa = allsamples.Draw("metrightOa","met[2]",nbins,low,high, "MET [GeV]", "events", cutmass&&cutOSOF&&cutnJets&&RIGHT,mc, luminosity, allsamples.FindSample("DYJets"));
3666 +  
3667 +  TH1F *Bpred =  (TH1F*)metlefta->Clone("Bpred");
3668 +  Bpred->Add(metleftOa,-1);
3669 +  Bpred->Add(metrightOa);
3670 +  TH1F *obs = (TH1F*)metrighta->Clone("obs");
3671 +  
3672 +  metlefta->Add(metleftOa,-1);
3673 +  metrighta->Add(metrightOa,-1);
3674 +  
3675 +  metlefta->SetLineColor(kRed);
3676 +  metpad2->cd();
3677 +  metlefta->Draw("histo");
3678 +  metrighta->Draw("same");
3679 +  lg->Draw();
3680 +  save_with_ratio(metrighta,metlefta,metpad2->cd(),"METvsJZBplots/ComparingLeftToRightinMET_type1_spectrum");
3681 +  
3682 +  TPad *metpad3 = new TPad("metpad3","metpad3",0,0,1,1);
3683 +  metpad3->cd();
3684 +  Bpred->SetLineColor(kRed);
3685 +  Bpred->Draw("histo");
3686 +  obs->SetLineColor(kBlack);
3687 +  obs->Draw("same");
3688 +  TLegend *lg2 = make_legend();
3689 +  lg2->SetX1(0.5);
3690 +  lg2->AddEntry(obs,"observed","P");
3691 +  lg2->AddEntry(Bpred,"predicted","L");
3692 +  lg2->Draw();
3693 +  
3694 +  save_with_ratio(obs,Bpred,metpad3->cd(),"METvsJZBplots/ComparingPredObsinMET_type1_spectrum");
3695 +  delete lg;
3696 +  delete canmetjzb;
3697 +  delete metleft;
3698 +  delete metleftO;
3699 +  delete metright;
3700 +  delete metrightO;
3701   }
3702      
3703  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines