ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
plot_talk.cxx
Go to the documentation of this file.
1 // plot_note: Macro that plots variables both lumi weighted and normalized to the same area.
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 ntuple_date("2015_05_25");
20  TString minjets("7"), midjets("9");
21  TString mjthresh("400");
22  TString luminosity="10";
23  TString plot_type=".pdf";
24  TString plot_style="RA4";
25  int section(10);
26 }
27 
28 using namespace std;
29 using std::cout;
30 using std::endl;
31 
32 int main(){
33  TString folder="/cms5r0/ald77/archive/"+ntuple_date+"/skim/";
34  TString folder_ns="/cms5r0/ald77/archive/"+ntuple_date+"/";
35  folder="/afs/cern.ch/user/m/manuelf/work/ucsb/2015_05_25/skim/";
36  folder_ns="/afs/cern.ch/user/m/manuelf/work/ucsb/2015_06_05/skim/";
37 
38 
39  vector<TString> s_t1t;
40  s_t1t.push_back(folder+"*T1tttt*1500_*PU20*");
41  vector<TString> s_t1tc;
42  s_t1tc.push_back(folder+"*T1tttt*1200_*PU20*");
43  vector<TString> s_tt;
44  s_tt.push_back(folder+"*_TTJet*");
45  vector<TString> s_wjets;
46  s_wjets.push_back(folder+"*_WJets*");
47  vector<TString> s_singlet;
48  s_singlet.push_back(folder+"*_T*channel*");
49  vector<TString> s_ttv;
50  s_ttv.push_back(folder+"*TTW*");
51  s_ttv.push_back(folder+"*TTZ*");
52  vector<TString> s_other;
53  s_other.push_back(folder+"*QCD_HT*");
54  s_other.push_back(folder+"*_ZJet*");
55  s_other.push_back(folder+"*DY*");
56  s_other.push_back(folder+"*WH_HToBB*");
57  s_other.push_back(folder+"*_TTJet*");
58  vector<TString> s_bkg;
59  s_bkg.push_back(folder+"*_TTJet*");
60  s_bkg.push_back(folder+"*_WJets*");
61  s_bkg.push_back(folder+"*_T*channel*");
62  s_bkg.push_back(folder+"*TTW*");
63  s_bkg.push_back(folder+"*TTZ*");
64  s_bkg.push_back(folder+"*QCD_HT*");
65  s_bkg.push_back(folder+"*_ZJet*");
66  s_bkg.push_back(folder+"*DY*");
67  s_bkg.push_back(folder+"*WH_HToBB*");
68  vector<TString> s_bkgmtt;
69  s_bkgmtt.push_back(folder+"*_WJets*");
70  s_bkgmtt.push_back(folder+"*_T*channel*");
71  s_bkgmtt.push_back(folder+"*TTW*");
72  s_bkgmtt.push_back(folder+"*TTZ*");
73  s_bkgmtt.push_back(folder+"*QCD_HT*");
74  s_bkgmtt.push_back(folder+"*_ZJet*");
75  s_bkgmtt.push_back(folder+"*DY*");
76  s_bkgmtt.push_back(folder+"*WH_HToBB*");
77 
78  // Reading ntuples
79  vector<sfeats> Samples;
80  Samples.push_back(sfeats(s_t1t, "T1tttt(1500,100)", ra4::c_t1tttt));
81  //if(section==10) Samples.back().doStack = true;
82  Samples.push_back(sfeats(s_t1tc, "T1tttt(1200,800)", ra4::c_t1tttt,2));
83  //if(section==10) Samples.back().doStack = true;
84  Samples.push_back(sfeats(s_tt, "t#bar{t}, 1 l", ra4::c_tt_1l, 1,"ntruleps==1"));
85  Samples.push_back(sfeats(s_tt, "t#bar{t}, 2 l", ra4::c_tt_2l,1,"ntruleps>=2"));
86  Samples.push_back(sfeats(s_wjets, "W+jets", ra4::c_wjets));
87  Samples.push_back(sfeats(s_singlet, "Single t", ra4::c_singlet));
88  Samples.push_back(sfeats(s_ttv, "ttV", ra4::c_ttv));
89  // Some of Other has leptons, but very little, and this is the easiest to put had tt with QCD
90  Samples.push_back(sfeats(s_other, "Other", ra4::c_other, 1,"ntruleps==0"));
91 
92  // Adding non-skimmed samples
93  vector<int> ra4_sam, ra4_sam_ns;
94  unsigned nsam(Samples.size());
95  for(unsigned sam(0); sam < nsam; sam++){
96  ra4_sam.push_back(sam);
97  ra4_sam_ns.push_back(nsam+sam);
98  vector<TString> sam_files = Samples[sam].file;
99  for(unsigned ifile(0); ifile < sam_files.size(); ifile++)
100  sam_files[ifile].ReplaceAll(folder, folder_ns);
101  Samples.push_back(sfeats(sam_files, Samples[sam].label, Samples[sam].color, Samples[sam].style,
102  Samples[sam].cut));
103  Samples.back().doStack = Samples[sam].doStack;
104  } // Loop over samples
105 
106  // Other samples
107  unsigned isec1 = Samples.size();
108  Samples.push_back(sfeats(s_t1t, "True", ra4::c_t1tttt,1,"1","ntruels+ntrumus"));
109  Samples.push_back(sfeats(s_t1t, "Reco Rel. iso.", kGreen+2,2,"1","nels_reliso+nmus_reliso"));
110  Samples.push_back(sfeats(s_t1t, "Reco Mini iso.", 4,2,"1","nels+nmus"));
111 
112  unsigned isec6 = Samples.size();
113  Samples.push_back(sfeats(s_bkg, "All bkg, m_{T} #leq 140", 1, 1,"mt<=140"));
114  Samples.push_back(sfeats(s_bkg, "All bkg, m_{T} > 140", 2, -1,"mt>140"));
115  Samples.push_back(sfeats(s_tt, "t#bar{t}, m_{T} #leq 140", 1, 1,"mt<=140"));
116  Samples.push_back(sfeats(s_tt, "t#bar{t}, m_{T} > 140", 2, -1,"mt>140"));
117  Samples.push_back(sfeats(s_bkgmtt, "Non-tt bkg, m_{T} #leq 140", 1, 1,"mt<=140"));
118  Samples.push_back(sfeats(s_bkgmtt, "Non-tt bkg, m_{T} > 140", 2, -1,"mt>140"));
119  // Samples.push_back(sfeats(s_tt, "t#bar{t} 1l, m_{T} #leq 140", 1, 1,"ntruleps==1&&mt<=140"));
120  // Samples.push_back(sfeats(s_tt, "t#bar{t} 1l, m_{T} > 140", 3, -1,"ntruleps==1&&mt>140"));
121  // Samples.push_back(sfeats(s_tt, "t#bar{t} 2l, m_{T} #leq 140", 2, -1,"ntruleps>=2&&mt<=140"));
122  // Samples.push_back(sfeats(s_tt, "t#bar{t} 2l, m_{T} > 140", 4, -1,"ntruleps>=2&&mt>140"));
123 
124 
125  vector<int> ra4_sec1;
126  ra4_sec1.push_back(isec1);
127  ra4_sec1.push_back(isec1+1);
128  ra4_sec1.push_back(isec1+2);
129 
130  vector<int> ra4_sec6, ra4_sec6_bkg, ra4_sec6_bkgmtt;
131  ra4_sec6_bkg.push_back(isec6);
132  ra4_sec6_bkg.push_back(isec6+1);
133  ra4_sec6.push_back(isec6+2);
134  ra4_sec6.push_back(isec6+3);
135  ra4_sec6_bkgmtt.push_back(isec6+4);
136  ra4_sec6_bkgmtt.push_back(isec6+5);
137 
138  vector<int> ra4_sec10;
139  ra4_sec10.push_back(0);
140  ra4_sec10.push_back(1);
141  ra4_sec10.push_back(2);
142  ra4_sec10.push_back(3);
143 
144  vector<int> ra4_tt_t1_noskim;
145  ra4_tt_t1_noskim.push_back(nsam);
146  ra4_tt_t1_noskim.push_back(nsam+1);
147  ra4_tt_t1_noskim.push_back(nsam+2);
148 
149 
150  vector<hfeats> vars;
151 
152  TString cuts("(nmus+nels)==1");
153  switch(section){
154  case 1: // Intro
155  vars.push_back(hfeats("ntruels+ntrumus",5,-0.5,4.5, ra4_sec1, "Number of prompt e+#mu in T1tttt(1500,100)"));
156  break;
157  case 2: // MJ-mT plane
158  cuts = "(nmus+nels)==1&&ht>500&&met>200&&njets>=7&&nbm>=2&&met>400";
159  vars.push_back(hfeats("mt",25,0,500, ra4_sam, "m_{T} [GeV]",cuts,140));
160  cuts += "&&mt>140";
161  vars.push_back(hfeats("mj",32,0,1600, ra4_sam, "M_{J} [GeV]",cuts,400));
162  cuts = "(nmus+nels)==1&&ht>500&&met>200&&njets>=9&&nbm>=2&&met>400";
163  vars.push_back(hfeats("mt",25,0,500, ra4_sam, "m_{T} [GeV]",cuts,140));
164  cuts += "&&mt>140";
165  vars.push_back(hfeats("mj",32,0,1600, ra4_sam, "M_{J} [GeV]",cuts,400));
166 
167  case 5: // Event selection - N-1 plots
168  vars.push_back(hfeats("ht",35,0,3500, ra4_sam_ns, "H_{T} [GeV]",
169  "(nmus+nels)==1&&met>200&&njets>="+minjets+"&&nbm>=2",500));
170  cuts += "&&ht>500";
171  vars.push_back(hfeats("met",40,0,800, ra4_sam_ns, "MET [GeV]",
172  "(nmus+nels)==1&&ht>500&&njets>="+minjets+"&&nbm>=2",200));
173  cuts += "&&met>200";
174  vars.push_back(hfeats("njets",18,-0.5,17.5, ra4_sam, "Number of jets",
175  "(nmus+nels)==1&&ht>500&&met>200&&nbm>=2",6.5));
176  cuts += "&&njets>="+minjets;
177  vars.push_back(hfeats("nbm",7,-0.5,6.5, ra4_sam, "Number of b-tags (CSVM)",
178  "(nmus+nels)==1&&ht>500&&met>200&&njets>="+minjets,1.5));
179  cuts += "&&nbm>=2";
180  vars.push_back(hfeats("mt",25,0,500, ra4_sam, "m_{T} [GeV]",cuts,140));
181  cuts += "&&mt>140";
182  vars.push_back(hfeats("mj",32,0,1600, ra4_sam, "M_{J} [GeV]",cuts,mjthresh.Atof()));
183 
184  break;
185 
186  case 6: // Background estimation
187  cuts += "&&ht>500&&met>200";
188  cuts += "&&nbm>=2";
189  vars.push_back(hfeats("mj",28,0,1400, ra4_sec6, "M_{J} [GeV]",cuts+"&&njets<=4", mjthresh.Atof()));
190  vars.push_back(hfeats("mj",28,0,1400, ra4_sec6, "M_{J} [GeV]",cuts+"&&njets>=5&&njets<=6", mjthresh.Atof()));
191  vars.push_back(hfeats("mj",28,0,1400, ra4_sec6, "M_{J} [GeV]",cuts+"&&njets>=7&&njets<=8", mjthresh.Atof()));
192  vars.push_back(hfeats("mj",28,0,1400, ra4_sec6, "M_{J} [GeV]",cuts+"&&njets>=9", mjthresh.Atof()));
193 
194  vars.push_back(hfeats("njets",7,-0.5,6.5, ra4_sec6, "Number of jets",cuts+"&&njets<=6"));
195  vars.push_back(hfeats("njets",6,6.5,12.5, ra4_sec6, "Number of jets",cuts+"&&njets>=7"));
196 
197  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkg, "M_{J} [GeV]",cuts+"&&njets<=4", mjthresh.Atof(), "bkg"));
198  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkg, "M_{J} [GeV]",cuts+"&&njets>=5&&njets<=6", mjthresh.Atof(), "bkg"));
199  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkg, "M_{J} [GeV]",cuts+"&&njets>=7&&njets<=8", mjthresh.Atof(), "bkg"));
200  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkg, "M_{J} [GeV]",cuts+"&&njets>=9", mjthresh.Atof(), "bkg"));
201 
202  // vars.push_back(hfeats("njets",7,-0.5,6.5, ra4_sec6_bkg, "Number of jets",cuts+"&&njets<=6",-1, "bkg"));
203  // vars.push_back(hfeats("njets",6,6.5,12.5, ra4_sec6_bkg, "Number of jets",cuts+"&&njets>=7",-1, "bkg"));
204 
205  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkgmtt, "M_{J} [GeV]",cuts+"&&njets<=4", mjthresh.Atof(), "bkgmtt"));
206  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkgmtt, "M_{J} [GeV]",cuts+"&&njets>=5&&njets<=6", mjthresh.Atof(), "bkgmtt"));
207  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkgmtt, "M_{J} [GeV]",cuts+"&&njets>=7&&njets<=8", mjthresh.Atof(), "bkgmtt"));
208  // vars.push_back(hfeats("mj",28,0,1400, ra4_sec6_bkgmtt, "M_{J} [GeV]",cuts+"&&njets>=9", mjthresh.Atof(), "bkgmtt"));
209 
210  // vars.push_back(hfeats("njets",7,-0.5,6.5, ra4_sec6_bkgmtt, "Number of jets",cuts+"&&njets<=6",-1, "bkgmtt"));
211  // vars.push_back(hfeats("njets",6,6.5,12.5, ra4_sec6_bkgmtt, "Number of jets",cuts+"&&njets>=7",-1, "bkgmtt"));
212 
213  // vars.push_back(hfeats("njets",7,-0.5,6.5, ra4_sam, "Number of jets",cuts+"&&njets<=6&&mt<=140", -1, "components"));
214  // vars.push_back(hfeats("njets",7,-0.5,6.5, ra4_sam, "Number of jets",cuts+"&&njets<=6&&mt>140", -1, "components"));
215  // vars.push_back(hfeats("njets",6,6.5,12.5, ra4_sam, "Number of jets",cuts+"&&njets>=7&&mt<=140", -1, "components"));
216  // vars.push_back(hfeats("njets",6,6.5,12.5, ra4_sam, "Number of jets",cuts+"&&njets>=7&&mt>140", -1, "components"));
217 
218  break;
219  case 7: // HT distributions to compare MC stats with tt HT binning
220  vars.push_back(hfeats("ht",30,500,3500, ra4_sam, "H_{T} [GeV]",
221  "(nmus+nels)==1&&met>200&&njets>=7&&nbm>=2&&mt>140",500));
222  vars.push_back(hfeats("ht",30,500,3500, ra4_sam, "H_{T} [GeV]",
223  "(nmus+nels)==1&&met>200&&njets>=7&&nbm>=2&&mt>140&&mj>400",500));
224  vars.push_back(hfeats("ht",30,500,3500, ra4_sam, "H_{T} [GeV]",
225  "(nmus+nels)==1&&met>200&&njets>=7&&nbm>=2&&mt>140&&njets>=9",500));
226 
227  case 10: // Corroborators
228  cuts = "(nmus+nels)==1&&ht>500&&met>200&&njets>=7";
229  vars.push_back(hfeats("fjets08_m[0]",60,0,600, ra4_sec10, "m(J_{1}) [GeV]",cuts));
230  vars.push_back(hfeats("fjets08_m[1]",60,0,300, ra4_sec10, "m(J_{2}) [GeV]",cuts));
231  vars.push_back(hfeats("fjets08_m[2]",60,0,300, ra4_sec10, "m(J_{3}) [GeV]",cuts));
232 
233  cuts = "(nmus+nels)==1&&ht>500&&met>200&&nbm>=2&&njets>=7&&mt>140&&mj>400";
234  vars.push_back(hfeats("fjets08_m[0]",12,0,600, ra4_sam, "m(J_{1}) [GeV]",cuts));
235  vars.back().maxYaxis = 18;
236  vars.push_back(hfeats("fjets08_m[1]",12,0,300, ra4_sam, "m(J_{2}) [GeV]",cuts));
237  vars.back().maxYaxis = 20;
238  vars.push_back(hfeats("fjets08_m[2]",12,0,300, ra4_sam, "m(J_{3}) [GeV]",cuts));
239  vars.back().maxYaxis = 29;
240  vars.push_back(hfeats("min_dphi_bb",8,0,3.2, ra4_sam_ns, "Minimum #Delta#phi(b,b)",cuts));
241  vars.back().maxYaxis = 10.5;
242 
243  cuts = "(nmus+nels)==1&&ht>500&&met>400&&nbm>=2&&njets>=7&&mt>140&&mj>400";
244  vars.push_back(hfeats("fjets08_m[0]",12,0,600, ra4_sam, "m(J_{1}) [GeV]",cuts));
245  vars.back().maxYaxis = 18;
246  vars.push_back(hfeats("fjets08_m[1]",12,0,300, ra4_sam, "m(J_{2}) [GeV]",cuts));
247  vars.back().maxYaxis = 20;
248  vars.push_back(hfeats("fjets08_m[2]",12,0,300, ra4_sam, "m(J_{3}) [GeV]",cuts));
249  vars.back().maxYaxis = 29;
250  vars.push_back(hfeats("min_dphi_bb",8,0,3.2, ra4_sam_ns, "Minimum #Delta#phi(b,b)",cuts));
251  vars.back().maxYaxis = 10.5;
252 
253  default:
254  break;
255  }
256 
258 
259 
260 }
261 
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)
int main()
Definition: plot_talk.cxx:32
STL namespace.
TString ntuple_date("2015_05_25")