def createJMECorrector(isMC=True, dataYear=2016, runPeriod="B", jesUncert="Total", redojec=False, jetType="AK4PFchs", noGroom=False): jecTag_ = jecTagsMC[dataYear] if isMC else jecTagsDATA[dataYear + runPeriod] jmeUncert_ = [x for x in jesUncert.split(",")] jerTag_ = jerTagsMC[dataYear] jmrValues_ = jmrValues[dataYear] jmsValues_ = jmsValues[dataYear] print 'JEC=', jecTag_, '\t JER=', jerTag_ jmeCorrections = None #jme corrections if isMC: jmeCorrections = lambda: jetmetUncertaintiesProducer( era=dataYear, globalTag=jecTag_, jesUncertainties=jmeUncert_, redoJEC=redojec, jerTag=jerTag_, jetType=jetType, noGroom=noGroom, jmrVals=jmrValues_, jmsVals=jmsValues_) else: jmeCorrections = lambda: jetRecalib(globalTag=jecTag_, archive=archiveTag[dataYear], jetType=jetType, redojec=redojec) return jmeCorrections
jecarc = "Spring18_ppRef5TeV_V4_MC" #mod.append() else: mod.append(puWeight_2017()) #elif year == 18 and era != '': # jecfile = 'Autumn18_Run%s_V8_DATA'%era # jecarc = 'Autumn18_V8_DATA' elif year == 5: jecfile = 'Spring18_ppRef5TeV_V4_DATA' jecarc = 'Spring18_ppRef5TeV_V4_DATA' #jecfile = 'Spring18_ppRef5TeV_V2_DATA' #jecarc = 'Spring18_ppRef5TeV_V2_DATA' if jecfile != '': print 'JEC file: ', jecfile mod.append(jetRecalib(jecfile, jecarc, redoJEC=True, year=year)) if doTnP: if isData: if year == 17: mod.append(addTnPMuon17data()) elif year == 16: mod.append(addTnPMuon16data()) elif year == 18: mod.append(addTnPMuonForMoriond18data()) else: if year == 17: mod.append(addTnPMuon17()) elif year == 16: mod.append(addTnPMuon16()) elif year == 18: mod.append(addTnPMuonForMoriond18()) slimfilein = "SlimFileTnP.txt" slimfileout = "SlimFileTnP.txt" cut = 'nMuon >= 2 && Muon_pt[0] > 25 && Muon_pt[1] >= 12' else: if not doNotSkim: mod.append(skimRecoLeps())
jecarc = "Autumn18_V8_MC" mod.append(puWeight_2018()) elif year == 5: jecfile = "Spring18_ppRef5TeV_V2_MC" jecarc = "Spring18_ppRef5TeV_V2_MC" #mod.append() else: mod.append(puAutoWeight_2017()) elif year == 18 and era != '': jecfile = 'Autumn18_Run%s_V8_DATA' % era jecarc = 'Autumn18_V8_DATA' elif year == 5: jecfile = 'Spring18_ppRef5TeV_V2_DATA' jecarc = 'Spring18_ppRef5TeV_V2_DATA' if jecfile != '': mod.append(jetRecalib(jecfile, jecarc)) if doTnP: if isData: if year == 17: mod.append(addTnPMuon17data()) elif year == 16: mod.append(addTnPMuon16data()) elif year == 18: mod.append(addTnPMuonForMoriond18data()) else: if year == 17: mod.append(addTnPMuon17()) elif year == 16: mod.append(addTnPMuon16()) elif year == 18: mod.append(addTnPMuonForMoriond18()) slimfile = "SlimFileTnP.txt" cut = 'nMuon >= 2 && Muon_pt[0] > 25 && Muon_pt[1] >= 12' else: if not doNotSkim: mod.append(skimRecoLeps()) else: cut = ''
Tuples.append(("2018", "B", True, "El")) Tuples.append(("2018", "C", True, "El")) Tuples.append(("2018", "D", True, "El")) if args.era: Tuples = [tup for tup in Tuples if tup[0] == args.era] if args.subera: Tuples = [tup for tup in Tuples if tup[1] == args.subera] Tuples.sort(key=lambda j: j[1]) #sort by subera Tuples.sort(key=lambda j: j[0]) #then by era, again #### Dictionary for the data jetrecalibrator dataRecalib = { "2017": { "B": jetRecalib("Fall17_17Nov2017B_V32_DATA", "Fall17_17Nov2017_V32_DATA"), "C": jetRecalib("Fall17_17Nov2017C_V32_DATA", "Fall17_17Nov2017_V32_DATA"), "D": jetRecalib("Fall17_17Nov2017DE_V32_DATA", "Fall17_17Nov2017_V32_DATA"), "E": jetRecalib("Fall17_17Nov2017DE_V32_DATA", "Fall17_17Nov2017_V32_DATA"), "F": jetRecalib("Fall17_17Nov2017F_V32_DATA", "Fall17_17Nov2017_V32_DATA"), "NONE": "NothingToSeeHere" } } #Test the module initialization and cutstrings produced if args.stage == 'test': Mods = []
def multiplier( fileList, hName=None, NLeps=None, theEra=["2017", "NONE"], theBTagger=['CSVv2', 'M'], evtConfig=[True, 1, 1, 1, 1], maxevt=-1 ): #evtConfig=[isData, genEquivalentLuminosity, genXS, genNEvents] if hName == None: hDirName = None else: hName = hName hDirName = "plots" modulesMC = [ puWeightProducer("auto", pufile_data2017, "pu_mc", "pileup", verbose=False), Trigger(triggers), jetmetUncertaintiesProducer("2017", "Fall17_17Nov2017_V32_MC", ["All"], redoJEC=True), btagSFProducer(theEra[0], algo=theBTagger[0]), BaselineSelector(maxevt=maxevt, probEvt=None, isData=evtConfig[0], genEquivalentLuminosity=evtConfig[1], genXS=evtConfig[2], genNEvents=evtConfig[3], genSumWeights=evtConfig[4], era=theEra[0], btagging=theBTagger, lepPt=25, MET=50, HT=500, invertZWindow=False, invertZWindowEarlyReturn=False, GenTop_LepSelection=None, jetPtVar="pt_nom", jetMVar="mass_nom"), ] dataRecalib = { '2017': { 'B': jetRecalib("Fall17_17Nov2017B_V32_DATA", "Fall17_17Nov2017_V32_DATA"), 'C': jetRecalib("Fall17_17Nov2017C_V32_DATA", "Fall17_17Nov2017_V32_DATA"), 'D': jetRecalib("Fall17_17Nov2017DE_V32_DATA", "Fall17_17Nov2017_V32_DATA"), 'E': jetRecalib("Fall17_17Nov2017DE_V32_DATA", "Fall17_17Nov2017_V32_DATA"), 'F': jetRecalib("Fall17_17Nov2017F_V32_DATA", "Fall17_17Nov2017_V32_DATA"), 'NONE': 'NothingToSeeHere' } } modulesData = [ Trigger(triggers), dataRecalib[theEra[0]][theEra[1]], BaselineSelector(maxevt=maxevt, probEvt=None, isData=evtConfig[0], genEquivalentLuminosity=evtConfig[1], genXS=evtConfig[2], genNEvents=evtConfig[3], era=theEra[0], btagging=theBTagger, lepPt=25, MET=50, HT=500, invertZWindow=False, invertZWindowEarlyReturn=False, GenTop_LepSelection=None, jetPtVar="pt_nom", jetMVar="mass_nom"), ] if evtConfig[0] == True: theModules = modulesData else: theModules = modulesMC p = PostProcessor( "/tmp/nmangane", #"./"+theEra+"/"+theBTagger[0], fileList, modules=theModules, noOut=False, postfix=hName, haddFileName="Tree_" + hName, histFileName=hName, histDirName=hDirName, ) p.run()