28 int main(
int argc,
char *argv[]){
30 std::string extraWeight(
"w_pu_rpv/eff_trig");
35 TString
outDir(
"rpv_base");
37 TString nMinus1String(
"nminus1");
38 if(argv[1]!=nMinus1String) {
39 cout <<
"Only valid option is 'nminus1'. If no options are specified, the default plots are generated" << endl;
51 vector<TString> s_rpv;
52 s_rpv.push_back(
"/homes/cawest/babymaker/CMSSW_7_4_14/src/babymaker/RPV_M1000.root");
53 vector<TString> s_rpv_M1100;
54 s_rpv_M1100.push_back(
"/homes/cawest/babymaker/CMSSW_7_4_14/src/babymaker/RPV_M1100.root");
55 vector<TString> s_rpv_NLO;
56 s_rpv_NLO.push_back(
"/homes/cawest/CMSSW_7_4_14/src/babymaker/RPV_M1000_NLO.root");
58 vector<TString> s_tt_had;
60 s_tt_had.push_back(
"/net/cms2/cms2r0/jaehyeokyoo/babies/skim_ht1200/*TTJets_TuneCUETP8M1_13TeV-madgraphMLM*");
63 s_tt.push_back(
filestring(
"TTJets_DiLept_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
64 s_tt.push_back(
filestring(
"TTJets_DiLept_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
65 s_tt.push_back(
filestring(
"TTJets_SingleLeptFromT_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
66 s_tt.push_back(
filestring(
"TTJets_SingleLeptFromT_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
67 s_tt.push_back(
filestring(
"TTJets_SingleLeptFromTbar_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
68 s_tt.push_back(
filestring(
"TTJets_SingleLeptFromTbar_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
69 vector<TString> s_wjets;
70 s_wjets.push_back(
filestring(
"WJetsToLNu_HT-600ToInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
71 vector<TString> s_singlet;
72 s_singlet.push_back(
filestring(
"ST_s-channel_4f_leptonDecays_13TeV-amcatnlo-pythia8_TuneCUETP8M1"));
73 s_singlet.push_back(
filestring(
"ST_t-channel_antitop_4f_leptonDecays_13TeV-powheg-pythia8_TuneCUETP8M1"));
74 s_singlet.push_back(
filestring(
"ST_t-channel_top_4f_leptonDecays_13TeV-powheg-pythia8_TuneCUETP8M1"));
75 s_singlet.push_back(
filestring(
"ST_tW_antitop_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1"));
76 s_singlet.push_back(
filestring(
"ST_tW_top_5f_inclusiveDecays_13TeV-powheg-pythia8_TuneCUETP8M1"));
77 vector<TString> s_qcd;
78 s_qcd.push_back(
filestring(
"QCD_HT1000to1500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
79 s_qcd.push_back(
filestring(
"QCD_HT1000to1500_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
80 s_qcd.push_back(
filestring(
"QCD_HT1500to2000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
81 s_qcd.push_back(
filestring(
"QCD_HT1500to2000_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
82 s_qcd.push_back(
filestring(
"QCD_HT2000toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
83 s_qcd.push_back(
filestring(
"QCD_HT2000toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_ext1"));
84 vector<TString> s_other;
85 s_other.push_back(
filestring(
"DYJetsToLL_M-50_HT-600toInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
86 s_other.push_back(
filestring(
"TTWJetsToLNu_TuneCUETP8M1_13TeV-amcatnloFXFX-madspin-pythia8"));
87 s_other.push_back(
filestring(
"TTWJetsToQQ_TuneCUETP8M1_13TeV-amcatnloFXFX-madspin-pythia8"));
88 s_other.push_back(
filestring(
"TTZToQQ_TuneCUETP8M1_13TeV-amcatnlo-pythia8"));
89 s_other.push_back(
filestring(
"TTZToLLNuNu_M-10_TuneCUETP8M1_13TeV-amcatnlo-pythia8"));
90 s_other.push_back(
filestring(
"ttHJetTobb_M125_13TeV_amcatnloFXFX_madspin_pythia8"));
91 s_other.push_back(
filestring(
"TTTT_TuneCUETP8M1_13TeV-amcatnlo-pythia8"));
92 vector<TString> s_w_had;
93 s_w_had.push_back(
filestring(
"WJetsToQQ_HT-600ToInf_TuneCUETP8M1_13TeV-madgraphMLM-pythia8"));
94 vector<TString> s_z_had;
95 s_z_had.push_back(
filestring(
"ZJetsToQQ_HT600toInf_13TeV-madgraph"));
96 vector<TString> s_jetht;
97 s_jetht.push_back(
filestring(
"JetHT_Run2015C_25ns-05Oct2015-v1"));
98 s_jetht.push_back(
filestring(
"JetHT_Run2015D-05Oct2015-v1"));
99 s_jetht.push_back(
filestring(
"JetHT_Run2015D-PromptReco-v4"));
102 vector<sfeats> Samples;
104 Samples.push_back(
sfeats(s_jetht,
"Data",kBlack,1,
"trig[12] && pass && (njets<10 || (nmus+nels)==0)"));
105 Samples.back().isData =
true;
106 Samples.back().doStack =
false;
109 Samples.back().doStack =
false;
110 Samples.back().isSig =
true;
111 Samples.push_back(
sfeats(s_rpv_M1100,
"#tilde{g}(1.1 TeV)#rightarrow tbs",
ra4::c_t1tttt, 2));
112 Samples.back().doStack =
false;
113 Samples.back().isSig =
true;
116 Samples.push_back(
sfeats(s_z_had,
"Z+jets, 0 l", kBlack, 1,
cutandweight(
"1",extraWeight)));
119 Samples.push_back(
sfeats(s_tt_had,
"t#bar{t}, 0 l", kTeal, 1,
cutandweight(
"ntruleps==0", extraWeight)));
127 unsigned nsam(Samples.size());
128 for(
unsigned sam(0); sam < nsam; sam++){
129 rpv_sam.push_back(sam);
130 vector<TString> sam_files = Samples[sam].file;
131 Samples.push_back(
sfeats(sam_files, Samples[sam].label, Samples[sam].color, Samples[sam].style,
137 TString cuts(
"(nmus+nels)==1");
139 std::vector<TString> basecut = {
"(nmus+nels)==0",
"(nmus+nels)==1"};
140 std::vector<TString> mjcuts = {
"mj<=300",
"mj>300&&mj<=500",
"mj>500&&mj<=800",
"mj>800"};
141 std::vector<TString> njetcuts = {
"njets>=4&&njets<=5",
"njets>=6&&njets<=7",
"njets>=8&&njets<=9",
"njets>=10"};
142 TString htcut(
"ht>1500");
144 for(
auto ibasecut : basecut) {
145 for(
auto imjcut : mjcuts) {
146 for(
auto ijetcut : njetcuts) {
148 bool isBlind = (ibasecut.EqualTo(
"(nmus+nels)==0") && !ijetcut.EqualTo(
"njets>=4&&njets<=5") && !ijetcut.EqualTo(
"njets>=6&&njets<=7" )) ||
149 (ibasecut.EqualTo(
"(nmus+nels)==1") && !ijetcut.EqualTo(
"njets>=4&&njets<=5"));
151 if(imjcut.EqualTo(
"mj>300&&mj<=500" && !ibasecut.EqualTo(
"(nmus+nels)==1"))) isBlind=
false;
152 if(ibasecut.EqualTo(
"(nmus+nels)==0") && (imjcut.EqualTo(
"mj<=300") || (imjcut.EqualTo(
"mj>300&&mj<=500")))) isBlind=
false;
153 if(isBlind && showData)
continue;
154 if(ibasecut==
"(nmus+nels)==1") {
155 ijetcut.ReplaceAll(
"njets>=10",
"njets>=8");
158 cuts = ibasecut +
"&&" + htcut +
"&&" + ijetcut +
"&&" + imjcut;
165 vars.push_back(
hfeats(
"nbm", 4, 1, 5, rpv_sam,
"N_{b}", cuts));
166 vars.back().normalize =
true;
183 for(
auto ibasecut : basecut) {
184 for(
auto imjcut : mjcuts) {
185 TString ijetcut =
"njets<=7";
186 if(!showData) ijetcut =
"njets>=0";
187 if(ibasecut==
"(nmus+nels)==1") {
188 ijetcut.ReplaceAll(
"njets<=7",
"njets<=5");
191 cuts = ibasecut +
"&&" + htcut +
"&&" + ijetcut +
"&&" + imjcut;
193 vars.push_back(
hfeats(
"njets",20, 0, 20, rpv_sam,
"N_{jets}", cuts));
194 vars.back().normalize =
true; vars.back().whichPlots =
"1";
199 for(
auto ibasecut : basecut) {
200 for(
auto ijetcut : njetcuts) {
202 bool isBlind = (ibasecut.EqualTo(
"(nmus+nels)==0") && !ijetcut.EqualTo(
"njets>=4&&njets<=5") && !ijetcut.EqualTo(
"njets>=6&&njets<=7" )) ||
203 (ibasecut.EqualTo(
"(nmus+nels)==1") && !ijetcut.EqualTo(
"njets>=4&&njets<=5"));
204 if(isBlind && showData)
continue;
205 if(ibasecut==
"(nmus+nels)==1") {
206 ijetcut.ReplaceAll(
"njets>=10",
"njets>=8");
209 cuts = ibasecut +
"&&" + htcut +
"&&" + ijetcut;
211 vars.push_back(
hfeats(
"mj",25, 0, 2500, rpv_sam,
"M_{J} (GeV)", cuts));
212 vars.back().normalize =
true; vars.back().whichPlots =
"1";
223 std::vector<std::string> basecutsNm1 = {
"(nmus+nels)==0",
"(nmus+nels)==1"};
224 std::vector<std::string> htcutsNm1 = {
"ht>1500",
"ht>1200"};
225 std::vector<std::string> mjcutsNm1 = {
"mj>800",
"mj>500"};
226 std::vector<std::string> njetcutsNm1 = {
"njets>=10",
"njets>=8"};
227 std::vector<std::string> nbcutsNm1 = {
"nbm>=3",
"nbm>=3"};
228 for(
unsigned int i=0; i<basecutsNm1.size(); i++) {
229 std::string cutsNm1=basecutsNm1[i]+
"&&"+mjcutsNm1[i]+
"&&"+njetcutsNm1[i]+
"&&"+nbcutsNm1[i];
230 vars.push_back(
hfeats(
"ht",40, 0, 4000, rpv_sam,
"H_{T} (GeV)", cutsNm1));
231 cutsNm1=basecutsNm1[i]+
"&&"+htcutsNm1[i]+
"&&"+njetcutsNm1[i]+
"&&"+nbcutsNm1[i];
232 vars.push_back(
hfeats(
"mj",25, 0, 2500, rpv_sam,
"M_{J} (GeV)", cutsNm1));
233 cutsNm1=basecutsNm1[i]+
"&&"+htcutsNm1[i]+
"&&"+mjcutsNm1[i]+
"&&"+nbcutsNm1[i];
234 vars.push_back(
hfeats(
"njets",20, 0, 20, rpv_sam,
"N_{jets}", cutsNm1));
235 cutsNm1=basecutsNm1[i]+
"&&"+htcutsNm1[i]+
"&&"+mjcutsNm1[i]+
"&&"+njetcutsNm1[i];
236 vars.push_back(
hfeats(
"nbm",6, 0, 6, rpv_sam,
"N_{b}", cutsNm1));
237 cutsNm1=basecutsNm1[i]+
"&&"+htcutsNm1[i]+
"&&"+mjcutsNm1[i]+
"&&"+njetcutsNm1[i]+
"&&"+nbcutsNm1[i];
238 vars.push_back(
hfeats(
"jets_pt[0]",30, 0, 1500, rpv_sam,
"p_{T,1} (GeV)", cutsNm1));
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)
std::string cutandweight(std::string cut, std::string weight)
int main(int argc, char *argv[])
TString filestring(TString dataset, bool isSkimmed=true)