ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
plot_jet_mass.cxx
Go to the documentation of this file.
1 // plot_jet_mass: Plots average jet mass versus pT
2 // and jet mass distributions for representative bins
3 
4 #include <iostream>
5 #include <vector>
6 
7 #include "TCanvas.h"
8 #include "TLegend.h"
9 #include "TLine.h"
10 #include "TString.h"
11 #include "TFile.h"
12 #include "TH2.h"
13 #include "TGraphErrors.h"
14 #include "TProfile.h"
15 
16 #include "styles.hpp"
17 #include "utilities_macros.hpp"
18 
19 namespace {
20  TString metcut("met<50");
21  TString luminosity="2.25"; // in ifb
22  TString plot_type=".pdf";
23  TString plot_style="CMSPaper";
24 }
25 
26 using namespace std;
27 
28 int main(){
29 
30  //TString folder_mc="/net/cms2/cms2r0/ald77/archive/2015_07_22/skim_ht1000/";
31  //TString folder_data="/net/cms2/cms2r0/ald77/archive/2015_07_26/skim_ht1000/";
32  //folder_mc = "/net/cms2/cms2r0/babymaker/babies/2015_11_28/mc/";
33  TString folder_mc = "/net/cms2/cms2r0/jaehyeok/babies/2015_11_28/mc/skim_ht1000/";
34  TString folder_data = "/net/cms2/cms2r0/babymaker/babies/2015_11_20/data/hadronic/";
35 
36  vector<TString> s_data_ns;
37  s_data_ns.push_back(folder_data+"*JetHT*");
38  vector<TString> s_tt;
39  s_tt.push_back(folder_mc+"*_TTJets*Lept*");
40  s_tt.push_back(folder_mc+"*_TTJets_HT*");
41  vector<TString> s_singlet;
42  s_singlet.push_back(folder_mc+"*ST*");
43  vector<TString> s_qcd;
44  s_qcd.push_back(folder_mc+"*QCD_HT*");
45  // s_qcd.push_back("/net/cms5/cms5r0/ald77/archive/2015_06_05/*QCD_Pt*");
46  vector<TString> s_other;
47  s_other.push_back(folder_mc+"*TTW*");
48  s_other.push_back(folder_mc+"*TTZ*");
49  s_other.push_back(folder_mc+"*_ZJet*");
50  s_other.push_back(folder_mc+"*DY*");
51  s_other.push_back(folder_mc+"*WJetsToLNu_HT*");
52  s_other.push_back(folder_mc+"*WH_HToBB*");
53  s_other.push_back(folder_mc+"*ggZH_HToBB*");
54  s_other.push_back(folder_mc+"*ttHJetTobb*");
55 
56  // Reading ntuples
57  vector<sfeats> Samples;
58  Samples.push_back(sfeats(s_data_ns, "Data", 1, -1, "trig[12]")); Samples.back().isData = true;
59  Samples.push_back(sfeats(s_qcd, "QCD", dps::c_qcd));
60  Samples.push_back(sfeats(s_tt, "t#bar{t}", dps::c_tt_1l, 1));
61  Samples.push_back(sfeats(s_singlet, "Single top", dps::c_singlet));
62  Samples.push_back(sfeats(s_other, "Other", dps::c_other));
63 
64  vector<int> ra4_sam;
65  ra4_sam.push_back(0);
66  ra4_sam.push_back(1);
67  ra4_sam.push_back(2);
68  ra4_sam.push_back(3);
69  ra4_sam.push_back(4);
70 
71  vector<hfeats> vars;
72 
73  vars.push_back(hfeats("fjets_m",50,0,500, ra4_sam, "m(J) [GeV]",
74  "pass&&ht>1000&&"+metcut+"&&(nvmus+nvels)==0&&njets>=7&&njets<=9",0));
75  vars.back().whichPlots = "1"; vars.back().normalize = true;
76 
77  vars.push_back(hfeats("fjets_m",50,0,500, ra4_sam, "m(J) [GeV]",
78  "pass&&ht>1000&&"+metcut+"&&(nvmus+nvels)==0&&njets>=10",0));
79  vars.back().whichPlots = "1"; vars.back().normalize = true;
80 
81  vars.push_back(hfeats("mj",50,0,1500, ra4_sam, "M_{J} [GeV]",
82  "pass&&ht>1000&&"+metcut+"&&(nvmus+nvels)==0&&njets>=7&&njets<=9",0));
83  vars.back().whichPlots = "1"; vars.back().normalize = true;
84 
85  vars.push_back(hfeats("mj",50,0,1500, ra4_sam, "M_{J} [GeV]",
86  "pass&&ht>1000&&"+metcut+"&&(nvmus+nvels)==0&&njets>=10",0));
87  vars.back().whichPlots = "1"; vars.back().normalize = true;
88 
89  plot_distributions(Samples, vars, luminosity, plot_type, plot_style, "1d_2015d",true);
90 
91 /*
92  double ptBinEdges[30] = {50, 60, 70, 80, 90,
93  100, 110, 120, 130, 140,
94  150, 160, 170, 180, 190,
95  200, 210, 220, 230, 240,
96  250, 300, 350, 400, 450,
97  500, 550, 600, 650, 700};
98 
99  TH2D *jetmass_vs_pt_data = new TH2D("jetmass_vs_pt_data", "jetmass_vs_pt_data", 29, ptBinEdges, 100, 0.,100.);
100  jetmass_vs_pt_data->Sumw2();
101  TH2D *jetmass_vs_pt_MC = new TH2D("jetmass_vs_pt_MC", "jetmass_vs_pt_MC", 29, ptBinEdges, 100, 0.,100.);
102  jetmass_vs_pt_MC->Sumw2();
103 
104  TChain *filesData = new TChain("tree");
105  filesData->Add(s_data_ns.at(0));
106 
107  TChain *filesMC = new TChain("tree");
108  filesMC->Add(s_tt.at(0));
109  filesMC->Add(s_singlet.at(0));
110  filesMC->Add(s_qcd.at(0));
111  for(unsigned int i=0; i<s_other.size(); i++) filesMC->Add(s_other.at(i));
112 
113  // make 2-d histograms for projections
114  TString cuts("ht>1000&&"+metcut+"&&(nvmus+nvels)==0");
115  filesData->Project("jetmass_vs_pt_data", "jets_m:jets_pt", "weight*(trig[12] && json && "+cuts+")");
116  filesMC->Project("jetmass_vs_pt_MC", "jets_m:jets_pt", "weight*("+cuts+")");
117 
118  styles style("CMSPaper");
119  //some small modifications for ratios
120  style.nDivisions = 706;
121  style.LabelSize *=1.1;
122  style.LegendSize *=1.2;
123  style.TitleSize *=1.2;
124  style.yTitleOffset /=1.3;
125  style.setDefaultStyle();
126 
127  jetmass_vs_pt_MC->Print();
128  jetmass_vs_pt_MC->ProfileY()->Print();
129  jetmass_vs_pt_data->Print();
130  jetmass_vs_pt_data->ProfileY()->Print();
131  TH1D *data = new TH1D("hdata", "hdata", 29, ptBinEdges); data->Sumw2();
132  TH1D *MC = new TH1D("hmc", "", 29, ptBinEdges); MC->Sumw2();
133  for (int i=1; i<30; i++){
134  TH1D* htempdata = static_cast<TH1D*>(jetmass_vs_pt_data->ProjectionY(TString::Format("hdata_%i",i),i,i));
135  data->SetBinContent(i, htempdata->GetMean());
136  data->SetBinError(i, htempdata->GetMeanError());
137  TH1D* htempmc = static_cast<TH1D*>(jetmass_vs_pt_MC->ProjectionY(TString::Format("hmc_%i",i),i,i));
138  MC->SetBinContent(i, htempmc->GetMean());
139  MC->SetBinError(i, htempmc->GetMeanError());
140  }
141 
142  TCanvas* can = new TCanvas();
143  can->cd();
144  TPad *pad(NULL), *bpad(NULL); //bpad (stands for bottom pad) is for ratio
145  float bpadHeight = 0.3;
146  pad = new TPad("tpad","tpad",0.,bpadHeight,1.,1.); // assign
147  pad->SetBottomMargin(0.02);
148  pad->SetTopMargin(style.PadTopMargin+0.01);
149  pad->Draw();
150  bpad = new TPad("bpad","bpad",0.,0.,1.,bpadHeight+0.005); // assign
151  bpad->SetTopMargin(0.);
152  bpad->SetBottomMargin(2.35*style.PadBottomMargin);
153  bpad->SetFillStyle(4000);
154  bpad->Draw();
155 
156  pad->cd();
157  MC->SetMinimum(0);
158  MC->GetYaxis()->SetRangeUser(0.,70.);
159  MC->GetXaxis()->SetLabelOffset(1.5);
160  MC->SetMarkerStyle(kFullCircle);
161  MC->SetMarkerColor(kRed);
162  MC->SetMarkerSize(0.6);
163  MC->SetLineWidth(2);
164  // MC->SetTitle(cuts2title(cuts));
165  // MC->GetYaxis()->SetTitle("Mean AK4 jet mass [GeV]");
166  MC->Draw("e x0");
167  data->SetMarkerStyle(kOpenSquare);
168  data->SetMarkerColor(kBlack);
169  data->SetMarkerSize(0.6);
170  data->SetLineColor(kBlack);
171  data->SetLineWidth(2);
172  data->Draw("e x0 same");
173 
174  TString cmslabel = "#font[62]{CMS} #scale[0.8]{#font[52]{Preliminary}}";
175  TString lumilabel = TString::Format("L = %1.f",luminosity.Atof()*1000.)+" pb^{-1} (13 TeV)";
176  style.setTitles(MC, "", "Mean AK4 jet mass [GeV]", cmslabel, lumilabel);
177 
178  TLegend *leg = new TLegend(0.6, 0.3, 0.8, 0.5);
179  leg->AddEntry(data, "Data", "P");
180  leg->AddEntry(MC, "MC", "P");
181  leg->SetBorderSize(0);
182  leg->SetFillStyle(0);
183  leg->Draw();
184 
185 
186 
187  // // ------- RATIO ---------
188  TH1D* hratio = static_cast<TH1D*>(data->Clone());
189  hratio->SetTitle("");
190  hratio->Divide(MC);
191  hratio->GetYaxis()->SetRangeUser(0.925,1.075);
192  hratio->GetXaxis()->SetLabelSize(style.LabelSize*2.2);
193  hratio->GetYaxis()->SetLabelSize(style.LabelSize*2.1);
194  hratio->GetYaxis()->SetTitle("Data / MC ");
195  hratio->GetXaxis()->SetTitle("AK4 jet p_{T} [GeV]");
196  hratio->GetYaxis()->SetTitleSize(style.TitleSize*3);
197  hratio->GetYaxis()->SetTitleOffset(0.5); //can't use relative size, since somehow it changes between plots...
198  hratio->GetXaxis()->SetTitleSize(style.TitleSize*3);
199  hratio->GetXaxis()->SetTitleOffset(style.xTitleOffset*0.9);
200  hratio->SetMarkerStyle(kFullCircle);
201  hratio->SetMarkerColor(kBlack);
202  hratio->SetMarkerSize(0.6);
203  hratio->SetLineColor(kBlack);
204  hratio->SetLineWidth(2);
205  //line at 1
206  bpad->cd();
207  hratio->Draw("e x0");
208  TLine* l1 = new TLine(data->GetXaxis()->GetXmin(), 1., data->GetXaxis()->GetXmax(), 1.);
209  l1->SetLineStyle(2);
210  l1->Draw("same");
211 
212  can->SaveAs("plots/1d_2015d/mass_versus_pt2.pdf");
213 */
214 }
void plot_distributions(std::vector< sfeats > Samples, std::vector< hfeats > vars, TString luminosity="10", TString filetype=".eps", TString namestyle="LargeLabels", TString dir="1d", bool doRatio=false, bool showcuts=false)
STL namespace.
int main()