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
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)
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)
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
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")
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")
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
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
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)
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")'), )
#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
) 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'),
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