Пример #1
0
def define_photons(process):
    """Define reconstructed photons.
    
    Configure reconstructed photons to be used in an analysis.
    
    Arguments:
        process: The process to which relevant photon producers are
            added.
    
    Return value:
        Return a tuple with the following elements:
        phoQualityCuts: List of string-based quality selections whose
            decisions are to be saved.
        phoCutBasedIDMaps: Tags to access maps with boolean photon IDs
            whose decisions are to be saved.
    
    In addition to constructing the return values, add producers that
    create the following collections of photons:
        analysisPatPhotons: Collection of loosely identified
            non-isolated photons to be saved.
    """
    
    # Collection of photons satisfying a basic kinematic selection
    process.analysisPatPhotons = cms.EDFilter('PATPhotonSelector',
        src = cms.InputTag('slimmedPhotons'),
        cut = cms.string('pt > 20. & abs(eta) < 2.5')
    )
    
    
    # Decisions of cut-based identification algorithm [1]
    # [1] https://twiki.cern.ch/twiki/bin/viewauth/CMS/CutBasedPhotonIdentificationRun2?rev=28
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import (
        switchOnVIDPhotonIdProducer, setupAllVIDIdsInModule, setupVIDPhotonSelection,
        DataFormat
    )
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
    
    for idModule in ['cutBasedPhotonID_Spring15_25ns_V1_cff']:
        setupAllVIDIdsInModule(
            process,
            'RecoEgamma.PhotonIdentification.Identification.' +
            idModule, setupVIDPhotonSelection
        )
    
    process.photonIDValueMapProducer.srcMiniAOD = 'analysisPatPhotons'
    process.egmPhotonIDs.physicsObjectSrc = 'analysisPatPhotons'
    
    
    # Labels of maps with photon ID
    phoCutBasedIDMaps = ['egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-' + p
        for p in ['loose', 'medium', 'tight']]
    
    
    # Additional selections to be evaluated
    phoQualityCuts = cms.vstring(
        # EE-EB gap
        '(abs(superCluster.eta) < 1.4442 | abs(superCluster.eta) > 1.5660)'
    )
    
    return phoQualityCuts, phoCutBasedIDMaps
Пример #2
0
 def customizeSummer16EGMPhoID(self,process):
     from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,setupVIDPhotonSelection
     dataFormat = DataFormat.MiniAOD
     switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
     my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff']
     for idmod in my_id_modules:
         setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)
Пример #3
0
 def customizeSummer16EGMPhoID(self,process):
     from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,setupVIDPhotonSelection
     dataFormat = DataFormat.MiniAOD
     switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
     my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff']
     for idmod in my_id_modules:
         setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)
Пример #4
0
def enablePhotonVID(process):
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDPhotonIdProducer, DataFormat, setupAllVIDIdsInModule, setupVIDPhotonSelection
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)

    #Use IDs from https://github.com/cms-sw/cmssw/blob/CMSSW_7_4_X/RecoEgamma/PhotonIdentification/python/Identification/
    photon_ids = [
        'mvaPhotonID_Fall17_94X_V2_cff',
    ]
    for idmod in photon_ids:
        idmod = 'RecoEgamma.PhotonIdentification.Identification.' + idmod
        setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection)

    photon_idNames = [
        "egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp80",
        "egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp90",
    ]
    process.catPhotons.photonIDSources = cms.PSet()
    for idName in photon_idNames:
        setattr(process.catPhotons.photonIDSources,
                idName.split(':', 1)[1].replace('-', '_'),
                cms.InputTag(idName))
        process.catPhotons.photonIDs.append(idName.split(':', 1)[1])

    process.egmPhotonIDs.physicsObjectSrc = process.catPhotons.unsmearedPhotons
    process.photonMVAValueMapProducer.srcMiniAOD = process.catPhotons.unsmearedPhotons
    process.photonIDValueMapProducer.srcMiniAOD = process.catPhotons.unsmearedPhotons

    return process
Пример #5
0
 def customizeFall17EGMPhoID(self,process):
     from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,setupVIDPhotonSelection
     dataFormat = DataFormat.MiniAOD
     switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
     my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1_cff']
     for idmod in my_id_modules:
         setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)
     process.flashggPhotons.effAreasConfigFile = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_TrueVtx.txt")
     process.flashggPhotons.egmMvaValuesMap = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v1Values")
def includeRunIIEGMPhoID(process):
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,setupVIDPhotonSelection
    dataFormat = DataFormat.MiniAOD
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
    my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff']
    for idmod in my_id_modules:
        setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)
    process.flashggPhotons.effAreasConfigFile = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_TrueVtx.txt")
    process.flashggPhotons.egmMvaValuesMap = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values")
Пример #7
0
def photonIdForPuppi(process):
    # copied from PhotonPupppi_cff to run on AOD
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDPhotonIdProducer, DataFormat, setupVIDPhotonSelection
    from RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring15_25ns_V1_cff import cutBasedPhotonID_Spring15_25ns_V1_standalone_loose

    switchOnVIDPhotonIdProducer(process, DataFormat.AOD)
    setupVIDPhotonSelection(process, cutBasedPhotonID_Spring15_25ns_V1_standalone_loose, patProducer = None, addUserData = False)

    return process.egmPhotonIDSequence
def includeSummer16EGMPhoID(process):
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,setupVIDPhotonSelection
    dataFormat = DataFormat.MiniAOD
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
    my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff']
    for idmod in my_id_modules:
        setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)
    process.flashggPhotons.is2017 = cms.bool(False)
    process.flashggPhotons.effAreasConfigFile = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Spring16/effAreaPhotons_cone03_pfPhotons_90percentBased.txt")
    process.flashggPhotons.egmMvaValuesMap = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values")
Пример #9
0
def photonIdForPuppi(process):
    # copied from PhotonPupppi_cff to run on AOD
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDPhotonIdProducer, DataFormat, setupVIDPhotonSelection
    from RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring15_25ns_V1_cff import cutBasedPhotonID_Spring15_25ns_V1_standalone_loose

    switchOnVIDPhotonIdProducer(process, DataFormat.AOD)
    setupVIDPhotonSelection(process,
                            cutBasedPhotonID_Spring15_25ns_V1_standalone_loose,
                            patProducer=None,
                            addUserData=False)

    return process.egmPhotonIDSequence
def setupEgammaPostRecoSeq(process,
                           applyEnergyCorrections=False,
                           applyVIDOnCorrectedEgamma=False,
                           isMiniAOD=True,
                           era="2017-Nov17ReReco",
                           eleIDModules=_defaultEleIDModules,
                           phoIDModules=_defaultPhoIDModules,
                           runVID=True,
                           applyEPCombBug=False):

    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDElectronIdProducer, switchOnVIDPhotonIdProducer, setupAllVIDIdsInModule, DataFormat, setupVIDElectronSelection, setupVIDPhotonSelection
    # turn on VID producer, indicate data format  to be
    # DataFormat.AOD or DataFormat.MiniAOD, as appropriate
    if runVID:
        if isMiniAOD:
            switchOnVIDElectronIdProducer(process, DataFormat.MiniAOD)
            switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
        else:
            switchOnVIDElectronIdProducer(process, DataFormat.AOD)
            switchOnVIDPhotonIdProducer(process, DataFormat.AOD)

        for idmod in eleIDModules:
            setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection)
        for idmod in phoIDModules:
            setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection)

    if isMiniAOD:
        _setupEgammaPostRECOSequenceMiniAOD(
            process,
            applyEnergyCorrections=applyEnergyCorrections,
            applyVIDOnCorrectedEgamma=applyVIDOnCorrectedEgamma,
            era=era,
            runVID=runVID,
            applyEPCombBug=applyEPCombBug)
    else:
        _setupEgammaPostRECOSequence(
            process,
            applyEnergyCorrections=applyEnergyCorrections,
            applyVIDOnCorrectedEgamma=applyVIDOnCorrectedEgamma,
            era=era,
            runVID=runVID,
            applyEPCombBug=applyEPCombBug)

    process.egammaScaleSmearSeq = cms.Sequence(process.egammaScaleSmearTask)
    process.egammaPostRecoSeq = cms.Sequence(process.egammaScaleSmearSeq)
    if runVID:
        process.egammaPostRecoSeq = cms.Sequence(
            process.egammaScaleSmearSeq * process.egmGsfElectronIDSequence *
            process.egmPhotonIDSequence)

    return process
def setupEgammaPostRecoSeq(process,
                           applyEnergyCorrections=False,
                           applyVIDOnCorrectedEgamma=False,
                           isMiniAOD=True,
                           era="2017-Nov17ReReco",
                           eleIDModules=_defaultEleIDModules,
                           phoIDModules=_defaultPhoIDModules,
                           runVID=True,
                           runEnergyCorrections=True,
                           applyEPCombBug=False,
                           autoAdjustParams=True,
                           computeHeepTrkPtIso=True):
    """
    Note: computeHeepTrkPtIso can't be set to false if you want to run a HEEP ID.
    """
    #first check if we are running in a valid release, will throw if not
    _validRelease()

    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDElectronIdProducer, switchOnVIDPhotonIdProducer, setupAllVIDIdsInModule, DataFormat, setupVIDElectronSelection, setupVIDPhotonSelection
    # turn on VID producer, indicate data format  to be
    # DataFormat.AOD or DataFormat.MiniAOD, as appropriate
    if runVID:
        if isMiniAOD:
            switchOnVIDElectronIdProducer(process, DataFormat.MiniAOD)
            switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
        else:
            switchOnVIDElectronIdProducer(process, DataFormat.AOD)
            switchOnVIDPhotonIdProducer(process, DataFormat.AOD)

        for idmod in eleIDModules:
            setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection)
        for idmod in phoIDModules:
            setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection)

    if autoAdjustParams:
        if ((era == "2016-UL") and runEnergyCorrections):
            print "EgammaPostRecoTools:INFO auto adjusting runEnergyCorrections to False as they are not yet availible for 2016-UL, set autoAdjustParams = False to force them to run"
            runEnergyCorrections = False

    _setupEgammaPostRecoSeq(
        process,
        applyEnergyCorrections=applyEnergyCorrections,
        applyVIDOnCorrectedEgamma=applyVIDOnCorrectedEgamma,
        era=era,
        runVID=runVID,
        runEnergyCorrections=runEnergyCorrections,
        applyEPCombBug=applyEPCombBug,
        isMiniAOD=isMiniAOD,
        computeHeepTrkPtIso=computeHeepTrkPtIso)

    return process
Пример #12
0
def setupEgammaPostRecoSeq(process,
                           applyEnergyCorrections=False,
                           applyVIDOnCorrectedEgamma=False,
                           isMiniAOD=True,
                           era="2017-Nov17ReReco",
                           eleIDModules=_defaultEleIDModules,
                           phoIDModules=_defaultPhoIDModules,
                           runVID=True,
                           runEnergyCorrections=True,
                           applyEPCombBug=False,
                           autoAdjustParams=True):

    from PhysicsTools.SelectorUtils.tools.vid_id_tools import switchOnVIDElectronIdProducer,switchOnVIDPhotonIdProducer,setupAllVIDIdsInModule,DataFormat,setupVIDElectronSelection,setupVIDPhotonSelection
    # turn on VID producer, indicate data format  to be
    # DataFormat.AOD or DataFormat.MiniAOD, as appropriate
    if runVID:
        if isMiniAOD:
            switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD)
            switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD)
        else:
            switchOnVIDElectronIdProducer(process,DataFormat.AOD)
            switchOnVIDPhotonIdProducer(process,DataFormat.AOD)


        for idmod in eleIDModules:
            setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection)
        for idmod in phoIDModules:
            setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection)

    if autoAdjustParams:
        pass #no auto adjustment needed

    if isMiniAOD:
        _setupEgammaPostRECOSequenceMiniAOD(process,applyEnergyCorrections=applyEnergyCorrections,applyVIDOnCorrectedEgamma=applyVIDOnCorrectedEgamma,era=era,runVID=runVID,runEnergyCorrections=runEnergyCorrections,applyEPCombBug=applyEPCombBug)
    else:
        _setupEgammaPostRECOSequence(process,applyEnergyCorrections=applyEnergyCorrections,applyVIDOnCorrectedEgamma=applyVIDOnCorrectedEgamma,era=era,runVID=runVID,runEnergyCorrections=runEnergyCorrections,applyEPCombBug=applyEPCombBug)
    
    process.egammaScaleSmearSeq = cms.Sequence(process.egammaScaleSmearTask)
    #post reco seq is calibrations -> vid -> pat updator 
    process.egammaPostRecoSeq   = cms.Sequence(process.egammaScaleSmearSeq)
    if not runEnergyCorrections and runVID:
        process.egammaPostRecoSeq = cms.Sequence(process.egmGsfElectronIDSequence*process.egmPhotonIDSequence)
    elif runVID:
        process.egammaPostRecoSeq.insert(-1,process.egmGsfElectronIDSequence)
        process.egammaPostRecoSeq.insert(-1,process.egmPhotonIDSequence)
    if isMiniAOD:
        process.egammaPostRecoPatUpdatorSeq = cms.Sequence(process.egammaPostRecoPatUpdatorTask)
        process.egammaPostRecoSeq.insert(-1,process.egammaPostRecoPatUpdatorSeq)     
                       
    return process
Пример #13
0
def setupVID(process):

    #define the default IDs to produce in VID
    from EgammaUser.EgammaPostRecoTools.EgammaPostRecoTools import _defaultEleIDModules, _defaultPhoIDModules

    #as we're not running, it doesnt matter if its miniAOD or AOD
    switchOnVIDElectronIdProducer(process, DataFormat.MiniAOD)
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)

    eleIDModules = _defaultEleIDModules
    phoIDModules = _defaultPhoIDModules

    for idmod in eleIDModules:
        setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection)
    for idmod in phoIDModules:
        setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection)
Пример #14
0
def photonPrep(process, isMC, useCalibration):
    photonInput = cms.InputTag("slimmedPhotons::ANA")
    if useCalibration:
        if not hasattr(process, "RandomNumberGeneratorService"):
            process.load('Configuration.StandardSequences.Services_cff')
            process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService")

        process.RandomNumberGeneratorService.calibratedPatPhotons = cms.PSet(
            initialSeed = cms.untracked.uint32(81),
            engineName = cms.untracked.string('TRandom3'),
        )
        process.load('EgammaAnalysis.ElectronTools.calibratedPhotonsRun2_cfi')
        process.calibratedPatPhotons.isMC = cms.bool(isMC)
        photonInput = cms.InputTag('calibratedPatPhotons')

    import PhysicsTools.SelectorUtils.tools.vid_id_tools as vid_tools
    vid_tools.switchOnVIDPhotonIdProducer(process, vid_tools.DataFormat.MiniAOD)

    my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff']
    for idmod in my_id_modules:
        vid_tools.setupAllVIDIdsInModule(process, idmod, vid_tools.setupVIDPhotonSelection)

    process.egmPhotonIDs.physicsObjectSrc = photonInput
    process.photonMVAValueMapProducer.srcMiniAOD = photonInput
    process.photonIDValueMapProducer.srcMiniAOD = photonInput
    process.photonRegressionValueMapProducer.srcMiniAOD = photonInput

    process.preppedPhotons = cms.EDProducer("PhotonPrep",
        photonSrc = photonInput,
        uncalibratedSrc = cms.InputTag("slimmedPhotons::ANA"),
        looseId = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose"),
        mediumId = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium"),
        tightId = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight"),
        triggerObjects = cms.InputTag("selectedPatTrigger"),
        triggerPrescales = cms.InputTag("patTrigger"),
        triggerPathsForMinPrescale = cms.vstring(
            # Don't forget to add to process.triggerFilter in test/eventTuples.py
            # No stars here
            "HLT_Photon50_R9Id90_HE10_IsoM_v",
            "HLT_Photon75_R9Id90_HE10_IsoM_v",
            "HLT_Photon90_R9Id90_HE10_IsoM_v",
            "HLT_Photon120_R9Id90_HE10_IsoM_v",
            "HLT_Photon165_HE10_v",
        ),
        kinematicCutAnyVariation = cms.string('pt > 50 && abs(eta) < 1.4442'),
        finalCut = cms.string('userInt("LooseId")'),
    )
Пример #15
0
#process.flashggPhotonJet.singlelegsigma1Tib      = cms.double( 1.37155    )
#process.flashggPhotonJet.singlelegsigma1Tob      = cms.double( 2.7242     )
#process.flashggPhotonJet.singlelegsigma1PixFwd   = cms.double( 0.0596455  )
#process.flashggPhotonJet.singlelegsigma1Tid      = cms.double( 0.479279   )
#process.flashggPhotonJet.singlelegsigma1Tec      = cms.double( 2.02211    )
#process.flashggPhotonJet.singlelegsigma2Pix      = cms.double( 0.0224474  )
#process.flashggPhotonJet.singlelegsigma2Tib      = cms.double( 0.594662   )
#process.flashggPhotonJet.singlelegsigma2Tob      = cms.double( 0.433137   )
#process.flashggPhotonJet.singlelegsigma2PixFwd   = cms.double( 0.137922   )
#process.flashggPhotonJet.singlelegsigma2Tid      = cms.double( 0.421378   )
#process.flashggPhotonJet.singlelegsigma2Tec      = cms.double( 0.977421   )

from PhysicsTools.SelectorUtils.tools.vid_id_tools import DataFormat, switchOnVIDPhotonIdProducer, setupAllVIDIdsInModule, setupVIDPhotonSelection

dataFormat = DataFormat.MiniAOD
switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
my_id_modules = [
    'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff'
]
#my_id_modules = ['RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1_cff']
for idmod in my_id_modules:
    setupAllVIDIdsInModule(process, idmod, setupVIDPhotonSelection)
#process.flashggPhotons.effAreasConfigFile = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_TrueVtx.txt")
#process.flashggPhotons.egmMvaValuesMap = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v1Values")

process.RandomNumberGeneratorService = cms.Service(
    "RandomNumberGeneratorService")
process.RandomNumberGeneratorService.flashggRandomizedPhotons = cms.PSet(
    initialSeed=cms.untracked.uint32(16253245))

process.stdPhotonJetSeq *= process.egmPhotonIDSequence
Пример #16
0
)

process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff')
process.GlobalTag.globaltag = '80X_dataRun2_Prompt_v11'

process.load("Configuration.Geometry.GeometryIdeal_cff")
process.load('Configuration.StandardSequences.Services_cff')
process.load("Configuration.StandardSequences.MagneticField_cff")

#process.out = cms.OutputModule('PoolOutputModule',
#    fileName = cms.untracked.string('test.root')
#)

from PhysicsTools.SelectorUtils.tools.vid_id_tools import setupAllVIDIdsInModule, setupVIDElectronSelection, setupVIDPhotonSelection, switchOnVIDPhotonIdProducer, switchOnVIDElectronIdProducer, DataFormat

switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
switchOnVIDElectronIdProducer(process, DataFormat.MiniAOD)
setupAllVIDIdsInModule(process, 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring15_25ns_V1_cff', setupVIDPhotonSelection)
setupAllVIDIdsInModule(process, 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', setupVIDElectronSelection)

photonId = 'egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-'
photonEA = 'RecoEgamma/PhotonIdentification/data/Spring15/effAreaPhotons_cone03_'
electronId = 'egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-'
electronEA = 'RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_'

process.ntuples = cms.EDAnalyzer('SimpleTreeProducer',
    fillers = cms.untracked.vstring('Electrons', 'HLT', 'Jets', 'MetFilters', 'Muons', 'Photons', 'Rho', 'SuperClusters', 'T1Met', 'Taus', 'Vertices'),
    useTrigger = cms.untracked.bool(True),
    photons = cms.untracked.string('slimmedPhotons'),
    electrons = cms.untracked.string('slimmedElectrons'),
    muons = cms.untracked.string('slimmedMuons'),
Пример #17
0
def define_photons(process):
    """Define reconstructed photons.
    
    Configure reconstructed photons to be used in an analysis.
    
    Arguments:
        process: The process to which relevant photon producers are
            added.
    
    Return value:
        Return a tuple with the following elements:
        phoQualityCuts: List of string-based quality selections whose
            decisions are to be saved.
        phoCutBasedIDMaps: Tags to access maps with boolean photon IDs
            whose decisions are to be saved.
    
    In addition to constructing the return values, add producers that
    create the following collections of photons:
        analysisPatPhotons: Collection of loosely identified
            non-isolated photons to be saved.
    """
    
    # Collection of photons satisfying a basic kinematic selection
    process.analysisPatPhotons = cms.EDFilter('PATPhotonSelector',
        src = cms.InputTag('slimmedPhotons'),
        cut = cms.string('pt > 20. & abs(eta) < 2.5')
    )
    
    
    # Decisions of cut-based identification algorithm [1]
    # [1] https://twiki.cern.ch/twiki/bin/viewauth/CMS/CutBasedPhotonIdentificationRun2?rev=28
    from PhysicsTools.SelectorUtils.tools.vid_id_tools import (switchOnVIDPhotonIdProducer,
        setupAllVIDIdsInModule, setupVIDPhotonSelection, DataFormat)
    switchOnVIDPhotonIdProducer(process, DataFormat.MiniAOD)
    
    for idModule in ['cutBasedPhotonID_Spring15_25ns_V1_cff']:
        setupAllVIDIdsInModule(
            process,
            'RecoEgamma.PhotonIdentification.Identification.' +
            idModule, setupVIDPhotonSelection
        )
    
    process.photonIDValueMapProducer.srcMiniAOD = 'analysisPatPhotons'
    process.egmPhotonIDs.physicsObjectSrc = 'analysisPatPhotons'
    
    
    # Labels of maps with photon ID
    phoCutBasedIDMaps = ['egmPhotonIDs:cutBasedPhotonID-Spring15-25ns-V1-standalone-' + p
        for p in ['loose', 'medium', 'tight']]
    
    
    # Information about geometry is needed to evaluate the ID
    process.load('Configuration.StandardSequences.GeometryRecoDB_cff')
    
    
    # Additional selections to be evaluated
    phoQualityCuts = cms.vstring(
        # EE-EB gap
        '(abs(superCluster.eta) < 1.4442 | abs(superCluster.eta) > 1.5660)'
    )
    
    return phoQualityCuts, phoCutBasedIDMaps