def applyElectronSmearing(self, tag): """ Apply electron smearing from https://twiki.cern.ch/twiki/bin/view/CMS/EGMSmearer Parameters: tag: correction file to use (from EgammaAnalysis.ElectronTools.calibrationTablesRun2.files) """ if self.verbose: print("") print("Applying electron smearing...") from EgammaAnalysis.ElectronTools.calibratedPatElectronsRun2_cfi import calibratedPatElectrons from EgammaAnalysis.ElectronTools.calibrationTablesRun2 import files # FIXME: Add a preselection on electron to prevent a crash in the producer # Remove when it's no longer needed (see twiki) self.process.selectedElectrons = cms.EDFilter( "PATElectronSelector", src=cms.InputTag(self.__miniaod_electron_collection), cut=cms.string("pt > 5 && abs(superCluster.eta) < 2.5")) self.process.slimmedElectronsSmeared = calibratedPatElectrons.clone( electrons="selectedElectrons", isMC=not self.isData, correctionFile=files[tag]) self.process.load('Configuration.StandardSequences.Services_cff') self.process.RandomNumberGeneratorService = cms.Service( "RandomNumberGeneratorService", slimmedElectronsSmeared=cms.PSet( initialSeed=cms.untracked.uint32(42), engineName=cms.untracked.string('TRandom3'))) self.path.associate( cms.Task(self.process.selectedElectrons, self.process.slimmedElectronsSmeared, self.process.RandomNumberGeneratorService)) # Look for producers using the default electron input for producer in self.producers: p = getattr(self.process.framework.producers, producer) change_input_tags_and_strings(p, self.__miniaod_electron_collection, 'slimmedElectronsSmeared', 'producers.' + producer, ' ') self.__miniaod_electron_collection = 'slimmedElectronsSmeared' if self.verbose: print("New electrons collection: %r" % (self.__miniaod_electron_collection))
### EGAMMA CORRECTIONS # https://twiki.cern.ch/twiki/bin/view/CMS/EGMSmearer process.selectedElectrons = cms.EDFilter( 'PATElectronSelector', src=cms.InputTag('slimmedElectrons'), cut=cms.string('pt > 5 && abs(eta) < 2.5')) from EgammaAnalysis.ElectronTools.calibratedPatElectronsRun2_cfi import calibratedPatElectrons from EgammaAnalysis.ElectronTools.calibratedPatPhotonsRun2_cfi import calibratedPatPhotons import EgammaAnalysis.ElectronTools.calibrationTablesRun2 egmSmearingSource = EgammaAnalysis.ElectronTools.calibrationTablesRun2.files egmSmearingType = 'Run2017_17Nov2017_v1' process.smearedElectrons = calibratedPatElectrons.clone( electrons='selectedElectrons', isMC=(not options.isData), correctionFile=egmSmearingSource[egmSmearingType]) process.smearedPhotons = calibratedPatPhotons.clone( photons='slimmedPhotons', isMC=(not options.isData), correctionFile=egmSmearingSource[egmSmearingType]) egmCorrectionSequence = cms.Sequence(process.selectedElectrons + process.smearedElectrons + process.smearedPhotons) ### Vanilla MET # this is the most basic MET one can find # even if we override with various types of MET later on, create this so we have a consistent calo MET # https://twiki.cern.ch/twiki/bin/view/CMS/MissingETUncertaintyPrescription