Пример #1
0
def addCorrectedPFMet(process, isMC, doApplyType0corr, doApplySysShiftCorr,
                      runPeriod, doSmearJets):

    process.load("PhysicsTools.PatUtils.patPFMETCorrections_cff")

    process.load("JetMETCorrections.METPUSubtraction.mvaPFMET_cff")
    if isMC:
        process.calibratedAK5PFJetsForPFMEtMVA.correctors = cms.vstring(
            "ak5PFL1FastL2L3")
    else:
        process.calibratedAK5PFJetsForPFMEtMVA.correctors = cms.vstring(
            "ak5PFL1FastL2L3Residual")
    process.pfMEtMVA.srcCorrJets = cms.InputTag(
        'calibratedAK5PFJetsForPFMEtMVA')
    process.pfMEtMVA.srcLeptons = cms.VInputTag('goodMuons')
    process.pfMEtMVA.verbosity = cms.int32(0)
    process.patPFMetMVA = process.patMETs.clone(
        metSource=cms.InputTag('pfMEtMVA'),
        addMuonCorrections=cms.bool(False),
        genMETSource=cms.InputTag('genMetTrue'))
    process.patMEtMVAsequence = cms.Sequence(process.pfMEtMVAsequence +
                                             process.patPFMetMVA)

    process.load("JetMETCorrections.METPUSubtraction.noPileUpPFMET_cff")
    process.load("JetMETCorrections.METPUSubtraction.noPileUpPFchsMET_cff")
    if isMC:
        process.calibratedAK5PFJetsForNoPileUpPFMEt.correctors = cms.vstring(
            "ak5PFL1FastL2L3")
        process.calibratedAK5PFchsJetsForNoPileUpPFchsMEt.correctors = cms.vstring(
            "ak5PFchsL1FastL2L3")
    else:
        process.calibratedAK5PFJetsForNoPileUpPFMEt.correctors = cms.vstring(
            "ak5PFL1FastL2L3Residual")
        process.calibratedAK5PFchsJetsForNoPileUpPFchsMEt.correctors = cms.vstring(
            "ak5PFchsL1FastL2L3Residual")

    process.noPileUpPFMEt.srcLeptons = cms.VInputTag('patMuons')
    process.noPileUpPFMEtData.verbosity = cms.int32(0)
    process.noPileUpPFMEt.verbosity = cms.int32(0)
    process.patPFMetNoPileUp = process.patMETs.clone(
        metSource=cms.InputTag('noPileUpPFMEt'),
        addMuonCorrections=cms.bool(False),
        genMETSource=cms.InputTag('genMetTrue'))
    process.noPileUpPFchsMEt.srcLeptons = cms.VInputTag('patMuons')
    process.noPileUpPFchsMEtData.verbosity = cms.int32(0)
    process.noPileUpPFchsMEt.verbosity = cms.int32(0)
    process.patPFchsMetNoPileUp = process.patMETs.clone(
        metSource=cms.InputTag('noPileUpPFchsMEt'),
        addMuonCorrections=cms.bool(False),
        genMETSource=cms.InputTag('genMetTrue'))
    process.patMEtNoPileUpSequence = cms.Sequence(
        process.noPileUpPFMEtSequence + process.patPFMetNoPileUp +
        process.patPFchsMetNoPileUp)

    process.makeCorrectedPatMETs = cms.Sequence()

    if isMC:
        import PhysicsTools.PatAlgos.tools.helpers as configtools
        process.type0PFMEtCorrection.remove(
            process.type0PFMEtCorrectionPFCandToVertexAssociation)
        process.makeCorrectedPatMETs += process.type0PFMEtCorrectionPFCandToVertexAssociation
        configtools.cloneProcessingSnippet(process,
                                           process.producePatPFMETCorrections,
                                           "NoSmearing")
        process.selectedPatJetsForMETtype1p2CorrNoSmearing.src = cms.InputTag(
            'patJetsNotOverlappingWithLeptonsForMEtUncertainty')
        process.selectedPatJetsForMETtype2CorrNoSmearing.src = process.selectedPatJetsForMETtype1p2CorrNoSmearing.src
        configtools.cloneProcessingSnippet(process, process.patMEtMVAsequence,
                                           "NoSmearing")
        process.patMEtNoPileUpSequence.remove(process.type0PFMEtCorrection)
        configtools.cloneProcessingSnippet(process,
                                           process.patMEtNoPileUpSequence,
                                           "NoSmearing")
    else:
        doSmearJets = False

    sysShiftCorrParameter = None
    if doApplySysShiftCorr:
        process.load("JetMETCorrections.Type1MET.pfMETsysShiftCorrections_cfi")
        if runPeriod == "2012RunABC":
            if isMC:
                sysShiftCorrParameter = process.pfMEtSysShiftCorrParameters_2012runABCvsNvtx_mc
            else:
                sysShiftCorrParameter = process.pfMEtSysShiftCorrParameters_2012runABCvsNvtx_data
        else:
            raise ValueError("Invalid runPeriod = %s !!" % runPeriod)

    from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties
    runType1PFMEtUncertainties(process,
                               electronCollection='',
                               photonCollection='',
                               muonCollection=cms.InputTag('patMuons'),
                               tauCollection='',
                               jetCollection=cms.InputTag('patJets'),
                               doSmearJets=doSmearJets,
                               makeType1corrPFMEt=True,
                               makeType1p2corrPFMEt=True,
                               doApplyType0corr=doApplyType0corr,
                               sysShiftCorrParameter=sysShiftCorrParameter,
                               doApplySysShiftCorr=doApplySysShiftCorr,
                               addToPatDefaultSequence=False)
    from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runMVAMEtUncertainties
    runMVAMEtUncertainties(process,
                           electronCollection='',
                           photonCollection='',
                           muonCollection=cms.InputTag('patMuons'),
                           tauCollection='',
                           doSmearJets=doSmearJets,
                           addToPatDefaultSequence=False)
    from PhysicsTools.PatUtils.tools.runNoPileUpMEtUncertainties import runNoPileUpMEtUncertainties
    runNoPileUpMEtUncertainties(process,
                                electronCollection='',
                                photonCollection='',
                                muonCollection=cms.InputTag('patMuons'),
                                tauCollection='',
                                doApplyChargedHadronSubtraction=False,
                                doSmearJets=doSmearJets,
                                addToPatDefaultSequence=False)
    runNoPileUpMEtUncertainties(process,
                                electronCollection='',
                                photonCollection='',
                                muonCollection=cms.InputTag('patMuons'),
                                tauCollection='',
                                doApplyChargedHadronSubtraction=True,
                                doSmearJets=doSmearJets,
                                addToPatDefaultSequence=False)

    if isMC:
        process.patPFMet.addGenMET = cms.bool(True)
        process.patPFMetMVA.addGenMET = cms.bool(True)
        process.patPFJetMETtype1p2Corr.jetCorrLabel = cms.string("L3Absolute")
        process.patPFJetMETtype1p2CorrNoSmearing.jetCorrLabel = cms.string(
            "L3Absolute")

        process.makeCorrectedPatMETs += process.metUncertaintySequence
        process.makeCorrectedPatMETs += process.producePatPFMETCorrectionsNoSmearing
        process.makeCorrectedPatMETs += process.patMEtMVAsequenceNoSmearing
        process.makeCorrectedPatMETs += process.patMEtNoPileUpSequenceNoSmearing
    else:
        process.patPFMet.addGenMET = cms.bool(False)
        process.patPFMetMVA.addGenMET = cms.bool(False)
        process.patPFJetMETtype1p2Corr.jetCorrLabel = cms.string(
            "L2L3Residual")

        process.makeCorrectedPatMETs += process.patJetsNotOverlappingWithLeptonsForMEtUncertainty
        if hasattr(process, "pfMEtSysShiftCorrSequence"):
            process.makeCorrectedPatMETs += process.pfMEtSysShiftCorrSequence
        process.makeCorrectedPatMETs += process.producePatPFMETCorrections
        process.makeCorrectedPatMETs += process.patMEtMVAsequence
        process.makeCorrectedPatMETs += process.patMEtNoPileUpSequence

    # add MVA MEt with unity response training
    for moduleName in dir(process):
        if (moduleName.endswith("Up")
                or moduleName.endswith("Down")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module,
                      cms.EDProducer) and module.type_() == "PFMETProducerMVA":
            module_unity = module.clone(inputFileNames=cms.PSet(
                DPhi=cms.FileInPath(
                    'JetMETCorrections/METPUSubtraction/data/gbrmetphi_53.root'
                ),  # CV: same for unity and non-unity response training
                CovU2=cms.FileInPath(
                    'JetMETCorrections/METPUSubtraction/data/gbru2cov_53_UnityResponse.root'
                ),
                U=cms.FileInPath(
                    'JetMETCorrections/METPUSubtraction/data/gbrmet_53_UnityResponse.root'
                ),
                CovU1=cms.FileInPath(
                    'JetMETCorrections/METPUSubtraction/data/gbru1cov_53_UnityResponse.root'
                )))
            moduleName_unity = moduleName.replace("pfMEtMVA",
                                                  "pfMEtMVAunityResponse")
            setattr(process, moduleName_unity, module_unity)
            process.makeCorrectedPatMETs += module_unity
    for moduleName in dir(process):
        if (moduleName.endswith("Up")
                or moduleName.endswith("Down")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module, cms.EDProducer) and module.type_(
        ) == "PATMETProducer" and moduleName.find("patPFMetMVA") != -1:
            module_unity = module.clone(
                metSource=cms.InputTag(module.metSource.value().replace(
                    "pfMEtMVA", "pfMEtMVAunityResponse")))
            moduleName_unity = moduleName.replace("patPFMetMVA",
                                                  "patPFMetMVAunityResponse")
            setattr(process, moduleName_unity, module_unity)
            process.makeCorrectedPatMETs += module_unity

    # add No-PU MEt without L1Fastjet jet energy corrections
    for moduleName in dir(process):
        if ((moduleName.endswith("Up") or moduleName.endswith("Down"))
                and not moduleName.endswith("NoPileUp")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module, cms.EDProducer) and module.type_(
        ) == "NoPileUpPFMEtDataProducer":
            moduleName_calib_or_corrJets = module.srcJets.value()
            module_calib_or_corrJets = getattr(process,
                                               moduleName_calib_or_corrJets)
            moduleName_calibJets = None
            moduleName_corrJets = None
            moduleName_smearedJets = None
            ##print "%s: %s" % (moduleName_calib_or_corrJets, module_calib_or_corrJets.type_())
            if module_calib_or_corrJets.type_() == "ShiftedPFJetProducer":
                moduleName_corrJets = moduleName_calib_or_corrJets
                module_corrJets = getattr(process, moduleName_corrJets)
                moduleName_calibJets = module_corrJets.src.value()
            elif module_calib_or_corrJets.type_() == "PFJetCorrectionProducer":
                moduleName_calibJets = moduleName_calib_or_corrJets
            elif module_calib_or_corrJets.type_() == "SmearedPFJetProducer":
                moduleName_smearedJets = moduleName_calib_or_corrJets
                module_smearedJets = getattr(process, moduleName_smearedJets)
                moduleName_calibJets = module_smearedJets.src.value()
            else:
                raise ValueError("Module = %s is of unsupported type = %s !!" %
                                 (moduleName_calib_or_corrJets,
                                  module_calib_or_corrJets.type_()))
            if moduleName_calibJets:
                module_calibJets = getattr(process, moduleName_calibJets)
                module_calibJets_woL1FastJet = module_calibJets.clone(
                    correctors=cms.vstring(
                        module_calibJets.correctors[0].replace("L1Fast", "")))
                moduleName_calibJets_woL1FastJet = moduleName_calibJets.replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")
                setattr(process, moduleName_calibJets_woL1FastJet,
                        module_calibJets_woL1FastJet)
                ##print "adding module %s: %s" % (moduleName_calibJets_woL1FastJet, module_calibJets_woL1FastJet.type_())
                process.makeCorrectedPatMETs += module_calibJets_woL1FastJet
            if moduleName_corrJets:
                module_corrJets = getattr(process, moduleName_corrJets)
                module_corrJets_woL1FastJet = module_corrJets.clone(
                    src=cms.InputTag(module_corrJets.src.value().replace(
                        "ForNoPileUpPFMEt",
                        "ForNoPileUpPFMEtWithoutL1FastJet")),
                    jetCorrLabelUpToL3Res=cms.string(
                        module_corrJets.jetCorrLabelUpToL3Res.value().replace(
                            "L1Fast", "")),
                    jetCorrLabelUpToL3=cms.string(
                        module_corrJets.jetCorrLabelUpToL3.value().replace(
                            "L1Fast", "")))
                moduleName_corrJets_woL1FastJet = moduleName_corrJets.replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")
                setattr(process, moduleName_corrJets_woL1FastJet,
                        module_corrJets_woL1FastJet)
                ##print "adding module %s: %s" % (moduleName_corrJets_woL1FastJet, module_corrJets_woL1FastJet.type_())
                process.makeCorrectedPatMETs += module_corrJets_woL1FastJet
            if moduleName_smearedJets:
                module_smearedJets = getattr(process, moduleName_smearedJets)
                module_smearedJets_woL1FastJet = module_smearedJets.clone(
                    src=cms.InputTag(module_smearedJets.src.value().replace(
                        "ForNoPileUpPFMEt",
                        "ForNoPileUpPFMEtWithoutL1FastJet")),
                    jetCorrLabel=cms.string('ak5PFL1Fastjet'))
                moduleName_smearedJets_woL1FastJet = moduleName_smearedJets.replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")
                setattr(process, moduleName_smearedJets_woL1FastJet,
                        module_smearedJets_woL1FastJet)
                ##print "adding module %s: %s" % (moduleName_smearedJets_woL1FastJet, module_smearedJets_woL1FastJet.type_())
                process.makeCorrectedPatMETs += module_smearedJets_woL1FastJet
            moduleName_jetId = module.srcJetIds.getModuleLabel()
            module_jetId = getattr(process, moduleName_jetId)
            module_jetId_woL1FastJet = module_jetId.clone(
                jets=cms.InputTag(module_jetId.jets.value().replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")))
            moduleName_jetId_woL1FastJet = moduleName_jetId.replace(
                "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")
            setattr(process, moduleName_jetId_woL1FastJet,
                    module_jetId_woL1FastJet)
            ##print "adding module %s: %s" % (moduleName_jetId_woL1FastJet, module_jetId_woL1FastJet.type_())
            process.makeCorrectedPatMETs += module_jetId_woL1FastJet
            module_woL1FastJet = module.clone(
                jetEnOffsetCorrLabel=cms.string(""),
                srcJets=cms.InputTag(module.srcJets.value().replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")),
                srcJetIds=cms.InputTag(module.srcJetIds.value().replace(
                    "ForNoPileUpPFMEt", "ForNoPileUpPFMEtWithoutL1FastJet")))
            moduleName_woL1FastJet = moduleName.replace(
                "noPileUpPFMEtData", "noPileUpPFMEtDataWithoutL1FastJet")
            setattr(process, moduleName_woL1FastJet, module_woL1FastJet)
            process.makeCorrectedPatMETs += module_woL1FastJet
    for moduleName in dir(process):
        if ((moduleName.endswith("Up") or moduleName.endswith("Down"))
                and not moduleName.endswith("NoPileUp")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(
                module,
                cms.EDProducer) and module.type_() == "NoPileUpPFMEtProducer":
            module_woL1FastJet = module.clone(srcMVAMEtData=cms.InputTag(
                module.srcMVAMEtData.value().replace(
                    "noPileUpPFMEtData", "noPileUpPFMEtDataWithoutL1FastJet")))
            moduleName_woL1FastJet = moduleName.replace(
                "noPileUpPFMEt", "noPileUpPFMEtWithoutL1FastJet")
            setattr(process, moduleName_woL1FastJet, module_woL1FastJet)
            process.makeCorrectedPatMETs += module_woL1FastJet
    for moduleName in dir(process):
        if ((moduleName.endswith("Up") or moduleName.endswith("Down"))
                and not moduleName.endswith("NoPileUp")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module, cms.EDProducer) and module.type_(
        ) == "PATMETProducer" and moduleName.find("patPFMetNoPileUp") != -1:
            module_woL1FastJet = module.clone(
                metSource=cms.InputTag(module.metSource.value().replace(
                    "noPileUpPFMEt", "noPileUpPFMEtWithoutL1FastJet")))
            moduleName_woL1FastJet = moduleName.replace(
                "patPFMetNoPileUp", "patPFMetNoPileUpWithoutL1FastJet")
            setattr(process, moduleName_woL1FastJet, module_woL1FastJet)
            process.makeCorrectedPatMETs += module_woL1FastJet

    return process.makeCorrectedPatMETs
Пример #2
0
            addToPatDefaultSequence = False,
            postfix = i
            )

if produceNoPUPFMET:
     for i in smearing:
        isSmear=False
        if i == "Smeared":
            isSmear=True
        runNoPileUpMEtUncertainties(
            process,
            electronCollection = cms.InputTag('selectedPatElectrons'),
            photonCollection = '',
            muonCollection = cms.InputTag('selectedPatMuons'),
            tauCollection = '',
            jetCollection = cms.InputTag('patJets'),    
            doSmearJets = isSmear,
            addToPatDefaultSequence = False,
            doApplyChargedHadronSubtraction = False,
            doApplyUnclEnergyCalibration = (doApplyUnclEnergyResidualCorr and not isData),
            sfNoPUjetOffsetEnCorr = sfNoPUjetOffsetEnCorr,
            postfix = i
            )

if produceCaloMET:
    runType1CaloMEtUncertainties(
        process,
        caloTowerCollection = cms.InputTag(''),
        addToPatDefaultSequence = False,
        postfix = ""
        )
def addCorrectedPFMet(process, isMC, doApplyType0corr, doApplySysShiftCorr, runPeriod, doSmearJets, jecUncertaintyTag, doApplyUnclEnergyResidualCorr):

    process.load("PhysicsTools.PatUtils.patPFMETCorrections_cff")
    
    process.load("JetMETCorrections.METPUSubtraction.mvaPFMET_cff")
    if isMC:
        process.calibratedAK5PFJetsForPFMEtMVA.correctors = cms.vstring("ak5PFL1FastL2L3")
    else:
        process.calibratedAK5PFJetsForPFMEtMVA.correctors = cms.vstring("ak5PFL1FastL2L3Residual")
    process.pfMEtMVA.srcCorrJets = cms.InputTag('calibratedAK5PFJetsForPFMEtMVA')
    process.pfMEtMVA.srcLeptons = cms.VInputTag('goodMuons')
    process.pfMEtMVA.inputFileNames = cms.PSet(
        DPhi = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbrmetphi_53_June2013_type1.root'),
        CovU2 = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbru2cov_53_Dec2012.root'),
        U = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbrmet_53_June2013_type1.root'),
        CovU1 = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbru1cov_53_Dec2012.root')
    )
    process.pfMEtMVA.loadMVAfromDB = cms.bool(False)
    process.pfMEtMVA.verbosity = cms.int32(0)
    process.patPFMetMVA = process.patMETs.clone(
        metSource = cms.InputTag('pfMEtMVA'),
        addMuonCorrections = cms.bool(False),
        genMETSource = cms.InputTag('genMetTrue')
    )
    process.patMEtMVAsequence = cms.Sequence(process.pfMEtMVAsequence + process.patPFMetMVA)

    process.load("JetMETCorrections.METPUSubtraction.noPileUpPFMET_cff")
    process.load("JetMETCorrections.METPUSubtraction.noPileUpPFchsMET_cff")
    if isMC:
        process.calibratedAK5PFJetsForNoPileUpPFMEt.correctors = cms.vstring("ak5PFL1FastL2L3")
        process.calibratedAK5PFchsJetsForNoPileUpPFchsMEt.correctors = cms.vstring("ak5PFchsL1FastL2L3")
    else:
        process.calibratedAK5PFJetsForNoPileUpPFMEt.correctors = cms.vstring("ak5PFL1FastL2L3Residual")
        process.calibratedAK5PFchsJetsForNoPileUpPFchsMEt.correctors = cms.vstring("ak5PFchsL1FastL2L3Residual")

    process.noPileUpPFMEt.srcLeptons = cms.VInputTag('patMuons')
    process.noPileUpPFMEtData.verbosity = cms.int32(0)
    process.noPileUpPFMEt.verbosity = cms.int32(0)
    process.patPFMetNoPileUp = process.patMETs.clone(
        metSource = cms.InputTag('noPileUpPFMEt'),
        addMuonCorrections = cms.bool(False),
        genMETSource = cms.InputTag('genMetTrue')
    )
    process.noPileUpPFchsMEt.srcLeptons = cms.VInputTag('patMuons')
    process.noPileUpPFchsMEtData.verbosity = cms.int32(0)
    process.noPileUpPFchsMEt.verbosity = cms.int32(0)
    process.patPFchsMetNoPileUp = process.patMETs.clone(
        metSource = cms.InputTag('noPileUpPFchsMEt'),
        addMuonCorrections = cms.bool(False),
        genMETSource = cms.InputTag('genMetTrue')
    )
    process.patMEtNoPileUpSequence = cms.Sequence(process.noPileUpPFMEtSequence + process.patPFMetNoPileUp + process.noPileUpPFchsMEtSequence + process.patPFchsMetNoPileUp)
    ##process.patMEtNoPileUpSequence = cms.Sequence(process.noPileUpPFMEtSequence + process.patPFMetNoPileUp)
    
    process.makeCorrectedPatPFMETs = cms.Sequence()

    if isMC:
        import PhysicsTools.PatAlgos.tools.helpers as configtools
        process.type0PFMEtCorrection.remove(process.type0PFMEtCorrectionPFCandToVertexAssociation)
        process.makeCorrectedPatPFMETs += process.type0PFMEtCorrectionPFCandToVertexAssociation
        configtools.cloneProcessingSnippet(process, process.producePatPFMETCorrections, "NoSmearing")        
        process.selectedPatJetsForMETtype1p2CorrNoSmearing.src = cms.InputTag('patJetsNotOverlappingWithLeptonsForJetMEtUncertainty')
        process.selectedPatJetsForMETtype2CorrNoSmearing.src = process.selectedPatJetsForMETtype1p2CorrNoSmearing.src
        configtools.cloneProcessingSnippet(process, process.patMEtMVAsequence, "NoSmearing")
        process.makeCorrectedPatPFMETs += process.patMEtMVAsequenceNoSmearing
        ##process.patMEtNoPileUpSequence.remove(process.type0PFMEtCorrection)
        configtools.cloneProcessingSnippet(process, process.patMEtNoPileUpSequence, "NoSmearing")
        ##process.printEventContentForNoPileUpPFMEtNoSmearing = cms.EDAnalyzer("EventContentAnalyzer")
        ##process.patMEtNoPileUpSequenceNoSmearing.replace(process.noPileUpPFMEtDataNoSmearing, process.printEventContentForNoPileUpPFMEtNoSmearing + process.noPileUpPFMEtDataNoSmearing)
        process.makeCorrectedPatPFMETs += process.patMEtNoPileUpSequenceNoSmearing
    else:
        doSmearJets = False
        
    sysShiftCorrParameter = None
    if doApplySysShiftCorr:
        process.load("JetMETCorrections.Type1MET.pfMETsysShiftCorrections_cfi")
        if runPeriod == "2012RunABCD":
            if isMC:
                sysShiftCorrParameter = process.pfMEtSysShiftCorrParameters_2012runABCvsNvtx_mc
            else:
                sysShiftCorrParameter = process.pfMEtSysShiftCorrParameters_2012runABCvsNvtx_data
        else:
            raise ValueError("Invalid runPeriod = %s !!" % runPeriod)

    from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties
    runType1PFMEtUncertainties(
        process,
        electronCollection = '',
        photonCollection = '',
        muonCollection = cms.InputTag('patMuons'),
        tauCollection = '',
        jetCollection = cms.InputTag('patJets'),        
        doSmearJets = doSmearJets,
        jecUncertaintyTag = jecUncertaintyTag,
        makeType1corrPFMEt = True,
        makeType1p2corrPFMEt = True,
        doApplyType0corr = doApplyType0corr,
        sysShiftCorrParameter = sysShiftCorrParameter,
        doApplySysShiftCorr = doApplySysShiftCorr,
        doApplyUnclEnergyCalibration = (doApplyUnclEnergyResidualCorr & isMC),
        addToPatDefaultSequence = False
    )
    from PhysicsTools.PatUtils.tools.runMVAMEtUncertainties import runMVAMEtUncertainties
    runMVAMEtUncertainties(
        process,
        electronCollection = '',
        photonCollection = '',
        muonCollection = cms.InputTag('patMuons'),        
        tauCollection = '',        
        jetCollection = cms.InputTag('patJets'),   
        doSmearJets = doSmearJets,
        jecUncertaintyTag = jecUncertaintyTag,
        addToPatDefaultSequence = False
    )
    from PhysicsTools.PatUtils.tools.runNoPileUpMEtUncertainties import runNoPileUpMEtUncertainties
    runNoPileUpMEtUncertainties(
        process,
        electronCollection = '',
        photonCollection = '',
        muonCollection = cms.InputTag('patMuons'),
        tauCollection = '',
        jetCollection = cms.InputTag('patJets'),    
        doApplyChargedHadronSubtraction = False,
        doSmearJets = doSmearJets,
        jecUncertaintyTag = jecUncertaintyTag,
        doApplyUnclEnergyCalibration = (doApplyUnclEnergyResidualCorr & isMC),
        addToPatDefaultSequence = False
    )
    runNoPileUpMEtUncertainties(
        process,
        electronCollection = '',
        photonCollection = '',
        muonCollection = cms.InputTag('patMuons'),
        tauCollection = '',
        jetCollection = cms.InputTag('patJetsAK5PFchs'),    
        doApplyChargedHadronSubtraction = True,
        doSmearJets = doSmearJets,
        jecUncertaintyFile = "PhysicsTools/PatUtils/data/Summer13_V1_DATA_UncertaintySources_AK5PFchs.txt",
        jecUncertaintyTag = jecUncertaintyTag,
        addToPatDefaultSequence = False
    )

    if isMC:
        process.makeCorrectedPatPFMETs += process.pfType1MEtUncertaintySequence
        process.makeCorrectedPatPFMETs += process.pfNoPileUpMEtUncertaintySequence
        process.makeCorrectedPatPFMETs += process.pfchsNoPileUpMEtUncertaintySequence
        process.makeCorrectedPatPFMETs += process.pfMVAMEtUncertaintySequence
        process.patPFMet.addGenMET = cms.bool(True)
        process.patPFMetMVA.addGenMET = cms.bool(True)
        process.patPFJetMETtype1p2Corr.jetCorrLabel = cms.string("L3Absolute")
        process.patPFJetMETtype1p2CorrNoSmearing.jetCorrLabel = cms.string("L3Absolute")
    else:
        process.patPFMet.addGenMET = cms.bool(False)
        process.patPFMetMVA.addGenMET = cms.bool(False)
        process.patPFJetMETtype1p2Corr.jetCorrLabel = cms.string("L2L3Residual")
    
        process.makeCorrectedPatPFMETs += process.patJetsNotOverlappingWithLeptonsForJetMEtUncertainty
        if hasattr(process, "pfMEtSysShiftCorrSequence"):
            process.makeCorrectedPatPFMETs += process.pfMEtSysShiftCorrSequence
        process.makeCorrectedPatPFMETs += process.producePatPFMETCorrections
        process.makeCorrectedPatPFMETs += process.patMEtMVAsequence
        process.makeCorrectedPatPFMETs += process.patMEtNoPileUpSequence        

    # add MVA MEt with unity response training
    for moduleName in dir(process):
        if (moduleName.endswith("Up") or moduleName.endswith("Down")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module, cms.EDProducer) and module.type_() == "PFMETProducerMVA":
            module_unity = module.clone(
                inputFileNames = cms.PSet(
                    DPhi = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbrmetphi_53_June2013_type1.root'), # CV: same for unity and non-unity response training
                    CovU2 = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbru2cov_53_Dec2012.root'),
                    U = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbrmet_53_June2013_type1_UnityResponse.root'),
                    CovU1 = cms.FileInPath('JetMETCorrections/METPUSubtraction/data/gbru1cov_53_Dec2012.root')
                ),
                loadMVAfromDB = cms.bool(False)
            )
            moduleName_unity = moduleName.replace("pfMEtMVA", "pfMEtMVAunityResponse")
            setattr(process, moduleName_unity, module_unity)
            process.makeCorrectedPatPFMETs += module_unity    
    for moduleName in dir(process):
        if (moduleName.endswith("Up") or moduleName.endswith("Down")) and not isMC:
            continue
        module = getattr(process, moduleName)
        if isinstance(module, cms.EDProducer) and module.type_() == "PATMETProducer" and moduleName.find("patPFMetMVA") != -1:
            module_unity = module.clone(
                metSource = cms.InputTag(module.metSource.value().replace("pfMEtMVA", "pfMEtMVAunityResponse"))
            )
            moduleName_unity = moduleName.replace("patPFMetMVA", "patPFMetMVAunityResponse")
            setattr(process, moduleName_unity, module_unity)
            process.makeCorrectedPatPFMETs += module_unity

    return process.makeCorrectedPatPFMETs
Пример #4
0
  photonCollection = '',
  muonCollection = cms.InputTag('selectedPatMuons'),
  tauCollection = '',
  jetCollection = cms.InputTag('patJets'),
  doSmearJets =isMC,
  addToPatDefaultSequence = False,
  postfix = ''
  )

runNoPileUpMEtUncertainties(
  process,
  electronCollection = '',
  photonCollection = '',
  muonCollection = cms.InputTag('selectedPatMuons'),
  tauCollection = '',
  jetCollection = cms.InputTag('patJets'),
  addToPatDefaultSequence = False,
  doApplyChargedHadronSubtraction = False,
  doApplyUnclEnergyCalibration = (doApplyUnclEnergyResidualCorr and not isData),
  sfNoPUjetOffsetEnCorr = sfNoPUjetOffsetEnCorr,
  doSmearJets =isMC,
  postfix = ''
  )


runMVAMEtUncertainties(
  process,
  electronCollection = cms.InputTag(''),
  photonCollection = '',
  muonCollection = cms.InputTag('selectedPatMuons'),
  tauCollection = '',
  jetCollection = cms.InputTag('patJets'),