Exemplo n.º 1
0
    def appendMCweightsSequence(self):
        ################################################ PU
        #pu reweight modules
        puWeightProducer_allData = puWeight_UL2016_allData
        puWeightProducer = puWeight_UL2016_postVFP if self.eraVFP == "postVFP" else puWeight_UL2016_preVFP
        if self.dataYear == 2017:
            puWeightProducer = puWeight_2017
        elif self.dataYear == 2018:
            puWeightProducer = puWeight_2018

        ################################################PREFIRE Weights
        jetROOT = 'L1prefiring_jetpt_2016BtoH'
        photonROOT = 'L1prefiring_photonpt_2016BtoH'
        if self.dataYear == 2017:
            jetROOT = 'L1prefiring_jetpt_2017BtoF'
            photonROOT = 'L1prefiring_photonpt_2017BtoF'
        prefireCorr = lambda: PrefCorr(jetroot=jetROOT + '.root',
                                       jetmapname=jetROOT,
                                       photonroot=photonROOT + '.root',
                                       photonmapname=photonROOT)

        ################################################

        mcweights = [
            puWeightProducer_allData(),
            puWeightProducer(),
            prefireCorr(),
        ]
        return mcweights
Exemplo n.º 2
0
def multiplier(fileList, hName=None, fName="def.root", NLeps=None, maxevt=10000):
    hName = None
    hDirName = None
    p=PostProcessor(".",
                    fileList,
                    modules=[puWeightProducer("auto",pufile_data2017,"pu_mc","pileup",verbose=True), 
                             Trigger(triggers), 
                             BaselineSelector(isData=True, era="2017", btagging=['DeepCSV','M'], lepPt=25, MET=50, HT=500, invertZWindow=False, GenTop_LepSelection=None),
                             # MCTreePlot(maxevt=maxevt, filterNLeps=NLeps)
                            ],
                    haddFileName=fName,
                    noOut=False,
                    # histFileName=hName,
                    # histDirName=hDirName,
                   )
    p.run()
Exemplo n.º 3
0
def main(args):
    # isdata = False
    # isfastsim = False
    if "False" in args.isData:
        isdata = False
    else:
        isdata = True
    if "False" in args.isFastSim:
        isfastsim = False
    else:
        isfastsim = True

    mods = [
        eleMiniCutID(),
        Stop0lObjectsProducer(args.era),
        DeepTopProducer(args.era),
        Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim),
        UpdateGenWeight(isdata, args.crossSection, args.nEvents)
    ]
    if args.era == "2018":
        mods.append(UpdateJetID(args.era))


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For MC ~~~~~
    if not isdata:
        pufile = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/%s" % (
            os.environ['CMSSW_BASE'], DataDepInputs[args.era]["pileup"])
        mods += [
            lepSFProducer(args.era),
            puWeightProducer("auto", pufile, "pu_mc", "pileup", verbose=False)
        ]

    files = []
    lines = open(args.inputfile).readlines()
    for line in lines:
        files.append(line.strip())

    p = PostProcessor(args.outputfile,
                      files,
                      cut=None,
                      branchsel=None,
                      outputbranchsel="keep_and_drop.txt",
                      modules=mods,
                      provenance=False)
    p.run()
Exemplo n.º 4
0
import os
from PhysicsTools.NanoAODTools.postprocessing.framework.postprocessor import *

#this takes care of converting the input files from CRAB
from PhysicsTools.NanoAODTools.postprocessing.framework.crabhelper import inputFiles, runsAndLumis

from PhysicsTools.NanoAODTools.postprocessing.wzAnalysis.wzAnalysisModule import *
from PhysicsTools.NanoAODTools.postprocessing.modules.jme.jecUncertainties import *
from PhysicsTools.NanoAODTools.postprocessing.modules.jme.jetmetUncertainties import *
from PhysicsTools.NanoAODTools.postprocessing.modules.common.puWeightProducer import *

p = PostProcessor(".",
                  inputFiles(),
                  "",
                  modules=[
                      wzAnalysisProducer(),
                      jetmetUncertainties2017(),
                      puWeightProducer("auto",
                                       pufile_data2017,
                                       "pu_mc",
                                       "pileup",
                                       verbose=False)
                  ],
                  provenance=True,
                  fwkJobReport=True,
                  jsonInput=runsAndLumis())
p.run()

print "DONE"
os.system("ls -lR")
Exemplo n.º 5
0
                                         jetType="AK8PFPuppi",
                                         isFastSim=o_isFastSim,
                                         metBranchName=o_metBranchName)

    # ----------------------- Pileup Weights ------------------------
    if o_dataYear == "2016":
        puWeightProducer = puWeight_2016
    elif o_dataYear == "2017":
        puWeightProducer = puWeight_2017
    elif o_dataYear == "2018":
        puWeightProducer = puWeight_2018

    # ----------------------- Postprocessor -------------------------
    modules = [jetmetCorrector(), fatjetCorrector()]
    if o_isMC:
        modules.append(puWeightProducer())

    p = PostProcessor(".",
                      infnames,
                      "",
                      None,
                      modules,
                      provenance=True,
                      prefetch=options.prefetch,
                      maxEntries=options.maxEntries)
    p.run()

if os.path.exists(
        os.path.basename(infnames[0]).replace(".root", "_Skim.root")):
    os.rename(
        os.path.basename(infnames[0]).replace(".root", "_Skim.root"), outfname)
Exemplo n.º 6
0
from PhysicsTools.NanoAODTools.postprocessing.framework.crabhelper import inputFiles, runsAndLumis

##Function parameters
##(isMC=True, dataYear=2016, runPeriod="B", jesUncert="Total", redojec=False, jetType = "AK4PFchs", noGroom=False)
##All other parameters will be set in the helper module
jmeCorrections = createJMECorrector(True, "2017", "B", "Total", True,
                                    "AK4PFchs", False)

# b tag scale-factors
btagSF2017_1 = lambda: btagSFProducer(
    era="2017", algo="deepjet", selectedWPs=["L", "M", "shape_corr"])

# PU weights
puWeight_2017_1 = lambda: puWeightProducer(pufile_mc2017,
                                           pufile_data2017,
                                           "pu_mc",
                                           "pileup",
                                           verbose=False,
                                           doSysVar=True)

p = PostProcessor(
    ".",
    inputFiles(),
    "",
    modules=[puWeight_2017_1(),
             jmeCorrections(),
             btagSF2017_1()],
    provenance=True,
    fwkJobReport=True,
    jsonInput=runsAndLumis())

p.run()
datasetFile = Dataset(args.fileName)
inFileName = datasetFile.fileName
print("inFileName: %s" % inFileName)
print("self.type = %s" % datasetFile.type)
OutDir = args.outDirectory + "/" + datasetFile.type + "/" + datasetFile.primaryName
thePostFix = args.postfix

moduleCache = []
pufilePath = "%s/src/PhysicsTools/NanoAODTools/python/postprocessing/data/pileup/" % os.environ[
    'CMSSW_BASE']
if args.era == "2017":
    moduleCache.append(
        puWeightProducer(
            pufilePath + "mcPileup2017.root",
            pufilePath +
            "PileupHistogram-goldenJSON-13tev-2017-99bins_withVar.root",
            "pu_mc",
            "pileup",
            verbose=False,
            doSysVar=True))
elif args.era == "2018":
    moduleCache.append(
        puWeightProducer(
            pufilePath + "mcPileup2018.root",
            pufilePath +
            "PileupHistogram-goldenJSON-13tev-2018-100bins_withVar.root",
            "pu_mc",
            "pileup",
            verbose=False,
            doSysVar=True))
if args.maxEntries < 0:
    args.maxEntries = None
Exemplo n.º 8
0
def main(args):
    isdata = len(args.dataEra) > 0
    isfastsim = args.isFastSim
    isSUSY = args.sampleName.startswith("SMS_")

    if isdata and isfastsim:
        print "ERROR: It is impossible to have a dataset that is both data and fastsim"
        exit(0)

    if isdata:
        dataType = "Data"
        if not args.era + args.dataEra in DataDepInputs[dataType].keys():
            print "ERROR: Era \"" + args.era + "\" not recognized"
            exit(0)
    elif isfastsim:
        dataType = "FASTSIM"
        if not args.era + args.dataEra in DataDepInputs[dataType].keys():
            print "ERROR: Era \"" + args.era + "\" not recognized"
            exit(0)
    else:
        dataType = "MC"
        if not args.era in DataDepInputs[dataType].keys():
            print "ERROR: Era \"" + args.era + "\" not recognized"
            exit(0)

    mods = []

    #~~~~~ Different modules for Data and MC ~~~~~
    # These modules must be run first in order to update JEC and MET approperiately for future modules
    # The MET update module must also be run before the JEC update modules
    if args.era == "2017":
        # EE noise mitigation in PF MET
        # https://hypernews.cern.ch/HyperNews/CMS/get/JetMET/1865.html
        mods.append(UpdateMETProducer("METFixEE2017"))
    if args.era == "2018":
        # The 2018 JetID came after our production
        mods.append(UpdateJetID(args.era))

    if isdata:
        # Apply resediual JEC on Data
        if DataDepInputs[dataType][args.era + args.dataEra]["redoJEC"]:
            mods.append(
                jetRecalib(DataDepInputs[dataType][args.era +
                                                   args.dataEra]["JEC"]))
    else:
        # JetMET uncertainty ?
        mods += [
            jetmetUncertaintiesProducer(
                args.era,
                DataDepInputs[dataType][args.era]["JECMC"],
                jerTag=DataDepInputs[dataType][args.era]["JERMC"],
                redoJEC=DataDepInputs[dataType][args.era]["redoJEC"],
                doSmearing=False,
                doL2L3=not isfastsim)
        ]

    #~~~~~ Common modules for Data and MC ~~~~~
    mods += [
        eleMiniCutID(),
        Stop0lObjectsProducer(args.era),
        TopTaggerProducer(recalculateFromRawInputs=True,
                          topDiscCut=DeepResovledDiscCut,
                          cfgWD=os.environ["CMSSW_BASE"] +
                          "/src/PhysicsTools/NanoSUSYTools/python/processors"),
        DeepTopProducer(args.era),
        Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim),
        Stop0l_trigger(args.era),
        UpdateEvtWeight(isdata, args.crossSection, args.nEvents,
                        args.sampleName)
    ]

    #~~~~~ Modules for MC Only ~~~~~
    if not isdata:
        pufile_data = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/%s" % (
            os.environ['CMSSW_BASE'],
            DataDepInputs[dataType][args.era]["pileup_Data"])
        pufile_mc = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/%s" % (
            os.environ['CMSSW_BASE'],
            DataDepInputs[dataType][args.era]["pileup_MC"])
        ## TODO: ZW don't understand this part, So this is for fullsim?
        ## Isn't jetmetUncertaintiesProducer included jecUncertProducer
        if not isfastsim:
            mods += [
                jecUncertProducer(DataDepInputs[dataType][args.era]["JECMC"]),
            ]
        ## Major modules for MC
        mods += [
            TopTaggerProducer(
                recalculateFromRawInputs=True,
                suffix="JESUp",
                AK4JetInputs=("Jet_pt_jesTotalUp", "Jet_eta", "Jet_phi",
                              "Jet_mass_jesTotalUp"),
                topDiscCut=DeepResovledDiscCut,
                cfgWD=os.environ["CMSSW_BASE"] +
                "/src/PhysicsTools/NanoSUSYTools/python/processors"),
            TopTaggerProducer(
                recalculateFromRawInputs=True,
                suffix="JESDown",
                AK4JetInputs=("Jet_pt_jesTotalDown", "Jet_eta", "Jet_phi",
                              "Jet_mass_jesTotalDown"),
                topDiscCut=DeepResovledDiscCut,
                cfgWD=os.environ["CMSSW_BASE"] +
                "/src/PhysicsTools/NanoSUSYTools/python/processors"),
            DeepTopProducer(args.era, "JESUp"),
            DeepTopProducer(args.era, "JESDown"),
            Stop0lObjectsProducer(args.era, "JESUp"),
            Stop0lObjectsProducer(args.era, "JESDown"),
            Stop0lObjectsProducer(args.era, "METUnClustUp"),
            Stop0lObjectsProducer(args.era, "METUnClustDown"),
            Stop0lBaselineProducer(args.era,
                                   isData=isdata,
                                   isFastSim=isfastsim,
                                   applyUncert="JESUp"),
            Stop0lBaselineProducer(args.era,
                                   isData=isdata,
                                   isFastSim=isfastsim,
                                   applyUncert="JESDown"),
            Stop0lBaselineProducer(args.era,
                                   isData=isdata,
                                   isFastSim=isfastsim,
                                   applyUncert="METUnClustUp"),
            Stop0lBaselineProducer(args.era,
                                   isData=isdata,
                                   isFastSim=isfastsim,
                                   applyUncert="METUnClustDown"),
            PDFUncertiantyProducer(isdata, isSUSY),
            lepSFProducer(args.era),
            lepSFProducer(args.era,
                          muonSelectionTag="Medium",
                          electronSelectionTag="Medium",
                          photonSelectionTag="Medium"),
            puWeightProducer(pufile_mc, pufile_data, args.sampleName,
                             "pileup"),
            btagSFProducer(era=args.era, algo="deepcsv"),
            BtagSFWeightProducer("allInOne_bTagEff_deepCSVb_med.root",
                                 args.sampleName, DeepCSVMediumWP[args.era]),
            # statusFlag 0x2100 corresponds to "isLastCopy and fromHardProcess"
            # statusFlag 0x2080 corresponds to "IsLastCopy and isHardProcess"
            GenPartFilter(statusFlags=[0x2100, 0x2080, 0x2000],
                          pdgIds=[0, 0, 22],
                          statuses=[0, 0, 1]),
            # TODO: first implemtation, need double check
            ISRSFWeightProducer(args.era, isSUSY, "allInOne_ISRWeight.root",
                                args.sampleName),
        ]
        # Special PU reweighting for 2017 separately
        if args.era == "2017":
            pufile_dataBtoE = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/Collisions17_BtoE.root" % os.environ[
                'CMSSW_BASE']
            pufile_dataF = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/Collisions17_F.root" % os.environ[
                'CMSSW_BASE']
            mods += [
                puWeightProducer(pufile_mc,
                                 pufile_dataBtoE,
                                 args.sampleName,
                                 "pileup",
                                 name="17BtoEpuWeight"),
                puWeightProducer(pufile_mc,
                                 pufile_dataF,
                                 args.sampleName,
                                 "pileup",
                                 name="17FpuWeight")
            ]
        # 2016 and 2017 L1 ECal prefiring reweighting
        if args.era == "2016" or args.era == "2017":
            mods.append(PrefCorr(args.era))

    #============================================================================#
    #-------------------------     Run PostProcessor     ------------------------#
    #============================================================================#
    files = []
    if len(args.inputfile) > 5 and args.inputfile[0:5] == "file:":
        #This is just a single test input file
        files.append(args.inputfile[5:])
    else:
        #this is a file list
        with open(args.inputfile) as f:
            files = [line.strip() for line in f]

    p = PostProcessor(args.outputfile,
                      files,
                      cut=None,
                      branchsel=None,
                      outputbranchsel="keep_and_drop.txt",
                      modules=mods,
                      provenance=False,
                      maxEvents=args.maxEvents)
    p.run()
Exemplo n.º 9
0
     FastsimVarProducer(isfastsim, "METUnClustDown"),
     Stop0lObjectsProducer(args.era, "JESUp"),
     Stop0lObjectsProducer(args.era, "JESDown"),
     Stop0lObjectsProducer(args.era, "METUnClustUp"),
     Stop0lObjectsProducer(args.era, "METUnClustDown"),
     Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim, applyUncert="JESUp"),
     Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim, applyUncert="JESDown"),
     Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim, applyUncert="METUnClustUp"),
     Stop0lBaselineProducer(args.era, isData=isdata, isFastSim=isfastsim, applyUncert="METUnClustDown"),
     PDFUncertiantyProducer(isdata, isSUSY),
     lepSFProducer(args.era),
     lepSFProducer(args.era, muonSelectionTag="Medium",
                   electronSelectionTag="Medium",
                   photonSelectionTag="Medium", 
                   tauSelectionTag="Tight"),
     puWeightProducer(pufile_mc, pufile_data, args.sampleName,"pileup"),
     btagSFProducer(era=args.era, algo="deepcsv"),
     BtagSFWeightProducer("allInOne_bTagEff_deepCSVb_med.root", args.sampleName, DeepCSVMediumWP[args.era]),
     # statusFlag 0x2100 corresponds to "isLastCopy and fromHardProcess"
     # statusFlag 0x2080 corresponds to "IsLastCopy and isHardProcess"
     GenPartFilter(statusFlags = [0x2100, 0x2080, 0x2000], pdgIds = [0, 0, 22], statuses = [0, 0, 1]),
     # TODO: first implemtation, need double check
     ISRSFWeightProducer(args.era, isSUSY, "allInOne_ISRWeight.root", args.sampleName), 
     ]
 # Special PU reweighting for 2017 separately
 if args.era == "2017":
     pufile_dataBtoE = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/Collisions17_BtoE.root" % os.environ['CMSSW_BASE']
     pufile_dataF = "%s/src/PhysicsTools/NanoSUSYTools/data/pileup/Collisions17_F.root" % os.environ['CMSSW_BASE']
     mods += [
         puWeightProducer(pufile_mc, pufile_dataBtoE, args.sampleName,"pileup", name="17BtoEpuWeight"),
         puWeightProducer(pufile_mc, pufile_dataF, args.sampleName,"pileup", name="17FpuWeight")
Exemplo n.º 10
0
        ifileDATA = "/data/Run2016C/SingleMuon/NANOAOD/Nano25Oct2019-v1/40000/F7FC207B-943C-3B48-9147-D83B838BE473.root"
    elif dataYear == 2017:
        ifileDATA = "data/Run2017F/BTagCSV/NANOAOD/Nano1June2019-v1/40000/030D3C6F-240B-3247-961D-1A7C0922DC1F.root"
    elif dataYear == 2018:
        ifileDATA = "data/Run2018B/DoubleMuon/NANOAOD/Nano1June2019-v1/40000/20FCA3B4-6778-7441-B63C-307A21C7C2F0.root"

input_files = []
modules = []
if isMC:
    if inputFile == '':  #this will run on the hardcoded file above
        input_files.append(input_dir + ifileMC)
    else:
        input_files.append(inputFile)
    if (not genOnly and not trigOnly):
        modules = [
            puWeightProducer(),
            preSelection(isMC=isMC, passall=passall, dataYear=dataYear),
            prefireCorr(),
            jmeCorrections(),
            genLeptonSelectModule(),
            CSAngleModule(),
            WproducerModule(),
            flattenLheWeightsModule(),
        ]
        # add before recoZproducer
        if muonScaleRes != None: modules.insert(3, muonScaleRes())
    elif genOnly:
        modules = [genLeptonSelectModule(), CSAngleModule(), WproducerModule()]
    elif trigOnly:
        modules = [
            puWeightProducer(),
Exemplo n.º 11
0
def main(args):
    isdata = len(args.dataEra) > 0

    if isdata:
        dataType = "Data"
        if not args.era + args.dataEra in DataDepInputs[dataType]:
            print "ERROR: Era \"" + args.era + "\" not recognized"
            exit(0)

    else:
        dataType = "MC"
        if not args.era in DataDepInputs[dataType].keys():
            print "ERROR: Era \"" + args.era + "\" not recognized"
            exit(0)

    mods = []

    #~~~~~ Different modules for Data and MC ~~~~~
    # These modules must be run first in order to update JEC and MET approperiately for future modules
    # The MET update module must also be run before the JEC update modules
    if args.era == "2017":
        # EE noise mitigation in PF MET
        # https://hypernews.cern.ch/HyperNews/CMS/get/JetMET/1865.html
        mods.append(UpdateMETProducer("METFixEE2017"))

    if isdata:
        # Apply resediual JEC on Data
        mods.append(
            createJMECorrector(isMC=False,
                               dataYear=int(args.era),
                               runPeriod=args.dataEra,
                               jetType="AK8PFPuppi")())
    else:
        mods.append(
            createJMECorrector(
                isMC=True,
                dataYear=int(args.era),
                jesUncert="Merged",
                applyHEMfix=(True if args.era == '2018' else False))())
        mods.append(
            createJMECorrector(
                isMC=True,
                dataYear=int(args.era),
                jesUncert="Merged",
                jetType="AK8PFPuppi",
                applyHEMfix=(True if args.era == '2018' else False))())

    #~~~~~ Common modules for Data and MC ~~~~~
    mods.append(eleMiniCutID())

    #~~~~~ Modules for MC Only ~~~~
    if not isdata:
        pufile_data = "{0}/src/PhysicsTools/NanoAODTools/python/postprocessing/data/pileup/{1}".format(
            os.environ['CMSSW_BASE'],
            DataDepInputs[dataType][args.era]["pileup_Data"])
        pufile_mc = "{0}/src/PhysicsTools/NanoAODTools/python/postprocessing/data/pileup/{1}".format(
            os.environ['CMSSW_BASE'],
            DataDepInputs[dataType][args.era]["pileup_MC"])
        ## Major modules for MC
        mods += [
            PDFUncertaintyProducer(isdata),
            puWeightProducer(pufile_mc, pufile_data, "pu_mc", "pileup"),
            btagSFProducer(args.era if args.era != '2016' else 'Legacy2016',
                           algo="deepcsv",
                           verbose=0),
            #btagSFProducer(args.era, algo="deepjet", verbose=0),
            BtagSFWeightProducer(args.era),
            #'''
            #statusFlag 0x2100 corresponds to "isLastCopy and fromHardProcess"
            #statusFlag 0x2080 corresponds to "IsLastCopy and isHardProcess"
            #'''
            GenPartFilter(statusFlags=[0x2100, 0x2080, 0x2000, 0],
                          pdgIds=[0, 0, 22, 0],
                          statuses=[0, 0, 1, 23]),
        ]
        # 2016 and 2017 L1 ECal prefiring reweighting
        if args.era == "2016" or args.era == "2017":
            era_map = {'2016': 'H', '2017': 'F'}
            prefargs = {
                "jetroot":
                "L1prefiring_jetpt_{0}Bto{1}.root".format(
                    args.era, era_map[args.era]),
                "jetmapname":
                "L1prefiring_jetpt_{0}Bto{1}".format(args.era,
                                                     era_map[args.era]),
                "photonroot":
                "L1prefiring_photonpt_{0}Bto{1}.root".format(
                    args.era, era_map[args.era]),
                "photonmapname":
                "L1prefiring_photonpt_{0}Bto{1}".format(
                    args.era, era_map[args.era])
            }
            mods.append(PrefCorr(**prefargs))

    #============================================================================#
    #-------------------------     Run PostProcessor     ------------------------#
    #============================================================================#
    files = []
    if len(args.inputfile) > 5 and args.inputfile[0:5] == "file:":
        #This is just a single test input file
        files.append(args.inputfile[5:])
    else:
        #this is a file list
        with open(args.inputfile) as f:
            files = [line.strip() for line in f]

    p = PostProcessor(args.outputfile,
                      files,
                      cut=None,
                      branchsel=None,
                      outputbranchsel="keep_and_drop.txt",
                      modules=mods,
                      provenance=False,
                      maxEntries=args.maxEvents,
                      prefetch=True)
    p.run()
Exemplo n.º 12
0
     if nEvents == (nEventsNegative + nEventsPositive):
         weight = lumi * 1000 * crossSection / (nEventsPositive -
                                                nEventsNegative)
     else:
         weight = lumi * 1000 * crossSection / nEvents
     subera = None
 else:
     weight = 1
 # print("era= {}\t subera={}\t isData={}\t TriggerChannel={}\t weight={}".format(era, subera, str(isData), channel, weight))
 modules = []
 if not isData:
     if era == "2017":
         modules.append(
             puWeightProducer(pufile_mc2017,
                              pufile_data2017,
                              "pu_mc",
                              "pileup",
                              verbose=False,
                              doSysVar=True))
     elif era == "2018":
         modules.append(
             puWeightProducer(pufile_mc2018,
                              pufile_data2018,
                              "pu_mc",
                              "pileup",
                              verbose=False,
                              doSysVar=True))
 modules.append(
     TriggerAndLeptonLogic(passLevel='baseline',
                           era=era,
                           subera=subera,
                           isData=isData,
Exemplo n.º 13
0
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()