#include #include #include "plotter.hpp" #include "TROOT.h" /* * * Makes plots from histograms made by this package * Basic outline of classes follows : * * plotter : gets histograms from files and writes the output file * * G. Facini * Wed Aug 8 08:43:59 CEST 2012 */ int main(int argc, char* argv[]) { //if(argc != 2) { // cerr << "Usage: " << argv[0] << " " << endl; // cerr << " = Data11 or Data12" << endl; // return 0; //} TString globalpath; TString globalpath2; bool m_flavourFit = false; bool m_savePlots = false; bool m_makeLimitFile = false; bool m_makeFlavFile = false; bool m_useGlobalFitScales = true; int m_sysSelect = -1; int m_anaType = 1; TString m_dataType = "Data12"; bool m_useAlpgen = false; //TString cdi_calib = "ttbar_ksdlkflj"; TString cdi_calib = "ttbar_all"; bool m_nominalInputs = 0; bool m_test = 0; bool m_nominalPlots = 0; bool m_mjscales = 0; //TString cdi_calib = "ttbar_kinsel_ljet"; for (int i_file=1 ; i_file eventType; eventType.push_back("ElTrig"); eventType.push_back("MuTrig"); vector cuts; if(m_flavourFit) { cuts.push_back("0BTagLowMBB"); //cuts.push_back("0BTag"); } else { if(!m_test) { cuts.push_back(""); cuts.push_back("3Jet"); cuts.push_back("4Jet"); cuts.push_back("1BTag"); cuts.push_back("0BTag"); cuts.push_back("PreBTag"); } else { cuts.push_back("4Jet"); cuts.push_back("4Jet0BTag"); cuts.push_back("4Jet1BTag"); } } vector vars; vars.push_back("met"); if(!m_mjscales ) { if(m_flavourFit) { vars.push_back("MV1Jet1WithSF"); vars.push_back("MV1Jet2WithSF"); vars.push_back("MV1Jet12WithSF"); vars.push_back("MV1Jet1NoSF"); vars.push_back("MV1Jet2NoSF"); vars.push_back("MV1Jet12NoSF"); vars.push_back("NNbcJet1WithSF"); vars.push_back("NNbcJet2WithSF"); vars.push_back("NNbcJet12WithSF"); vars.push_back("NNbcJet1NoSF"); vars.push_back("NNbcJet2NoSF"); vars.push_back("NNbcJet12NoSF"); vars.push_back("MV12DBothJetsNoSF"); vars.push_back("MV12DBothJetsWithSF"); vars.push_back("NNbcJet2NoSFTag"); vars.push_back("NNbcJet2WithSFTag"); } else { vars.push_back("mJJ"); if(m_test) { vars.push_back("jet1Pt"); vars.push_back("jet2Pt"); vars.push_back("vpt"); } if(0 && m_nominalPlots) { vars.push_back("nSignalJets"); vars.push_back("jet1Pt"); vars.push_back("jet2Pt"); vars.push_back("jet1Eta"); vars.push_back("jet2Eta"); vars.push_back("mtw"); vars.push_back("deltaRJJ"); vars.push_back("deltaPhiJJ"); vars.push_back("deltaEtaJJ"); vars.push_back("lep1Eta"); vars.push_back("lep1Pt"); vars.push_back("vpt"); vars.push_back("pTJJ"); vars.push_back("nVertices"); //vars.push_back("mVH"); } } } vector bins; if(!m_makeLimitFile) { bins.push_back(""); } if(!m_mjscales && !m_flavourFit && !m_test) { bins.push_back("_bin0"); bins.push_back("_bin1"); bins.push_back("_bin2"); bins.push_back("_bin3"); bins.push_back("_bin4"); } vector systNames; if(m_sysSelect < 1) { systNames.push_back(""); } if(!m_flavourFit) { if(m_sysSelect == 0 || m_sysSelect == 1) { systNames.push_back("SysBTagBEff0Up"); systNames.push_back("SysBTagBEff0Do"); systNames.push_back("SysBTagBEff1Do"); systNames.push_back("SysBTagBEff1Up"); systNames.push_back("SysBTagBEff2Do"); systNames.push_back("SysBTagBEff2Up"); systNames.push_back("SysBTagBEff3Do"); systNames.push_back("SysBTagBEff3Up"); systNames.push_back("SysBTagBEff4Do"); systNames.push_back("SysBTagBEff4Up"); systNames.push_back("SysBTagBEff5Do"); systNames.push_back("SysBTagBEff5Up"); systNames.push_back("SysBTagCEffDo"); systNames.push_back("SysBTagCEffUp"); systNames.push_back("SysBTagLEffDo"); systNames.push_back("SysBTagLEffUp"); } if(m_sysSelect == 0 || m_sysSelect == 2) { systNames.push_back("SysElecEfficUp"); systNames.push_back("SysElecEfficDo"); systNames.push_back("SysMuonEfficUp"); systNames.push_back("SysMuonEfficDo"); systNames.push_back("SysMuonEScaleDo"); systNames.push_back("SysMuonEScaleUp"); /*systNames.push_back("SysMuonEResolIDDo"); systNames.push_back("SysMuonEResolIDUp"); systNames.push_back("SysMuonEResolMSDo"); systNames.push_back("SysMuonEResolMSUp");*/ systNames.push_back("SysBJetEDo"); systNames.push_back("SysBJetEUp"); /*systNames.push_back("SysElecEDo"); systNames.push_back("SysElecEUp"); systNames.push_back("SysElecEResolDo"); systNames.push_back("SysElecEResolUp");*/ systNames.push_back("SysJetEPtRecoUp"); systNames.push_back("SysJetEPtRecoDo"); systNames.push_back("SysMuScaleUp"); systNames.push_back("SysMuScaleDo"); systNames.push_back("SysJetEFlavDo"); systNames.push_back("SysJetEFlavUp"); } if(m_sysSelect == 0 || m_sysSelect == 3) { systNames.push_back("SysJetEBaselineDo"); systNames.push_back("SysJetEBaselineUp"); systNames.push_back("SysJetEMuOffsetDo"); systNames.push_back("SysJetEMuOffsetUp"); systNames.push_back("SysJetENPVOffsetDo"); systNames.push_back("SysJetENPVOffsetUp"); systNames.push_back("SysMETResoSoftTermsDo"); systNames.push_back("SysMETResoSoftTermsUp"); systNames.push_back("SysMETScaleSoftTermsDo"); systNames.push_back("SysMETScaleSoftTermsUp"); systNames.push_back("SysJetEResolUp"); systNames.push_back("SysJetEResolDo"); systNames.push_back("SysJetEClosebyDo"); systNames.push_back("SysJetEClosebyUp"); systNames.push_back("SysJetEForwardDo"); systNames.push_back("SysJetEForwardUp"); } if(m_sysSelect == 4) { systNames.push_back("SysJetEFlavDo"); systNames.push_back("SysJetEFlavUp"); //systNames.push_back("SysBTagBEff0Do"); //systNames.push_back("SysBTagBEff1Do"); //systNames.push_back("SysBTagBEff1Up"); } } bool useeos = 1; //TString version = "20121002_frozenv6"; //TString version = "20121003_frozenv8"; //TString version = "20121001_fixflavv2"; // Version used to make inputs for unblinding v1 //TString version = "20121009_unblindingv2"; // // Latest version for unblinding // TString version = "20121017_finalbtag"; // Nominal with sherpa and alpgen included //TString version = "20121017_includeWb"; // Truth tagged //TString version = "20121018_truthtagv2"; // Unblinded // 2011 //TString version = "20121022_unblindingv3"; // 2012 //TString version = "20121022_unblindingv5"; // 2012 DT // TString version = "20121024_unblindingPureDTv7"; // Fixed 2011 Unblinded TString version = "20121026_approvalv1"; if(m_dataType == "Data11") version = "20121028_Approvalv2"; if(m_test && m_dataType == "Data11") { //ttbar_ksdlkflj // ttbar //version = "20121003_frozenv8"; //cdi_calib = "ttbar"; // none if(cdi_calib == "both") { version = "20121011_calibstudyv3"; } if(cdi_calib == "none") { version = "20121011_calibstudyv3"; } if(cdi_calib == "ttbar_ksdlkflj") { version = "20121012_calibstudyv4"; } //cdi_calib = "none"; // both //version = "20121011_calibstudyv3"; //cdi_calib = "both"; // dijet //version = "20121011_calibstudyv3"; //cdi_calib = "dijet"; } if(m_dataType == "Data12" && m_test) { version = "20121008_2012"; //cdi_calib = "ttbar"; if(m_test) { ///ttbar_ksdlkflj if(cdi_calib == "ttbar_ksdlkflj") { version = "20121012_calibstudyv4"; } // ttbar //version = "20121003_frozenv8"; //cdi_calib = "ttbar"; // none if(cdi_calib == "none") { version = "20121011_calibstudyv3"; } // both //version = "20121011_calibstudyv3"; //cdi_calib = "both"; // dijet //version = "20121011_calibstudyv3"; //cdi_calib = "dijet";/ // dijet //version = "20121011_calibstudyv3"; //cdi_calib = "dijet";/ } } TString versionD = version; if(m_dataType.Contains("Data11")) { versionD = "20121107_removedupv2"; } TString indir = "/afs/cern.ch/user/t/tscanlon/work/analysis/batch"; if(useeos) indir = "/eos/atlas/user/t/tscanlon/Hbb/HCP"; TString year_name = "2012"; if(m_dataType.Contains("Data11")) year_name = "2011"; cdi_calib += "_" + year_name; //TString outdir = year_name + "/cdi_" + cdi_calib + (m_useAlpgen? "_AlpgenWb": "") + "/" + version +"_scaled/"; TString outdir = year_name + "/cdi_" + cdi_calib + (m_useAlpgen? "_AlpgenWb": "") + "/" + version + "_removedup/"; outdir="output"; if(!m_makeLimitFile || m_nominalInputs) { for (vector::iterator syst(systNames.begin()); syst!=systNames.end(); syst++) { gROOT->Reset(); cout << "Scaling plots: " << m_savePlots << endl; plotter *myPlotter = new plotter("plotter",m_savePlots, m_useAlpgen); myPlotter->outdir = outdir; myPlotter->m_dataType = m_dataType; TString systName = *syst; cout << "Running syst: " << systName << endl; TString yearName = ""; TString yearNameData = ""; TString inputDirData = ""; TString inputDirMJData = ""; TString inputDirMC = ""; TString inputDirMJMC = ""; if(m_dataType == "Data11") { // Hacks for blinding v1 //if(systName.Contains("SysJetEMuOffset") || systName.Contains("SysJetENPVOffset") || systName.Contains("SysJetEFlav") || systName.Contains("SysJetEPtReco") || systName.Contains("SysJetEResolDo")) version = "20121011_fridayv1"; //else if(systName.Contains("SysJetEBaseline") || systName.Contains("SysBJetE") || systName.Contains("SysMuonEResol") || systName.Contains("SysMuScale")) version = "20121012_fridayv2"; //else if(systName.Contains("SysElecE") || systName.Contains("SysElecEResol")) version = "20121010_blindingv4"; //else version = versionD; //inputDirData = indir + "/histMaker/2011/20121011_testttbarv1_ttbar_ksdlkflj/"; yearName = "11_7TeV"; yearNameData = yearName; inputDirMC = indir + "/histMaker/2011/" + version + "_" + cdi_calib + "/"; //inputDirData = inputDirMC; inputDirData = indir + "/histMaker/2011/" + versionD + "_" + cdi_calib + "/"; inputDirMJMC = inputDirMC; //inputDirMJMC = inputDirData; inputDirMJData = inputDirData; } if(m_dataType == "Data12") { //if(systName.Contains("SysBTagCEff") || systName.Contains("SysBTagLEff") || systName.Contains("SysMuScale") || systName.Contains("SysJetEFlav")) version = "20121023_unblindingv6"; //else version = versionD; // Old inputs //indir = "/afs/cern.ch/user/t/tscanlon/work/analysis/batch"; //if(useeos) indir = "/eos/atlas/user/g/gfacini/Hbb/HCP"; indir = "/afs/cern.ch/user/t/tscanlon/work/analysis/batch"; if(useeos) indir = "/eos/atlas/user/t/tscanlon/Hbb/HCP"; if(m_test) { indir = "/afs/cern.ch/user/t/tscanlon/work/analysis/batch"; if(useeos) indir = "/eos/atlas/user/t/tscanlon/Hbb/HCP"; } TString indirMC = indir; if(systName.Contains("SysMuScale")) indirMC = "/eos/atlas/user/t/tscanlon/Hbb/HCP"; //version = "20121008_2012"; yearName = "12_8TeV"; //yearNameData = "12_8TeV.FullHCP"; yearNameData = "12_8TeV"; if(m_test) { yearName = "12_8TeV"; yearNameData = "12_8TeV"; } inputDirData = indir + "/histMaker/2012/" + versionD + "_" + cdi_calib + "/"; if(m_test) inputDirData = indir + "/histMaker/2012/20121011_calibstudyv3_none/"; //inputDirData = indir + "/histMaker/2012/20121011_testttbarv1_ttbar_ksdlkflj/"; inputDirMJData = inputDirData; inputDirMC = indirMC + "/histMaker/2012/" + version + "_" + cdi_calib + "/"; //inputDirMJMC = inputDirData; inputDirMJMC = inputDirMC; // set global scales //myPlotter->SetMCScaleEl(12754.60/11578.00); //myPlotter->SetMCScaleMu(12997.50/11700.00); //myPlotter->SetMCScaleMET(x/8350.00); } inputDirMJMC = globalpath ; inputDirMC = globalpath; inputDirData = globalpath; inputDirMJData = globalpath; cout << "Reading in file: " << inputDirMC << endl; myPlotter->mjelFile = inputDirMJData + "AnalysisManager.data" + yearNameData +".OneLepton.Electron.Hists.MJ.root"; myPlotter->mjmuFile = inputDirMJData + "AnalysisManager.data" + yearNameData +".OneLepton.Muon.Hists.MJ.root"; myPlotter->dataelFile = inputDirData + "AnalysisManager.data" + yearNameData +".OneLepton.Electron.Hists.root"; myPlotter->datamuFile = inputDirData + "AnalysisManager.data" + yearNameData +".OneLepton.Muon.Hists.root"; myPlotter->mcmjFile = inputDirMJMC + "AnalysisManager.mc" + yearName +".OneLepton.Nominal.Hists.MJ.root"; cout << "Data muon file: " << myPlotter->datamuFile << endl; cout << "Data electron file: " << myPlotter->dataelFile << endl; cout << "Data MJ electron file: " << myPlotter->mjelFile << endl; cout << "Data MJ muon file: " << myPlotter->mjmuFile << endl; cout << "MC MJ: " << myPlotter->mcmjFile << endl; myPlotter->databothFile = ""; TString nameSel = "Nominal"; // can remake this with these lines // eos ls /eos/atlas/user/g/gfacini/Hbb/HCP/histMaker/2012/20121008_2012_ttbar/ | grep -v MJ | grep -v data | grep -v Nominal | awk -F'.' '{print "if(systName.Contains(\""$6"\")) nameSel = \""$4"\";"}' | sort -u if(systName.Contains("SysBJetEDo")) nameSel = (m_dataType == "Data12"? "SysJetNomB" : "SysNomB"); if(systName.Contains("SysBJetEUp")) nameSel = (m_dataType == "Data12"? "SysJetNomB" : "SysNomB"); if(systName.Contains("SysJetEBaselineDo")) nameSel = (m_dataType == "Data12"? "SysJetNomB" : "SysNomB"); if(systName.Contains("SysJetEBaselineUp")) nameSel = (m_dataType == "Data12"? "SysJetNomB" : "SysNomB"); if(systName.Contains("SysElecEDo")) nameSel = (m_dataType == "Data12"? "SysElectron" : "SysEle"); if(systName.Contains("SysElecEResolDo")) nameSel = (m_dataType == "Data12"? "SysElectron" : "SysEle"); if(systName.Contains("SysElecEResolUp")) nameSel = (m_dataType == "Data12"? "SysElectron" : "SysEle"); if(systName.Contains("SysElecEUp")) nameSel = (m_dataType == "Data12"? "SysElectron" : "SysEle"); if(systName.Contains("SysJetEClosebyDo")) nameSel = "SysJetCloseFor"; if(systName.Contains("SysJetEClosebyUp")) nameSel = "SysJetCloseFor"; if(systName.Contains("SysJetEFlavDo")) nameSel = "SysJetFlav"; if(systName.Contains("SysJetEFlavUp")) nameSel = "SysJetFlav"; if(systName.Contains("SysJetEForwardDo")) nameSel = "SysJetCloseFor"; if(systName.Contains("SysJetEForwardUp")) nameSel = "SysJetCloseFor"; if(systName.Contains("SysJetEMuOffsetDo")) nameSel = "SysJetPU"; if(systName.Contains("SysJetEMuOffsetUp")) nameSel = "SysJetPU"; if(systName.Contains("SysJetENPVOffsetDo")) nameSel = "SysJetPU"; if(systName.Contains("SysJetENPVOffsetUp")) nameSel = "SysJetPU"; if(systName.Contains("SysJetEResolDo")) nameSel = "SysJetRes"; if(systName.Contains("SysJetEResolUp")) nameSel = "SysJetRes"; if(systName.Contains("SysMuonEResolIDDo")) nameSel = "SysMuon"; if(systName.Contains("SysMuonEResolIDUp")) nameSel = "SysMuon"; if(systName.Contains("SysMuonEResolMSDo")) nameSel = "SysMuon"; if(systName.Contains("SysMuonEResolMSUp")) nameSel = "SysMuon"; if(systName.Contains("SysMuonEScaleDo")) nameSel = "SysJetRes"; if(systName.Contains("SysMuonEScaleUp")) nameSel = "SysJetRes"; if(systName.Contains("SysMET")) nameSel = "SysMET"; /* got sick of editing by hand if(systName.Contains("SysMuonEResol")) nameSel = "SysMuon"; if(systName.Contains("SysMuonEResolID")) nameSel = "SysMuon"; if(systName.Contains("SysMET")) nameSel = "SysMET"; if(systName.Contains("SysBJet")) nameSel = "SysJetE"; if(systName.Contains("SysElecEResol") || systName.Contains("SysElecEUp") || systName.Contains("SysElecEDo")) nameSel = "SysElectron"; if(systName.Contains("SysJetECloseby")) nameSel = "SysJetCloseFor"; if(systName.Contains("SysJetEFlav")) nameSel = "SysJetFlav"; if(systName.Contains("SysJetEMuOffset") || systName.Contains("SysJetENPVOffset")) nameSel = "SysJetPU"; if(systName.Contains("SysJetE")) { //§if(systName.Contains("SysJetEResol") || systName.Contains("SysJetEResol")) nameSel = "SysJetRes"; if(systName.Contains("SysJetEResol") || systName.Contains("SysJetEResol") || systName.Contains("SysMuonEScale") nameSel = "SysJetRes"; else if(systName.Contains("SysJetENP") || systName.Contains("SysJetEMu")) nameSel = "SysJetPU"; //else if(systName.Contains("SysJetEBase")) nameSel = "SysJetE"; else if(systName.Contains("SysJetEBase")) nameSel = "SysMuonScaleJetBaseline"; else if(systName.Contains("SysJetE1") || systName.Contains("SysJetE2")) nameSel = "SysJetComp1"; else if(systName.Contains("SysJetE3") || systName.Contains("SysJetE4")) nameSel = "SysJetComp2"; else if(systName.Contains("SysJetE5") || systName.Contains("SysJetE6")) nameSel = "SysJetComp3"; else if(systName.Contains("SysJetE7") || systName.Contains("SysJetE8")) nameSel = "SysJetComp4"; else if(systName.Contains("SysJetE9")) nameSel = "SysJetComp5"; } */ TString TempsystName = systName; //if(systName.Contains("SysBJetE") && m_dataType == "Data12") TempsystName.ReplaceAll("SysBJetE","SysBJet"); if(systName.Contains("SysJetEPtReco")) TempsystName.ReplaceAll("SysJetEPtReco","SysPtReco"); TString mcFile = inputDirMC + "AnalysisManager.mc" + yearName +".OneLepton." + nameSel + ".Hists" + (TempsystName == ""? "" : "." + TempsystName) + ".root"; myPlotter->mcFile = mcFile; if(systName.Contains("BTagB")) { TString systNameTemp = "SysBTagB"; systNameTemp += systName(11); systNameTemp += "Effic"; systNameTemp += systName(12); systNameTemp += systName(13); systName = systNameTemp; } else if(systName.Contains("SysBTagC") || systName.Contains("SysBTagL") ) { systName.ReplaceAll("Eff","Effic"); } float Top_8TeV = 1.222 ; float Zb_8TeV = 1.168; // 1.151 float Zc_8TeV = 0.720 ; // 0.785 float Zl_8TeV = 0.976 ; // 0.965 float Wb_8TeV = 0.993 ; float Wc_8TeV = 1.062 ; float Wl_8TeV = 1.032; float Top_7TeV = 1.194; // 1.188; float Zb_7TeV = 1.191 ; //1.164; // 1.146; float Zc_7TeV = 1.985 ; // 2.146; // 2.208; float Zl_7TeV = 0.914; // 0.903; // 0.895; //float Wb_7TeV = 1.324 ; //1.212; float Wb_7TeV = 1.131 ; //1.212; //float Wb_7TeV = 1.00; //1.212; float Wc_7TeV = 1.061 ; // 1.281; //1.25016 ; // 1.21562; float Wl_7TeV = 1.033; // 0.990; //0.994787; // 0.99743; myPlotter->SetDoFit(false); for (vector::iterator type(eventType.begin()); type!=eventType.end(); type++) { cout << "Trigger: " << *type << endl; for(vector::iterator cut(cuts.begin()); cut!=cuts.end(); cut++) { cout << "Cut: " << *cut << endl; for(int i = 0; i < (int)bins.size(); ++i) { cout << "Bin: " << bins[i] << endl; for(vector::iterator var(vars.begin()); var!=vars.end(); var++) { if( *var == "met" && i > 0 && systName != "") continue; if(systName == "" && m_mjscales) { if( *var == "met" && i==0) { if(i == 0) { myPlotter->m_fitQCDOnly = false; } else { myPlotter->m_fitQCDOnly = true; } if(m_useGlobalFitScales) { myPlotter->m_fitQCDOnly = true; float mjscale = 0.07; if(*cut == "0Btag") mjscale = 2.5; if(*cut == "1Btag") mjscale = 1.0; myPlotter->m_SFMJ[0] = mjscale; if(m_dataType == "Data12") { myPlotter->m_SFTop[0] = Top_8TeV; myPlotter->m_SFVbb[0] = Wb_8TeV; myPlotter->m_SFVcc[0] = Wc_8TeV; myPlotter->m_SFVcl[0] = Wc_8TeV; myPlotter->m_SFVll[0] = Wl_8TeV; } else { myPlotter->m_SFTop[0] = Top_7TeV; myPlotter->m_SFVbb[0] = Wb_7TeV; myPlotter->m_SFVcc[0] = Wc_7TeV; myPlotter->m_SFVcl[0] = Wc_7TeV; myPlotter->m_SFVll[0] = Wl_7TeV; } } if(myPlotter->m_fitQCDOnly) cout << "Peforming QCD fit only" << endl; else cout << "Fitting W+jets/QCD/top" << endl; myPlotter->SetDoFit(true); myPlotter->MakePlots("Selected" + *type+*cut+bins[i], *var, systName); myPlotter->SetDoFit(false); if(m_mjscales && m_useGlobalFitScales) { ios_base::openmode mode = ios_base::out; if(*cut != "") mode = ios_base::app; TString filename = "mjscales_" + version + "_" + m_dataType + "_" + *type + ".txt"; ofstream outfile(filename,mode); outfile << "float mjscale" << *cut << m_dataType << *type << " = " << myPlotter->m_SFMJ[0] << ";" << endl; outfile.close(); } // myPlotter->MakePlots(*cut+*type+bins[i], *var, systName); } } else { if(m_dataType == "Data12") { float mjscale = -99999; /* if(*type == "ElTrig") { if(*cut == "") mjscale = 0.0125633; if(*cut == "3Jet") mjscale = 0.0194691; if(*cut == "4Jet") mjscale = 0.035655; if(*cut == "1BTag") mjscale = 0.204145; if(*cut == "0BTag") mjscale = 2.16895; if(*cut == "PreBTag") mjscale = 2.38595; } if(*type == "MuTrig") { if(*cut == "") mjscale = 0.0775573; if(*cut == "3Jet") mjscale = 0.0748922; if(*cut == "4Jet") mjscale = 0.120129; if(*cut == "1BTag") mjscale = 1.30725; if(*cut == "0BTag") mjscale = 8.41723; if(*cut == "PreBTag") mjscale = 9.81049; } */ float mjscaleData12MuTrig = 0.0779011; float mjscale3JetData12MuTrig = 0.078844; float mjscale4JetData12MuTrig = 0.126596; float mjscale1BTagData12MuTrig = 1.46039; float mjscale0BTagData12MuTrig = 10.515; float mjscalePreBTagData12MuTrig = 11.5653; float mjscaleData12ElTrig = 0.0126017; float mjscale3JetData12ElTrig = 0.0197103; float mjscale4JetData12ElTrig = 0.0362367; float mjscale1BTagData12ElTrig = 0.21317; float mjscale0BTagData12ElTrig = 2.35185; float mjscalePreBTagData12ElTrig = 2.53575; if(*type == "ElTrig") { if(*cut == "") mjscale = mjscaleData12ElTrig; if(*cut == "3Jet") mjscale = mjscale3JetData12ElTrig; if(*cut == "4Jet") mjscale = mjscale4JetData12ElTrig; if(*cut == "1BTag") mjscale = mjscale1BTagData12ElTrig; if(*cut == "0BTag") mjscale = mjscale0BTagData12ElTrig; if(*cut == "PreBTag") mjscale = mjscalePreBTagData12ElTrig; } if(*type == "MuTrig") { if(*cut == "") mjscale = mjscaleData12MuTrig; if(*cut == "3Jet") mjscale = mjscale3JetData12MuTrig; if(*cut == "4Jet") mjscale = mjscale4JetData12MuTrig; if(*cut == "1BTag") mjscale = mjscale1BTagData12MuTrig; if(*cut == "0BTag") mjscale = mjscale0BTagData12MuTrig; if(*cut == "PreBTag") mjscale = mjscalePreBTagData12MuTrig; } myPlotter->m_SFMJ[0] = mjscale; /*myPlotter->m_SFTop[0] = 1.224; myPlotter->m_SFVbb[0] = 0.954; myPlotter->m_SFVcc[0] = 1.14; myPlotter->m_SFVcl[0] = 1.14; myPlotter->m_SFVll[0] = 1.05;*/ myPlotter->m_SFTop[0] = Top_8TeV; myPlotter->m_SFVbb[0] = Wb_8TeV; myPlotter->m_SFVcc[0] = Wc_8TeV; myPlotter->m_SFVcl[0] = Wc_8TeV; myPlotter->m_SFVll[0] = Wl_8TeV; cout << "Selecting scaling for 2012 MJ: " << mjscale << endl; } else { float mjscale = -99999; float mjscaleData11ElTrig = 0.012549; float mjscale3JetData11ElTrig = 0.027653; float mjscale4JetData11ElTrig = 0.0416343; float mjscale1BTagData11ElTrig = 0.241257; float mjscale0BTagData11ElTrig = 2.66444; float mjscalePreBTagData11ElTrig = 2.93924; float mjscaleData11MuTrig = 0.0152573; float mjscale3JetData11MuTrig = 0.00206818; float mjscale4JetData11MuTrig = 0.00802873; float mjscale1BTagData11MuTrig = 0.232406; float mjscale0BTagData11MuTrig = 1.66926; float mjscalePreBTagData11MuTrig = 1.94202; /* float mjscaleData11ElTrig = 0.0146083; float mjscale3JetData11ElTrig = 0.0284247; float mjscale4JetData11ElTrig = 0.0424319; float mjscale1BTagData11ElTrig = 0.251391; float mjscale0BTagData11ElTrig = 2.66925; float mjscalePreBTagData11ElTrig = 2.95611; float mjscaleData11MuTrig = 0.0177291; float mjscale3JetData11MuTrig = 0.00303036; float mjscale4JetData11MuTrig = 0.011562; float mjscale1BTagData11MuTrig = 0.242158; float mjscale0BTagData11MuTrig = 1.6733; float mjscalePreBTagData11MuTrig = 1.95806; */ if(*type == "ElTrig") { if(*cut == "") mjscale = mjscaleData11ElTrig; if(*cut == "3Jet") mjscale = mjscale3JetData11ElTrig; if(*cut == "4Jet") mjscale = mjscale4JetData11ElTrig; if(*cut == "1BTag") mjscale = mjscale1BTagData11ElTrig; if(*cut == "0BTag") mjscale = mjscale0BTagData11ElTrig; if(*cut == "PreBTag") mjscale = mjscalePreBTagData11ElTrig; } if(*type == "MuTrig") { if(*cut == "") mjscale = mjscaleData11MuTrig; if(*cut == "3Jet") mjscale = mjscale3JetData11MuTrig; if(*cut == "4Jet") mjscale = mjscale4JetData11MuTrig; if(*cut == "1BTag") mjscale = mjscale1BTagData11MuTrig; if(*cut == "0BTag") mjscale = mjscale0BTagData11MuTrig; if(*cut == "PreBTag") mjscale = mjscalePreBTagData11MuTrig; } myPlotter->m_SFMJ[0] = mjscale; myPlotter->m_SFTop[0] = Top_7TeV; myPlotter->m_SFVbb[0] = Wb_7TeV; myPlotter->m_SFVcc[0] = Wc_7TeV; myPlotter->m_SFVcl[0] = Wc_7TeV; myPlotter->m_SFVll[0] = Wl_7TeV; cout << "Selecting scaling for 2011 MJ: " << mjscale << endl; } } cout << "Variable: " << *var << " scaling MJ by: " << myPlotter->m_SFMJ[0] << endl; myPlotter->MakePlots("Selected" +*type+*cut+bins[i], *var, systName); } // loop over vars } // loop over cuts } // loop over event types } //myPlotter->Finish(); delete myPlotter; } } if(m_makeLimitFile || m_makeFlavFile){ plotter *myPlotter = new plotter("plotter",m_savePlots, m_useAlpgen); myPlotter->outdir = outdir; if(m_makeLimitFile) { vector samples; // if(m_dataType == "Data12") { samples.push_back("signalZH110"); samples.push_back("signalZH115"); samples.push_back("signalZH120"); samples.push_back("signalZH125"); samples.push_back("signalZH130"); samples.push_back("signalZH135"); samples.push_back("signalZH140"); samples.push_back("signalWH110"); samples.push_back("signalWH115"); samples.push_back("signalWH120"); samples.push_back("signalWH125"); samples.push_back("signalWH130"); samples.push_back("signalWH135"); samples.push_back("signalWH140"); samples.push_back("ttbar"); samples.push_back("WW"); samples.push_back("WZ"); samples.push_back("ZZ"); samples.push_back("stop"); samples.push_back("Wb"); samples.push_back("Wcc"); samples.push_back("Wc"); samples.push_back("Wl"); samples.push_back("Zb"); samples.push_back("Zc"); samples.push_back("Zl"); samples.push_back("multijet"); samples.push_back("bkg"); samples.push_back("data"); // } // if(m_dataType == "Data11") { // samples.push_back("signalWH110"); samples.push_back("signalWH115"); samples.push_back("signalWH120"); samples.push_back("signalWH125"); samples.push_back("signalWH130"); samples.push_back("ttbar"); samples.push_back("WW"); samples.push_back("WZ"); samples.push_back("ZZ"); samples.push_back("stop"); samples.push_back("Wb"); samples.push_back("Wcc"); samples.push_back("Wc"); samples.push_back("Wl"); samples.push_back("Zb"); samples.push_back("Zc"); samples.push_back("Zl"); samples.push_back("multijet"); samples.push_back("bkg"); samples.push_back("data"); // } for (vector::iterator syst(systNames.begin()); syst!=systNames.end(); syst++) { TString systName = *syst; if(systName.Contains("BTagB")) { TString systNameTemp = "SysBTagB"; systNameTemp += systName(11); systNameTemp += "Effic"; systNameTemp += systName(12); systNameTemp += systName(13); systName = systNameTemp; } else if(systName.Contains("SysBTagC") || systName.Contains("SysBTagL") ) { systName.ReplaceAll("Eff","Effic"); } (*syst) = systName; for(vector::iterator cut(cuts.begin()); cut!=cuts.end(); cut++) { for(int i = 0; i < (int)bins.size(); ++i) { myPlotter->mergeFiles(*cut,bins[i],systName,samples); } } } for (vector::iterator syst(systNames.begin()); syst!=systNames.end(); syst++) { TString systName = *syst; for(vector::iterator cut(cuts.begin()); cut!=cuts.end(); cut++) { myPlotter->mergeVpTBins(*cut,bins,systName,samples); } } myPlotter->mergeControlRegions(cuts,systNames,samples); } vector samples; samples.push_back("ttbar"); samples.push_back("WW"); samples.push_back("WZ"); samples.push_back("ZZ"); samples.push_back("stop"); samples.push_back("Wb"); samples.push_back("Wcc"); samples.push_back("Wc"); samples.push_back("Wl"); samples.push_back("Zb"); samples.push_back("Zc"); samples.push_back("Zl"); samples.push_back("multijet"); samples.push_back("bkg"); samples.push_back("data"); if(m_makeFlavFile && m_flavourFit) { myPlotter->mergeFlavourHistograms(systNames, samples, vars, cuts); } } //delete myHMaker; return 1; }