10 #include "core/baby.hpp" 16 #include "core/histo_stack.hpp" 28 gErrorIgnoreLevel = 6000;
30 string hostname =
execute(
"echo $HOSTNAME");
32 bfolder =
"/net/cms2";
34 Palette colors(
"txt/colors.txt",
"default");
36 string ntupletag =
"*.root";
38 string fmc = bfolder+
"/cms2r0/babymaker/babies/2016_08_10/mc/merged_mcbase_standard/";
39 string fdata = bfolder+
"/cms2r0/babymaker/babies/2016_08_10/data/merged_database_standard/";
42 {fmc+
"*_TTJets*Lept"+ntupletag, fmc+
"*_TTJets_HT"+ntupletag},
"ntruleps<=1&&stitch");
44 {fmc+
"*_TTJets*Lept"+ntupletag, fmc+
"*_TTJets_HT"+ntupletag},
"ntruleps>=2&&stitch");
46 {fmc+
"*_WJetsToLNu"+ntupletag},
"stitch");
48 {fmc+
"*_ST_"+ntupletag});
50 {fmc+
"*_TTWJets"+ntupletag, fmc+
"*_TTZTo"+ntupletag});
52 {fmc+
"*DYJetsToLL"+ntupletag,
53 fmc+
"*_QCD_HT*00_Tune"+ntupletag, fmc+
"*_QCD_HT*Inf_Tune"+ntupletag,
54 fmc+
"*_ZJet"+ntupletag, fmc+
"*_WWTo"+ntupletag,
55 fmc+
"*ggZH_HToBB"+ntupletag, fmc+
"*ttHJetTobb"+ntupletag,
56 fmc+
"*_TTGJets"+ntupletag, fmc+
"*_TTTT_"+ntupletag,
57 fmc+
"*_WH_HToBB"+ntupletag, fmc+
"*_WZTo"+ntupletag,
58 fmc+
"*_ZH_HToBB"+ntupletag, fmc+
"_ZZ_"+ntupletag});
60 auto data_highmt = Process::MakeShared<Baby_full>(
"Data 1l, m_{T} > 140",
Process::Type::data, kBlack,
61 {fdata+ntupletag},
"pass && json12p9 && trig_ra4 && st>500 && mt>140 && nleps==1 && nveto==0 && njets>=6 && nbm>=1");
63 {fdata+ntupletag},
"pass && json12p9 && trig_ra4 && st>500 && mt<=140 && nleps==1 && nveto==0 && njets>=6 && nbm>=1");
64 data_lowmt->SetFillColor(kWhite);
65 data_lowmt->SetLineColor(kBlue-7);
66 data_lowmt->SetLineWidth(2);
68 auto data2lveto = Process::MakeShared<Baby_full>(
"Data 2l or l+trk",
Process::Type::data, kBlue+2,
70 "pass && json12p9 && trig_ra4 && st>500 && ((nleps==2 && njets>=5 && nbm<=2) || (nleps==1 && nveto==1 && njets>=6 && nbm>=1 && mt>140))");
74 "pass && json12p9 && trig_ra4 && st>500 && (nleps==2 && njets>=5 && nbm<=2)");
78 {fdata+ntupletag},
"pass && json12p9 && trig_ra4");
80 vector<shared_ptr<Process> > all_procs;
81 all_procs = {data,
tt1l,
tt2l, wjets, single_t, ttv, other};
83 vector<shared_ptr<Process> > data1l_procs = {data_highmt, data_lowmt};
84 vector<shared_ptr<Process> > data2lveto_procs = {data2lveto, data_lowmt};
85 vector<shared_ptr<Process> > data2l_procs = {data2l, data_lowmt};
87 PlotOpt log_lumi(
"txt/plot_styles.txt",
"CMSPaper");
88 log_lumi.
Title(TitleType::preliminary)
90 .
YAxis(YAxisType::log)
91 .
Stack(StackType::data_norm);
96 PlotOpt lin_shapes = log_shapes().
YAxis(YAxisType::linear);
97 PlotOpt log_lumi_info = log_lumi().
Title(TitleType::info);
98 PlotOpt lin_lumi_info = lin_lumi().
Title(TitleType::info);
99 PlotOpt log_shapes_info = log_shapes().
Title(TitleType::info);
100 PlotOpt lin_shapes_info = lin_shapes().
Title(TitleType::info);
101 vector<PlotOpt>
log = {log_lumi_info};
102 vector<PlotOpt> lin = {lin_lumi_info};
108 string baseline =
"met>200 && nleps==1 && nveto==0 && st>500 && njets>=6 && nbm>=1";
112 pm.
Push<HistoStack>(HistoDef(20, 500., 2500.,
"st",
"S_{T} [GeV]",
113 baseline,
"weight"), all_procs, log);
114 pm.
Push<HistoStack>(HistoDef(20, 0., 1000.,
"mj14",
"M_{J} [GeV]",
115 baseline +
"&&mt<=140",
"weight", {250.,400.}), all_procs, lin);
116 pm.
Push<HistoStack>(HistoDef(16, -0.5, 15.5,
"njets",
"N_{jets}",
117 CopyReplaceAll(baseline,
"&& njets>=6",
""),
"weight"), all_procs, lin);
118 pm.
Push<HistoStack>(HistoDef(20, 0., 700.,
"fjets14_m[0]",
"leading fat jet mass [GeV]",
119 baseline,
"weight", {5.5, 8.5}), all_procs, lin);
122 pm.
Push<HistoStack>(HistoDef(11, 150., 700.,
"met",
"MET [GeV]",
123 CopyReplaceAll(baseline,
"met>200",
"met>150"),
"weight", {200.,350.,500.}), all_procs, log);
124 pm.
Push<HistoStack>(HistoDef(20, 20., 520.,
"leps_pt[0]",
"lepton p_{T} [GeV]",
125 baseline,
"weight"), all_procs, log);
126 pm.
Push<HistoStack>(HistoDef(15, 0., 525.,
"mt",
"m_{T} [GeV]",
127 baseline,
"weight", {140.}), all_procs, log);
129 baseline,
"weight"), all_procs, log);
131 baseline,
"weight"), all_procs, log);
132 pm.
Push<HistoStack>(HistoDef(16, 0., 3.2, dphi_met_lep,
"#Delta#phi(l,MET)",
133 baseline,
"weight"), all_procs, log);
136 pm.
Push<HistoStack>(HistoDef(7, -0.5, 6.5,
"nbm",
"N_{b}",
137 CopyReplaceAll(baseline,
"&& nbm>=1",
""),
"weight", {0.5, 1.5, 2.5}), all_procs, lin);
140 vector<string> metbins = {
"met>150 && met<=500",
"met>150 && met<=200",
"met>200 && met<=350",
"met>350 && met<=500",
"met>200 && met<=500",
"met>500",
"met>200"};
141 for (
auto &imet: metbins){
142 pm.
Push<HistoStack>(HistoDef(
"data1l1b", 20,0.,1000.,
"mj14",
"M_{J} [GeV]",
143 imet +
"&&nbm==1",
"weight", {250.,400.}), data1l_procs, lin);
144 pm.
Push<HistoStack>(HistoDef(
"data1l2b", 20,0.,1000.,
"mj14",
"M_{J} [GeV]",
145 imet +
"&&nbm>=2",
"weight", {250.,400.}), data1l_procs, lin);
146 pm.
Push<HistoStack>(HistoDef(
"data2l", 20,0.,1000.,
"mj14",
"M_{J} [GeV]",
147 imet,
"weight", {250.,400.}), data2l_procs, lin);
148 pm.
Push<HistoStack>(HistoDef(
"data2lveto", 20,0.,1000.,
"mj14",
"M_{J} [GeV]",
149 imet,
"weight", {250.,400.}), data2lveto_procs, lin);
152 pm.
Push<HistoStack>(HistoDef(20, 0., 1000.,
"mj14",
"M_{J} [GeV]",
153 baseline +
"&&mt>140",
"weight", {250.,400.}), all_procs, lin);
154 pm.
Push<HistoStack>(HistoDef(20, 0., 1000.,
"mj14",
"M_{J} [GeV]",
155 baseline +
"&&mt>140 && nbm==1",
"weight", {250.,400.}), all_procs, lin);
156 pm.
Push<HistoStack>(HistoDef(20, 0., 1000.,
"mj14",
"M_{J} [GeV]",
157 baseline +
"&&mt>140 && nbm>=2",
"weight", {250.,400.}), all_procs, lin);
PlotOpt & Stack(PlotOptTypes::StackType stack_type)
PlotOpt & YAxis(PlotOptTypes::YAxisType y_axis_type)
std::vector< float > *const & leps_phi() const
Get leps_phi for current event and cache it.
Abstract base class for access to ntuple variables.
Combines a callable function taking a Baby and returning a scalar or vector with its string represent...
bool Contains(const std::string &str, const std::string &pat)
float const & met_phi() const
Get met_phi for current event and cache it.
std::string execute(const std::string &cmd)
FigureType & Push(Args &&...args)
Organizes efficient production of plots with single loop over each process.
PlotOpt & Bottom(PlotOptTypes::BottomType bottom_type)
const NamedFunc min_dphi_met_jet
PlotOpt & ShowBackgroundError(bool show_background_error)
const NamedFunc max_dphi_met_jet
void MakePlots(double luminosity, const std::string &subdir="")
Prints all added plots with given luminosity.
PlotOpt & Title(PlotOptTypes::TitleType title_type)
std::string CopyReplaceAll(const std::string &str, const std::string &orig, const std::string &rep)
Loads colors from a text configuration file.