Ejemplo n.º 1
0
void drawEFF()
{   
   std::string wp = "LOOSE";
   std::string j1 = "";
   std::string flav = "beauty";
   std::string typ = "2011FINALCSV_NEW";
//   std::string typ = "2011FINALCSV";
   std::string eff = "results/SF_"+j1+wp+"_"+typ+"_"+flav+".root";

   std::string off = "results/SF_OFFICIAL2011_"+wp+"_CSV.root";
   
   gROOT->SetBatch();
   gROOT->SetStyle("Plain");
   
   gStyle->SetOptStat(0);

   gROOT->ProcessLine(".x def.C");
   gROOT->ProcessLine(".x common.C");

   TCanvas *c1 = new TCanvas("c1","c1",0,0,600,500);
   c1->SetGrid(1);

   std::string csv = "#bf{CSVL}";
   if( wp == "MEDIUM" ) csv = "#bf{CSVM}";
   if( wp == "TIGHT" ) csv = "#bf{CSVT}";

   TFile *feff = TFile::Open(eff.c_str());
   
   TH1F *hEFFMC, *hEFFDATA;
   TPolyLine *hEFFMCSYS, *hEFFDATASYS;
   
   hEFFMC = (TH1F*)feff->Get("hEFFMC");
   hEFFMCSYS = (TPolyLine*)feff->Get("hEFFMCSYS");
   
   hEFFDATA = (TH1F*)feff->Get("hEFFDATA");
   hEFFDATASYS = (TPolyLine*)feff->Get("hEFFDATASYS");

   TFile *foff = TFile::Open(off.c_str());
   
   TH1F *hEFFMC_OFF, *hEFFDATA_OFF;
   TPolyLine *hEFFMCSYS_OFF, *hEFFDATASYS_OFF;
   
   hEFFMC_OFF = (TH1F*)foff->Get("OFF_EFFMC");
   hEFFMCSYS_OFF = (TPolyLine*)foff->Get("OFF_EFFSYSMC");
   
   hEFFDATA_OFF = (TH1F*)foff->Get("OFF_EFFDATA");
   hEFFDATASYS_OFF = (TPolyLine*)foff->Get("OFF_EFFSYSDATA");   

   if( flav == "beauty" )
     hEFFMC->GetYaxis()->SetTitle("b-tagging efficiency");
   else
     hEFFMC->GetYaxis()->SetTitle("c-tagging efficiency");
   hEFFMC->SetMarkerSize(0.8);
   hEFFMC->GetXaxis()->SetTitle("P_{T} [TeV]");

   if( flav == "beauty" )
     hEFFDATA->GetYaxis()->SetTitle("b-tagging efficiency");
   else
     hEFFDATA->GetYaxis()->SetTitle("c-tagging efficiency");
   hEFFDATA->SetMarkerSize(0.8);
   
   hEFFMC->Draw("e1p");

   hEFFMC->GetXaxis()->SetMoreLogLabels();
   
   if( flav == "beauty" )
     {	
	if( wp == "LOOSE" ) hEFFMC->GetYaxis()->SetRangeUser(0.5,1.0);
	if( wp == "MEDIUM" ) hEFFMC->GetYaxis()->SetRangeUser(0.3,0.9);
	if( wp == "TIGHT" ) hEFFMC->GetYaxis()->SetRangeUser(0.1,0.7);
     }
   else
     {
	if( wp == "LOOSE" ) hEFFMC->GetYaxis()->SetRangeUser(0.,0.8);
	if( wp == "MEDIUM" ) hEFFMC->GetYaxis()->SetRangeUser(0.,0.6);
	if( wp == "TIGHT" ) hEFFMC->GetYaxis()->SetRangeUser(0.,0.15);
     }  
   hEFFMCSYS->Draw("fSAME");
   hEFFMC->Draw("e1p same");

   hEFFMC_OFF->SetMarkerSize(0.8);
   hEFFMC_OFF->SetMarkerStyle(23);
   hEFFMC_OFF->SetMarkerColor(kRed);
   hEFFMC_OFF->SetLineColor(kRed);
   hEFFMC_OFF->Draw("p same");
   
   hEFFMCSYS_OFF->Draw("lSAME");
   
   TLegend *leg;
   leg = new TLegend(0.35,0.45,0.70,0.20);
   leg->SetFillColor(253);
   leg->SetBorderSize(0);
  
   TLatex *legl = new TLatex();
   legl->SetNDC();
   legl->SetTextAlign(22);
   legl->SetTextFont(63);
   legl->SetTextSizePixels(30);
   legl->DrawLatex(0.55,0.85,csv.c_str());

   TLatex *legl2 = new TLatex();
   legl2->SetNDC();
   legl2->SetTextAlign(22);
   legl2->SetTextFont(63);
   legl2->SetTextSizePixels(30);
   legl2->DrawLatex(0.80,0.85,"MC");

   leg->AddEntry(hEFFMC,"Efficiency","p");
   leg->AddEntry(hEFFMC,"stat","l");
   leg->AddEntry(hEFFMCSYS,"stat #oplus syst","f");
   
   leg->AddEntry(hEFFMC_OFF,"Efficiency (LT BTV-12-001)","p");                                                        
   leg->AddEntry(hEFFMCSYS_OFF,"stat #oplus syst (LT BTV-12-001)","f");

   leg->Draw();

   c1->SetLogx(1);
   c1->Print("pics/EFFMC.eps");
   c1->Clear();   

   hEFFDATA->Draw("e1p");
   
   hEFFDATA->GetXaxis()->SetMoreLogLabels();
   
   if( flav == "beauty" )
     {	
	if( wp == "LOOSE" ) hEFFDATA->GetYaxis()->SetRangeUser(0.5,1.0);
	if( wp == "MEDIUM" ) hEFFDATA->GetYaxis()->SetRangeUser(0.3,0.9);
	if( wp == "TIGHT" ) hEFFDATA->GetYaxis()->SetRangeUser(0.1,0.7);
     }
   else
     {
	if( wp == "LOOSE" ) hEFFDATA->GetYaxis()->SetRangeUser(0.,0.8);
	if( wp == "MEDIUM" ) hEFFDATA->GetYaxis()->SetRangeUser(0.,0.6);
	if( wp == "TIGHT" ) hEFFDATA->GetYaxis()->SetRangeUser(0.,0.15);
     }   
   hEFFDATASYS->Draw("fSAME");
   hEFFDATA->Draw("e1p same");

   hEFFDATA_OFF->SetMarkerSize(0.8);
   hEFFDATA_OFF->SetMarkerStyle(23);
   hEFFDATA_OFF->SetMarkerColor(kRed);
   hEFFDATA_OFF->SetLineColor(kRed);
   hEFFDATA_OFF->Draw("p same");
   
   hEFFDATASYS_OFF->Draw("lSAME");
   
   TLegend *legD;
   legD = new TLegend(0.35,0.45,0.70,0.20);
   legD->SetFillColor(253);
   legD->SetBorderSize(0);
  
   TLatex *legd = new TLatex();
   legd->SetNDC();
   legd->SetTextAlign(22);
   legd->SetTextFont(63);
   legd->SetTextSizePixels(30);
   legd->DrawLatex(0.55,0.85,csv.c_str());

   TLatex *legd2 = new TLatex();
   legd2->SetNDC();
   legd2->SetTextAlign(22);
   legd2->SetTextFont(63);
   legd2->SetTextSizePixels(30);
   legd2->DrawLatex(0.80,0.85,"Data");
   
   legD->AddEntry(hEFFDATA,"Efficiency","p");
   legD->AddEntry(hEFFDATA,"stat","l");
   legD->AddEntry(hEFFDATASYS,"stat #oplus syst","f");

   legD->AddEntry(hEFFDATA_OFF,"Efficiency (LT BTV-12-001)","p");                                                        
   legD->AddEntry(hEFFDATASYS_OFF,"stat #oplus syst (LT BTV-12-001)","f");
   
   legD->Draw();

   c1->SetLogx(1);
   c1->Print("pics/EFFDATA.eps");
   c1->Clear();   
   
   gApplication->Terminate();
}
Ejemplo n.º 2
0
void PlotTrkPt()
{
  gROOT->LoadMacro("$LOCAL/include/TUntilsOpHisto.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsAliFigs.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsPlotStd.h"); SetStyle();
//=============================================================================

  TFile *file = TFile::Open("data/AnalysisResults_vac_JetR05_skTR01.root", "READ");
  TH2D *hTrkPtEtaVac = (TH2D*)file->Get("hTrkPtEta"); hTrkPtEtaVac->SetName("hTrkPtEtaVac"); hTrkPtEtaVac->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/AnalysisResults_med_JetR05_skTR01.root", "READ");
  TH2D *hTrkPtEtaMed = (TH2D*)file->Get("hTrkPtEta"); hTrkPtEtaMed->SetName("hTrkPtEtaMed"); hTrkPtEtaMed->SetDirectory(0);
  file->Close();
//=============================================================================

  TH1D *hTrkPtVac = hTrkPtEtaVac->ProjectionX("hTrkPtVac");
  TH1D *hTrkPtMed = hTrkPtEtaMed->ProjectionX("hTrkPtMed");

  hTrkPtVac->Rebin(10); hTrkPtVac->Scale(1./5.);
  hTrkPtMed->Rebin(10); hTrkPtMed->Scale(1./5.);
//=============================================================================

  TH1F    *hfm = 0;
  TCanvas *can = 0;
  TLegend *leg = 0;
  TLatex  *tex = 0;
  TLine  *line = 0;

  const Float_t dflx = 0., dfux = 300.;
  const Float_t dfly = 8e-13, dfuy = 8e2;

  const Float_t dlsx = 0.05, dlsy = 0.05;
  const Float_t dtsx = 0.06, dtsy = 0.06;
  const Float_t dtox = 1.10, dtoy = 1.00;

  const TString stnx = "#it{p}_{T} (GeV/#it{c})";
  const TString stny = "d#sigma/d#it{p}_{T} (mb/GeV/#it{c})";

  TH1D *hSE = new TH1D("hSE", "", 10., 0., 10.);
  hSE->SetLineWidth(2);
  hSE->SetLineColor(wcl[0]);
  hSE->SetMarkerStyle(wmk[0]);
  hSE->SetMarkerColor(wcl[0]);

  TH1D *hME = new TH1D("hME", "", 10., 0., 10.);
  hME->SetLineWidth(2);
  hME->SetLineColor(wcl[0]);
  hME->SetMarkerStyle(wmk[2]);
  hME->SetMarkerColor(wcl[0]);
//=============================================================================

  can = MakeCanvas("TrkPt"); can->SetGridx(); can->SetGridy(); can->SetLogy();
  hfm = can->DrawFrame(dflx, dfly, dfux, dfuy); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hTrkPtVac, wcl[3], wmk[0], "SAME");
  DrawHisto(hTrkPtMed, wcl[1], wmk[0], "SAME");

  leg = new TLegend(0.62, 0.72, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(hTrkPtVac, "Vacuum", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hTrkPtMed, "Medium", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, 2.76 TeV, |#eta|<2.6");
  CanvasEnd(can);
//=============================================================================

  const Double_t dBins[] = { 0., 5., 10., 20., 30., 50., 80., 120., 160., 200., 250., 300., 400., 500. };
  const Int_t nBins = sizeof(dBins) / sizeof(Double_t) - 1;

  TH1D *hTrkPtVacRB = hTrkPtVac->Rebin(nBins, "hTrkPtVacRB", dBins);
  TH1D *hTrkPtMedRB = hTrkPtMed->Rebin(nBins, "hTrkPtMedRB", dBins); hTrkPtMedRB->Divide(hTrkPtVacRB);

  can = MakeCanvas("TrkPtRAA"); can->SetGridx(); can->SetGridy();
  hfm = can->DrawFrame(dflx, 0., dfux, 2.); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy, stnx, "#it{R}_{AA}");
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hTrkPtMedRB, wcl[0], wmk[0], "SAME");

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, 2.76 TeV, |#eta|<2.6");
  CanvasEnd(can);
//=============================================================================

  return;
}
Ejemplo n.º 3
0
void PlotJetRAA()
{
  gROOT->LoadMacro("$LOCAL/include/TUntilsOpHisto.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsAliFigs.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsPlotStd.h"); SetStyle();
//=============================================================================

  TFile *file = TFile::Open("data/incl/AnalysisOutputs_jet_py8_JetR05_SjeR01.root", "READ");
  TH1D *h5py8 = (TH1D*)file->Get("hJet"); h5py8->SetName("h5py8"); h5py8->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_py6_JetR05_SjeR01.root", "READ");
  TH1D *h5py6 = (TH1D*)file->Get("hJet"); h5py6->SetName("h5py6"); h5py6->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_qpy_JetR05_SjeR01.root", "READ");
  TH1D *h5qpy = (TH1D*)file->Get("hJet"); h5qpy->SetName("h5qpy"); h5qpy->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_vac_JetR05_SjeR01.root", "READ");
  TH1D *h5vac = (TH1D*)file->Get("hJet"); h5vac->SetName("h5vac"); h5vac->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_med_JetR05_SjeR01.root", "READ");
  TH1D *h5med = (TH1D*)file->Get("hJet"); h5med->SetName("h5med"); h5med->SetDirectory(0);
  file->Close();


  file = TFile::Open("data/incl/AnalysisOutputs_jet_py8_JetR04_SjeR01.root", "READ");
  TH1D *h4py8 = (TH1D*)file->Get("hJet"); h4py8->SetName("h4py8"); h4py8->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_py6_JetR04_SjeR01.root", "READ");
  TH1D *h4py6 = (TH1D*)file->Get("hJet"); h4py6->SetName("h4py6"); h4py6->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_qpy_JetR04_SjeR01.root", "READ");
  TH1D *h4qpy = (TH1D*)file->Get("hJet"); h4qpy->SetName("h4qpy"); h4qpy->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_vac_JetR04_SjeR01.root", "READ");
  TH1D *h4vac = (TH1D*)file->Get("hJet"); h4vac->SetName("h4vac"); h4vac->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/incl/AnalysisOutputs_jet_med_JetR04_SjeR01.root", "READ");
  TH1D *h4med = (TH1D*)file->Get("hJet"); h4med->SetName("h4med"); h4med->SetDirectory(0);
  file->Close();
//=============================================================================

  TH1F    *hfm = 0;
  TCanvas *can = 0;
  TLegend *leg = 0;
  TLatex  *tex = 0;
  TLine  *line = 0;

  const Float_t dflx = -40., dfux = 200.;
  const Float_t dfly = 8e-10, dfuy = 8e3;

  const Float_t dlsx = 0.05, dlsy = 0.05;
  const Float_t dtsx = 0.06, dtsy = 0.06;
  const Float_t dtox = 1.10, dtoy = 1.00;

  const TString stnx = "#it{p}_{T,jet}^{ch} (GeV/#it{c})";
  const TString stny = "d#sigma/d#it{p}_{T} (mb/GetV/#it{c})";

  TH1D *hSE = new TH1D("hSE", "", 10., 0., 10.);
  hSE->SetLineWidth(2);
  hSE->SetLineColor(wcl[0]);
  hSE->SetMarkerStyle(wmk[0]);
  hSE->SetMarkerColor(wcl[0]);

  TH1D *hME = new TH1D("hME", "", 10., 0., 10.);
  hME->SetLineWidth(2);
  hME->SetLineColor(wcl[0]);
  hME->SetMarkerStyle(wmk[2]);
  hME->SetMarkerColor(wcl[0]);
//=============================================================================

  can = MakeCanvas("Jet5"); can->SetGridx(); can->SetGridy(); can->SetLogy();
  hfm = can->DrawFrame(0., 8e-13, 500., 8e3); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy,
                                                        "#it{p}_{T,jet} (GeV/#it{c})",
                                                        "d#sigma/d#it{p}_{T} (mb/GeV/#it{c})");
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(h5py8, wcl[3], wmk[0], "SAME");
  DrawHisto(h5qpy, wcl[1], wmk[0], "SAME");
  DrawHisto(h5med, wcl[5], wmk[0], "SAME");

  leg = new TLegend(0.62, 0.64, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(h5py8, "PYTHIA 8", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h5qpy, "Q-PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h5med, "JEWEL+PYTHIA", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, jet anti-#it{k}_{T}, #it{R}=0.5, |#eta_{jet}|<1");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("Jet4"); can->SetGridx(); can->SetGridy(); can->SetLogy();
  hfm = can->DrawFrame(0., 8e-13, 500., 8e3); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy,
                                                        "#it{p}_{T,jet} (GeV/#it{c})",
                                                        "d#sigma/d#it{p}_{T} (mb/GeV/#it{c})");
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(h4py8, wcl[3], wmk[0], "SAME");
  DrawHisto(h4qpy, wcl[1], wmk[0], "SAME");
  DrawHisto(h4med, wcl[5], wmk[0], "SAME");

  leg = new TLegend(0.62, 0.64, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(h4py8, "PYTHIA 8", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h4qpy, "Q-PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h4med, "JEWEL+PYTHIA", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, jet anti-#it{k}_{T}, #it{R}=0.4, |#eta_{jet}|<1");
  CanvasEnd(can);
//=============================================================================

  const Double_t dBin[] = { 0., 10., 20., 30., 40., 50., 60., 80., 100., 120., 150., 200., 250., 300., 350., 400., 500. };
  const Int_t nBin = sizeof(dBin) / sizeof(Double_t) -1;

  TH1D *h5py8rb = h5py8->Rebin(nBin, "h5py8rb", dBin); TH1D *h4py8rb = h4py8->Rebin(nBin, "h4py8rb", dBin);
  TH1D *h5py6rb = h5py6->Rebin(nBin, "h5py6rb", dBin); TH1D *h4py6rb = h4py6->Rebin(nBin, "h4py6rb", dBin);
  TH1D *h5qpyrb = h5qpy->Rebin(nBin, "h5qpyrb", dBin); TH1D *h4qpyrb = h4qpy->Rebin(nBin, "h4qpyrb", dBin);
  TH1D *h5vacrb = h5vac->Rebin(nBin, "h5vacrb", dBin); TH1D *h4vacrb = h4vac->Rebin(nBin, "h4vacrb", dBin);
  TH1D *h5medrb = h5med->Rebin(nBin, "h5medrb", dBin); TH1D *h4medrb = h4med->Rebin(nBin, "h4medrb", dBin);
//=============================================================================

  TH1D *hRpy8 = (TH1D*)h4py8rb->Clone("hRpy8"); hRpy8->Divide(h5py8rb);
  TH1D *hRqpy = (TH1D*)h4qpyrb->Clone("hRqpy"); hRqpy->Divide(h5qpyrb);
  TH1D *hRmed = (TH1D*)h4medrb->Clone("hRmed"); hRmed->Divide(h5medrb);
//=============================================================================

  can = MakeCanvas("JetR"); can->SetGridx(); can->SetGridy();
  hfm = can->DrawFrame(0., 0.4, 500., 1.5); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy,
                                                      "#it{p}_{T,jet} (GeV/#it{c})",
                                                      "Ratio: #it{R}=0.4 / #it{R}=0.5");
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hRpy8, wcl[3], wmk[0], "SAME");
  DrawHisto(hRqpy, wcl[1], wmk[0], "SAME");
  DrawHisto(hRmed, wcl[5], wmk[0], "SAME");

  leg = new TLegend(0.62, 0.64, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(hRpy8, "PYTHIA 8", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hRqpy, "Q-PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hRmed, "JEWEL+PYTHIA", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, Jets anti-#it{k}_{T}, |#eta_{jet}|<1");
  CanvasEnd(can);
//=============================================================================

  TH1D *h5qpyRAA = (TH1D*)h5qpyrb->Clone("h5qpyRAA"); h5qpyRAA->Divide(h5py6rb);
  TH1D *h5medRAA = (TH1D*)h5medrb->Clone("h5medRAA"); h5medRAA->Divide(h5vacrb);

  TH1D *h4qpyRAA = (TH1D*)h4qpyrb->Clone("h4qpyRAA"); h4qpyRAA->Divide(h4py6rb);
  TH1D *h4medRAA = (TH1D*)h4medrb->Clone("h4medRAA"); h4medRAA->Divide(h4vacrb);

  can = MakeCanvas("JetRAA"); can->SetGridx(); can->SetGridy();
  hfm = can->DrawFrame(0., 0., 500., 1.2); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy,
                                                        "#it{p}_{T,jet} (GeV/#it{c})",
                                                        "#it{R}_{AA}");
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(h5qpyRAA, wcl[1], wmk[0], "SAME");
  DrawHisto(h5medRAA, wcl[5], wmk[0], "SAME");

  DrawHisto(h4qpyRAA, wcl[1], wmk[2], "SAME");
  DrawHisto(h4medRAA, wcl[5], wmk[2], "SAME");

  leg = new TLegend(0.48, 0.56, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(h5qpyRAA, "#it{R}=0.5, Q-PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h4qpyRAA, "#it{R}=0.4, Q-PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h5medRAA, "#it{R}=0.5, JEWEL+PYTHIA", "LP")->SetTextSizePixels(24);
  leg->AddEntry(h4medRAA, "#it{R}=0.4, JEWEL+PYTHIA", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, Jet anti-#it{k}_{T}, |#eta_{jet}|<1");
  CanvasEnd(can);
//=============================================================================

  return;
}
Ejemplo n.º 4
0
void combine()
{
   gROOT->SetBatch(1);

   SetPlotStyle();

   std::string tag = "CSVM";
   std::string tagName = "CSVv2M";
//   std::string tag = "CMVAT";
//   std::string tagName = "cMVAv2T";

//   const int nPT = 15;
/*   const int nPT = 14;
   std::string pt[nPT] = 
     {
	"pt20t30",
	"pt30t40",
	"pt40t50",
	"pt50t60",
	"pt60t70",
	"pt70t80",
	"pt80t100",
	"pt100t120",
	"pt120t160",
	"pt160t210",
	"pt210t260",
	"pt260t320",
	"pt320t400",
	"pt400t500"
//	"pt500t670"
     };*/
   
/*   const int nPT = 7;
   std::string pt[nPT] =
     {
	"pt30t50",
	"pt50t70",
	"pt70t100",
	"pt100t140",
	"pt140t200",
	"pt200t300",
	"pt300t670"
     };*/

/*   const int nPT = 5;
   std::string pt[nPT] =
     {
	"pt200t220",
	"pt220t250",
	"pt250t300",
	"pt300t400",
	"pt400t650"
     };*/

   const int nPT = 5;
   std::string pt[nPT] =
     {
	"pt30t80",
	"pt80t140",
	"pt140t180",
	"pt180t240",
	"pt240t420"
     };

/*   int ptb[nPT+1] =
     {
	30,50,70,100,140,200,300,670
     };*/

/*   int ptb[nPT+1] =
     {
	200,220,250,300,400,650
     };*/

   int ptb[nPT+1] =
     {
	30,80,140,180,240,420
     };
   
   float xbins[nPT];
   for(int j=0;j<=nPT;j++)
     {
	xbins[j] = ptb[j]/1000.;
     }
   
   TH1F *h_SF = new TH1F("h_SF","h_SF",nPT,xbins);
   TH1F *h_SF_TOTAL_UP = new TH1F("h_SF_TOTAL_UP","h_SF_TOTAL_UP",nPT,xbins);
   TH1F *h_SF_TOTAL_DOWN = new TH1F("h_SF_TOTAL_DOWN","h_SF_TOTAL_DOWN",nPT,xbins);
   
   TH1F *h_frb = new TH1F("h_frb","h_frb",nPT,xbins);
   TH1F *h_frb_TOTAL_UP = new TH1F("h_frb_TOTAL_UP","h_frb_TOTAL_UP",nPT,xbins);
   TH1F *h_frb_TOTAL_DOWN = new TH1F("h_frb_TOTAL_DOWN","h_frb_TOTAL_DOWN",nPT,xbins);
   TH1F *h_frc = new TH1F("h_frc","h_frc",nPT,xbins);
   TH1F *h_frc_TOTAL_UP = new TH1F("h_frc_TOTAL_UP","h_frc_TOTAL_UP",nPT,xbins);
   TH1F *h_frc_TOTAL_DOWN = new TH1F("h_frc_TOTAL_DOWN","h_frc_TOTAL_DOWN",nPT,xbins);
   TH1F *h_frl = new TH1F("h_frl","h_frl",nPT,xbins);
   TH1F *h_frl_TOTAL_UP = new TH1F("h_frl_TOTAL_UP","h_frl_TOTAL_UP",nPT,xbins);
   TH1F *h_frl_TOTAL_DOWN = new TH1F("h_frl_TOTAL_DOWN","h_frl_TOTAL_DOWN",nPT,xbins);
   
   TH1F *h_frb_tag = new TH1F("h_frb_tag","h_frb_tag",nPT,xbins);
   TH1F *h_frb_tag_TOTAL_UP = new TH1F("h_frb_tag_TOTAL_UP","h_frb_tag_TOTAL_UP",nPT,xbins);
   TH1F *h_frb_tag_TOTAL_DOWN = new TH1F("h_frb_tag_TOTAL_DOWN","h_frb_tag_TOTAL_DOWN",nPT,xbins);
   TH1F *h_frc_tag = new TH1F("h_frc_tag","h_frc_tag",nPT,xbins);
   TH1F *h_frc_tag_TOTAL_UP = new TH1F("h_frc_tag_TOTAL_UP","h_frc_tag_TOTAL_UP",nPT,xbins);
   TH1F *h_frc_tag_TOTAL_DOWN = new TH1F("h_frc_tag_TOTAL_DOWN","h_frc_tag_TOTAL_DOWN",nPT,xbins);
   TH1F *h_frl_tag = new TH1F("h_frl_tag","h_frl_tag",nPT,xbins);
   TH1F *h_frl_tag_TOTAL_UP = new TH1F("h_frl_tag_TOTAL_UP","h_frl_tag_TOTAL_UP",nPT,xbins);
   TH1F *h_frl_tag_TOTAL_DOWN = new TH1F("h_frl_tag_TOTAL_DOWN","h_frl_tag_TOTAL_DOWN",nPT,xbins);
   
   std::string head = "CSV;OperatingPoint,measurementType,sysType,jetFlavor,etaMin,etaMax,ptMin,ptMax,discrMin,discrMax,formula";
   std::string fname = "results/CSV_13TEV_"+SFver+"_"+tagName+"_LT.csv";
   std::ofstream sfComb(fname.c_str());
   sfComb << head << std::endl;

   std::vector<std::vector<float> > Comb_sigma_syst;
   std::vector<std::vector<std::string> > Comb_sigma_syst_name;
   std::vector<float> Comb_sf;
   std::vector<int> Comb_op;
   std::vector<std::string> Comb_type;
   std::vector<int> Comb_flav;
   std::vector<float> Comb_etaMin;
   std::vector<float> Comb_etaMax;
   std::vector<float> Comb_discMin;
   std::vector<float> Comb_discMax;
   std::vector<int> Comb_ptMin;
   std::vector<int> Comb_ptMax;
   
   for(int ipt=0;ipt<nPT;ipt++)
     {
	if( tag == "CSVL" || tag == "CMVAL" ) Comb_op.push_back(0);
	else if( tag == "CSVM" || tag == "CMVAM" ) Comb_op.push_back(1);
	else if( tag == "CSVT" || tag == "CMVAT" ) Comb_op.push_back(2);
	
	Comb_type.push_back("lt");
	Comb_flav.push_back(0);
	Comb_etaMin.push_back(0.0);
	Comb_etaMax.push_back(2.4);
	Comb_discMin.push_back(0.0);
	Comb_discMax.push_back(1.0);
	
	std::vector<int> run;
	std::vector<float> sf;
	std::vector<float> frb;
	std::vector<float> frbTag;
	std::vector<float> frc;
	std::vector<float> frcTag;
	std::vector<float> frl;
	std::vector<float> frlTag;
	
	int idxNom = -666;

	for(int is=0;is<=2;is++) // FIXME !!!
	  {
	     std::string prefix;
	     if( is == 0 ) prefix = "results_"+tag+"_MJBOOSTS1_SUB/";
	     else if( is == 1 ) prefix = "results_"+tag+"_MJBOOSTS2_SUB/";
//	     if( is == 0 ) prefix = "results/";
//	     if( is == 0 ) prefix = "results_"+tag+"_MJ/";
//	     else if( is == 1 ) prefix = "results_"+tag+"_MJAWAY/";
//	     else if( is == 2 ) prefix = "results_"+tag+"_MJ1/";
//	     else if( is == 2 ) prefix = "results_"+tag+"_MJIAWAY/";
	     else continue;
	     
	     // read result files
	     std::string fname = prefix+pt[ipt]+"_"+tag+".csv";
	     std::ifstream f(fname.c_str());
	     if( !f.is_open() ) continue;
	     std::cout << fname << std::endl;
	     
	     int iline = 0;
	     while( !f.eof() )
	       {	     
		  std::string line;
		  f >> line;
		  if( iline == 0 ) {iline++; continue;}
		  std::stringstream ss(line);
		  std::string item;
		  int idx = 0;
		  while( std::getline(ss,item,',') )
		    {
		       int run_v = -1;
		       if( idx == 3 ) run_v = atoi(item.c_str());
		       
		       if( is == 0 && idx == 3 && run_v == 0 ) idxNom = iline-1;

		       if( (iline == 1 && is == 1) || 
			   (iline == 1 && is == 2) ||
			   (iline == 1 && is == 3) ||
			   is == 0 )
			 {			    
			    if( is == 1 ) run_v = 200;
			    if( is == 2 ) run_v = 201;
			    if( is == 3 ) run_v = 202;
			    
			    if( idx == 3 ) run.push_back(run_v);
			    
			    if( idx == 24 ) 
			      {
				 sf.push_back(atof(item.c_str())); // FIXME IF FORMAT CHANGES
			      }

			    if( idx == 14 ) frb.push_back(atof(item.c_str()));
			    if( idx == 15 ) frbTag.push_back(atof(item.c_str()));
			    if( idx == 16 ) frc.push_back(atof(item.c_str()));
			    if( idx == 17 ) frcTag.push_back(atof(item.c_str()));
			    if( idx == 18 ) frl.push_back(atof(item.c_str()));
			    if( idx == 19 ) frlTag.push_back(atof(item.c_str()));
			    
			    if( iline == 1 && is == 0 && (run_v < 100 || run_v >= 666) )
			      {
				 if( idx == 0 ) Comb_ptMin.push_back(atoi(item.c_str()));
				 if( idx == 1 ) Comb_ptMax.push_back(atoi(item.c_str()));
			      }		  
			 }		       
		       
		       idx++;
		    }
		  
		  iline++;
	       }
	     
	     f.close();
	  }	
	
	// do calculations
	int nRES = run.size();
	
	float sigma_syst_up = 0.;
	float sigma_syst_down = 0.;
	float sigma_total_up = 0.;
	float sigma_total_down = 0.;
	float sigma_stat = 0.;
	float sf_stat_sum = 0.;
	float istat = 0;

	float frb_sigma_total_up = 0.;
	float frb_sigma_total_down = 0.;
	float frc_sigma_total_up = 0.;
	float frc_sigma_total_down = 0.;
	float frl_sigma_total_up = 0.;
	float frl_sigma_total_down = 0.;
	
	float frb_sigma_syst_up = 0.;
	float frb_sigma_syst_down = 0.;
	float frc_sigma_syst_up = 0.;
	float frc_sigma_syst_down = 0.;
	float frl_sigma_syst_up = 0.;
	float frl_sigma_syst_down = 0.;

	float frb_tag_sigma_total_up = 0.;
	float frb_tag_sigma_total_down = 0.;
	float frc_tag_sigma_total_up = 0.;
	float frc_tag_sigma_total_down = 0.;
	float frl_tag_sigma_total_up = 0.;
	float frl_tag_sigma_total_down = 0.;
	
	float frb_tag_sigma_syst_up = 0.;
	float frb_tag_sigma_syst_down = 0.;
	float frc_tag_sigma_syst_up = 0.;
	float frc_tag_sigma_syst_down = 0.;
	float frl_tag_sigma_syst_up = 0.;
	float frl_tag_sigma_syst_down = 0.;
	
	float frb_stat_sum = 0.;
	float sigma_frb_stat = 0.;
	float frc_stat_sum = 0.;
	float sigma_frc_stat = 0.;
	float frl_stat_sum = 0.;
	float sigma_frl_stat = 0.;

	float frbTag_stat_sum = 0.;
	float sigma_frbTag_stat = 0.;
	float frcTag_stat_sum = 0.;
	float sigma_frcTag_stat = 0.;
	float frlTag_stat_sum = 0.;
	float sigma_frlTag_stat = 0.;
	
	std::vector<float> sigma_syst_sep;
	std::vector<std::string> sigma_syst_name;
	float sigma_syst_add = 0.;
	float frb_sigma_syst_add = 0.;
	float frc_sigma_syst_add = 0.;
	float frl_sigma_syst_add = 0.;

	float frb_tag_sigma_syst_add = 0.;
	float frc_tag_sigma_syst_add = 0.;
	float frl_tag_sigma_syst_add = 0.;
	
	std::vector<float> frb_sigma_syst_sep;
	std::vector<float> frc_sigma_syst_sep;
	std::vector<float> frl_sigma_syst_sep;

	std::vector<float> frb_tag_sigma_syst_sep;
	std::vector<float> frc_tag_sigma_syst_sep;
	std::vector<float> frl_tag_sigma_syst_sep;
	
	std::vector<std::string> frb_sigma_syst_name;
	std::vector<std::string> frc_sigma_syst_name;
	std::vector<std::string> frl_sigma_syst_name;

	std::vector<std::string> frb_tag_sigma_syst_name;
	std::vector<std::string> frc_tag_sigma_syst_name;
	std::vector<std::string> frl_tag_sigma_syst_name;
	
	for(int i=0;i<nRES;i++)
	  {
	     if( i == idxNom )
	       {
		  sigma_syst_sep.push_back(sf[idxNom]);
		  sigma_syst_name.push_back(getSysName(run[i]));
		  continue;
	       }	     
	     
	     if( run[i] < 666 )
	       {	
		  float delta = sf[idxNom]-sf[i];
		  bool isUp = (delta < 0);
		  float err = delta*delta;
		  if( run[i] < 100 )
		    {		       
		       if( isUp ) sigma_syst_up += err;		  
		       else sigma_syst_down += err;
		    }
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       sigma_syst_up += pow(delta,2);
		       sigma_syst_down += pow(delta,2);
		    }		  

		  if( run[i] < 100 )
		    {		       
		       if( isUp ) sigma_syst_sep.push_back(sf[idxNom]+sqrt(err));
		       else sigma_syst_sep.push_back(sf[idxNom]-sqrt(err));
		       sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       sigma_syst_add += pow(delta,2);
		    }	
		  
		  // frb
		  float delta_frb = frb[idxNom]-frb[i];
		  bool isUp_frb = (delta_frb < 0);
		  float err_frb = delta_frb*delta_frb;
		  if( isUp_frb ) frb_sigma_syst_up += err_frb;
		  else frb_sigma_syst_down += err_frb;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frb ) frb_sigma_syst_sep.push_back(frb[idxNom]+sqrt(err_frb));
		       else frb_sigma_syst_sep.push_back(frb[idxNom]-sqrt(err_frb));
		       frb_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frb_sigma_syst_add += pow(delta_frb,2);
		    }	

		  // frbTag
		  float delta_frb_tag = frbTag[idxNom]-frbTag[i];
		  bool isUp_frb_tag = (delta_frb_tag < 0);
		  float err_frb_tag = delta_frb_tag*delta_frb_tag;
		  if( isUp_frb_tag ) frb_tag_sigma_syst_up += err_frb_tag;
		  else frb_tag_sigma_syst_down += err_frb_tag;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frb_tag ) frb_tag_sigma_syst_sep.push_back(frbTag[idxNom]+sqrt(err_frb_tag));
		       else frb_tag_sigma_syst_sep.push_back(frbTag[idxNom]-sqrt(err_frb_tag));
		       frb_tag_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frb_tag_sigma_syst_add += pow(delta_frb_tag,2);
		    }	
		  
		  // frc
		  float delta_frc = frc[idxNom]-frc[i];
		  bool isUp_frc = (delta_frc < 0);
		  float err_frc = delta_frc*delta_frc;
		  if( isUp_frc ) frc_sigma_syst_up += err_frc;
		  else frc_sigma_syst_down += err_frc;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frc ) frc_sigma_syst_sep.push_back(frc[idxNom]+sqrt(err_frc));
		       else frc_sigma_syst_sep.push_back(frc[idxNom]-sqrt(err_frc));
		       frc_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frc_sigma_syst_add += pow(delta_frc,2);
		    }	

		  // frcTag
		  float delta_frc_tag = frcTag[idxNom]-frcTag[i];
		  bool isUp_frc_tag = (delta_frc_tag < 0);
		  float err_frc_tag = delta_frc_tag*delta_frc_tag;
		  if( isUp_frc_tag ) frc_tag_sigma_syst_up += err_frc_tag;
		  else frc_tag_sigma_syst_down += err_frc_tag;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frc_tag ) frc_tag_sigma_syst_sep.push_back(frcTag[idxNom]+sqrt(err_frc_tag));
		       else frc_tag_sigma_syst_sep.push_back(frcTag[idxNom]-sqrt(err_frc_tag));
		       frc_tag_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frc_tag_sigma_syst_add += pow(delta_frc_tag,2);
		    }	
		  
		  // frl
		  float delta_frl = frl[idxNom]-frl[i];
		  bool isUp_frl = (delta_frl < 0);
		  float err_frl = delta_frl*delta_frl;
		  if( isUp_frl ) frl_sigma_syst_up += err_frl;
		  else frl_sigma_syst_down += err_frl;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frl ) frl_sigma_syst_sep.push_back(frl[idxNom]+sqrt(err_frl));
		       else frl_sigma_syst_sep.push_back(frl[idxNom]-sqrt(err_frl));
		       frl_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frl_sigma_syst_add += pow(delta_frl,2);
		    }	

		  // frlTag
		  float delta_frl_tag = frlTag[idxNom]-frlTag[i];
		  bool isUp_frl_tag = (delta_frl_tag < 0);
		  float err_frl_tag = delta_frl_tag*delta_frl_tag;
		  if( isUp_frl_tag ) frl_tag_sigma_syst_up += err_frl_tag;
		  else frl_tag_sigma_syst_down += err_frl_tag;
		  if( run[i] < 100 )
		    {		       
		       if( isUp_frl_tag ) frl_tag_sigma_syst_sep.push_back(frlTag[idxNom]+sqrt(err_frl_tag));
		       else frl_tag_sigma_syst_sep.push_back(frlTag[idxNom]-sqrt(err_frl_tag));
		       frl_tag_sigma_syst_name.push_back(getSysName(run[i]));
		    }		  		  
		  if( run[i] >= 100 && run[i] <= 202 )
		    {
		       frl_tag_sigma_syst_add += pow(delta_frl_tag,2);
		    }	
	       }
	     else
	       {
		  sf_stat_sum += sf[i];
		  frb_stat_sum += frb[i];
		  frc_stat_sum += frc[i];
		  frl_stat_sum += frl[i];
		  frbTag_stat_sum += frbTag[i];
		  frcTag_stat_sum += frcTag[i];
		  frlTag_stat_sum += frlTag[i];
		  istat++;
	       }	     
	  }
	sigma_syst_add = sqrt(sigma_syst_add);
	frb_sigma_syst_add = sqrt(frb_sigma_syst_add);
	frc_sigma_syst_add = sqrt(frc_sigma_syst_add);
	frl_sigma_syst_add = sqrt(frl_sigma_syst_add);

	frb_tag_sigma_syst_add = sqrt(frb_tag_sigma_syst_add);
	frc_tag_sigma_syst_add = sqrt(frc_tag_sigma_syst_add);
	frl_tag_sigma_syst_add = sqrt(frl_tag_sigma_syst_add);
	
	Comb_sf.push_back(sf[idxNom]);
	
	sf_stat_sum /= istat;	
	frb_stat_sum /= istat;
	frc_stat_sum /= istat;
	frl_stat_sum /= istat;
	frbTag_stat_sum /= istat;
	frcTag_stat_sum /= istat;
	frlTag_stat_sum /= istat;

	float sfcbsys = 0.;
	// add Cb systematics
	if( inclCB )
	  {	     
	     float cb = getCb(tag,"bjet",ipt+1);
//	     float cb = getCb(tag,"bjet",ipt+1+1); //FIXME if include 20-30 bin
	     float cbsys = (1-cb)*0.5/cb;
	     sfcbsys = pow(cbsys*sf[idxNom],2);
	     
	     sigma_syst_up += sfcbsys;
	     sigma_syst_down += sfcbsys;
	  }
	
	// add add
//	sigma_syst_up += sigma_syst_add*sigma_syst_add;
//	sigma_syst_down += sigma_syst_add*sigma_syst_add;
	
	for(int i=0;i<istat;i++)
	  {	     
	     sigma_stat += pow(sf_stat_sum-sf[i],2)/istat;
	     sigma_frb_stat += pow(frb_stat_sum-frb[i],2)/istat;
	     sigma_frc_stat += pow(frc_stat_sum-frc[i],2)/istat;
	     sigma_frl_stat += pow(frl_stat_sum-frl[i],2)/istat;
	     sigma_frbTag_stat += pow(frbTag_stat_sum-frbTag[i],2)/istat;
	     sigma_frcTag_stat += pow(frcTag_stat_sum-frcTag[i],2)/istat;
	     sigma_frlTag_stat += pow(frlTag_stat_sum-frlTag[i],2)/istat;
	  }
	sigma_stat = sqrt(sigma_stat);
	sigma_frb_stat = sqrt(sigma_frb_stat);
	sigma_frc_stat = sqrt(sigma_frc_stat);
	sigma_frl_stat = sqrt(sigma_frl_stat);
	sigma_frbTag_stat = sqrt(sigma_frbTag_stat);
	sigma_frcTag_stat = sqrt(sigma_frcTag_stat);
	sigma_frlTag_stat = sqrt(sigma_frlTag_stat);
	
	sigma_syst_up = sqrt(sigma_syst_up);
	sigma_syst_down = sqrt(sigma_syst_down);

	frb_sigma_syst_up = sqrt(frb_sigma_syst_up);
	frb_sigma_syst_down = sqrt(frb_sigma_syst_down);
	frc_sigma_syst_up = sqrt(frc_sigma_syst_up);
	frc_sigma_syst_down = sqrt(frc_sigma_syst_down);
	frl_sigma_syst_up = sqrt(frl_sigma_syst_up);
	frl_sigma_syst_down = sqrt(frl_sigma_syst_down);

	frb_tag_sigma_syst_up = sqrt(frb_tag_sigma_syst_up);
	frb_tag_sigma_syst_down = sqrt(frb_tag_sigma_syst_down);
	frc_tag_sigma_syst_up = sqrt(frc_tag_sigma_syst_up);
	frc_tag_sigma_syst_down = sqrt(frc_tag_sigma_syst_down);
	frl_tag_sigma_syst_up = sqrt(frl_tag_sigma_syst_up);
	frl_tag_sigma_syst_down = sqrt(frl_tag_sigma_syst_down);
	
	sigma_total_up = sqrt(sigma_stat*sigma_stat+sigma_syst_up*sigma_syst_up);
	sigma_total_down = sqrt(sigma_stat*sigma_stat+sigma_syst_down*sigma_syst_down);

	frb_sigma_total_up = sqrt(sigma_frb_stat*sigma_frb_stat+frb_sigma_syst_up*frb_sigma_syst_up);
	frb_sigma_total_down = sqrt(sigma_frb_stat*sigma_frb_stat+frb_sigma_syst_down*frb_sigma_syst_down);
	frc_sigma_total_up = sqrt(sigma_frc_stat*sigma_frc_stat+frc_sigma_syst_up*frc_sigma_syst_up);
	frc_sigma_total_down = sqrt(sigma_frc_stat*sigma_frc_stat+frc_sigma_syst_down*frc_sigma_syst_down);
	frl_sigma_total_up = sqrt(sigma_frl_stat*sigma_frl_stat+frl_sigma_syst_up*frl_sigma_syst_up);
	frl_sigma_total_down = sqrt(sigma_frl_stat*sigma_frl_stat+frl_sigma_syst_down*frl_sigma_syst_down);

	frb_tag_sigma_total_up = sqrt(sigma_frbTag_stat*sigma_frbTag_stat+frb_tag_sigma_syst_up*frb_tag_sigma_syst_up);
	frb_tag_sigma_total_down = sqrt(sigma_frbTag_stat*sigma_frbTag_stat+frb_tag_sigma_syst_down*frb_tag_sigma_syst_down);
	frc_tag_sigma_total_up = sqrt(sigma_frcTag_stat*sigma_frcTag_stat+frc_tag_sigma_syst_up*frc_tag_sigma_syst_up);
	frc_tag_sigma_total_down = sqrt(sigma_frcTag_stat*sigma_frcTag_stat+frc_tag_sigma_syst_down*frc_tag_sigma_syst_down);
	frl_tag_sigma_total_up = sqrt(sigma_frlTag_stat*sigma_frlTag_stat+frl_tag_sigma_syst_up*frl_tag_sigma_syst_up);
	frl_tag_sigma_total_down = sqrt(sigma_frlTag_stat*sigma_frlTag_stat+frl_tag_sigma_syst_down*frl_tag_sigma_syst_down);
	
	float SF = sf[idxNom];
	float SF_STAT = SF+sigma_stat;
	float SF_SYST_UP = SF+sigma_syst_up;
	float SF_SYST_DOWN = SF-sigma_syst_down;
	float SF_TOTAL_UP = SF+sigma_total_up;
	float SF_TOTAL_DOWN = SF-sigma_total_down;
	
	h_SF->SetBinContent(ipt+1,SF);
	h_SF->SetBinError(ipt+1,sigma_stat);
	
	h_SF_TOTAL_UP->SetBinContent(ipt+1,SF_TOTAL_UP);
	h_SF_TOTAL_DOWN->SetBinContent(ipt+1,SF_TOTAL_DOWN);

	float FRB = frb[idxNom];
	float FRB_STAT = FRB+sigma_frb_stat;
	float FRB_SYST_UP = FRB+frb_sigma_syst_up;
	float FRB_SYST_DOWN = FRB-frb_sigma_syst_down;
	float FRB_TOTAL_UP = FRB+frb_sigma_total_up;
	float FRB_TOTAL_DOWN = FRB-frb_sigma_total_down;
	
	h_frb->SetBinContent(ipt+1,FRB);
	h_frb->SetBinError(ipt+1,sigma_frb_stat);
	h_frb_TOTAL_UP->SetBinContent(ipt+1,FRB_TOTAL_UP);
	h_frb_TOTAL_DOWN->SetBinContent(ipt+1,FRB_TOTAL_DOWN);

	float FRC = frc[idxNom];
	float FRC_STAT = FRC+sigma_frc_stat;
	float FRC_SYST_UP = FRC+frc_sigma_syst_up;
	float FRC_SYST_DOWN = FRC-frc_sigma_syst_down;
	float FRC_TOTAL_UP = FRC+frc_sigma_total_up;
	float FRC_TOTAL_DOWN = FRC-frc_sigma_total_down;
	
	h_frc->SetBinContent(ipt+1,FRC);
	h_frc->SetBinError(ipt+1,sigma_frc_stat);
	h_frc_TOTAL_UP->SetBinContent(ipt+1,FRC_TOTAL_UP);
	h_frc_TOTAL_DOWN->SetBinContent(ipt+1,FRC_TOTAL_DOWN);

	float FRL = frl[idxNom];
	float FRL_STAT = FRL+sigma_frl_stat;
	float FRL_SYST_UP = FRL+frl_sigma_syst_up;
	float FRL_SYST_DOWN = FRL-frl_sigma_syst_down;
	float FRL_TOTAL_UP = FRL+frl_sigma_total_up;
	float FRL_TOTAL_DOWN = FRL-frl_sigma_total_down;
	
	h_frl->SetBinContent(ipt+1,FRL);
	h_frl->SetBinError(ipt+1,sigma_frl_stat);
	h_frl_TOTAL_UP->SetBinContent(ipt+1,FRL_TOTAL_UP);
	h_frl_TOTAL_DOWN->SetBinContent(ipt+1,FRL_TOTAL_DOWN);

	float FRB_TAG = frbTag[idxNom];
	float FRB_TAG_STAT = FRB_TAG+sigma_frbTag_stat;
	float FRB_TAG_SYST_UP = FRB_TAG+frb_tag_sigma_syst_up;
	float FRB_TAG_SYST_DOWN = FRB_TAG-frb_tag_sigma_syst_down;
	float FRB_TAG_TOTAL_UP = FRB_TAG+frb_tag_sigma_total_up;
	float FRB_TAG_TOTAL_DOWN = FRB_TAG-frb_tag_sigma_total_down;
	
	h_frb_tag->SetBinContent(ipt+1,FRB_TAG);
	h_frb_tag->SetBinError(ipt+1,sigma_frbTag_stat);
	h_frb_tag_TOTAL_UP->SetBinContent(ipt+1,FRB_TAG_TOTAL_UP);
	h_frb_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRB_TAG_TOTAL_DOWN);

	float FRC_TAG = frcTag[idxNom];
	float FRC_TAG_STAT = FRC_TAG+sigma_frcTag_stat;
	float FRC_TAG_SYST_UP = FRC_TAG+frc_tag_sigma_syst_up;
	float FRC_TAG_SYST_DOWN = FRC_TAG-frc_tag_sigma_syst_down;
	float FRC_TAG_TOTAL_UP = FRC_TAG+frc_tag_sigma_total_up;
	float FRC_TAG_TOTAL_DOWN = FRC_TAG-frc_tag_sigma_total_down;
	
	h_frc_tag->SetBinContent(ipt+1,FRC_TAG);
	h_frc_tag->SetBinError(ipt+1,sigma_frcTag_stat);
	h_frc_tag_TOTAL_UP->SetBinContent(ipt+1,FRC_TAG_TOTAL_UP);
	h_frc_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRC_TAG_TOTAL_DOWN);

	float FRL_TAG = frlTag[idxNom];
	float FRL_TAG_STAT = FRL_TAG+sigma_frlTag_stat;
	float FRL_TAG_SYST_UP = FRL_TAG+frl_tag_sigma_syst_up;
	float FRL_TAG_SYST_DOWN = FRL_TAG-frl_tag_sigma_syst_down;
	float FRL_TAG_TOTAL_UP = FRL_TAG+frl_tag_sigma_total_up;
	float FRL_TAG_TOTAL_DOWN = FRL_TAG-frl_tag_sigma_total_down;
	
	h_frl_tag->SetBinContent(ipt+1,FRL_TAG);
	h_frl_tag->SetBinError(ipt+1,sigma_frlTag_stat);
	h_frl_tag_TOTAL_UP->SetBinContent(ipt+1,FRL_TAG_TOTAL_UP);
	h_frl_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRL_TAG_TOTAL_DOWN);
	
	// additional uncertainties
	
	// stat
	sigma_syst_name.push_back("up_statistic");
	sigma_syst_sep.push_back(SF+sigma_stat);
	sigma_syst_name.push_back("down_statistic");
	sigma_syst_sep.push_back(SF-sigma_stat);
	
	// cb
	sigma_syst_name.push_back("up_cb");
	sigma_syst_sep.push_back(SF+sqrt(sfcbsys));
	sigma_syst_name.push_back("down_cb");
	sigma_syst_sep.push_back(SF-sqrt(sfcbsys));

	// add
	sigma_syst_name.push_back("up_add");
	sigma_syst_sep.push_back(SF+sigma_syst_add);
	sigma_syst_name.push_back("down_add");
	sigma_syst_sep.push_back(SF-sigma_syst_add);

	// total
	sigma_syst_name.push_back("up");
	sigma_syst_sep.push_back(SF_TOTAL_UP);
	sigma_syst_name.push_back("down");
	sigma_syst_sep.push_back(SF_TOTAL_DOWN);
	
	Comb_sigma_syst.push_back(sigma_syst_sep);
	Comb_sigma_syst_name.push_back(sigma_syst_name);
     }
   
   // draw SF
   TCanvas *c1 = new TCanvas("c1","c1",0,0,600,500);
   c1->SetGrid(1);
   
   std::string csv = "#bf{"+tagName+"}";
   
   const int np = 2*(nPT+2)+1;
   double xp_sysTot_SF[np];
   double yp_sysTot_SF[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_SF->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_SF->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_SF[k] = addw + h_SF->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_SF[k] = h_SF_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_SF[nPT+2+k] = h_SF_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_SF[nPT+2+k] = xp_sysTot_SF[nPT+2-k-1];
     }	
   xp_sysTot_SF[np-1] = xp_sysTot_SF[0];   
   yp_sysTot_SF[np-1] = yp_sysTot_SF[0];
   
   TPolyLine *sysTot_SF = new TPolyLine(np,xp_sysTot_SF,yp_sysTot_SF);
   sysTot_SF->SetFillColor(kYellow);
	
   if( !doSFc ) h_SF->GetYaxis()->SetTitle("SF_{b}");
   else h_SF->GetYaxis()->SetTitle("SF_{c}");
   h_SF->GetXaxis()->SetTitle("p_{T} [TeV]");
   h_SF->SetMarkerSize(0.8);

   h_SF->Draw("e1p");
	
   h_SF->GetXaxis()->SetMoreLogLabels();
   h_SF->GetXaxis()->SetNoExponent();
   h_SF->GetYaxis()->SetRangeUser(0.40,1.30);
	
   sysTot_SF->Draw("fSAME");
   h_SF->Draw("e1p same");
   
   TLegend *leg;
   leg = new TLegend(0.35,0.45,0.70,0.20);
   leg->SetFillColor(253);
   leg->SetBorderSize(0);
   
   TLatex *legl = new TLatex();
   legl->SetNDC();
   legl->SetTextAlign(22);
   legl->SetTextFont(63);
   legl->SetTextSizePixels(30);
   legl->DrawLatex(0.55,0.82,csv.c_str());
   
   leg->AddEntry(h_SF,"Scale factor","p");
   leg->AddEntry(h_SF,"stat","l");
   leg->AddEntry(sysTot_SF,"stat #oplus syst","f");
   
   c1->RedrawAxis("g");
   
   leg->Draw();
   
//   c1->SetLogx(1);
//   TLatex *lab = CMSLABEL();
//   lab->Draw("same");
   
   TLatex *tex = new TLatex(0.1969,0.906825,"CMS");
   tex->SetNDC();
   tex->SetTextAlign(13);
   tex->SetTextFont(61);
   tex->SetTextSize(0.07475);
   tex->SetLineWidth(2);
   tex->Draw();

   TLatex *tex2 = new TLatex(0.1969,0.817125,"Preliminary");
   tex2->SetNDC();
   tex2->SetTextAlign(13);
   tex2->SetTextFont(52);
   tex2->SetTextSize(0.05681);
   tex2->SetLineWidth(2);
   tex2->Draw();

   TLatex *text1 = new TLatex(0.98,0.95125,"#sqrt{s} = 13 TeV, 25 ns");
   text1->SetNDC();
   text1->SetTextAlign(31);
   text1->SetTextFont(42);
   text1->SetTextSize(0.04875);
   text1->SetLineWidth(2);
   text1->Draw();
   
   std::string picname = "pics/SF_"+tag+".eps";
   c1->Print(picname.c_str());
   c1->Clear();
   
   delete sysTot_SF;
   
   delete c1;
   delete leg;
   delete legl;

   // draw fractions noTag
   TCanvas *c2 = new TCanvas("c2","c2",0,0,600,500);
   c2->SetGrid(1);

   // frb
   double xp_sysTot_FRB[np];
   double yp_sysTot_FRB[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frb->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frb->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRB[k] = addw + h_frb->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRB[k] = h_frb_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRB[nPT+2+k] = h_frb_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRB[nPT+2+k] = xp_sysTot_FRB[nPT+2-k-1];
     }	
   xp_sysTot_FRB[np-1] = xp_sysTot_FRB[0];
   yp_sysTot_FRB[np-1] = yp_sysTot_FRB[0];
   
   TPolyLine *sysTot_FRB = new TPolyLine(np,xp_sysTot_FRB,yp_sysTot_FRB);
   sysTot_FRB->SetFillColor(kRed);
   sysTot_FRB->SetLineColor(kRed);
//   sysTot_FRB->SetFillStyle(0);
   
   // frc
   double xp_sysTot_FRC[np];
   double yp_sysTot_FRC[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frc->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frc->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRC[k] = addw + h_frc->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRC[k] = h_frc_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRC[nPT+2+k] = h_frc_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRC[nPT+2+k] = xp_sysTot_FRC[nPT+2-k-1];
     }	
   xp_sysTot_FRC[np-1] = xp_sysTot_FRC[0];
   yp_sysTot_FRC[np-1] = yp_sysTot_FRC[0];
   
   TPolyLine *sysTot_FRC = new TPolyLine(np,xp_sysTot_FRC,yp_sysTot_FRC);
   sysTot_FRC->SetFillColor(kGreen);
   sysTot_FRC->SetLineColor(kGreen);
//   sysTot_FRC->SetFillStyle(0);

   // frl
   double xp_sysTot_FRL[np];
   double yp_sysTot_FRL[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frl->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frl->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRL[k] = addw + h_frl->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRL[k] = h_frl_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRL[nPT+2+k] = h_frl_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRL[nPT+2+k] = xp_sysTot_FRL[nPT+2-k-1];
     }	
   xp_sysTot_FRL[np-1] = xp_sysTot_FRL[0];
   yp_sysTot_FRL[np-1] = yp_sysTot_FRL[0];
   
   TPolyLine *sysTot_FRL = new TPolyLine(np,xp_sysTot_FRL,yp_sysTot_FRL);
   sysTot_FRL->SetFillColor(kBlue);
   sysTot_FRL->SetLineColor(kBlue);
   
   h_frb->GetYaxis()->SetTitle("Fit fraction");
   h_frb->GetXaxis()->SetTitle("p_{T} [TeV]");
   
   h_frb->SetMarkerSize(1.0);
   h_frc->SetMarkerSize(1.0);
   h_frl->SetMarkerSize(1.0);

   h_frb->SetMarkerStyle(20);
   h_frc->SetMarkerStyle(22);
   h_frl->SetMarkerStyle(24);
   
   h_frb->SetMarkerColor(0);
   h_frc->SetMarkerColor(0);
   h_frl->SetMarkerColor(0);

   h_frb->SetLineColor(0);
   h_frc->SetLineColor(0);
   h_frl->SetLineColor(0);
   
   h_frb->Draw("e1p");
   h_frc->Draw("e1p same");
   h_frl->Draw("e1p same");
	
   h_frb->GetXaxis()->SetMoreLogLabels();
   h_frb->GetXaxis()->SetNoExponent();
   h_frb->GetYaxis()->SetRangeUser(0.00,1.50);

   sysTot_FRB->Draw("fSAME");
   sysTot_FRC->Draw("fSAME");
   sysTot_FRL->Draw("fSAME");
   h_frb->Draw("e1p same");
   h_frc->Draw("e1p same");
   h_frl->Draw("e1p same");
   
   TLegend *leg2;
   leg2 = new TLegend(0.70,0.85,0.95,0.70);
   leg2->SetFillColor(253);
   leg2->SetBorderSize(0);
   
   TLatex *legl2 = new TLatex();
   legl2->SetNDC();
   legl2->SetTextAlign(22);
   legl2->SetTextFont(63);
   legl2->SetTextSizePixels(30);
//   legl2->DrawLatex(0.55,0.82,csv.c_str());
   legl2->DrawLatex(0.55,0.82,"Pre-tag");
   
   TH1D *h_frb_clone = (TH1D*)h_frb->Clone("h_frb_clone");
   TH1D *h_frc_clone = (TH1D*)h_frc->Clone("h_frc_clone");
   TH1D *h_frl_clone = (TH1D*)h_frl->Clone("h_frl_clone");
   
   h_frb_clone->SetMarkerColor(2);
   h_frc_clone->SetMarkerColor(3);
   h_frl_clone->SetMarkerColor(4);
  
   h_frb_clone->SetLineColor(2);
   h_frc_clone->SetLineColor(3);
   h_frl_clone->SetLineColor(4);

   leg2->AddEntry(h_frb_clone,"b-jets","lp");
   leg2->AddEntry(h_frc_clone,"c-jets","lp");
   leg2->AddEntry(h_frl_clone,"udsg-jets","lp");
   
   c2->RedrawAxis("g");
   
   leg2->Draw();
   
   c2->SetLogx(1);

   tex->Draw();
   tex2->Draw();
   text1->Draw();
   
   picname = "pics/Fr_noTag.eps";
   c2->Print(picname.c_str());
   c2->Clear();

   // draw fractions Tag
   TCanvas *c3 = new TCanvas("c3","c3",0,0,600,500);
   c3->SetGrid(1);

   // frb
   double xp_sysTot_FRB_TAG[np];
   double yp_sysTot_FRB_TAG[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frb_tag->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frb_tag->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRB_TAG[k] = addw + h_frb_tag->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRB_TAG[k] = h_frb_tag_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRB_TAG[nPT+2+k] = h_frb_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRB_TAG[nPT+2+k] = xp_sysTot_FRB_TAG[nPT+2-k-1];
     }	
   xp_sysTot_FRB_TAG[np-1] = xp_sysTot_FRB_TAG[0];
   yp_sysTot_FRB_TAG[np-1] = yp_sysTot_FRB_TAG[0];
   
   TPolyLine *sysTot_FRB_TAG = new TPolyLine(np,xp_sysTot_FRB_TAG,yp_sysTot_FRB_TAG);
   sysTot_FRB_TAG->SetFillColor(kRed);
   sysTot_FRB_TAG->SetLineColor(kRed);
   
   // frc
   double xp_sysTot_FRC_TAG[np];
   double yp_sysTot_FRC_TAG[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frc_tag->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frc_tag->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRC_TAG[k] = addw + h_frc_tag->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRC_TAG[k] = h_frc_tag_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRC_TAG[nPT+2+k] = h_frc_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRC_TAG[nPT+2+k] = xp_sysTot_FRC_TAG[nPT+2-k-1];
     }	
   xp_sysTot_FRC_TAG[np-1] = xp_sysTot_FRC_TAG[0];
   yp_sysTot_FRC_TAG[np-1] = yp_sysTot_FRC_TAG[0];
   
   TPolyLine *sysTot_FRC_TAG = new TPolyLine(np,xp_sysTot_FRC_TAG,yp_sysTot_FRC_TAG);
   sysTot_FRC_TAG->SetFillColor(kGreen);
   sysTot_FRC_TAG->SetLineColor(kGreen);

   // frl
   double xp_sysTot_FRL_TAG[np];
   double yp_sysTot_FRL_TAG[np];
   for(int k=0;k<nPT+2;k++)
     {
	float addw = h_frl_tag->GetBinWidth(k)/2.0;
	if( k == 0 ) addw = 0.0;
	if( k == nPT+1 ) addw = h_frl_tag->GetBinWidth(k-1);
	
	int ib = k+1;
	if( k > 0 ) ib--;
	if( k == nPT+1 ) ib--;
	
	xp_sysTot_FRL_TAG[k] = addw + h_frl_tag->GetXaxis()->GetBinLowEdge(ib);
	yp_sysTot_FRL_TAG[k] = h_frl_tag_TOTAL_UP->GetBinContent(ib);
	yp_sysTot_FRL_TAG[nPT+2+k] = h_frl_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1));
     }      
   for(int k=0;k<nPT+2;k++)
     {
	xp_sysTot_FRL_TAG[nPT+2+k] = xp_sysTot_FRL_TAG[nPT+2-k-1];
     }	
   xp_sysTot_FRL_TAG[np-1] = xp_sysTot_FRL_TAG[0];
   yp_sysTot_FRL_TAG[np-1] = yp_sysTot_FRL_TAG[0];
   
   TPolyLine *sysTot_FRL_TAG = new TPolyLine(np,xp_sysTot_FRL_TAG,yp_sysTot_FRL_TAG);
   sysTot_FRL_TAG->SetFillColor(kBlue);
   sysTot_FRL_TAG->SetLineColor(kBlue);
   
   h_frb_tag->GetYaxis()->SetTitle("Fit fraction");
   h_frb_tag->GetXaxis()->SetTitle("p_{T} [TeV]");
   
   h_frb_tag->SetMarkerSize(1.0);
   h_frc_tag->SetMarkerSize(1.0);
   h_frl_tag->SetMarkerSize(1.0);

   h_frb_tag->SetMarkerStyle(20);
   h_frc_tag->SetMarkerStyle(22);
   h_frl_tag->SetMarkerStyle(24);
   
   h_frb_tag->SetMarkerColor(0);
   h_frc_tag->SetMarkerColor(0);
   h_frl_tag->SetMarkerColor(0);

   h_frb_tag->SetLineColor(0);
   h_frc_tag->SetLineColor(0);
   h_frl_tag->SetLineColor(0);
   
   h_frb_tag->Draw("e1p");
   h_frc_tag->Draw("e1p same");
   h_frl_tag->Draw("e1p same");
	
   h_frb_tag->GetXaxis()->SetMoreLogLabels();
   h_frb_tag->GetXaxis()->SetNoExponent();
   h_frb_tag->GetYaxis()->SetRangeUser(0.00,1.50);

   sysTot_FRB_TAG->Draw("fSAME");
   sysTot_FRC_TAG->Draw("fSAME");
   sysTot_FRL_TAG->Draw("fSAME");
   h_frb_tag->Draw("e1p same");
   h_frc_tag->Draw("e1p same");
   h_frl_tag->Draw("e1p same");
   
   TLegend *leg3;
   leg3 = new TLegend(0.70,0.85,0.95,0.70);
   leg3->SetFillColor(253);
   leg3->SetBorderSize(0);
   
   TLatex *legl3 = new TLatex();
   legl3->SetNDC();
   legl3->SetTextAlign(22);
   legl3->SetTextFont(63);
   legl3->SetTextSizePixels(30);
   legl3->DrawLatex(0.55,0.82,csv.c_str());

   TH1D *h_frb_tag_clone = (TH1D*)h_frb_tag->Clone("h_frb_tag_clone");
   TH1D *h_frc_tag_clone = (TH1D*)h_frc_tag->Clone("h_frc_tag_clone");
   TH1D *h_frl_tag_clone = (TH1D*)h_frl_tag->Clone("h_frl_tag_clone");
   
   h_frb_tag_clone->SetMarkerColor(2);
   h_frc_tag_clone->SetMarkerColor(3);
   h_frl_tag_clone->SetMarkerColor(4);
  
   h_frb_tag_clone->SetLineColor(2);
   h_frc_tag_clone->SetLineColor(3);
   h_frl_tag_clone->SetLineColor(4);
   
   leg3->AddEntry(h_frb_tag_clone,"b-jets","lp");
   leg3->AddEntry(h_frc_tag_clone,"c-jets","lp");
   leg3->AddEntry(h_frl_tag_clone,"udsg-jets","lp");
   
   c3->RedrawAxis("g");
   
   leg3->Draw();
   
   c3->SetLogx(1);

   tex->Draw();
   tex2->Draw();
   text1->Draw();
   
   picname = "pics/Fr_"+tag+".eps";
   c3->Print(picname.c_str());
   c3->Clear();
   
   std::ofstream fsf("results/SFSYS.tex");

   std::string header = "\n \
\\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} \n \
Ejemplo n.º 5
0
void PlotNsjMedian()
{
  gROOT->LoadMacro("$LOCAL/include/TUntilsOpHisto.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsAliFigs.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsPlotStd.h"); SetStyle();
//=============================================================================

  TFile *file = TFile::Open("data/AnalysisOutputs_Nsj.root", "READ");
  TList *listPy8R4S1 = (TList*)file->Get("list_py8_JetR04_SjeR01");
  TList *listPy8R4S2 = (TList*)file->Get("list_py8_JetR04_SjeR02");
  TList *listPy8R4S3 = (TList*)file->Get("list_py8_JetR04_SjeR03");
  TList *listPy8R5S1 = (TList*)file->Get("list_py8_JetR05_SjeR01");
  TList *listPy8R5S2 = (TList*)file->Get("list_py8_JetR05_SjeR02");
  TList *listPy8R5S3 = (TList*)file->Get("list_py8_JetR05_SjeR03");
  TList *listPy8R5S4 = (TList*)file->Get("list_py8_JetR05_SjeR04");

  TList *listVacR4S1 = (TList*)file->Get("list_vac_JetR04_SjeR01");
  TList *listVacR4S2 = (TList*)file->Get("list_vac_JetR04_SjeR02");
  TList *listVacR4S3 = (TList*)file->Get("list_vac_JetR04_SjeR03");
  TList *listVacR5S1 = (TList*)file->Get("list_vac_JetR05_SjeR01");
  TList *listVacR5S2 = (TList*)file->Get("list_vac_JetR05_SjeR02");
  TList *listVacR5S3 = (TList*)file->Get("list_vac_JetR05_SjeR03");
  TList *listVacR5S4 = (TList*)file->Get("list_vac_JetR05_SjeR04");

  TList *listMedR4S1 = (TList*)file->Get("list_med_JetR04_SjeR01");
  TList *listMedR4S2 = (TList*)file->Get("list_med_JetR04_SjeR02");
  TList *listMedR4S3 = (TList*)file->Get("list_med_JetR04_SjeR03");
  TList *listMedR5S1 = (TList*)file->Get("list_med_JetR05_SjeR01");
  TList *listMedR5S2 = (TList*)file->Get("list_med_JetR05_SjeR02");
  TList *listMedR5S3 = (TList*)file->Get("list_med_JetR05_SjeR03");
  TList *listMedR5S4 = (TList*)file->Get("list_med_JetR05_SjeR04");
  file->Close();

  TH1D *hPy8R4S1 = (TH1D*)listPy8R4S1->FindObject("hJetNsj_Median"); hPy8R4S1->SetName("hPy8R4S1");
  TH1D *hPy8R4S2 = (TH1D*)listPy8R4S2->FindObject("hJetNsj_Median"); hPy8R4S2->SetName("hPy8R4S2");
  TH1D *hPy8R4S3 = (TH1D*)listPy8R4S3->FindObject("hJetNsj_Median"); hPy8R4S3->SetName("hPy8R4S3");
  TH1D *hPy8R5S1 = (TH1D*)listPy8R5S1->FindObject("hJetNsj_Median"); hPy8R5S1->SetName("hPy8R5S1");
  TH1D *hPy8R5S2 = (TH1D*)listPy8R5S2->FindObject("hJetNsj_Median"); hPy8R5S2->SetName("hPy8R5S2");
  TH1D *hPy8R5S3 = (TH1D*)listPy8R5S3->FindObject("hJetNsj_Median"); hPy8R5S3->SetName("hPy8R5S3");
  TH1D *hPy8R5S4 = (TH1D*)listPy8R5S4->FindObject("hJetNsj_Median"); hPy8R5S4->SetName("hPy8R5S4");

  TH1D *hVacR4S1 = (TH1D*)listVacR4S1->FindObject("hJetNsj_Median"); hVacR4S1->SetName("hVacR4S1");
  TH1D *hVacR4S2 = (TH1D*)listVacR4S2->FindObject("hJetNsj_Median"); hVacR4S2->SetName("hVacR4S2");
  TH1D *hVacR4S3 = (TH1D*)listVacR4S3->FindObject("hJetNsj_Median"); hVacR4S3->SetName("hVacR4S3");
  TH1D *hVacR5S1 = (TH1D*)listVacR5S1->FindObject("hJetNsj_Median"); hVacR5S1->SetName("hVacR5S1");
  TH1D *hVacR5S2 = (TH1D*)listVacR5S2->FindObject("hJetNsj_Median"); hVacR5S2->SetName("hVacR5S2");
  TH1D *hVacR5S3 = (TH1D*)listVacR5S3->FindObject("hJetNsj_Median"); hVacR5S3->SetName("hVacR5S3");
  TH1D *hVacR5S4 = (TH1D*)listVacR5S4->FindObject("hJetNsj_Median"); hVacR5S4->SetName("hVacR5S4");

  TH1D *hMedR4S1 = (TH1D*)listMedR4S1->FindObject("hJetNsj_Median"); hMedR4S1->SetName("hMedR4S1");
  TH1D *hMedR4S2 = (TH1D*)listMedR4S2->FindObject("hJetNsj_Median"); hMedR4S2->SetName("hMedR4S2");
  TH1D *hMedR4S3 = (TH1D*)listMedR4S3->FindObject("hJetNsj_Median"); hMedR4S3->SetName("hMedR4S3");
  TH1D *hMedR5S1 = (TH1D*)listMedR5S1->FindObject("hJetNsj_Median"); hMedR5S1->SetName("hMedR5S1");
  TH1D *hMedR5S2 = (TH1D*)listMedR5S2->FindObject("hJetNsj_Median"); hMedR5S2->SetName("hMedR5S2");
  TH1D *hMedR5S3 = (TH1D*)listMedR5S3->FindObject("hJetNsj_Median"); hMedR5S3->SetName("hMedR5S3");
  TH1D *hMedR5S4 = (TH1D*)listMedR5S4->FindObject("hJetNsj_Median"); hMedR5S4->SetName("hMedR5S4");
//=============================================================================

  TH1F    *hfm = 0;
  TCanvas *can = 0;
  TLegend *leg = 0;
  TLatex  *tex = 0;
  TLine  *line = 0;

  const Float_t dflx = 0., dfux = 500.;
  const Float_t dfly = 0., dfuy = 15.;

  const Float_t dlsx = 0.05, dlsy = 0.05;
  const Float_t dtsx = 0.06, dtsy = 0.06;
  const Float_t dtox = 1.10, dtoy = 1.00;

  const TString stnx = "#it{p}_{T,jet} (GeV/#it{c})";
  const TString stny = "Number of sub-jets: median";

  TH1D *hSE = new TH1D("hSE", "", 10., 0., 10.);
  hSE->SetLineWidth(2);
  hSE->SetLineColor(wcl[0]);
  hSE->SetMarkerStyle(wmk[0]);
  hSE->SetMarkerColor(wcl[0]);

  TH1D *hME = new TH1D("hME", "", 10., 0., 10.);
  hME->SetLineWidth(2);
  hME->SetLineColor(wcl[0]);
  hME->SetMarkerStyle(wmk[2]);
  hME->SetMarkerColor(wcl[0]);
//=============================================================================

  can = MakeCanvas("NsjPy8R04_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hPy8R4S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hPy8R4S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hPy8R4S3, wcl[4], wmk[0], "SAME");

  leg = new TLegend(0.68, 0.66, 0.98, 0.90); SetupLegend(leg);
  leg->AddEntry(hPy8R4S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hPy8R4S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hPy8R4S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA 8, tune 4C, pp #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.4, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("NsjPy8R05_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hPy8R5S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hPy8R5S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hPy8R5S3, wcl[4], wmk[0], "SAME");
  DrawHisto(hPy8R5S4, wcl[2], wmk[0], "SAME");

  leg = new TLegend(0.58, 0.74, 0.98, 0.90); SetupLegend(leg);
  leg->SetNColumns(2);
  leg->AddEntry(hPy8R5S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hPy8R5S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hPy8R5S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hPy8R5S4, "#it{R}_{sub}=0.4", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA 8, tune 4C, pp #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.5, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("NsjVacR04_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hVacR4S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hVacR4S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hVacR4S3, wcl[4], wmk[0], "SAME");

  leg = new TLegend(0.68, 0.66, 0.98, 0.90); SetupLegend(leg);
  leg->AddEntry(hVacR4S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hVacR4S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hVacR4S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, vacuum, #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.4, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("NsjVacR05_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy,  stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hVacR5S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hVacR5S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hVacR5S3, wcl[4], wmk[0], "SAME");
  DrawHisto(hVacR5S4, wcl[2], wmk[0], "SAME");

  leg = new TLegend(0.58, 0.74, 0.98, 0.90); SetupLegend(leg);
  leg->SetNColumns(2);
  leg->AddEntry(hVacR5S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hVacR5S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hVacR5S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hVacR5S4, "#it{R}_{sub}=0.4", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, vacuum, #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.5, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("NsjMedR04_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy,  stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hMedR4S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hMedR4S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hMedR4S3, wcl[4], wmk[0], "SAME");

  leg = new TLegend(0.68, 0.66, 0.98, 0.90); SetupLegend(leg);
  leg->AddEntry(hMedR4S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hMedR4S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hMedR4S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, medium, #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.4, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("NsjMedR05_Median"); can->SetGridx(); can->SetGridy(); //can->SetLogy();
  hfm = can->DrawFrame(dflx,dfly,dfux,dfuy); SetupFrame(hfm,dlsx,dlsy,dtsx,dtsy,dtox,dtoy,  stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawHisto(hMedR5S1, wcl[1], wmk[0], "SAME");
  DrawHisto(hMedR5S2, wcl[3], wmk[0], "SAME");
  DrawHisto(hMedR5S3, wcl[4], wmk[0], "SAME");
  DrawHisto(hMedR5S4, wcl[2], wmk[0], "SAME");

  leg = new TLegend(0.58, 0.74, 0.98, 0.90); SetupLegend(leg);
  leg->SetNColumns(2);
  leg->AddEntry(hMedR5S1, "#it{R}_{sub}=0.1", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hMedR5S2, "#it{R}_{sub}=0.2", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hMedR5S3, "#it{R}_{sub}=0.3", "LP")->SetTextSizePixels(24);
  leg->AddEntry(hMedR5S4, "#it{R}_{sub}=0.4", "LP")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "PYTHIA+JEWEL, medium, #sqrt{#it{s}_{NN}}=2.76 TeV");
  tex->DrawLatex(0.16, 0.84, "Jet: anti-#it{k}_{T}, #it{R}=0.5, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.76, "Sub-jet: #it{k}_{T}");
  CanvasEnd(can);
//=============================================================================

  return;
}
Ejemplo n.º 6
0
void PlotDrmCorr()
{
  gROOT->LoadMacro("$LOCAL/include/TUntilsOpHisto.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsAliFigs.h");
  gROOT->LoadMacro("$LOCAL/include/TUntilsPlotStd.h"); SetStyle();

 const TString sJetTag = "120<#it{p}_{T,jet}<150 GeV/#it{c}";
//=============================================================================

  TFile *file = TFile::Open("data/mass/AnalysisOutputs_Dsm_py8_JetR05_SjeR01.root", "READ");
  TH2D *h5py8 = (TH2D*)file->Get("hDfrDdm120"); h5py8->SetName("h5py8"); h5py8->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/mass/AnalysisOutputs_Dsm_qpy_JetR05_SjeR01.root", "READ");
  TH2D *h5qpy = (TH2D*)file->Get("hDfrDdm120"); h5qpy->SetName("h5qpy"); h5qpy->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/mass/AnalysisOutputs_Dsm_med_JetR05_SjeR01.root", "READ");
  TH2D *h5med = (TH2D*)file->Get("hDfrDdm120"); h5med->SetName("h5med"); h5med->SetDirectory(0);
  file->Close();


  file = TFile::Open("data/mass/AnalysisOutputs_Dsm_py8_JetR04_SjeR01.root", "READ");
  TH2D *h4py8 = (TH2D*)file->Get("hDfrDdm120"); h4py8->SetName("h4py8"); h4py8->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/mass/AnalysisOutputs_Dsm_qpy_JetR04_SjeR01.root", "READ");
  TH2D *h4qpy = (TH2D*)file->Get("hDfrDdm120"); h4qpy->SetName("h4qpy"); h4qpy->SetDirectory(0);
  file->Close();

  file = TFile::Open("data/mass/AnalysisOutputs_Dsm_med_JetR04_SjeR01.root", "READ");
  TH2D *h4med = (TH2D*)file->Get("hDfrDdm120"); h4med->SetName("h4med"); h4med->SetDirectory(0);
  file->Close();
//=============================================================================

  const Double_t dBin[] = { 0., 0.1, 0.3, 0.5, 0.8, 1.2 };
  const Int_t nBin = sizeof(dBin) / sizeof(Double_t) -1;

  h5py8->RebinX(50); h4py8->RebinX(50);
  h5qpy->RebinX(50); h4qpy->RebinX(50);
  h5med->RebinX(50); h4med->RebinX(50);

  TH1D *h5py8M = SetRMS(h5py8,"h5py8M"); TH1D *h4py8M = SetRMS(h4py8,"h4py8M");
  TH1D *h5qpyM = SetRMS(h5qpy,"h5qpyM"); TH1D *h4qpyM = SetRMS(h4qpy,"h4qpyM");
  TH1D *h5medM = SetRMS(h5med,"h5medM"); TH1D *h4medM = SetRMS(h4med,"h4medM");

  TGraph *g5py8 = new TGraph(h5py8M); TGraph *g4py8 = new TGraph(h4py8M);
  TGraph *g5qpy = new TGraph(h5qpyM); TGraph *g4qpy = new TGraph(h4qpyM);
  TGraph *g5med = new TGraph(h5medM); TGraph *g4med = new TGraph(h4medM);
//=============================================================================

  TH1F    *hfm = 0;
  TCanvas *can = 0;
  TLegend *leg = 0;
  TLatex  *tex = 0;
  TLine  *line = 0;

  const Float_t dflx = 0.2, dfux = 1.;
  const Float_t dfly = 2., dfuy = 15.;

  const Float_t dlsx = 0.05, dlsy = 0.05;
  const Float_t dtsx = 0.06, dtsy = 0.06;
  const Float_t dtox = 1.10, dtoy = 1.00;

  const TString stnx = "#it{R}(sj^{1st},sj^{2nd})";
  const TString stny = "#sigma(m_{jet}-m_{sj}) (GeV/#it{c}^{2})";

  TH1D *hSE = new TH1D("hSE", "", 10., 0., 10.);
  hSE->SetLineWidth(2);
  hSE->SetLineColor(wcl[0]);
  hSE->SetMarkerStyle(wmk[0]);
  hSE->SetMarkerColor(wcl[0]);

  TH1D *hME = new TH1D("hME", "", 10., 0., 10.);
  hME->SetLineWidth(2);
  hME->SetLineColor(wcl[0]);
  hME->SetMarkerStyle(wmk[2]);
  hME->SetMarkerColor(wcl[0]);
//=============================================================================

  can = MakeCanvas("Jet5py8DrmRMS"); can->SetGridx(); can->SetGridy();
  hfm = can->DrawFrame(dflx, dfly, dfux, dfuy); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawGraph(g5py8, wcl[3], "C");
  DrawGraph(g5qpy, wcl[1], "C");
  DrawGraph(g5med, wcl[5], "C");

  leg = new TLegend(0.62, 0.64, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(g5py8, "PYTHIA 8", "L")->SetTextSizePixels(24);
  leg->AddEntry(g5qpy, "Q-PYTHIA", "L")->SetTextSizePixels(24);
  leg->AddEntry(g5med, "JEWEL+PYTHIA", "L")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, Jet #it{R}=0.5, anti-#it{k}_{T}, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.84, sJetTag.Data());
  CanvasEnd(can);
//=============================================================================

  can = MakeCanvas("Jet4py8DrmRMS"); can->SetGridx(); can->SetGridy();
  hfm = can->DrawFrame(dflx, dfly, dfux, dfuy); SetupFrame(hfm, dlsx, dlsy, dtsx, dtsy, dtox, dtoy, stnx, stny);
  hfm->GetXaxis()->SetNdivisions(510);
  hfm->GetYaxis()->SetNdivisions(510);

  DrawGraph(g4py8, wcl[3], "C");
  DrawGraph(g4qpy, wcl[1], "C");
  DrawGraph(g4med, wcl[5], "C");

  leg = new TLegend(0.62, 0.64, 0.98, 0.88); SetupLegend(leg);
  leg->AddEntry(g4py8, "PYTHIA 8", "L")->SetTextSizePixels(24);
  leg->AddEntry(g4qpy, "Q-PYTHIA", "L")->SetTextSizePixels(24);
  leg->AddEntry(g4med, "JEWEL+PYTHIA", "L")->SetTextSizePixels(24);
  leg->Draw();

  tex = new TLatex();
  tex->SetNDC();
  tex->SetTextSizePixels(24);
  tex->DrawLatex(0.16, 0.92, "2.76 TeV, Jet #it{R}=0.4, anti-#it{k}_{T}, |#eta_{jet}|<1");
  tex->DrawLatex(0.16, 0.84, sJetTag.Data());
  CanvasEnd(can);
//=============================================================================



  return;
}