ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
plot_track_veto_2.cxx
Go to the documentation of this file.
1 // plot_1d: 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 using namespace std;
19 using std::cout;
20 using std::endl;
21 
22 vector<double> GetNEvents(vector<sfeats> AllSamples, vector<int> RelevantSamples, TString cut, TString luminosity);
23 
24 int main(){
25  styles style("RA4"); style.setDefaultStyle();
26  vector< vector<hfeats> > allvars;
27  TString luminosity = "10";
28  TCanvas can;
29 
30  TString folder = "/cms7r0/heller/code/susy_cfa/out/skim/";
31  //TString folder="/cms5r0/ald77/archive/2015_06_05/skim/skim_tight/";
32  TString folder_noskim="archive/15-05-02//";
33  vector<TString> s_tt;
34  s_tt.push_back(folder+"*_TTJet*");
35  vector<TString> s_tt_noskim;
36  s_tt_noskim.push_back(folder_noskim+"*_TTJet*12.root");
37  vector<TString> s_wjets;
38  s_wjets.push_back(folder+"*WJetsToLNu_HT*");
39  vector<TString> s_singlet;
40  s_singlet.push_back(folder+"*_T*channel*");
41  vector<TString> s_ttv;
42  s_ttv.push_back(folder+"*TTW*");
43  s_ttv.push_back(folder+"*TTZ*");
44  vector<TString> s_other;
45  s_other.push_back(folder+"*QCD_HT*");
46  s_other.push_back(folder+"*_ZJet*");
47  s_other.push_back(folder+"*DY*");
48  s_other.push_back(folder+"*WH_HToBB*");
49  vector<TString> s_t1t;
50  s_t1t.push_back(folder+"*T1tttt*1500_*PU20*");
51  vector<TString> s_t1tc;
52  s_t1tc.push_back(folder+"*T1tttt*1200_*PU20*");
53 
54  // Reading ntuples
55  vector<TChain *> chain;
56  vector<sfeats> Samples;
57  Samples.push_back(sfeats(s_t1t, "T1tttt(1500,100)", ra4::c_t1tttt));//0
58  Samples.push_back(sfeats(s_t1tc, "T1tttt(1200,800)", ra4::c_t1tttt,2)); //1
59  Samples.push_back(sfeats(s_tt, "t#bar{t}, 1 l", ra4::c_tt_1l, 1,
60  "ntruleps<=1"));
61  Samples.push_back(sfeats(s_tt, "t#bar{t}, 2 l", ra4::c_tt_2l,1,
62  "ntruleps>=2"));//3
63  Samples.push_back(sfeats(s_wjets, "W+jets", ra4::c_wjets));
64  Samples.push_back(sfeats(s_singlet, "Single t", ra4::c_singlet));//5
65  Samples.push_back(sfeats(s_ttv, "ttV", ra4::c_ttv));
66  Samples.push_back(sfeats(s_other, "Other", ra4::c_other));//7
67  Samples.push_back(sfeats(s_tt_noskim, "t#bar{t}", ra4::c_tt_1l,1));
68 
69  /*
70  vector<int> ra4_sam;
71  ra4_sam.push_back(0);
72  ra4_sam.push_back(1);
73  ra4_sam.push_back(2);
74  ra4_sam.push_back(3);
75  ra4_sam.push_back(4);
76  ra4_sam.push_back(5);
77  ra4_sam.push_back(6);
78  ra4_sam.push_back(7);
79 
80 
81  vector<int> ra4_tt_t1;
82  ra4_tt_t1.push_back(4);
83  ra4_tt_t1.push_back(5);
84  ra4_tt_t1.push_back(6);
85  ra4_tt_t1.push_back(7);*/
86 
87  //ALL SIGNAL MUST COME FIRST
88  vector<int> ra4_tt2l_t1;
89  ra4_tt2l_t1.push_back(0);
90  ra4_tt2l_t1.push_back(1);
91  ra4_tt2l_t1.push_back(3);
92 
93  vector<TString> selections;
94  //selections.push_back("ht>500&&mj>400&&met>400&&nbm>=2&&mt>140&&njets>=7&&(nmus+nels)==1");
95  selections.push_back("mj>300&&ht>500&&met>200&&nbm>=1&&mt>140&&njets>=7&&(nmus+nels)==1");
96  selections.push_back("mj>400&&ht>500&&met>200&&nbm>=1&&mt>140&&njets>=7&&(nmus+nels)==1");
97  selections.push_back("mj>300&&ht>500&&met>400&&nbm>=1&&mt>140&&njets>=7&&(nmus+nels)==1");
98 
99  vector< vector<double> > ra4_tt2l_t1_yields;
100  for(unsigned int isel=0; isel<selections.size(); isel++){
101  ra4_tt2l_t1_yields.push_back(GetNEvents(Samples, ra4_tt2l_t1, selections[isel],luminosity));
102  }
103 
104  //to switch between different kinds of tracks, just need to do a few search and replace:
105  // hadrons use this id :!(tks_id*tks_id==169||tks_id*tks_id==121)
106  // replace with tks_id*tks_id==121 for elec, tks_id*tks_id==169 for muons
107 
108  //VERY IMPORTANT (tks_id*lep_charge)<0 selects OS tracks for hadronic tracks
109  // (tks_id*lep_charge)>0 selects OS tracks for leptonic tracks
110 
111 
112  //different binnings are generally relevant for different kinds of tracks
113 
114  //absolute isolation is just relative isolation * pT
115 
116 
117 
118 
119 
120  vector<TString> isotypes;
121  vector<TString> isonames;
122  vector<TString> relisotypes;
123  vector<TString> relisonames;
124  isonames.push_back("abs chg+neu mini isolation"); isotypes.push_back("(tks_pt)*min((tks_mini_ne+tks_mini_ch),(tks_r02_ne+tks_r02_ch))");
125  isonames.push_back("abs chg mini isolation"); isotypes.push_back("(tks_pt)*min((tks_mini_ch),(tks_r02_ch))");
126 
127  isonames.push_back("abs chg+neu R=0.5 mini isolation"); isotypes.push_back("(tks_pt)*min((tks_mini_ne+tks_mini_ch),(tks_r05_ne+tks_r05_ch))");
128  isonames.push_back("abs chg+neu untruncated mini isolation"); isotypes.push_back("(tks_pt)*(tks_mini_ne+tks_mini_ch)");
129  isonames.push_back("abs chg R=0.5 mini isolation"); isotypes.push_back("(tks_pt)*min((tks_mini_ch),(tks_r05_ch))");
130  isonames.push_back("abs chg untruncated mini isolation"); isotypes.push_back("(tks_pt)*(tks_mini_ch)");
131 
132  relisonames.push_back("rel chg+neu mini isolation"); relisotypes.push_back("min((tks_mini_ne+tks_mini_ch),(tks_r02_ne+tks_r02_ch))");
133  relisonames.push_back("rel chg mini isolation"); relisotypes.push_back("min((tks_mini_ch),(tks_r02_ch))");
134 
135  relisonames.push_back("rel chg+neu R=0.5 mini isolation"); relisotypes.push_back("min((tks_mini_ne+tks_mini_ch),(tks_r05_ne+tks_r05_ch))");
136  relisonames.push_back("rel chg+neu untruncated mini isolation"); relisotypes.push_back("(tks_mini_ne+tks_mini_ch)");
137  relisonames.push_back("rel chg R=0.5 mini isolation"); relisotypes.push_back("min((tks_mini_ch),(tks_r05_ch))");
138  relisonames.push_back("rel chg untruncated mini isolation"); relisotypes.push_back("(tks_mini_ch)");
139 
140 
141  TString prompt = "&&tks_from_w";
142  TString nonprompt = "&&!tks_from_w";
143  TString fromPV = "&&tks_from_pv>=2";
144  TString notfromPV = "&&tks_from_pv<2";
145 
146  vector<TString> tracktype;
147  tracktype.push_back( "&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121");
148  //tracktype.push_back( "&&tks_pt<=20&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121");
149  //tracktype.push_back( "&&tks_pt>20&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121");
150  tracktype.push_back( "&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==169");
151  tracktype.push_back( "&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)");
152  tracktype.push_back( "&&tks_pt>15&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)");
153  vector<TString> faketracknames;
154  faketracknames.push_back("non-prompt electron tracks");
155  // tracknames.push_back("electron tracks, p_{T} < 20");
156  //tracknames.push_back("electron tracks, p_{T} > 20");
157  faketracknames.push_back("non-prompt muon tracks");
158  faketracknames.push_back("non-prompt hadronic tracks");
159  faketracknames.push_back("non-prompt hadronic tracks, p_{T} > 15");
160  vector<TString> prompttracknames;
161  prompttracknames.push_back("prompt electron tracks");
162  // prompttracknames.push_back("electron tracks, p_{T} < 20");
163  //prompttracknames.push_back("electron tracks, p_{T} > 20");
164  prompttracknames.push_back("prompt muon tracks");
165  prompttracknames.push_back("prompt hadronic tracks");
166  prompttracknames.push_back("prompt hadronic tracks, p_{T} > 15");
167 
168 
169  for(int itrack=0;itrack<4;itrack++){
170  vector<hfeats> vars;
171  for(int isel=0; isel<1; isel++){
172 
173  vars.push_back(hfeats("tks_pt",30,0,150,ra4_tt2l_t1,"track p_{T}, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
174  vars.push_back(hfeats("tks_pt",30,0,150,ra4_tt2l_t1,"track p_{T}, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
175 
176  vars.push_back(hfeats("tks_mt",28,0,280,ra4_tt2l_t1,"track m_{T}, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
177  vars.push_back(hfeats("tks_mt",28,0,280,ra4_tt2l_t1,"track m_{T}, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
178 
179  vars.push_back(hfeats("tks_from_pv",6,-0.5,5.5,ra4_tt2l_t1,"track is from PV, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
180  vars.push_back(hfeats("tks_from_pv",6,-0.5,5.5,ra4_tt2l_t1,"track is from PV, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
181 
182  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
183  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
184 
185  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt+fromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
186  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt+fromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
187 
188  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt+notfromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
189  vars.push_back(hfeats("tks_dz",100,-0.2,0.2,ra4_tt2l_t1,"track dz, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt+notfromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
190 
191  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
192  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
193 
194  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt+fromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
195  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt+fromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
196 
197  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt+notfromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
198  vars.push_back(hfeats("tks_dxy",100,-0.2,0.2,ra4_tt2l_t1,"track dxy, "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt+notfromPV,-1,"",true,ra4_tt2l_t1_yields[isel]));
199 
200 
201  for(int iiso=0;iiso<2;iiso++){
202  vars.push_back(hfeats(isotypes[iiso],50,0,25,ra4_tt2l_t1,isonames[iiso]+", "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
203  vars.push_back(hfeats(isotypes[iiso],50,0,25,ra4_tt2l_t1,isonames[iiso]+", "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
204  vars.push_back(hfeats(relisotypes[iiso],60,0,3,ra4_tt2l_t1,relisonames[iiso]+", "+prompttracknames[itrack],selections[isel]+tracktype[itrack]+prompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
205  vars.push_back(hfeats(relisotypes[iiso],60,0,3,ra4_tt2l_t1,relisonames[iiso]+", "+faketracknames[itrack],selections[isel]+tracktype[itrack]+nonprompt,-1,"",true,ra4_tt2l_t1_yields[isel]));
206  }
207  }
208  allvars.push_back(vars);
209  }
210 
211  //absolute charge + neutral isolation, baseline study region
212  //prompt
213  /*vars.push_back(hfeats("(tks_pt)*min((tks_mini_ne+tks_mini_ch),(tks_r02_ne+tks_r02_ch))",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, electron tracks",
214  "ht>500&&mj>500&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&(tks_from_w)"));
215 
216  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu untruncated mini isolation, electron tracks",
217  "ht>500&&mj>500&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&(tks_from_w)"));
218 
219  //nonprompt
220  vars.push_back(hfeats("(tks_pt)*min((tks_mini_ne+tks_mini_ch),(tks_r02_ne+tks_r02_ch))",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, electron tracks",
221  "ht>500&&mj>500&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&!(tks_from_w)"));
222  //nonprompt
223  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu untruncated mini isolation, electron tracks",
224  "ht>500&&mj>500&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&!(tks_from_w)"));
225 
226 
227  //Absolute charged isolation, prompt and non-prompt
228  vars.push_back(hfeats("(tks_pt)*(tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg untruncated mini isolation, electron tracks",
229  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&(tks_from_w)"));
230 
231  vars.push_back(hfeats("(tks_pt)*min(tks_mini_ch,tks_r02_ch)",40,0,100, ra4_tt2l_t1, "abs chg mini isolation, electron tracks",
232  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&(tks_from_w)"));
233 
234  vars.push_back(hfeats("(tks_pt)*(tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg untruncated mini isolation, electron tracks",
235  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&!(tks_from_w)"));
236 
237  vars.push_back(hfeats("(tks_pt)*min(tks_mini_ch,tks_r02_ch)",40,0,100, ra4_tt2l_t1, "abs chg mini isolation, electron tracks",
238  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)>0)&&(!tks_is_primary)&&tks_id*tks_id==121&&!(tks_from_w)"));
239  */
240  /*
241 
242  //absolute charged + neutral isolation, high MET region
243  //prompt
244  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, hadronic tracks",
245  "ht>500&&mj>300&&met>400&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)"));
246  //non-prompt
247  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, hadronic tracks",
248  "ht>500&&mj>300&&met>400&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)"));
249 
250 
251  //Relative charged + neutral isolation, prompt and non-prompt
252  vars.push_back(hfeats("tks_mini_ne+tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg+neu mini isolation, hadronic tracks",
253  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)"));
254 
255  vars.push_back(hfeats("tks_mini_ne+tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg+neu mini isolation, hadronic tracks",
256  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)"));
257 
258  //Relative charged isolation, prompt and non-prompt
259  vars.push_back(hfeats("tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg mini isolation, hadronic tracks",
260  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)"));
261  vars.push_back(hfeats("tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg mini isolation, hadronic tracks",
262  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)"));
263 
264 
265 
266  //track mT with different isolation cuts
267  vars.push_back(hfeats("tks_mt",30,0,300, ra4_tt2l_t1, "track m_{T} (GeV), hadronic tracks, abs chg+neu mini iso < 10",
268  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&((tks_pt)*(tks_mini_ne+tks_mini_ch))<10"));
269  vars.push_back(hfeats("tks_mt",30,0,300, ra4_tt2l_t1, "track m_{T} (GeV), hadronic tracks, abs chg+neu iso mini < 20",
270  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&((tks_pt)*(tks_mini_ne+tks_mini_ch))<20"));
271 
272 
273  //track mT without isolation cuts
274  vars.push_back(hfeats("tks_mt",30,0,300, ra4_tt2l_t1, "track m_{T} (GeV), hadronic tracks",
275  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)"));
276 
277 
278  //track pT, with and without isolation cuts
279  vars.push_back(hfeats("tks_pt",30,0,150, ra4_tt2l_t1, "track p_{T} (GeV), hadronic tracks",
280  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)"));
281  vars.push_back(hfeats("tks_pt",30,0,150, ra4_tt2l_t1, "track p_{T} (GeV), hadronic tracks, chg+neu iso < 0.2",
282  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&(tks_mini_ne+tks_mini_ch)<0.2"));
283  vars.push_back(hfeats("tks_pt",30,0,150, ra4_tt2l_t1, "track p_{T} (GeV), hadronic tracks, chg+neu iso < 1.0",
284  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&(tks_mini_ne+tks_mini_ch)<1.0"));
285 
286 
287  //Now plot only tracks with mT<100:
288  //Absolute charged + neutral isolation, prompt and non-prompt
289  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, hadronic tracks",
290  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&tks_mt<100"));
291 
292  vars.push_back(hfeats("(tks_pt)*(tks_mini_ne+tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg+neu mini isolation, hadronic tracks",
293  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)&&tks_mt<100"));
294 
295  //Absolute charged isolation, prompt and non-prompt
296  vars.push_back(hfeats("(tks_pt)*(tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg mini isolation, hadronic tracks",
297  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&tks_mt<100"));
298 
299  vars.push_back(hfeats("(tks_pt)*(tks_mini_ch)",40,0,100, ra4_tt2l_t1, "abs chg mini isolation, hadronic tracks",
300  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)&&tks_mt<100"));
301 
302  //Relative charged + neutral isolation, prompt and non-prompt
303  vars.push_back(hfeats("tks_mini_ne+tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg+neu mini isolation, hadronic tracks",
304  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&tks_mt<100"));
305  vars.push_back(hfeats("tks_mini_ne+tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg+neu mini isolation, hadronic tracks",
306  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)&&tks_mt<100"));
307 
308  //Relative charged isolation, prompt and non-prompt
309  vars.push_back(hfeats("tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg mini isolation, hadronic tracks",
310  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&(tks_from_w)&&tks_mt<100"));
311  vars.push_back(hfeats("tks_mini_ch",60,0,3, ra4_tt2l_t1, "chg mini isolation, hadronic tracks",
312  "ht>500&&mj>300&&met>200&&nbm>=1&&mt>140&&njets>=6&&(nmus+nels)==1&&((tks_id*lep_charge)<0)&&(!tks_is_primary)&&!(tks_id*tks_id==169||tks_id*tks_id==121)&&!(tks_from_w)&&tks_mt<100"));
313 
314 
315  */
316 
317  plot_distributions(Samples, allvars.at(0), luminosity, ".pdf", "RA4","veto/els");
318  plot_distributions(Samples, allvars.at(1), luminosity, ".pdf", "RA4","veto/mus");
319  plot_distributions(Samples, allvars.at(2), luminosity, ".pdf", "RA4","veto/had");
320  plot_distributions(Samples, allvars.at(3), luminosity, ".pdf", "RA4","veto/had2");
321 
322 }
323 
324 
325 
326 
327 vector<double> GetNEvents(vector<sfeats> AllSamples, vector<int> RelevantSamples, TString cut , TString luminosity){
328 
329  vector<double> nevents;
330 
331  for(unsigned int isam =0; isam <RelevantSamples.size(); isam++){
332  TChain chain("tree");
333  for(unsigned insam(0); insam < AllSamples[RelevantSamples[isam]].file.size(); insam++) chain.Add(AllSamples[RelevantSamples[isam]].file[insam]);
334 
335  double yield, uncertainty;
336  TString totCut = AllSamples[RelevantSamples[isam]].factor+"*"+luminosity+"*weight*("+cut+"&&"+AllSamples[RelevantSamples[isam]].cut+")";
337  getYieldErr(chain,totCut,yield,uncertainty);
338  nevents.push_back(yield);
339 
340 
341  }
342  return nevents;
343 
344 
345 }
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)
long getYieldErr(TChain &tree, TString cut, double &yield, double &uncertainty)
void setDefaultStyle()
Definition: styles.cpp:36
STL namespace.
TString luminosity
vector< double > GetNEvents(vector< sfeats > AllSamples, vector< int > RelevantSamples, TString cut, TString luminosity)
int main()