9 #include "core/baby.hpp" 23 int color,
const set<string> &files,
const string &cut =
"1"){
24 return make_shared<Process>(process_name, type, color,
25 unique_ptr<Baby>(
new T(files)),
30 gErrorIgnoreLevel = 6000;
32 vector<double>
lumi = {2.3, 2.6};
36 string mc_2015 =
"/net/cms2/cms2r0/babymaker/babies/2016_04_29/mc/merged_1lht500met200/";
37 string data_2015 =
"/net/cms2/cms2r0/babymaker/babies/2016_04_29/data/merged_1lht500met200/";
38 string mc_2016 =
"/net/cms2/cms2r0/babymaker/babies/2016_06_14/mc/merged_standard/";
39 string data_2016 =
"/net/cms2/cms2r0/babymaker/babies/2016_06_26/data/merged_standard/";
41 Palette colors(
"txt/colors.txt",
"default");
45 {mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root"},
"ntruleps<=1&&stitch");
47 {mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root"},
"ntruleps>=2&&stitch");
49 {mc_2015+
"*_WJetsToLNu*.root"});
51 {mc_2015+
"*_ST_*.root"});
53 {mc_2015+
"*_TTWJets*.root", mc_2015+
"*_TTZTo*.root"});
55 {mc_2015+
"*DYJetsToLL*.root", mc_2015+
"*_QCD_HT*.root",
56 mc_2015+
"*_ZJet*.root", mc_2015+
"*_WWTo*.root",
57 mc_2015+
"*ggZH_HToBB*.root", mc_2015+
"*ttHJetTobb*.root",
58 mc_2015+
"*_TTGJets*.root", mc_2015+
"*_TTTT_*.root",
59 mc_2015+
"*_WH_HToBB*.root", mc_2015+
"*_WZTo*.root",
60 mc_2015+
"*_ZH_HToBB*.root", mc_2015+
"_ZZ_*.root"});
63 {data_2015+
"*.root"},
"pass&&(trig[4]||trig[8])");
67 {mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root"},
"ntruleps<=1&&stitch");
69 {mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root"},
"ntruleps>=2&&stitch");
71 {mc_2016+
"*_WJetsToLNu*.root"});
73 {mc_2016+
"*_ST_*.root"});
75 {mc_2016+
"*_TTWJets*.root", mc_2016+
"*_TTZTo*.root"});
77 {mc_2016+
"*DYJetsToLL*.root", mc_2016+
"*_QCD_HT*.root",
78 mc_2016+
"*_ZJet*.root", mc_2016+
"*_WWTo*.root",
79 mc_2016+
"*ggZH_HToBB*.root", mc_2016+
"*ttHJetTobb*.root",
80 mc_2016+
"*_TTGJets*.root", mc_2016+
"*_TTTT_*.root",
81 mc_2016+
"*_WH_HToBB*.root", mc_2016+
"*_WZTo*.root",
82 mc_2016+
"*_ZH_HToBB*.root", mc_2016+
"_ZZ_*.root"});
85 {data_2016+
"*.root"},
"pass&&(trig[4]||trig[8]||trig[13]||trig[33])&&json2p6");
87 vector<shared_ptr<Process> > sam2015 = {data2015, tt1l_2015, tt2l_2015, wjets_2015, single_t_2015, ttv_2015, other_2015};
88 vector<shared_ptr<Process> > sam2016 = {data2016, tt1l_2016, tt2l_2016, wjets_2016, single_t_2016, ttv_2016, other_2016};
91 PlotOpt log_lumi(
"txt/plot_styles.txt",
"CMSPaper");
92 log_lumi.
Title(TitleType::preliminary)
94 .
YAxis(YAxisType::log)
95 .
Stack(StackType::data_norm)
102 PlotOpt lin_shapes = log_shapes().
YAxis(YAxisType::linear);
103 PlotOpt log_lumi_info = log_lumi().
Title(TitleType::info);
104 PlotOpt lin_lumi_info = lin_lumi().
Title(TitleType::info);
105 PlotOpt log_shapes_info = log_shapes().
Title(TitleType::info);
106 PlotOpt lin_shapes_info = lin_shapes().
Title(TitleType::info);
108 vector<PlotOpt> all_plot_types = {log_lumi_info};
109 vector<PlotOpt> mc_plot_types = {log_shapes_info, lin_shapes_info};
111 vector<PlotMaker> pm(2);
112 vector<vector<shared_ptr<Process> > > sams = {sam2015, sam2016}; vector<string> sam_tag = {
"sam2015",
"sam2016"};
113 vector<string> leps = {
"nleps==2",
"nels==2&&nmus==0",
"nels==0&&nmus==2",
"nels==1&&nmus==1",
"nleps==1",
"nels==1&&nmus==0",
"nels==0&&nmus==1"};
114 vector<string> lep_tag = {
"2leps",
"2els",
"2mus",
"1el1mu",
"1lep",
"1el",
"1mu"};
117 for(
unsigned int iyr=0; iyr<2; iyr++){
119 for(
unsigned int ilep=0; ilep<leps.size(); ilep++){
121 string cut2l_base =
"ht>500&&met>200&&"+leps[ilep]+
"&&njets>=5&&nbm<=2";
122 if(ilep>3) cut2l_base =
"ht>500&&met>200&&"+leps[ilep]+
"&&njets>=6&&nbm>=1&&mt<=140";
124 string tag = sam_tag[iyr]+
"_"+lep_tag[ilep];
127 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
128 cut2l_base+
"&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
129 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
130 cut2l_base+
"&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
133 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
134 cut2l_base+
"&&met<=350&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
135 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
136 cut2l_base+
"&&met>350&&met<=500&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
139 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
140 cut2l_base+
"&&met<=350&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
141 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
142 cut2l_base+
"&&met>350&&met<=500&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
145 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
146 cut2l_base+
"&&met<=350&&mt>140", sams[iyr], all_plot_types).
Tag(tag);
147 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
148 cut2l_base+
"&&met>350&&met<=500&&mt>140", sams[iyr], all_plot_types).
Tag(tag);
151 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
152 "mj14>250&&"+cut2l_base+
"&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
153 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
154 "mj14>250&&"+cut2l_base+
"&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
156 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
157 "mj14>250&&"+cut2l_base+
"&&mj14<=400&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
158 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
159 "mj14>250&&"+cut2l_base+
"&&mj14<=400&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
161 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
162 "mj14>250&&"+cut2l_base+
"&&mj14>400&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
163 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
164 "mj14>250&&"+cut2l_base+
"&&mj14>400&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
166 pm[iyr].Push<
Hist1D>(
Axis(12, 200., 500.,
"met",
"MET [GeV]", {200.}),
167 "mj14>250&&"+cut2l_base+
"&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
172 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
173 cut2l_base+
"&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
174 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
175 cut2l_base+
"&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
177 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
178 cut2l_base+
"&&met<=350&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
179 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
180 cut2l_base+
"&&met>350&&met<=500&&mt<=140", sams[iyr], all_plot_types).
Tag(tag);
182 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
183 cut2l_base+
"&&met<=350&&mt>140", sams[iyr], all_plot_types).
Tag(tag);
184 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
185 cut2l_base+
"&&met>350&&met<=500&&mt>140", sams[iyr], all_plot_types).
Tag(tag);
188 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
189 "mj>250&&"+cut2l_base+
"&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
190 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
191 "mj>250&&"+cut2l_base+
"&&met>350&&met<=500",sams[iyr], all_plot_types).
Tag(tag);
193 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
194 "mj>250&&"+cut2l_base+
"&&mj<=400&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
195 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
196 "mj>250&&"+cut2l_base+
"&&mj<=400&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
198 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
199 "mj>250&&"+cut2l_base+
"&&mj>400&&met<=350", sams[iyr], all_plot_types).
Tag(tag);
200 pm[iyr].Push<
Hist1D>(
Axis(20, 0., 700.,
"mt",
"m_{T} [GeV]", {140.}),
201 "mj>250&&"+cut2l_base+
"&&mj>400&&met>350&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
203 pm[iyr].Push<
Hist1D>(
Axis(12, 200., 500.,
"met",
"MET [GeV]", {200.}),
204 "mj>250&&"+cut2l_base+
"&&met<=500", sams[iyr], all_plot_types).
Tag(tag);
212 {mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root",
213 mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root",
214 mc_2015+
"*_WJetsToLNu*.root",
215 mc_2015+
"*_ST_*.root",
216 mc_2015+
"*_TTWJets*.root", mc_2015+
"*_TTZTo*.root",
217 mc_2015+
"*DYJetsToLL*.root", mc_2015+
"*_QCD_HT*.root",
218 mc_2015+
"*_ZJet*.root", mc_2015+
"*_WWTo*.root",
219 mc_2015+
"*ggZH_HToBB*.root", mc_2015+
"*ttHJetTobb*.root",
220 mc_2015+
"*_TTGJets*.root", mc_2015+
"*_TTTT_*.root",
221 mc_2015+
"*_WH_HToBB*.root", mc_2015+
"*_WZTo*.root",
222 mc_2015+
"*_ZH_HToBB*.root", mc_2015+
"_ZZ_*.root"},
225 auto allmc_highmt_2015 = Process::MakeShared<Baby_full>(
"2015, low m_{T}",
Process::Type::data, kBlack,
226 {mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root",
227 mc_2015+
"*_TTJets*Lept*.root", mc_2015+
"*_TTJets_HT*.root",
228 mc_2015+
"*_WJetsToLNu*.root",
229 mc_2015+
"*_ST_*.root",
230 mc_2015+
"*_TTWJets*.root", mc_2015+
"*_TTZTo*.root",
231 mc_2015+
"*DYJetsToLL*.root", mc_2015+
"*_QCD_HT*.root",
232 mc_2015+
"*_ZJet*.root", mc_2015+
"*_WWTo*.root",
233 mc_2015+
"*ggZH_HToBB*.root", mc_2015+
"*ttHJetTobb*.root",
234 mc_2015+
"*_TTGJets*.root", mc_2015+
"*_TTTT_*.root",
235 mc_2015+
"*_WH_HToBB*.root", mc_2015+
"*_WZTo*.root",
236 mc_2015+
"*_ZH_HToBB*.root", mc_2015+
"_ZZ_*.root"},
241 {mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root",
242 mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root",
243 mc_2016+
"*_WJetsToLNu*.root",
244 mc_2016+
"*_ST_*.root",
245 mc_2016+
"*_TTWJets*.root", mc_2016+
"*_TTZTo*.root",
246 mc_2016+
"*DYJetsToLL*.root", mc_2016+
"*_QCD_HT*.root",
247 mc_2016+
"*_ZJet*.root", mc_2016+
"*_WWTo*.root",
248 mc_2016+
"*ggZH_HToBB*.root", mc_2016+
"*ttHJetTobb*.root",
249 mc_2016+
"*_TTGJets*.root", mc_2016+
"*_TTTT_*.root",
250 mc_2016+
"*_WH_HToBB*.root", mc_2016+
"*_WZTo*.root",
251 mc_2016+
"*_ZH_HToBB*.root", mc_2016+
"_ZZ_*.root"},
254 auto allmc_highmt_2016 = Process::MakeShared<Baby_full>(
"2016, high m_{T}",
Process::Type::data, kBlack,
255 {mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root",
256 mc_2016+
"*_TTJets*Lept*.root", mc_2016+
"*_TTJets_HT*.root",
257 mc_2016+
"*_WJetsToLNu*.root",
258 mc_2016+
"*_ST_*.root",
259 mc_2016+
"*_TTWJets*.root", mc_2016+
"*_TTZTo*.root",
260 mc_2016+
"*DYJetsToLL*.root", mc_2016+
"*_QCD_HT*.root",
261 mc_2016+
"*_ZJet*.root", mc_2016+
"*_WWTo*.root",
262 mc_2016+
"*ggZH_HToBB*.root", mc_2016+
"*ttHJetTobb*.root",
263 mc_2016+
"*_TTGJets*.root", mc_2016+
"*_TTTT_*.root",
264 mc_2016+
"*_WH_HToBB*.root", mc_2016+
"*_WZTo*.root",
265 mc_2016+
"*_ZH_HToBB*.root", mc_2016+
"_ZZ_*.root"},
268 vector<shared_ptr<Process> > mc2015 = {allmc_lowmt_2015, allmc_highmt_2015};
269 vector<shared_ptr<Process> > mc2016 = {allmc_lowmt_2016, allmc_highmt_2016};
271 vector<PlotMaker> pm_mc(2);
272 vector<vector<shared_ptr<Process> > > sams_mc = {mc2015, mc2016}; vector<string> sam_mc_tag = {
"mc2015",
"mc2016"};
273 vector<string> leps_mc = {
"nleps==2",
"nels==2&&nmus==0",
"nels==0&&nmus==2",
"nels==1&&nmus==1"};
274 vector<string> lep_mc_tag = {
"2leps",
"2els",
"2mus",
"1el1mu"};
277 for(
unsigned int iyr=0; iyr<2; iyr++){
279 for(
unsigned int ilep=0; ilep<leps_mc.size(); ilep++){
281 string cut2l_base =
"ht>500&&met>200&&"+leps_mc[ilep]+
"&&njets>=5&&nbm<=2";
282 string tag = sam_mc_tag[iyr]+
"_"+lep_mc_tag[ilep];
284 pm_mc[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
285 cut2l_base+
"&&met<=350", sams_mc[iyr], mc_plot_types).
Tag(tag);
286 pm_mc[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj14",
"M_{J}^{1.4} [GeV]", {250., 400.}),
287 cut2l_base+
"&&met>350&&met<=500", sams_mc[iyr], mc_plot_types).
Tag(tag);
291 pm_mc[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
292 cut2l_base+
"&&met<=350", sams_mc[iyr], mc_plot_types).
Tag(tag);
293 pm_mc[iyr].Push<
Hist1D>(
Axis(20, 0., 1000.,
"mj",
"M_{J}^{1.2} [GeV]", {250., 400.}),
294 cut2l_base+
"&&met>350&&met<=500", sams_mc[iyr], mc_plot_types).
Tag(tag);
296 pm_mc[iyr].MakePlots(lumi[iyr]);
PlotOpt & Stack(PlotOptTypes::StackType stack_type)
PlotOpt & FileExtensions(const std::set< std::string > &file_extensions)
PlotOpt & YAxis(PlotOptTypes::YAxisType y_axis_type)
void ReplaceAll(std::string &str, const std::string &orig, const std::string &rep)
PlotOpt & Bottom(PlotOptTypes::BottomType bottom_type)
shared_ptr< Process > Proc(const string process_name, Process::Type type, int color, const set< string > &files, const string &cut="1")
PlotOpt & ShowBackgroundError(bool show_background_error)
A full 1D plot with stacked/overlayed histograms.
Hist1D & Tag(const std::string &tag)
PlotOpt & Title(PlotOptTypes::TitleType title_type)
Loads colors from a text configuration file.