diff --git a/BoostedAnalyzer/interface/Synchronizer.hpp b/BoostedAnalyzer/interface/Synchronizer.hpp index 044270a5..20391d03 100644 --- a/BoostedAnalyzer/interface/Synchronizer.hpp +++ b/BoostedAnalyzer/interface/Synchronizer.hpp @@ -17,6 +17,7 @@ #include "BoostedTTH/BoostedAnalyzer/interface/DiLeptonMassSelection.hpp" #include "BoostedTTH/BoostedAnalyzer/interface/DiLeptonMETSelection.hpp" #include "BoostedTTH/BoostedAnalyzer/interface/JetTagSelection.hpp" +#include "BoostedTTH/BoostedAnalyzer/interface/METSelection.hpp" #include "BoostedTTH/BoostedAnalyzer/interface/DiLeptonJetTagSelection.hpp" #include "BoostedTTH/BoostedAnalyzer/interface/BDT_v3.hpp" #include "MiniAOD/MiniAODHelper/interface/MiniAODHelper.h" diff --git a/BoostedAnalyzer/plugins/BoostedAnalyzer.cc b/BoostedAnalyzer/plugins/BoostedAnalyzer.cc index bb447e7c..3b9d1bf7 100644 --- a/BoostedAnalyzer/plugins/BoostedAnalyzer.cc +++ b/BoostedAnalyzer/plugins/BoostedAnalyzer.cc @@ -140,8 +140,8 @@ class BoostedAnalyzer : public edm::EDAnalyzer { virtual void beginLuminosityBlock(edm::LuminosityBlock const& iBlock, edm::EventSetup const& iSetup) override; float GetTopPtWeight(const float& toppt1, const float& toppt2); map GetWeights(const GenEventInfoProduct& genEventInfo, const LHEEventProduct& lheInfo, const EventInfo& eventInfo, const reco::VertexCollection& selectedPVs, const std::vector& selectedJets, const std::vector& selectedElectrons, const std::vector& selectedMuons, const GenTopEvent& genTopEvt, const Systematics::Type& systype=Systematics::NA); - std::string outfileName(const std::string& basename,const Systematics::Type& sysType); - std::string systName(const Systematics::Type& sysType); + static std::string outfileName(const std::string& basename,const Systematics::Type& sysType); + static std::string systName(const Systematics::Type& sysType); // ------------------------------------------------------------------- // --------------------------- member data --------------------------- @@ -181,7 +181,52 @@ class BoostedAnalyzer : public edm::EDAnalyzer { //resource monitor std::unique_ptr ResMon = nullptr; - // --------------- TOKENS --------------- + // --------------- FLAGS --------------- + /** is analyzed sample data? */ + bool isData; + /** use fat jets? this is only possible if the miniAOD contains them */ + bool useFatJets; + /** dump some event content for newer synchronization */ + bool dumpSyncExe; + bool dumpExtended; + /** Calculated MEM for "boosted" events? Takes several seconds per event */ + bool doBoostedMEM; + /** produce ntuples for mem calculation?*/ + bool ProduceMemNtuples; + /** use GenBmatching info? this is only possible if the miniAOD contains them */ + bool useGenHadronMatch; + /** use tagging for selections **/ + bool taggingSelection; + bool dogenweights; + + // --------------- MISCELLANEOUS --------------- + /** event weight: xs*lumi/(nPosEvents-nNegEvents) */ + double eventWeight; + std::vector dumpAlwaysEvents; + /** which generator was used on ME level for this sample? */ + std::string usedGenerator; + /** base name for outfiles (incl path)**/ + std::string outfileNameBase; + /** generator systematics weigths (pdf, ME scale, etc) */ + /** triggers that are checked (independtend of the ones used for selected)*/ + std::vector relevantTriggers; + /** processors run */ + std::vector processorNames; + /** selections applied */ + std::vector selectionNames; + /** writes flat trees */ + std::vector> treewriters; + /** stores cutflows*/ + std::vector cutflows; + /** selections that are applied before writing the tree*/ + std::vector> selections; + /** outfile base names*/ + std::vector outfileNames; + /** stops the time spent in every processor*/ + /** systematics */ + std::vector jetSystematics; + + // --------------- TOKENS --------------- /** pu summary data access token **/ edm::EDGetTokenT< std::vector > puInfoToken; /** pileup density data access token **/ @@ -226,56 +271,10 @@ class BoostedAnalyzer : public edm::EDAnalyzer { edm::EDGetTokenT< std::vector > genJetsToken; // LHERunInfo data access token edm::EDGetTokenT< LHERunInfoProduct > LHERunInfoToken; - - // --------------- FLAGS --------------- - /** is analyzed sample data? */ - bool isData; - /** use fat jets? this is only possible if the miniAOD contains them */ - bool useFatJets; - /** use GenBmatching info? this is only possible if the miniAOD contains them */ - bool useGenHadronMatch; - /** dump some event content for newer synchronization */ - bool dumpSyncExe; - bool dumpExtended; - /** generator systematics weigths (pdf, ME scale, etc) */ - bool dogenweights; - /** produce ntuples for mem calculation?*/ - bool ProduceMemNtuples; - /** Calculated MEM for "boosted" events? Takes several seconds per event */ - bool doBoostedMEM; - /** use tagging for selections **/ - bool taggingSelection; - // --------------- MISCELLANEOUS --------------- - /** writes flat trees */ - std::vector> treewriters; - /** stores cutflows*/ - std::vector cutflows; - /** selections that are applied before writing the tree*/ - std::vector> selections; - /** triggers that are checked (independtend of the ones used for selected)*/ - std::vector relevantTriggers; - /** base name for outfiles (incl path)**/ - std::string outfileNameBase; - /** outfile base names*/ - std::vector outfileNames; - /** stops the time spent in every processor*/ - std::vector dumpAlwaysEvents; - /** systematics */ - std::vector jetSystematics; - /** which generator was used on ME level for this sample? */ - std::string usedGenerator; - /** processors run */ - std::vector processorNames; - /** selections applied */ - std::vector selectionNames; + /** time counter */ TStopwatch watch; - // TODO: does not function properly - /** events to be analyzed */ - int maxEvents; - /** event weight: xs*lumi/(nPosEvents-nNegEvents) */ - double eventWeight; /** Event counter */ int eventcount; /** variable to holt the position of JetTagSelection in selections vector, for later use */ @@ -288,37 +287,62 @@ class BoostedAnalyzer : public edm::EDAnalyzer { // // constructors and destructor // -BoostedAnalyzer::BoostedAnalyzer(const edm::ParameterSet& iConfig): \ +BoostedAnalyzer::BoostedAnalyzer(const edm::ParameterSet& iConfig): // initialize gen top event with consumes collector (allows to access data from file within this class) synchronizer(Synchronizer(iConfig,consumesCollector())), genTopEvtProd(GenTopEventProducer(consumesCollector())), triggerInfoProd(TriggerInfoProducer(iConfig,consumesCollector())), - filterInfoProd(FilterInfoProducer(iConfig,consumesCollector())) + filterInfoProd(FilterInfoProducer(iConfig,consumesCollector())), + + // + // get all configurations from the python config + // meaning of the parameters is explained in python/BoostedAnalyzer_cfi.py + + isData ( iConfig.getParameter("isData") ), + useFatJets ( iConfig.getParameter("useFatJets") ), + dumpSyncExe ( iConfig.getParameter("dumpSyncExe") ), + dumpExtended ( iConfig.getParameter("dumpExtended") ), + doBoostedMEM ( iConfig.getParameter("doBoostedMEM") ), + ProduceMemNtuples ( iConfig.getParameter("memNtuples") ), + useGenHadronMatch ( iConfig.getParameter("useGenHadronMatch") ), + taggingSelection ( iConfig.getParameter("taggingSelection") ), + + eventWeight ( iConfig.getParameter("eventWeight") ), + dumpAlwaysEvents ( iConfig.getParameter >("dumpAlwaysEvents") ), + usedGenerator ( iConfig.getParameter("generatorName") ), + outfileNameBase ( iConfig.getParameter("outfileName") ), + relevantTriggers ( iConfig.getParameter< std::vector >("relevantTriggers") ), + processorNames ( iConfig.getParameter< std::vector >("processorNames") ), + selectionNames ( iConfig.getParameter< std::vector >("selectionNames") ), + + puInfoToken ( consumes< std::vector >(iConfig.getParameter("puInfo")) ), + rhoToken ( consumes (iConfig.getParameter("rho")) ), + hcalNoiseToken ( consumes< HcalNoiseSummary >(iConfig.getParameter("hcalNoise")) ), + beamSpotToken ( consumes< reco::BeamSpot > (iConfig.getParameter("beamSpot")) ), + conversionCollectionToken ( consumes< reco::ConversionCollection > (iConfig.getParameter("conversionCollection")) ), + primaryVerticesToken ( consumes< reco::VertexCollection > (iConfig.getParameter("primaryVertices")) ), + selectedMuonsToken ( consumes< std::vector >(iConfig.getParameter("selectedMuons")) ), + selectedMuonsDLToken ( consumes< std::vector >(iConfig.getParameter("selectedMuonsDL")) ), + selectedMuonsLooseToken ( consumes< std::vector >(iConfig.getParameter("selectedMuonsLoose")) ), + selectedElectronsToken ( consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectrons")) ), + selectedElectronsDLToken ( consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectronsDL")) ), + selectedElectronsLooseToken ( consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectronsLoose")) ), + + boostedJetsToken ( consumes< boosted::BoostedJetCollection >(iConfig.getParameter("boostedJets")) ), + genInfoToken ( consumes< GenEventInfoProduct >(iConfig.getParameter("genInfo")) ), + lheInfoToken ( consumes< LHEEventProduct >(iConfig.getParameter("lheInfo")) ), + genParticlesToken ( consumes< std::vector >(iConfig.getParameter("genParticles")) ), + genJetsToken ( consumes< std::vector >(iConfig.getParameter("genJets")) ), + LHERunInfoToken ( consumes(edm::InputTag("externalLHEProducer")) ) { //set up resource monitor ResMon.reset(new ResourceMonitor()); - // - // get all configurations from the python config - // meaning of the parameters is explained in python/BoostedAnalyzer_cfi.py - eventWeight = iConfig.getParameter("eventWeight"); - isData = iConfig.getParameter("isData"); - useFatJets = iConfig.getParameter("useFatJets"); - dumpSyncExe = iConfig.getParameter("dumpSyncExe"); - dumpExtended = iConfig.getParameter("dumpExtended"); - dumpAlwaysEvents = iConfig.getParameter >("dumpAlwaysEvents"); - usedGenerator = iConfig.getParameter("generatorName"); - doBoostedMEM = iConfig.getParameter("doBoostedMEM"); - outfileNameBase = iConfig.getParameter("outfileName"); - relevantTriggers = iConfig.getParameter< std::vector >("relevantTriggers"); - processorNames = iConfig.getParameter< std::vector >("processorNames"); - selectionNames = iConfig.getParameter< std::vector >("selectionNames"); - ProduceMemNtuples = iConfig.getParameter("memNtuples"); - useGenHadronMatch = iConfig.getParameter("useGenHadronMatch"); + if(isData) useGenHadronMatch=false; std::vector systematicsNames = iConfig.getParameter >("systematics"); - taggingSelection= iConfig.getParameter("taggingSelection"); + for (auto const &s : systematicsNames){ jetSystematics.push_back(Systematics::get(s)); } @@ -329,17 +353,7 @@ BoostedAnalyzer::BoostedAnalyzer(const edm::ParameterSet& iConfig): \ // REGISTER DATA ACCESS // This needs to be done in the constructor of this class or via the consumes collector in the constructor of helper classes - puInfoToken = consumes< std::vector >(iConfig.getParameter("puInfo") ); - rhoToken = consumes (iConfig.getParameter("rho") ); - hcalNoiseToken = consumes< HcalNoiseSummary >(iConfig.getParameter("hcalNoise")); - beamSpotToken = consumes< reco::BeamSpot > (iConfig.getParameter("beamSpot")); - primaryVerticesToken = consumes< reco::VertexCollection > (iConfig.getParameter("primaryVertices")); - selectedMuonsToken = consumes< std::vector >(iConfig.getParameter("selectedMuons")); - selectedMuonsDLToken = consumes< std::vector >(iConfig.getParameter("selectedMuonsDL")); - selectedMuonsLooseToken = consumes< std::vector >(iConfig.getParameter("selectedMuonsLoose")); - selectedElectronsToken = consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectrons")); - selectedElectronsDLToken = consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectronsDL")); - selectedElectronsLooseToken = consumes< pat::ElectronCollection >(iConfig.getParameter("selectedElectronsLoose")); + for(auto &tag : iConfig.getParameter >("selectedJets")){ selectedJetsTokens.push_back(consumes< std::vector >(tag)); } @@ -352,14 +366,8 @@ BoostedAnalyzer::BoostedAnalyzer(const edm::ParameterSet& iConfig): \ for(auto &tag : iConfig.getParameter >("correctedMETs")){ correctedMETsTokens.push_back(consumes< std::vector >(tag)); } - boostedJetsToken = consumes< boosted::BoostedJetCollection >(iConfig.getParameter("boostedJets")); - genInfoToken = consumes< GenEventInfoProduct >(iConfig.getParameter("genInfo")); - lheInfoToken = consumes< LHEEventProduct >(iConfig.getParameter("lheInfo")); - genParticlesToken = consumes< std::vector >(iConfig.getParameter("genParticles")); - genJetsToken = consumes< std::vector >(iConfig.getParameter("genJets")); - conversionCollectionToken = consumes< reco::ConversionCollection > (iConfig.getParameter("conversionCollection")); - LHERunInfoToken = consumes(edm::InputTag("externalLHEProducer")); + // initialize helper classes helper.SetUp("2015_74x", isData ? -1 : 1, analysisType::LJ, isData); @@ -432,13 +440,13 @@ BoostedAnalyzer::BoostedAnalyzer(const edm::ParameterSet& iConfig): \ pointerToMEMClassifier.reset(new MEMClassifier()); pointerToCommonBDT5Classifier.reset(new BDTClassifier(string(getenv("CMSSW_BASE"))+"/src/TTH/CommonClassifier/data/lj_BDT_DeepCSV_Summer18_v1/", 0.4941 )); - DNNClassifierBase::pyInitialize(); - pointerToDnnSLClassifier.reset(new DNNClassifier_SL("v6a")); + //DNNClassifierBase::pyInitialize(); + //pointerToDnnSLClassifier.reset(new DNNClassifier_SL("v6a")); // initialize synchronizer if(dumpSyncExe){ pointerToDLBDTClassifier.reset(new DLBDTClassifier(string(getenv("CMSSW_BASE"))+"/src/TTH/CommonClassifier/data/dlbdtweights_v5/")); - pointerToDnnDLClassifier.reset(new DNNClassifier_DL("v3a")); + //pointerToDnnDLClassifier.reset(new DNNClassifier_DL("v3a")); synchronizer.Init(outfileNameBase,systematicsNames,iConfig,&helper,&leptonSFhelper,pointerToCommonBDT5Classifier.get(),pointerToDLBDTClassifier.get(),pointerToDnnSLClassifier.get(),pointerToDnnDLClassifier.get(),pointerToMEMClassifier.get(),dumpExtended); } @@ -585,15 +593,7 @@ BoostedAnalyzer::~BoostedAnalyzer() { // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) - //delete pointerToMEMClassifier; - //delete pointerToCommonBDT5Classifier; - //delete pointerToDnnSLClassifier; - if(dumpSyncExe) { - //delete pointerToDLBDTClassifier; - //delete pointerToDnnDLClassifier; - } - DNNClassifierBase::pyFinalize(); - //delete ResMon; + //DNNClassifierBase::pyFinalize(); } diff --git a/BoostedAnalyzer/python/Selection_cff.py b/BoostedAnalyzer/python/Selection_cff.py index 072c7b27..f97f5bef 100644 --- a/BoostedAnalyzer/python/Selection_cff.py +++ b/BoostedAnalyzer/python/Selection_cff.py @@ -42,8 +42,8 @@ ) METSelection = cms.PSet( - minMET = cms.double(-1), - maxMET = cms.double(800), + minMET = cms.double(20.), + maxMET = cms.double(100000.), ) DiLeptonMETSelection = cms.PSet( @@ -99,7 +99,7 @@ filtersData= cms.PSet( filters=cms.vstring("Flag_goodVertices", - "Flag_globalTightHalo2016Filter", + "Flag_globalSuperTightHalo2016Filter", "Flag_HBHENoiseFilter", "Flag_HBHENoiseIsoFilter", "Flag_EcalDeadCellTriggerPrimitiveFilter", @@ -112,7 +112,7 @@ filtersMC= cms.PSet( filters=cms.vstring("Flag_goodVertices", - "Flag_globalTightHalo2016Filter", + "Flag_globalSuperTightHalo2016Filter", "Flag_HBHENoiseFilter", "Flag_HBHENoiseIsoFilter", "Flag_EcalDeadCellTriggerPrimitiveFilter", diff --git a/BoostedAnalyzer/scripts/NAFSubmit.py b/BoostedAnalyzer/scripts/NAFSubmit.py new file mode 100755 index 00000000..168c57cc --- /dev/null +++ b/BoostedAnalyzer/scripts/NAFSubmit.py @@ -0,0 +1,247 @@ +#!/usr/bin/env python + +import sys +import os +import glob +import numpy as np +import subprocess +import stat +import re +import time +import optparse + + +def submitToBatch(workdir, list_of_shells, memory_, disk_, runtime_, use_proxy, proxy_dir_, name_ ): + ''' submit the list of shell script to the NAF batch system ''' + + if name_!="": + name_ = name_+"_" + + # write array script for submission + arrayScript = writeArrayScript(workdir, list_of_shells, name_) + + # write submit script for submission + submitScript = writeSubmitScript(workdir, arrayScript, len(list_of_shells), memory_, disk_, runtime_, use_proxy, proxy_dir_, name_) + + # submit the whole thing + jobID = condorSubmit( submitScript ) + return [jobID] + +def writeArrayScript(workdir, files, name_): + path = workdir+"/"+name_+"arraySubmit.sh" + + code = """ +#!/bin/bash +subtasklist=( +%(tasks)s +) +thescript=${subtasklist[$SGE_TASK_ID]} +echo "${thescript}" +echo "$SGE_TASK_ID" +. $thescript + """ % ({"tasks":"\n".join(files)}) + + with open(path, "w") as f: + f.write(code) + + st = os.stat(path) + os.chmod(path, st.st_mode | stat.S_IEXEC) + + print("wrote array script "+str(path)) + return path + + +def writeSubmitScript(workdir, arrayScript, nScripts, memory_, disk_, runtime_, use_proxy, proxy_dir_, name_): + path = workdir+"/"+name_+"submitScript.sub" + logdir = workdir+"/logs" + if not os.path.exists(logdir): + os.makedirs(logdir) + + code = """ +universe = vanilla +executable = /bin/zsh +arguments = {arg} +error = {dir}/{name}submitScript.$(Cluster)_$(ProcId).err +log = {dir}/{name}submitScript.$(Cluster)_$(ProcId).log +output = {dir}/{name}submitScript.$(Cluster)_$(ProcId).out +run_as_owner = true +RequestMemory = {memory} +RequestDisk = {disk} ++RequestRuntime = {runtime} +""".format( + arg = arrayScript, + dir = logdir, + memory = memory_, + disk = disk_, + runtime = runtime_, + name = name_) + if use_proxy: + code+=""" +environment = X509_USER_PROXY={proxy_dir} +getenv = True +use_x509userproxy = True +x509userproxy = {proxy_dir}""".format(proxy_dir = proxy_dir_) + code+=""" +Queue Environment From (""" + for taskID in range(nScripts): + code += "\"SGE_TASK_ID="+str(taskID+1)+"\"\n" + code += ")" + + with open(path, "w") as f: + f.write(code) + + print("wrote submit script "+str(path)) + return path + +def condorSubmit(submitPath): + submitCommand = "condor_submit -terse -name bird-htc-sched12.desy.de " + submitPath + print("submitting:") + print(submitCommand) + tries = 0 + jobID = None + while not jobID: + process = subprocess.Popen(submitCommand.split(), stdout = subprocess.PIPE, stderr = subprocess.STDOUT, stdin = subprocess.PIPE) + process.wait() + output = process.communicate() + try: + jobID = int(output[0].split(".")[0]) + except: + print("something went wrong with calling the condir_submit command, submission of jobs was not successful") + print("DEBUG:") + print(output) + tries += 1 + jobID = None + time.sleep(60) + if tries>10: + print("job submission was not successful after ten tries - exiting without JOBID") + sys.exit(-1) + return jobID + + + + +def monitorJobStatus(jobIDs = None): + allfinished = False + errorcount = 0 + print("checking job status in condor_q ...") + + command = ["condor_q", "-name", "bird-htc-sched12.desy.de"] + if jobIDs: + command += jobIDs + command = [str(c) for c in command] + command.append("-totals") + + while not allfinished: + time.sleep(30) + + a = subprocess.Popen(command, stdout=subprocess.PIPE,stderr=subprocess.STDOUT,stdin=subprocess.PIPE) + a.wait() + qstat = a.communicate()[0] + + nrunning = -1 + queryline = [line for line in qstat.split("\n") if "Total for query" in line] + if len(queryline) == 1: + jobsRunning = int(re.findall(r'\ [0-9]+\ running', queryline[0])[0][1:-8]) + jobsIdle = int(re.findall(r'\ [0-9]+\ idle', queryline[0])[0][1:-5]) + jobsHeld = int(re.findall(r'\ [0-9]+\ held', queryline[0])[0][1:-5]) + + nrunning = jobsRunning + jobsIdle + jobsHeld + + print("{:4d} running | {:4d} idling | {:4d} held |\t total: {:4d}".format(jobsRunning, jobsIdle, jobsHeld, nrunning)) + + errorcount = 0 + if nrunning == 0: + print("waiting on no more jobs - exiting loop") + allfinished=True + else: + errorcount += 1 + # sometimes condor_q is not reachable - if this happens a lot something is probably wrong + + print("line does not match query") + if errorcount == 30: + print("something is off - condor_q has not worked for 15 minutes ...") + print("exiting condor_q (jobs are probably still in queue") + sys.exit() + + + print("all jobs are finished - exiting monitorJobStatus") + return + + + + +if __name__ == "__main__": + parser = optparse.OptionParser(usage="%prog [options] files") + parser.add_option("-f","--folder", dest = "folder", default = None, metavar = "FOLDER", + help = "Specify relative path to a folder from which all files are to be submitted.") + + parser.add_option("-p","--pattern", dest = "pattern", default = None, metavar = "'PATTERN'", + help = "Specify a pattern to match files in FOLDER, e.g. '_test'.") + + parser.add_option("-m","--monitorStatus", action = "store_true", dest = "monitorStatus", default = False, metavar = "MONITORSTATUS", + help = "Monitor the job status after submission with 'condor_q' until all jobs are done.") + + parser.add_option("-o","--outputdir", dest = "outputdir", default = os.path.dirname(os.path.realpath(__file__)), metavar = "OUTPUTDIR", + help = "Path to output directory for log files and submit scripts (relative or absolute).") + + parser.add_option("-M","--memory",type="string",default="2000",dest="memory",metavar = "MEMORY", + help = "Amount of memory in MB which is requested for the machines") + + parser.add_option("-d","--disk",type="string",default="2000",dest="disk",metavar = "DISK", + help = "Amount of disk space in MB which is requested for the machines") + + parser.add_option("-r","--runtime",type="string",default="180",dest="runtime",metavar = "RUNTIME", + help = "Amount of runtime in minutes which is requested for the machines") + + parser.add_option("-u","--useproxy",action="store_true",default=False,dest="useproxy",metavar = "USEPROXY", + help = "Use voms proxy") + + parser.add_option("-v","--vomsproxy",type="string",default="",dest="vomsproxy",metavar = "VOMSPROXY", + help = "Path to the VOMS proxy file") + + parser.add_option("-n","--name",type="string",default="",dest="name",metavar = "NAME", + help = "Name for this submit job") + + (opts, args) = parser.parse_args() + + if opts.useproxy and not opts.vomsproxy: + parser.error('If flag to use proxy is set, a path to the proxy file has to be provided') + + # get files to submit + if opts.folder: + filepath = opts.folder+"/*.sh" + submit_files = glob.glob(filepath) + else: + submit_files = [f for f in args if f.endswith(".sh")] + + + # check for naming pattern + if opts.pattern: + print(opts.pattern) + submit_files = [f for f in submit_files if opts.pattern in f] + + # print list of files to submit + print("-"*40) + print("number of files to submit: {}".format(len(submit_files))) + for f in submit_files: print(" {}".format(f)) + print("-"*40) + + + # setup workdir + workdir = opts.outputdir+"/" + if not os.path.exists(workdir): + os.makedirs(workdir) + print("output directory for logfiles, etc: {}".format(workdir)) + + + # submit to batch + jobIDs = submitToBatch(workdir, submit_files, opts.memory, str(int(opts.disk)*1000), str(int(opts.runtime)*60), opts.useproxy, opts.vomsproxy, opts.name) + print("submitted jobs with IDs: {}".format(jobIDs)) + + # monitor job status + if opts.monitorStatus: + monitorJobStatus(jobIDs) + + print("done.") + + diff --git a/BoostedAnalyzer/src/SlimmedNtuples.cpp b/BoostedAnalyzer/src/SlimmedNtuples.cpp index d51ebdac..ce917fbf 100644 --- a/BoostedAnalyzer/src/SlimmedNtuples.cpp +++ b/BoostedAnalyzer/src/SlimmedNtuples.cpp @@ -49,6 +49,7 @@ void SlimmedNtuples::Init(const std::vector& input,VariableCon vars.InitVars( "jet_corr_JER" , "njets" ); vars.InitVars( "jet_corr_JES" , "njets" ); vars.InitVars( "jet_csv" , "njets" ); + vars.InitVars( "jet_deepcsv" , "njets" ); vars.InitVars( "jet_cmva" , "njets" ); initialized=true; @@ -111,7 +112,8 @@ void SlimmedNtuples::Process(const std::vector& input,Variable vars.FillVars( "jet_pt" , iJet , jet.pt() ); vars.FillVars( "jet_eta" , iJet , jet.eta() ); vars.FillVars( "jet_phi" , iJet , jet.phi() ); - vars.FillVars( "jet_csv" , iJet , MiniAODHelper::GetJetCSV(jet,"DeepCSV") ); + vars.FillVars( "jet_csv" , iJet , MiniAODHelper::GetJetCSV(jet,"pfCombinedInclusiveSecondaryVertexV2BJetTags") ); + vars.FillVars( "jet_deepcsv" , iJet , MiniAODHelper::GetJetCSV(jet,"DeepCSV") ); // save the product of the nominal jec, meaning JESnominal*JERnominal vars.FillVars( "jet_corr" , iJet , jes_nom*jer_nom ); vars.FillVars( "jet_corr_JER" , iJet , jer_nom ); diff --git a/BoostedAnalyzer/src/Synchronizer.cpp b/BoostedAnalyzer/src/Synchronizer.cpp index eb678727..9c6def23 100755 --- a/BoostedAnalyzer/src/Synchronizer.cpp +++ b/BoostedAnalyzer/src/Synchronizer.cpp @@ -38,14 +38,14 @@ Synchronizer::~Synchronizer (){ void Synchronizer::DumpSyncExeHeader(std::ostream &out, bool addExtendedInfo){ - out << "run,lumi,event,is_e,is_mu,is_ee,is_emu,is_mumu,n_jets,n_btags,lep1_pt,lep1_eta,lep1_iso,lep1_pdgId,lep1_idSF,lep1_isoSF,lep1_seed,lep2_pt,lep2_eta,lep2_iso,lep2_pdgId,lep2_idSF,lep2_isoSF,lep2_seed,jet1_pt,jet1_eta,jet1_phi,jet1_jesSF,jet1_jesSF_up,jet1_jesSF_down,jet1_jesSF_PileUpDataMC_down,jet1_jesSF_RelativeFSR_up,jet1_jerSF_nominal,jet1_csv,jet1_PUJetId,jet1_PUJetDiscriminant,jet1_seed,jet2_pt,jet2_eta,jet2_phi,jet2_jesSF,jet2_jesSF_up,jet2_jesSF_down,jet2_jesSF_PileUpDataMC_down,jet2_jesSF_RelativeFSR_up,jet2_jerSF_nominal,jet2_csv,jet2_PUJetId,jet2_PUJetDiscriminant,jet2_seed,MET_pt,MET_phi,mll,ttHFCategory,ttHFGenFilterTag,n_interactions,puWeight,csvSF,csvSF_lf_up,csvSF_hf_down,csvSF_cErr1_down,pdf_up,pdf_down,me_up,me_down,triggerSF,top_pt_weight,bdt_output,dnn_ttH_output,dnn_ttbb_output"; + out << "run,lumi,event,is_e,is_mu,is_ee,is_emu,is_mumu,n_jets,n_btags,lep1_pt,lep1_eta,lep1_iso,lep1_pdgId,lep1_idSF,lep1_isoSF,lep1_seed,lep2_pt,lep2_eta,lep2_iso,lep2_pdgId,lep2_idSF,lep2_isoSF,lep2_seed,jet1_pt,jet1_eta,jet1_phi,jet1_jesSF,jet1_jesSF_up,jet1_jesSF_down,jet1_jesSF_PileUpDataMC_down,jet1_jesSF_RelativeFSR_up,jet1_jerSF_nominal,jet1_csv,jet1_PUJetId,jet1_PUJetDiscriminant,jet1_seed,jet2_pt,jet2_eta,jet2_phi,jet2_jesSF,jet2_jesSF_up,jet2_jesSF_down,jet2_jesSF_PileUpDataMC_down,jet2_jesSF_RelativeFSR_up,jet2_jerSF_nominal,jet2_csv,jet2_PUJetId,jet2_PUJetDiscriminant,jet2_seed,MET_pt,MET_phi,mll,ttHFCategory,ttHFGenFilterTag,n_interactions,puWeight,csvSF,csvSF_lf_up,csvSF_hf_down,csvSF_cErr1_down,pdf_up,pdf_down,me_up,me_down,isr_up,isr_down,fsr_up,fsr_down,triggerSF,top_pt_weight,bdt_output,dnn_ttH_output,dnn_ttbb_output"; if(addExtendedInfo){ out << ",jet3_pt,jet3_eta,jet3_csv,jet4_pt,jet4_eta,jet4_csv,jet5_pt,jet5_eta,jet5_csv,jet6_pt,jet6_eta,jet6_csv,jet7_pt,jet7_eta,jet7_csv"; out << ",trig_el,trig_mu,trig_elel,trig_elmu,trig_mumu"; out << ",n_leps_tight,n_leps_dl,n_leps_loose,rho"; out << ",raw_el1_pt,raw_el1_eta,raw_el1_iso,raw_el1_pdgId,raw_el2_pt,raw_el2_eta,raw_el2_iso,raw_el2_pdgId"; out << ",raw_mu1_pt,raw_mu1_eta,raw_mu1_iso,raw_mu1_pdgId,raw_mu2_pt,raw_mu2_eta,raw_mu2_iso,raw_mu2_pdgId"; - out << ",pass_FilterSelection,pass_VertexSelection,pass_LeptonSelection,pass_DiLeptonSelection"; + out << ",pass_FilterSelection,pass_VertexSelection,pass_LeptonSelection,pass_DiLeptonSelection,pass_METSelection"; } out << endl; @@ -148,6 +148,11 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, float me_up=-1; float me_down=-1; + float isr_up=-1; + float isr_down=-1; + float fsr_up=-1; + float fsr_down=-1; + float triggerSF=-1; float top_pt_weight=-1; float bdt_output=-1; @@ -198,6 +203,7 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, int pass_VertexSelection=-1; int pass_LeptonSelection=-1; int pass_DiLeptonSelection=-1; + int pass_METSelection=-1; // hack to use loose isolation scale factors for muons in case of dilepton channel if(int(input.selectedElectronsLoose.size()+input.selectedMuonsLoose.size())>1) { @@ -285,6 +291,7 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, if(i==0) pass_FilterSelection=0; if(i==1) pass_VertexSelection=0; if(i==2) pass_LeptonSelection=0; + if(i==3) pass_METSelection=0; break; } @@ -292,6 +299,7 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, if(i==0) pass_FilterSelection=1; if(i==1) pass_VertexSelection=1; if(i==2) pass_LeptonSelection=1; + if(i==3) pass_METSelection=1; } } if(is_SL){ @@ -512,6 +520,10 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, if(input.weights.count("Weight_TopPt")>0) top_pt_weight=input.weights.at("Weight_TopPt"); if(input.weights.count("Weight_LHA_306000_up")>0) pdf_up=input.weights.at("Weight_LHA_306000_up"); if(input.weights.count("Weight_LHA_306000_down")>0) pdf_down=input.weights.at("Weight_LHA_306000_down"); + if(input.weights.count("GenWeight_6")>0) isr_up=input.weights.at("GenWeight_6"); + if(input.weights.count("GenWeight_7")>0) fsr_up=input.weights.at("GenWeight_7"); + if(input.weights.count("GenWeight_8")>0) isr_down=input.weights.at("GenWeight_8"); + if(input.weights.count("GenWeight_9")>0) fsr_down=input.weights.at("GenWeight_9"); if(is_SL) { std::vector lepvecs=BoostedUtils::GetTLorentzVectors(BoostedUtils::GetLepVecs(input.selectedElectrons,input.selectedMuons)); @@ -542,9 +554,9 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, add_features.push_back(eth_blr_trans); add_features.push_back(0.); bdt_output=bdtclassifier->GetBDTOutput(lepvecs, jetvecs, jetcsvs,metP4); - DNNOutput dnn_output = sldnnclassifier->evaluate(jetvecs,jetcsvs_dnn,lepvecs[0],metP4,add_features); - dnn_ttbb_output = dnn_output.ttbb(); - dnn_ttH_output = dnn_output.ttH(); + //DNNOutput dnn_output = sldnnclassifier->evaluate(jetvecs,jetcsvs_dnn,lepvecs[0],metP4,add_features); + //dnn_ttbb_output = dnn_output.ttbb(); + //dnn_ttH_output = dnn_output.ttH(); } else if(is_DL) { @@ -584,9 +596,9 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, add_features.push_back(eth_blr_trans); add_features.push_back(0.); bdt_output=dlbdtclassifier->GetBDTOutput(lepvecs,lepcharges,jetvecs,jetcsvs,metP4); - DNNOutput dnn_output = dldnnclassifier->evaluate(jetvecs,jetcsvs_dnn,lepvecs,metP4,add_features); - dnn_ttbb_output = dnn_output.ttbb(); - dnn_ttH_output = dnn_output.ttH(); + //DNNOutput dnn_output = dldnnclassifier->evaluate(jetvecs,jetcsvs_dnn,lepvecs,metP4,add_features); + //dnn_ttbb_output = dnn_output.ttbb(); + //dnn_ttH_output = dnn_output.ttH(); } @@ -616,7 +628,7 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, %.4f,\ %.4f,%.4f,%.4f,%.4f,\ %.4f,%.4f,\ -%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f")% +%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f")% run% lumi% event% is_e% is_mu% is_ee% is_emu% is_mumu% n_jets% n_btags% @@ -629,14 +641,14 @@ void Synchronizer::DumpSyncExe(const InputCollections& input, puWeight% csvSF% csvSF_lf_up% csvSF_hf_down% csvSF_cErr1_down% pdf_up% pdf_down% - me_up% me_down% triggerSF% top_pt_weight% bdt_output% dnn_ttH_output% dnn_ttbb_output; + me_up% me_down% isr_up% isr_down% fsr_up% fsr_down% triggerSF% top_pt_weight% bdt_output% dnn_ttH_output% dnn_ttbb_output; if(addExtendedInfo){ out << boost::format(",%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f,%.4f")%jet3_pt%jet3_eta%jet3_csv%jet4_pt%jet4_eta%jet4_csv%jet5_pt%jet5_eta%jet5_csv%jet6_pt%jet6_eta%jet6_csv%jet7_pt%jet7_eta%jet7_csv; out << boost::format(",%i,%i,%i,%i,%i")%trig_el%trig_mu%trig_elel%trig_elmu%trig_mumu; out << boost::format(",%i,%i,%i,%.4f")%n_leps_tight%n_leps_dl%n_leps_loose%rho; out << boost::format(",%.4f,%.4f,%.4f,%i,%.4f,%.4f,%.4f,%i")%raw_el1_pt%raw_el1_eta%raw_el1_iso%raw_el1_pdgId%raw_el2_pt%raw_el2_eta%raw_el2_iso%raw_el2_pdgId; out << boost::format(",%.4f,%.4f,%.4f,%i,%.4f,%.4f,%.4f,%i")%raw_mu1_pt%raw_mu1_eta%raw_mu1_iso%raw_mu1_pdgId%raw_mu2_pt%raw_mu2_eta%raw_mu2_iso%raw_mu2_pdgId; - out << boost::format(",%i,%i,%i,%i")%pass_FilterSelection%pass_VertexSelection%pass_LeptonSelection%pass_DiLeptonSelection; + out << boost::format(",%i,%i,%i,%i,%i")%pass_FilterSelection%pass_VertexSelection%pass_LeptonSelection%pass_DiLeptonSelection%pass_METSelection; } out<<"\n"; } @@ -692,6 +704,7 @@ void Synchronizer::Init(std::string filename, const std::vector& je selectionsSL.push_back(new FilterSelection(iConfig)); selectionsSL.push_back(new VertexSelection()); selectionsSL.push_back(new LeptonSelection(iConfig)); + selectionsSL.push_back(new METSelection(20.,99999.)); selectionsSL.push_back(new JetTagSelection(4,2)); for (auto &c : cutflowsSL){ for (auto &s : selectionsSL){ diff --git a/BoostedAnalyzer/src/essentialBasicVarProcessor.cpp b/BoostedAnalyzer/src/essentialBasicVarProcessor.cpp index f88e3539..f81e0234 100644 --- a/BoostedAnalyzer/src/essentialBasicVarProcessor.cpp +++ b/BoostedAnalyzer/src/essentialBasicVarProcessor.cpp @@ -25,6 +25,7 @@ void essentialBasicVarProcessor::Init(const InputCollections& input,VariableCont vars.InitVar( "N_BTagsT","I" ); vars.InitVar( "N_BTagsL" ,"I"); vars.InitVar( "N_PrimaryVertices","I" ); + vars.InitVar( "N_GenPVs", "I"); vars.InitVars( "Jet_E","N_Jets" ); vars.InitVars( "Jet_M","N_Jets" ); @@ -152,6 +153,7 @@ void essentialBasicVarProcessor::Process(const InputCollections& input,VariableC } // Fill Multiplicity Variables + vars.FillVar( "N_GenPVs",input.eventInfo.numTruePV); vars.FillVar( "N_PrimaryVertices",input.selectedPVs.size()); vars.FillVar( "N_Jets",input.selectedJets.size()); vars.FillVar( "N_LooseJets",input.selectedJetsLoose.size()); diff --git a/BoostedAnalyzer/src/essentialMCMatchVarProcessor.cpp b/BoostedAnalyzer/src/essentialMCMatchVarProcessor.cpp index b4070b6b..6be56b0d 100644 --- a/BoostedAnalyzer/src/essentialMCMatchVarProcessor.cpp +++ b/BoostedAnalyzer/src/essentialMCMatchVarProcessor.cpp @@ -16,6 +16,7 @@ void essentialMCMatchVarProcessor::Init(const InputCollections& input,VariableCo vars.InitVar( "N_MisTagsM",-1,"I" ); vars.InitVar( "N_GenTopHad", -1, "I" ); + vars.InitVars( "GenTopHad_Pt",-9.,"N_GenTopHad" ); vars.InitVars( "GenTopHad_Eta",-9.,"N_GenTopHad" ); vars.InitVars( "GenTopHad_Phi",-9.,"N_GenTopHad" ); @@ -33,6 +34,7 @@ void essentialMCMatchVarProcessor::Init(const InputCollections& input,VariableCo // vars.InitVars( "GenTopHad_Q2_Phi",-9.,"N_GenTopHad" ); vars.InitVar( "N_GenTopLep",-1,"I" ); + vars.InitVars( "GenTopLep_Pt",-9.,"N_GenTopLep" ); vars.InitVars( "GenTopLep_Eta",-9.,"N_GenTopLep" ); vars.InitVars( "GenTopLep_Phi",-9.,"N_GenTopLep" ); @@ -49,17 +51,20 @@ void essentialMCMatchVarProcessor::Init(const InputCollections& input,VariableCo // vars.InitVars( "GenTopLep_Lep_Phi",-9.,"N_GenTopLep" ); // vars.InitVars( "GenTopLep_Nu_Phi",-9.,"N_GenTopLep" ); + + vars.InitVar( "GenHiggs_Pt",-9. ); vars.InitVar( "GenHiggs_Eta",-9. ); vars.InitVar( "GenHiggs_Phi",-9. ); -// vars.InitVar( "GenHiggs_B1_Pt",-9. ); -// vars.InitVar( "GenHiggs_B2_Pt",-9. ); -// vars.InitVar( "GenHiggs_B1_Eta",-9. ); -// vars.InitVar( "GenHiggs_B2_Eta",-9. ); -// vars.InitVar( "GenHiggs_B1_Phi",-9. ); -// vars.InitVar( "GenHiggs_B2_Phi",-9. ); -// vars.InitVar( "GenHiggs_B1_E",-9. ); -// vars.InitVar( "GenHiggs_B2_E",-9. ); + + vars.InitVar( "GenHiggs_B1_Pt",-9. ); + vars.InitVar( "GenHiggs_B2_Pt",-9. ); + vars.InitVar( "GenHiggs_B1_Eta",-9. ); + vars.InitVar( "GenHiggs_B2_Eta",-9. ); + vars.InitVar( "GenHiggs_B1_Phi",-9. ); + vars.InitVar( "GenHiggs_B2_Phi",-9. ); + vars.InitVar( "GenHiggs_B1_E",-9. ); + vars.InitVar( "GenHiggs_B2_E",-9. ); // // vars.InitVars( "GenTopHad_B_Idx",-1,"N_GenTopHad" ); // vars.InitVars( "GenTopHad_Q1_Idx",-1,"N_GenTopHad" ); @@ -75,12 +80,13 @@ void essentialMCMatchVarProcessor::Init(const InputCollections& input,VariableCo vars.InitVar( "GenHiggs_DecProd2_Eta",-9. ); vars.InitVar( "GenHiggs_DecProd2_PDGID",-999 ); -// vars.InitVar( "GenHiggs_B1_GenJet_Pt",-9. ); -// vars.InitVar( "GenHiggs_B2_GenJet_Pt",-9. ); -// vars.InitVar( "GenHiggs_B1_GenJet_Eta",-9. ); -// vars.InitVar( "GenHiggs_B2_GenJet_Eta",-9. ); -// vars.InitVar( "GenHiggs_B1_GenJet_Phi",-9. ); -// vars.InitVar( "GenHiggs_B2_GenJet_Phi",-9. ); + + vars.InitVar( "GenHiggs_B1_GenJet_Pt",-9. ); + vars.InitVar( "GenHiggs_B2_GenJet_Pt",-9. ); + vars.InitVar( "GenHiggs_B1_GenJet_Eta",-9. ); + vars.InitVar( "GenHiggs_B2_GenJet_Eta",-9. ); + vars.InitVar( "GenHiggs_B1_GenJet_Phi",-9. ); + vars.InitVar( "GenHiggs_B2_GenJet_Phi",-9. ); // // vars.InitVars( "GenTopLep_B_GenJet_Pt",-9., "N_GenTopLep" ); // vars.InitVars( "GenTopHad_B_GenJet_Pt",-9., "N_GenTopHad"); @@ -103,6 +109,28 @@ void essentialMCMatchVarProcessor::Init(const InputCollections& input,VariableCo // vars.InitVars( "GenTopHad_B_Hadron_Eta",-9., "N_GenTopHad"); // vars.InitVars( "GenTopLep_B_Hadron_Phi",-9., "N_GenTopLep" ); // vars.InitVars( "GenTopHad_B_Hadron_Phi",-9., "N_GenTopHad"); +// + // match variables for AachenDNN pre-net on genParticle level + vars.InitVar( "GenTopHad_B_inacceptance_part", 0, "I" ); // (has_bhad) + vars.InitVar( "GenTopHad_Q_inacceptance_part", 0, "I" ); // (has_lj) + vars.InitVar( "GenTopHad_QQ_inacceptance_part", 0, "I" ); // (has_Whad) + vars.InitVar( "GenTopLep_B_inacceptance_part",0,"I" ); // (has_blep) + vars.InitVar( "GenHiggs_B_inacceptance_part", 0, "I" ); // (has_bH) + vars.InitVar( "GenHiggs_BB_inacceptance_part", 0, "I" ); // (has_H) + vars.InitVar( "GenAdd_B_inacceptance_part", 0, "I" ); // (has_b) + vars.InitVar( "GenAdd_BB_inacceptance_part", 0, "I" ); // (has_bb) + + // match variables for AachenDNN pre-net on genJet level + vars.InitVar( "GenTopHad_B_inacceptance_jet", 0, "I" ); // (has_bhad) + vars.InitVar( "GenTopHad_Q_inacceptance_jet", 0, "I" ); // (has_lj) + vars.InitVar( "GenTopHad_QQ_inacceptance_jet", 0, "I" ); // (has_Whad) + vars.InitVar( "GenTopLep_B_inacceptance_jet",0,"I" ); // (has_blep) + vars.InitVar( "GenHiggs_B_inacceptance_jet", 0, "I" ); // (has_bH) + vars.InitVar( "GenHiggs_BB_inacceptance_jet", 0, "I" ); // (has_H) + vars.InitVar( "GenAdd_B_inacceptance_jet", 0, "I" ); // (has_b) + vars.InitVar( "GenAdd_BB_inacceptance_jet", 0, "I" ); // (has_bb) + + initialized = true; } @@ -147,7 +175,7 @@ void essentialMCMatchVarProcessor::Process(const InputCollections& input,Variabl std::vector lep; std::vector nu; reco::GenParticle higgs; - std::vector higgs_bs; + std::vector bhiggs_quarkss; if(input.genTopEvt.IsFilled()){ tophad=input.genTopEvt.GetAllTopHads(); whad=input.genTopEvt.GetAllWhads(); @@ -160,7 +188,7 @@ void essentialMCMatchVarProcessor::Process(const InputCollections& input,Variabl lep=input.genTopEvt.GetAllLeptons(); nu=input.genTopEvt.GetAllNeutrinos(); higgs=input.genTopEvt.GetHiggs(); - higgs_bs=input.genTopEvt.GetHiggsDecayProducts(); + bhiggs_quarkss=input.genTopEvt.GetHiggsDecayProducts(); } reco::GenParticle b1; @@ -168,9 +196,9 @@ void essentialMCMatchVarProcessor::Process(const InputCollections& input,Variabl reco::GenParticle decProd1; reco::GenParticle decProd2; -//if(higgs_bs.size()>2)std::cout<<"MORE THAN TWO HIGGS PRODUCTS"<2)std::cout<<"MORE THAN TWO HIGGS PRODUCTS"<pdgId()==5) b1=*p; if(p->pdgId()==-5) b2=*p; if(dfirst){ @@ -190,7 +218,12 @@ bool dfirst=true; vars.FillVar("GenHiggs_DecProd1_PDGID",decProd1.pdgId()); vars.FillVar("GenHiggs_DecProd2_PDGID",decProd2.pdgId()); } + //std::cout<0.){ -// vars.FillVar("GenHiggs_B1_Pt",b1.pt()); -// vars.FillVar("GenHiggs_B2_Pt",b2.pt()); -// vars.FillVar("GenHiggs_B1_Eta",b1.eta()); -// vars.FillVar("GenHiggs_B2_Eta",b2.eta()); -// vars.FillVar("GenHiggs_B1_Phi",b1.phi()); -// vars.FillVar("GenHiggs_B2_Phi",b2.phi()); -// vars.FillVar("GenHiggs_B1_E",b1.energy()); -// vars.FillVar("GenHiggs_B2_E",b2.energy()); + + vars.FillVar("GenHiggs_B1_Pt",b1.pt()); + vars.FillVar("GenHiggs_B2_Pt",b2.pt()); + vars.FillVar("GenHiggs_B1_Eta",b1.eta()); + vars.FillVar("GenHiggs_B2_Eta",b2.eta()); + vars.FillVar("GenHiggs_B1_Phi",b1.phi()); + vars.FillVar("GenHiggs_B2_Phi",b2.phi()); + vars.FillVar("GenHiggs_B1_E",b1.energy()); + vars.FillVar("GenHiggs_B2_E",b2.energy()); // // int idxb1=-1; // int idxb2=-1; @@ -320,23 +354,52 @@ bool dfirst=true; // } // } if(input.genTopEvt.IsFilled()&&input.genTopEvt.TTxIsFilled()&&input.genTopEvt.IsSemiLepton()){ + + + // get gen particles + // b quark from had top + std::vector bhad_quark=input.genTopEvt.GetAllTopHadDecayQuarks(); + if(bhad_quark.size() > 1){ std::cout<<"MORE THAN ONE B FROM HADTOP"< blep_quark=input.genTopEvt.GetAllTopLepDecayQuarks(); + if(blep_quark.size() > 1){ std::cout<<"MORE THAN ONE B FROM LEPTOP"< bhiggs_quarks = input.genTopEvt.GetHiggsDecayProducts(); + if(!(bhiggs_quarks.size() == 2) && !(bhiggs_quarks.size() == 0)) + {std::cout<<"NOT ZERO OR TWO B QUARKS FROM HIGGS"< hadw_quarks=input.genTopEvt.GetWQuarks(); + if(!(hadw_quarks.size() == 2)){ std::cout<<"UNEQUAL TWO QUARKS FROM HADRONIC W"< bhad_genjet=input.genTopEvt.GetAllTopHadBGenJets(); + if(bhad_genjet.size() > 1){ std::cout<<"MORE THAN ONE bJET FROM HADTOP"< blep_genjet=input.genTopEvt.GetAllTopLepBGenJets(); - reco::GenJet b1_genjet=input.genTopEvt.GetHiggsBBarGenJet(); - reco::GenJet b2_genjet=input.genTopEvt.GetHiggsBGenJet(); - - std::vector bhad_hadron=input.genTopEvt.GetAllTopHadBHadrons(); - std::vector blep_hadron=input.genTopEvt.GetAllTopLepBHadrons(); - reco::GenParticle b1_hadron=input.genTopEvt.GetHiggsBBarHadron(); - reco::GenParticle b2_hadron=input.genTopEvt.GetHiggsBHadron(); - -// vars.FillVar( "GenHiggs_B1_GenJet_Pt",b1_genjet.pt() ); -// vars.FillVar( "GenHiggs_B2_GenJet_Pt",b2_genjet.pt() ); -// vars.FillVar( "GenHiggs_B1_GenJet_Eta",b1_genjet.eta() ); -// vars.FillVar( "GenHiggs_B2_GenJet_Eta",b2_genjet.eta()); -// vars.FillVar( "GenHiggs_B1_GenJet_Phi",b1_genjet.phi()); -// vars.FillVar( "GenHiggs_B2_GenJet_Phi",b2_genjet.phi() ); -// + if(blep_genjet.size() > 1){ std::cout<<"MORE THAN ONE bJET FROM HADTOP"< hadw_genjets=input.genTopEvt.GetWGenJets(); + if(!(hadw_genjets.size() == 2)){ std::cout<<"UNEQUAL TWO JETS FROM HADRONIC W"<1){ -// vars.FillVars( "GenTopHad_B_Hadron_Pt",i,bhad_hadron[i].pt() ); -// vars.FillVars( "GenTopHad_B_Hadron_Eta",i,bhad_hadron[i].eta() ); -// vars.FillVars( "GenTopHad_B_Hadron_Phi",i,bhad_hadron[i].phi()); +// if(bhad_quark[i].pt()>1){ +// vars.FillVars( "GenTopHad_B_Hadron_Pt",i,bhad_quark[i].pt() ); +// vars.FillVars( "GenTopHad_B_Hadron_Eta",i,bhad_quark[i].eta() ); +// vars.FillVars( "GenTopHad_B_Hadron_Phi",i,bhad_quark[i].phi()); // } // } @@ -363,11 +426,191 @@ bool dfirst=true; // vars.FillVars( "GenTopLep_B_GenJet_Pt",i,blep_genjet[i].pt() ); // vars.FillVars( "GenTopLep_B_GenJet_Eta",i,blep_genjet[i].eta()); // } -// if(blep_hadron[i].pt()>1){ -// vars.FillVars( "GenTopLep_B_Hadron_Pt",i,blep_hadron[i].pt() ); -// vars.FillVars( "GenTopLep_B_Hadron_Eta",i,blep_hadron[i].eta()); -// vars.FillVars( "GenTopLep_B_Hadron_Phi",i,blep_hadron[i].phi()); +// if(blep_quark[i].pt()>1){ +// vars.FillVars( "GenTopLep_B_Hadron_Pt",i,blep_quark[i].pt() ); +// vars.FillVars( "GenTopLep_B_Hadron_Eta",i,blep_quark[i].eta()); +// vars.FillVars( "GenTopLep_B_Hadron_Phi",i,blep_quark[i].phi()); // } // } + + // -------------------------------------------------------------------------------------------- + // matching on genParticle level (analogue to AachenDNN) + double dR_threshold = 0.05; + bool first_higgs_to_b = true; + bool first_W_to_q = true; + bool first_add_jet = true; + bool jet_was_matched = false; + + //bool found_both_w_q = false; + //bool found_both_higgs_b = false; + // --------------------------------------------------------------------------------------------------- + // loop over reco jets, get GenParticle, perform dR Matching with GenParticle Objects from genTopEvent + for(auto j=input.selectedJets.begin(); j!=input.selectedJets.end(); j++) { + jet_was_matched = false; + + const reco::GenParticle *genp = j->genParticle(); + // check if genparticle exists + if(!genp){ continue; } + + // search for b quark from hadronic top + for(uint i=0; ip4(), bhad_quark[i].p4())) < dR_threshold ){ + // has_bhad + vars.FillVar("GenTopHad_B_inacceptance_part",1); + jet_was_matched = true; + } + } + + // search for b quark from leptonic top + for(uint i=0; ip4(), blep_quark[i].p4())) < dR_threshold ){ + // has_blep + vars.FillVar("GenTopLep_B_inacceptance_part",1); + jet_was_matched = true; + } + } + + // search for quark from hadronic W + for(uint i=0; ip4(), hadw_quarks[i].p4())) < dR_threshold ){ + if( first_W_to_q ){ + // has_lj + vars.FillVar("GenTopHad_Q_inacceptance_part",1); + first_W_to_q = false; + jet_was_matched = true; + } + else{ + // has_Whad + vars.FillVar("GenTopHad_QQ_inacceptance_part",1); + jet_was_matched = true; + //found_both_w_q = true; + } + } + } + + // search for b quark from higgs + for(uint i=0; ip4(), bhiggs_quarks[i].p4())) < dR_threshold ){ + if( first_higgs_to_b ){ + // has_bH + vars.FillVar("GenHiggs_B_inacceptance_part",1); + first_higgs_to_b = false; + jet_was_matched = true; + } + else { + // has_H + vars.FillVar("GenHiggs_BB_inacceptance_part",1); + jet_was_matched = true; + //found_both_higgs_b = true; + } + } + } + + if(!(jet_was_matched) && std::abs(genp->pdgId())==5 && iBB > 0) { + // variable can only be set true if eventtype == ttbb/tt2b/ttb + // additional unmatched b quarks + if( first_add_jet ) { + // has_b + vars.FillVar("GenAdd_B_inacceptance_part",1); + first_add_jet = false; + } + else { + if( iBB > 2 ){ + // variable can only be set true if eventtype == ttbb + // has_bb + vars.FillVar("GenAdd_BB_inacceptance_part",1); + } + } + } + } // end of selectedJets loop + + reco::GenParticle whad_particle = input.genTopEvt.GetWhad(); + //math::XYZTLorentzVector w_vec = hadw_quarks[0].p4() + hadw_quarks[1].p4(); + //float inv_w_mass = w_vec.M(); + + bool first_higgs_jet = true; + bool first_Wjet = true; + first_add_jet = true; + jet_was_matched = false; + // --------------------------------------------------------------------------------------------------- + // loop over reco jets, get GenJet, perform dR Matching with GenJet Objects from genTopEvent + for(auto j=input.selectedJets.begin(); j!=input.selectedJets.end(); j++) { + jet_was_matched = false; + + const reco::GenJet *genj = j->genJet(); + // check if genjet exists + if(!genj){ continue; } + + // search for b jet from hadronic top + for(uint i=0; ip4(), bhad_genjet[i].p4())) < dR_threshold ){ + // has_bhad + vars.FillVar("GenTopHad_B_inacceptance_jet",1); + jet_was_matched = true; + } + } + + // search for b jet from leptonic top + for(uint i=0; ip4(), blep_genjet[i].p4())) < dR_threshold ){ + // has_blep + vars.FillVar("GenTopLep_B_inacceptance_jet",1); + jet_was_matched = true; + } + } + + // search for quark jets from hadronic W + for(uint i=0; ip4(), hadw_genjets[i].p4())) < dR_threshold ){ + if( first_Wjet ){ + // has_lj + vars.FillVar("GenTopHad_Q_inacceptance_jet",1); + first_Wjet = false; + jet_was_matched = true; + } + else{ + // has_Whad + vars.FillVar("GenTopHad_QQ_inacceptance_jet",1); + jet_was_matched = true; + } + } + } + + // search for b jets from higgs + if( std::abs(BoostedUtils::DeltaR(genj->p4(), bhiggs_genjet1.p4())) < dR_threshold || std::abs(BoostedUtils::DeltaR(genj->p4(), bhiggs_genjet2.p4())) < dR_threshold ){ + if( first_higgs_jet ){ + // has_bH + vars.FillVar("GenHiggs_B_inacceptance_jet",1); + first_higgs_jet = false; + jet_was_matched = true; + } + else { + // has_H + vars.FillVar("GenHiggs_BB_inacceptance_jet",1); + jet_was_matched = true; + } + } + + const char *workingPoint = "M"; + if(!(jet_was_matched) && BoostedUtils::PassesCSV(*genj,*workingPoint) && iBB > 0) { + // additional unmatched b-jets + if( first_add_jet ) { + // has_b + vars.FillVar("GenAdd_B_inacceptance_jet",1); + first_add_jet = false; + } + else { + if(iBB>2){ + // has_bb + vars.FillVar("GenAdd_BB_inacceptance_jet",1); + } + } + } + } // end of selectedJets loop + // --------------------------------------------------------------------------------------------------- + + + + } // end of isSemiLep + } -} diff --git a/BoostedAnalyzer/test/boostedAnalysis_ntuples-ICHEP18_cg.py b/BoostedAnalyzer/test/boostedAnalysis_ntuples-ICHEP18_cg.py index dfcf8e0c..9529599e 100644 --- a/BoostedAnalyzer/test/boostedAnalysis_ntuples-ICHEP18_cg.py +++ b/BoostedAnalyzer/test/boostedAnalysis_ntuples-ICHEP18_cg.py @@ -18,7 +18,7 @@ options.register( "isData", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "is it data or MC?" ) options.register( "isBoostedMiniAOD", False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "has the file been prepared with the BoostedProducer ('custom' MiniAOD)?" ) options.register( "generatorName", "POWHEG", VarParsing.multiplicity.singleton, VarParsing.varType.string, "'POWHEG','aMC', 'MadGraph' or 'pythia8'" ) -options.register( "globalTag", "94X_mc2017_realistic_v13", VarParsing.multiplicity.singleton, VarParsing.varType.string, "global tag" ) +options.register( "globalTag", "94X_mc2017_realistic_v14", VarParsing.multiplicity.singleton, VarParsing.varType.string, "global tag" ) options.register( "useJson",False, VarParsing.multiplicity.singleton, VarParsing.varType.bool, "apply the json filter (on the grid there are better ways to do this)" ) options.register( "additionalSelection","NONE", VarParsing.multiplicity.singleton, VarParsing.varType.string, "addition Selection to use for this sample" ) datasets=['NA','mu','el','elel','elmu','mumu'] @@ -42,7 +42,7 @@ options.maxEvents = 10000 # reset for testing if options.isData: - options.globalTag="94X_dataRun2_ReReco_EOY17_v6" + options.globalTag="94X_dataRun2_v6" if not options.inputFiles: if not options.isData: @@ -158,8 +158,11 @@ if options.recorrectMET: from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD - runMetCorAndUncFromMiniAOD(process, isData=options.isData) - + runMetCorAndUncFromMiniAOD(process, + isData=options.isData, + fixEE2017 = True, + fixEE2017Params = {'userawPt': True, 'ptThreshold':50.0, 'minEtaThreshold':2.65, 'maxEtaThreshold': 3.139} + ) #METCollection = cms.InputTag("slimmedMETs", "", process.name_()) ### Electron scale and smearing corrections ### @@ -245,6 +248,8 @@ process.SelectedJetProducerAK4.jets=cms.InputTag('patSmearedJetsAK4',"",process.name_()) process.SelectedJetProducerAK4.applyCorrection=False process.SelectedJetProducerAK4.ptMins=[20,30] +if options.ProduceMemNtuples==True: + process.SelectedJetProducerAK4.ptMins=[10,30] process.SelectedJetProducerAK4.etaMaxs=[2.4,2.4] process.SelectedJetProducerAK4.collectionNames=["selectedJetsLooseAK4","selectedJetsAK4"] process.SelectedJetProducerAK4.systematics=[""] @@ -399,7 +404,8 @@ "FilterSelection", "VertexSelection", "LeptonSelection", -"JetTagSelection" +"JetTagSelection", +"METSelection" ] if options.additionalSelection!="NONE": process.BoostedAnalyzer.selectionNames+=cms.vstring(options.additionalSelection) @@ -417,7 +423,8 @@ else: process.BoostedAnalyzer.processorNames=cms.vstring( "WeightProcessor", - "MCMatchVarProcessor", +# "MCMatchVarProcessor", + "essentialMCMatchVarProcessor", "essentialBasicVarProcessor", "essentialMVAVarProcessor", "BDTVarProcessor", diff --git a/BoostedAnalyzer/test/syncparallel_new.sh b/BoostedAnalyzer/test/syncparallel_new.sh index f6c34bf1..e6aed8fb 100755 --- a/BoostedAnalyzer/test/syncparallel_new.sh +++ b/BoostedAnalyzer/test/syncparallel_new.sh @@ -3,9 +3,9 @@ OUTFOLDER=/nfs/dust/cms/user/mwassmer/ttH_2018/sync/syncfiles SCRIPTFOLDER=/nfs/dust/cms/user/mwassmer/ttH_2018/sync/syncscripts SETUP="#!/bin/bash \nexport VO_CMS_SW_DIR=/cvmfs/cms.cern.ch; source \$VO_CMS_SW_DIR/cmsset_default.sh; cd /nfs/dust/cms/user/mwassmer/ttH_2018/dev/CMSSW_9_4_9/src; eval \`scram runtime -sh\`;" -printf "$SETUP cmsRun $CFG dumpSyncExe=True maxEvents=99999999 inputFiles='root://xrootd-cms.infn.it///store/mc/RunIIFall17MiniAODv2/ttHTobb_M125_TuneCP5_13TeV-powheg-pythia8/MINIAODSIM/PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/60000/AC628CE7-0169-E811-9C5E-00010100096B.root' isData=False outName=${OUTFOLDER}/syncTTH globalTag=94X_mc2017_realistic_v13 systematicVariations=nominal" > ${SCRIPTFOLDER}/syncTTH.sh +printf "$SETUP cmsRun $CFG dumpSyncExe=True maxEvents=99999999 inputFiles='root://xrootd-cms.infn.it///store/mc/RunIIFall17MiniAODv2/ttHTobb_M125_TuneCP5_13TeV-powheg-pythia8/MINIAODSIM/PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/60000/AC628CE7-0169-E811-9C5E-00010100096B.root' isData=False outName=${OUTFOLDER}/syncTTH globalTag=94X_mc2017_realistic_v14 systematicVariations=nominal" > ${SCRIPTFOLDER}/syncTTH.sh -# printf "$SETUP cmsRun $CFG dumpSyncExe=True maxEvents=99999999 inputFiles='file:/pnfs/desy.de/cms/tier2/store/mc/RunIISummer16MiniAODv2/TT_TuneCUETP8M2T4_13TeV-powheg-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6-v1/50000/0693E0E7-97BE-E611-B32F-0CC47A78A3D8.root' isData=False outName=${OUTFOLDER}/syncTTbar globalTag=94X_mc2017_realistic_v13 systematicVariations=nominal" > ${SCRIPTFOLDER}/syncTTbar.sh +printf "$SETUP cmsRun $CFG dumpSyncExe=True maxEvents=99999999 inputFiles='root://xrootd-cms.infn.it///store/mc/RunIIFall17MiniAODv2/TTToSemiLeptonic_TuneCP5_PSweights_13TeV-powheg-pythia8/MINIAODSIM/PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/00000/64301B32-E742-E811-823F-0025905A60D0.root' isData=False outName=${OUTFOLDER}/syncTTbar globalTag=94X_mc2017_realistic_v14 systematicVariations=nominal" > ${SCRIPTFOLDER}/syncTTbar.sh # # ####### # diff --git a/README.md b/README.md index 62e31059..fc64264b 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,9 @@ CMSSW tools for analyzing TTH events with boosted objects ## Installation Follow These Steps: +If it is your first time setting up a CMSSW release CMSSW will create a hidden .cmsgit-cache directory in your home directory that can grow quite large. Therefore it is a good idea to specify the path of this directory to be on the dust (or other high volume storage) +Do for example: +export CMSSW_GIT_REFERENCE=/nfs/dust/cms/user/$USER/.cmsgit-cache # setup environment export SCRAM_ARCH="slc6_amd64_gcc630" @@ -24,12 +27,12 @@ Follow These Steps: git cms-merge-topic cms-egamma:EgammaPostRecoTools_940 #just adds in an extra file to have a setup function to make things easier #git cms-merge-topic cms-egamma:Egamma80XMiniAODV2_946 #adds the c++ changes necessary to enable 2016 scale & smearing corrections (is loaded per default) - + git cms-merge-topic cms-met:METFixEE2017_949_v2 # EE noise mitigation for 2017 data # install common classifier mkdir TTH cd TTH - git clone https://gitlab.cern.ch/ttH/CommonClassifier.git + git clone https://gitlab.cern.ch/ttH/CommonClassifier.git -b master source CommonClassifier/setup/install_mem.sh # use recent version of LHAPDF header sed -i '6i#include "LHAPDF/LHAPDF.h"' MEIntegratorStandalone/interface/Integrand.h diff --git a/crab/Summer18/createCrabs.py b/crab/Summer18/createCrabs.py index 1908d929..116505a6 100644 --- a/crab/Summer18/createCrabs.py +++ b/crab/Summer18/createCrabs.py @@ -53,17 +53,16 @@ def split_for_systematic_variations(variations,nvariations): for row in reader: variation_list = get_list_of_systematics("systematicVariations.txt") #print variation_list - variations_list = split_for_systematic_variations(variation_list,4) - if 'Single' in row['name']: - src='template_data_cfg.py' - else: - src='template_cfg.py' + variations_list = split_for_systematic_variations(variation_list,100) + src='template_slimmed_ntuples_cfg.py' + if row['isData']=='True': + variations_list = ['nominal'] datasets=row['dataset'].split(",") for variations,l in zip(variations_list,range(len(variations_list))): print "looking at systematic sources ",variations for dataset,i in zip(datasets,range(len(datasets))): print "looking at dataset ",dataset - out='configs/'+row['name']+'_'+str(i)+"_"+str(l)+'_crab.py' + out='configs_slimmed_ntuples/'+row['name']+'_'+str(i)+"_"+str(l)+'_crab.py' filenames = [] for filename in variations.split(","): if filename=="nominal": @@ -75,8 +74,9 @@ def split_for_systematic_variations(variations,nvariations): repl('THEREQUESTNAME',row['name']+"_"+str(i)+"_"+str(l),out) repl('THEINPUTDATASET',dataset,out) repl('DATAERA',row['run'],out) - #repl('GLOBALTAG',row['globalTag'],out) + repl('GLOBALTAG',row['globalTag'],out) + repl('ISDATA',row['isData'],out) #repl('GENERATORNAME',row['generator'],out) #repl('WEIGHT',row['weight'],out) - #repl('SYSTEMATICVARIATIONS',variations,out) + repl('SYSTEMATICVARIATIONS',variations,out) #repl('OUTPUTFILES',str(filenames).replace("'",'"'),out) diff --git a/crab/Summer18/template_slimmed_ntuples_cfg.py b/crab/Summer18/template_slimmed_ntuples_cfg.py new file mode 100644 index 00000000..1c578e33 --- /dev/null +++ b/crab/Summer18/template_slimmed_ntuples_cfg.py @@ -0,0 +1,27 @@ +from CRABClient.UserUtilities import config, getUsernameFromSiteDB +config = config() + +config.General.requestName = 'THEREQUESTNAME' +config.General.workArea = 'crab_slims' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '/nfs/dust/cms/user/mwassmer/ttH_2018/dev/CMSSW_9_4_9/src/BoostedTTH/BoostedAnalyzer/test/boostedAnalysis_ntuples-ICHEP18_cg.py' +config.JobType.outputFiles = ['Mem_slimmed_ntuples_Tree.root'] +config.JobType.maxJobRuntimeMin = 1440 +config.JobType.maxMemoryMB = 2000 +config.JobType.pyCfgParams = ['isData=ISDATA','maxEvents=99999999','globalTag=GLOBALTAG','outName=Mem','systematicVariations=SYSTEMATICVARIATIONS','dataEra=DATAERA','ProduceMemNtuples=True'] +config.JobType.sendPythonFolder=True + +config.Data.inputDataset = 'THEINPUTDATASET' +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 75000 +config.Data.publication = False +config.Data.publishDBS = 'phys03' +config.Data.outputDatasetTag = 'KIT_tthbb_sl_slims_94X_v1' + +config.User.voGroup = 'dcms' + +config.Site.storageSite = 'T2_DE_DESY' +#config.Site.blacklist = ['T2_US_*'] +#config.Site.whitelist = ['T2_DE_DESY'] diff --git a/crab/Summer18/ttH_2018_samples_221018.csv b/crab/Summer18/ttH_2018_samples_221018.csv new file mode 100644 index 00000000..d61fcee1 --- /dev/null +++ b/crab/Summer18/ttH_2018_samples_221018.csv @@ -0,0 +1,114 @@ +name,dataset,nGen,Npos-Nneg/Ntotal,XS,weight,boosted_dataset,globalTag,isData,generator,additionalSelection,run + +ttHTobb_M125_TuneCP5_13TeV-powheg-pythia8_new_pmx,/ttHTobb_M125_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,8000000,0.5271956726,0.2953,7.00166976289E-05,/ttHTobb_M125_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +ttHToNonbb_M125_TuneCP5_13TeV-powheg-pythia8_new_pmx,/ttHToNonbb_M125_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,7966779,0.5634446667,0.2118,4.71836912581E-05,/ttHToNonbb_M125_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +TTToSemiLeptonic_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTToSemiLeptonic_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,111325048,301.643248224,365.46,1.08831183004E-05,/TTToSemiLeptonic_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToSemiLeptonic_TuneCP5down_PSweights_13TeV-powheg-pythia8,/TTToSemiLeptonic_TuneCP5down_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,27104055,301.149416946,365.46,4.47737585868E-05,/TTToSemiLeptonic_TuneCP5down_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToSemiLeptonic_TuneCP5up_Psweights_13TeV-powheg-pythia8_new_pmx,/TTToSemiLeptonic_TuneCP5up_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,20122010,300.721893662,365.46,6.03953415849E-05,/TTToSemiLeptonic_TuneCP5up_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToSemiLeptonic_TuneCP5_13TeV-powheg-pythia8_new_pmx,/TTToSemiLeptonic_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,43732445,301.062559276,365.46,2.77574356775E-05,/TTToSemiLeptonic_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +TTTo2L2Nu_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTTo2L2Nu_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,66979742,72.2289745882,88.34,1.82600715618E-05,/TTTo2L2Nu_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTTo2L2Nu_TuneCP5up_Psweights_13TeV-powheg-pythia8_new_pmx,/TTTo2L2Nu_TuneCP5up_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,5500000,72.1414232398,88.34,0.0002226435,/TTTo2L2Nu_TuneCP5up_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTTo2L2Nu_TuneCP5_13TeV-powheg-pythia8_new_pmx,/TTTo2L2Nu_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,9000000,72.0886016498,88.34,0.0001361596,/TTTo2L2Nu_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTTo2L2Nu_TuneCP5down_Psweights_13TeV-powheg-pythia8_new_pmx,/TTTo2L2Nu_TuneCP5down_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,5500000,71.9070480013,88.34,0.0002233692,/TTTo2L2Nu_TuneCP5down_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +TTToHadronic_TuneCP5_13TeV-powheg-pythia8_new_pmx,/TTToHadronic_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,41729120,1,377.96,0.0090574639,/TTToHadronic_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToHadronic_TuneCP5up_Psweights_13TeV-powheg-pythia8_new_pmx,/TTToHadronic_TuneCP5up_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,27108792,314.2446724,377.96,4.4367785382E-05,/TTToHadronic_TuneCP5up_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToHadronic_TuneCP5_Psweights_13TeV-powheg-pythia8_new_pmx,/TTToHadronic_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,130262440,314.441511778,377.96,9.22755740914E-06,/TTToHadronic_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToHadronic_TuneCP5down_Psweights_13TeV-powheg-pythia8_new_pmx,/TTToHadronic_TuneCP5down_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,27252808,313.89805513,377.96,4.4182059774E-05,/TTToHadronic_TuneCP5down_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +ST_s-channel_4f_leptonDecays_TuneCP5_Psweights_13TeV-amcatnlo-pythia8_new_pmx,/ST_s-channel_4f_leptonDecays_TuneCP5_PSweights_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,9914948,3.732330198,3.7,9.99841651238E-05,/ST_s-channel_4f_leptonDecays_TuneCP5_PSweights_13TeV-amcatnlo-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, +ST_s-channel_4f_leptonDecays_TuneCP5_13TeV-amcatnlo-pythia8_v2,/ST_s-channel_4f_leptonDecays_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,9883805,3.7608617189,3.7,9.95382933441E-05,/ST_s-channel_4f_leptonDecays_TuneCP5_13TeV-amcatnlo-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8_new_pmx,/ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,5982064,1,136.02,0.0227379714,/ST_t-channel_top_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8_v2,/ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,3675910,1,80.95,0.0220217579,/ST_t-channel_antitop_4f_inclusiveDecays_TuneCP5_13TeV-powhegV2-madspin-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +ST_tW_top_5f_inclusiveDecays_TuneCP5down_PSweights_13TeV-powheg-pythia8,/ST_tW_top_5f_inclusiveDecays_TuneCP5down_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,4849000,34.8900571429,35.85,0.0002119021,,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_top_5f_inclusiveDecays_TuneCP5up_PSweights_13TeV-powheg-pythia8,/ST_tW_top_5f_inclusiveDecays_TuneCP5up_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,4957000,34.9576105006,35.85,0.0002068848,,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_top_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8_v2,/ST_tW_top_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,7794186,34.9125410923,35.85,0.0001317458,/ST_tW_top_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_top_5f_inclusiveDecays_TuneCP5_Psweights_13TeV-powheg-pythia8_new_pmx,/ST_tW_top_5f_inclusiveDecays_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,7945242,34.9160825662,35.85,0.000129228,,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +ST_tW_antitop_5f_inclusiveDecays_TuneCP5up_PSweights_13TeV-powheg-pythia8,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5up_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,4776000,34.9854296029,35.85,0.0002145545,,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_antitop_5f_inclusiveDecays_TuneCP5down_PSweights_13TeV-powheg-pythia8,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5down_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,4839000,34.9598915701,35.85,0.0002119159,,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_antitop_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8_v2,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,7977430,35.0036476572,35.85,0.0001283846,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +ST_tW_antitop_5f_inclusiveDecays_TuneCP5_Psweights_13TeV-powheg-pythia8_v2,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,7745276,35.0028007977,35.85,0.0001322359,/ST_tW_antitop_5f_inclusiveDecays_TuneCP5_Psweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +WJetsToLNu_HT-100To200_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-100To200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,35862893,0.9985812944,1345,0.0375572286,/WJetsToLNu_HT-100To200_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-200To400_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-200To400_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,21250517,0.9972263324,359.7,0.0169737265,/WJetsToLNu_HT-200To400_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-400To600_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-400To600_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,14313274,0.9953923128,48.91,0.0034329256,/WJetsToLNu_HT-400To600_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-600To800_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-600To800_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,21709087,0.9939854633,12.05,0.0005584258,/WJetsToLNu_HT-600To800_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-800To1200_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-800To1200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,20432728,0.9924609405,5.501,0.0002712701,/WJetsToLNu_HT-800To1200_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-1200To2500_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-1200To2500_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,20258624,0.9871372241,1.329,6.64565065583E-05,/WJetsToLNu_HT-1200To2500_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +WJetsToLNu_HT-2500ToInf_TuneCP5_13TeV-madgraphMLM-pythia8,/WJetsToLNu_HT-2500ToInf_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v3/MINIAODSIM,21495421,0.9589833504,0.03216,1.56012363966E-06,/WJetsToLNu_HT-2500ToInf_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-4to50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8,"/DYJetsToLL_M-4to50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v1/MINIAODSIM,/DYJetsToLL_M-4to50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM",9884020,0.9982395546,224.2,0.0227230811,/DYJetsToLL_M-4to50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-4to50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8,/DYJetsToLL_M-4to50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v1/MINIAODSIM,1021757,0.9969323031,37.2,0.0365199059,/DYJetsToLL_M-4to50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-4to50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8,/DYJetsToLL_M-4to50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v1/MINIAODSIM,994584,0.9952875726,3.581,0.0036175477,/DYJetsToLL_M-4to50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-4to50_HT-600toInf_TuneCP5_13TeV-madgraphMLM-pythia8,/DYJetsToLL_M-4to50_HT-600toInf_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,1988861,0.9930205196,1.124,0.0005691197,/DYJetsToLL_M-4to50_HT-600toInf_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8_new_pmx,/DYJetsToLL_M-50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,11197488,0.9983808648,147.4,0.013185015,/DYJetsToLL_M-50_HT-100to200_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8,"/DYJetsToLL_M-50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,/DYJetsToLL_M-50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14_ext1-v1/MINIAODSIM",11499275,0.9971714692,40.99,0.0035746837,/DYJetsToLL_M-50_HT-200to400_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8_new_pmx,/DYJetsToLL_M-50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,10219524,0.9954029605,5.678,0.0005581691,/DYJetsToLL_M-50_HT-400to600_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-600to800_TuneCP5_13TeV-madgraphMLM-pythia8_new_pmx,/DYJetsToLL_M-50_HT-600to800_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,8743640,0.9941017735,1.367,0.0001572698,/DYJetsToLL_M-50_HT-600to800_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-800to1200_TuneCP5_13TeV-madgraphMLM-pythia8_new_pmx,/DYJetsToLL_M-50_HT-800to1200_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,3114980,0.9917636843,0.6304,0.0002040576,/DYJetsToLL_M-50_HT-800to1200_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-1200to2500_TuneCP5_13TeV-madgraphMLM-pythia8,/DYJetsToLL_M-50_HT-1200to2500_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,625517,0.9866668499,0.1514,0.0002453105,/DYJetsToLL_M-50_HT-1200to2500_TuneCP5_13TeV-madgraphMLM-pythia8/mschrode-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +DYJetsToLL_M-50_HT-2500toInf_TuneCP5_13TeV-madgraphMLM-pythia8_new_pmx,/DYJetsToLL_M-50_HT-2500toInf_TuneCP5_13TeV-madgraphMLM-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,419308,0.9566041664,0.003565,8.88779681712E-06,/DYJetsToLL_M-50_HT-2500toInf_TuneCP5_13TeV-madgraphMLM-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +TTWJetsToQQ_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8_v2,/TTWJetsToQQ_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,811306,0.6869341883,0.4062,0.0007288533,/TTWJetsToQQ_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +TTWJetsToLNu_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8,/TTWJetsToLNu_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,4925829,0.3440714859,0.2043,0.0001205425,/TTWJetsToLNu_TuneCP5_13TeV-amcatnloFXFX-madspin-pythia8/pkeicher-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, +TTWJetsToLNu_TuneCP5_Psweights_13TeV-amcatnloFXFX-madspin-pythia8_new_pmx,/TTWJetsToLNu_TuneCP5_PSweights_13TeV-amcatnloFXFX-madspin-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v1/MINIAODSIM,4908905,0.3469244411,0.2043,0.0001199634,/TTWJetsToLNu_TuneCP5_PSweights_13TeV-amcatnloFXFX-madspin-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +TTZToQQ_TuneCP5_13TeV-amcatnlo-pythia8_v2,/TTZToQQ_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v2/MINIAODSIM,750000,0.5102308061,0.5297,0.0013842102,/TTZToQQ_TuneCP5_13TeV-amcatnlo-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_v2_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +TTZToLLNuNu_M-10_TuneCP5_13TeV-amcatnlo-pythia8,/TTZToLLNuNu_M-10_TuneCP5_13TeV-amcatnlo-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,7563490,0.2420790601,0.2529,0.0001381241,/TTZToLLNuNu_M-10_TuneCP5_13TeV-amcatnlo-pythia8/pkeicher-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +WW_TuneCP5_13TeV-pythia8,/WW_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,7791498,1.0000064486,113.9,0.014618404,/WW_TuneCP5_13TeV-pythia8/pkeicher-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,pythia8,NONE, + +WZ_TuneCP5_13TeV-pythia8,/WZ_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,3928630,1,47.13,0.0119965484,/WZ_TuneCP5_13TeV-pythia8/pkeicher-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,pythia8,NONE, + +ZZ_TuneCP5_13TeV-pythia8,/ZZ_TuneCP5_13TeV-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,1949768,1,16.523,0.0084743416,/ZZ_TuneCP5_13TeV-pythia8/pkeicher-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,pythia8,NONE, + +ttbb_4FS_ckm_NNPDF31_TuneCP5_amcatnlo_madspin_pythia_new_pmx,/ttbb_4FS_ckm_NNPDF31_TuneCP5_amcatnlo_madspin_pythia/RunIIFall17MiniAODv2-PU2017_12Apr2018_new_pmx_94X_mc2017_realistic_v14-v2/MINIAODSIM,5965355,14.8278404763,1,1.13053965715E-05,/ttbb_4FS_ckm_NNPDF31_TuneCP5_amcatnlo_madspin_pythia/mwassmer-KIT_tthbb_sl_skims_MC_new_pmx_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,aMC,NONE, + +THW_5f_Hincl_13TeV_madgraph_pythia8,/THW_5f_Hincl_13TeV_madgraph_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,1439996,1,0.002879,1.9993111092E-06,/THW_5f_Hincl_13TeV_madgraph_pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +THQ_4f_Hincl_13TeV_madgraph_pythia8,/THQ_4f_Hincl_13TeV_madgraph_pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,3381548,0.9937914122,0.07425,2.20945755049E-05,/THQ_4f_Hincl_13TeV_madgraph_pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,MadGraph,NONE, + +TTToSemiLeptonic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTToSemiLeptonic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,26367765,300.235318985,365.46,4.61641400774E-05,/TTToSemiLeptonic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToSemiLeptonic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTToSemiLeptonic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,27191508,301.141866031,365.46,4.46308768236E-05,/TTToSemiLeptonic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTTo2L2Nu_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTTo2L2Nu_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,5413576,72.1305546906,88.34,0.0002262319,/TTTo2L2Nu_hdampUP_TuneCP5_Psweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTTo2L2Nu_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTTo2L2Nu_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,5336672,72.0109159846,88.34,0.0002298733,/TTTo2L2Nu_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToHadronic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTToHadronic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,26444636,314.484655632,377.96,4.5447373204E-05,/TTToHadronic_hdampDOWN_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, +TTToHadronic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8,/TTToHadronic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8/RunIIFall17MiniAODv2-PU2017_12Apr2018_94X_mc2017_realistic_v14-v1/MINIAODSIM,25821240,314.739396885,377.96,4.65069263334E-05,/TTToHadronic_hdampUP_TuneCP5_PSweights_13TeV-powheg-pythia8/mwassmer-KIT_tthbb_sl_skims_MC_94X-89d803256191092beb2b5f9476740fe1/USER,94X_mc2017_realistic_v14,False,POWHEG,NONE, + +SingleElectron_Run2017B,/SingleElectron/Run2017B-31Mar2018-v1/MINIAOD,60537490,1,1,1,/SingleElectron/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017B-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017B +SingleElectron_Run2017C,/SingleElectron/Run2017C-31Mar2018-v1/MINIAOD,136637888,1,1,1,/SingleElectron/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017C-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017C +SingleElectron_Run2017D,/SingleElectron/Run2017D-31Mar2018-v1/MINIAOD,51526710,1,1,1,/SingleElectron/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017D-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017D +SingleElectron_Run2017E,/SingleElectron/Run2017E-31Mar2018-v1/MINIAOD,102121689,1,1,1,/SingleElectron/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017E-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017E +SingleElectron_Run2017F,/SingleElectron/Run2017F-31Mar2018-v1/MINIAOD,128467223,1,1,1,/SingleElectron/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017F-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017F + +SingleMuon_Run2017B,/SingleMuon/Run2017B-31Mar2018-v1/MINIAOD,136300266,1,1,1,/SingleMuon/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017B-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017B +SingleMuon_Run2017C,/SingleMuon/Run2017C-31Mar2018-v1/MINIAOD,165652756,1,1,1,/SingleMuon/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017C-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017C +SingleMuon_Run2017D,/SingleMuon/Run2017D-31Mar2018-v1/MINIAOD,70361660,1,1,1,/SingleMuon/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017D-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017D +SingleMuon_Run2017E,/SingleMuon/Run2017E-31Mar2018-v1/MINIAOD,154630534,1,1,1,/SingleMuon/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017E-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017E +SingleMuon_Run2017F,/SingleMuon/Run2017F-31Mar2018-v1/MINIAOD,242135500,1,1,1,/SingleMuon/pkeicher-KIT_tthbb_sl_skims_DATA_94X_Run2017F-6262f2140f991ff178efe92b0cdfff9c/USER,94X_dataRun2_ReReco_EOY17_v6,True,notSpecified,NONE,2017F +