31 TString folder=
"/cms5r0/ald77/archive/"+
ntuple_date+
"/skim/";
34 s_tt.push_back(folder+
"*_TTJet*");
35 vector<TString> s_wjets;
36 s_wjets.push_back(folder+
"*WJetsToLNu_HT*");
37 vector<TString> s_single;
38 s_single.push_back(folder+
"*_T*channel*");
39 vector<TString> s_ttv;
40 s_ttv.push_back(folder+
"*TTW*");
41 s_ttv.push_back(folder+
"*TTZ*");
42 vector<TString> s_other;
43 s_other.push_back(folder+
"*QCD_HT*");
44 s_other.push_back(folder+
"*_ZJet*");
45 s_other.push_back(folder+
"*DY*");
46 s_other.push_back(folder+
"*WH_HToBB*");
47 vector<TString> s_t1t;
48 s_t1t.push_back(folder+
"*T1tttt*1500_*PU20*");
49 vector<TString> s_t1tc;
50 s_t1tc.push_back(folder+
"*T1tttt*1200_*PU20*");
53 vector<TChain*> chains;
54 vector<sfeats> samples;
55 samples.push_back(
sfeats(s_tt,
"t#bar{t}, 2 l", 1006,1,
"ntruleps>=2"));
56 samples.push_back(
sfeats(s_tt,
"t#bar{t}, 1 l", 1000,1,
"ntruleps<=1"));
57 samples.push_back(
sfeats(s_ttv,
"ttV", 1002));
58 samples.push_back(
sfeats(s_single,
"Single top", 1005));
59 samples.push_back(
sfeats(s_wjets,
"W+jets", 1004));
60 samples.push_back(
sfeats(s_other,
"Other", 1001));
61 samples.push_back(
sfeats(s_t1t,
"T1tttt(1500,100)", 2));
62 samples.push_back(
sfeats(s_t1tc,
"T1tttt(1200,800)", 2,2));
64 samples.push_back(
sfeats(s_tt,
"0 leps", kGreen-4, 1,
"ntruleps==0"));
65 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}", kRed-4, 1,
"ntruleps==1 && ntrutaush==1"));
66 samples.push_back(
sfeats(s_tt,
"1 e/#mu", kBlue-4, 1,
"ntruleps==1 && (ntruels+ntrumus)==1"));
67 samples.push_back(
sfeats(s_tt,
"2 #tau_{had}", kRed+2, 1,
"ntruleps==2 && ntrutaush==2"));
68 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{had}", kMagenta+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutaush==1"));
69 samples.push_back(
sfeats(s_tt,
"2 e/#mu", kBlue+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==2"));
70 samples.push_back(
sfeats(s_tt,
"3+ leps", kGreen+2, 1,
"ntruleps>=3"));
72 samples.push_back(
sfeats(s_tt,
"0 leps", kGreen-4, 1,
"ntruleps==0&&met>100&&met<=200"));
73 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}", kRed-4, 1,
"ntruleps==1 && ntrutaush==1&&met>100&&met<=200"));
74 samples.push_back(
sfeats(s_tt,
"1 e/#mu", kBlue-4, 1,
"ntruleps==1 && (ntruels+ntrumus)==1&&met>100&&met<=200"));
75 samples.push_back(
sfeats(s_tt,
"2 #tau_{had}", kRed+2, 1,
"ntruleps==2 && ntrutaush==2&&met>100&&met<=200"));
76 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{had}", kMagenta+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutaush==1&&met>100&&met<=200"));
77 samples.push_back(
sfeats(s_tt,
"2 e/#mu", kBlue+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==2&&met>100&&met<=200"));
78 samples.push_back(
sfeats(s_tt,
"2 #tau_{lep}", kOrange+3, 1,
"ntruleps==2 && ntrutaush==1"));
79 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{lep}", kBlack, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutausl==1"));
80 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}, 1 #tau_{lep}", kYellow, 1,
"ntruleps==2 && ntrutaush==1 && ntrutausl==1"));
81 samples.push_back(
sfeats(s_tt,
"3+ leps", kGreen+2, 1,
"ntruleps>=3"));
83 samples.push_back(
sfeats(s_tt,
"0 leps", kGreen-4, 1,
"ntruleps==0&&met>200&&met<=400"));
84 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}", kRed-4, 1,
"ntruleps==1 && ntrutaush==1&&met>200&&met<=400"));
85 samples.push_back(
sfeats(s_tt,
"1 e/#mu", kBlue-4, 1,
"ntruleps==1 && (ntruels+ntrumus)==1&&met>200&&met<=400"));
86 samples.push_back(
sfeats(s_tt,
"2 #tau_{had}", kRed+2, 1,
"ntruleps==2 && ntrutaush==2&&met>200&&met<=400"));
87 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{had}", kMagenta+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutaush==1&&met>200&&met<=400"));
88 samples.push_back(
sfeats(s_tt,
"2 e/#mu", kBlue+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==2&&met>200&&met<=400"));
89 samples.push_back(
sfeats(s_tt,
"2 #tau_{lep}", kOrange+3, 1,
"ntruleps==2 && ntrutaush==1"));
90 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{lep}", kBlack, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutausl==1"));
91 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}, 1 #tau_{lep}", kYellow, 1,
"ntruleps==2 && ntrutaush==1 && ntrutausl==1"));
92 samples.push_back(
sfeats(s_tt,
"3+ leps", kGreen+2, 1,
"ntruleps>=3&&met>200&&met<=400"));
94 samples.push_back(
sfeats(s_tt,
"0 leps", kGreen-4, 1,
"ntruleps==0&&met>400"));
95 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}", kRed-4, 1,
"ntruleps==1 && ntrutaush==1&&met>400"));
96 samples.push_back(
sfeats(s_tt,
"1 e/#mu", kBlue-4, 1,
"ntruleps==1 && (ntruels+ntrumus)==1&&met>400"));
97 samples.push_back(
sfeats(s_tt,
"2 #tau_{had}", kRed+2, 1,
"ntruleps==2 && ntrutaush==2&&met>400"));
98 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{had}", kMagenta+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutaush==1&&met>400"));
99 samples.push_back(
sfeats(s_tt,
"2 e/#mu", kBlue+2, 1,
"ntruleps==2 && (ntruels+ntrumus)==2&&met>400"));
100 samples.push_back(
sfeats(s_tt,
"2 #tau_{lep}", kOrange+3, 1,
"ntruleps==2 && ntrutaush==1"));
101 samples.push_back(
sfeats(s_tt,
"1 e/#mu, 1 #tau_{lep}", kBlack, 1,
"ntruleps==2 && (ntruels+ntrumus)==1 && ntrutausl==1"));
102 samples.push_back(
sfeats(s_tt,
"1 #tau_{had}, 1 #tau_{lep}", kYellow, 1,
"ntruleps==2 && ntrutaush==1 && ntrutausl==1"));
103 samples.push_back(
sfeats(s_tt,
"3+ leps", kGreen+2, 1,
"ntruleps>=3&&met>400"));
105 for(
unsigned sam(0); sam < samples.size(); sam++){
106 chains.push_back(
new TChain(
"tree"));
107 for(
unsigned insam(0); insam < samples[sam].file.size(); insam++)
108 chains.at(sam)->Add(samples[sam].
file[insam]);
119 vector<int> with1500 = bkgs;
120 with1500.push_back(6);
122 vector<int> with1200 = bkgs;
123 with1200.push_back(7);
125 vector<int> leps_lmet;
129 leps_lmet.push_back(18);
130 leps_lmet.push_back(19);
131 leps_lmet.push_back(20);
132 leps_lmet.push_back(21);
133 leps_lmet.push_back(22);
134 leps_lmet.push_back(23);
135 leps_lmet.push_back(24);
136 vector<int> leps_mmet;
140 leps_mmet.push_back(28);
141 leps_mmet.push_back(29);
142 leps_mmet.push_back(30);
143 leps_mmet.push_back(31);
144 leps_mmet.push_back(32);
145 leps_mmet.push_back(33);
146 leps_mmet.push_back(34);
147 vector<int> leps_hmet;
151 leps_hmet.push_back(38);
152 leps_hmet.push_back(39);
153 leps_hmet.push_back(40);
154 leps_hmet.push_back(41);
155 leps_hmet.push_back(42);
156 leps_hmet.push_back(43);
157 leps_hmet.push_back(44);
166 pies.push_back(
pfeats(leps_lmet,
"ht>500&&met>100&&njets>=7&&nbm>=2&&(nels+nmus)==1",
"leps_lmet"));
167 pies.push_back(
pfeats(leps_mmet,
"ht>500&&met>100&&njets>=7&&nbm>=2&&(nels+nmus)==1",
"leps_mmet"));
168 pies.push_back(
pfeats(leps_hmet,
"ht>500&&met>100&&njets>=7&&nbm>=2&&(nels+nmus)==1",
"leps_hmet"));
171 for(
size_t pie = 0; pie < pies.size(); ++pie){
172 DrawPie(pies.at(pie), samples, chains);
175 for(
size_t ichain = 0; ichain < chains.size(); ++ichain){
176 if(chains.at(ichain) != NULL){
177 delete chains.at(ichain);
178 chains.at(ichain) = NULL;
183 void DrawPie(
const pfeats &pfeat,
const vector<sfeats> &samples,
const vector<TChain*> &chains){
184 vector<double> counts(pfeat.
samples.size());
185 vector<int> colors(pfeat.
samples.size());
186 vector<const char*> labels(pfeat.
samples.size());
187 vector<TH1D> dummy_histos(pfeat.
samples.size(), TH1D(
"",
"",1,-1.,1.));
188 TLegend l(0., 0., 1., 1.);
189 for(
size_t iisample = 0; iisample < pfeat.
samples.size(); ++iisample){
190 size_t isample = pfeat.
samples.at(iisample);
191 const sfeats &sample = samples.at(isample);
192 TChain &chain = *chains.at(isample);
193 TString cut =
"3.0*weight*("+pfeat.
cut+
"&&"+sample.
cut+
")";
196 colors.at(iisample) = sample.
color;
197 labels.at(iisample) = sample.
label;
198 dummy_histos.at(iisample).SetFillColor(sample.
color);
199 l.AddEntry(&dummy_histos.at(iisample), sample.
label,
"f");
204 TCanvas
c(
"",
"", 512, 512);
205 c.SetFillColorAlpha(0, 0.);
206 c.SetFillStyle(4000);
208 c.Print(
"plots/pies/legen_"+name+
plot_type);
209 TPie pie(
"",
"", pfeat.
samples.size(), &counts.at(0), &colors.at(0), &labels.at(0));
210 pie.SetCircle(0.5, 0.5, 0.3);
212 c.Print(
"plots/pies/label_"+name+
plot_type);
213 pie.SetLabelFormat(
"%val");
214 pie.SetValueFormat(
"%0.1f");
216 c.Print(
"plots/pies/count_"+name+
plot_type);
217 pie.SetLabelFormat(
"");
218 pie.SetCircle(0.5, 0.5, 0.49);
220 pie.SetLabelFormat(
"%perc");
221 pie.SetValueFormat(
"%0.1f");
223 c.Print(
"plots/pies/perc_"+name+
plot_type);
224 c.Print(
"plots/pies/plain_"+name+
plot_type);
228 name.ReplaceAll(
"(",
"");
229 name.ReplaceAll(
")",
"");
230 name.ReplaceAll(
"[",
"");
231 name.ReplaceAll(
"]",
"");
232 name.ReplaceAll(
"{",
"");
233 name.ReplaceAll(
"}",
"");
234 name.ReplaceAll(
"#",
"");
235 name.ReplaceAll(
",",
"_");
236 name.ReplaceAll(
" ",
"_");
237 name.ReplaceAll(
"\\",
"_");
238 name.ReplaceAll(
">=",
"geq");
239 name.ReplaceAll(
">",
"gt");
240 name.ReplaceAll(
"<=",
"leq");
241 name.ReplaceAll(
"<",
"lt");
242 name.ReplaceAll(
"==",
"eq");
243 name.ReplaceAll(
"!=",
"neq");
244 name.ReplaceAll(
"!",
"n");
245 name.ReplaceAll(
"&&",
"_");
246 name.ReplaceAll(
"||",
"_");
247 name.ReplaceAll(
"&",
"band");
248 name.ReplaceAll(
"|",
"bor");
249 name.ReplaceAll(
"+",
"plus");
250 name.ReplaceAll(
"-",
"minus");
251 name.ReplaceAll(
"*",
"times");
252 name.ReplaceAll(
"/",
"divby");
253 name.ReplaceAll(
"$",
"");
254 name.ReplaceAll(
"__",
"_");
void get_count_and_uncertainty(TTree &tree, const std::string &cut, double &count, double &uncertainty)
TString FormatName(TString name)
std::vector< int > samples
void DrawPie(const pfeats &pfeat, const vector< sfeats > &samples, const vector< TChain * > &chains)
TString ntuple_date("2015_05_25")