ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
plot_dps.cxx
Go to the documentation of this file.
1 // plot_dps: Macro that plots variables both for comissioning DPS
2 
3 #include <iostream>
4 #include <vector>
5 
6 #include "TChain.h"
7 #include "TH1D.h"
8 #include "TCanvas.h"
9 #include "TLegend.h"
10 #include "TLine.h"
11 #include "TString.h"
12 #include "TColor.h"
13 
14 #include "styles.hpp"
15 #include "utilities.hpp"
16 #include "utilities_macros.hpp"
17 
18 namespace {
19  TString minjets("5");
20  TString mjthresh("400");
21  TString metcut("met_nohf>175");
22  TString minht("400");
23  TString minbm("1");
24  TString luminosity="0.0419"; // in ifb
25  TString plot_type=".pdf";
26  TString plot_style="CMSPaper";
27 }
28 
29 using namespace std;
30 using std::cout;
31 using std::endl;
32 
33 int main(){
34  TString folder_ns="/net/cms2/cms2r0/ald77/archive/2015_07_22/";
35  TString folder_nsdata="/net/cms2/cms2r0/ald77/archive/2015_07_26/";
36  TString folder_1l = "/net/cms2/cms2r0/ald77/archive/2015_07_22/skim_1lht400/";
37  TString folder_1ldata = "/net/cms2/cms2r0/ald77/archive/2015_07_26/skim_1lht400/";
38  folder_1l = "/net/cms2/cms2r0/ald77/archive/2015_08_13/skim_1lht400/";
39  folder_1ldata = "/net/cms2/cms2r0/ald77/archive/2015_08_17/skim_1lht400/";
40  TString folder_2l="/net/cms2/cms2r0/ald77/archive/2015_07_22/skim_2l/";
41  TString folder_2ldata="/net/cms2/cms2r0/ald77/archive/2015_07_26/skim_2l/";
42  folder_2l = "/net/cms2/cms2r0/ald77/archive/2015_08_13/skim_2l/";
43  folder_2ldata = "/net/cms2/cms2r0/ald77/archive/2015_08_17/skim_2l/";
44 
45  vector<TString> s_trig_htmht;
46  s_trig_htmht.push_back(folder_1ldata+"*HTMHT*");
47  vector<TString> s_trig_dl;
48  s_trig_dl.push_back(folder_2ldata+"/*DoubleMu*");
49  s_trig_dl.push_back(folder_2ldata+"/*DoubleE*");
50  vector<TString> s_trig_sl;
51  s_trig_sl.push_back(folder_2ldata+"/*Single*");
52  vector<TString> s_trig_dmu;
53  s_trig_dmu.push_back(folder_2ldata+"/*DoubleMu*");
54  vector<TString> s_trig_del;
55  s_trig_del.push_back(folder_2ldata+"/*DoubleE*");
56 
57 
58  vector<TString> s_t1t;
59  //s_t1t.push_back(folder_1l+"*T1tttt*1500_*PU20*");
60  s_t1t.push_back("/net/cms2/cms2r0/ald77/archive/2015_07_22/skim_1lht400/*T1tttt*1500_*PU20*");
61  vector<TString> s_t1tc;
62  //s_t1tc.push_back(folder_1l+"*T1tttt*1200_*PU20*");
63  s_t1tc.push_back("/net/cms2/cms2r0/ald77/archive/2015_07_22/skim_1lht400/*T1tttt*1200_*PU20*");
64  vector<TString> s_t1t_ns;
65  s_t1t_ns.push_back(folder_ns+"*T1tttt*1500_*PU20*");
66  vector<TString> s_t1tc_ns;
67  s_t1tc_ns.push_back(folder_ns+"*T1tttt*1200_*PU20*");
68  vector<TString> s_tt;
69  s_tt.push_back(folder_1l+"*_TTJet*50ns*");
70  vector<TString> s_tt_ns;
71  s_tt_ns.push_back(folder_2l+"*_TTJet*50ns*");
72  vector<TString> s_wjets;
73  s_wjets.push_back(folder_1l+"*_WJets*");
74  vector<TString> s_singlet;
75  s_singlet.push_back(folder_1l+"*ST_*");
76  vector<TString> s_DY;
77  s_DY.push_back(folder_2l+"*DY*");
78  vector<TString> s_qcd;
79  s_qcd.push_back(folder_1l+"*QCD_Pt*");
80  vector<TString> s_ttv; //negligible
81  s_ttv.push_back(folder_2l+"*TTW*");
82  s_ttv.push_back(folder_2l+"*TTZ*");
83  vector<TString> s_other;
84  s_other.push_back(folder_1l+"*_ZJet*");
85  s_other.push_back(folder_1l+"*DY*");
86  s_other.push_back(folder_1l+"*WH_HToBB*");
87  //s_other.push_back(folder_1l+"*_TTJet*25ns*");
88  s_other.push_back(folder_2l+"*TTW*");
89  s_other.push_back(folder_2l+"*TTZ*");
90  vector<TString> s_qcdDY;
91  s_qcdDY.push_back(folder_2l+"*QCD_Pt*");
92  vector<TString> s_otherDY;
93  s_otherDY.push_back(folder_2l+"*_ZJet*");
94  s_otherDY.push_back(folder_2l+"*WH_HToBB*");
95  s_otherDY.push_back(folder_2l+"*ST_*");
96  s_otherDY.push_back(folder_2l+"*_WJets*");
97 
98  // Reading ntuples
99  vector<sfeats> Samples;
100  TString datatitle = "Data";
101  Samples.push_back(sfeats(s_trig_htmht, datatitle,kBlack,1,"trig[0]&&json_golden")); Samples.back().isData = true;
102  Samples.push_back(sfeats(s_tt, "t#bar{t}, 1 true lepton", dps::c_tt_1l, 1,"ntruleps<=1"));
103  Samples.push_back(sfeats(s_tt, "t#bar{t}, 2 true leptons", dps::c_tt_2l,1,"ntruleps>=2"));
104  Samples.push_back(sfeats(s_wjets, "W+jets", dps::c_wjets,1));
105  Samples.push_back(sfeats(s_singlet, "Single top", dps::c_singlet));
106  //Samples.push_back(sfeats(s_ttv, "ttV", ra4::c_ttv));
107  Samples.push_back(sfeats(s_qcd, "QCD", dps::c_qcd));
108  // Some of Other has leptons, but very little, and this is the easiest to put had tt with QCD
109  //Samples.push_back(sfeats(s_other, "Other", dps::c_other, 1,"ntruleps==0"));
110  Samples.push_back(sfeats(s_other, "Other", dps::c_other, 1));
111 
112  vector<int> ra4_sam, ra4_sam_ns;
113  unsigned nsam(Samples.size());
114  for(unsigned sam(0); sam < nsam; sam++){
115  ra4_sam.push_back(sam);
116  ra4_sam_ns.push_back(nsam+sam);
117  vector<TString> sam_files = Samples[sam].file;
118  for(unsigned ifile(0); ifile < sam_files.size(); ifile++)
119  if(Samples[sam].isData) sam_files[ifile].ReplaceAll(folder_1ldata, folder_nsdata);
120  else sam_files[ifile].ReplaceAll(folder_1l, folder_ns);
121  Samples.push_back(sfeats(sam_files, Samples[sam].label, Samples[sam].color, Samples[sam].style,
122  Samples[sam].cut));
123  Samples.back().isData = Samples[sam].isData;
124  } // Loop over samples
125 
126  int imj(Samples.size());
127  Samples.push_back(sfeats(s_trig_htmht, "Data 2l, N_{jets} #geq 4",kBlack,1,
128  "trig[0]&&njets>=4&&(nvmus+nvels)==2&&json_golden")); Samples.back().isData = true;
129  Samples.push_back(sfeats(s_trig_htmht, "Data 1l, N_{jets} #geq 5, m_{T}#leq140, n_{b}#geq1",dps::c_tt_1l,1,
130  "trig[0]&&njets>=5&&(nvmus+nvels)==1&&mt<=140&&nbm>=1&&json_golden")); //Samples.back().isData = true;
131  vector<int> mj_sam;
132  mj_sam.push_back(imj);
133  mj_sam.push_back(imj+1);
134 
135  int idl(Samples.size());
136  // Samples.push_back(sfeats(s_trig_dl, "Data",kBlack,1,
137  // "(trig[10]||trig[9])&&json_golden")); Samples.back().isData = true;
138  Samples.push_back(sfeats(s_trig_sl, "Data",kBlack,1,
139  "(trig[18]||trig[22])&&json_golden")); Samples.back().isData = true;
140  Samples.push_back(sfeats(s_DY, "Z+jets", dps::c_qcd));//12
141  Samples.push_back(sfeats(s_tt_ns, "t#bar{t}, 2 true leptons", dps::c_tt_2l,1,"ntruleps>=2"));
142  Samples.push_back(sfeats(s_tt_ns, "t#bar{t}, 1 true lepton", dps::c_tt_1l, 1,"ntruleps==1"));
143  Samples.push_back(sfeats(s_qcdDY, "QCD", dps::c_singlet));
144  Samples.push_back(sfeats(s_ttv, "ttV", ra4::c_ttv));
145  Samples.push_back(sfeats(s_otherDY, "Other", dps::c_other));
146  vector<int> dl_sam;
147  for(unsigned sam(idl); sam < Samples.size(); sam++) {
148  dl_sam.push_back(sam);
149  }
150  vector<int> dmu_sam(dl_sam), del_sam(dl_sam);
151  Samples.push_back(sfeats(s_trig_dmu, "Data",kBlack,1,
152  "(trig[9])&&json_golden")); Samples.back().isData = true;
153  Samples.push_back(sfeats(s_trig_del, "Data",kBlack,1,
154  "(trig[10])&&json_golden")); Samples.back().isData = true;
155  dmu_sam[0] = Samples.size()-2;
156  del_sam[0] = Samples.size()-1;
157 
158  // Defining samples with signal
159  TString factor_c("100"), factor_nc("300");
160  int isig(Samples.size());
161  Samples.push_back(sfeats(s_t1t, "Sig NC #times "+factor_nc, kRed+2)); Samples.back().factor = factor_nc;
162  Samples.push_back(sfeats(s_t1tc, "Sig C #times "+factor_c, kRed+2,2)); Samples.back().factor = factor_c;
163  vector<int> sig_sam;
164  sig_sam.push_back(ra4_sam[0]);
165  sig_sam.push_back(isig);
166  sig_sam.push_back(isig+1);
167  for(unsigned ind(1); ind<ra4_sam.size(); ind++)
168  sig_sam.push_back(ra4_sam[ind]);
169 
170  // Defining samples with signal, no skim, for log
171  factor_c = "20"; factor_nc = "20";
172  isig = Samples.size();
173  Samples.push_back(sfeats(s_t1t_ns, "Sig NC #times "+factor_nc, kRed+2)); Samples.back().factor = factor_nc;
174  Samples.push_back(sfeats(s_t1tc_ns, "Sig C #times "+factor_c, kRed+2,2)); Samples.back().factor = factor_c;
175  vector<int> sig_sam_ns;
176  sig_sam_ns.push_back(ra4_sam_ns[0]);
177  sig_sam_ns.push_back(isig);
178  sig_sam_ns.push_back(isig+1);
179  for(unsigned ind(1); ind<ra4_sam.size(); ind++)
180  sig_sam_ns.push_back(ra4_sam_ns[ind]);
181 
182  // Defining samples with signal, for log
183  isig = Samples.size();
184  Samples.push_back(sfeats(s_t1t, "Sig NC #times "+factor_nc, kRed+2)); Samples.back().factor = factor_nc;
185  Samples.push_back(sfeats(s_t1tc, "Sig C #times "+factor_c, kRed+2,2)); Samples.back().factor = factor_c;
186  vector<int> sig_sam_log;
187  sig_sam_log.push_back(ra4_sam[0]);
188  sig_sam_log.push_back(isig);
189  sig_sam_log.push_back(isig+1);
190  for(unsigned ind(1); ind<ra4_sam.size(); ind++)
191  sig_sam_log.push_back(ra4_sam[ind]);
192 
193  vector<hfeats> vars;
194 
195  float minx, maxx; int nbins;
197  vars.push_back(hfeats("fjets_m[0]",16,0,480, ra4_sam, "m(J_{1}) [GeV]",
198  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+
199  "&&"+metcut+"&&njets>=4&&nbm>=1"));
200  vars.back().whichPlots = "2"; vars.back().normalize = true;
201 
202  vars.push_back(hfeats("mj",20,0,600, ra4_sam, "M_{J} [GeV]",
203  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+
204  "&&"+metcut+"&&njets>=4&&nbm>=1"));
205  vars.back().whichPlots = "2"; vars.back().normalize = true;
206 
207  TString mll("(mumuv_m*(mumuv_m>0&&mumu_pt1>25)+elelv_m*(elelv_m>0&&elel_pt1>30))>80&&(mumuv_m*(mumuv_m>0&&mumu_pt1>25)+elelv_m*(elelv_m>0&&elel_pt1>30))<100");
208  minx=0.; maxx=500; nbins=static_cast<int>((maxx-minx)/25.);
209  vars.push_back(hfeats("fjets_m[0]",nbins,minx,maxx, dl_sam, "m(J_{1}) [GeV]",
210  "pass&&ht>250&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
211  vars.back().whichPlots = "2"; vars.back().normalize = true;
212 
213  minx=0.; maxx=600; nbins=static_cast<int>((maxx-minx)/25.);
214  vars.push_back(hfeats("mj",nbins,minx,maxx, dl_sam, "M_{J} [GeV]",
215  "pass&&ht>250&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
216  vars.back().whichPlots = "2"; vars.back().normalize = true;
217 
219 
220  vars.push_back(hfeats("mt",18,0,360, ra4_sam, "m_{T} [GeV]",
221  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+"&&"+metcut+"&&njets>="+minjets+"&&nbm>="+minbm));
222  vars.back().whichPlots = "1"; vars.back().normalize = true;
223 
224  vars.push_back(hfeats("met_nohf",16,0,800, ra4_sam, "MET^{no HF} [GeV]",
225  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+"&&njets>="+minjets+"&&nbm>="+minbm));
226  vars.back().whichPlots = "1"; vars.back().normalize = true;
227 
228  vars.push_back(hfeats("njets",14,-0.5,13.5, ra4_sam, "Number of jets",
229  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+"&&"+metcut+"&&nbm>="+minbm));
230  vars.back().whichPlots = "2"; vars.back().normalize = true;
231 
232  vars.push_back(hfeats("nbm",7,-0.5,6.5, ra4_sam, "Number of b-tags (CSVM)",
233  "pass&&onht>350&&onmet>100&&(nvmus+nvels)==1&&ht>"+minht+"&&"+metcut+"&&njets>="+minjets));
234  vars.back().whichPlots = "2"; vars.back().normalize = true;
235 
236 
237  // // ////////////////////////////// MJ plots for the DPS ////////////////////////////
238  // vars.push_back(hfeats("mj",15,0,600, ra4_sam, "M_{J} [GeV]",
239  // "pass&&onht>350&&onmet>100&&ht>400&&met>150&nbm>=1&&njets>=5&&(nvmus+nvels)==1&&mt<=140"));
240  // vars.back().whichPlots = "2"; vars.back().normalize = true;
241 
242  // vars.push_back(hfeats("mj",15,0,600, ra4_sam, "M_{J} [GeV]",
243  // "pass&&onht>350&&onmet>100&&ht>400&&met>150&&njets>=4&&(nvmus+nvels)==2"));
244  // vars.back().whichPlots = "2"; vars.back().normalize = true;
245 
246  // vars.push_back(hfeats("mj",15,0,600, mj_sam, "M_{J} [GeV]",
247  // "pass&ht>400&&met>150"));
248  // vars.back().whichPlots = "2"; vars.back().normalize = true; //vars.back().maxRatio = 2.2;
249 
250  // TString mll("(mumuv_m*(mumuv_m>0)+elelv_m*(elelv_m>0))>80&&(mumuv_m*(mumuv_m>0)+elelv_m*(elelv_m>0))<100");
251  // vars.push_back(hfeats("mj",15,0,600, dl_sam, "M_{J} [GeV]",
252  // "ht>350&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
253  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
254 
255 
257 
258  // // Invariant masses
259  // vars.push_back(hfeats("mumuv_m",32,20,180, dmu_sam, "m_{#mu#mu} [GeV]",
260  // "ht>350&&nvmus>=2&&njets<=3"));
261  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
262  // vars.push_back(hfeats("elelv_m",32,20,180, del_sam, "m_{ee} [GeV]",
263  // "ht>350&&nvels>=2&&njets<=3"));
264  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
265  // vars.push_back(hfeats("mumuv_m*(mumuv_m>0)+elelv_m*(elelv_m>0)",32,20,180, dl_sam, "m_{ll} [GeV]",
266  // "ht>350&&(nvmus>=2||nvels>=2)&&njets<=3"));
267  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
268 
269 
270  // vars.push_back(hfeats("mumuv_m",32,20,180, dmu_sam, "m_{#mu#mu} [GeV]",
271  // "ht>350&&nvmus>=2&&njets>=4"));
272  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
273  // vars.push_back(hfeats("elelv_m",32,20,180, del_sam, "m_{ee} [GeV]",
274  // "ht>350&&nvels>=2&&njets>=4"));
275  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
276  // vars.push_back(hfeats("mumuv_m*(mumuv_m>0)+elelv_m*(elelv_m>0)",32,20,180, dl_sam, "m_{ll} [GeV]",
277  // "ht>350&&(nvmus>=2||nvels>=2)&&njets>=4"));
278  // vars.back().whichPlots = "2"; //vars.back().normalize = true;
279 
280 
281  // // Kinematic distributions
282  // vars.push_back(hfeats("ht",20,0,1000, dl_sam, "H_{T}^{HLT} [GeV]",
283  // "(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
284  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
285  // vars.push_back(hfeats("njets",9,-0.5,8.5, dl_sam, "N_{jets} [GeV]",
286  // "ht>350&&(nvmus>=2||nvels>=2)&&"+mll));
287  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
288  // vars.push_back(hfeats("fjets_m[0]",20,0,500, dl_sam, "Most massive fat jet mass [GeV]",
289  // "ht>350&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
290  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
291  // vars.push_back(hfeats("nfjets",10,-0.5,9.5, dl_sam, "N_{fat jets}",
292  // "ht>350&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
293  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
294 
295 
296  // // MJ distributions
297  // vars.push_back(hfeats("mj",20,0,600, dl_sam, "M_{J} [GeV]",
298  // "ht>350&&(nvmus>=2||nvels>=2)&&njets<=3&&"+mll));
299  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
300  // vars.push_back(hfeats("mj",20,0,600, dl_sam, "M_{J} [GeV]",
301  // "ht>350&&(nvmus>=2||nvels>=2)&&njets>=4&&"+mll));
302  // vars.back().whichPlots = "2"; // vars.back().normalize = true;
303 
304 
305  // ////////////////////////////// ttbar plots for Ryan's talk ////////////////////////////
306  // vars.push_back(hfeats("mj",15,0,600, ra4_sam, "M_{J} [GeV]",
307  // "onht>350&&onmet>100&&ht>400&&met>150&nbm>=1&&njets>=5&&(nvmus+nvels)==1&&mt<=140"));
308  // vars.back().whichPlots = "2"; vars.back().normalize = true;
309 
310  // vars.push_back(hfeats("mj",15,0,600, ra4_sam, "M_{J} [GeV]",
311  // "onht>350&&onmet>100&&ht>400&&met>150&&njets>=4&&(nvmus+nvels)==2"));
312  // vars.back().whichPlots = "2"; vars.back().normalize = true;
313 
314  plot_distributions(Samples, vars, luminosity, plot_type, plot_style, "1d",true);
315 
316 
317 }
318 
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()
Definition: plot_dps.cxx:33
TString metcut("met_nohf>175")